1 /* 2 dwarf_addr_finder.h 3 $Source: /plroot/cmplrs.src/v7.4.5m/.RCS/PL/include/cmplrs/RCS/dwarf_addr_finder.h,v $ 4 $Date: 2002/06/11 17:49:06 $ 5 6 Defines user interface. 7 8 */ 9 10 /* return codes for functions 11 */ 12 #define DW_DLV_NO_ENTRY -1 13 #define DW_DLV_OK 0 14 #define DW_DLV_ERROR 1 15 16 17 /* the following are the 'section' number passed to the called-back 18 function. 19 The called-back application must translate this to the 20 appropriate elf section number/pointer. 21 22 Putting this burden on the application avoids having to store 23 the numbers in the Dwarf_Debug structure (thereby saving space 24 for most consumers). 25 */ 26 #define DW_SECTION_INFO 0 27 #define DW_SECTION_FRAME 1 28 #define DW_SECTION_ARANGES 2 29 #define DW_SECTION_LINE 3 30 #define DW_SECTION_LOC 4 /* .debug_loc */ 31 32 /* section is one of the above codes: it specifies a section. 33 secoff is the offset in the dwarf section. 34 existingAddr is the value at the specified offset (so the 35 called back routine can sanity check the proceedings). 36 It's up to the caller to know the size of an address (4 or 8) 37 and update the right number of bytes. 38 */ 39 typedef int (*Dwarf_addr_callback_func) (int /*section*/, 40 Dwarf_Off /*secoff*/, Dwarf_Addr /*existingAddr*/); 41 42 /* call this to do the work: it calls back thru cb_func 43 once per each address to be modified. 44 Once this returns you are done. 45 Returns DW_DLV_OK if finished ok. 46 Returns DW_DLV_ERROR if there was some kind of error, in which 47 the dwarf error number was passed back thu the dwerr ptr. 48 Returns DW_DLV_NO_ENTRY if there are no relevant dwarf sections, 49 so there were no addresses to be modified (and none 50 called back). 51 */ 52 int _dwarf_addr_finder(dwarf_elf_handle elf_file_ptr, 53 Dwarf_addr_callback_func cb_func, 54 int *dwerr); 55 56