Changeset 2849
- Timestamp:
- Nov 2, 2006, 3:05:16 AM (19 years ago)
- Location:
- trunk/kLdr
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kLdr/kLdr.h
r2848 r2849 281 281 /** @defgroup grp_kLdrMod kLdrMod - The executable image intepreter 282 282 * @{ */ 283 284 285 /** 286 * Debug info type (from the loader point of view). 287 */ 288 typedef enum KLDRDBGINFOTYPE 289 { 290 /** The usual invalid enum value. */ 291 KLDRDBGINFOTYPE_INVALID = 0, 292 /** Stabs. */ 293 KLDRDBGINFOTYPE_STABS, 294 /** Debug With Arbitrary Record Format (DWARF). */ 295 KLDRDBGINFOTYPE_DWARF, 296 /** Microsoft Codeview debug info. */ 297 KLDRDBGINFOTYPE_CODEVIEW, 298 /** Watcom debug info. */ 299 KLDRDBGINFOTYPE_WATCOM, 300 /** IBM High Level Language debug info.. */ 301 KLDRDBGINFOTYPE_HLL, 302 /** The end of the valid debug info values (exclusive). */ 303 KLDRDBGINFOTYPE_END, 304 /** Blow the type up to 32-bit. */ 305 KLDRDBGINFOTYPE_32BIT_HACK = 0x7fffffff 306 } KLDRDBGINFOTYPE; 307 /** Pointer to a kLdr debug info type. */ 308 typedef KLDRDBGINFOTYPE *PKLDRDBGINFOTYPE; 309 283 310 284 311 /** … … 433 460 } KLDRARCH; 434 461 462 435 463 /** 436 464 * CPU models. … … 607 635 * 608 636 * @returns 0 if enumeration should continue. 609 * @returns non-zero if the enumeration should stop. This status code is the returned by kLdrModEnumSymbols().637 * @returns non-zero if the enumeration should stop. This status code will then be returned by kLdrModEnumSymbols(). 610 638 * 611 639 * @param pMod The module which symbols are being enumerated.s … … 622 650 /** Pointer to a symbol enumerator callback. */ 623 651 typedef FNKLDRMODENUMSYMS *PFNKLDRMODENUMSYMS; 652 653 /** 654 * Debug info enumerator callback. 655 * 656 * @returns 0 to continue the enumeration. 657 * @returns non-zero if the enumeration should stop. This status code will then be returned by kLdrModEnumDbgInfo(). 658 * 659 * @param pMod The module. 660 * @param enmType The debug info type. 661 * @param iDbgInfo The debug info ordinal number / id. 662 * @param offFile The file offset *if* this type has one specific location in the executable image file. 663 * This is -1 if there isn't any specific file location. 664 * @param cbFile The file size. 665 * This is 0 if there isn't any specific file location. 666 * @param pszExtFile This points to the name of an external file containing the debug info. 667 * This is NULL if there isn't any external file. 668 * @param pvUser The user parameter specified to kLdrModEnumDbgInfo. 669 */ 670 typedef int FNKLDRENUMDBG(PKLDRMOD pMod, KLDRDBGINFOTYPE enmType, uint32_t iDbgInfo, off_t offFile, off_t cbFile, 671 const char *pszExtFile, void *pvUser); 624 672 625 673 int kLdrModOpen(const char *pszFilename, PPKLDRMOD ppMod); … … 637 685 int kLdrModGetStackInfo(PKLDRMOD pMod, void *pvBits, KLDRADDR BaseAddress, PKLDRSTACKINFO pStackInfo); 638 686 int kLdrModQueryMainEntrypoint(PKLDRMOD pMod, void *pvBits, KLDRADDR BaseAddress, PKLDRADDR pMainEPAddress); 639 size_t kLdrModSize(PKLDRMOD pMod); 687 /** Pointer to a debug info enumberator callback. */ 688 typedef FNKLDRENUMDBG *PFNKLDRENUMDBG; 689 int kLdrModEnumDbgInfo(PKLDRMOD pMod, void *pvBits, PFNKLDRENUMDBG pfnCallback, void *pvUser); 690 int kLdrModHasDbgInfo(PKLDRMOD pMod, void *pvBits); 640 691 641 692 /** @name Operations On The Internally Managed Mapping … … 654 705 /** @name Operations On The Externally Managed Mappings 655 706 * @{ */ 707 size_t kLdrModSize(PKLDRMOD pMod); 656 708 int kLdrModGetBits(PKLDRMOD pMod, void *pvBits, KLDRADDR BaseAddress, PFNKLDRMODGETIMPORT pfnGetImport, void *pvUser); 657 709 int kLdrModRelocateBits(PKLDRMOD pMod, void *pvBits, KLDRADDR NewBaseAddress, KLDRADDR OldBaseAddress, 658 710 PFNKLDRMODGETIMPORT pfnGetImport, void *pvUser); 659 711 /** @} */ 712 660 713 661 714 /** @} */ -
trunk/kLdr/kLdrMod.c
r2848 r2849 308 308 309 309 /** 310 * Get the size of the mapped module. 311 * 312 * @returns The size of the mapped module (in bytes). 313 * @param pMod The module. 314 */ 315 size_t kLdrModSize(PKLDRMOD pMod) 310 * Enumerate the debug info formats contained in the executable image. 311 * 312 * @returns 0 on success, non-zero OS or kLdr status code on failure, or non-zero callback status. 313 * @param pMod The module. 314 * @param pvBits Optional pointer to bits returned by kLdrModGetBits(). 315 * This can be used by some module interpreters to reduce memory consumption. 316 * @param pfnCallback The callback function. 317 * @param pvUser The user argument. 318 * @see pg_kDbg for the debug info reader. 319 */ 320 int kLdrModEnumDbgInfo(PKLDRMOD pMod, void *pvBits, PFNKLDRENUMDBG pfnCallback, void *pvUser) 316 321 { 317 322 return 0; 323 } 324 325 326 /** 327 * Checks if the module has debug info embedded or otherwise associated with it. 328 * 329 * @returns 0 if it has debug info, KLDR_ERR_NO_DEBUG_INFO if no debug info, 330 * and non-zero OS or kLdr status code on failure. 331 * @param pMod The module. 332 * @param pvBits Optional pointer to bits returned by kLdrModGetBits(). 333 * This can be used by some module interpreters to reduce memory consumption. 334 */ 335 int kLdrModHasDbgInfo(PKLDRMOD pMod, void *pvBits) 336 { 337 return -1; 318 338 } 319 339 … … 445 465 */ 446 466 int kLdrModCallThread(PKLDRMOD pMod, unsigned fAttachingOrDetaching) 467 { 468 return 0; 469 } 470 471 472 /** 473 * Get the size of the mapped module. 474 * 475 * @returns The size of the mapped module (in bytes). 476 * @param pMod The module. 477 */ 478 size_t kLdrModSize(PKLDRMOD pMod) 447 479 { 448 480 return 0; … … 488 520 } 489 521 490 491
Note:
See TracChangeset
for help on using the changeset viewer.