Abigail reader: split into type, corpus and document handling

libabigail XML can represent the ABI for a single binary object
(a.k.a.  corpus) or for a group of objects (such as vmlinux plus
modules; a.k.a. corpus group). Type information can be spread across
the whole document, but symbol and alias information is scoped by
corpus.

This change ensures that symbol/alias processing is performed per
corpus and factors out common type information handling into its own
class.

PiperOrigin-RevId: 459445566
Change-Id: I1f1967cd35b23f9d5b6fc36dc9e72118fe80c4a9
2 files changed
tree: adab57fdbfc8aaec67057713deb8f3aed7f405ff
  1. doc/
  2. fuzz/
  3. abigail_reader.cc
  4. abigail_reader.h
  5. btf_reader.cc
  6. btf_reader.h
  7. btfinfo.cc
  8. CONTRIBUTING.md
  9. crc.h
  10. elf_reader.cc
  11. elf_reader.h
  12. error.h
  13. error_test.cc
  14. id.h
  15. LICENSE
  16. METADATA
  17. MODULE_LICENSE_LLVM
  18. order.h
  19. order_test.cc
  20. OWNERS
  21. README.md
  22. reporting.cc
  23. reporting.h
  24. scc.h
  25. scc_test.cc
  26. stg.cc
  27. stg.h
  28. stgdiff.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.