Ignore:
Timestamp:
Aug 27, 2007, 9:54:05 PM (18 years ago)
Author:
bird
Message:

Use the new type system.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kStuff/kLdr/kLdrModMachO.c

    r3537 r3567  
    7070    KLDRFOFF                offFile;
    7171    /** The number of fixups. */
    72     uint32_t                cFixups;
     72    KU32                    cFixups;
    7373    /** The array of fixups. (lazy loaded) */
    7474    macho_relocation_info_t *paFixups;
     
    7777    KLDRFOFF                offFixups;
    7878    /** Mach-O section flags. */
    79     uint32_t                fFlags;
     79    KU32                    fFlags;
    8080    /** kLdr segment index. */
    81     uint32_t                iSegment;
     81    KU32                    iSegment;
    8282    /** Pointer to the Mach-O section structure. */
    8383    void                   *pvMachoSection;
     
    9292{
    9393    /** The number of sections in the segment. */
    94     uint32_t                cSections;
     94    KU32                    cSections;
    9595    /** Pointer to the sections belonging to this segment.
    9696     * The array resides in the big memory chunk allocated for
     
    122122
    123123    /** Pointer to the load commands. (endian converted) */
    124     uint8_t                *pbLoadCommands;
     124    KU8                    *pbLoadCommands;
    125125    /** The Mach-O header. (endian converted)
    126126     * @remark The reserved field is only valid for real 64-bit headers. */
     
    130130    KLDRFOFF                offSymbols;
    131131    /** The number of symbols. */
    132     uint32_t                cSymbols;
     132    KU32                    cSymbols;
    133133    /** The pointer to the loaded symbol table. */
    134134    void                   *pvaSymbols;
     
    136136    KLDRFOFF                offStrings;
    137137    /** The size of the of the string table. */
    138     uint32_t                cchStrings;
     138    KU32                    cchStrings;
    139139    /** Pointer to the loaded string table. */
    140140    char                   *pchStrings;
    141141
    142142    /** The number of sections. */
    143     uint32_t                cSections;
     143    KU32                    cSections;
    144144    /** Pointer to the section array running in parallel to the Mach-O one. */
    145145    PKLDRMODMACHOSECT       paSections;
     
    155155*******************************************************************************/
    156156#if 0
    157 static int32_t kldrModMachONumberOfImports(PKLDRMOD pMod, const void *pvBits);
     157static KI32 kldrModMachONumberOfImports(PKLDRMOD pMod, const void *pvBits);
    158158#endif
    159159static int kldrModMachORelocateBits(PKLDRMOD pMod, void *pvBits, KLDRADDR NewBaseAddress, KLDRADDR OldBaseAddress,
     
    161161
    162162static int  kldrModMachODoCreate(PKLDRRDR pRdr, PKLDRMODMACHO *ppMod);
    163 static int  kldrModMachOPreParseLoadCommands(uint8_t *pbLoadCommands, const mach_header_32_t *pHdr, PKLDRRDR pRdr,
    164                                              uint32_t *pcSegments, uint32_t *pcSections, uint32_t *pcbStringPool);
    165 static int  kldrModMachOParseLoadCommands(PKLDRMODMACHO pModMachO, char *pbStringPool, uint32_t cbStringPool);
     163static int  kldrModMachOPreParseLoadCommands(KU8 *pbLoadCommands, const mach_header_32_t *pHdr, PKLDRRDR pRdr,
     164                                             KU32 *pcSegments, KU32 *pcSections, KU32 *pcbStringPool);
     165static int  kldrModMachOParseLoadCommands(PKLDRMODMACHO pModMachO, char *pbStringPool, KU32 cbStringPool);
    166166static int  kldrModMachOAdjustBaseAddress(PKLDRMODMACHO pModMachO, PKLDRADDR pBaseAddress);
    167167
    168168/*static int  kldrModMachOLoadLoadCommands(PKLDRMODMACHO pModMachO);*/
    169169static int  kldrModMachOLoadObjSymTab(PKLDRMODMACHO pModMachO);
    170 static int  kldrModMachOLoadFixups(PKLDRMODMACHO pModMachO, KLDRFOFF offFixups, uint32_t cFixups, macho_relocation_info_t **ppaFixups);
     170static int  kldrModMachOLoadFixups(PKLDRMODMACHO pModMachO, KLDRFOFF offFixups, KU32 cFixups, macho_relocation_info_t **ppaFixups);
    171171static int  kldrModMachOMapVirginBits(PKLDRMODMACHO pModMachO);
    172172
    173 static int  kldrModMachODoQuerySymbol32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, uint32_t cSyms, const char *pchStrings,
    174                                            uint32_t cchStrings, KLDRADDR BaseAddress, uint32_t iSymbol, const char *pchSymbol,
    175                                            size_t cchSymbol, PKLDRADDR puValue, uint32_t *pfKind);
    176 static int  kldrModMachODoEnumSymbols32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, uint32_t cSyms,
    177                                            const char *pchStrings, uint32_t cchStrings, KLDRADDR BaseAddress,
    178                                            uint32_t fFlags, PFNKLDRMODENUMSYMS pfnCallback, void *pvUser);
     173static int  kldrModMachODoQuerySymbol32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, KU32 cSyms, const char *pchStrings,
     174                                           KU32 cchStrings, KLDRADDR BaseAddress, KU32 iSymbol, const char *pchSymbol,
     175                                           KSIZE cchSymbol, PKLDRADDR puValue, KU32 *pfKind);
     176static int  kldrModMachODoEnumSymbols32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, KU32 cSyms,
     177                                           const char *pchStrings, KU32 cchStrings, KLDRADDR BaseAddress,
     178                                           KU32 fFlags, PFNKLDRMODENUMSYMS pfnCallback, void *pvUser);
    179179static int  kldrModMachOObjDoImports(PKLDRMODMACHO pModMachO, PFNKLDRMODGETIMPORT pfnGetImport, void *pvUser);
    180180static int  kldrModMachOObjDoFixups(PKLDRMODMACHO pModMachO, void *pvMapping, KLDRADDR NewBaseAddress);
    181 static int  kldrModMachOFixupSectionGeneric32Bit(PKLDRMODMACHO pModMachO, uint8_t *pbSectBits, PKLDRMODMACHOSECT pFixupSect,
    182                                                  macho_nlist_32_t *paSyms, uint32_t cSyms, KLDRADDR NewBaseAddress);
     181static int  kldrModMachOFixupSectionGeneric32Bit(PKLDRMODMACHO pModMachO, KU8 *pbSectBits, PKLDRMODMACHOSECT pFixupSect,
     182                                                 macho_nlist_32_t *paSyms, KU32 cSyms, KLDRADDR NewBaseAddress);
    183183
    184184/*static int  kldrModMachODoFixups(PKLDRMODMACHO pModMachO, void *pvMapping, KLDRADDR NewBaseAddress, KLDRADDR OldBaseAddress);
     
    235235    PKLDRMODMACHO pModMachO;
    236236    PKLDRMOD pMod;
    237     uint8_t *pbLoadCommands;
    238     uint32_t cSegments;
    239     uint32_t cSections;
    240     uint32_t cbStringPool;
    241     size_t cchFilename;
    242     size_t cb;
     237    KU8 *pbLoadCommands;
     238    KU32 cSegments;
     239    KU32 cSections;
     240    KU32 cbStringPool;
     241    KSIZE cchFilename;
     242    KSIZE cb;
    243243    int rc;
    244244    *ppModMachO = NULL;
     
    311311
    312312    /* KLDRMOD */
    313     pMod = (PKLDRMOD)((uint8_t *)pModMachO + KLDR_ALIGN_Z(  KLDR_OFFSETOF(KLDRMODMACHO, aSegments[cSegments])
    314                                                           + sizeof(KLDRMODMACHOSECT) * cSections, 16));
     313    pMod = (PKLDRMOD)((KU8 *)pModMachO + KLDR_ALIGN_Z(  KLDR_OFFSETOF(KLDRMODMACHO, aSegments[cSegments])
     314                                                      + sizeof(KLDRMODMACHOSECT) * cSections, 16));
    315315    pMod->pvData = pModMachO;
    316316    pMod->pRdr = pRdr;
     
    430430 * @param   pcbStringPool   Where to store the string pool size.
    431431 */
    432 static int  kldrModMachOPreParseLoadCommands(uint8_t *pbLoadCommands, const mach_header_32_t *pHdr, PKLDRRDR pRdr,
    433                                              uint32_t *pcSegments, uint32_t *pcSections, uint32_t *pcbStringPool)
     432static int  kldrModMachOPreParseLoadCommands(KU8 *pbLoadCommands, const mach_header_32_t *pHdr, PKLDRRDR pRdr,
     433                                             KU32 *pcSegments, KU32 *pcSections, KU32 *pcbStringPool)
    434434{
    435435    union
    436436    {
    437         uint8_t              *pb;
     437        KU8                  *pb;
    438438        load_command_t       *pLoadCmd;
    439439        segment_command_32_t *pSeg32;
     
    443443        uuid_command_t       *pUuid;
    444444    } u;
    445     const uint64_t cbFile = kLdrRdrSize(pRdr);
    446     uint32_t cSegments = 0;
    447     uint32_t cSections = 0;
    448     uint32_t cbStringPool = 0;
    449     uint32_t cLeft = pHdr->ncmds;
    450     uint32_t cbLeft = pHdr->sizeofcmds;
    451     uint8_t *pb = pbLoadCommands;
     445    const KU64 cbFile = kLdrRdrSize(pRdr);
     446    KU32 cSegments = 0;
     447    KU32 cSections = 0;
     448    KU32 cbStringPool = 0;
     449    KU32 cLeft = pHdr->ncmds;
     450    KU32 cbLeft = pHdr->sizeofcmds;
     451    KU8 *pb = pbLoadCommands;
    452452    int cSegmentCommands = 0;
    453453    int cSymbolTabs = 0;
     
    487487                section_32_t *pSect;
    488488                section_32_t *pFirstSect;
    489                 uint32_t cSectionsLeft;
     489                KU32 cSectionsLeft;
    490490
    491491                /* convert and verify*/
     
    509509                if (    u.pSeg32->filesize
    510510                    &&  (   u.pSeg32->fileoff > cbFile
    511                          || (uint64_t)u.pSeg32->fileoff + u.pSeg32->filesize > cbFile))
     511                         || (KU64)u.pSeg32->fileoff + u.pSeg32->filesize > cbFile))
    512512                    return KLDR_ERR_MACHO_BAD_LOAD_COMMAND;
    513513                if (!u.pSeg32->filesize && u.pSeg32->fileoff)
     
    594594                    if (    fFileBits
    595595                        &&  (   pSect->offset > cbFile
    596                              || (uint64_t)pSect->offset + pSect->size > cbFile))
     596                             || (KU64)pSect->offset + pSect->size > cbFile))
    597597                        return KLDR_ERR_MACHO_BAD_SECTION;
    598598                    if (!fFileBits && pSect->offset)
     
    602602                    if (    pSect->nreloc
    603603                        &&  (   pSect->reloff > cbFile
    604                              || (uint64_t)pSect->reloff + (KLDRFOFF)pSect->nreloc * sizeof(macho_relocation_info_t)) > cbFile)
     604                             || (KU64)pSect->reloff + (KLDRFOFF)pSect->nreloc * sizeof(macho_relocation_info_t)) > cbFile)
    605605                        return KLDR_ERR_MACHO_BAD_SECTION;
    606606
     
    624624                                /* verify that the linker/assembler has ordered sections correctly. */
    625625                                section_32_t *pCur = (pSect - 2);
    626                                 while ((uintptr_t)pCur >= (uintptr_t)pFirstSect)
     626                                while ((KUPTR)pCur >= (KUPTR)pFirstSect)
    627627                                {
    628628                                    if (!kLdrHlpStrNComp(pCur->segname, pSect->segname, sizeof(pSect->segname)))
     
    656656            case LC_SYMTAB:
    657657            {
    658                 size_t cbSym;
     658                KSIZE cbSym;
    659659                if (fConvertEndian)
    660660                {
     
    671671                      : sizeof(macho_nlist_64_t);
    672672                if (    u.pSymTab->symoff >= cbFile
    673                     ||  (uint64_t)u.pSymTab->symoff + u.pSymTab->nsyms * cbSym > kLdrRdrSize(pRdr))
     673                    ||  (KU64)u.pSymTab->symoff + u.pSymTab->nsyms * cbSym > kLdrRdrSize(pRdr))
    674674                    return KLDR_ERR_MACHO_BAD_LOAD_COMMAND;
    675675                if (    u.pSymTab->stroff >= cbFile
    676                     ||  (uint64_t)u.pSymTab->stroff + u.pSymTab->strsize > cbFile)
     676                    ||  (KU64)u.pSymTab->stroff + u.pSymTab->strsize > cbFile)
    677677                    return KLDR_ERR_MACHO_BAD_LOAD_COMMAND;
    678678
     
    692692            case LC_UNIXTHREAD:
    693693            {
    694                 uint32_t *pu32 = (uint32_t *)(u.pb + sizeof(load_command_t));
    695                 uint32_t cItemsLeft = (u.pThread->cmdsize - sizeof(load_command_t)) / sizeof(uint32_t);
     694                KU32 *pu32 = (KU32 *)(u.pb + sizeof(load_command_t));
     695                KU32 cItemsLeft = (u.pThread->cmdsize - sizeof(load_command_t)) / sizeof(KU32);
    696696                while (cItemsLeft)
    697697                {
    698                     /* convert & verify header items ([0] == flavor, [1] == uint32_t count). */
     698                    /* convert & verify header items ([0] == flavor, [1] == KU32 count). */
    699699                    if (cItemsLeft < 2)
    700700                        return KLDR_ERR_MACHO_BAD_LOAD_COMMAND;
     
    787787 * @param   cbStringPool    The size of the string pool.
    788788 */
    789 static int  kldrModMachOParseLoadCommands(PKLDRMODMACHO pModMachO, char *pbStringPool, uint32_t cbStringPool)
     789static int  kldrModMachOParseLoadCommands(PKLDRMODMACHO pModMachO, char *pbStringPool, KU32 cbStringPool)
    790790{
    791791    union
    792792    {
    793         const uint8_t              *pb;
     793        const KU8                  *pb;
    794794        const load_command_t       *pLoadCmd;
    795795        const segment_command_32_t *pSeg32;
     
    797797        const symtab_command_t     *pSymTab;
    798798    } u;
    799     uint32_t cLeft = pModMachO->Hdr.ncmds;
    800     uint32_t cbLeft = pModMachO->Hdr.sizeofcmds;
    801     const uint8_t *pb = pModMachO->pbLoadCommands;
     799    KU32 cLeft = pModMachO->Hdr.ncmds;
     800    KU32 cbLeft = pModMachO->Hdr.sizeofcmds;
     801    const KU8 *pb = pModMachO->pbLoadCommands;
    802802    int fFirstSegment = 1;
    803803    PKLDRSEG pSeg = &pModMachO->pMod->aSegments[0];
    804804    PKLDRMODMACHOSEG pSegExtra = &pModMachO->aSegments[0];
    805805    PKLDRMODMACHOSECT pSectExtra = pModMachO->paSections;
    806     const uint32_t cSegments = pModMachO->pMod->cSegments;
    807     uint32_t i;
     806    const KU32 cSegments = pModMachO->pMod->cSegments;
     807    KU32 i;
    808808
    809809    while (cLeft-- > 0)
     
    822822                section_32_t *pSect;
    823823                section_32_t *pFirstSect;
    824                 uint32_t cSectionsLeft;
     824                KU32 cSectionsLeft;
    825825
    826826                pModMachO->LinkAddress = u.pSeg32->vmaddr;
     
    867867                                pSeg->pvUser = NULL;
    868868                                pSeg->pchName = pbStringPool;
    869                                 pSeg->cchName = (uint32_t)kLdrHlpStrNLen(&pSect->segname[0], sizeof(pSect->sectname));
     869                                pSeg->cchName = (KU32)kLdrHlpStrNLen(&pSect->segname[0], sizeof(pSect->sectname));
    870870                                kLdrHlpMemCopy(pbStringPool, &pSect->segname[0], pSeg->cchName);
    871871                                pbStringPool += pSeg->cchName;
     
    967967        {
    968968            KLDRADDR cb1;
    969             size_t cb2;
     969            KSIZE cb2;
    970970
    971971            for (i = 0; i < cSegments - 1; i++)
    972972            {
    973973                cb1 = pSeg[i + 1].LinkAddress - pSeg[i].LinkAddress;
    974                 cb2 = (size_t)cb1;
    975                 pSeg[i].cbMapped = cb2 == cb1 ? cb2 : ~(size_t)0;
     974                cb2 = (KSIZE)cb1;
     975                pSeg[i].cbMapped = cb2 == cb1 ? cb2 : ~(KSIZE)0;
    976976            }
    977977            cb1 = KLDR_ALIGN_ADDR(pSeg[i].cb, pSeg[i].Alignment);
    978             cb2 = (size_t)cb1;
    979             pSeg[i].cbMapped = cb2 == cb1 ? cb2 : ~(size_t)0;
     978            cb2 = (KSIZE)cb1;
     979            pSeg[i].cbMapped = cb2 == cb1 ? cb2 : ~(KSIZE)0;
    980980
    981981            pModMachO->cbImage = pSeg[i].RVA + cb1;
     
    993993    PKLDRMODMACHO pModMachO = (PKLDRMODMACHO)pMod->pvData;
    994994    int rc = 0;
    995     uint32_t i, j;
     995    KU32 i, j;
    996996    KLDRMODMACHO_ASSERT(!pModMachO->pvMapping);
    997997
     
    10491049
    10501050/** @copydoc kLdrModQuerySymbol */
    1051 static int kldrModMachOQuerySymbol(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, uint32_t iSymbol,
    1052                                    const char *pchSymbol, size_t cchSymbol, const char *pszVersion,
    1053                                    PFNKLDRMODGETIMPORT pfnGetForwarder, void *pvUser, PKLDRADDR puValue, uint32_t *pfKind)
     1051static int kldrModMachOQuerySymbol(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, KU32 iSymbol,
     1052                                   const char *pchSymbol, KSIZE cchSymbol, const char *pszVersion,
     1053                                   PFNKLDRMODGETIMPORT pfnGetForwarder, void *pvUser, PKLDRADDR puValue, KU32 *pfKind)
    10541054{
    10551055    PKLDRMODMACHO pModMachO = (PKLDRMODMACHO)pMod->pvData;
     
    11151115 * @param   pfKind      See kLdrModQuerySymbol.
    11161116 */
    1117 static int kldrModMachODoQuerySymbol32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, uint32_t cSyms, const char *pchStrings,
    1118                                           uint32_t cchStrings, KLDRADDR BaseAddress, uint32_t iSymbol, const char *pchSymbol, size_t cchSymbol,
    1119                                           PKLDRADDR puValue, uint32_t *pfKind)
     1117static int kldrModMachODoQuerySymbol32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, KU32 cSyms, const char *pchStrings,
     1118                                          KU32 cchStrings, KLDRADDR BaseAddress, KU32 iSymbol, const char *pchSymbol, KSIZE cchSymbol,
     1119                                          PKLDRADDR puValue, KU32 *pfKind)
    11201120{
    11211121    /*
     
    11301130
    11311131        /* external symbols are usually at the end, so search the other way. */
    1132         for (iSymbol = cSyms - 1; iSymbol != UINT32_MAX; iSymbol--)
     1132        for (iSymbol = cSyms - 1; iSymbol != KU32_MAX; iSymbol--)
    11331133        {
    11341134            const char *psz;
     
    11471147            if (!paSyms[iSymbol].n_un.n_strx)
    11481148                continue;
    1149             if ((uint32_t)paSyms[iSymbol].n_un.n_strx >= cchStrings)
     1149            if ((KU32)paSyms[iSymbol].n_un.n_strx >= cchStrings)
    11501150                continue;
    11511151            psz = &pchStrings[paSyms[iSymbol].n_un.n_strx];
     
    11581158            break;
    11591159        }
    1160         if (iSymbol == UINT32_MAX)
     1160        if (iSymbol == KU32_MAX)
    11611161            return KLDR_ERR_SYMBOL_NOT_FOUND;
    11621162    }
     
    11911191            PKLDRMODMACHOSECT pSect;
    11921192            KLDRADDR RVA;
    1193             if ((uint32_t)(paSyms[iSymbol].n_sect - 1) >= pModMachO->cSections)
     1193            if ((KU32)(paSyms[iSymbol].n_sect - 1) >= pModMachO->cSections)
    11941194                return KLDR_ERR_MACHO_BAD_SYMBOL;
    11951195            pSect = &pModMachO->paSections[paSyms[iSymbol].n_sect - 1];
     
    12281228/** @copydoc kLdrModEnumSymbols */
    12291229static int kldrModMachOEnumSymbols(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress,
    1230                                    uint32_t fFlags, PFNKLDRMODENUMSYMS pfnCallback, void *pvUser)
     1230                                   KU32 fFlags, PFNKLDRMODENUMSYMS pfnCallback, void *pvUser)
    12311231{
    12321232    PKLDRMODMACHO pModMachO = (PKLDRMODMACHO)pMod->pvData;
     
    12801280 * @param   pvUser      See kLdrModEnumSymbols.
    12811281 */
    1282 static int kldrModMachODoEnumSymbols32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, uint32_t cSyms,
    1283                                           const char *pchStrings, uint32_t cchStrings, KLDRADDR BaseAddress,
    1284                                           uint32_t fFlags, PFNKLDRMODENUMSYMS pfnCallback, void *pvUser)
    1285 {
    1286     const uint32_t fKindBase = pModMachO->Hdr.magic == IMAGE_MACHO32_SIGNATURE
     1282static int kldrModMachODoEnumSymbols32Bit(PKLDRMODMACHO pModMachO, const macho_nlist_32_t *paSyms, KU32 cSyms,
     1283                                          const char *pchStrings, KU32 cchStrings, KLDRADDR BaseAddress,
     1284                                          KU32 fFlags, PFNKLDRMODENUMSYMS pfnCallback, void *pvUser)
     1285{
     1286    const KU32 fKindBase = pModMachO->Hdr.magic == IMAGE_MACHO32_SIGNATURE
    12871287                            || pModMachO->Hdr.magic == IMAGE_MACHO32_SIGNATURE_OE
    12881288                             ? KLDRSYMKIND_32BIT : KLDRSYMKIND_64BIT;
    1289     uint32_t iSym;
     1289    KU32 iSym;
    12901290    int rc;
    12911291
     
    12951295    for (iSym = 0; iSym < cSyms; iSym++)
    12961296    {
    1297         uint32_t fKind;
     1297        KU32 fKind;
    12981298        KLDRADDR uValue;
    12991299        const char *psz;
    1300         size_t cch;
     1300        KSIZE cch;
    13011301
    13021302        /* Skip debug symbols and undefined symbols. */
     
    13221322
    13231323        /* name */
    1324         if ((uint32_t)paSyms[iSym].n_un.n_strx >= cchStrings)
     1324        if ((KU32)paSyms[iSym].n_un.n_strx >= cchStrings)
    13251325            return KLDR_ERR_MACHO_BAD_SYMBOL;
    13261326        psz = &pchStrings[paSyms[iSym].n_un.n_strx];
     
    13381338            {
    13391339                PKLDRMODMACHOSECT pSect;
    1340                 if ((uint32_t)(paSyms[iSym].n_sect - 1) >= pModMachO->cSections)
     1340                if ((KU32)(paSyms[iSym].n_sect - 1) >= pModMachO->cSections)
    13411341                    return KLDR_ERR_MACHO_BAD_SYMBOL;
    13421342                pSect = &pModMachO->paSections[paSyms[iSym].n_sect - 1];
     
    13791379
    13801380/** @copydoc kLdrModGetImport */
    1381 static int kldrModMachOGetImport(PKLDRMOD pMod, const void *pvBits, uint32_t iImport, char *pszName, size_t cchName)
     1381static int kldrModMachOGetImport(PKLDRMOD pMod, const void *pvBits, KU32 iImport, char *pszName, KSIZE cchName)
    13821382{
    13831383    PKLDRMODMACHO pModMachO = (PKLDRMODMACHO)pMod->pvData;
     
    13911391
    13921392/** @copydoc kLdrModNumberOfImports */
    1393 static int32_t kldrModMachONumberOfImports(PKLDRMOD pMod, const void *pvBits)
     1393static KI32 kldrModMachONumberOfImports(PKLDRMOD pMod, const void *pvBits)
    13941394{
    13951395    PKLDRMODMACHO pModMachO = (PKLDRMODMACHO)pMod->pvData;
     
    14491449    PKLDRMODMACHO                      pModMachO = (PKLDRMODMACHO)pMod->pvData;
    14501450    const IMAGE_DEBUG_DIRECTORY    *pDbgDir;
    1451     uint32_t                        iDbgInfo;
    1452     uint32_t                        cb;
     1451    KU32                            iDbgInfo;
     1452    KU32                            cb;
    14531453    int                             rc;
    14541454
     
    15431543    PKLDRMODMACHO pModMachO = (PKLDRMODMACHO)pMod->pvData;
    15441544    unsigned fFixed;
    1545     uint32_t i;
     1545    KU32 i;
    15461546    void *pvBase;
    15471547    int rc;
     
    15631563    else
    15641564    {
    1565         pvBase = (void *)(uintptr_t)pMod->aSegments[0].LinkAddress;
    1566         if ((uintptr_t)pvBase != pMod->aSegments[0].LinkAddress)
     1565        pvBase = (void *)(KUPTR)pMod->aSegments[0].LinkAddress;
     1566        if ((KUPTR)pvBase != pMod->aSegments[0].LinkAddress)
    15671567            return KLDR_ERR_ADDRESS_OVERFLOW;
    15681568    }
     
    15841584    {
    15851585        if (pMod->aSegments[i].RVA != NIL_KLDRADDR)
    1586             pMod->aSegments[i].MapAddress = (uintptr_t)pvBase + (uintptr_t)pMod->aSegments[i].RVA;
     1586            pMod->aSegments[i].MapAddress = (KUPTR)pvBase + (KUPTR)pMod->aSegments[i].RVA;
    15871587    }
    15881588    pModMachO->pvMapping = pvBase;
     
    15961596{
    15971597    PKLDRMODMACHO pModMachO = (PKLDRMODMACHO)pMod->pvData;
    1598     uint32_t i;
     1598    KU32 i;
    15991599    int rc;
    16001600
     
    16911691     * Resolve imports and apply base relocations.
    16921692     */
    1693     rc = kldrModMachORelocateBits(pMod, pModMachO->pvMapping, (uintptr_t)pModMachO->pvMapping, pModMachO->LinkAddress,
     1693    rc = kldrModMachORelocateBits(pMod, pModMachO->pvMapping, (KUPTR)pModMachO->pvMapping, pModMachO->LinkAddress,
    16941694                                  pfnGetImport, pvUser);
    16951695
     
    17171717static int  kldrModMachOObjDoImports(PKLDRMODMACHO pModMachO, PFNKLDRMODGETIMPORT pfnGetImport, void *pvUser)
    17181718{
    1719     const uint32_t cSyms = pModMachO->cSymbols;
    1720     uint32_t iSym;
     1719    const KU32 cSyms = pModMachO->cSymbols;
     1720    KU32 iSym;
    17211721    int rc;
    17221722
     
    17451745            {
    17461746                const char *pszSymbol;
    1747                 size_t cchSymbol;
    1748                 uint32_t fKind = KLDRSYMKIND_REQ_FLAT;
     1747                KSIZE cchSymbol;
     1748                KU32 fKind = KLDRSYMKIND_REQ_FLAT;
    17491749                KLDRADDR Value;
    17501750
     
    17541754
    17551755                /* Get the symbol name and try resolve it. */
    1756                 if ((uint32_t)paSyms[iSym].n_un.n_strx >= pModMachO->cchStrings)
     1756                if ((KU32)paSyms[iSym].n_un.n_strx >= pModMachO->cchStrings)
    17571757                    return KLDR_ERR_MACHO_BAD_SYMBOL;
    17581758                pszSymbol = &pModMachO->pchStrings[paSyms[iSym].n_un.n_strx];
     
    17691769
    17701770                /* Update the symbol. */
    1771                 paSyms[iSym].n_value = (uint32_t)Value;
     1771                paSyms[iSym].n_value = (KU32)Value;
    17721772                if (paSyms[iSym].n_value != Value)
    17731773                {
     
    17961796            {
    17971797                const char *pszSymbol;
    1798                 size_t cchSymbol;
    1799                 uint32_t fKind = KLDRSYMKIND_REQ_FLAT;
     1798                KSIZE cchSymbol;
     1799                KU32 fKind = KLDRSYMKIND_REQ_FLAT;
    18001800                KLDRADDR Value;
    18011801
     
    18501850static int  kldrModMachOObjDoFixups(PKLDRMODMACHO pModMachO, void *pvMapping, KLDRADDR NewBaseAddress)
    18511851{
    1852     uint32_t iSeg;
     1852    KU32 iSeg;
    18531853    int rc;
    18541854
     
    18671867    {
    18681868        PKLDRMODMACHOSEG pSeg = &pModMachO->aSegments[iSeg];
    1869         uint32_t iSect;
     1869        KU32 iSect;
    18701870
    18711871        for (iSect = 0; iSect < pSeg->cSections; iSect++)
    18721872        {
    18731873            PKLDRMODMACHOSECT pSect = &pSeg->paSections[iSect];
    1874             uint8_t *pbSectBits;
     1874            KU8 *pbSectBits;
    18751875
    18761876            /* skip sections without fixups. */
     
    18891889             * Apply the fixups.
    18901890             */
    1891             pbSectBits = (uint8_t *)pvMapping + (uintptr_t)pSect->RVA;
     1891            pbSectBits = (KU8 *)pvMapping + (KUPTR)pSect->RVA;
    18921892            if (pModMachO->Hdr.magic == IMAGE_MACHO32_SIGNATURE) /** @todo this aint right. */
    18931893                rc = kldrModMachOFixupSectionGeneric32Bit(pModMachO, pbSectBits, pSect,
     
    19151915 * @param   NewBaseAddress  The new base image address.
    19161916 */
    1917 static int  kldrModMachOFixupSectionGeneric32Bit(PKLDRMODMACHO pModMachO, uint8_t *pbSectBits, PKLDRMODMACHOSECT pFixupSect,
    1918                                                  macho_nlist_32_t *paSyms, uint32_t cSyms, KLDRADDR NewBaseAddress)
     1917static int  kldrModMachOFixupSectionGeneric32Bit(PKLDRMODMACHO pModMachO, KU8 *pbSectBits, PKLDRMODMACHOSECT pFixupSect,
     1918                                                 macho_nlist_32_t *paSyms, KU32 cSyms, KLDRADDR NewBaseAddress)
    19191919{
    19201920    const macho_relocation_info_t *paFixups = pFixupSect->paFixups;
    1921     const uint32_t cFixups = pFixupSect->cFixups;
    1922     size_t cbSectBits = (size_t)pFixupSect->cb;
    1923     const uint8_t *pbSectVirginBits;
    1924     uint32_t iFixup;
     1921    const KU32 cFixups = pFixupSect->cFixups;
     1922    KSIZE cbSectBits = (KSIZE)pFixupSect->cb;
     1923    const KU8 *pbSectVirginBits;
     1924    KU32 iFixup;
    19251925    KLDRPU uFixVirgin;
    19261926    KLDRPU uFix;
     
    19361936        if (rc)
    19371937            return rc;
    1938         pbSectVirginBits = (const uint8_t *)pModMachO->pvBits + pFixupSect->offFile;
     1938        pbSectVirginBits = (const KU8 *)pModMachO->pvBits + pFixupSect->offFile;
    19391939    }
    19401940    else
     
    19561956        {
    19571957            /* sanity */
    1958             if ((uint32_t)Fixup.r.r_address >= cbSectBits)
     1958            if ((KU32)Fixup.r.r_address >= cbSectBits)
    19591959                return KLDR_ERR_BAD_FIXUP;
    19601960
    19611961            /* calc fixup addresses. */
    19621962            uFix.pv = pbSectBits + Fixup.r.r_address;
    1963             uFixVirgin.pv = pbSectVirginBits ? (uint8_t *)pbSectVirginBits + Fixup.r.r_address : 0;
     1963            uFixVirgin.pv = pbSectVirginBits ? (KU8 *)pbSectVirginBits + Fixup.r.r_address : 0;
    19641964
    19651965            /*
     
    19941994                    {
    19951995                        PKLDRMODMACHOSECT pSymSect;
    1996                         if ((uint32_t)pSym->n_sect - 1 > pModMachO->cSections)
     1996                        if ((KU32)pSym->n_sect - 1 > pModMachO->cSections)
    19971997                            return KLDR_ERR_MACHO_BAD_SYMBOL;
    19981998                        pSymSect = &pModMachO->paSections[pSym->n_sect - 1];
     
    20322032        {
    20332033            PKLDRMODMACHOSECT pSymSect;
    2034             uint32_t iSymSect;
     2034            KU32 iSymSect;
    20352035            KLDRADDR Value;
    20362036
    20372037            /* sanity */
    20382038            KLDRMODMACHO_ASSERT(Fixup.s.r_scattered);
    2039             if ((uint32_t)Fixup.s.r_address >= cbSectBits)
     2039            if ((KU32)Fixup.s.r_address >= cbSectBits)
    20402040                return KLDR_ERR_BAD_FIXUP;
    20412041
    20422042            /* calc fixup addresses. */
    20432043            uFix.pv = pbSectBits + Fixup.s.r_address;
    2044             uFixVirgin.pv = pbSectVirginBits ? (uint8_t *)pbSectVirginBits + Fixup.s.r_address : 0;
     2044            uFixVirgin.pv = pbSectVirginBits ? (KU8 *)pbSectVirginBits + Fixup.s.r_address : 0;
    20452045
    20462046            /*
     
    20922092            switch (Fixup.r.r_length)
    20932093            {
    2094                 case 0: *uFix.pu8  = (uint8_t)SymAddr; break;
    2095                 case 1: *uFix.pu16 = (uint16_t)SymAddr; break;
    2096                 case 2: *uFix.pu32 = (uint32_t)SymAddr; break;
    2097                 case 3: *uFix.pu64 = (uint64_t)SymAddr; break;
     2094                case 0: *uFix.pu8  = (KU8)SymAddr; break;
     2095                case 1: *uFix.pu16 = (KU16)SymAddr; break;
     2096                case 2: *uFix.pu32 = (KU32)SymAddr; break;
     2097                case 3: *uFix.pu64 = (KU64)SymAddr; break;
    20982098            }
    20992099        }
     
    21232123        &&  pModMachO->cSymbols)
    21242124    {
    2125         size_t cbSyms;
    2126         size_t cbSym;
     2125        KSIZE cbSyms;
     2126        KSIZE cbSym;
    21272127        void *pvSyms;
    21282128        void *pvStrings;
     
    21632163                    if (pModMachO->Hdr.magic == IMAGE_MACHO32_SIGNATURE_OE)
    21642164                    {
    2165                         uint32_t cLeft = pModMachO->cSymbols;
     2165                        KU32 cLeft = pModMachO->cSymbols;
    21662166                        macho_nlist_32_t *pSym = (macho_nlist_32_t *)pvSyms;
    21672167                        while (cLeft-- > 0)
    21682168                        {
    21692169                            pSym->n_un.n_strx = KLDR_E2E_U32(pSym->n_un.n_strx);
    2170                             pSym->n_desc = (int16_t)KLDR_E2E_U16(pSym->n_desc);
     2170                            pSym->n_desc = (KI16)KLDR_E2E_U16(pSym->n_desc);
    21712171                            pSym->n_value = KLDR_E2E_U32(pSym->n_value);
    21722172                            pSym++;
     
    21752175                    else if (pModMachO->Hdr.magic == IMAGE_MACHO64_SIGNATURE_OE)
    21762176                    {
    2177                         uint32_t cLeft = pModMachO->cSymbols;
     2177                        KU32 cLeft = pModMachO->cSymbols;
    21782178                        macho_nlist_64_t *pSym = (macho_nlist_64_t *)pvSyms;
    21792179                        while (cLeft-- > 0)
    21802180                        {
    21812181                            pSym->n_un.n_strx = KLDR_E2E_U32(pSym->n_un.n_strx);
    2182                             pSym->n_desc = (int16_t)KLDR_E2E_U16(pSym->n_desc);
     2182                            pSym->n_desc = (KI16)KLDR_E2E_U16(pSym->n_desc);
    21832183                            pSym->n_value = KLDR_E2E_U64(pSym->n_value);
    21842184                            pSym++;
     
    22102210 * @param   ppaFixups       Where to put the pointer to the allocated fixup array.
    22112211 */
    2212 static int  kldrModMachOLoadFixups(PKLDRMODMACHO pModMachO, KLDRFOFF offFixups, uint32_t cFixups, macho_relocation_info_t **ppaFixups)
     2212static int  kldrModMachOLoadFixups(PKLDRMODMACHO pModMachO, KLDRFOFF offFixups, KU32 cFixups, macho_relocation_info_t **ppaFixups)
    22132213{
    22142214    macho_relocation_info_t *paFixups;
    2215     size_t cbFixups;
     2215    KSIZE cbFixups;
    22162216    int rc;
    22172217
     
    22342234            ||  pModMachO->Hdr.magic == IMAGE_MACHO64_SIGNATURE_OE)
    22352235        {
    2236             uint32_t iFixup;
     2236            KU32 iFixup;
    22372237            for (iFixup = 0; iFixup < cFixups; iFixup++)
    22382238            {
    2239                 uint32_t *pu32 = (uint32_t *)&paFixups[iFixup];
     2239                KU32 *pu32 = (KU32 *)&paFixups[iFixup];
    22402240                pu32[0] = KLDR_E2E_U32(pu32[0]);
    22412241                pu32[1] = KLDR_E2E_U32(pu32[1]);
     
    22652265
    22662266/** @copydoc kLdrModCallInit */
    2267 static int kldrModMachOCallInit(PKLDRMOD pMod, uintptr_t uHandle)
     2267static int kldrModMachOCallInit(PKLDRMOD pMod, KUPTR uHandle)
    22682268{
    22692269    /* later */
     
    22732273
    22742274/** @copydoc kLdrModCallTerm */
    2275 static int kldrModMachOCallTerm(PKLDRMOD pMod, uintptr_t uHandle)
     2275static int kldrModMachOCallTerm(PKLDRMOD pMod, KUPTR uHandle)
    22762276{
    22772277    /* later */
     
    22812281
    22822282/** @copydoc kLdrModCallThread */
    2283 static int kldrModMachOCallThread(PKLDRMOD pMod, uintptr_t uHandle, unsigned fAttachingOrDetaching)
     2283static int kldrModMachOCallThread(PKLDRMOD pMod, KUPTR uHandle, unsigned fAttachingOrDetaching)
    22842284{
    22852285    /* Relevant for Mach-O? */
     
    23002300{
    23012301    PKLDRMODMACHO  pModMachO = (PKLDRMODMACHO)pMod->pvData;
    2302     uint32_t    i;
     2302    KU32        i;
    23032303    int         rc;
    23042304
     
    23062306     * Zero the entire buffer first to simplify things.
    23072307     */
    2308     kLdrHlpMemSet(pvBits, 0, (size_t)pModMachO->cbImage);
     2308    kLdrHlpMemSet(pvBits, 0, (KSIZE)pModMachO->cbImage);
    23092309
    23102310    /*
     
    23252325                continue;
    23262326            rc = kLdrRdrRead(pMod->pRdr,
    2327                              (uint8_t *)pvBits + (pMod->aSegments[i].LinkAddress - pModMachO->LinkAddress),
     2327                             (KU8 *)pvBits + (pMod->aSegments[i].LinkAddress - pModMachO->LinkAddress),
    23282328                             pMod->aSegments[i].cbFile,
    23292329                             pMod->aSegments[i].offFile);
Note: See TracChangeset for help on using the changeset viewer.