Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

dwarf_get_str(3) [freebsd man page]

DWARF_GET_STR(3)					   BSD Library Functions Manual 					  DWARF_GET_STR(3)

NAME
dwarf_get_str -- retrieve a string from the DWARF string section LIBRARY
DWARF Access Library (libdwarf, -ldwarf) SYNOPSIS
#include <libdwarf.h> int dwarf_get_str(Dwarf_Debug dbg, Dwarf_Off offset, char **string, Dwarf_Signed *len, Dwarf_Error *err); DESCRIPTION
Function dwarf_get_str() retrieves a NUL-terminated string from the DWARF string section ``.debug_str''. Argument dbg should reference a DWARF debug context allocated using dwarf_init(3). Argument offset should be an offset, relative to the ``.debug_str'' section, specifying the start of the desired string. Argument string should point to a location which will hold a returned pointer to a NUL-terminated string. Argument len should point to a location which will hold the length of the returned string. The returned length does not include the space needed for the NUL-terminator. If argument err is not NULL, it will be used to store error information in case of an error. RETURN VALUES
Function dwarf_get_str() returns DW_DLV_OK when it succeeds. It returns DW_DLV_NO_ENTRY if there is no ``.debug_str'' section associated with the specified debugging context, or if the provided offset offset is at the very end of ``.debug_str'' section. In case of an error, it returns DW_DLV_ERROR and sets the argument err. ERRORS
Function dwarf_get_str() can fail with: [DW_DLE_ARGUMENT] One of the arguments dbg, string or len was NULL. [DW_DLE_ARGUMENT] Argument offset was out of range. [DW_DLE_NO_ENTRY] The debugging context dbg did not contain a ``.debug_str'' string section. [DW_DLE_NO_ENTRY] Argument offset was at the very end of the ``.debug_str'' section. EXAMPLE
To retrieve all the strings in the DWARF string section, use: Dwarf_Debug dbg; Dwarf_Off offset; Dwarf_Signed len; Dwarf_Error de; char *str; int ret offset = 0; while ((ret = dwarf_get_str(dbg, offset, &str, &len, &de)) == DW_DLV_OK) { /* .. Use the retrieved string. .. */ offset += len + 1; /* Account for the terminating NUL. */ } if (ret == DW_DLV_ERROR) warnx("dwarf_get_str: %s", dwarf_errmsg(de)); SEE ALSO
dwarf(3), dwarf_init(3) BSD
April 3, 2011 BSD

Check Out this Related Man Page

DWARF_GET_ABBREV_ENTRY(3)				   BSD Library Functions Manual 				 DWARF_GET_ABBREV_ENTRY(3)

NAME
dwarf_get_abbrev_entry -- retrieve attribute information from an abbreviation descriptor LIBRARY
DWARF Access Library (libdwarf, -ldwarf) SYNOPSIS
#include <libdwarf.h> int dwarf_get_abbrev_entry(Dwarf_Abbrev abbrev, Dwarf_Signed ndx, Dwarf_Half *code, Dwarf_Signed *form, Dwarf_Off *offset, Dwarf_Error *err); DESCRIPTION
Function dwarf_get_abbrev_entry() retrieves attribute information from a DWARF abbreviation descriptor. Argument abbrev should be a valid abbreviation descriptor, as returned by function dwarf_get_abbrev(3). Argument ndx specifies the 0-based index of the attribute. The total count of the attributes contained in the abbreviation entry can be retrieved using the function dwarf_get_abbrev(3). Argument code should point to a location which will hold a returned attribute code. Argument form should point to a location which will hold the returned form of the attribute. Argument offset should point to a location which will hold a returned offset, relative to the ``.debug_abbrev'' section, for the specified attribute. If argument err is not NULL, it will be used to return an error descriptor in case of an error. RETURN VALUES
Function dwarf_get_abbrev_entry() returns DW_DLV_OK when it succeeds. It returns DW_DLV_NO_ENTRY if the attribute index specified by argu- ment ndx is out of range. In case of an error, it returns DW_DLV_ERROR and sets the argument err. ERRORS
Function dwarf_get_abbrev_entry() can fail with: [DW_DLE_ARGUMENT] One of the arguments abbrev, code, form or offset was NULL. [DW_DLE_NO_ENTRY] The attribute index specified by argument ndx was out of range. EXAMPLE
To loop through all the attribute entries contained in the abbreviation section, use: Dwarf_Debug dbg; Dwarf_Abbrev ab; Dwarf_Off aboff, atoff; Dwarf_Signed form; Dwarf_Half attr; Dwarf_Unsigned length, attr_count; Dwarf_Error de; int i, ret; /* ...allocate 'dbg' using dwarf_init(3) ... */ while ((ret = dwarf_next_cu_header(dbg, NULL, NULL, &aboff, NULL, NULL, &de)) == DW_DLV_OK) { while ((ret = dwarf_get_abbrev(dbg, aboff, &ab, &length, &attr_count, &de)) == DW_DLV_OK) { if (length == 1) /* Last entry. */ break; aboff += length; for (i = 0; (Dwarf_Unsigned) i < attr_count; i++) { if (dwarf_get_abbrev_entry(ab, i, &attr, &form, &atoff, &de) != DW_DLV_OK) { warnx("dwarf_get_abbrev_entry failed:" " %s", dwarf_errmsg(de)); continue; } /* .. use the retrieved information ... */ } } 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)); SEE ALSO
dwarf(3), dwarf_get_abbrev(3) BSD
April 02, 2011 BSD
Man Page