Ignore:
Timestamp:
Nov 6, 2006, 1:23:14 AM (19 years ago)
Author:
bird
Message:

bugfixing - dinner break.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kLdr/kLdrModPE.c

    r2857 r2858  
    204204     */
    205205    cchFilename = kLdrHlpStrLen(kLdrRdrName(pRdr));
    206     cb = sizeof(KLDRMOD)
    207        + s.FileHdr.NumberOfSections * sizeof(KLDRSEG)
    208        + sizeof(KLDRMODPE) - sizeof(IMAGE_SECTION_HEADER)
    209        + s.FileHdr.NumberOfSections * sizeof(IMAGE_SECTION_HEADER)
     206    cb = KLDR_ALIGN_Z(KLDR_OFFSETOF(KLDRMODPE, aShdrs[s.FileHdr.NumberOfSections]), 16)
     207       + KLDR_OFFSETOF(KLDRMOD, aSegments[s.FileHdr.NumberOfSections + 1])
    210208       + cchFilename + 1;
    211209    pModPE = (PKLDRMODPE)kldrHlpAlloc(cb);
    212210    if (!pModPE)
    213211        return KLDR_ERR_NO_MEMORY;
     212    *ppModPE = pModPE;
    214213
    215214    /* KLDRMOD */
    216     pMod = (PKLDRMOD)((uint8_t *)pModPE + sizeof(KLDRMOD) + (s.FileHdr.NumberOfSections + 1) * sizeof(KLDRSEG));
     215    pMod = (PKLDRMOD)((uint8_t *)pModPE + KLDR_ALIGN_Z(KLDR_OFFSETOF(KLDRMODPE, aShdrs[s.FileHdr.NumberOfSections]), 16));
    217216    pMod->pvData = pModPE;
    218217    pMod->pRdr = pRdr;
     
    252251    pModPE->Hdrs.Signature = s.Signature;
    253252    pModPE->Hdrs.FileHeader = s.FileHdr;
    254     *ppModPE = pModPE;
    255253
    256254    /*
     
    811809
    812810/** @copydoc kLdrModEnumSymbols */
    813 static int kldrModPEEnumSymbols(PKLDRMOD pMod, uint32_t fFlags, const void *pvBits, KLDRADDR BaseAddress,
    814                                 PFNKLDRMODENUMSYMS pfnCallback, void *pvUser)
     811static int kldrModPEEnumSymbols(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress,
     812                                uint32_t fFlags, PFNKLDRMODENUMSYMS pfnCallback, void *pvUser)
    815813{
    816814    PKLDRMODPE                      pModPE = (PKLDRMODPE)pMod->pvData;
     
    890888
    891889/** @copydoc kLdrModGetImport */
    892 static int kldrModPEGetImport(PKLDRMOD pMod, void *pvBits, uint32_t iImport, char *pszName, size_t cchName)
     890static int kldrModPEGetImport(PKLDRMOD pMod, const void *pvBits, uint32_t iImport, char *pszName, size_t cchName)
    893891{
    894892    PKLDRMODPE                      pModPE = (PKLDRMODPE)pMod->pvData;
     
    19401938}
    19411939
     1940
     1941/**
     1942 * The PE module interpreter method table.
     1943 */
     1944KLDRMODOPS g_kLdrModPEOps =
     1945{
     1946    "PE",
     1947    NULL,
     1948    kldrModPECreate,
     1949    kldrModPEDestroy,
     1950    kldrModPEQuerySymbol,
     1951    kldrModPEEnumSymbols,
     1952    kldrModPEGetImport,
     1953    kldrModPENumberOfImports,
     1954    NULL /* can execute one is optional */,
     1955    kldrModPEGetStackInfo,
     1956    kldrModPEQueryMainEntrypoint,
     1957    kldrModPEEnumDbgInfo,
     1958    kldrModPEHasDbgInfo,
     1959    kldrModPEMap,
     1960    kldrModPEUnmap,
     1961    kldrModPEAllocTLS,
     1962    kldrModPEFreeTLS,
     1963    kldrModPEReload,
     1964    kldrModPEFixupMapping,
     1965    kldrModPECallInit,
     1966    kldrModPECallTerm,
     1967    kldrModPECallThread,
     1968    kldrModPESize,
     1969    kldrModPEGetBits,
     1970    kldrModPERelocateBits,
     1971    42 /* the end */
     1972};
Note: See TracChangeset for help on using the changeset viewer.