Structure of dwarf info: an image, made of several compilation units, each compilation unit contains several debug info entries (DIE in dwarf-ish)
We currently parse all of those in one pass. This needs to be reviewed for Dwarf4: - a DIE can reference another DIE in another compilation unit we currently support reference into the same CU only => we need to handle parsing of several CU at the same time - a DIE can reference a DIE in another image (with GNU's extension in dwarf4, will become standard in dwarf5) => this is used for example to store all C++ basic debug info (like STL) in a dedicated image, that is shared across several modules (this case is done at system level)
This serie basically refactors the parsing mechanism to decouple the module parsing from the compilation unit parsing. It implements reference to DIE in another CU of same image.
Next serie will focus on reference into another image.
--
Eric Pouech (9): dbghelp/dwarf: separate cu handling from module handling dbghelp/dwarf: Moving the symt_cache from the unit context into the module context dbghelp/dwarf: Keep open and keep track of parse_context_t inside a module_context_t dbghelp: split in two phases the parsing of a dwarf compilation unit dbghelp/dwarf: Added ability to get to a DIE in a different CU dbghelp/dwarf: Properly supporting DW_FORM_ref_addr in type DIE lookup dbghelp/dwarf: Detect out of section sibling DIE information dbghelp/dwarf: add reference for a DIE to its CU programs/winedbg: show dwarf version(s) used for a module
dlls/dbghelp/dwarf.c | 288 ++++++++++++++++++++++++++-------------- programs/winedbg/info.c | 13 +- 2 files changed, 202 insertions(+), 99 deletions(-)