dwarf_object_init —
    allocate a DWARF debug descriptor with application-specific
    file access methods
DWARF Access Library (libdwarf,
  -ldwarf)
#include
    <libdwarf.h>
int
  
  dwarf_object_init(Dwarf_Obj_Access_Interface
    *iface, Dwarf_Handler errhand,
    Dwarf_Ptr errarg, Dwarf_Debug
    *dbg, Dwarf_Error *err);
The
    dwarf_object_init()
    function allocates and returns a Dwarf_Debug instance
    that uses application-supplied access methods to read file content.
The argument iface should point to a
    populated Dwarf_Obj_Access_Interface structure. The
    contents of the Dwarf_Obj_Access_Interface structure
    are described in the section
    Object Access Functions
    below.
The argument errhand should point to a
    function to be called in case of an error. If this argument is
    NULL then a default error handling scheme is used.
    See
    dwarf(3)
    for a description of the error handling schemes available.
The argument errarg will be passed to the
    error handler function pointed to by argument
  errhand.
The argument dbg should point to a memory
    location that will be set to a reference to the returned
    Dwarf_Debug descriptor.
The argument err will be used to return a
    Dwarf_Error descriptor in case of an error.
The data structures used to specify object access methods are
    defined in <libdwarf.h>.
  - Dwarf_Obj_Access_Interface
 
  - This structure bundles together a set of file access methods along with a
      pointer to application-private state.
    
    typedef struct {
	void *object;
	const Dwarf_Obj_Access_Methods *methods;
} Dwarf_Obj_Access_Interface;
     
    
    
      - object
 
      - This field points to application-specific state that will be passed as
          the first parameter to the actual access object methods.
 
      - methods
 
      - This structure contains pointers to the functions implementing the
          access methods, as described below.
 
    
   
  - Dwarf_Obj_Access_Methods
 
  - This structure specifies the functions implementing low-level access.
    
    typedef struct {
	int (*get_section_info)(void *obj, Dwarf_Half index,
	    Dwarf_Obj_Access_Section *ret, int *error);
	Dwarf_Endianness (*get_byte_order)(void *obj);
	Dwarf_Small (*get_length_size)(void *obj);
	Dwarf_Small (*get_pointer_size)(void *obj);
	Dwarf_Unsigned (*get_section_count)(void *obj);
	int (*load_section)(void *obj, Dwarf_Half ndx,
	    Dwarf_Small **ret_data, int *error);
} Dwarf_Obj_Access_Methods;
     
    
    
      - get_byte_order
 
      - This function should return the endianness of the DWARF object by
          returning one of the constants 
DW_OBJECT_MSB
          or DW_OBJECT_LSB. 
      - get_length_size
 
      - This function should return the number of bytes needed to represent a
          DWARF offset in the object being debugged.
 
      - get_pointer_size
 
      - This function should return the size in bytes, in the object being
          debugged, of a memory address.
 
      - get_section_count
 
      - This function should return the number of sections in the object being
          debugged.
 
      - get_section_info
 
      - This function should return information about the section at the index
          ndx by filling in the structure of type
          Dwarf_Obj_Access_Section pointed to by argument
          ret. The
          Dwarf_Obj_Access_Section structure is described
          below.
 
      - load_section
 
      - This function should load the section specified by argument
          ndx into memory and place a pointer to the
          section's data into the location pointed to by argument
          ret_data.
 
    
    The argument obj passed to these
        functions will be set to the pointer value in the
        object field of the associated
        Dwarf_Obj_Access_Interface structure.
    The argument error is used to return an
        error code in case of an error.
   
  - Dwarf_Obj_Access_Section
 
  - This structure describes the layout of a section in the DWARF object.
    
    typedef struct {
	Dwarf_Addr addr;
	Dwarf_Unsigned size;
	const char *name;
} Dwarf_Obj_Access_Section;
     
    
    
      - addr
 
      - A pointer to the start of the section's data.
 
      - size
 
      - The size of the section in bytes.
 
      - name
 
      - A pointer to a NUL-terminated string containing the name of the
          section.
 
    
   
On success, the dwarf_object_init()
    function returns DW_DLV_OK. In case of an error, the
    function returns DW_DLV_ERROR and sets the argument
    err.
The dwarf_object_init() function may fail
    with the following errors:
  - [
DW_DLE_ARGUMENT] 
  - One of the arguments iface or
      dbg was NULL.
 
  - [
DW_DLE_DEBUG_INFO_NULL] 
  - The underlying object did not contain debugging information.
 
  - [
DW_DLE_MEMORY] 
  - An out of memory condition was encountered during the execution of the
      function.