mirror of
git://sourceware.org/git/libabigail.git
synced 2024-12-15 06:24:37 +00:00
The Git repository of the Libabigail Project
ad47854627
The current mechanism used by the ctf reader for looking for debug information given a specific Linux symbol is the following: it opens the dictionary (default) which name matches the binary name being processed in the current corpus, e.g. `vmlinux' or `module-name`.ko. However there are symbols and information that are not located in the default dictionary; this is evident comparing the symbols in `Module.symvers' file with ABI XML file, so for example, the ctf reader is expecting to find the information for `LZ4_decompress_fast' symbol in the CTF `vmlinux' archive member, because this symbols is defined in `vmlinux' binary: 0x4c416eb9 LZ4_decompress_fast vmlinux EXPORT_SYMBOL But, it figures out that it is missing. The correct location is `vmlinux#0' dictionary: CTF archive member: vmlinux: ... Function objects: ... CTF archive member: vmlinux#0: Function objects: ... LZ4_decompress_fast -> 0x80037400: (kind 5) int (*) (const char *, char *, int) (aligned at 0x8) ... Therefore, ctf reader must be looking for debug information in the whole archive; fortunately `libctf' provides a fast lookup mechanism using cache, dictionary references, etc., so the penalty performance is ~10%. Now, it make use of `ctf_lookup_by_symbol_name' at first instance which is in charge to locate symbol information given a symbol name on either CTF Function or Variable sections; if the symbol isn't found it tries using `ctf_lookup_variable' to look into the CTF Variable section; this could happens due to `ld' operating with the `--ctf-variables' option which makes function types information to reside in the CTF Variable section. * src/abg-ctf-reader.cc (lookup_symbol_in_ctf_archive): New function. (process_ctf_archive): Use `lookup_symbol_in_ctf_archive'. Signed-off-by: Guillermo E. Martinez <guillermo.e.martinez@oracle.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com> |
||
---|---|---|
.github | ||
autoconf-archive | ||
bash-completion | ||
doc | ||
docker | ||
include | ||
m4 | ||
relicensing-scripts | ||
scripts | ||
src | ||
tests | ||
tools | ||
.clang-format | ||
.gitignore | ||
.mailmap | ||
abigail.m4 | ||
ABIXML-FORMAT-VERSIONS | ||
AUTHORS | ||
ChangeLog | ||
COMMIT-LOG-GUIDELINES | ||
COMPILING | ||
configure.ac | ||
CONTRIBUTING | ||
default.abignore | ||
gen-changelog.py | ||
install-sh | ||
libabigail.pc.in | ||
license-change-2020.txt | ||
LICENSE.txt | ||
ltmain.sh | ||
Makefile.am | ||
NEWS | ||
README | ||
README-DOCKER.md | ||
release-text-template.txt | ||
update-copyright.sh | ||
VISIBILITY |
This is the Application Binary Interface Generic Analysis and Instrumentation Library. It aims at constructing, manipulating, serializing and de-serializing ABI-relevant artifacts. The set of artifacts that we are intersted is made of quantities like types, variable, functions and declarations of a given library or program. For a given library or program this set of quantities is called an ABI corpus. This library aims at (among other things) providing a way to compare two ABI Corpora (apparently the plural of corpus is copora, heh, that's cool), provide detailed information about their differences, and help build tools to infer interesting conclusions about these differences. You are welcome to contribute to this project after reading the files CONTRIBUTING and COMMIT-LOG-GUIDELINES files in the source tree. Communicating with the maintainers of this project -- including sending patches to be include to the source code -- happens via email at libabigail@sourceware.org.