Changeset 2899
- Timestamp:
- Dec 24, 2006, 4:20:40 AM (19 years ago)
- Location:
- trunk/kLdr
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kLdr/Makefile.kmk
r2886 r2899 58 58 TEMPLATE_TST_LIBS = gcc 59 59 endif 60 TEMPLATE_TST_CFLAGS = -Wall -pedantic -g 60 TEMPLATE_TST_CFLAGS = -Wall -pedantic -g -std=gnu99 61 61 TEMPLATE_TST_CFLAGS.release = -O2 62 62 TEMPLATE_TST_LDFLAGS = -
trunk/kLdr/kLdrHlp-gcc.c
r2883 r2899 179 179 } 180 180 181 182 int strncmp(const char *psz1, const char *psz2, size_t cch) 183 { 184 while (cch-- > 0) 185 { 186 const char ch1 = *psz1++; 187 const char ch2 = *psz2++; 188 if (ch1 != ch2) 189 return (int)ch1 - (int)ch2; 190 if (!ch1) 191 break; 192 } 193 return 0; 194 } 195 181 196 char *strchr(const char *psz, int ch) 182 197 { -
trunk/kLdr/kLdrModPE.c
r2893 r2899 107 107 108 108 static int kldrModPEDoCreate(PKLDRRDR pRdr, off_t offNewHdr, PKLDRMODPE *ppMod); 109 static void kldrModPEDoLoadConfigConversion(PIMAGE_LOAD_CONFIG_DIRECTORY64 pLoadCfg); 109 /*static void kldrModPEDoLoadConfigConversion(PIMAGE_LOAD_CONFIG_DIRECTORY64 pLoadCfg); */ 110 110 static int kLdrModPEDoOptionalHeaderValidation(PKLDRMODPE pModPE); 111 111 static int kLdrModPEDoSectionHeadersValidation(PKLDRMODPE pModPE); … … 457 457 458 458 459 #if 0 459 460 /** 460 461 * Converts a 32-bit load config directory to a 64 bit one. … … 487 488 /* the remainder matches. */ 488 489 } 490 #endif 489 491 490 492 -
trunk/kLdr/tstkLdrMod.c
r2890 r2899 70 70 71 71 /** Dummy import resolver callback. */ 72 static int BasicTestsGetImport(PKLDRMOD pMod, uint32_t iImport, uint32_t iSymbol, const char *p szSymbol,73 PKLDRADDR puValue, uint32_t *pfKind, void *pvUser)72 static int BasicTestsGetImport(PKLDRMOD pMod, uint32_t iImport, uint32_t iSymbol, const char *pchSymbol, size_t cchSymbol, 73 const char *pszVersion, PKLDRADDR puValue, uint32_t *pfKind, void *pvUser) 74 74 { 75 75 *puValue = 0xdeadface; … … 197 197 * Dump symbols and check that we can query each of them recursivly. 198 198 */ 199 static int BasicTestsEnumSymCallback(PKLDRMOD pMod, uint32_t iSymbol, const char *p szSymbol,200 KLDRADDR uValue, uint32_t fKind, void *pvUser)199 static int BasicTestsEnumSymCallback(PKLDRMOD pMod, uint32_t iSymbol, const char *pchSymbol, size_t cchSymbol, 200 const char *pszVersion, KLDRADDR uValue, uint32_t fKind, void *pvUser) 201 201 { 202 202 KLDRADDR uValue2; … … 206 206 /* dump */ 207 207 printf("#0x%08x: %016" PRI_KLDRADDR " %#08x", iSymbol, uValue, fKind); 208 if (p szSymbol)209 printf(" % s", pszSymbol);208 if (pchSymbol) 209 printf(" %.*s", cchSymbol, pchSymbol); 210 210 printf("\n"); 211 211 … … 213 213 if (iSymbol != NIL_KLDRMOD_SYM_ORDINAL) 214 214 { 215 rc = kLdrModQuerySymbol(pMod, pvUser, MY_BASEADDRESS, iSymbol, NULL, NULL, NULL,215 rc = kLdrModQuerySymbol(pMod, pvUser, MY_BASEADDRESS, iSymbol, NULL, 0, NULL, NULL, NULL, 216 216 &uValue2, &fKind2); 217 217 if (rc) 218 return Failure("Couldn't find symbol %#x (% s) by ordinal. rc=%d", iSymbol, pszSymbol, rc);218 return Failure("Couldn't find symbol %#x (%.*s) by ordinal. rc=%d", iSymbol, cchSymbol, pchSymbol, rc); 219 219 if (uValue != uValue2) 220 return Failure("Symbol %#x (% s): Value mismatch %016" PRI_KLDRADDR " != %016" PRI_KLDRADDR " (enum!=query/ord) pvBits=%p",221 iSymbol, pszSymbol, uValue, uValue2, pvUser);220 return Failure("Symbol %#x (%.*s): Value mismatch %016" PRI_KLDRADDR " != %016" PRI_KLDRADDR " (enum!=query/ord) pvBits=%p", 221 iSymbol, cchSymbol, pchSymbol, uValue, uValue2, pvUser); 222 222 if (fKind != fKind2) 223 return Failure("Symbol %#x (% s): Kind mismatch %#x != %#x (enum!=query/ord) pvBits=%p",224 iSymbol, pszSymbol, fKind, fKind2, pvUser);223 return Failure("Symbol %#x (%.*s): Kind mismatch %#x != %#x (enum!=query/ord) pvBits=%p", 224 iSymbol, cchSymbol, pchSymbol, fKind, fKind2, pvUser); 225 225 } 226 226 227 227 /* query by name. */ 228 if (p szSymbol)229 { 230 rc = kLdrModQuerySymbol(pMod, pvUser, MY_BASEADDRESS, NIL_KLDRMOD_SYM_ORDINAL, p szSymbol, NULL, NULL,231 &uValue2, &fKind2);228 if (pchSymbol) 229 { 230 rc = kLdrModQuerySymbol(pMod, pvUser, MY_BASEADDRESS, NIL_KLDRMOD_SYM_ORDINAL, pchSymbol, cchSymbol, pszVersion, 231 NULL, NULL, &uValue2, &fKind2); 232 232 if (rc) 233 return Failure("Couldn't find symbol %#x (% s) by name. rc=%d", iSymbol, pszSymbol, rc);233 return Failure("Couldn't find symbol %#x (%.*s) by name. rc=%d", iSymbol, cchSymbol, pchSymbol, rc); 234 234 if (uValue != uValue2) 235 return Failure("Symbol %#x (% s): Value mismatch %016" PRI_KLDRADDR " != %016" PRI_KLDRADDR " (enum!=query/name) pvBits=%p",236 iSymbol, pszSymbol, uValue, uValue2, pvUser);235 return Failure("Symbol %#x (%.*s): Value mismatch %016" PRI_KLDRADDR " != %016" PRI_KLDRADDR " (enum!=query/name) pvBits=%p", 236 iSymbol, cchSymbol, pchSymbol, uValue, uValue2, pvUser); 237 237 if (fKind != fKind2) 238 return Failure("Symbol %#x (% s): Kind mismatch %#x != %#x (enum!=query/name) pvBits=%p",239 iSymbol, pszSymbol, fKind, fKind2, pvUser);238 return Failure("Symbol %#x (%.*s): Kind mismatch %#x != %#x (enum!=query/name) pvBits=%p", 239 iSymbol, cchSymbol, pchSymbol, fKind, fKind2, pvUser); 240 240 } 241 241 … … 353 353 fKind = 0xdeadf00d; 354 354 Value = 0x0badc0de; 355 rc = kLdrModQuerySymbol(pMod, pvBits, MY_BASEADDRESS, NIL_KLDRMOD_SYM_ORDINAL - 20, NULL, NULL,NULL,355 rc = kLdrModQuerySymbol(pMod, pvBits, MY_BASEADDRESS, NIL_KLDRMOD_SYM_ORDINAL - 20, NULL, 0, NULL, NULL, NULL, 356 356 &Value, &fKind); 357 357 if (rc) … … 365 365 fKind = 0xdeadf00d; 366 366 Value = 0x0badc0de; 367 rc = kLdrModQuerySymbol(pMod, pvBits, MY_BASEADDRESS, NIL_KLDRMOD_SYM_ORDINAL, NULL, NULL,NULL,367 rc = kLdrModQuerySymbol(pMod, pvBits, MY_BASEADDRESS, NIL_KLDRMOD_SYM_ORDINAL, NULL, 0, NULL, NULL, NULL, 368 368 &Value, &fKind); 369 369 if (!rc) … … 404 404 * Check/dump the module structure. 405 405 */ 406 printf("pMod=%p u32Magic=%#x cSegments=%d\n", pMod, pMod->u32Magic, pMod->cSegments);406 printf("pMod=%p u32Magic=%#x cSegments=%d\n", (void *)pMod, pMod->u32Magic, pMod->cSegments); 407 407 printf("enmType=%d enmFmt=%d enmArch=%d enmCpu=%d enmEndian=%d\n", 408 408 pMod->enmType, pMod->enmFmt, pMod->enmArch, pMod->enmCpu, pMod->enmEndian); … … 436 436 pMod->aSegments[i].LinkAddress, pMod->aSegments[i].cb, pMod->aSegments[i].Alignment); 437 437 printf(" RVA: %016" PRI_KLDRADDR " cbMapped: %016" PRI_KLDRSIZE " MapAddress=%p\n", 438 pMod->aSegments[i].RVA, (KLDRSIZE)pMod->aSegments[i].cbMapped, pMod->aSegments[i].MapAddress);438 pMod->aSegments[i].RVA, (KLDRSIZE)pMod->aSegments[i].cbMapped, (void *)pMod->aSegments[i].MapAddress); 439 439 printf(" offFile: %016" PRI_KLDRADDR " cbFile: %016" PRI_KLDRSIZE "\n", 440 440 (KLDRADDR)pMod->aSegments[i].offFile, (KLDRSIZE)pMod->aSegments[i].cbFile);
Note:
See TracChangeset
for help on using the changeset viewer.