Dwarf3/4 adds a couple of structural modifications: - either 32bit or 64bit internal offsets - some attributes size have been changed across version - some section headers evolution (one more field in line section header) - GCC added some FORM extensions
This serie adds support for those, and some more code hardening.
This serie should finish covering the structural changes in dwarf3/4, and the loading of dwarf4 modules should (shriek) be possible, even it lots of new features of dwarf4 are not supported yet. Expect though lots of FIXME:s and potential non functional stuff.
When this serie is committed, I'd appreciate feeback of running debugging stuff with DBGHELP_DWARF_VERSION env variable set to 4.
As wine's modules are still compiled with dwarf2, and distros are moving to dwarf5, the loadable dwarf4 modules are a scarse resource ;-)
A+
---
Eric Pouech (10): dbghelp{dwarf}: don't recompute location when said location is complex dbghelp{dwarf}: properly parse 32 vs bit 64bit entities dbghelp{dwarf}: correctly handle attributes according to 32bit or 64bit format dbghelp{dwarf}: Added support for FORM_loc_offset, FORM_sec_offset dbghelp{dwarf}: Added support for FORM_exprloc dbghelp{dwarf}: handle errors in dwarf2_fill_attr by returning a boolean dbghelp{dwarf}: added definitions of some GNU extenstions for FORM:s. dbghelp{dwarf}: Validate that a string is in the section boundary before using it dbghelp{dwarf}: Detect auto reference between a dwarf's DIE and its type dbghelp: Properly parse line number header for DWARF4 debug info
dlls/dbghelp/dwarf.c | 148 +++++++++++++++++++++++++++++++++---------- dlls/dbghelp/dwarf.h | 5 ++ 2 files changed, 118 insertions(+), 35 deletions(-)