DWARF reading: add methods to traverse DWARF tree

Add a method to get compile units from `Handler` and an accessor to
their descendants. Both methods return `std::vector<Entry>`,
because `Entry` represents a node of DWARF tree.

Add a simple traversal over the DWARF tree to exercise the code.

PiperOrigin-RevId: 487832748
Change-Id: I2d59f42dce58e8178f03fb44c42df34a8163eb66
3 files changed
tree: adb88a85854ed49babd3288884dab2f81aa78fa3
  1. doc/
  2. fuzz/
  3. testdata/
  4. abigail_reader.cc
  5. abigail_reader.h
  6. btf_reader.cc
  7. btf_reader.h
  8. catch.cc
  9. CONTRIBUTING.md
  10. crc.h
  11. dwarf.cc
  12. dwarf.h
  13. elf_loader.cc
  14. elf_loader.h
  15. elf_reader.cc
  16. elf_reader.h
  17. error.h
  18. error_test.cc
  19. file_descriptor.cc
  20. file_descriptor.h
  21. id.h
  22. LICENSE
  23. METADATA
  24. MODULE_LICENSE_LLVM
  25. order.h
  26. order_test.cc
  27. OWNERS
  28. post_processing.cc
  29. post_processing.h
  30. README.md
  31. reporting.cc
  32. reporting.h
  33. scc.h
  34. scc_test.cc
  35. stg.cc
  36. stg.h
  37. stgdiff.cc
  38. stgdiff_test.cc
  39. stginfo.cc
README.md

Symbol-Type Graph (STG)

The STG (symbol-type graph) is an ABI representation and this project contains tools for the creation and comparison of such representations. At present parsers exist for libabigail's ABI XML (C types only) and BTF. The ABI diff tool, stgdiff, supports multiple reporting options. This software currently depends on libabigail for ELF symbol functionality, on libxml2 for XML parsing and on Linux UAPI headers for BTF types.

How to build the project

TBD

Contributions

See CONTRIBUTING.md for details.