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*/
39typedef 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*/
52int _dwarf_addr_finder(dwarf_elf_handle elf_file_ptr,
53                Dwarf_addr_callback_func cb_func,
54                int *dwerr);
55
56