The Git repository of the Libabigail Project
Go to file
Dodji Seketeli a82958b3f5 Bug 29160 - support fn symbol aliasing a var symbol
In binaries originating from OCaml on s390x or ppcle platforms, it can
happen that a function symbol aliases a variable symbol.

By default, the ABIXML reader doesn't expect that.  It expects that
all aliases of a symbol are symbols of the same kind as their target.

This patch relaxes that constraint from the ABIXML reader.  It teaches
read_symbol_db_from_input how to resolve unresolved function (resp.
variable) symbol aliases to variable (resp. function) symbols.

	* src/abg-reader.cc (typedef string_strings_map_type): Define new
	typedef.
	(resolve_symbol_aliases): Define new function.
	(build_elf_symbol_db): Add two new parameters to carry unresolved
	function and variable symbol aliases.  When a symbol alias can't
	resolve to any of the symbols of its kind (function or variable)
	then stage the alias away in the set of unresolved aliases.  That
	set is then going to be resolved later.
	(read_symbol_db_from_input): Add two new parameters to carry
	unresolved function and variable symbol aliases.  Pass them down
	to build_elf_symbol_db.
	(reader::read_corpus): Adjust the invocation of
	read_symbol_db_from_input to get the sets of unresolved function &
	variable symbol aliases.  Invoke the new resolve_symbol_aliases
	the unresolved function & variable aliases.
	* tests/data/test-diff-pkg/PR29610/guestfs-tools-1.51.6-2.el9.s390x-self-check-report.txt:
	New test reference output.
	* tests/data/test-diff-pkg/PR29610/guestfs-tools-1.51.6-2.el9.s390x.rpm:
	New binary test input.
	* tests/data/test-diff-pkg/PR29610/guestfs-tools-debuginfo-1.51.6-2.el9.s390x.rpm:
	Likewise.
	* tests/data/Makefile.am: Add this new test material to source
	distribution.
	* tests/test-diff-pkg.cc (in_out_specs): Add the new test input to
	this test harness.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2024-04-04 17:12:55 +02:00
.github Adding missing newline to build-container workflow 2022-05-17 09:46:16 +02:00
autoconf-archive Replace individual license references with SPDX Identifiers 2020-12-02 11:44:13 +01:00
bash-completion Re-license the project to Apache v2 With LLVM Exception 2020-12-02 11:49:13 +01:00
doc abidb: Introduce a tool to manage the ABI of a Linux distribution 2024-03-22 17:18:17 +01:00
docker Add github actions to support workflows 2022-05-17 00:13:40 +02:00
include Bug 31513 - abidiff considers data members moved to base class as harmful 2024-03-29 17:36:09 +01:00
m4 Delete ltsugar.m4 and pkg.m4 files from m4/ 2015-01-06 09:54:45 +01:00
patches Emit & read undefined interfaces to & from ABIXML 2024-03-14 16:27:14 +01:00
relicensing-scripts Bug 27512 - Remove broken zip-archive support 2021-03-19 10:52:57 +01:00
scripts Re-license the project to Apache v2 With LLVM Exception 2020-12-02 11:49:13 +01:00
src Bug 29160 - support fn symbol aliasing a var symbol 2024-04-04 17:12:55 +02:00
tests Bug 29160 - support fn symbol aliasing a var symbol 2024-04-04 17:12:55 +02:00
tools abidiff: Fix indentation of help string 2024-03-29 16:52:00 +01:00
.clang-format Tweak clang-format configuration 2021-10-19 12:59:18 +02:00
.gitignore .gitignore: Add libabigail-?.* *.orig files 2019-05-22 14:34:23 +02:00
.mailmap Add '.mailmap' 2021-12-17 20:12:20 +01:00
abigail.m4 Re-license the project to Apache v2 With LLVM Exception 2020-12-02 11:49:13 +01:00
ABIXML-FORMAT-VERSIONS Bug 28450 - Fix cloned member function handling in DWARF 2021-11-12 18:31:28 +01:00
AUTHORS Initial AUTHORS and README 2013-02-28 13:25:20 +01:00
ChangeLog ChangeLog: Update for 2.4 release 2023-10-20 18:40:33 +02:00
COMMIT-LOG-GUIDELINES Update the COMMIT-LOG-GUIDELINES file 2016-05-22 23:20:12 +02:00
COMPILING Improve some grammar 2022-02-25 11:24:20 +01:00
configure.ac abidb: Introduce a tool to manage the ABI of a Linux distribution 2024-03-22 17:18:17 +01:00
CONTRIBUTING Improve some grammar 2022-02-25 11:24:20 +01:00
default.abignore Re-license the project to Apache v2 With LLVM Exception 2020-12-02 11:49:13 +01:00
gen-changelog.py gen-changelog.py: Remove long standing debugging output 2023-10-20 18:35:59 +02:00
install-sh Replace individual license references with SPDX Identifiers 2020-12-02 11:44:13 +01:00
libabigail.pc.in Make libxml2 a private dependency wrt pkconfig 2013-08-22 17:41:29 +02:00
license-change-2020.txt Add a license-change-2020.txt file 2020-12-02 11:50:22 +01:00
LICENSE.txt Add the LICENSE.txt file 2020-12-02 11:49:33 +01:00
ltmain.sh Replace individual license references with SPDX Identifiers 2020-12-02 11:44:13 +01:00
Makefile.am Use xz as the default tarball compression format 2022-11-18 13:06:09 +01:00
NEWS Update NEWS file for 2.4 release 2023-10-20 18:40:33 +02:00
README Improve some grammar 2022-02-25 11:24:20 +01:00
README-DOCKER.md Add github actions to support workflows 2022-05-17 00:13:40 +02:00
release-text-template.txt release-text-template.txt: Modernize a little bit. 2023-05-10 16:29:55 +02:00
update-copyright.sh Update copyright year for 2023 2023-01-01 18:19:30 +01:00
VISIBILITY Improve some grammar 2022-02-25 11:24:20 +01:00

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.