Ignore:
Timestamp:
Feb 7, 2007, 8:07:16 AM (19 years ago)
Author:
bird
Message:

Completed kldrModMachOParseLoadCommands and kldrModMachOSize. Added an kLdrErrStr API.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kLdr/tstkLdrMod.c

    r2899 r2955  
    116116    rc = kLdrModGetBits(pMod, pvBits2, (uintptr_t)pvBits, BasicTestsGetImport, NULL);
    117117    if (rc)
    118         return Failure("failed to get image bits, rc=%d (a)", rc);
     118        return Failure("failed to get image bits, rc=%d (%s) (a)", rc, kLdrErrStr(rc));
    119119    if (TestMemComp(pvBits2, pvBits, cbImage))
    120120        return Failure("relocation test failed, mismatching bits (a)");
     
    125125    rc = kLdrModRelocateBits(pMod, pvBits2, 0x1000, (uintptr_t)pvBits, BasicTestsGetImport, NULL);
    126126    if (rc)
    127         return Failure("failed to relocate, rc=%d (b1)");
     127        return Failure("failed to relocate, rc=%d (%s) (b1)", rc, kLdrErrStr(rc));
    128128    rc = kLdrModRelocateBits(pMod, pvBits2, (uintptr_t)pvBits, 0x1000, BasicTestsGetImport, NULL);
    129129    if (rc)
    130         return Failure("failed to relocate, rc=%d (b2)");
     130        return Failure("failed to relocate, rc=%d (%s) (b2)", rc, kLdrErrStr(rc));
    131131    if (TestMemComp(pvBits2, pvBits, cbImage))
    132132        return Failure("relocation test failed, mismatching bits (b)");
     
    138138    rc = kLdrModRelocateBits(pMod, pvBits, 0x1000000, (uintptr_t)pvBits, BasicTestsGetImport, NULL);
    139139    if (rc)
    140         return Failure("failed to relocate, rc=%d (c1)");
     140        return Failure("failed to relocate, rc=%d (%s) (c1)", rc, kLdrErrStr(rc));
    141141    memset(pvBits2, 0xfe, cbImage);
    142142    rc = kLdrModGetBits(pMod, pvBits2, 0x1000000, BasicTestsGetImport, NULL);
    143143    if (rc)
    144         return Failure("failed to get image bits, rc=%d (c1)", rc);
     144        return Failure("failed to get image bits, rc=%d (%s) (c1)", rc, kLdrErrStr(rc));
    145145    if (TestMemComp(pvBits2, pvBits, cbImage))
    146146        return Failure("relocation test failed, mismatching bits (c1)");
     
    149149    rc = kLdrModRelocateBits(pMod, pvBits, ~(uintptr_t)0x1010000, 0x1000000, BasicTestsGetImport, NULL);
    150150    if (rc)
    151         return Failure("failed to relocate, rc=%d (c2)");
     151        return Failure("failed to relocate, rc=%d (%s) (c2)", rc, kLdrErrStr(rc));
    152152    memset(pvBits2, 0xef, cbImage);
    153153    rc = kLdrModGetBits(pMod, pvBits2, ~(uintptr_t)0x1010000, BasicTestsGetImport, NULL);
    154154    if (rc)
    155         return Failure("failed to get image bits, rc=%d (c2)", rc);
     155        return Failure("failed to get image bits, rc=%d (%s) (c2)", rc, kLdrErrStr(rc));
    156156    if (TestMemComp(pvBits2, pvBits, cbImage))
    157157        return Failure("relocation test failed, mismatching bits (c2)");
     
    160160    rc = kLdrModRelocateBits(pMod, pvBits, MY_BASEADDRESS, ~(uintptr_t)0x1010000, BasicTestsGetImport, NULL);
    161161    if (rc)
    162         return Failure("failed to relocate, rc=%d (c3)");
     162        return Failure("failed to relocate, rc=%d (%s) (c3)", rc, kLdrErrStr(rc));
    163163    memset(pvBits2, 0xef, cbImage);
    164164    rc = kLdrModGetBits(pMod, pvBits2, MY_BASEADDRESS, BasicTestsGetImport, NULL);
    165165    if (rc)
    166         return Failure("failed to get image bits, rc=%d (c3)", rc);
     166        return Failure("failed to get image bits, rc=%d (%s) (c3)", rc, kLdrErrStr(rc));
    167167    if (TestMemComp(pvBits2, pvBits, cbImage))
    168168        return Failure("relocation test failed, mismatching bits (c3)");
     
    171171    rc = kLdrModRelocateBits(pMod, pvBits, ~(uintptr_t)0 / 2 - 0x10000, MY_BASEADDRESS, BasicTestsGetImport, NULL);
    172172    if (rc)
    173         return Failure("failed to relocate, rc=%d (c4)");
     173        return Failure("failed to relocate, rc=%d %(s) (c4)", rc, kLdrErrStr(rc));
    174174    memset(pvBits2, 0xdc, cbImage);
    175175    rc = kLdrModGetBits(pMod, pvBits2, ~(uintptr_t)0 / 2 - 0x10000, BasicTestsGetImport, NULL);
    176176    if (rc)
    177         return Failure("failed to get image bits, rc=%d (c4)", rc);
     177        return Failure("failed to get image bits, rc=%d (%s) (c4)", rc, kLdrErrStr(rc));
    178178    if (TestMemComp(pvBits2, pvBits, cbImage))
    179179        return Failure("relocation test failed, mismatching bits (c4)");
     
    182182    rc = kLdrModRelocateBits(pMod, pvBits, (uintptr_t)pvBits, ~(uintptr_t)0 / 2 - 0x10000, BasicTestsGetImport, NULL);
    183183    if (rc)
    184         return Failure("failed to relocate, rc=%d (c5)");
     184        return Failure("failed to relocate, rc=%d (%s) (c5)", rc, kLdrErrStr(rc));
    185185    memset(pvBits2, 0xcd, cbImage);
    186186    rc = kLdrModGetBits(pMod, pvBits2, (uintptr_t)pvBits, BasicTestsGetImport, NULL);
    187187    if (rc)
    188         return Failure("failed to get image bits, rc=%d (c5)", rc);
     188        return Failure("failed to get image bits, rc=%d (%s) (c5)", rc, kLdrErrStr(rc));
    189189    if (TestMemComp(pvBits2, pvBits, cbImage))
    190190        return Failure("relocation test failed, mismatching bits (c5)");
     
    216216                                &uValue2, &fKind2);
    217217        if (rc)
    218             return Failure("Couldn't find symbol %#x (%.*s) by ordinal. rc=%d", iSymbol, cchSymbol, pchSymbol, rc);
     218            return Failure("Couldn't find symbol %#x (%.*s) by ordinal. rc=%d (%s)", iSymbol, cchSymbol, pchSymbol, rc, kLdrErrStr(rc));
    219219        if (uValue != uValue2)
    220220            return Failure("Symbol %#x (%.*s): Value mismatch %016" PRI_KLDRADDR " != %016" PRI_KLDRADDR " (enum!=query/ord)  pvBits=%p",
     
    231231                                NULL, NULL, &uValue2, &fKind2);
    232232        if (rc)
    233             return Failure("Couldn't find symbol %#x (%.*s) by name. rc=%d", iSymbol, cchSymbol, pchSymbol, rc);
     233            return Failure("Couldn't find symbol %#x (%.*s) by name. rc=%d (%s)", iSymbol, cchSymbol, pchSymbol, rc, kLdrErrStr(rc));
    234234        if (uValue != uValue2)
    235235            return Failure("Symbol %#x (%.*s): Value mismatch %016" PRI_KLDRADDR " != %016" PRI_KLDRADDR " (enum!=query/name) pvBits=%p",
     
    292292        rc = kLdrModGetImport(pMod, pvBits, i, szImportModule, sizeof(szImportModule));
    293293        if (rc)
    294             return Failure("failed to get import module name, rc=%d. (%.260s)", rc, szImportModule);
     294            return Failure("failed to get import module name, rc=%d (%s). (%.260s)", rc, kLdrErrStr(rc), szImportModule);
    295295        printf("import #%d: '%s'\n", i, szImportModule);
    296296    }
     
    305305    rc = kLdrModGetStackInfo(pMod, pvBits, MY_BASEADDRESS, &StackInfo);
    306306    if (rc)
    307         return Failure("kLdrModGetStackInfo failed with rc=%d", rc);
     307        return Failure("kLdrModGetStackInfo failed with rc=%d (%s)", rc, kLdrErrStr(rc));
    308308    printf("Stack: Address=%016" PRI_KLDRADDR "   LinkAddress=%016" PRI_KLDRADDR "\n"
    309309           "       cbStack=%016" PRI_KLDRSIZE " cbStackThread=%016" PRI_KLDRSIZE "\n",
     
    324324    rc = kLdrModQueryMainEntrypoint(pMod, pvBits, MY_BASEADDRESS, &MainEPAddress);
    325325    if (rc)
    326         return Failure("kLdrModQueryMainEntrypoint failed with rc=%d", rc);
     326        return Failure("kLdrModQueryMainEntrypoint failed with rc=%d (%s)", rc, kLdrErrStr(rc));
    327327    printf("Entrypoint: %016" PRI_KLDRADDR "\n", MainEPAddress);
    328328    if (MainEPAddress == ~(KLDRADDR)42)
     
    342342        printf("NO Debugger Information\n");
    343343    else
    344         return Failure("kLdrModHasDbgInfo failed with rc=%d", rc);
     344        return Failure("kLdrModHasDbgInfo failed with rc=%d (%s)", rc, kLdrErrStr(rc));
    345345    rc = kLdrModEnumDbgInfo(pMod, pvBits, BasicTestEnumDbgInfoCallback, NULL);
    346346    if (rc)
    347         return Failure("kLdrModEnumDbgInfo failed with rc=%d", rc);
     347        return Failure("kLdrModEnumDbgInfo failed with rc=%d (%s)", rc, kLdrErrStr(rc));
    348348
    349349
     
    381381    rc = kLdrModEnumSymbols(pMod, pvBits, MY_BASEADDRESS, 0, BasicTestsEnumSymCallback, pvBits);
    382382    if (rc)
    383         return Failure("kLdrModEnumSymbols failed with rc=%d", rc);
     383        return Failure("kLdrModEnumSymbols failed with rc=%d (%s)", rc, kLdrErrStr(rc));
    384384
    385385
     
    490490    rc = kLdrModGetBits(pMod, pvBits, (uintptr_t)pvBits, BasicTestsGetImport, NULL);
    491491    if (rc)
    492         return Failure("failed to get image bits, rc=%d", rc);
     492        return Failure("failed to get image bits, rc=%d (%s)", rc, kLdrErrStr(rc));
    493493
    494494    /*
     
    525525    rc = kLdrModFixupMapping(pMod, BasicTestsGetImport, NULL);
    526526    if (rc)
    527         return Failure("kLdrModFixupMapping (a) failed, rc=%d", rc);
     527        return Failure("kLdrModFixupMapping (a) failed, rc=%d (%s)", rc, kLdrErrStr(rc));
    528528
    529529    rc = kLdrModReload(pMod);
    530530    if (rc)
    531         return Failure("kLdrModReload (a) failed, rc=%d", rc);
     531        return Failure("kLdrModReload (a) failed, rc=%d (%s)", rc, kLdrErrStr(rc));
    532532
    533533    rc = kLdrModReload(pMod);
    534534    if (rc)
    535         return Failure("kLdrModReload (b) failed, rc=%d", rc);
     535        return Failure("kLdrModReload (b) failed, rc=%d (%s)", rc, kLdrErrStr(rc));
    536536
    537537    rc = kLdrModFixupMapping(pMod, BasicTestsGetImport, NULL);
    538538    if (rc)
    539         return Failure("kLdrModFixupMapping (b) failed, rc=%d", rc);
     539        return Failure("kLdrModFixupMapping (b) failed, rc=%d (%s)", rc, kLdrErrStr(rc));
    540540
    541541    rc = kLdrModAllocTLS(pMod);
    542542    if (rc)
    543         return Failure("kLdrModAllocTLS (a) failed, rc=%d", rc);
     543        return Failure("kLdrModAllocTLS (a) failed, rc=%d (%s)", rc, kLdrErrStr(rc));
    544544    kLdrModFreeTLS(pMod);
    545545
    546546    rc = kLdrModAllocTLS(pMod);
    547547    if (rc)
    548         return Failure("kLdrModAllocTLS (b) failed, rc=%d", rc);
     548        return Failure("kLdrModAllocTLS (b) failed, rc=%d (%s)", rc, kLdrErrStr(rc));
    549549    kLdrModFreeTLS(pMod);
    550550
     
    555555    rc = BasicTestsSub2(pMod, NULL);
    556556    if (rc)
    557         return Failure("BasicTestsSub2 in Map2 failed, rc=%d", rc);
     557        return Failure("BasicTestsSub2 in Map2 failed, rc=%d (%s)", rc, kLdrErrStr(rc));
    558558    return 0;
    559559}
     
    570570    rc = kLdrModMap(pMod);
    571571    if (rc)
    572         return Failure("kLdrModMap failed, rc=%d", rc);
     572        return Failure("kLdrModMap failed, rc=%d (%s)", rc, kLdrErrStr(rc));
    573573    rc = BasicTestsSubMap2(pMod);
    574574    rc2 = kLdrModUnmap(pMod);
    575575    if (rc2)
    576576    {
    577         Failure("kLdrModUnmap failed, rc=%d", rc2);
     577        Failure("kLdrModUnmap failed, rc=%d (%s)", rc2, kLdrErrStr(rc2));
    578578        rc = rc ? rc : rc2;
    579579    }
     
    603603        rc2 = kLdrModClose(pMod);
    604604        if (rc2)
    605             Failure("failed to close '%s', rc=%d", pszFilename, rc);
     605            Failure("failed to close '%s', rc=%d (%s)", pszFilename, rc, kLdrErrStr(rc));
    606606        if (rc2 && !rc)
    607607            rc = rc2;
    608608    }
    609609    else
    610         Failure("Failed to open '%s', rc=%d", pszFilename, rc);
     610        Failure("Failed to open '%s', rc=%d (%s)", pszFilename, rc, kLdrErrStr(rc));
    611611    return rc ? 1 : 0;
    612612}
Note: See TracChangeset for help on using the changeset viewer.