summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@redhat.com>2022-03-07 17:55:05 +0100
committerDodji Seketeli <dodji@redhat.com>2022-03-10 10:57:53 +0100
commit9eb931c10dc5d5fbeed4219eff2e9332fa3cb67c (patch)
tree946a0953df86f2c2b0854543d4f3f68f4c1e1771
parentcomparison: Factorize the code that inserts diff nodes to the graph (diff)
downloadlibabigail-9eb931c10dc5d5fbeed4219eff2e9332fa3cb67c.tar.gz
libabigail-9eb931c10dc5d5fbeed4219eff2e9332fa3cb67c.tar.bz2
libabigail-9eb931c10dc5d5fbeed4219eff2e9332fa3cb67c.tar.xz
comparison: Avoid sorting diff nodes with wrong criteria
This should address PR28939, reported at https://sourceware.org/bugzilla/show_bug.cgi?id=28939 In function_type_diff::chain_into_hierarchy, the diff details represented by the diff nodes of the function parameters are already sorted in the vector priv->sorted_changed_parms_by_id_. Note that the sorting of function parameter diff nodes was done using a criterion that takes into account the position of each function parameter. Members of the vector priv->sorted_changed_parms_by_id_ are then added to the diff graph using diff::append_child_node. The problem is that diff::append_child_node sorts the children nodes /again/, this time using a criterion that is different from the one used in function_type_diff::chain_into_hierarchy. This is wrong. This patch prevents diff::append_child_node from sorting the children node because they have been sorted already. * src/abg-comparison.cc (diff::append_child_node): Do not sort children nodes here because they must have been sorted already. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test41-report-0.txt: Likewise. * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
-rw-r--r--src/abg-comparison.cc5
-rw-r--r--tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt6
-rw-r--r--tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt6
-rw-r--r--tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt6
-rw-r--r--tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt6
-rw-r--r--tests/data/test-diff-filter/test41-report-0.txt49
-rw-r--r--tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt19
7 files changed, 45 insertions, 52 deletions
diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc
index 5e61ba50..193af52f 100644
--- a/src/abg-comparison.cc
+++ b/src/abg-comparison.cc
@@ -2005,11 +2005,6 @@ diff::append_child_node(diff_sptr d)
2005 // above. 2005 // above.
2006 priv_->children_.push_back(d.get()); 2006 priv_->children_.push_back(d.get());
2007 2007
2008 diff_less_than_functor comp;
2009 std::sort(priv_->children_.begin(),
2010 priv_->children_.end(),
2011 comp);
2012
2013 d->priv_->parent_ = this; 2008 d->priv_->parent_ = this;
2014} 2009}
2015 2010
diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
index 20b3859f..77510262 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
@@ -1270,8 +1270,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
1270 'void* alloc', at offset 320 (in bits) 1270 'void* alloc', at offset 320 (in bits)
1271 'OffloadDescriptor::OmpAsyncLastEventType omp_last_event_type', at offset 608 (in bits) 1271 'OffloadDescriptor::OmpAsyncLastEventType omp_last_event_type', at offset 608 (in bits)
1272 4 data member changes (3 filtered): 1272 4 data member changes (3 filtered):
1273 'CeanReadRanges* read_rng_src' offset changed from 320 to 384 (in bits) (by +64 bits) 1273 type of 'CeanReadRanges* read_rng_src' changed:
1274 type of 'CeanReadRanges* read_rng_dst' changed:
1275 in pointed to type 'struct CeanReadRanges': 1274 in pointed to type 'struct CeanReadRanges':
1276 type size changed from 512 to 576 (in bits) 1275 type size changed from 512 to 576 (in bits)
1277 1 data member insertion: 1276 1 data member insertion:
@@ -1284,7 +1283,8 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
1284 'int last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits) 1283 'int last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits)
1285 'int64_t init_offset' offset changed from 320 to 384 (in bits) (by +64 bits) 1284 'int64_t init_offset' offset changed from 320 to 384 (in bits) (by +64 bits)
1286 'CeanReadDim Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits) 1285 'CeanReadDim Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits)
1287 and offset changed from 384 to 448 (in bits) (by +64 bits) 1286 and offset changed from 320 to 384 (in bits) (by +64 bits)
1287 'CeanReadRanges* read_rng_dst' offset changed from 384 to 448 (in bits) (by +64 bits)
1288 'int64_t ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits) 1288 'int64_t ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits)
1289 'bool is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits) 1289 'bool is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits)
1290 'OffloadHostTimerData* m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits) 1290 'OffloadHostTimerData* m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits)
diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
index 65fa3f1a..5cf624c1 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
@@ -1270,8 +1270,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
1270 'void* alloc', at offset 320 (in bits) at offload_host.h:222:1 1270 'void* alloc', at offset 320 (in bits) at offload_host.h:222:1
1271 'OffloadDescriptor::OmpAsyncLastEventType omp_last_event_type', at offset 608 (in bits) at offload_host.h:227:1 1271 'OffloadDescriptor::OmpAsyncLastEventType omp_last_event_type', at offset 608 (in bits) at offload_host.h:227:1
1272 4 data member changes (3 filtered): 1272 4 data member changes (3 filtered):
1273 'CeanReadRanges* read_rng_src' offset changed from 320 to 384 (in bits) (by +64 bits) 1273 type of 'CeanReadRanges* read_rng_src' changed:
1274 type of 'CeanReadRanges* read_rng_dst' changed:
1275 in pointed to type 'struct CeanReadRanges' at cean_util.h:58:1: 1274 in pointed to type 'struct CeanReadRanges' at cean_util.h:58:1:
1276 type size changed from 512 to 576 (in bits) 1275 type size changed from 512 to 576 (in bits)
1277 1 data member insertion: 1276 1 data member insertion:
@@ -1284,7 +1283,8 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
1284 'int last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits) 1283 'int last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits)
1285 'int64_t init_offset' offset changed from 320 to 384 (in bits) (by +64 bits) 1284 'int64_t init_offset' offset changed from 320 to 384 (in bits) (by +64 bits)
1286 'CeanReadDim Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits) 1285 'CeanReadDim Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits)
1287 and offset changed from 384 to 448 (in bits) (by +64 bits) 1286 and offset changed from 320 to 384 (in bits) (by +64 bits)
1287 'CeanReadRanges* read_rng_dst' offset changed from 384 to 448 (in bits) (by +64 bits)
1288 'int64_t ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits) 1288 'int64_t ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits)
1289 'bool is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits) 1289 'bool is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits)
1290 'OffloadHostTimerData* m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits) 1290 'OffloadHostTimerData* m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits)
diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
index 0248394f..68014539 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
@@ -1270,8 +1270,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
1270 'void* alloc', at offset 0x28 (in bytes) at offload_host.h:222:1 1270 'void* alloc', at offset 0x28 (in bytes) at offload_host.h:222:1
1271 'OffloadDescriptor::OmpAsyncLastEventType omp_last_event_type', at offset 0x4c (in bytes) at offload_host.h:227:1 1271 'OffloadDescriptor::OmpAsyncLastEventType omp_last_event_type', at offset 0x4c (in bytes) at offload_host.h:227:1
1272 4 data member changes (3 filtered): 1272 4 data member changes (3 filtered):
1273 'CeanReadRanges* read_rng_src' offset changed from 0x28 to 0x30 (in bytes) (by +0x8 bytes) 1273 type of 'CeanReadRanges* read_rng_src' changed:
1274 type of 'CeanReadRanges* read_rng_dst' changed:
1275 in pointed to type 'struct CeanReadRanges' at cean_util.h:58:1: 1274 in pointed to type 'struct CeanReadRanges' at cean_util.h:58:1:
1276 type size changed from 0x40 to 0x48 (in bytes) 1275 type size changed from 0x40 to 0x48 (in bytes)
1277 1 data member insertion: 1276 1 data member insertion:
@@ -1284,7 +1283,8 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
1284 'int last_noncont_ind' offset changed from 0x20 to 0x28 (in bytes) (by +0x8 bytes) 1283 'int last_noncont_ind' offset changed from 0x20 to 0x28 (in bytes) (by +0x8 bytes)
1285 'int64_t init_offset' offset changed from 0x28 to 0x30 (in bytes) (by +0x8 bytes) 1284 'int64_t init_offset' offset changed from 0x28 to 0x30 (in bytes) (by +0x8 bytes)
1286 'CeanReadDim Dim[1]' offset changed from 0x30 to 0x38 (in bytes) (by +0x8 bytes) 1285 'CeanReadDim Dim[1]' offset changed from 0x30 to 0x38 (in bytes) (by +0x8 bytes)
1287 and offset changed from 0x30 to 0x38 (in bytes) (by +0x8 bytes) 1286 and offset changed from 0x28 to 0x30 (in bytes) (by +0x8 bytes)
1287 'CeanReadRanges* read_rng_dst' offset changed from 0x30 to 0x38 (in bytes) (by +0x8 bytes)
1288 'int64_t ptr_arr_offset' offset changed from 0x38 to 0x40 (in bytes) (by +0x8 bytes) 1288 'int64_t ptr_arr_offset' offset changed from 0x38 to 0x40 (in bytes) (by +0x8 bytes)
1289 'bool is_arr_ptr_el' offset changed from 0x40 to 0x48 (in bytes) (by +0x8 bytes) 1289 'bool is_arr_ptr_el' offset changed from 0x40 to 0x48 (in bytes) (by +0x8 bytes)
1290 'OffloadHostTimerData* m_timer_data' offset changed from 0xf8 to 0x100 (in bytes) (by +0x8 bytes) 1290 'OffloadHostTimerData* m_timer_data' offset changed from 0xf8 to 0x100 (in bytes) (by +0x8 bytes)
diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
index 75b7116d..e14819a4 100644
--- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
+++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
@@ -186,8 +186,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
186 'void* alloc', at offset 320 (in bits) 186 'void* alloc', at offset 320 (in bits)
187 'OffloadDescriptor::OmpAsyncLastEventType omp_last_event_type', at offset 608 (in bits) 187 'OffloadDescriptor::OmpAsyncLastEventType omp_last_event_type', at offset 608 (in bits)
188 4 data member changes (3 filtered): 188 4 data member changes (3 filtered):
189 'CeanReadRanges* read_rng_src' offset changed from 320 to 384 (in bits) (by +64 bits) 189 type of 'CeanReadRanges* read_rng_src' changed:
190 type of 'CeanReadRanges* read_rng_dst' changed:
191 in pointed to type 'struct CeanReadRanges': 190 in pointed to type 'struct CeanReadRanges':
192 type size changed from 512 to 576 (in bits) 191 type size changed from 512 to 576 (in bits)
193 1 data member insertion: 192 1 data member insertion:
@@ -200,7 +199,8 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
200 'int last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits) 199 'int last_noncont_ind' offset changed from 256 to 320 (in bits) (by +64 bits)
201 'int64_t init_offset' offset changed from 320 to 384 (in bits) (by +64 bits) 200 'int64_t init_offset' offset changed from 320 to 384 (in bits) (by +64 bits)
202 'CeanReadDim Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits) 201 'CeanReadDim Dim[1]' offset changed from 384 to 448 (in bits) (by +64 bits)
203 and offset changed from 384 to 448 (in bits) (by +64 bits) 202 and offset changed from 320 to 384 (in bits) (by +64 bits)
203 'CeanReadRanges* read_rng_dst' offset changed from 384 to 448 (in bits) (by +64 bits)
204 'int64_t ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits) 204 'int64_t ptr_arr_offset' offset changed from 448 to 512 (in bits) (by +64 bits)
205 'bool is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits) 205 'bool is_arr_ptr_el' offset changed from 512 to 576 (in bits) (by +64 bits)
206 'OffloadHostTimerData* m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits) 206 'OffloadHostTimerData* m_timer_data' offset changed from 1984 to 2048 (in bits) (by +64 bits)
diff --git a/tests/data/test-diff-filter/test41-report-0.txt b/tests/data/test-diff-filter/test41-report-0.txt
index e6caf368..2da31ef6 100644
--- a/tests/data/test-diff-filter/test41-report-0.txt
+++ b/tests/data/test-diff-filter/test41-report-0.txt
@@ -42,7 +42,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
42 in unqualified underlying type 'class abigail::xml_writer::write_context' at abg-writer.cc:155:1: 42 in unqualified underlying type 'class abigail::xml_writer::write_context' at abg-writer.cc:155:1:
43 type size hasn't changed 43 type size hasn't changed
44 4 data member changes (3 filtered): 44 4 data member changes (3 filtered):
45 type of 'abigail::xml_writer::type_ptr_map m_emitted_decl_only_map' changed: 45 type of 'abigail::xml_writer::type_ptr_map m_type_id_map' changed:
46 underlying type 'class std::tr1::unordered_map<abigail::ir::type_base*, abigail::interned_string, abigail::xml_writer::type_hasher, abigail::diff_utils::deep_ptr_eq_functor, std::allocator<std::pair<abigail::ir::type_base* const, abigail::interned_string> > >' at unordered_map.h:180:1 changed: 46 underlying type 'class std::tr1::unordered_map<abigail::ir::type_base*, abigail::interned_string, abigail::xml_writer::type_hasher, abigail::diff_utils::deep_ptr_eq_functor, std::allocator<std::pair<abigail::ir::type_base* const, abigail::interned_string> > >' at unordered_map.h:180:1 changed:
47 type name changed from 'std::tr1::unordered_map<abigail::ir::type_base*, abigail::interned_string, abigail::xml_writer::type_hasher, abigail::diff_utils::deep_ptr_eq_functor, std::allocator<std::pair<abigail::ir::type_base* const, abigail::interned_string> > >' to 'std::tr1::unordered_map<abigail::ir::type_base *, abigail::interned_string, abigail::xml_writer::type_hasher, abigail::diff_utils::deep_ptr_eq_functor, std::allocator<std::pair<abigail::ir::type_base *const, abigail::interned_string> > >' 47 type name changed from 'std::tr1::unordered_map<abigail::ir::type_base*, abigail::interned_string, abigail::xml_writer::type_hasher, abigail::diff_utils::deep_ptr_eq_functor, std::allocator<std::pair<abigail::ir::type_base* const, abigail::interned_string> > >' to 'std::tr1::unordered_map<abigail::ir::type_base *, abigail::interned_string, abigail::xml_writer::type_hasher, abigail::diff_utils::deep_ptr_eq_functor, std::allocator<std::pair<abigail::ir::type_base *const, abigail::interned_string> > >'
48 type size hasn't changed 48 type size hasn't changed
@@ -113,23 +113,25 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
113 1 base class insertion: 113 1 base class insertion:
114 class std::allocator<std::__cxx11::basic_string<char> > at allocator.h:108:1 114 class std::allocator<std::__cxx11::basic_string<char> > at allocator.h:108:1
115 3 data member changes (1 filtered): 115 3 data member changes (1 filtered):
116 name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_map' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl::_M_map' at stl_deque.h:550:1 116 type of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Map_pointer _M_map' changed:
117 name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_start' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl::_M_start' at stl_deque.h:552:1 117 typedef name changed from std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Map_pointer to std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Map_pointer at stl_deque.h:542:1
118 type of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::iterator _M_finish' changed: 118 underlying type 'typedef std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_Map_pointer' at stl_deque.h:123:1 changed:
119 typedef name changed from std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_Map_pointer to std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_Map_pointer at stl_deque.h:112:1
120 underlying type 'typedef std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::__ptr_to' at stl_deque.h:116:1 changed:
121 entity changed from 'typedef std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::__ptr_to' to compatible type 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >**'
122 in pointed to type 'class std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >':
123 entity changed from 'class std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >' to 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*'
124 type size changed from 256 to 64 (in bits)
125 and name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_map' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl::_M_map' at stl_deque.h:550:1
126 type of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::iterator _M_start' changed:
119 typedef name changed from std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::iterator to std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::iterator at stl_deque.h:485:1 127 typedef name changed from std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::iterator to std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::iterator at stl_deque.h:485:1
120 underlying type 'struct std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>' at stl_deque.h:106:1 changed: 128 underlying type 'struct std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>' at stl_deque.h:106:1 changed:
121 type name changed from 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>' to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>' 129 type name changed from 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>' to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>'
122 type size hasn't changed 130 type size hasn't changed
123 1 data member changes (3 filtered): 131 1 data member changes (3 filtered):
124 type of 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_Map_pointer _M_node' changed: 132 name of 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_M_node' changed to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_M_node' at stl_deque.h:140:1
125 typedef name changed from std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_Map_pointer to std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_Map_pointer at stl_deque.h:112:1 133 and name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_start' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl::_M_start' at stl_deque.h:552:1
126 underlying type 'typedef std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::__ptr_to' at stl_deque.h:116:1 changed: 134 name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_finish' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl::_M_finish' at stl_deque.h:553:1
127 entity changed from 'typedef std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::__ptr_to' to compatible type 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >**'
128 in pointed to type 'class std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >':
129 entity changed from 'class std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >' to 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*'
130 type size changed from 256 to 64 (in bits)
131 and name of 'std::_Deque_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>::_M_node' changed to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_M_node' at stl_deque.h:140:1
132 and name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_Deque_impl::_M_finish' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_Deque_impl::_M_finish' at stl_deque.h:553:1
133 and name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_impl' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_M_impl' at stl_deque.h:631:1 135 and name of 'std::_Deque_base<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_impl' changed to 'std::_Deque_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::_M_impl' at stl_deque.h:631:1
134 136
135 [C] 'method void std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_M_initialize_map(std::size_t)' at stl_deque.h:625:1 has some indirect sub-type changes: 137 [C] 'method void std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_M_initialize_map(std::size_t)' at stl_deque.h:625:1 has some indirect sub-type changes:
@@ -139,20 +141,21 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
139 1 data member change: 141 1 data member change:
140 type of 'std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_Deque_impl _M_impl' changed: 142 type of 'std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_Deque_impl _M_impl' changed:
141 type size hasn't changed 143 type size hasn't changed
142 1 data member changes (2 filtered): 144 2 data member changes (1 filtered):
143 type of 'std::_Deque_base<unsigned int, std::allocator<unsigned int> >::iterator _M_finish' changed: 145 type of 'std::_Deque_base<unsigned int, std::allocator<unsigned int> >::_Map_pointer _M_map' changed:
146 underlying type 'typedef std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::_Map_pointer' at stl_deque.h:123:1 changed:
147 typedef name changed from std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::_Map_pointer to std::_Deque_iterator<unsigned int, unsigned int &, unsigned int *>::_Map_pointer at stl_deque.h:112:1
148 underlying type 'typedef std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::__ptr_to' at stl_deque.h:116:1 changed:
149 entity changed from 'typedef std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::__ptr_to' to compatible type 'unsigned int**'
150 in pointed to type 'unsigned int':
151 entity changed from 'unsigned int' to 'unsigned int*'
152 type size changed from 32 to 64 (in bits)
153 type of 'std::_Deque_base<unsigned int, std::allocator<unsigned int> >::iterator _M_start' changed:
144 underlying type 'struct std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>' at stl_deque.h:106:1 changed: 154 underlying type 'struct std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>' at stl_deque.h:106:1 changed:
145 type name changed from 'std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>' to 'std::_Deque_iterator<unsigned int, unsigned int &, unsigned int *>' 155 type name changed from 'std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>' to 'std::_Deque_iterator<unsigned int, unsigned int &, unsigned int *>'
146 type size hasn't changed 156 type size hasn't changed
147 1 data member changes (3 filtered): 157 1 data member changes (3 filtered):
148 type of 'std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::_Map_pointer _M_node' changed: 158 name of 'std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::_M_node' changed to 'std::_Deque_iterator<unsigned int, unsigned int &, unsigned int *>::_M_node' at stl_deque.h:140:1
149 typedef name changed from std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::_Map_pointer to std::_Deque_iterator<unsigned int, unsigned int &, unsigned int *>::_Map_pointer at stl_deque.h:112:1
150 underlying type 'typedef std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::__ptr_to' at stl_deque.h:116:1 changed:
151 entity changed from 'typedef std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::__ptr_to' to compatible type 'unsigned int**'
152 in pointed to type 'unsigned int':
153 entity changed from 'unsigned int' to 'unsigned int*'
154 type size changed from 32 to 64 (in bits)
155 and name of 'std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>::_M_node' changed to 'std::_Deque_iterator<unsigned int, unsigned int &, unsigned int *>::_M_node' at stl_deque.h:140:1
156 159
1571 Removed function symbol not referenced by debug info: 1601 Removed function symbol not referenced by debug info:
158 161
diff --git a/tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt b/tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt
index 3c05d925..a837ba48 100644
--- a/tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt
+++ b/tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt
@@ -16,18 +16,13 @@
16 in pointed to type 'struct _IceConn' at ICEconn.h:131:1: 16 in pointed to type 'struct _IceConn' at ICEconn.h:131:1:
17 type size hasn't changed 17 type size hasn't changed
18 2 data member changes (3 filtered): 18 2 data member changes (3 filtered):
19 type of 'IceListenObj listen_obj' changed: 19 type of '_XtransConnInfo* trans_conn' changed:
20 underlying type '_IceListenObj*' changed: 20 in pointed to type 'struct _XtransConnInfo' at Xtransint.h:136:1:
21 in pointed to type 'struct _IceListenObj' at ICElibint.h:120:1: 21 type size changed from 640 to 768 (in bits)
22 type size hasn't changed 22 2 data member insertions:
23 1 data member change: 23 '_XtransConnFd* recv_fds', at offset 640 (in bits) at Xtransint.h:148:1
24 type of '_XtransConnInfo* trans_conn' changed: 24 '_XtransConnFd* send_fds', at offset 704 (in bits) at Xtransint.h:149:1
25 in pointed to type 'struct _XtransConnInfo' at Xtransint.h:136:1: 25 no data member change (1 filtered);
26 type size changed from 640 to 768 (in bits)
27 2 data member insertions:
28 '_XtransConnFd* recv_fds', at offset 640 (in bits) at Xtransint.h:148:1
29 '_XtransConnFd* send_fds', at offset 704 (in bits) at Xtransint.h:149:1
30 no data member change (1 filtered);
31 type of '_IcePingWait* ping_waits' changed: 26 type of '_IcePingWait* ping_waits' changed:
32 in pointed to type 'struct _IcePingWait' at ICEconn.h:48:1: 27 in pointed to type 'struct _IcePingWait' at ICEconn.h:48:1:
33 entity changed from 'struct _IcePingWait' to compatible type 'typedef _IcePingWait' at ICEconn.h:48:1 28 entity changed from 'struct _IcePingWait' to compatible type 'typedef _IcePingWait' at ICEconn.h:48:1