libabigail/tests/data/test-abidiff/test-PR18791-report0.txt
Dodji Seketeli 06fa2fd968 comparison: Better sort function difference report
Looking at the result of builds on various platforms, it appears that
the order of the method change reports in the
test29-vtable-changes-report-0.txt of runtestdiffdwarf was not stable
across all platforms. debian-armhf was exhibiting this change in
output, for instance:

    --- /var/lib/buildbot/workers/wildebeest/libabigail-try-debian-armhf/build/tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt
	2024-03-04 08:56:42.307366590 +0000
    +++ /var/lib/buildbot/workers/wildebeest/libabigail-try-debian-armhf/build/tests/output/test-diff-dwarf/test29-vtable-changes-report-0.txt
	2024-03-04 09:20:22.146334907 +0000
    @@ -19,13 +19,13 @@
		 implicit parameter 0 of type 'S* const' has sub-type
	changes:
		   in unqualified underlying type 'S*':
		     pointed to type 'struct S' changed, as being reported
    +          'method virtual S::~S(int)' has some sub-type changes:
    +            implicit parameter 0 of type 'S*' has sub-type changes:
    +              pointed to type 'struct S' changed, as being reported
	       'method virtual S::~S()' has some sub-type changes:
		 implicit parameter 0 of type 'S* const' has sub-type
	changes:
		   in unqualified underlying type 'S*':
		     pointed to type 'struct S' changed, as being reported
    -          'method virtual S::~S(int)' has some sub-type changes:
    -            implicit parameter 0 of type 'S*' has sub-type changes:
    -              pointed to type 'struct S' changed, as being reported
	       'method virtual void S::fn0()' has some sub-type changes:
		 implicit parameter 0 of type 'S*' has sub-type changes:
		   pointed to type 'struct S' changed, as being reported

Better handling the sorting of function changes should hopefully fix
this issue.

	* src/abg-comparison-priv.h (is_less_than): Declare new helper
	function.
	(function_decl_diff_comp::operator(const function_decl_diff&,
	                                   const function_decl_diff&)):
	Use it here.
	(virtual_member_function_diff_comp::operator(const function_decl_diff&,
	                                             const function_decl_diff&)):
	Likewise.
	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
	* tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt:
	Adjust.
	* tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt:
	Adjust.
	* tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt:
	Adjust.
	* tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt:
	Adjust.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2024-03-04 13:34:24 +01:00

278 lines
18 KiB
Plaintext

