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)