summaryrefslogtreecommitdiffstats
path: root/libelf/elf-knowledge.h
diff options
context:
space:
mode:
authorTom Tromey <[email protected]>2012-03-21 08:54:32 -0600
committerMark Wielaard <[email protected]>2012-03-21 16:32:47 +0100
commit581c3f60e2b1fc7ddaf4260bb5a9cb59f8e3f0d0 (patch)
treeb56cf7ffba1cf97c14e7546029a1fb07e2b53ab7 /libelf/elf-knowledge.h
parent30bb714e7446d35d15cd53b3c794dd8ac08d0a29 (diff)
Fix bug using dwarf_next_unit to iterate over .debug_types
* libdw_findcu.c (findcu_cb): Move earlier. (__libdw_intern_next_unit): Add new CU to search tree here... (__libdw_findcu): ... not here. * typeiter.c: New file. * run-typeiter.sh: New file. * testfile59.bz2: New file. * Makefile.am (noinst_PROGRAMS): Add typeiter. (TESTS): Add run-typeiter.sh. (EXTRA_DIST): Add run-typeiter.sh, testfile59.bz2. (typeiter_LDADD): New variable. If you call dwarf_next_unit to iterate over .debug_types, then call dwarf_offdie_types, you can see a failure if some earlier call happened to call __libdw_intern_next_unit via dwarf_formref_die. What happens is that __libdw_intern_next_unit updates the Dwarf's next_tu_offset, but does not add the TU to the TU search tree. So, the call to dwarf_offdie_types does not find the TU in the tree, and will not search any more, causing a failure. This fix changes __libdw_intern_next_unit to add the TU to the search tree, rather than relying on __libdw_findcu to do it.
Diffstat (limited to 'libelf/elf-knowledge.h')
0 files changed, 0 insertions, 0 deletions