Functions changes summary: 1 Removed, 43 Changed, 1 Added functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
1 Removed function:
[D] 'method void std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_clear()'
1 Added function:
[A] 'method void std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >::_M_clear()'
43 functions with some indirect sub-type change:
[C] 'method bool sigc::connection::block(bool)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
in pointed to type 'struct sigc::connection':
type size hasn't changed
1 data member change:
type of 'slot_base* slot_' changed:
in pointed to type 'class sigc::slot_base':
type size hasn't changed
1 data member change:
type of 'rep_type* rep_' changed:
in pointed to type 'typedef sigc::slot_base::rep_type':
underlying type 'struct sigc::internal::slot_rep' changed:
type size hasn't changed
1 base class change:
'struct sigc::trackable' changed:
type size hasn't changed
1 data member change:
type of 'trackable_callback_list* callback_list_' changed:
in pointed to type 'struct sigc::internal::trackable_callback_list':
type size changed from 192 to 256 (in bits)
2 data member changes:
type of 'sigc::internal::trackable_callback_list::callback_list callbacks_' changed:
underlying type 'class std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' changed:
type name changed from 'std::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >' to 'std::__cxx11::list<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >'
type size changed from 128 to 192 (in bits)
1 base class deletion:
class std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >
1 base class insertion:
class std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >
'bool clearing_' offset changed from 128 to 192 (in bits) (by +64 bits)
[C] 'method bool sigc::connection::blocked()' has some indirect sub-type changes:
implicit parameter 0 of type 'const sigc::connection*' has sub-type changes:
in pointed to type 'const sigc::connection':
unqualified underlying type 'struct sigc::connection' changed, as reported earlier
[C] 'method sigc::connection::connection(const sigc::connection&)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
pointed to type 'struct sigc::connection' changed, as reported earlier
parameter 1 of type 'const sigc::connection&' has sub-type changes:
in referenced type 'const sigc::connection':
unqualified underlying type 'struct sigc::connection' changed, as reported earlier
[C] 'method sigc::connection::connection(sigc::slot_base&)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
pointed to type 'struct sigc::connection' changed, as reported earlier
parameter 1 of type 'sigc::slot_base&' has sub-type changes:
referenced type 'class sigc::slot_base' changed, as reported earlier
[C] 'method sigc::connection::connection()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
pointed to type 'struct sigc::connection' changed, as reported earlier
[C] 'method void sigc::connection::disconnect()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
pointed to type 'struct sigc::connection' changed, as reported earlier
[C] 'method bool sigc::connection::empty()' has some indirect sub-type changes:
implicit parameter 0 of type 'const sigc::connection*' has sub-type changes:
in pointed to type 'const sigc::connection':
unqualified underlying type 'struct sigc::connection' changed, as reported earlier
[C] 'method bool sigc::connection::operator bool()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
pointed to type 'struct sigc::connection' changed, as reported earlier
[C] 'method sigc::connection& sigc::connection::operator=(const sigc::connection&)' has some indirect sub-type changes:
return type changed:
referenced type 'struct sigc::connection' changed, as reported earlier
implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
pointed to type 'struct sigc::connection' changed, as reported earlier
parameter 1 of type 'const sigc::connection&' has sub-type changes:
in referenced type 'const sigc::connection':
unqualified underlying type 'struct sigc::connection' changed, as reported earlier
[C] 'method void sigc::connection::set_slot(sigc::slot_base*)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
pointed to type 'struct sigc::connection' changed, as reported earlier
parameter 1 of type 'sigc::slot_base*' has sub-type changes:
pointed to type 'class sigc::slot_base' changed, as reported earlier
[C] 'method bool sigc::connection::unblock()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
pointed to type 'struct sigc::connection' changed, as reported earlier
[C] 'method sigc::connection::~connection(int)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::connection*' has sub-type changes:
pointed to type 'struct sigc::connection' changed, as reported earlier
[C] 'method void sigc::internal::signal_impl::block(bool)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
in pointed to type 'struct sigc::internal::signal_impl':
type size changed from 192 to 256 (in bits)
1 data member change:
type of 'std::list<sigc::slot_base, std::allocator<sigc::slot_base> > slots_' changed:
type name changed from 'std::list<sigc::slot_base, std::allocator<sigc::slot_base> >' to 'std::__cxx11::list<sigc::slot_base, std::allocator<sigc::slot_base> >'
type size changed from 128 to 192 (in bits)
1 base class deletion:
class std::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >
1 base class insertion:
class std::__cxx11::_List_base<sigc::slot_base, std::allocator<sigc::slot_base> >
[C] 'method bool sigc::internal::signal_impl::blocked()' has some indirect sub-type changes:
implicit parameter 0 of type 'const sigc::internal::signal_impl*' has sub-type changes:
in pointed to type 'const sigc::internal::signal_impl':
unqualified underlying type 'struct sigc::internal::signal_impl' changed, as reported earlier
[C] 'method void sigc::internal::signal_impl::clear()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
[C] 'method sigc::internal::signal_impl::iterator_type sigc::internal::signal_impl::connect(const sigc::slot_base&)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
parameter 1 of type 'const sigc::slot_base&' has sub-type changes:
in referenced type 'const sigc::slot_base':
unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
[C] 'method sigc::internal::signal_impl::iterator_type sigc::internal::signal_impl::erase(sigc::internal::signal_impl::iterator_type)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
[C] 'method sigc::internal::signal_impl::iterator_type sigc::internal::signal_impl::insert(sigc::internal::signal_impl::iterator_type, const sigc::slot_base&)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
parameter 2 of type 'const sigc::slot_base&' has sub-type changes:
in referenced type 'const sigc::slot_base':
unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
[C] 'method sigc::internal::signal_impl::signal_impl()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
[C] 'method sigc::internal::signal_impl::size_type sigc::internal::signal_impl::size()' has some indirect sub-type changes:
implicit parameter 0 of type 'const sigc::internal::signal_impl*' has sub-type changes:
in pointed to type 'const sigc::internal::signal_impl':
unqualified underlying type 'struct sigc::internal::signal_impl' changed, as reported earlier
[C] 'method void sigc::internal::signal_impl::sweep()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
[C] 'method void sigc::internal::signal_impl::unreference_exec()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::internal::signal_impl*' has sub-type changes:
pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
[C] 'method sigc::internal::trackable_callback_list::~trackable_callback_list(int)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::internal::trackable_callback_list*' has sub-type changes:
pointed to type 'struct sigc::internal::trackable_callback_list' changed, as reported earlier
[C] 'method void sigc::signal_base::block(bool)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
in pointed to type 'struct sigc::signal_base':
type size hasn't changed
1 base class change:
'struct sigc::trackable' changed:
details were reported earlier
1 data member change:
type of 'signal_impl* impl_' changed:
pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
[C] 'method bool sigc::signal_base::blocked()' has some indirect sub-type changes:
implicit parameter 0 of type 'const sigc::signal_base*' has sub-type changes:
in pointed to type 'const sigc::signal_base':
unqualified underlying type 'struct sigc::signal_base' changed, as reported earlier
[C] 'method void sigc::signal_base::clear()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
pointed to type 'struct sigc::signal_base' changed, as reported earlier
[C] 'method sigc::signal_base::iterator_type sigc::signal_base::connect(const sigc::slot_base&)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
pointed to type 'struct sigc::signal_base' changed, as reported earlier
parameter 1 of type 'const sigc::slot_base&' has sub-type changes:
in referenced type 'const sigc::slot_base':
unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
[C] 'method sigc::signal_base::iterator_type sigc::signal_base::erase(sigc::signal_base::iterator_type)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
pointed to type 'struct sigc::signal_base' changed, as reported earlier
[C] 'method sigc::internal::signal_impl* sigc::signal_base::impl()' has some indirect sub-type changes:
return type changed:
pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier
implicit parameter 0 of type 'const sigc::signal_base*' has sub-type changes:
in pointed to type 'const sigc::signal_base':
unqualified underlying type 'struct sigc::signal_base' changed, as reported earlier
[C] 'method sigc::signal_base::iterator_type sigc::signal_base::insert(sigc::signal_base::iterator_type, const sigc::slot_base&)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
pointed to type 'struct sigc::signal_base' changed, as reported earlier
parameter 2 of type 'const sigc::slot_base&' has sub-type changes:
in referenced type 'const sigc::slot_base':
unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
[C] 'method sigc::signal_base& sigc::signal_base::operator=(const sigc::signal_base&)' has some indirect sub-type changes:
return type changed:
referenced type 'struct sigc::signal_base' changed, as reported earlier
implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
pointed to type 'struct sigc::signal_base' changed, as reported earlier
parameter 1 of type 'const sigc::signal_base&' has sub-type changes:
in referenced type 'const sigc::signal_base':
unqualified underlying type 'struct sigc::signal_base' changed, as reported earlier
[C] 'method sigc::signal_base::signal_base(const sigc::signal_base&)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
pointed to type 'struct sigc::signal_base' changed, as reported earlier
parameter 1 of type 'const sigc::signal_base&' has sub-type changes:
in referenced type 'const sigc::signal_base':
unqualified underlying type 'struct sigc::signal_base' changed, as reported earlier
[C] 'method sigc::signal_base::signal_base()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
pointed to type 'struct sigc::signal_base' changed, as reported earlier
[C] 'method sigc::signal_base::size_type sigc::signal_base::size()' has some indirect sub-type changes:
implicit parameter 0 of type 'const sigc::signal_base*' has sub-type changes:
in pointed to type 'const sigc::signal_base':
unqualified underlying type 'struct sigc::signal_base' changed, as reported earlier
[C] 'method void sigc::signal_base::unblock()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
pointed to type 'struct sigc::signal_base' changed, as reported earlier
[C] 'method sigc::signal_base::~signal_base(int)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::signal_base*' has sub-type changes:
pointed to type 'struct sigc::signal_base' changed, as reported earlier
[C] 'method sigc::slot_base::slot_base(sigc::slot_base::rep_type*)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::slot_base*' has sub-type changes:
pointed to type 'class sigc::slot_base' changed, as reported earlier
parameter 1 of type 'sigc::slot_base::rep_type*' has sub-type changes:
pointed to type 'typedef sigc::slot_base::rep_type' changed, as reported earlier
[C] 'method sigc::slot_base::slot_base(const sigc::slot_base&)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::slot_base*' has sub-type changes:
pointed to type 'class sigc::slot_base' changed, as reported earlier
parameter 1 of type 'const sigc::slot_base&' has sub-type changes:
in referenced type 'const sigc::slot_base':
unqualified underlying type 'class sigc::slot_base' changed, as reported earlier
[C] 'method sigc::slot_base::slot_base()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::slot_base*' has sub-type changes:
pointed to type 'class sigc::slot_base' changed, as reported earlier
[C] 'method sigc::slot_base::~slot_base(int)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::slot_base*' has sub-type changes:
pointed to type 'class sigc::slot_base' changed, as reported earlier
[C] 'method sigc::trackable::trackable(const sigc::trackable&)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::trackable*' has sub-type changes:
pointed to type 'struct sigc::trackable' changed, as reported earlier
parameter 1 of type 'const sigc::trackable&' has sub-type changes:
in referenced type 'const sigc::trackable':
unqualified underlying type 'struct sigc::trackable' changed, as reported earlier
[C] 'method sigc::trackable::trackable()' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::trackable*' has sub-type changes:
pointed to type 'struct sigc::trackable' changed, as reported earlier
[C] 'method sigc::trackable::~trackable(int)' has some indirect sub-type changes:
implicit parameter 0 of type 'sigc::trackable*' has sub-type changes:
pointed to type 'struct sigc::trackable' changed, as reported earlier