Changeset 88 in kStuff
- Timestamp:
- Sep 7, 2016 1:29:14 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kLdr/kLdrModMachO.c
r86 r88 219 219 static int kldrModMachODoQuerySymbol32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, KU32 cSyms, const char *pchStrings, 220 220 KU32 cchStrings, KLDRADDR BaseAddress, KU32 iSymbol, const char *pchSymbol, 221 K SIZEcchSymbol, PKLDRADDR puValue, KU32 *pfKind);221 KU32 cchSymbol, PKLDRADDR puValue, KU32 *pfKind); 222 222 static int kldrModMachODoQuerySymbol64Bit(PKLDRMODMACHO pModMachO, const macho_nlist_64_t *paSyms, KU32 cSyms, const char *pchStrings, 223 223 KU32 cchStrings, KLDRADDR BaseAddress, KU32 iSymbol, const char *pchSymbol, 224 K SIZEcchSymbol, PKLDRADDR puValue, KU32 *pfKind);224 KU32 cchSymbol, PKLDRADDR puValue, KU32 *pfKind); 225 225 static int kldrModMachODoEnumSymbols32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, KU32 cSyms, 226 226 const char *pchStrings, KU32 cchStrings, KLDRADDR BaseAddress, … … 408 408 pMod->pOps = NULL; /* set upon success. */ 409 409 pMod->cSegments = cSegments; 410 pMod->cchFilename = cchFilename;410 pMod->cchFilename = (KU32)cchFilename; 411 411 pMod->pszFilename = (char *)&pMod->aSegments[pMod->cSegments]; 412 412 kHlpMemCopy((char *)pMod->pszFilename, kRdrName(pRdr), cchFilename + 1); 413 413 pMod->pszName = kHlpGetFilename(pMod->pszFilename); 414 pMod->cchName = cchFilename - (pMod->pszName - pMod->pszFilename);414 pMod->cchName = (KU32)(cchFilename - (pMod->pszName - pMod->pszFilename)); 415 415 pMod->fFlags = 0; 416 416 switch (s.Hdr32.cputype) … … 571 571 KU32 cSegments = 0; 572 572 KU32 cSections = 0; 573 K U32cbStringPool = 0;573 KSIZE cbStringPool = 0; 574 574 KU32 cLeft = pHdr->ncmds; 575 575 KU32 cbLeft = pHdr->sizeofcmds; … … 1084 1084 *pcSegments = cSegments; 1085 1085 *pcSections = cSections; 1086 *pcbStringPool = cbStringPool;1086 *pcbStringPool = (KU32)cbStringPool; 1087 1087 1088 1088 return 0; … … 1154 1154 kHlpMemCopy(pbStringPool, a_achName2, cchName2); \ 1155 1155 pbStringPool += cchName2; \ 1156 pDstSeg->cchName += cchName2; \1156 pDstSeg->cchName += (KU32)cchName2; \ 1157 1157 } \ 1158 1158 *pbStringPool++ = '\0'; \ … … 1166 1166 if (a_fFileBits) \ 1167 1167 { \ 1168 pDstSeg->offFile = ( a_offFile) + pModMachO->offImage; \1169 pDstSeg->cbFile = ( a_cbFile); \1168 pDstSeg->offFile = (KLDRFOFF)((a_offFile) + pModMachO->offImage); \ 1169 pDstSeg->cbFile = (KLDRFOFF)(a_cbFile); \ 1170 1170 } \ 1171 1171 else \ … … 1178 1178 pDstSeg->MapAddress = 0; \ 1179 1179 \ 1180 pSegExtra->iOrgSegNo = pSegExtra - &pModMachO->aSegments[0]; \1180 pSegExtra->iOrgSegNo = (KU32)(pSegExtra - &pModMachO->aSegments[0]); \ 1181 1181 pSegExtra->cSections = 0; \ 1182 1182 pSegExtra->paSections = pSectExtra; \ 1183 1183 } while (0) 1184 1184 1185 /* Closes the new segment - part erof NEW_SEGMENT. */1185 /* Closes the new segment - part of NEW_SEGMENT. */ 1186 1186 #define CLOSE_SEGMENT() \ 1187 1187 do { \ 1188 pSegExtra->cSections = pSectExtra - pSegExtra->paSections; \1188 pSegExtra->cSections = (KU32)(pSectExtra - pSegExtra->paSections); \ 1189 1189 pSegExtra++; \ 1190 1190 pDstSeg++; \ … … 1254 1254 pSectExtra->offFixups = -1; \ 1255 1255 pSectExtra->fFlags = pSect->flags; \ 1256 pSectExtra->iSegment = pSegExtra - &pModMachO->aSegments[0]; \1256 pSectExtra->iSegment = (KU32)(pSegExtra - &pModMachO->aSegments[0]); \ 1257 1257 pSectExtra->pvMachoSection = pSect; \ 1258 1258 \ … … 1405 1405 if (pModMachO->fMakeGot) 1406 1406 { 1407 K SIZEcbPtr = ( pModMachO->Hdr.magic == IMAGE_MACHO32_SIGNATURE1408 1409 1410 1407 KU32 cbPtr = ( pModMachO->Hdr.magic == IMAGE_MACHO32_SIGNATURE 1408 || pModMachO->Hdr.magic == IMAGE_MACHO32_SIGNATURE_OE) 1409 ? sizeof(KU32) 1410 : sizeof(KU64); 1411 1411 KU32 cbGot = pModMachO->cSymbols * cbPtr; 1412 1412 KU32 cbJmpStubs; … … 1702 1702 rc = kldrModMachODoQuerySymbol32Bit(pModMachO, (macho_nlist_32_t *)pModMachO->pvaSymbols, pModMachO->cSymbols, 1703 1703 pModMachO->pchStrings, pModMachO->cchStrings, BaseAddress, iSymbol, pchSymbol, 1704 cchSymbol, puValue, pfKind);1704 (KU32)cchSymbol, puValue, pfKind); 1705 1705 else 1706 1706 rc = kldrModMachODoQuerySymbol64Bit(pModMachO, (macho_nlist_64_t *)pModMachO->pvaSymbols, pModMachO->cSymbols, 1707 1707 pModMachO->pchStrings, pModMachO->cchStrings, BaseAddress, iSymbol, pchSymbol, 1708 cchSymbol, puValue, pfKind);1708 (KU32)cchSymbol, puValue, pfKind); 1709 1709 } 1710 1710 … … 1750 1750 * @param pfKind See kLdrModQuerySymbol. 1751 1751 */ 1752 static int kldrModMachODoQuerySymbol32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, KU32 cSyms, const char *pchStrings,1753 KU32 cchStrings, KLDRADDR BaseAddress, KU32 iSymbol, const char *pchSymbol, KSIZE cchSymbol,1754 PKLDRADDR puValue, KU32 *pfKind)1752 static int kldrModMachODoQuerySymbol32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, KU32 cSyms, 1753 const char *pchStrings, KU32 cchStrings, KLDRADDR BaseAddress, KU32 iSymbol, 1754 const char *pchSymbol, KU32 cchSymbol, PKLDRADDR puValue, KU32 *pfKind) 1755 1755 { 1756 1756 /* … … 1878 1878 * @param pfKind See kLdrModQuerySymbol. 1879 1879 */ 1880 static int kldrModMachODoQuerySymbol64Bit(PKLDRMODMACHO pModMachO, const macho_nlist_64_t *paSyms, KU32 cSyms, const char *pchStrings,1881 KU32 cchStrings, KLDRADDR BaseAddress, KU32 iSymbol, const char *pchSymbol, KSIZE cchSymbol,1882 PKLDRADDR puValue, KU32 *pfKind)1880 static int kldrModMachODoQuerySymbol64Bit(PKLDRMODMACHO pModMachO, const macho_nlist_64_t *paSyms, KU32 cSyms, 1881 const char *pchStrings, KU32 cchStrings, KLDRADDR BaseAddress, KU32 iSymbol, 1882 const char *pchSymbol, KU32 cchSymbol, PKLDRADDR puValue, KU32 *pfKind) 1883 1883 { 1884 1884 /* … … 3598 3598 KLDRMODMACHO_CHECK_RETURN((KU32)paSyms[iSym].n_sect - 1 <= pModMachO->cSections, KLDR_ERR_MACHO_BAD_SYMBOL); 3599 3599 pSymSect = &pModMachO->paSections[paSyms[iSym].n_sect - 1]; 3600 paGOT[iSym] = paSyms[iSym].n_value - pSymSect->LinkAddress + pSymSect->RVA + NewBaseAddress;3600 paGOT[iSym] = (KU32)(paSyms[iSym].n_value - pSymSect->LinkAddress + pSymSect->RVA + NewBaseAddress); 3601 3601 break; 3602 3602 } … … 3654 3654 3655 3655 /* create the template. */ 3656 off = pModMachO->GotRVA - (pModMachO->JmpStubsRVA + 6);3656 off = (KI32)(pModMachO->GotRVA - (pModMachO->JmpStubsRVA + 6)); 3657 3657 Tmpl.ab[0] = 0xff; /* jmp [GOT-entry wrt RIP] */ 3658 3658 Tmpl.ab[1] = 0x25;
Note:
See TracChangeset
for help on using the changeset viewer.