Changeset 3578 for trunk/kStuff/kLdr/kLdrModMachO.c
- Timestamp:
- Sep 2, 2007, 10:55:51 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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,
Note:
See TracChangeset
for help on using the changeset viewer.