Bug 17861 - virtual member insertion reported where there's none
Summary: virtual member insertion reported where there's none
Status: RESOLVED FIXED
Alias: None
Product: libabigail
Classification: Unclassified
Component: default (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Dodji Seketeli
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-01-19 18:46 UTC by Petr Machata
Modified: 2015-01-20 11:43 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Petr Machata 2015-01-19 18:46:28 UTC
This came up when comparing new vs. old version of TBB DSO.  Here are relevant dwgrep dumps.  First the old version:

$ dwgrep ~/fedora/tbb/f21/tbb41_20130314oss/build/obj_release/libtbb.so.2 -e 'entry ?TAG_class_type (name == "filter") child (@AT_virtuality == DW_VIRTUALITY_virtual)'
[...]
[28e10]	subprogram
	external (flag_present)	true;
	name (strp)	finalize;
	decl_file (data1)	../../include/tbb/pipeline.h;
	decl_line (data1)	169;
	linkage_name (strp)	_ZN3tbb6filter8finalizeEPv;
	virtuality (data1)	DW_VIRTUALITY_virtual;
	vtable_elem_location (exprloc)	0..0xffffffffffffffff:[0:constu<3>];
	containing_type (ref4)	[28be9];
	accessibility (data1)	DW_ACCESS_public;
	declaration (flag_present)	true;
	object_pointer (ref4)	[28e2c];
	sibling (ref4)	[28e37];

And the new version:

$ dwgrep ~/fedora/tbb/master/tbb43_20141204oss/build/obj_release/libtbb.so.2 -e 'entry ?TAG_class_type (name == "filter") child (@AT_virtuality == DW_VIRTUALITY_virtual)'
[...]
[30c8a]	subprogram
	external (flag_present)	true;
	name (strp)	finalize;
	decl_file (data1)	../../include/tbb/pipeline.h;
	decl_line (data1)	160;
	linkage_name (strp)	_ZN3tbb6filter8finalizeEPv;
	virtuality (data1)	DW_VIRTUALITY_virtual;
	vtable_elem_location (exprloc)	0..0xffffffffffffffff:[0:constu<3>];
	containing_type (ref4)	[30a63];
	accessibility (data1)	DW_ACCESS_public;
	declaration (flag_present)	true;
	object_pointer (ref4)	[30ca6];
	sibling (ref4)	[30cb1];

abidiff reports (among others) the following change:

$ ./tools/abidiff ~/fedora/tbb/f21/tbb41_20130314oss/build/obj_release/libtbb.so.2 ~/fedora/tbb/master/tbb43_20141204oss/build/obj_release/libtbb.so.2
  [C]'method void tbb::pipeline::add_filter(tbb::filter&)' has some indirect sub-type changes:
    parameter 1 of type 'tbb::filter&' has sub-type changes:
      in referenced type 'class tbb::filter':
        1 member function insertion:
          'method virtual void tbb::filter::finalize(void*)', virtual at voffset 3/6
Comment 2 Dodji Seketeli 2015-01-20 11:43:27 UTC
Thanks for filing this problem report.

This issue should be fixed by commit https://sourceware.org/git/gitweb.cgi?p=libabigail.git;a=commit;h=f3344623d305 that landed in the master branch of the git repository.

I am thus closing this report.  Please feel free to re-open it if you are still experiencing the issue.

Cheers!