mirror of
git://sourceware.org/git/libabigail.git
synced 2024-12-25 11:12:14 +00:00
af2a94defa
Sinny Kumari reported that abicompat is failing to report ABI changes on a library linked to a small test program. It turned out that the code that compute if a given exported function is to be kept by looking at the white list of symbols to keep has a bug in which the versions of the symbols of the white list were not being reset as they should. Fixed thus. * src/abg-ir.cc (elf_symbol::get_name_and_version_from_id): Always set the version and name of the symbol. * src/abg-corpus.cc (corpus::exported_decls_builder::{keep_wrt_id_of_fns_to_keep, keep_wrt_id_of_vars_to_keep}): Reset the symbol name *and* version before passing it. This is redundant with the fix in elf_symbol::get_name_and_version_from_id() that always set the symbol name and version now, but I felt it makes it easier to understand the fix overall. * tests/data/test-abicompat/libtest7-fn-changed-libapp-v{0,1}.so: New test input binaries. * tests/data/test-abicompat/test7-fn-changed-app: Likewise. * tests/data/test-abicompat/test7-fn-changed-{app, libapp-v0, libapp-v1}.c: Source code of the binary test inputs above. * * tests/data/test-abicompat/test7-fn-changed-{libapp-v0, libapp-v1}.h: Likewise. * tests/data/test-abicompat/test7-fn-changed-report-0.txt: Test input. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-abicompat.cc (int_out_specs): Add the test inputs above to the set of inputs this test harness has to run over. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
20 lines
838 B
Plaintext
20 lines
838 B
Plaintext
ELF file 'test7-fn-changed-app' might not be ABI compatible with 'libtest7-fn-changed-libapp-v1.so' due to differences with 'libtest7-fn-changed-libapp-v0.so' below:
|
|
Functions changes summary: 0 Removed, 2 Changed, 0 Added functions
|
|
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
|
|
|
|
2 functions with some indirect sub-type change:
|
|
|
|
[C]'function float add(float, float)' has some indirect sub-type changes:
|
|
return type changed:
|
|
type name changed from 'float' to 'int'
|
|
|
|
|
|
[C]'function void print(const Student)' has some indirect sub-type changes:
|
|
parameter 1 of type 'const Student' has sub-type changes:
|
|
in unqualified underlying type 'struct Student':
|
|
type size changed from 128 to 192 bits
|
|
1 data member insertion:
|
|
'float Student::percentage', at offset 128 (in bits)
|
|
|
|
|