commit | 3b8a5c45f07d9231eaf81f40b55aa3a0227d27ca | [log] [tgz] |
---|---|---|
author | Giuliano Procida <gprocida@google.com> | Mon Nov 06 13:22:36 2023 +0000 |
committer | Giuliano Procida <gprocida@google.com> | Mon Nov 06 15:42:03 2023 +0000 |
tree | a90118d0ecfbf22c8a92704ee13fa63b714d5bc2 | |
parent | 6342045aab0a4796edb71b25566cdaefd05848c6 [diff] |
Refresh README Updated to mention: * C++ type support * ELF / DWARF reader * extraction to native format * additional dependencies * C++20 and compiler versions * Docker build no longer involves libabigail and is always multistage * a contact address * distributions and source code PiperOrigin-RevId: 579811075 Change-Id: I5619feb241fdfd5bd4197cb45d504ba83d8e6d80
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.
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 14 or later versions.
Dependency | Debian | RedHat |
---|---|---|
build | cmake | cmake |
ELF, BTF | libelf-dev | elfutils-devel |
DWARF | libdw-dev | elfutils-devel |
XML | libxml2-dev | libxml2-devel |
BTF | linux-libc-dev | kernel-headers |
native format | libprotobuf-dev | protobuf-devel |
native format | protobuf-compiler | protobuf-compiler |
allocator[^1] | libjemalloc-dev | jemalloc-devel |
[^1]: jemalloc is optional but will likely improve performance.
Build STG using CMake as follows:
$ mkdir build && cd build $ cmake .. $ cmake --build . --parallel
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 kernel-team@android.com.