summaryrefslogtreecommitdiff
path: root/rts/LinkerInternals.h
diff options
context:
space:
mode:
authorpho@cielonegro.org <unknown>2010-09-27 22:41:45 +0000
committerpho@cielonegro.org <unknown>2010-09-27 22:41:45 +0000
commit57fcae702f10232bf9d09322caa845417034cc45 (patch)
treeb611dfc0d9e2e2eaf7496dccf14ebb2207f375fa /rts/LinkerInternals.h
parentbf60bbfb2e76a88265c60a1e9b4f7c2dd1bbfa11 (diff)
downloadhaskell-57fcae702f10232bf9d09322caa845417034cc45.tar.gz
New member "archiveMemberName" for struct _ObjectCode
struct _ObjectCode should be able to retain the name of archive members. Though currently the only use of those names are for debugging outputs.
Diffstat (limited to 'rts/LinkerInternals.h')
-rw-r--r--rts/LinkerInternals.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/rts/LinkerInternals.h b/rts/LinkerInternals.h
index 8e151ec782..d545c12ed9 100644
--- a/rts/LinkerInternals.h
+++ b/rts/LinkerInternals.h
@@ -65,6 +65,11 @@ typedef struct _ObjectCode {
int fileSize;
char* formatName; /* eg "ELF32", "DLL", "COFF", etc. */
+ /* If this object is a member of an archive, archiveMemberName is
+ * like "libarchive.a(object.o)". Otherwise it's NULL.
+ */
+ char* archiveMemberName;
+
/* An array containing ptrs to all the symbol names copied from
this object into the global symbol hash table. This is so that
we know which parts of the latter mapping to nuke when this
@@ -107,6 +112,12 @@ typedef struct _ObjectCode {
} ObjectCode;
+#define OC_INFORMATIVE_FILENAME(OC) \
+ ( (OC)->archiveMemberName ? \
+ (OC)->archiveMemberName : \
+ (OC)->fileName \
+ )
+
extern ObjectCode *objects;
void exitLinker( void );