One major change of Dwarf3/4 over Dwarf2 is that the size of some attributes (like addresses among others) is parametrized at the level of a compilation unit.
Current dbghelp code stores such CU header parameters at the module's level (assuming it's the same across all CU:s of a module).
This serie: - mainly changes the internal data model by attaching those parameters at the CU level (except for .eh_frame section) - it also allows to enable loading of dwarf3/4 debug info if the DBGHELP_DWARF_VERSION environment variable is set to 3 or 4.
I don't recommend at this stage using this variable; it's better to delay until next serie (which shall cover the rest of the syntaxic changes in dwarf format; more series afterwards will cover more semantic changes and extensions).
A+
---
Eric Pouech (10): dbghelp{dwarf}: Allow tweaking from env variable which DWARF version is to be loaded. dbghelp{dwarf}: introdicting dwarf2_cuhead_s a structure to hold compilation unit parsing info dbghelp{dwarf}: share compilation unit header information dbghelp{dwarf}: add word size parameter to parse_addr() internal function dbghelp{dwarf}: now pass dwarf2_cuhead_t for addr details to swallow_attribute dbghelp{dwarf}: now passing a parse_cuhead_t to compute_location() dbghelp{dwarf}: passing word_size as a parameter to a couple of frame related functions dbghelp{dwarf}: now using word_size from cuhead_t dbghelp{dwarf}: passing dwarf2_cuhead_t to lookuploclist() dbghelp{dwarf}: initialize module's word_size at module load time
dlls/dbghelp/dbghelp_private.h | 1 + dlls/dbghelp/dwarf.c | 167 ++++++++++++++++++++------------- dlls/dbghelp/symbol.c | 1 + 3 files changed, 103 insertions(+), 66 deletions(-)