summaryrefslogtreecommitdiff
path: root/libbacktrace/dwarf.c
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2019-01-17 00:07:43 +0000
committerTom de Vries <vries@gcc.gnu.org>2019-01-17 00:07:43 +0000
commit9ad458d5397ffccd419cdd4a00dd816a500ab018 (patch)
tree53f7bad707d051b375f18d8d7d537787deace525 /libbacktrace/dwarf.c
parente6f00c83f4478e7e9174edf39219a6e0c1043c6c (diff)
[libbacktrace] Add altlink field to struct dwarf_data
Add an altlink field to struct dwarf_data, and initialize it with the pointer to the struct dwarf_data for the .gnu_debugaltlink. 2019-01-17 Tom de Vries <tdevries@suse.de> * dwarf.c (struct dwarf_data): Add altlink field. (backtrace_dwarf_add): Add and handle fileline_altlink parameter. * elf.c (elf_add): Add argument to backtrace_dwarf_add call. (phdr_callback, backtrace_initialize): Add argument to elf_add calls. * internal.h (backtrace_dwarf_add): Add fileline_altlink parameter. * pecoff.c (coff_add): Add argument to backtrace_dwarf_add call. * xcoff.c (xcoff_add): Same. From-SVN: r267994
Diffstat (limited to 'libbacktrace/dwarf.c')
-rw-r--r--libbacktrace/dwarf.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libbacktrace/dwarf.c b/libbacktrace/dwarf.c
index 190c6fc131f..83cdb52ef26 100644
--- a/libbacktrace/dwarf.c
+++ b/libbacktrace/dwarf.c
@@ -343,6 +343,8 @@ struct dwarf_data
{
/* The data for the next file we know about. */
struct dwarf_data *next;
+ /* The data for .gnu_debugaltlink. */
+ struct dwarf_data *altlink;
/* The base address for this file. */
uintptr_t base_address;
/* A sorted list of address ranges. */
@@ -3000,6 +3002,7 @@ build_dwarf_data (struct backtrace_state *state,
const unsigned char *dwarf_str,
size_t dwarf_str_size,
int is_bigendian,
+ struct dwarf_data *altlink,
backtrace_error_callback error_callback,
void *data)
{
@@ -3028,6 +3031,7 @@ build_dwarf_data (struct backtrace_state *state,
return NULL;
fdata->next = NULL;
+ fdata->altlink = altlink;
fdata->base_address = base_address;
fdata->addrs = addrs;
fdata->addrs_count = addrs_count;
@@ -3063,6 +3067,7 @@ backtrace_dwarf_add (struct backtrace_state *state,
const unsigned char *dwarf_str,
size_t dwarf_str_size,
int is_bigendian,
+ struct dwarf_data *fileline_altlink,
backtrace_error_callback error_callback,
void *data, fileline *fileline_fn,
struct dwarf_data **fileline_entry)
@@ -3073,7 +3078,7 @@ backtrace_dwarf_add (struct backtrace_state *state,
dwarf_line, dwarf_line_size, dwarf_abbrev,
dwarf_abbrev_size, dwarf_ranges, dwarf_ranges_size,
dwarf_str, dwarf_str_size, is_bigendian,
- error_callback, data);
+ fileline_altlink, error_callback, data);
if (fdata == NULL)
return 0;