mirror of
git://sourceware.org/git/libabigail.git
synced 2024-12-15 22:44:41 +00:00
Bug 27165 - Better support multi-language binaries
In some binaries, a DIE named I originating from a compilation unit written in the C++ language can be an implementation of a DIE named S (linked through the DW_AT_specification attribute on I) originating from a compilation unit written in, say, the C language. In that case, when are we looking at I and try to get the scope of S (which the DWARF reader considers as the logical scope of I) get_scope_for_die needs to look at the DW_AT_language attribute carried by the compilation unit DIE of S. At the moment, we wrongly look at the DW_AT_language carried by the compilation unit DIE of I and we deduce the wrong language (C++ instead of C). This patch fixes that. * src/abg-dwarf-reader.cc (get_scope_for_die): Get the language of the DIE from the compilation unit of the DIE itself. * tests/data/test-types-stability/PR27165-libzmq.so.5.2.3: New test input. * tests/data/test-types-stability/PR27165-libzmq.so.5.2.3.debug: Debug information for the new test input. * tests/data/Makefile.am: Add the test inputs above to the source distribution. * tests/test-types-stability.cc (elf_paths): Add the new test inputs to this test harness. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
This commit is contained in:
parent
23046152e0
commit
271e3afaf6
@ -12777,7 +12777,9 @@ get_scope_for_die(read_context& ctxt,
|
||||
{
|
||||
const die_source source_of_die = ctxt.get_die_source(die);
|
||||
|
||||
if (is_c_language(ctxt.cur_transl_unit()->get_language()))
|
||||
translation_unit::language die_lang = translation_unit::LANG_UNKNOWN;
|
||||
ctxt.get_die_language(die, die_lang);
|
||||
if (is_c_language(die_lang))
|
||||
{
|
||||
ABG_ASSERT(dwarf_tag(die) != DW_TAG_member);
|
||||
return ctxt.global_scope();
|
||||
|
@ -569,6 +569,8 @@ test-types-stability/pr19433-custom0 \
|
||||
test-types-stability/pr19141-get5d.o \
|
||||
test-types-stability/pr19142-topo.o \
|
||||
test-types-stability/pr19204-libtcmalloc.so.4.2.6-xlc \
|
||||
test-types-stability/PR27165-libzmq.so.5.2.3 \
|
||||
test-types-stability/PR27165-libzmq.so.5.2.3.debug \
|
||||
\
|
||||
test-diff-filter/test0-v0.cc \
|
||||
test-diff-filter/test0-v1.cc \
|
||||
|
BIN
tests/data/test-types-stability/PR27165-libzmq.so.5.2.3
Executable file
BIN
tests/data/test-types-stability/PR27165-libzmq.so.5.2.3
Executable file
Binary file not shown.
BIN
tests/data/test-types-stability/PR27165-libzmq.so.5.2.3.debug
Executable file
BIN
tests/data/test-types-stability/PR27165-libzmq.so.5.2.3.debug
Executable file
Binary file not shown.
@ -48,6 +48,7 @@ const char* elf_paths[] =
|
||||
"data/test-types-stability/pr19141-get5d.o",
|
||||
"data/test-types-stability/pr19142-topo.o",
|
||||
"data/test-types-stability/pr19204-libtcmalloc.so.4.2.6-xlc",
|
||||
"data/test-types-stability/PR27165-libzmq.so.5.2.3",
|
||||
// The below should always be the last element of array.
|
||||
0
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user