Remove unused oc->isImportLib (#12230)
authorSimon Marlow <marlowsd@gmail.com>
Wed, 29 Jun 2016 20:48:43 +0000 (21:48 +0100)
committerSimon Marlow <marlowsd@gmail.com>
Fri, 1 Jul 2016 12:20:04 +0000 (13:20 +0100)
Summary:
This field is never set, but it was being tested and used to decide
whether to resolve an object or not.  This caused non-deterministic
crashes when using the RTS linker (see #12230).

I suspect this is not the correct fix, but putting it up so that Phyx
can tell us what the right fix should be.

Test Plan: validate

Reviewers: austin, Phyx, bgamari, erikd

Subscribers: erikd, thomie, ezyang

Differential Revision: https://phabricator.haskell.org/D2371

GHC Trac Issues: #12230

rts/Linker.c
rts/LinkerInternals.h

index f7ac748..b41bc1a 100644 (file)
@@ -1703,9 +1703,7 @@ void freeObjectCode (ObjectCode *oc)
 * Sets the initial status of a fresh ObjectCode
 */
 static void setOcInitialStatus(ObjectCode* oc) {
-    if (oc->isImportLib == HS_BOOL_TRUE) {
-        oc->status = OBJECT_DONT_RESOLVE;
-    } else if (oc->archiveMemberName == NULL) {
+    if (oc->archiveMemberName == NULL) {
         oc->status = OBJECT_NEEDED;
     } else {
         oc->status = OBJECT_LOADED;
index 5686863..729cf1d 100644 (file)
@@ -160,11 +160,6 @@ typedef struct _ObjectCode {
 
     ForeignExportStablePtr *stable_ptrs;
 
-    /* Indicates whether if the .o file comes from
-       an import library. In which case we shouldn't
-       execute code from it. */
-    HsBool isImportLib;
-
     /* Holds the list of symbols in the .o file which
        require extra information.*/
     HashTable *extraInfos;