[libbacktrace] Handle DW_FORM_GNU_strp_alt
Handle DW_FORM_GNU_strp_alt which references the .debug_str section in the .gnu_debugaltlink file. 2019-01-17 Tom de Vries <tdevries@suse.de> PR libbacktrace/82857 * dwarf.c (read_attribute): Handle DW_FORM_GNU_strp_alt using altlink. From-SVN: r267996
This commit is contained in:
parent
944f59ffe2
commit
f2f00d3a04
|
@ -1,3 +1,9 @@
|
|||
2019-01-17 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
PR libbacktrace/82857
|
||||
* dwarf.c (read_attribute): Handle DW_FORM_GNU_strp_alt
|
||||
using altlink.
|
||||
|
||||
2019-01-17 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
* dwarf.c (enum attr_val_encoding): Add ATTR_VAL_NONE.
|
||||
|
|
|
@ -843,14 +843,23 @@ read_attribute (enum dwarf_form form, struct dwarf_buf *buf,
|
|||
val->encoding = ATTR_VAL_REF_SECTION;
|
||||
return 1;
|
||||
case DW_FORM_GNU_strp_alt:
|
||||
val->u.uint = read_offset (buf, is_dwarf64);
|
||||
if (altlink == NULL)
|
||||
{
|
||||
val->encoding = ATTR_VAL_NONE;
|
||||
return 1;
|
||||
}
|
||||
val->encoding = ATTR_VAL_REF_SECTION;
|
||||
return 1;
|
||||
{
|
||||
uint64_t offset;
|
||||
offset = read_offset (buf, is_dwarf64);
|
||||
if (altlink == NULL)
|
||||
{
|
||||
val->encoding = ATTR_VAL_NONE;
|
||||
return 1;
|
||||
}
|
||||
if (offset >= altlink->dwarf_str_size)
|
||||
{
|
||||
dwarf_buf_error (buf, "DW_FORM_GNU_strp_alt out of range");
|
||||
return 0;
|
||||
}
|
||||
val->encoding = ATTR_VAL_STRING;
|
||||
val->u.string = (const char *) altlink->dwarf_str + offset;
|
||||
return 1;
|
||||
}
|
||||
default:
|
||||
dwarf_buf_error (buf, "unrecognized DWARF form");
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue