The STG (symbol-type graph) is an ABI representation and this project contains tools for the creation and comparison of such representations.
The ABI extraction tool,
stg, emits a native ABI format. Parsers exist for libabigail's XML format, BTF and ELF / DWARF.
The ABI diff tool,
stgdiff, supports multiple reporting options.
STG has a versioned native file format. Older formats can be read and rewritten as the latest.
NOTE: STG is under active developement. Tool arguments and behaviour are subject to change.
We intend to package STG for major distributions. Currently we have packages as follows:
|Arch Linux (AUR)||stg-git|
This source code is available at https://android.googlesource.com/platform/external/stg/.
Instructions are included for local and Docker builds.
STG is written in C++20. It is known to compile with GCC 11, Clang 14 or later versions.
[^1]: jemalloc is optional, but will likely improve performance. [^2]: catch2 is optional, but required to build the test suite.
Build STG using CMake as follows:
$ mkdir build && cd build $ cmake .. $ cmake --build . --parallel
Run the STG unit test suite:
A Dockerfile is provided to build a container with the STG tools:
$ docker build -t stg .
And then enter the container:
$ docker run -it stg
Note that the Dockerfile provides only a production image. To use Docker as a development environment, you can comment out everything after the line
# second stage.
After that you may bind your development code to the container:
$ docker run -it $PWD:/src -it stg
The source code is added to
/src, so when your code is bound you can edit on your host and re-compile in the container.
See CONTRIBUTING.md for details.
Please send feedback, questions and bug reports to firstname.lastname@example.org.