mirror of
git://sourceware.org/git/libabigail.git
synced 2025-01-20 08:20:46 +00:00
comp-filter: Consider lvalue-ness changes on references as harmful
This patch detects an lvalue-ness change on a reference type, categorizes it as REFERENCE_LVALUENESS_CHANGE_CATEGORY and considers it as harmful by default. Note that this patch fixes the parts of runtestdifffilter that have to do with lvalue-ness changes to reference types, but there is still one test failing from the testsuite: runtestabidiffexit. This test has been XFAILed in the test suite. * include/abg-comparison.h (enum diff_category): Add the new REFERENCE_LVALUENESS_CHANGE_CATEGORY enumerator. Adjust the value of the other enumerators. * src/abg-comparison.cc (get_default_harmful_categories_bitmap): Consider the new REFERENCE_LVALUENESS_CHANGE_CATEGORY as being part of the default harmful categories bitmap. (operator<<(ostream& o, diff_category c)): Support the new REFERENCE_LVALUENESS_CHANGE_CATEGORY for me. * include/abg-comp-filter.h (has_lvalue_reference_ness_change): Declare new function. * src/abg-comp-filter.cc (has_lvalue_reference_ness_change): Define new function. (categorize_harmful_diff_node): Use the new has_lvalue_reference_ness_change to set the new REFERENCE_LVALUENESS_CHANGE_CATEGORY. * tests/Makefile.am: XFAIL runtestabidiffexit. * tests/data/test-diff-filter/test3-report.txt: Adjust. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * 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/test35-pr18754-no-added-syms-report-1.txt: Likewise. * tests/data/test-diff-filter/test47-filter-void-ptr-change-report-0.txt: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
This commit is contained in:
parent
ff6e09dde3
commit
d18ff748d7
@ -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> filter_base_sptr;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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 \
|
||||
|
@ -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<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::vector<Iterator, void>(Iterator, Iterator, const std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::allocator_type&)'
|
||||
[A] 'method std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::~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<std::_Rb_tree_iterator<PtrData>, bool> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_insert_unique<PtrData>(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<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::_M_emplace_back_aux<const VarTable::Entry*>(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_
|
||||
|
@ -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<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::vector<Iterator, void>(Iterator, Iterator, const std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::allocator_type&)'
|
||||
[A] 'method std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::~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<std::_Rb_tree_iterator<PtrData>, bool> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_insert_unique<PtrData>(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<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::_M_emplace_back_aux<const VarTable::Entry*>(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_
|
||||
|
@ -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<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::vector<Iterator, void>(Iterator, Iterator, const std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::allocator_type&)'
|
||||
[A] 'method std::vector<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::~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<std::_Rb_tree_iterator<PtrData>, bool> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_insert_unique<PtrData>(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<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::_M_emplace_back_aux<const VarTable::Entry*>(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_
|
||||
|
@ -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<bool (*)(const VarList::BufEntry&, const VarList::BufEntry&)> >(VarList::BufEntry*, __gnu_cxx::__ops::_Val_comp_iter<bool (*)(const VarList::BufEntry&, const VarList::BufEntry&)>)'
|
||||
[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<std::_Rb_tree_iterator<PtrData>, bool> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_insert_unique<PtrData>(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<const VarTable::Entry*, std::allocator<const VarTable::Entry*> >::_M_emplace_back_aux<const VarTable::Entry*>(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_
|
||||
|
@ -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
|
||||
|
@ -124,7 +124,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
|
||||
class std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > at allocator.h:108:1
|
||||
1 base class insertion:
|
||||
class std::allocator<std::__cxx11::basic_string<char> > at allocator.h:108:1
|
||||
3 data member changes (1 filtered):
|
||||
2 data member changes (1 filtered):
|
||||
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:
|
||||
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
|
||||
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:
|
||||
@ -137,17 +137,13 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
|
||||
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:
|
||||
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> *>'
|
||||
type size hasn't changed
|
||||
4 data member changes:
|
||||
1 data member changes (3 filtered):
|
||||
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> >*>::_Elt_pointer _M_cur' changed:
|
||||
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> >*>::_Elt_pointer to std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_Elt_pointer at stl_deque.h:111:1
|
||||
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:
|
||||
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> >*'
|
||||
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_cur' changed to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_M_cur' at stl_deque.h:137:1
|
||||
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_first' changed to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_M_first' at stl_deque.h:138:1
|
||||
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_last' changed to 'std::_Deque_iterator<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> &, std::__cxx11::basic_string<char> *>::_M_last' at stl_deque.h:139:1
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
||||
1 Removed function symbol not referenced by debug info:
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user