post processing: remove max_crc_only_changes configuration parameter This option was plumbed through reporting and to stgdiff but there has never been any real control or need for control over this option. The value remains hard coded as 3. PiperOrigin-RevId: 686072309 Change-Id: I427048e854472969265cc4645bf79980efede874
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:
| Distribution | Package |
|---|---|
| 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 15 or later versions. Mininum requirements for a local build are:
| Dependency | Debian | RedHat | Version |
|---|---|---|---|
| build | cmake | cmake | 3.14 |
| ELF, BTF | libelf-dev | elfutils-devel | 0.189 |
| DWARF | libdw-dev | elfutils-devel | 0.189 |
| XML | libxml2-dev | libxml2-devel | 2.9 |
| BTF | linux-libc-dev | kernel-headers | 5.19 |
| native format | libprotobuf-dev | protobuf-devel | 3.19 |
| native format | protobuf-compiler | protobuf-compiler | 3.19 |
| allocator[^1] | libjemalloc-dev | jemalloc-devel | 5 |
| catch2[^2] | catch2 | catch2-devel | 2 (only) |
[^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:
$ ctest
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 [email protected].