Changeset 3578 for trunk/kStuff/kLdr
- Timestamp:
- Sep 2, 2007, 10:55:51 PM (18 years ago)
- Location:
- trunk/kStuff/kLdr
- Files:
-
- 2 deleted
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kStuff/kLdr/Makefile.kmk
r3577 r3578 122 122 kLdrErr.c \ 123 123 kLdrMisc.c \ 124 kLdrRdr.c \125 kLdrRdrFile.c \126 124 kLdrMod.c \ 127 125 kLdrModLX.c \ … … 137 135 kLdr-win.c 138 136 kLdr_LIBS += \ 139 $(PATH_LIB)/kHlpBaseStatic$(SUFF_LIB) 137 $(PATH_LIB)/kRdrStatic$(SUFF_LIB) \ 138 $(PATH_LIB)/kHlpBareStatic$(SUFF_LIB) 140 139 141 140 kLdrErr.c_DEPS = $(PATH_TARGET)/kldrErrConsts.h -
trunk/kStuff/kLdr/kLdr-os2.def
r3537 r3578 30 30 EXPORTS 31 31 ; The file reader API 32 _k LdrRdrAddProvider33 _k LdrRdrOpen34 _k LdrRdrClose35 _k LdrRdrRead36 _k LdrRdrAllMap37 _k LdrRdrAllUnmap38 _k LdrRdrSize39 _k LdrRdrTell40 _k LdrRdrName41 _k LdrRdrPageSize42 _k LdrRdrMap43 _k LdrRdrRefresh44 _k LdrRdrProtect45 _k LdrRdrUnmap46 _k LdrRdrDone32 _kRdrAddProvider 33 _kRdrOpen 34 _kRdrClose 35 _kRdrRead 36 _kRdrAllMap 37 _kRdrAllUnmap 38 _kRdrSize 39 _kRdrTell 40 _kRdrName 41 _kRdrPageSize 42 _kRdrMap 43 _kRdrRefresh 44 _kRdrProtect 45 _kRdrUnmap 46 _kRdrDone 47 47 48 48 ; The module interpreter API -
trunk/kStuff/kLdr/kLdr-win.def
r3537 r3578 29 29 EXPORTS 30 30 ; The file reader API 31 k LdrRdrAddProvider32 k LdrRdrOpen33 k LdrRdrClose34 k LdrRdrRead35 k LdrRdrAllMap36 k LdrRdrAllUnmap37 k LdrRdrSize38 k LdrRdrTell39 k LdrRdrName40 k LdrRdrPageSize41 k LdrRdrMap42 k LdrRdrRefresh43 k LdrRdrProtect44 k LdrRdrUnmap45 k LdrRdrDone31 kRdrAddProvider 32 kRdrOpen 33 kRdrClose 34 kRdrRead 35 kRdrAllMap 36 kRdrAllUnmap 37 kRdrSize 38 kRdrTell 39 kRdrName 40 kRdrPageSize 41 kRdrMap 42 kRdrRefresh 43 kRdrProtect 44 kRdrUnmap 45 kRdrDone 46 46 47 47 ; The module interpreter API -
trunk/kStuff/kLdr/kLdrDyldFind.c
r3574 r3578 94 94 KLDRDYLDSEARCH enmSearch; 95 95 KU32 fFlags; 96 PPK LDRRDRppRdr;96 PPKRDR ppRdr; 97 97 } KLDRDYLDFINDARGS, *PKLDRDYLDFINDARGS; 98 98 … … 201 201 *******************************************************************************/ 202 202 static int kldrDyldFindDoDllSearch(const char *pszName, const char *pszPrefix, const char *pszSuffix, 203 KLDRDYLDSEARCH enmSearch, unsigned fFlags, PPK LDRRDR ppRdr);203 KLDRDYLDSEARCH enmSearch, unsigned fFlags, PPKRDR ppRdr); 204 204 static int kldrDyldFindDoExeSearch(const char *pszName, const char *pszPrefix, const char *pszSuffix, 205 KLDRDYLDSEARCH enmSearch, unsigned fFlags, PPK LDRRDR ppRdr);206 static int kldrDyldFindTryOpen(const char *pszFilename, PPK LDRRDR ppRdr);205 KLDRDYLDSEARCH enmSearch, unsigned fFlags, PPKRDR ppRdr); 206 static int kldrDyldFindTryOpen(const char *pszFilename, PPKRDR ppRdr); 207 207 static int kldrDyldFindTryOpenPath(const char *pchPath, KSIZE cchPath, PCKLDRDYLDFINDARGS pArgs); 208 208 static int kldrDyldFindEnumeratePath(const char *pszSearchPath, PCKLDRDYLDFINDARGS pArgs); … … 356 356 { 357 357 int rc; 358 PK LDRRDR pRdr = NULL;358 PKRDR pRdr = NULL; 359 359 360 360 *ppMod = NULL; … … 376 376 if (fFlags & KLDRYDLD_LOAD_FLAGS_SPECIFIC_MODULE) 377 377 { 378 const char *pszFilename = k LdrRdrName(pRdr);378 const char *pszFilename = kRdrName(pRdr); 379 379 const KSIZE cchFilename = kHlpStrLen(pszFilename); 380 380 PKLDRDYLDMOD pCur; … … 390 390 if (!(fFlags & KLDRYDLD_LOAD_FLAGS_SPECIFIC_MODULE)) 391 391 { 392 const char *pszFilename = k LdrRdrName(pRdr);392 const char *pszFilename = kRdrName(pRdr); 393 393 const KSIZE cchFilename = kHlpStrLen(pszFilename); 394 394 PKLDRDYLDMOD pCur; … … 399 399 && !kHlpMemComp(pCur->pMod->pszFilename, pszFilename, cchFilename)) 400 400 { 401 k LdrRdrClose(pRdr);401 kRdrClose(pRdr); 402 402 kldrDyldModMarkGlobal(pCur); 403 403 *ppMod = pCur; … … 414 414 rc = kldrDyldModCreate(pRdr, fFlags, ppMod); 415 415 if (rc) 416 k LdrRdrClose(pRdr);416 kRdrClose(pRdr); 417 417 } 418 418 return rc; … … 434 434 */ 435 435 static int kldrDyldFindDoDllSearch(const char *pszName, const char *pszPrefix, const char *pszSuffix, 436 KLDRDYLDSEARCH enmSearch, unsigned fFlags, PPK LDRRDR ppRdr)436 KLDRDYLDSEARCH enmSearch, unsigned fFlags, PPKRDR ppRdr) 437 437 { 438 438 int rc; … … 548 548 */ 549 549 static int kldrDyldFindDoExeSearch(const char *pszName, const char *pszPrefix, const char *pszSuffix, 550 KLDRDYLDSEARCH enmSearch, unsigned fFlags, PPK LDRRDR ppRdr)550 KLDRDYLDSEARCH enmSearch, unsigned fFlags, PPKRDR ppRdr) 551 551 { 552 552 int rc; … … 609 609 * @param ppRdr Where to store the pointer to the new module. 610 610 */ 611 static int kldrDyldFindTryOpen(const char *pszFilename, PPK LDRRDR ppRdr)611 static int kldrDyldFindTryOpen(const char *pszFilename, PPKRDR ppRdr) 612 612 { 613 613 int rc; … … 616 616 * Try open the file. 617 617 */ 618 rc = k LdrRdrOpen(ppRdr, pszFilename);618 rc = kRdrOpen(ppRdr, pszFilename); 619 619 if (!rc) 620 620 return 0; … … 899 899 ) 900 900 { 901 PK LDRRDR pRdr;901 PKRDR pRdr; 902 902 if (fOS2LibpathStrict) 903 903 rc = kldrDyldFindDoDllSearch(pszName, pszPrefix, pszSuffix, enmSearch, fFlags, &pRdr); … … 907 907 { 908 908 /* do a filename based search. */ 909 const char *pszFilename = k LdrRdrName(pRdr);909 const char *pszFilename = kRdrName(pRdr); 910 910 const KSIZE cchFilename = kHlpStrLen(pszFilename); 911 911 PKLDRDYLDMOD pCur; … … 921 921 } 922 922 } 923 k LdrRdrClose(pRdr);923 kRdrClose(pRdr); 924 924 } 925 925 } -
trunk/kStuff/kLdr/kLdrDyldMod.c
r3573 r3578 66 66 * @param ppMod Where to put the pointer to the new module on success. 67 67 */ 68 int kldrDyldModCreate(PK LDRRDR pRdr, KU32 fFlags, PPKLDRDYLDMOD ppMod)68 int kldrDyldModCreate(PKRDR pRdr, KU32 fFlags, PPKLDRDYLDMOD ppMod) 69 69 { 70 70 PKLDRDYLDMOD pMod; … … 81 81 rc = kLdrModOpenFromRdr(pRdr, &pRawMod); 82 82 if (rc) 83 return kldrDyldFailure(rc, "%s: %rc", k LdrRdrName(pRdr), rc);83 return kldrDyldFailure(rc, "%s: %rc", kRdrName(pRdr), rc); 84 84 85 85 /* … … 207 207 #ifdef __OS2__ 208 208 HMODULE hmod = NULLHANDLE; 209 APIRET rc = DosQueryModuleHandle(k LdrRdrName(pRdr), &hmod);209 APIRET rc = DosQueryModuleHandle(kRdrName(pRdr), &hmod); 210 210 if (!rc) 211 211 212 212 #elif defined(__WIN__) 213 213 HMODULE hmod = NULL; 214 if (GetModuleHandle(k LdrRdrName(pRdr))214 if (GetModuleHandle(kRdrName(pRdr)) 215 215 216 216 #else -
trunk/kStuff/kLdr/kLdrInternal.h
r3576 r3578 30 30 31 31 #include <k/kHlp.h> 32 #include <k/kRdr.h> 32 33 33 34 #ifdef __cplusplus … … 81 82 * @{ 82 83 */ 83 84 85 /** Native file provider operations. */86 extern const KLDRRDROPS g_kLdrRdrFileOps;87 84 88 85 … … 359 356 360 357 361 int kldrDyldModCreate(PK LDRRDR pRdr, KU32 fFlags, PPKLDRDYLDMOD ppMod);358 int kldrDyldModCreate(PKRDR pRdr, KU32 fFlags, PPKLDRDYLDMOD ppMod); 362 359 void kldrDyldModDestroy(PKLDRDYLDMOD pMod); 363 360 void kldrDyldModAddRef(PKLDRDYLDMOD pMod); -
trunk/kStuff/kLdr/kLdrMod.c
r3573 r3578 111 111 * Open the file using a bit provider. 112 112 */ 113 PK LDRRDR pRdr;114 int rc = k LdrRdrOpen(&pRdr, pszFilename);113 PKRDR pRdr; 114 int rc = kRdrOpen(&pRdr, pszFilename); 115 115 if (!rc) 116 116 { … … 118 118 if (!rc) 119 119 return 0; 120 k LdrRdrClose(pRdr);120 kRdrClose(pRdr); 121 121 } 122 122 return rc; … … 135 135 * @param ppMod Where to store the module handle. 136 136 */ 137 int kLdrModOpenFromRdr(PK LDRRDR pRdr, PPKLDRMOD ppMod)137 int kLdrModOpenFromRdr(PKRDR pRdr, PPKLDRMOD ppMod) 138 138 { 139 139 union … … 151 151 * Always read the 'new header' if we encounter MZ. 152 152 */ 153 rc = k LdrRdrRead(pRdr, &u, sizeof(u), 0);153 rc = kRdrRead(pRdr, &u, sizeof(u), 0); 154 154 if (rc) 155 155 return rc; 156 156 if ( u.u16 == IMAGE_DOS_SIGNATURE 157 && k LdrRdrSize(pRdr) > sizeof(IMAGE_DOS_HEADER))157 && kRdrSize(pRdr) > sizeof(IMAGE_DOS_HEADER)) 158 158 { 159 rc = k LdrRdrRead(pRdr, &u, sizeof(u.u32), K_OFFSETOF(IMAGE_DOS_HEADER, e_lfanew));159 rc = kRdrRead(pRdr, &u, sizeof(u.u32), K_OFFSETOF(IMAGE_DOS_HEADER, e_lfanew)); 160 160 if (rc) 161 161 return rc; 162 if ((KLDRFOFF)u.u32 < k LdrRdrSize(pRdr))162 if ((KLDRFOFF)u.u32 < kRdrSize(pRdr)) 163 163 { 164 164 offHdr = u.u32; 165 rc = k LdrRdrRead(pRdr, &u, sizeof(u.u32), offHdr);165 rc = kRdrRead(pRdr, &u, sizeof(u.u32), offHdr); 166 166 if (rc) 167 167 return rc; -
trunk/kStuff/kLdr/kLdrModLX.c
r3573 r3578 115 115 static int kldrModLXRelocateBits(PKLDRMOD pMod, void *pvBits, KLDRADDR NewBaseAddress, KLDRADDR OldBaseAddress, 116 116 PFNKLDRMODGETIMPORT pfnGetImport, void *pvUser); 117 static int kldrModLXDoCreate(PK LDRRDR pRdr, KLDRFOFF offNewHdr, PKLDRMODLX *ppModLX);117 static int kldrModLXDoCreate(PKRDR pRdr, KLDRFOFF offNewHdr, PKLDRMODLX *ppModLX); 118 118 static const KU8 *kldrModLXDoNameTableLookupByOrdinal(const KU8 *pbNameTable, KI32 cbNameTable, KU32 iOrdinal); 119 119 static int kldrModLXDoNameLookup(PKLDRMODLX pModLX, const char *pchSymbol, KU32 cchSymbol, KU32 *piSymbol); … … 145 145 * @param ppMod Where to store the module instance pointer. 146 146 */ 147 static int kldrModLXCreate(PCKLDRMODOPS pOps, PK LDRRDR pRdr, KLDRFOFF offNewHdr, PPKLDRMOD ppMod)147 static int kldrModLXCreate(PCKLDRMODOPS pOps, PKRDR pRdr, KLDRFOFF offNewHdr, PPKLDRMOD ppMod) 148 148 { 149 149 PKLDRMODLX pModLX; … … 170 170 * simplify cleanup on failure. 171 171 */ 172 static int kldrModLXDoCreate(PK LDRRDR pRdr, KLDRFOFF offNewHdr, PKLDRMODLX *ppModLX)172 static int kldrModLXDoCreate(PKRDR pRdr, KLDRFOFF offNewHdr, PKLDRMODLX *ppModLX) 173 173 { 174 174 struct e32_exe Hdr; … … 187 187 * Read the signature and file header. 188 188 */ 189 rc = k LdrRdrRead(pRdr, &Hdr, sizeof(Hdr), offNewHdr > 0 ? offNewHdr : 0);189 rc = kRdrRead(pRdr, &Hdr, sizeof(Hdr), offNewHdr > 0 ? offNewHdr : 0); 190 190 if (rc) 191 191 return rc; … … 205 205 206 206 /* Some rough sanity checks. */ 207 offEnd = k LdrRdrSize(pRdr) >= (KLDRFOFF)~(KU32)16 ? ~(KU32)16 : (KU32)kLdrRdrSize(pRdr);207 offEnd = kRdrSize(pRdr) >= (KLDRFOFF)~(KU32)16 ? ~(KU32)16 : (KU32)kRdrSize(pRdr); 208 208 if ( Hdr.e32_itermap > offEnd 209 209 || Hdr.e32_datapage > offEnd … … 266 266 * Calc the instance size, allocate and initialize it. 267 267 */ 268 cchFilename = kHlpStrLen(k LdrRdrName(pRdr));268 cchFilename = kHlpStrLen(kRdrName(pRdr)); 269 269 cb = K_ALIGN_Z(sizeof(KLDRMODLX), 8) 270 270 + K_ALIGN_Z(K_OFFSETOF(KLDRMOD, aSegments[Hdr.e32_objcnt + 1]), 8) … … 284 284 pMod->cchFilename = cchFilename; 285 285 pMod->pszFilename = (char *)K_ALIGN_P(&pMod->aSegments[pMod->cSegments], 8); 286 kHlpMemCopy((char *)pMod->pszFilename, k LdrRdrName(pRdr), cchFilename + 1);286 kHlpMemCopy((char *)pMod->pszFilename, kRdrName(pRdr), cchFilename + 1); 287 287 pMod->pszName = NULL; /* finalized further down */ 288 288 pMod->cchName = 0; … … 357 357 * Read the loader data. 358 358 */ 359 rc = k LdrRdrRead(pRdr, (void *)pModLX->pbLoaderSection, pModLX->Hdr.e32_ldrsize, pModLX->Hdr.e32_objtab + pModLX->offHdr);359 rc = kRdrRead(pRdr, (void *)pModLX->pbLoaderSection, pModLX->Hdr.e32_ldrsize, pModLX->Hdr.e32_objtab + pModLX->offHdr); 360 360 if (rc) 361 361 return rc; … … 527 527 if (pMod->pRdr) 528 528 { 529 rc = k LdrRdrClose(pMod->pRdr);529 rc = kRdrClose(pMod->pRdr); 530 530 pMod->pRdr = NULL; 531 531 } … … 941 941 942 942 off = pModLX->Hdr.e32_objtab + pModLX->Hdr.e32_ldrsize; 943 rc = k LdrRdrRead(pModLX->pMod->pRdr, pv, pModLX->Hdr.e32_fixupsize,943 rc = kRdrRead(pModLX->pMod->pRdr, pv, pModLX->Hdr.e32_fixupsize, 944 944 off + pModLX->offHdr); 945 945 if (!rc) … … 1381 1381 static int kldrModLXDoLoadBits(PKLDRMODLX pModLX, void *pvBits) 1382 1382 { 1383 const PK LDRRDR pRdr = pModLX->pMod->pRdr;1383 const PKRDR pRdr = pModLX->pMod->pRdr; 1384 1384 KU8 *pbTmpPage = NULL; 1385 1385 int rc = 0; … … 1406 1406 case VALID: 1407 1407 if (pMap->o32_pagesize == OBJPAGELEN) 1408 rc = k LdrRdrRead(pRdr, pbPage, OBJPAGELEN,1408 rc = kRdrRead(pRdr, pbPage, OBJPAGELEN, 1409 1409 pModLX->Hdr.e32_datapage + (pMap->o32_pagedataoffset << pModLX->Hdr.e32_pageshift)); 1410 1410 else if (pMap->o32_pagesize < OBJPAGELEN) 1411 1411 { 1412 rc = k LdrRdrRead(pRdr, pbPage, pMap->o32_pagesize,1412 rc = kRdrRead(pRdr, pbPage, pMap->o32_pagesize, 1413 1413 pModLX->Hdr.e32_datapage + (pMap->o32_pagedataoffset << pModLX->Hdr.e32_pageshift)); 1414 1414 kHlpMemSet(pbPage + pMap->o32_pagesize, 0, OBJPAGELEN - pMap->o32_pagesize); … … 1435 1435 1436 1436 /* read it and ensure 4 extra zero bytes. */ 1437 rc = k LdrRdrRead(pRdr, pbTmpPage, pMap->o32_pagesize,1437 rc = kRdrRead(pRdr, pbTmpPage, pMap->o32_pagesize, 1438 1438 pModLX->Hdr.e32_datapage + (pMap->o32_pagedataoffset << pModLX->Hdr.e32_pageshift)); 1439 1439 if (rc) -
trunk/kStuff/kLdr/kLdrModMachO.c
r3573 r3578 159 159 PFNKLDRMODGETIMPORT pfnGetImport, void *pvUser); 160 160 161 static int kldrModMachODoCreate(PK LDRRDR pRdr, PKLDRMODMACHO *ppMod);162 static int kldrModMachOPreParseLoadCommands(KU8 *pbLoadCommands, const mach_header_32_t *pHdr, PK LDRRDR pRdr,161 static int kldrModMachODoCreate(PKRDR pRdr, PKLDRMODMACHO *ppMod); 162 static int kldrModMachOPreParseLoadCommands(KU8 *pbLoadCommands, const mach_header_32_t *pHdr, PKRDR pRdr, 163 163 KU32 *pcSegments, KU32 *pcSections, KU32 *pcbStringPool); 164 164 static int kldrModMachOParseLoadCommands(PKLDRMODMACHO pModMachO, char *pbStringPool, KU32 cbStringPool); … … 196 196 * @param ppMod Where to store the module instance pointer. 197 197 */ 198 static int kldrModMachOCreate(PCKLDRMODOPS pOps, PK LDRRDR pRdr, KLDRFOFF offNewHdr, PPKLDRMOD ppMod)198 static int kldrModMachOCreate(PCKLDRMODOPS pOps, PKRDR pRdr, KLDRFOFF offNewHdr, PPKLDRMOD ppMod) 199 199 { 200 200 PKLDRMODMACHO pModMachO; … … 225 225 * simplify cleanup on failure. 226 226 */ 227 static int kldrModMachODoCreate(PK LDRRDR pRdr, PKLDRMODMACHO *ppModMachO)227 static int kldrModMachODoCreate(PKRDR pRdr, PKLDRMODMACHO *ppModMachO) 228 228 { 229 229 union … … 246 246 * Read the Mach-O header. 247 247 */ 248 rc = k LdrRdrRead(pRdr, &s, sizeof(s), 0);248 rc = kRdrRead(pRdr, &s, sizeof(s), 0); 249 249 if (rc) 250 250 return rc; … … 260 260 261 261 /* sanity checks. */ 262 if ( s.Hdr32.sizeofcmds > k LdrRdrSize(pRdr) - sizeof(mach_header_32_t)262 if ( s.Hdr32.sizeofcmds > kRdrSize(pRdr) - sizeof(mach_header_32_t) 263 263 || s.Hdr32.sizeofcmds < sizeof(load_command_t) * s.Hdr32.ncmds 264 264 || (s.Hdr32.flags & ~MH_VALID_FLAGS)) … … 281 281 if (!pbLoadCommands) 282 282 return KLDR_ERR_NO_MEMORY; 283 rc = k LdrRdrRead(pRdr, pbLoadCommands, s.Hdr32.sizeofcmds,283 rc = kRdrRead(pRdr, pbLoadCommands, s.Hdr32.sizeofcmds, 284 284 s.Hdr32.magic == IMAGE_MACHO32_SIGNATURE 285 285 || s.Hdr32.magic == IMAGE_MACHO32_SIGNATURE_OE … … 297 297 * Calc the instance size, allocate and initialize it. 298 298 */ 299 cchFilename = kHlpStrLen(k LdrRdrName(pRdr));299 cchFilename = kHlpStrLen(kRdrName(pRdr)); 300 300 cb = K_ALIGN_Z( K_OFFSETOF(KLDRMODMACHO, aSegments[cSegments]) 301 301 + sizeof(KLDRMODMACHOSECT) * cSections, 16) … … 318 318 pMod->cchFilename = cchFilename; 319 319 pMod->pszFilename = (char *)&pMod->aSegments[pMod->cSegments]; 320 kHlpMemCopy((char *)pMod->pszFilename, k LdrRdrName(pRdr), cchFilename + 1);320 kHlpMemCopy((char *)pMod->pszFilename, kRdrName(pRdr), cchFilename + 1); 321 321 pMod->pszName = kHlpGetFilename(pMod->pszFilename); 322 322 pMod->cchName = cchFilename - (pMod->pszName - pMod->pszFilename); … … 429 429 * @param pcbStringPool Where to store the string pool size. 430 430 */ 431 static int kldrModMachOPreParseLoadCommands(KU8 *pbLoadCommands, const mach_header_32_t *pHdr, PK LDRRDR pRdr,431 static int kldrModMachOPreParseLoadCommands(KU8 *pbLoadCommands, const mach_header_32_t *pHdr, PKRDR pRdr, 432 432 KU32 *pcSegments, KU32 *pcSections, KU32 *pcbStringPool) 433 433 { … … 442 442 uuid_command_t *pUuid; 443 443 } u; 444 const KU64 cbFile = k LdrRdrSize(pRdr);444 const KU64 cbFile = kRdrSize(pRdr); 445 445 KU32 cSegments = 0; 446 446 KU32 cSections = 0; … … 670 670 : sizeof(macho_nlist_64_t); 671 671 if ( u.pSymTab->symoff >= cbFile 672 || (KU64)u.pSymTab->symoff + u.pSymTab->nsyms * cbSym > k LdrRdrSize(pRdr))672 || (KU64)u.pSymTab->symoff + u.pSymTab->nsyms * cbSym > kRdrSize(pRdr)) 673 673 return KLDR_ERR_MACHO_BAD_LOAD_COMMAND; 674 674 if ( u.pSymTab->stroff >= cbFile … … 1008 1008 if (pMod->pRdr) 1009 1009 { 1010 rc = k LdrRdrClose(pMod->pRdr);1010 rc = kRdrClose(pMod->pRdr); 1011 1011 pMod->pRdr = NULL; 1012 1012 } … … 1572 1572 else 1573 1573 { 1574 rc = k LdrRdrMap(pMod->pRdr, &pvBase, pMod->cSegments, pMod->aSegments, fFixed);1574 rc = kRdrMap(pMod->pRdr, &pvBase, pMod->cSegments, pMod->aSegments, fFixed); 1575 1575 if (rc) 1576 1576 return rc; … … 1611 1611 else 1612 1612 { 1613 rc = k LdrRdrUnmap(pMod->pRdr, pModMachO->pvMapping, pMod->cSegments, pMod->aSegments);1613 rc = kRdrUnmap(pMod->pRdr, pModMachO->pvMapping, pMod->cSegments, pMod->aSegments); 1614 1614 if (rc) 1615 1615 return rc; … … 1659 1659 1660 1660 /* the file provider does it all */ 1661 return k LdrRdrRefresh(pMod->pRdr, pModMachO->pvMapping, pMod->cSegments, pMod->aSegments);1661 return kRdrRefresh(pMod->pRdr, pModMachO->pvMapping, pMod->cSegments, pMod->aSegments); 1662 1662 } 1663 1663 … … 1682 1682 else 1683 1683 { 1684 rc = k LdrRdrProtect(pMod->pRdr, pModMachO->pvMapping, pMod->cSegments, pMod->aSegments, 1 /* unprotect */);1684 rc = kRdrProtect(pMod->pRdr, pModMachO->pvMapping, pMod->cSegments, pMod->aSegments, 1 /* unprotect */); 1685 1685 if (rc) 1686 1686 return rc; … … 1699 1699 rc2 = KLDR_ERR_TODO; /* deal with this if it ever occurs. */ 1700 1700 else 1701 rc2 = k LdrRdrProtect(pMod->pRdr, pModMachO->pvMapping, pMod->cSegments, pMod->aSegments, 0 /* protect */);1701 rc2 = kRdrProtect(pMod->pRdr, pModMachO->pvMapping, pMod->cSegments, pMod->aSegments, 0 /* protect */); 1702 1702 if (!rc && rc2) 1703 1703 rc = rc2; … … 2151 2151 { 2152 2152 /* read */ 2153 rc = k LdrRdrRead(pModMachO->pMod->pRdr, pvSyms, cbSyms, pModMachO->offSymbols);2153 rc = kRdrRead(pModMachO->pMod->pRdr, pvSyms, cbSyms, pModMachO->offSymbols); 2154 2154 if (!rc && pModMachO->cchStrings) 2155 rc = k LdrRdrRead(pModMachO->pMod->pRdr, pvStrings, pModMachO->cchStrings, pModMachO->offStrings);2155 rc = kRdrRead(pModMachO->pMod->pRdr, pvStrings, pModMachO->cchStrings, pModMachO->offStrings); 2156 2156 if (!rc) 2157 2157 { … … 2224 2224 2225 2225 /* read the fixups. */ 2226 rc = k LdrRdrRead(pModMachO->pMod->pRdr, paFixups, cbFixups, offFixups);2226 rc = kRdrRead(pModMachO->pMod->pRdr, paFixups, cbFixups, offFixups); 2227 2227 if (!rc) 2228 2228 { … … 2258 2258 int rc = 0; 2259 2259 if (!pModMachO->pvBits) 2260 rc = k LdrRdrAllMap(pModMachO->pMod->pRdr, &pModMachO->pvBits);2260 rc = kRdrAllMap(pModMachO->pMod->pRdr, &pModMachO->pvBits); 2261 2261 return rc; 2262 2262 } … … 2323 2323 || !pMod->aSegments[i].Alignment) 2324 2324 continue; 2325 rc = k LdrRdrRead(pMod->pRdr,2325 rc = kRdrRead(pMod->pRdr, 2326 2326 (KU8 *)pvBits + (pMod->aSegments[i].LinkAddress - pModMachO->LinkAddress), 2327 2327 pMod->aSegments[i].cbFile, -
trunk/kStuff/kLdr/kLdrModNative.c
r3573 r3578 153 153 * @param ppMod Where to store the module instance pointer. 154 154 */ 155 static int kldrModNativeCreate(PCKLDRMODOPS pOps, PK LDRRDR pRdr, KLDRFOFF offNewHdr, PPKLDRMOD ppMod)156 { 157 int rc = kLdrModOpenNative(k LdrRdrName(pRdr), ppMod);155 static int kldrModNativeCreate(PCKLDRMODOPS pOps, PKRDR pRdr, KLDRFOFF offNewHdr, PPKLDRMOD ppMod) 156 { 157 int rc = kLdrModOpenNative(kRdrName(pRdr), ppMod); 158 158 if (rc) 159 159 return rc; 160 rc = k LdrRdrClose(pRdr);160 rc = kRdrClose(pRdr); 161 161 KLDRMODNATIVE_ASSERT(!rc); 162 162 return 0; -
trunk/kStuff/kLdr/kLdrModPE.c
r3574 r3578 105 105 PFNKLDRMODGETIMPORT pfnGetImport, void *pvUser); 106 106 107 static int kldrModPEDoCreate(PK LDRRDR pRdr, KLDRFOFF offNewHdr, PKLDRMODPE *ppMod);107 static int kldrModPEDoCreate(PKRDR pRdr, KLDRFOFF offNewHdr, PKLDRMODPE *ppMod); 108 108 /*static void kldrModPEDoLoadConfigConversion(PIMAGE_LOAD_CONFIG_DIRECTORY64 pLoadCfg); */ 109 109 static int kLdrModPEDoOptionalHeaderValidation(PKLDRMODPE pModPE); … … 134 134 * @param ppMod Where to store the module instance pointer. 135 135 */ 136 static int kldrModPECreate(PCKLDRMODOPS pOps, PK LDRRDR pRdr, KLDRFOFF offNewHdr, PPKLDRMOD ppMod)136 static int kldrModPECreate(PCKLDRMODOPS pOps, PKRDR pRdr, KLDRFOFF offNewHdr, PPKLDRMOD ppMod) 137 137 { 138 138 PKLDRMODPE pModPE; … … 159 159 * simplify cleanup on failure. 160 160 */ 161 static int kldrModPEDoCreate(PK LDRRDR pRdr, KLDRFOFF offNewHdr, PKLDRMODPE *ppModPE)161 static int kldrModPEDoCreate(PKRDR pRdr, KLDRFOFF offNewHdr, PKLDRMODPE *ppModPE) 162 162 { 163 163 struct … … 178 178 * Read the signature and file header. 179 179 */ 180 rc = k LdrRdrRead(pRdr, &s, sizeof(s), offNewHdr > 0 ? offNewHdr : 0);180 rc = kRdrRead(pRdr, &s, sizeof(s), offNewHdr > 0 ? offNewHdr : 0); 181 181 if (rc) 182 182 return rc; … … 199 199 * Calc the instance size, allocate and initialize it. 200 200 */ 201 cchFilename = kHlpStrLen(k LdrRdrName(pRdr));201 cchFilename = kHlpStrLen(kRdrName(pRdr)); 202 202 cb = K_ALIGN_Z(K_OFFSETOF(KLDRMODPE, aShdrs[s.FileHdr.NumberOfSections]), 16) 203 203 + K_OFFSETOF(KLDRMOD, aSegments[s.FileHdr.NumberOfSections + 1]) … … 216 216 pMod->cchFilename = cchFilename; 217 217 pMod->pszFilename = (char *)&pMod->aSegments[pMod->cSegments]; 218 kHlpMemCopy((char *)pMod->pszFilename, k LdrRdrName(pRdr), cchFilename + 1);218 kHlpMemCopy((char *)pMod->pszFilename, kRdrName(pRdr), cchFilename + 1); 219 219 pMod->pszName = kHlpGetFilename(pMod->pszFilename); 220 220 pMod->cchName = cchFilename - (pMod->pszName - pMod->pszFilename); … … 261 261 */ 262 262 off = pModPE->offHdrs + sizeof(pModPE->Hdrs.Signature) + sizeof(pModPE->Hdrs.FileHeader); 263 rc = k LdrRdrRead(pRdr, &pModPE->Hdrs.OptionalHeader, pModPE->Hdrs.FileHeader.SizeOfOptionalHeader, off);263 rc = kRdrRead(pRdr, &pModPE->Hdrs.OptionalHeader, pModPE->Hdrs.FileHeader.SizeOfOptionalHeader, off); 264 264 if (rc) 265 265 return rc; … … 267 267 kldrModPEDoOptionalHeaderConversion(&pModPE->Hdrs.OptionalHeader); 268 268 off += pModPE->Hdrs.FileHeader.SizeOfOptionalHeader; 269 rc = k LdrRdrRead(pRdr, &pModPE->aShdrs[0], sizeof(IMAGE_SECTION_HEADER) * pModPE->Hdrs.FileHeader.NumberOfSections, off);269 rc = kRdrRead(pRdr, &pModPE->aShdrs[0], sizeof(IMAGE_SECTION_HEADER) * pModPE->Hdrs.FileHeader.NumberOfSections, off); 270 270 if (rc) 271 271 return rc; … … 530 530 if (pMod->pRdr) 531 531 { 532 rc = k LdrRdrClose(pMod->pRdr);532 rc = kRdrClose(pMod->pRdr); 533 533 pMod->pRdr = NULL; 534 534 } … … 553 553 { 554 554 PKLDRMOD pMod = pModPE->pMod; 555 unsignedfFixed;555 KBOOL fFixed; 556 556 void *pvBase; 557 557 int rc; … … 575 575 576 576 /* try do the prepare */ 577 rc = k LdrRdrMap(pMod->pRdr, &pvBase, pMod->cSegments, pMod->aSegments, fFixed);577 rc = kRdrMap(pMod->pRdr, &pvBase, pMod->cSegments, pMod->aSegments, fFixed); 578 578 if (rc) 579 579 return rc; … … 616 616 * Try unmap the image. 617 617 */ 618 rc = k LdrRdrUnmap(pMod->pRdr, (void *)pvMapping, pMod->cSegments, pMod->aSegments);618 rc = kRdrUnmap(pMod->pRdr, (void *)pvMapping, pMod->cSegments, pMod->aSegments); 619 619 if (rc) 620 620 return rc; … … 1315 1315 1316 1316 /* the file provider does it all */ 1317 return k LdrRdrRefresh(pMod->pRdr, (void *)pModPE->pvMapping, pMod->cSegments, pMod->aSegments);1317 return kRdrRefresh(pMod->pRdr, (void *)pModPE->pvMapping, pMod->cSegments, pMod->aSegments); 1318 1318 } 1319 1319 … … 1334 1334 * Before doing anything we'll have to make all pages writable. 1335 1335 */ 1336 rc = k LdrRdrProtect(pMod->pRdr, (void *)pModPE->pvMapping, pMod->cSegments, pMod->aSegments, 1 /* unprotect */);1336 rc = kRdrProtect(pMod->pRdr, (void *)pModPE->pvMapping, pMod->cSegments, pMod->aSegments, 1 /* unprotect */); 1337 1337 if (rc) 1338 1338 return rc; … … 1353 1353 * Restore protection. 1354 1354 */ 1355 rc2 = k LdrRdrProtect(pMod->pRdr, (void *)pModPE->pvMapping, pMod->cSegments, pMod->aSegments, 0 /* protect */);1355 rc2 = kRdrProtect(pMod->pRdr, (void *)pModPE->pvMapping, pMod->cSegments, pMod->aSegments, 0 /* protect */); 1356 1356 if (!rc && rc2) 1357 1357 rc = rc2; … … 1914 1914 || !pMod->aSegments[i].Alignment) 1915 1915 continue; 1916 rc = k LdrRdrRead(pMod->pRdr,1916 rc = kRdrRead(pMod->pRdr, 1917 1917 (KU8 *)pvBits + (pMod->aSegments[i].LinkAddress - pModPE->Hdrs.OptionalHeader.ImageBase), 1918 1918 pMod->aSegments[i].cbFile,
Note:
See TracChangeset
for help on using the changeset viewer.