commit | ba07021fadad855a1f3959d7677203c93be327a8 | [log] [tgz] |
---|---|---|
author | Sid Nayyar <sidnayyar@google.com> | Mon Feb 19 19:20:15 2024 +0000 |
committer | Giuliano Procida <gprocida@google.com> | Fri Mar 08 14:23:07 2024 +0000 |
tree | 500ef87beca9e8e57c7a5940eab6c81e695a400f | |
parent | df42034b3ac4f7c86a9db668b5720bdfed601b8e [diff] |
proto writer: add method returning a mapping from external to internal IDs This mapping in the STG proto transformer will be used to describe STG graph nodes, using their external IDs for edge annotation. Also rename external ID map for better code clarity. PiperOrigin-RevId: 608373212 Change-Id: I5da4cd3f1dcd2932a73787df76ca1b99af7923ea
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.
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 |
catch2[^2] | catch2 | catch2-devel |
[^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 kernel-team@android.com.