X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FLinker.c;h=33daea3ab3d5f147227ea67a9f6358d8535183ab;hb=805064fe860dbd4f186f5decd435169fc951a254;hp=715731bc33ac84c80df54a8377f6d3dd8dad19b0;hpb=cfb90f76b6c6f124ff0c449c7d08342953c2992c;p=ghc-hetmet.git diff --git a/rts/Linker.c b/rts/Linker.c index 715731b..33daea3 100644 --- a/rts/Linker.c +++ b/rts/Linker.c @@ -1669,6 +1669,8 @@ loadArchive( char *path ) int isObject; char tmp[12]; + IF_DEBUG(linker, debugBelch("loadArchive `%s'\n", path)); + fileSize = 32; file = stgMallocBytes(fileSize, "loadArchive(file)"); @@ -1727,7 +1729,7 @@ loadArchive( char *path ) file = stgReallocBytes(file, fileSize, "loadArchive(file)"); } n = fread ( file, 1, fileNameSize, f ); - if (n != fileNameSize) + if (n != (int)fileNameSize) barf("loadArchive: Failed reading filename from `%s'", path); } else { @@ -1735,8 +1737,8 @@ loadArchive( char *path ) } isObject = 0; - for (n = 0; n < fileNameSize - 1; n++) { - if ((file[n] == '.') && (file[n] == 'o')) { + for (n = 0; n < (int)fileNameSize - 1; n++) { + if ((file[n] == '.') && (file[n + 1] == 'o')) { isObject = 1; break; } @@ -1918,6 +1920,8 @@ static HsInt loadOc( ObjectCode* oc ) { int r; + IF_DEBUG(linker, debugBelch("loadOc\n")); + # if defined(OBJFORMAT_MACHO) && (defined(powerpc_HOST_ARCH) || defined(x86_64_HOST_ARCH)) r = ocAllocateSymbolExtras_MachO ( oc ); if (!r) { @@ -4859,6 +4863,8 @@ static int ocGetNames_MachO(ObjectCode* oc) char *commonStorage = NULL; unsigned long commonCounter; + IF_DEBUG(linker,debugBelch("ocGetNames_MachO\n")); + for(i=0;incmds;i++) { if(lc->cmd == LC_SEGMENT || lc->cmd == LC_SEGMENT_64) @@ -4948,6 +4954,7 @@ static int ocGetNames_MachO(ObjectCode* oc) ; // weak definition, and we already have a definition else { + IF_DEBUG(linker,debugBelch("Adding symbol 1 %s\n", nm)); ghciInsertStrHashTable(oc->fileName, symhash, nm, image + sections[nlist[i].n_sect-1].offset @@ -4974,6 +4981,7 @@ static int ocGetNames_MachO(ObjectCode* oc) nlist[i].n_value = commonCounter; + IF_DEBUG(linker,debugBelch("Adding symbol 2 %s\n", nm)); ghciInsertStrHashTable(oc->fileName, symhash, nm, (void*)commonCounter); oc->symbols[curSymbol++] = nm;