diff options
author | Tamar Christina <tamar@zhox.com> | 2020-06-17 11:00:49 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-06-18 23:07:03 -0400 |
commit | da18ff9935e72c7fe6127cb5d5d0c53654a204b0 (patch) | |
tree | 5f6e9e49a5df9783c4c6c30aaa4372387325bfef /rts/Linker.c | |
parent | 08c1cb0f30770acbf366423f085f8ef92f7f6a06 (diff) | |
download | haskell-da18ff9935e72c7fe6127cb5d5d0c53654a204b0.tar.gz |
fix windows bootstrap due to linker changes
Diffstat (limited to 'rts/Linker.c')
-rw-r--r-- | rts/Linker.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/rts/Linker.c b/rts/Linker.c index fc5d1cb462..3e8847d8fc 100644 --- a/rts/Linker.c +++ b/rts/Linker.c @@ -339,7 +339,6 @@ int ghciInsertSymbolTable( return 1; } - pathchar* archiveName = NULL; debugBelch( "GHC runtime linker: fatal error: I found a duplicate definition for symbol\n" " %s\n" @@ -355,15 +354,10 @@ int ghciInsertSymbolTable( (char*)key, obj_name, pinfo->owner == NULL ? WSTR("(GHCi built-in symbols)") : - pinfo->owner->archiveMemberName ? archiveName = mkPath(pinfo->owner->archiveMemberName) + pinfo->owner->archiveMemberName ? pinfo->owner->archiveMemberName : pinfo->owner->fileName ); - if (archiveName) - { - stgFree(archiveName); - archiveName = NULL; - } return 0; } @@ -873,9 +867,9 @@ SymbolAddr* lookupSymbol_ (SymbolName* lbl) * Symbol name only used for diagnostics output. */ SymbolAddr* loadSymbol(SymbolName *lbl, RtsSymbolInfo *pinfo) { - IF_DEBUG(linker, debugBelch("lookupSymbol: value of %s is %p, owned by %s\n", lbl, + IF_DEBUG(linker, debugBelch("lookupSymbol: value of %s is %p, owned by %" PATH_FMT "\n", lbl, pinfo->value, - pinfo->owner ? OC_INFORMATIVE_FILENAME(pinfo->owner) : "No owner, probably built-in.")); + pinfo->owner ? OC_INFORMATIVE_FILENAME(pinfo->owner) : WSTR("No owner, probably built-in."))); ObjectCode* oc = pinfo->owner; /* Symbol can be found during linking, but hasn't been relocated. Do so now. @@ -905,7 +899,7 @@ printLoadedObjects() { for (oc = objects; oc; oc = oc->next) { if (oc->sections != NULL) { int i; - printf("%s\n", OC_INFORMATIVE_FILENAME(oc)); + printf("%" PATH_FMT "\n", OC_INFORMATIVE_FILENAME(oc)); for (i=0; i < oc->n_sections; i++) { if(oc->sections[i].mapped_start != NULL || oc->sections[i].start != NULL) { printf("\tsec %2d[alloc: %d; kind: %d]: %p - %p; mmaped: %p - %p\n", @@ -1299,7 +1293,7 @@ void freeObjectCode (ObjectCode *oc) ObjectCode* mkOc( pathchar *path, char *image, int imageSize, - bool mapped, char *archiveMemberName, int misalignment ) { + bool mapped, pathchar *archiveMemberName, int misalignment ) { ObjectCode* oc; IF_DEBUG(linker, debugBelch("mkOc: start\n")); @@ -1322,9 +1316,9 @@ mkOc( pathchar *path, char *image, int imageSize, oc->fileName = pathdup(path); if (archiveMemberName) { - oc->archiveMemberName = stgMallocBytes( strlen(archiveMemberName)+1, + oc->archiveMemberName = stgMallocBytes( (pathlen(archiveMemberName)+1) * pathsize, "loadObj" ); - strcpy(oc->archiveMemberName, archiveMemberName); + pathcopy(oc->archiveMemberName, archiveMemberName); } else { oc->archiveMemberName = NULL; } @@ -1739,7 +1733,7 @@ static HsInt resolveObjs_ (void) r = ocTryLoad(oc); if (!r) { - errorBelch("Could not load Object Code %s.\n", OC_INFORMATIVE_FILENAME(oc)); + errorBelch("Could not load Object Code %" PATH_FMT ".\n", OC_INFORMATIVE_FILENAME(oc)); IF_DEBUG(linker, printLoadedObjects()); fflush(stderr); return r; |