summaryrefslogtreecommitdiff
path: root/rts/Linker.c
diff options
context:
space:
mode:
authorTamar Christina <tamar@zhox.com>2020-06-17 11:00:49 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-06-18 23:07:03 -0400
commitda18ff9935e72c7fe6127cb5d5d0c53654a204b0 (patch)
tree5f6e9e49a5df9783c4c6c30aaa4372387325bfef /rts/Linker.c
parent08c1cb0f30770acbf366423f085f8ef92f7f6a06 (diff)
downloadhaskell-da18ff9935e72c7fe6127cb5d5d0c53654a204b0.tar.gz
fix windows bootstrap due to linker changes
Diffstat (limited to 'rts/Linker.c')
-rw-r--r--rts/Linker.c22
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;