On Tue, Dec 11, 2018 at 2:14 AM Tom de Vries <[email protected]> wrote:
>
> Handle DW_FORM_GNU_strp_alt and DW_FORM_GNU_ref_alt references robustly in
> presence of missing .gnu_debugaltlink file.
>
> 2018-11-11 Tom de Vries <[email protected]>
>
> * dwarf.c (enum attr_val_encoding): Add ATTR_VAL_NONE.
> (read_attribute): Add altlink parameter. Handle missing altlink for
> DW_FORM_GNU_strp_alt and DW_FORM_GNU_ref_alt.
> (find_address_ranges, build_address_map, build_dwarf_data): Add and
> handle altlink parameter.
> (read_referenced_name, read_function_entry): Add argument to
> read_attribute call.
> read_attribute (enum dwarf_form form, struct dwarf_buf *buf,
> int is_dwarf64, int version, int addrsize,
> const unsigned char *dwarf_str, size_t dwarf_str_size,
> - struct attr_val *val)
> + struct attr_val *val, struct dwarf_data *altlink)
> {
altlink is not a result parameter, so it should be before val.
> @@ -1277,7 +1289,8 @@ find_address_ranges (struct backtrace_state *state,
> uintptr_t base_address,
> size_t dwarf_ranges_size,
> int is_bigendian, backtrace_error_callback
> error_callback,
> void *data, struct unit *u,
> - struct unit_addrs_vector *addrs)
> + struct unit_addrs_vector *addrs,
> + struct dwarf_data *altlink)
Same. altlink should be before the error_callback parameter.
> @@ -1431,7 +1444,8 @@ build_address_map (struct backtrace_state *state,
> uintptr_t base_address,
> const unsigned char *dwarf_ranges, size_t
> dwarf_ranges_size,
> const unsigned char *dwarf_str, size_t dwarf_str_size,
> int is_bigendian, backtrace_error_callback error_callback,
> - void *data, struct unit_addrs_vector *addrs)
> + void *data, struct unit_addrs_vector *addrs,
> + struct dwarf_data *altlink)
Same.
Ian