diff --git a/src/bin/ld/findfunc.c b/src/bin/ld/findfunc.c index 13f8eda..74794ee 100644 --- a/src/bin/ld/findfunc.c +++ b/src/bin/ld/findfunc.c @@ -11,7 +11,7 @@ if (libPtr == 0x0) { libPtr = ldAddLibrary(lib); } - + for (i=0x0;ilinkerSectionHeader[libPtr->sym].shSize/sizeof(elfDynSym);i++) { if (!strcmp(func,(libPtr->linkerDynStr + libPtr->linkerRelSymTab[i].dynName))) { funcPtr = (uInt32 *)((uInt32)(libPtr->linkerRelSymTab[i].dynValue) + (uInt32)libPtr->output); diff --git a/src/bin/ld/findlibrary.c b/src/bin/ld/findlibrary.c index 79c832a..f071e7d 100644 --- a/src/bin/ld/findlibrary.c +++ b/src/bin/ld/findlibrary.c @@ -9,6 +9,5 @@ return(tmpLibs); } } - return(0x0); } diff --git a/src/bin/ld/main.c b/src/bin/ld/main.c index bb62c74..25b284f 100644 --- a/src/bin/ld/main.c +++ b/src/bin/ld/main.c @@ -67,30 +67,30 @@ fread(binaryShStr,binarySectionHeader[binaryHeader->eShstrndx].shSize,1,binaryFd); } - for (i=0x0;ieShnum;i++) { - switch (binarySectionHeader[i].shType) { - case 3: - if (!strcmp((binaryShStr + binarySectionHeader[i].shName),".dynstr")) { - if (binaryDynStr == 0x0) { - binaryDynStr = (char *)malloc(binarySectionHeader[i].shSize); - fseek(binaryFd,binarySectionHeader[i].shOffset,0); - fread(binaryDynStr,binarySectionHeader[i].shSize,1,binaryFd); + for (i=0x0;ieShnum;i++) { + switch (binarySectionHeader[i].shType) { + case 3: + if (!strcmp((binaryShStr + binarySectionHeader[i].shName),".dynstr")) { + if (binaryDynStr == 0x0) { + binaryDynStr = (char *)malloc(binarySectionHeader[i].shSize); + fseek(binaryFd,binarySectionHeader[i].shOffset,0); + fread(binaryDynStr,binarySectionHeader[i].shSize,1,binaryFd); + } } - } - break; - case 9: - rel = i; - break; - case 11: - if (binaryRelSymTab == 0x0) { - binaryRelSymTab = (elfDynSym *)malloc(binarySectionHeader[i].shSize); - fseek(binaryFd,binarySectionHeader[i].shOffset,0); - fread(binaryRelSymTab,binarySectionHeader[i].shSize,1,binaryFd); - } - break; + break; + case 9: + rel = i; + break; + case 11: + if (binaryRelSymTab == 0x0) { + binaryRelSymTab = (elfDynSym *)malloc(binarySectionHeader[i].shSize); + fseek(binaryFd,binarySectionHeader[i].shOffset,0); + fread(binaryRelSymTab,binarySectionHeader[i].shSize,1,binaryFd); + } + break; + } } } - } if (binaryElfRel == 0x0) { fseek(binaryFd,binarySectionHeader[rel].shOffset,0x0); @@ -98,12 +98,11 @@ fread(binaryElfRel,binarySectionHeader[rel].shSize,1,binaryFd); } - i = (entry/sizeof(elfPltInfo)); x = ELF32_R_SYM(binaryElfRel[i].pltInfo); reMap = (uInt32 *)binaryElfRel[i].pltOffset; *reMap = ldFindFunc(binaryDynStr + binaryRelSymTab[x].dynName,(char *)(binaryDynStr + 1)); - + if (binaryFd) { fclose(binaryFd); } @@ -113,6 +112,9 @@ /*** $Log$ + Revision 1.12 2004/06/17 14:14:44 reddawg + Fixed some potential problems + Revision 1.11 2004/06/17 13:05:14 reddawg dynamic linking: fixed int6 issue problem was multiple rel's diff --git a/src/sys/kernel/exec.c b/src/sys/kernel/exec.c index f0fc844..85c0cae 100644 --- a/src/sys/kernel/exec.c +++ b/src/sys/kernel/exec.c @@ -203,6 +203,7 @@ if (vmmRemapPage(vmmFindFreePage(_current->id),((programHeader[i].phVaddr & 0xFFFFF000) + x)) == 0x0) { kpanic("Error: vmmFindFreePage Failed\n"); } + kmemset(((programHeader[i].phVaddr & 0xFFFFF000) + x),0x0,0x1000); } _current->oInfo.vmStart = ((programHeader[i].phVaddr & 0xFFFFF000) + 0x1900000); /* Now Load Section To Memory */ @@ -442,6 +443,9 @@ /*** $Log$ + Revision 1.37 2004/06/17 13:05:14 reddawg + dynamic linking: fixed int6 issue problem was multiple rel's + Revision 1.36 2004/06/17 12:28:56 reddawg debug: show me the output after this is a tested diff --git a/src/sys/kernel/ld.c b/src/sys/kernel/ld.c index 2f4852a..3eadd8a 100644 --- a/src/sys/kernel/ld.c +++ b/src/sys/kernel/ld.c @@ -86,6 +86,7 @@ */ for (x=0;x < ((programHeader[i].phMemsz)+4095);x += 0x1000) { vmmRemapPage(vmmFindFreePage(_current->id),((programHeader[i].phVaddr & 0xFFFFF000) + x + LD_START)); + kmemset(((programHeader[i].phVaddr & 0xFFFFF000) + x + LD_START),0x0,0x1000); } /* Now Load Section To Memory */ fseek(ldFd,programHeader[i].phOffset,0x0); @@ -156,6 +157,9 @@ /*** $Log$ + Revision 1.25 2004/06/17 13:16:55 reddawg + debug: removed all dead debug code + Revision 1.24 2004/06/17 13:05:14 reddawg dynamic linking: fixed int6 issue problem was multiple rel's