diff --git a/include/abg-comp-filter.h b/include/abg-comp-filter.h index bf79fe17..6eb6fee2 100644 --- a/include/abg-comp-filter.h +++ b/include/abg-comp-filter.h @@ -105,6 +105,9 @@ has_strict_fam_conversion(const class_decl_sptr& first, bool has_strict_fam_conversion(const diff *d); +bool +has_lvalue_reference_ness_change(const diff *d); + struct filter_base; /// Convenience typedef for a shared pointer to filter_base typedef shared_ptr filter_base_sptr; diff --git a/include/abg-comparison.h b/include/abg-comparison.h index b0527e79..fcf20581 100644 --- a/include/abg-comparison.h +++ b/include/abg-comparison.h @@ -382,61 +382,63 @@ enum diff_category /// incompatible change to a vtable. VIRTUAL_MEMBER_CHANGE_CATEGORY = 1 << 12, + REFERENCE_LVALUENESS_CHANGE_CATEGORY = 1 << 13, + /// A diff node in this category is redundant. That means it's /// present as a child of a other nodes in the diff tree. - REDUNDANT_CATEGORY = 1 << 13, + REDUNDANT_CATEGORY = 1 << 14, /// This means that a diff node in the sub-tree carries a type that /// was declaration-only and that is now defined, or vice versa. - TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY = 1 << 14, + TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY = 1 << 15, /// A diff node in this category is a function parameter type which /// top cv-qualifiers change. - FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY = 1 << 15, + FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY = 1 << 16, /// A diff node in this category has a function parameter type with a /// cv-qualifiers change. - FN_PARM_TYPE_CV_CHANGE_CATEGORY = 1 << 16, + FN_PARM_TYPE_CV_CHANGE_CATEGORY = 1 << 17, /// A diff node in this category is a function return type with a /// cv-qualifier change. - FN_RETURN_TYPE_CV_CHANGE_CATEGORY = 1 << 17, + FN_RETURN_TYPE_CV_CHANGE_CATEGORY = 1 << 18, /// A diff node in this category is a function (or function type) /// with at least one parameter added or removed. - FN_PARM_ADD_REMOVE_CHANGE_CATEGORY = 1 << 18, + FN_PARM_ADD_REMOVE_CHANGE_CATEGORY = 1 << 19, /// A diff node in this category is for a variable which type holds /// a cv-qualifier change. - VAR_TYPE_CV_CHANGE_CATEGORY = 1 << 19, + VAR_TYPE_CV_CHANGE_CATEGORY = 1 << 20, /// A diff node in this category carries a change from void pointer /// to non-void pointer. - VOID_PTR_TO_PTR_CHANGE_CATEGORY = 1 << 20, + VOID_PTR_TO_PTR_CHANGE_CATEGORY = 1 << 21, /// A diff node in this category carries a change in the size of the /// array type of a global variable, but the ELF size of the /// variable didn't change. - BENIGN_INFINITE_ARRAY_CHANGE_CATEGORY = 1 << 21, + BENIGN_INFINITE_ARRAY_CHANGE_CATEGORY = 1 << 22, /// A diff node in this category carries a change that must be /// reported, even if the diff node is also in the /// SUPPRESSED_CATEGORY or PRIVATE_TYPE_CATEGORY categories. /// Typically, this node matches a suppression specification like /// the [allow_type] directive. - HAS_ALLOWED_CHANGE_CATEGORY = 1 << 22, + HAS_ALLOWED_CHANGE_CATEGORY = 1 << 23, /// A diff node in this category has a descendant node that is in /// the HAS_ALLOWED_CHANGE_CATEGORY category. Nodes in this /// category must be reported, even if they are also in the /// SUPPRESSED_CATEGORY or PRIVATE_TYPE_CATEGORY categories. - HAS_DESCENDANT_WITH_ALLOWED_CHANGE_CATEGORY = 1 << 23, + HAS_DESCENDANT_WITH_ALLOWED_CHANGE_CATEGORY = 1 << 24, /// A diff node in this category has a parent node that is in the /// HAS_ALLOWED_CHANGE_CATEGORY category. Nodes in this category /// must be reported, even if they are also in the /// SUPPRESSED_CATEGORY or PRIVATE_TYPE_CATEGORY categories. - HAS_PARENT_WITH_ALLOWED_CHANGE_CATEGORY = 1 << 24, + HAS_PARENT_WITH_ALLOWED_CHANGE_CATEGORY = 1 << 25, /// A special enumerator that is the logical 'or' all the /// enumerators above. @@ -457,6 +459,7 @@ enum diff_category | PRIVATE_TYPE_CATEGORY | SIZE_OR_OFFSET_CHANGE_CATEGORY | VIRTUAL_MEMBER_CHANGE_CATEGORY + | REFERENCE_LVALUENESS_CHANGE_CATEGORY | REDUNDANT_CATEGORY | TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY | FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY diff --git a/src/abg-comp-filter.cc b/src/abg-comp-filter.cc index b0ba8a0f..823b5566 100644 --- a/src/abg-comp-filter.cc +++ b/src/abg-comp-filter.cc @@ -1030,6 +1030,26 @@ has_strict_fam_conversion(const diff *dif) d->second_class_decl()); } +/// Test if a diff node carries a change where an lvalue reference +/// changed into a rvalue reference, or vice versa. +/// +/// @param dif the diff node to consider. +/// +/// @return true iff @p dif carries a change where an lvalue reference +/// changed into a rvalue reference, or vice versa. +bool +has_lvalue_reference_ness_change(const diff *dif) +{ + const reference_diff* d = is_reference_diff(dif); + if (!d) + return false; + + if (d->first_reference()->is_lvalue() == d->second_reference()->is_lvalue()) + return false; + + return true; +} + /// Test if a class_diff node has static members added or removed. /// /// @param diff the diff node to consider. @@ -2190,6 +2210,9 @@ categorize_harmful_diff_node(diff *d, bool pre) if (has_virtual_mem_fn_change(d)) category |= VIRTUAL_MEMBER_CHANGE_CATEGORY; + if (has_lvalue_reference_ness_change(d)) + category |= REFERENCE_LVALUENESS_CHANGE_CATEGORY; + if (has_added_or_removed_function_parameters(d)) category |= FN_PARM_ADD_REMOVE_CHANGE_CATEGORY; diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc index 87a2e4a9..ac5398f7 100644 --- a/src/abg-comparison.cc +++ b/src/abg-comparison.cc @@ -3181,6 +3181,7 @@ get_default_harmful_categories_bitmap() { return (abigail::comparison::SIZE_OR_OFFSET_CHANGE_CATEGORY | abigail::comparison::VIRTUAL_MEMBER_CHANGE_CATEGORY + | abigail::comparison::REFERENCE_LVALUENESS_CHANGE_CATEGORY | abigail::comparison::FN_PARM_ADD_REMOVE_CHANGE_CATEGORY); } @@ -3306,6 +3307,14 @@ operator<<(ostream& o, diff_category c) emitted_a_category |= true; } + if (c & REFERENCE_LVALUENESS_CHANGE_CATEGORY) + { + if (emitted_a_category) + o << "|"; + o << "REFERENCE_LVALUENESS_CHANGE_CATEGORY"; + emitted_a_category |= true; + } + if (c & REDUNDANT_CATEGORY) { if (emitted_a_category) diff --git a/src/abg-ir.cc b/src/abg-ir.cc index 826dea4c..d0fafd02 100644 --- a/src/abg-ir.cc +++ b/src/abg-ir.cc @@ -17596,16 +17596,6 @@ pointer_type_def::set_pointed_to_type(const type_base_sptr& t) bool equals(const pointer_type_def& l, const pointer_type_def& r, change_kind* k) { - // In C and C++ languages, a pointer to void equals all other - // pointers. - if (l.get_translation_unit() - && r.get_translation_unit() - && is_c_language(l.get_translation_unit()->get_language()) - && is_c_language(r.get_translation_unit()->get_language()) - && (is_void_pointer_type_equivalent(&l) - || is_void_pointer_type_equivalent(&r))) - return true; - bool result = l.get_pointed_to_type() == r.get_pointed_to_type(); if (!result) if (k) diff --git a/tests/Makefile.am b/tests/Makefile.am index 36439895..3cb95fdc 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -75,7 +75,7 @@ endif # are logically not related to the type hashing commit will fix the # issues and as a result, these test will PASS again. For now, let's # mark them as being XFAIL. -XFAIL_TESTS = runtestdifffilter runtestabidiffexit +XFAIL_TESTS = runtestabidiffexit EXTRA_DIST = \ runtestcanonicalizetypes.sh.in \ 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 fd3288ef..b0332be5 100644 --- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt +++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt @@ -1,4 +1,4 @@ -Functions changes summary: 82 Removed, 6 Changed (33 filtered out), 1081 Added functions +Functions changes summary: 82 Removed, 7 Changed (32 filtered out), 1081 Added functions Variables changes summary: 47 Removed, 1 Changed, 11 Added variables Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info @@ -1172,7 +1172,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen [A] 'method void std::vector >::vector(Iterator, Iterator, const std::vector >::allocator_type&)' [A] 'method std::vector >::~vector()' -6 functions with some indirect sub-type change: +7 functions with some indirect sub-type change: [C] 'method void Engine::fini_process(bool)' has some indirect sub-type changes: implicit parameter 0 of type 'Engine*' has sub-type changes: @@ -1260,7 +1260,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} flags' changed: type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags' type size hasn't changed - 1 data member changes (1 filtered): + 1 data member change: anonymous data member at offset 0 (in bits) changed from: struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;} to: @@ -1429,6 +1429,10 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen type name changed from 'void' to 'bool' type size changed from 0 to 8 (in bits) + [C] 'method std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(PtrData&&)' has some indirect sub-type changes: + parameter 1 of type 'PtrData&&' changed: + rvalue reference type 'PtrData&& became an lvalue reference type: 'PtrData&' + [C] 'method void std::vector >::_M_emplace_back_aux(const VarTable::Entry*&&)' has some indirect sub-type changes: Please note that the symbol of this function is _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIJS3_EEEvDpOT_ and it aliases symbol: _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIIS3_EEEvDpOT_ 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 827ca5c3..b9a226d8 100644 --- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt +++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt @@ -1,4 +1,4 @@ -Functions changes summary: 82 Removed, 6 Changed (33 filtered out), 1081 Added functions +Functions changes summary: 82 Removed, 7 Changed (32 filtered out), 1081 Added functions Variables changes summary: 47 Removed, 1 Changed, 11 Added variables Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info @@ -1172,7 +1172,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen [A] 'method void std::vector >::vector(Iterator, Iterator, const std::vector >::allocator_type&)' [A] 'method std::vector >::~vector()' -6 functions with some indirect sub-type change: +7 functions with some indirect sub-type change: [C] 'method void Engine::fini_process(bool)' at offload_engine.cpp:184:1 has some indirect sub-type changes: implicit parameter 0 of type 'Engine*' has sub-type changes: @@ -1260,7 +1260,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} flags' changed: type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags' type size hasn't changed - 1 data member changes (1 filtered): + 1 data member change: anonymous data member at offset 0 (in bits) changed from: struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;} to: @@ -1429,6 +1429,10 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen type name changed from 'void' to 'bool' type size changed from 0 to 8 (in bits) + [C] 'method std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(PtrData&&)' at stl_tree.h:1850:1 has some indirect sub-type changes: + parameter 1 of type 'PtrData&&' changed: + rvalue reference type 'PtrData&& became an lvalue reference type: 'PtrData&' + [C] 'method void std::vector >::_M_emplace_back_aux(const VarTable::Entry*&&)' at vector.tcc:407:1 has some indirect sub-type changes: Please note that the symbol of this function is _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIJS3_EEEvDpOT_ and it aliases symbol: _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIIS3_EEEvDpOT_ 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 80a26f29..7fcf60dc 100644 --- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt +++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt @@ -1,4 +1,4 @@ -Functions changes summary: 82 Removed, 6 Changed (33 filtered out), 1081 Added functions +Functions changes summary: 82 Removed, 7 Changed (32 filtered out), 1081 Added functions Variables changes summary: 47 Removed, 1 Changed, 11 Added variables Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info @@ -1172,7 +1172,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen [A] 'method void std::vector >::vector(Iterator, Iterator, const std::vector >::allocator_type&)' [A] 'method std::vector >::~vector()' -6 functions with some indirect sub-type change: +7 functions with some indirect sub-type change: [C] 'method void Engine::fini_process(bool)' at offload_engine.cpp:184:1 has some indirect sub-type changes: implicit parameter 0 of type 'Engine*' has sub-type changes: @@ -1260,7 +1260,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} flags' changed: type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags' type size hasn't changed - 1 data member changes (1 filtered): + 1 data member change: anonymous data member at offset 0 (in bytes) changed from: struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;} to: @@ -1429,6 +1429,10 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen type name changed from 'void' to 'bool' type size changed from 0 to 0x1 (in bytes) + [C] 'method std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(PtrData&&)' at stl_tree.h:1850:1 has some indirect sub-type changes: + parameter 1 of type 'PtrData&&' changed: + rvalue reference type 'PtrData&& became an lvalue reference type: 'PtrData&' + [C] 'method void std::vector >::_M_emplace_back_aux(const VarTable::Entry*&&)' at vector.tcc:407:1 has some indirect sub-type changes: Please note that the symbol of this function is _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIJS3_EEEvDpOT_ and it aliases symbol: _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIIS3_EEEvDpOT_ 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 60ba1c23..3144ee00 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 @@ -1,4 +1,4 @@ -Functions changes summary: 82 Removed, 6 Changed (33 filtered out), 0 Added (1081 filtered out) functions +Functions changes summary: 82 Removed, 7 Changed (32 filtered out), 0 Added (1081 filtered out) functions Variables changes summary: 47 Removed, 1 Changed, 0 Added (11 filtered out) variables Function symbols changes summary: 7 Removed, 0 Added (76 filtered out) function symbols not referenced by debug info Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info @@ -88,7 +88,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen [D] 'function void std::__unguarded_linear_insert >(VarList::BufEntry*, __gnu_cxx::__ops::_Val_comp_iter)' [D] 'function void write_message(FILE*, int, __va_list_tag*)' -6 functions with some indirect sub-type change: +7 functions with some indirect sub-type change: [C] 'method void Engine::fini_process(bool)' has some indirect sub-type changes: implicit parameter 0 of type 'Engine*' has sub-type changes: @@ -176,7 +176,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} flags' changed: type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags' type size hasn't changed - 1 data member changes (1 filtered): + 1 data member change: anonymous data member at offset 0 (in bits) changed from: struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;} to: @@ -345,6 +345,10 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen type name changed from 'void' to 'bool' type size changed from 0 to 8 (in bits) + [C] 'method std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(PtrData&&)' has some indirect sub-type changes: + parameter 1 of type 'PtrData&&' changed: + rvalue reference type 'PtrData&& became an lvalue reference type: 'PtrData&' + [C] 'method void std::vector >::_M_emplace_back_aux(const VarTable::Entry*&&)' has some indirect sub-type changes: Please note that the symbol of this function is _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIJS3_EEEvDpOT_ and it aliases symbol: _ZNSt6vectorIPKN8VarTable5EntryESaIS3_EE19_M_emplace_back_auxIIS3_EEEvDpOT_ diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt index f1bfe222..f3d453cc 100644 --- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt +++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt @@ -1,4 +1,4 @@ -Functions changes summary: 82 Removed, 6 Changed (33 filtered out), 0 Added (1081 filtered out) functions +Functions changes summary: 82 Removed, 7 Changed (32 filtered out), 0 Added (1081 filtered out) functions Variables changes summary: 0 Removed (47 filtered out), 1 Changed, 0 Added (11 filtered out) variables Function symbols changes summary: 7 Removed, 0 Added (76 filtered out) function symbols not referenced by debug info Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info diff --git a/tests/data/test-diff-filter/test41-report-0.txt b/tests/data/test-diff-filter/test41-report-0.txt index d5c7f181..8881004c 100644 --- a/tests/data/test-diff-filter/test41-report-0.txt +++ b/tests/data/test-diff-filter/test41-report-0.txt @@ -124,7 +124,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen class std::allocator, std::allocator > > at allocator.h:108:1 1 base class insertion: class std::allocator > at allocator.h:108:1 - 3 data member changes (1 filtered): + 2 data member changes (1 filtered): type of 'std::_Deque_base, std::allocator >, std::allocator, std::allocator > > >::_Map_pointer _M_map' changed: typedef name changed from std::_Deque_base, std::allocator >, std::allocator, std::allocator > > >::_Map_pointer to std::_Deque_base, std::allocator > >::_Map_pointer at stl_deque.h:542:1 underlying type 'typedef std::_Deque_iterator, std::allocator >, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >*>::_Map_pointer' at stl_deque.h:123:1 changed: @@ -137,17 +137,13 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen underlying type 'struct std::_Deque_iterator, std::allocator >, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >*>' at stl_deque.h:106:1 changed: type name changed from 'std::_Deque_iterator, std::allocator >, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >*>' to 'std::_Deque_iterator, std::__cxx11::basic_string &, std::__cxx11::basic_string *>' type size hasn't changed - 4 data member changes: + 1 data member changes (3 filtered): type of 'std::_Deque_iterator, std::allocator >, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >*>::_Elt_pointer _M_cur' changed: typedef name changed from std::_Deque_iterator, std::allocator >, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >*>::_Elt_pointer to std::_Deque_iterator, std::__cxx11::basic_string &, std::__cxx11::basic_string *>::_Elt_pointer at stl_deque.h:111:1 underlying type 'typedef std::_Deque_iterator, std::allocator >, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >*>::__ptr_to' at stl_deque.h:116:1 changed: entity changed from 'typedef std::_Deque_iterator, std::allocator >, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >*>::__ptr_to' to compatible type 'std::__cxx11::basic_string, std::allocator >*' and name of 'std::_Deque_iterator, std::allocator >, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >*>::_M_cur' changed to 'std::_Deque_iterator, std::__cxx11::basic_string &, std::__cxx11::basic_string *>::_M_cur' at stl_deque.h:137:1 - name of 'std::_Deque_iterator, std::allocator >, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >*>::_M_first' changed to 'std::_Deque_iterator, std::__cxx11::basic_string &, std::__cxx11::basic_string *>::_M_first' at stl_deque.h:138:1 - name of 'std::_Deque_iterator, std::allocator >, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >*>::_M_last' changed to 'std::_Deque_iterator, std::__cxx11::basic_string &, std::__cxx11::basic_string *>::_M_last' at stl_deque.h:139:1 - name of 'std::_Deque_iterator, std::allocator >, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >*>::_M_node' changed to 'std::_Deque_iterator, std::__cxx11::basic_string &, std::__cxx11::basic_string *>::_M_node' at stl_deque.h:140:1 and name of 'std::_Deque_base, std::allocator >, std::allocator, std::allocator > > >::_Deque_impl::_M_start' changed to 'std::_Deque_base, std::allocator > >::_Deque_impl::_M_start' at stl_deque.h:552:1 - name of 'std::_Deque_base, std::allocator >, std::allocator, std::allocator > > >::_Deque_impl::_M_finish' changed to 'std::_Deque_base, std::allocator > >::_Deque_impl::_M_finish' at stl_deque.h:553:1 and name of 'std::_Deque_base, std::allocator >, std::allocator, std::allocator > > >::_M_impl' changed to 'std::_Deque_base, std::allocator > >::_M_impl' at stl_deque.h:631:1 1 Removed function symbol not referenced by debug info: diff --git a/tests/data/test-diff-filter/test47-filter-void-ptr-change-report-0.txt b/tests/data/test-diff-filter/test47-filter-void-ptr-change-report-0.txt index e69de29b..e644b0f1 100644 --- a/tests/data/test-diff-filter/test47-filter-void-ptr-change-report-0.txt +++ b/tests/data/test-diff-filter/test47-filter-void-ptr-change-report-0.txt @@ -0,0 +1,26 @@ +Functions changes summary: 0 Removed, 2 Changed, 0 Added functions +Variables changes summary: 0 Removed, 0 Changed, 0 Added variable + +2 functions with some indirect sub-type change: + + [C] 'function void bar(S1*)' at test47-filter-void-ptr-change-v0.c:17:1 has some indirect sub-type changes: + parameter 1 of type 'S1*' has sub-type changes: + in pointed to type 'struct S1' at test47-filter-void-ptr-change-v1.c:8:1: + type size hasn't changed + 1 data member change: + type of 'POINTER m0' changed: + underlying type 'void*' changed: + in pointed to type 'void': + entity changed from 'void' to 'const char' + type size changed from 0 to 8 (in bits) + + [C] 'function void foo(S0*)' at test47-filter-void-ptr-change-v0.c:13:1 has some indirect sub-type changes: + parameter 1 of type 'S0*' has sub-type changes: + in pointed to type 'struct S0' at test47-filter-void-ptr-change-v1.c:1:1: + type size hasn't changed + 1 data member change: + type of 'void* m0' changed: + in pointed to type 'void': + type name changed from 'void' to 'int' + type size changed from 0 to 32 (in bits) + diff --git a/tests/data/test-diff-filter/test7-report.txt b/tests/data/test-diff-filter/test7-report.txt index b1600f86..268ae2ef 100644 --- a/tests/data/test-diff-filter/test7-report.txt +++ b/tests/data/test-diff-filter/test7-report.txt @@ -7,5 +7,4 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable return type changed: type name changed from 'return_type' to 'other_return_type' type size hasn't changed - no data member change (1 filtered);