diff options
Diffstat (limited to 'libdw')
-rw-r--r-- | libdw/ChangeLog | 28 | ||||
-rw-r--r-- | libdw/dwarf.h | 6 | ||||
-rw-r--r-- | libdw/dwarf_getlocation.c | 4 | ||||
-rw-r--r-- | libdw/dwarf_siblingof.c | 2 | ||||
-rw-r--r-- | libdw/libdw.map | 11 |
5 files changed, 48 insertions, 3 deletions
diff --git a/libdw/ChangeLog b/libdw/ChangeLog index aaa62960..bf1f4857 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,31 @@ +2019-08-12 Mark Wielaard <[email protected]> + + * libdw.map (ELFUTILS_0.177): Add new version of dwelf_elf_begin. + +2019-06-28 Mark Wielaard <[email protected]> + + * libdw.map (ELFUTILS_0.177): New section. Add + dwelf_elf_e_machine_string. + +2019-05-16 Mark Wielaard <[email protected]> + + * dwarf.h: Add DW_AT_GNU_numerator, DW_AT_GNU_denominator and + DW_AT_GNU_bias. + +2019-04-28 Mark Wielaard <[email protected]> + + * dwarf_siblingof.c (dwarf_siblingof): Don't initialize addr. + +2019-04-28 Mark Wielaard <[email protected]> + + * dwarf_getlocation.c (dwarf_getlocation_addr): Call + check_constant_offset with llbufs and listlens directly. + +2019-04-27 Mark Wielaard <[email protected]> + + * dwarf_getlocation.c (store_implicit_value): Check dbg isn't + NULL. + 2019-02-02 Mark Wielaard <[email protected]> * dwarf_nextcu.c (__libdw_next_unit): Define bytes_end. diff --git a/libdw/dwarf.h b/libdw/dwarf.h index dc597335..71ca2baa 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -351,6 +351,12 @@ enum DW_AT_GNU_pubnames = 0x2134, DW_AT_GNU_pubtypes = 0x2135, + /* https://gcc.gnu.org/wiki/DW_AT_GNU_numerator_denominator */ + DW_AT_GNU_numerator = 0x2303, + DW_AT_GNU_denominator = 0x2304, + /* https://gcc.gnu.org/wiki/DW_AT_GNU_bias */ + DW_AT_GNU_bias = 0x2305, + DW_AT_hi_user = 0x3fff }; diff --git a/libdw/dwarf_getlocation.c b/libdw/dwarf_getlocation.c index fc59a2ab..6fb3ff3d 100644 --- a/libdw/dwarf_getlocation.c +++ b/libdw/dwarf_getlocation.c @@ -125,6 +125,8 @@ loc_compare (const void *p1, const void *p2) static int store_implicit_value (Dwarf *dbg, void **cache, Dwarf_Op *op) { + if (dbg == NULL) + return -1; struct loc_block_s *block = libdw_alloc (dbg, struct loc_block_s, sizeof (struct loc_block_s), 1); const unsigned char *data = (const unsigned char *) (uintptr_t) op->number2; @@ -896,7 +898,7 @@ dwarf_getlocation_addr (Dwarf_Attribute *attr, Dwarf_Addr address, } } - int result = check_constant_offset (attr, &llbufs[0], &listlens[0]); + int result = check_constant_offset (attr, llbufs, listlens); if (result != 1) return result ?: 1; diff --git a/libdw/dwarf_siblingof.c b/libdw/dwarf_siblingof.c index 613d2090..dbed9fa8 100644 --- a/libdw/dwarf_siblingof.c +++ b/libdw/dwarf_siblingof.c @@ -57,7 +57,7 @@ dwarf_siblingof (Dwarf_Die *die, Dwarf_Die *result) /* Copy of the CU in the request. */ sibattr.cu = this_die.cu; /* That's the address we start looking. */ - unsigned char *addr = this_die.addr; + unsigned char *addr; /* Search for the beginning of the next die on this level. We must not return the dies for children of the given die. */ diff --git a/libdw/libdw.map b/libdw/libdw.map index 55482d58..decac05c 100644 --- a/libdw/libdw.map +++ b/libdw/libdw.map @@ -360,4 +360,13 @@ ELFUTILS_0.173 { ELFUTILS_0.175 { global: dwelf_elf_begin; -} ELFUTILS_0.173;
\ No newline at end of file +} ELFUTILS_0.173; + +ELFUTILS_0.177 { + global: + dwelf_elf_e_machine_string; + # Replaced ELFUTILS_0.175 versions. Both versions point to the + # same implementation, but users of the new symbol version can + # presume that NULL is only returned on error (otherwise ELF_K_NONE). + dwelf_elf_begin; +} ELFUTILS_0.175; |