Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DWARF_GET_ABBREV(3)	 BSD Library Functions Manual	   DWARF_GET_ABBREV(3)

NAME
     dwarf_get_abbrev -- retrieve abbreviation information

LIBRARY
     DWARF Access Library (libdwarf, -ldwarf)

SYNOPSIS
     #include <libdwarf.h>

     int
     dwarf_get_abbrev(Dwarf_Debug dbg, Dwarf_Unsigned offset,
	 Dwarf_Abbrev *ret_abbrev, Dwarf_Unsigned *length,
	 Dwarf_Unsigned	*attr_count, Dwarf_Error *err);

DESCRIPTION
     Function dwarf_get_abbrev() retrieves information about an	abbreviation
     from the DWARF abbreviations section, ".debug_abbrev".  Abbreviation in-
     formation is returned using an opaque descriptor of type Dwarf_Abbrev.
     The returned Dwarf_Abbrev descriptor may then be passed to	the other ab-
     breviation	related	APIs in	the DWARF(3) API to retrieve specific informa-
     tion about	the abbreviation.

     Argument dbg should reference a DWARF debug context allocated using
     dwarf_init(3).

     Argument offset should be an offset, relative to the ".debug_abbrev" sec-
     tion, to the start	of an abbreviation entry.

     Argument ret_abbrev should	point to a location that will hold a pointer
     to	the returned Dwarf_Abbrev descriptor.

     Argument length should point to a location	that will hold the number of
     bytes used	by the abbrevation in the DWARF	".debug_abbrev"	section.

     Argument attr_count should	point to a location that will hold the number
     of	attributes in the abbrevation.

     If	argument err is	not NULL, it will be used to store error information
     in	case of	an error.

   Memory Management
     The memory	area used for the Dwarf_Abbrev descriptor returned in argument
     ret_abbrev	is allocated by	the DWARF Access Library (libdwarf, -ldwarf).
     Application code should use function dwarf_dealloc() with the allocation
     type DW_DLA_ABBREV	to free	the memory area	when the Dwarf_Abbrev descrip-
     tor is no longer needed.

   Application Programming Notes
     The last abbreviation entry in a standard DWARF abbreviation section will
     have a special length value of 1.

RETURN VALUES
     Function dwarf_get_abbrev() returns DW_DLV_OK when	it succeeds.  It re-
     turns DW_DLV_NO_ENTRY if there is no abbreviation information at offset
     offset.  In case of an error, it returns DW_DLV_ERROR and sets the	argu-
     ment err.

EXAMPLES
     To	loop through all the abbreviation information associated with a	DWARF
     debug context, use:

	   Dwarf_Debug dbg;
	   Dwarf_Abbrev	ab;
	   Dwarf_Off aboff;
	   Dwarf_Unsigned length, attr_count;
	   Dwarf_Half tag;
	   Dwarf_Error de;
	   int ret;

	   while ((ret = dwarf_next_cu_header(dbg, NULL, NULL, &aboff,
	       NULL, NULL, &de)) ==  DW_DLV_OK)	{
		   while ((ret = dwarf_get_abbrev(re->dbg, aboff, &ab, &length,
		       &attr_count, &de)) == DW_DLV_OK)	{
			   if (length == 1)	   /* Last entry. */
				   break;
			   aboff += length;
			   if (dwarf_get_abbrev_tag(ab,	&tag, &de) != DW_DLV_OK) {
				   warnx("dwarf_get_abbrev_tag failed: %s",
				       dwarf_errmsg(de));
				   continue;
			   }
		   if (ret != DW_DLV_OK)
			   warnx("dwarf_get_abbrev: %s", dwarf_errmsg(de));
	   }
	   if (ret == DW_DLV_ERROR)
		   warnx("dwarf_next_cu_header:	%s", dwarf_errmsg(de));

ERRORS
     Function dwarf_get_abbrev() can fail with:

     [DW_DLE_ARGUMENT]	One of the arguments dbg, ret_abbrev, length or
			attr_count was NULL.

     [DW_DLE_NO_ENTRY]	There is no abbreviation information at	offset offset.

SEE ALSO
     dwarf(3), dwarf_dealloc(3), dwarf_get_abbrev_children_flag(3),
     dwarf_get_abbrev_code(3), dwarf_get_abbrev_entry(3),
     dwarf_get_abbrev_tag(3)

BSD				March 27, 2011				   BSD

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | EXAMPLES | ERRORS | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=dwarf_get_abbrev&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help