dwarf_addr_finder.h revision 49d3bc91e27cd871b950d56c01398fa2f2e12ab4
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh dwarf_addr_finder.h
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh $Source: /plroot/cmplrs.src/v7.4.2m/.RCS/PL/include/cmplrs/RCS/dwarf_addr_finder.h,v $
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh $Date: 2002/06/11 17:49:06 $
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh Defines user interface.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh*/
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/* return codes for functions
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh*/
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define DW_DLV_NO_ENTRY -1
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define DW_DLV_OK 0
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define DW_DLV_ERROR 1
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/* the following are the 'section' number passed to the called-back
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh function.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh The called-back application must translate this to the
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh appropriate elf section number/pointer.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh Putting this burden on the application avoids having to store
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh the numbers in the Dwarf_Debug structure (thereby saving space
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh for most consumers).
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh*/
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define DW_SECTION_INFO 0
47b47c8ce30ead58d3d8a10f770a28fd1ca95047dh#define DW_SECTION_FRAME 1
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define DW_SECTION_ARANGES 2
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define DW_SECTION_LINE 3
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define DW_SECTION_LOC 4 /* .debug_loc */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/* section is one of the above codes: it specifies a section.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh secoff is the offset in the dwarf section.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh existingAddr is the value at the specified offset (so the
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh called back routine can sanity check the proceedings).
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh It's up to the caller to know the size of an address (4 or 8)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh and update the right number of bytes.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh*/
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhtypedef int (*Dwarf_addr_callback_func) (int /*section*/,
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh Dwarf_Off /*secoff*/, Dwarf_Addr /*existingAddr*/);
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/* call this to do the work: it calls back thru cb_func
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh once per each address to be modified.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh Once this returns you are done.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh Returns DW_DLV_OK if finished ok.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh Returns DW_DLV_ERROR if there was some kind of error, in which
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh the dwarf error number was passed back thu the dwerr ptr.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh Returns DW_DLV_NO_ENTRY if there are no relevant dwarf sections,
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh so there were no addresses to be modified (and none
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh called back).
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh*/
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhint _dwarf_addr_finder(dwarf_elf_handle elf_file_ptr,
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh Dwarf_addr_callback_func cb_func,
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh int *dwerr);
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh