Changeset 3573 for trunk/kStuff/kLdr/kLdrModPE.c
- Timestamp:
- Aug 31, 2007, 6:09:23 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kStuff/kLdr/kLdrModPE.c
r3571 r3573 30 30 *******************************************************************************/ 31 31 #include <k/kLdr.h> 32 #include "kLdrHlp.h"33 32 #include "kLdrInternal.h" 34 33 #include <k/kLdrFmts/pe.h> … … 46 45 */ 47 46 #ifdef KLDRMODPE_STRICT 48 # define KLDRMODPE_ASSERT(expr) k ldrHlpAssert(expr)47 # define KLDRMODPE_ASSERT(expr) kHlpAssert(expr) 49 48 #else 50 49 # define KLDRMODPE_ASSERT(expr) do {} while (0) … … 151 150 return 0; 152 151 } 153 k ldrHlpFree(pModPE);152 kHlpFree(pModPE); 154 153 return rc; 155 154 } … … 200 199 * Calc the instance size, allocate and initialize it. 201 200 */ 202 cchFilename = k LdrHlpStrLen(kLdrRdrName(pRdr));201 cchFilename = kHlpStrLen(kLdrRdrName(pRdr)); 203 202 cb = K_ALIGN_Z(K_OFFSETOF(KLDRMODPE, aShdrs[s.FileHdr.NumberOfSections]), 16) 204 203 + K_OFFSETOF(KLDRMOD, aSegments[s.FileHdr.NumberOfSections + 1]) 205 204 + cchFilename + 1; 206 pModPE = (PKLDRMODPE)k ldrHlpAlloc(cb);205 pModPE = (PKLDRMODPE)kHlpAlloc(cb); 207 206 if (!pModPE) 208 207 return KLDR_ERR_NO_MEMORY; … … 217 216 pMod->cchFilename = cchFilename; 218 217 pMod->pszFilename = (char *)&pMod->aSegments[pMod->cSegments]; 219 k LdrHlpMemCopy((char *)pMod->pszFilename, kLdrRdrName(pRdr), cchFilename + 1);220 pMod->pszName = k ldrHlpGetFilename(pMod->pszFilename);218 kHlpMemCopy((char *)pMod->pszFilename, kLdrRdrName(pRdr), cchFilename + 1); 219 pMod->pszName = kHlpGetFilename(pMod->pszFilename); 221 220 pMod->cchName = cchFilename - (pMod->pszName - pMod->pszFilename); 222 221 switch (s.FileHdr.Machine) … … 234 233 break; 235 234 default: 236 k ldrHlpAssert(0);235 kHlpAssert(0); 237 236 break; 238 237 } … … 410 409 case IMAGE_SCN_ALIGN_4096BYTES: pMod->aSegments[i + 1].Alignment = 4096; break; 411 410 case IMAGE_SCN_ALIGN_8192BYTES: pMod->aSegments[i + 1].Alignment = 8192; break; 412 default: k ldrHlpAssert(0); pMod->aSegments[i + 1].Alignment = 0; break;411 default: kHlpAssert(0); pMod->aSegments[i + 1].Alignment = 0; break; 413 412 } 414 413 } … … 536 535 pMod->u32Magic = 0; 537 536 pMod->pOps = NULL; 538 k ldrHlpFree(pModPE);537 kHlpFree(pModPE); 539 538 return rc; 540 539 } … … 751 750 { 752 751 pszName = KLDRMODPE_RVA2TYPE(pvBits, paRVANames[i], const char *); 753 KLDRMODPE_ASSERT(k LdrHlpStrNComp(pszName, pchSymbol, cchSymbol) || pszName[cchSymbol]);754 KLDRMODPE_ASSERT(i == 0 || k LdrHlpStrComp(pszName, KLDRMODPE_RVA2TYPE(pvBits, paRVANames[i - 1], const char *)));752 KLDRMODPE_ASSERT(kHlpStrNComp(pszName, pchSymbol, cchSymbol) || pszName[cchSymbol]); 753 KLDRMODPE_ASSERT(i == 0 || kHlpStrComp(pszName, KLDRMODPE_RVA2TYPE(pvBits, paRVANames[i - 1], const char *))); 755 754 } 756 755 #endif … … 760 759 i = (iEnd - iStart) / 2 + iStart; 761 760 pszName = KLDRMODPE_RVA2TYPE(pvBits, paRVANames[i - 1], const char *); 762 diff = k LdrHlpStrNComp(pszName, pchSymbol, cchSymbol);761 diff = kHlpStrNComp(pszName, pchSymbol, cchSymbol); 763 762 if (!diff) 764 763 diff = pszName[cchSymbol] - 0; … … 903 902 { 904 903 const char *pszName = KLDRMODPE_RVA2TYPE(pvBits, paImpDir[iImpModule].Name, const char *); 905 KSIZE cchName = k LdrHlpStrLen(pszName);904 KSIZE cchName = kHlpStrLen(pszName); 906 905 if ( ( cchName == cchImpModule 907 906 || ( cchName > cchImpModule … … 911 910 && (pszName[cchImpModule + 3] == 'l' || pszName[cchImpModule + 3] == 'L')) 912 911 ) 913 && k LdrHlpMemIComp(pszName, pszForwarder, cchImpModule)912 && kHlpMemIComp(pszName, pszForwarder, cchImpModule) 914 913 ) 915 914 { … … 918 917 */ 919 918 rc = pfnGetForwarder(pModPE->pMod, iImpModule, iSymbol, pszSymbol, 920 pszSymbol ? k LdrHlpStrLen(pszSymbol) : 0, NULL, puValue, pfKind, pvUser);919 pszSymbol ? kHlpStrLen(pszSymbol) : 0, NULL, puValue, pfKind, pvUser); 921 920 if (!rc && pfKind) 922 921 *pfKind |= KLDRSYMKIND_FORWARDER; … … 989 988 fFoundName = 1; 990 989 pszName = KLDRMODPE_RVA2TYPE(pvBits, paRVANames[iName], const char *); 991 rc = pfnCallback(pMod, iFunction + pExpDir->Base, pszName, k LdrHlpStrLen(pszName), NULL,990 rc = pfnCallback(pMod, iFunction + pExpDir->Base, pszName, kHlpStrLen(pszName), NULL, 992 991 uValue, fKind, pvUser); 993 992 if (rc) … … 1040 1039 const IMAGE_IMPORT_DESCRIPTOR *); 1041 1040 pszImportName = KLDRMODPE_RVA2TYPE(pvBits, pImpDesc->Name, const char *); 1042 cchImportName = k LdrHlpStrLen(pszImportName);1041 cchImportName = kHlpStrLen(pszImportName); 1043 1042 if (cchImportName < cchName) 1044 1043 { 1045 k LdrHlpMemCopy(pszName, pszImportName, cchImportName + 1);1044 kHlpMemCopy(pszName, pszImportName, cchImportName + 1); 1046 1045 rc = 0; 1047 1046 } 1048 1047 else 1049 1048 { 1050 k LdrHlpMemCopy(pszName, pszImportName, cchName);1049 kHlpMemCopy(pszName, pszImportName, cchName); 1051 1050 if (cchName) 1052 1051 pszName[cchName - 1] = '\0'; … … 1594 1593 const IMAGE_IMPORT_BY_NAME *pName = KLDRMODPE_RVA2TYPE(pvMapping, pThunk->u1.Ordinal, const IMAGE_IMPORT_BY_NAME *); 1595 1594 rc = pfnGetImport(pMod, iImp, NIL_KLDRMOD_SYM_ORDINAL, (const char *)pName->Name, 1596 k LdrHlpStrLen((const char *)pName->Name), NULL, &Value, &fKind, pvUser);1595 kHlpStrLen((const char *)pName->Name), NULL, &Value, &fKind, pvUser); 1597 1596 } 1598 1597 else … … 1662 1661 const IMAGE_IMPORT_BY_NAME *pName = KLDRMODPE_RVA2TYPE(pvMapping, pThunk->u1.Ordinal, const IMAGE_IMPORT_BY_NAME *); 1663 1662 rc = pfnGetImport(pMod, iImp, NIL_KLDRMOD_SYM_ORDINAL, (const char *)pName->Name, 1664 k LdrHlpStrLen((const char *)pName->Name), NULL, &Value, &fKind, pvUser);1663 kHlpStrLen((const char *)pName->Name), NULL, &Value, &fKind, pvUser); 1665 1664 } 1666 1665 else … … 1902 1901 * Zero the entire buffer first to simplify things. 1903 1902 */ 1904 k LdrHlpMemSet(pvBits, 0, pModPE->Hdrs.OptionalHeader.SizeOfImage);1903 kHlpMemSet(pvBits, 0, pModPE->Hdrs.OptionalHeader.SizeOfImage); 1905 1904 1906 1905 /*
Note:
See TracChangeset
for help on using the changeset viewer.