From 698f405740b2df441427cfba3dcd43ab853dde1d Mon Sep 17 00:00:00 2001 From: Dodji Seketeli Date: Sun, 28 May 2017 19:40:51 +0200 Subject: [PATCH] Do not report about voffset when it's not set in debug info Sometimes some virtual member functions don't have any virtual offset set in the debug info. This happens for virtual destructors sometimes. In that case, the ABI change report should not refer to that unset virtual offset as being '0'. Rather, it shouldn't refer to it at all. This is what this patch does. * include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel): Initialize the virtual offset to -1. * src/abg-comparison.cc (represent): In the overload to represent a method_decl, do not represent the vofffset if it's not set. * src/abg-writer.cc (write_voffset): The virtual offset is signed because if it's -1, it means no offset is set. * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Adjust. * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust. * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. Signed-off-by: Dodji Seketeli --- .../test28-vtable-changes-report-0.txt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt b/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt index 8b137891..5ec28d83 100644 --- a/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt +++ b/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt @@ -1 +1,25 @@ +Functions changes summary: 0 Removed, 1 Changed, 2 Added functions +Variables changes summary: 0 Removed, 0 Changed, 0 Added variable +Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info +Variable symbols changes summary: 0 Removed, 3 Added variable symbols not referenced by debug info + +2 Added functions: + + 'method virtual S::~S(int)' + note that this adds a new entry to the vtable of struct S + 'method virtual S::~S(int)' + note that this adds a new entry to the vtable of struct S + +1 function with some indirect sub-type change: + + [C]'method void S::bar()' has some indirect sub-type changes: + method void S::bar() is now declared virtual + note that this is an ABI incompatible change to the vtable of struct S + + +3 Added variable symbols not referenced by debug info: + + _ZTI1S, aliases _ZTS1S + _ZTS1S + _ZTV1S, aliases _ZTI1S, _ZTS1S -- 2.43.5