From patchwork Mon Oct 12 15:40:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dodji Seketeli X-Patchwork-Id: 40709 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7083F386F41A; Mon, 12 Oct 2020 15:40:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7083F386F41A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1602517239; bh=H5goTycdmnecBKFiTVTD6dWe4yu+YoU0iJr6CG1ySAo=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Help: List-Subscribe:From:Reply-To:From; b=hzewiHlbGhPYZGg+EPbpWktgKwry4mqcW+NAshTXkQbXeqTQ6BozdZ8Qglq6RpQvr mCiHmyNsfM2p0+QX4owEF8JaMJHSThREmVlm/PysZltuxdJzMk1MYYsLue2L1leBBd TAI+DtNfnQ6eyAEyGFbQywYsa5A1mr2c60wyCFf4= X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by sourceware.org (Postfix) with ESMTP id 8603D385783F for ; Mon, 12 Oct 2020 15:40:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 8603D385783F Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-320-1WSXaCAhPh2mvYmzD7XoyA-1; Mon, 12 Oct 2020 11:40:31 -0400 X-MC-Unique: 1WSXaCAhPh2mvYmzD7XoyA-1 Received: by mail-wm1-f71.google.com with SMTP id 13so5897053wmf.0 for ; Mon, 12 Oct 2020 08:40:30 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:organization:date:message-id :user-agent:mime-version; bh=H5goTycdmnecBKFiTVTD6dWe4yu+YoU0iJr6CG1ySAo=; b=tenCetESE2jzzRzNgiaQlkrdbkahEt41hvg2Bs2iZMlOqlHCCHF0uytMKncmwmesCP sDnjpT6kd/5SztMbaXVj72QLFTuq76qXpJNgkFR089sfhfZA2VC2gigm7W8S+SYq3EJ5 2OOp+LI6UvCaOhop0BhJ8r4NKHWkTexzAV40z97h3VuzJGFQ8ouITGHT1D3ftPJh/Ttk Zp7/oJHUZyEo98JP+6wzJ6z/+LXhEb0wCleYPCpUuzskWVnSly+9xDobuTVtpPguYVoY 8Dq3DONgu4yNM2Ptp4MX8eB2u8xPt48OWXXe3N8XB7iQkHldA4ZyXckzn+66ykImftMh T7Vg== X-Gm-Message-State: AOAM532km4gykl7JLK1OFMB+ZoYl8JBUV05hSt+xylu+agkRuEjHjo8m MiesS9vaZm1mUQNW4n9CrxtiY8ieS7pNLG0Fa5TgVdS5YHCBdsI9TuQimASLsrnN+NilE4xWQpU 117W5PeMQG+HwrbdNbdr2 X-Received: by 2002:a1c:9dcf:: with SMTP id g198mr11168873wme.42.1602517228418; Mon, 12 Oct 2020 08:40:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxBWkzlaO51YAPkfu86lXQVwP9zAox72j43DZfcb4RNPJrLmRS5eQDq+b9D4NlkhaXZrZd0BQ== X-Received: by 2002:a1c:9dcf:: with SMTP id g198mr11168821wme.42.1602517227687; Mon, 12 Oct 2020 08:40:27 -0700 (PDT) Received: from localhost (91-166-131-130.subs.proxad.net. [91.166.131.130]) by smtp.gmail.com with ESMTPSA id f14sm24521748wme.22.2020.10.12.08.40.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Oct 2020 08:40:27 -0700 (PDT) Received: by localhost (Postfix, from userid 1000) id B73595800FC; Mon, 12 Oct 2020 17:40:25 +0200 (CEST) To: libabigail@sourceware.org Subject: [PATCH] Fix redundancy detection in the diff graph Organization: Red Hat / France X-Operating-System: Fedora 34 X-URL: http://www.redhat.com Date: Mon, 12 Oct 2020 17:40:25 +0200 Message-ID: <87a6wrbggm.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-9.3 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-Patchwork-Original-From: Dodji Seketeli via Libabigail From: Dodji Seketeli Reply-To: Dodji Seketeli Errors-To: libabigail-bounces@sourceware.org Sender: "Libabigail" Hello, A recent change[1] triggered a variation in the ABI changes reported, depending on the platform. It turned out the change made the redundancy detector walk more diff nodes (like inserted/deleted virtual member functions and their implicit parameter type) and that uncovered several underlying issues that has been latent for a long time. First, we were not walking the inserted/deleted virtual member functions in a deterministic manner at reporting time. Rather than walking the unordered maps containing those functions, this patch now walk them in lexicographic order. The patch also does something similar for the changed data members, but this time during the diff graph analysis. That order affects how we consider a given type change to be redundant. Second, when looking a diff node named N, if another diff node N' equivalent to N has already been marked redundant (and thus filtered out already), we were sometimes wrongly failing to detect and mark N as redundant. This patch fixes that. I realized that some code was now unnecessary so I removed it. A lot of reference output of tests are adjusted by this patch. Mostly, these were cases we were failing to properly detect (and filter out) as redundant reports. So the change reports should hopefully look more concise and to the point now. [1] the recent change is this one: 2f92777d Consider the implicit 'this' parameter when comparing methods * src/abg-comparison-priv.h (diff_context::priv::last_visited_diff_node_): Remove unnecessary data member. (class_or_union_diff::priv::sorted_{deleted,inserted}_member_functions_): Add new data members. (sort_string_member_function_sptr_map): Declare new function. * src/abg-comparison.cc (sort_string_member_function_sptr_map): Define new function. (redundancy_marking_visitor::visit_begin): If the current diff node is equivalent to another one that has been already marked redundant, then consider the current diff node as redundant as well. Considering the fact an ancestor node has been filtered out is now useless because if that's the case then the current descendant node wouldn't even be walked at reporting time. So remove the call to diff_has_ancestor_filtered_out. (categorize_redundancy): Remove useless call here as well. (diff_has_ancestor_filtered_out, diff_has_ancestor_filtered_out) (diff_context::{mark_last_diff_visited_per_class_of_equivalence, clear_last_diffs_visited_per_class_of_equivalence, get_last_visited_diff_of_class_of_equivalence}): Remove unnecessary functions. (redundancy_marking_visitor::visit_end): Add comment. (class_diff::ensure_lookup_tables_populated): Lexicographically sort inserted/deleted member functions. (class_or_union_diff::chain_into_hierarchy): Chain changed data members diff nodes in a sorted manner. * src/abg-default-reporter.cc (default_reporter::report): Report deleted/inserted member functions in lexicographic order. * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust. * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.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. * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Likewise. Signed-off-by: Dodji Seketeli Applied to master. --- src/abg-comparison-priv.h | 10 +- src/abg-comparison.cc | 143 +++++------------- src/abg-default-reporter.cc | 20 +-- .../test31-pr18535-libstdc++-report-0.txt | 76 +--------- .../test31-pr18535-libstdc++-report-1.txt | 76 +--------- ...libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt | 48 +----- ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt | 31 +--- ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt | 41 +---- 8 files changed, 79 insertions(+), 366 deletions(-) diff --git a/src/abg-comparison-priv.h b/src/abg-comparison-priv.h index b82b5d07..1e595313 100644 --- a/src/abg-comparison-priv.h +++ b/src/abg-comparison-priv.h @@ -191,9 +191,6 @@ struct diff_context::priv vector filters_; suppressions_type suppressions_; pointer_map visited_diff_nodes_; - // This is the last visited diff node, per class of equivalence. - // It's set during the redundant diff node marking process. - pointer_map last_visited_diff_node_; corpus_diff_sptr corpus_diff_; ostream* default_output_stream_; ostream* error_output_stream_; @@ -506,7 +503,9 @@ struct class_or_union_diff::priv string_decl_base_sptr_map dms_replaced_by_adms_; mutable changed_var_sptrs_type dms_replaced_by_adms_ordered_; string_member_function_sptr_map deleted_member_functions_; + class_or_union::member_functions sorted_deleted_member_functions_; string_member_function_sptr_map inserted_member_functions_; + class_or_union::member_functions sorted_inserted_member_functions_; string_function_decl_diff_sptr_map changed_member_functions_; function_decl_diff_sptrs_type sorted_changed_member_functions_; string_decl_base_sptr_map deleted_member_class_tmpls_; @@ -1390,9 +1389,14 @@ void sort_string_function_ptr_map(const string_function_ptr_map& map, vector& sorted); +void +sort_string_member_function_sptr_map(const string_member_function_sptr_map& map, + class_or_union::member_functions& sorted); + void sort_string_type_base_sptr_map(string_type_base_sptr_map& map, vector& sorted); + void sort_string_function_decl_diff_sptr_map (const string_function_decl_diff_sptr_map& map, diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc index 07bfe98c..bae9c266 100644 --- a/src/abg-comparison.cc +++ b/src/abg-comparison.cc @@ -201,6 +201,27 @@ sort_string_function_ptr_map(const string_function_ptr_map& map, std::sort(sorted.begin(), sorted.end(), comp); } +/// Sort a map that's an instance of @ref +/// string_member_function_sptr_map and fill a vector of member +/// functions with the sorted result. +/// +/// @param map the map to sort. +/// +/// @param sorted the resulting sorted vector. +void +sort_string_member_function_sptr_map(const string_member_function_sptr_map& map, + class_or_union::member_functions& sorted) +{ + sorted.reserve(map.size()); + for (string_member_function_sptr_map::const_iterator i = map.begin(); + i != map.end(); + ++i) + sorted.push_back(i->second); + + function_comp comp; + std::sort(sorted.begin(), sorted.end(), comp); +} + /// Sort the values of a @ref string_function_decl_diff_sptr_map map /// and store the result in a vector of @ref function_decl_diff_sptr /// objects. @@ -885,55 +906,6 @@ bool is_child_node_of_base_diff(const diff* diff) {return diff && is_base_diff(diff->parent_node());} -/// Test if the current diff node has an ancestor node that has been -/// filtered out. -/// -/// This function detects cycles when walking through the "parent" -/// path. -/// -/// @param diff the diff node to take into account. -/// -/// @param ancestor this is a hash map of the pointers of the parents -/// that are visited. It's used to detect cycles while visiting -/// parents of this diff tree node. -/// -/// @return true iff the current diff node has an ancestor node that -/// has been filtered out. -static bool -diff_has_ancestor_filtered_out(const diff* d, - unordered_map& ancestors) -{ - if (!d || !d->parent_node()) - return false; - if (d->parent_node()->is_filtered_out()) - return true; - - const diff* parent = d->parent_node(); - unordered_map::const_iterator i = - ancestors.find(reinterpret_cast(parent)); - if (i != ancestors.end()) - // We've just detected a cycle in the path made of the parents - // that we are visiting. - return false; - ancestors[reinterpret_cast(parent)] = true; - - return diff_has_ancestor_filtered_out(parent, ancestors); -} - -/// Test if the current diff node has an ancestor node that has been -/// filtered out. -/// -/// @param diff the diff node to take into account. -/// -/// @return true iff the current diff node has an ancestor node that -/// has been filtered out. -static bool -diff_has_ancestor_filtered_out(const diff* diff) -{ - unordered_map ancestors_trace; - return diff_has_ancestor_filtered_out(diff, ancestors_trace); -} - /// The default traverse function. /// /// @return true. @@ -1324,45 +1296,6 @@ void diff_context::forget_visited_diffs() {priv_->visited_diff_nodes_.clear();} -/// Mark a given diff node as being the last one that has been visited -/// in its class of equivalence. -/// -/// @param d the diff node to mark. -void -diff_context::mark_last_diff_visited_per_class_of_equivalence(const diff* d) -{ - if (!d->get_canonical_diff()) - return; - - size_t v0 = reinterpret_cast(d->get_canonical_diff()); - size_t v1 = reinterpret_cast(d); - priv_->last_visited_diff_node_[v0]= v1; -} - -/// Clear the marking about the diff diff nodes in a given class of -/// equivalence. -void -diff_context::clear_last_diffs_visited_per_class_of_equivalence() -{priv_->last_visited_diff_node_.clear();} - -/// Return the last diff node visited in the class of equivalence of -/// a given diff node. -/// -/// @param d the diff node which class of equivalence to consider. -/// -/// @return the last diff node visited in the class of equivalence of -/// the diff node @p d. -const diff* -diff_context::get_last_visited_diff_of_class_of_equivalence(const diff* d) -{ - size_t v0 = reinterpret_cast(d); - - pointer_map::const_iterator it = priv_->last_visited_diff_node_.find(v0); - if (it != priv_->last_visited_diff_node_.end()) - return reinterpret_cast(it->second); - return 0; -} - /// This sets a flag that, if it's true, then during the traversing of /// a diff nodes tree each node is visited at most once. /// @@ -5264,11 +5197,11 @@ class_or_union_diff::chain_into_hierarchy() if (diff_sptr d = *i) append_child_node(d); - for (unsigned_var_diff_sptr_map::const_iterator i = - get_priv()->changed_dm_.begin(); - i != get_priv()->changed_dm_.end(); + for (var_diff_sptrs_type::const_iterator i = + get_priv()->sorted_changed_dm_.begin(); + i != get_priv()->sorted_changed_dm_.end(); ++i) - if (diff_sptr d = i->second) + if (diff_sptr d = *i) append_child_node(d); // member types changes @@ -5487,6 +5420,12 @@ class_diff::ensure_lookup_tables_populated(void) const ++i) p->inserted_member_functions_.erase(*i); + sort_string_member_function_sptr_map(p->deleted_member_functions_, + p->sorted_deleted_member_functions_); + + sort_string_member_function_sptr_map(p->inserted_member_functions_, + p->sorted_inserted_member_functions_); + sort_string_virtual_member_function_diff_sptr_map (p->changed_member_functions_, p->sorted_changed_member_functions_); @@ -12155,11 +12094,11 @@ struct redundancy_marking_visitor : public diff_node_visitor && !is_diff_of_variadic_parameter(d) && !is_diff_of_variadic_parameter_type(d) // If the canonical diff itself has been filtered out, - // then this one is not marked redundant, obviously. - && !d->get_canonical_diff()->is_filtered_out() - && !(diff_has_ancestor_filtered_out - (d->context()-> - get_last_visited_diff_of_class_of_equivalence(d))) + // then this one is not marked redundant, unless the + // canonical diff was already redundant. + && (!d->get_canonical_diff()->is_filtered_out() + || (d->get_canonical_diff()->get_category() + & REDUNDANT_CATEGORY)) // If the *same* diff node (not one that is merely // equivalent to this one) has already been visited // the do not mark it as beind redundant. It's only @@ -12197,8 +12136,6 @@ struct redundancy_marking_visitor : public diff_node_visitor set_visiting_kind(get_visiting_kind() | SKIP_CHILDREN_VISITING_KIND); skip_children_nodes_ = true; } - - d->context()->mark_last_diff_visited_per_class_of_equivalence(d); } virtual void @@ -12259,6 +12196,12 @@ struct redundancy_marking_visitor : public diff_node_visitor if ((*i)->has_changes()) { has_non_empty_child = true; + // Let's see if the current child node '*i' is + // "non-redundant". + // + // A non-redundant node would be a node that + // carries a change to be reported and has not + // been marked as being redundant. if ((*i)->to_be_reported() && ((*i)->get_category() & REDUNDANT_CATEGORY) == 0) has_non_redundant_child = true; @@ -12322,12 +12265,10 @@ categorize_redundancy(diff* diff_tree) if (diff_tree->context()->show_redundant_changes()) return; redundancy_marking_visitor v; - diff_tree->context()->clear_last_diffs_visited_per_class_of_equivalence(); bool s = diff_tree->context()->visiting_a_node_twice_is_forbidden(); diff_tree->context()->forbid_visiting_a_node_twice(false); diff_tree->traverse(v); diff_tree->context()->forbid_visiting_a_node_twice(s); - diff_tree->context()->clear_last_diffs_visited_per_class_of_equivalence(); } /// Walk a given @ref diff sub-tree to categorize each of the nodes diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc index f536be06..dc48f4b8 100644 --- a/src/abg-default-reporter.cc +++ b/src/abg-default-reporter.cc @@ -934,17 +934,17 @@ default_reporter::report(const class_or_union_diff& d, if (numdels) report_mem_header(out, numdels, num_filtered, del_kind, "member function", indent); - for (string_member_function_sptr_map::const_iterator i = - d.get_priv()->deleted_member_functions_.begin(); - i != d.get_priv()->deleted_member_functions_.end(); + for (class_or_union::member_functions::const_iterator i = + d.get_priv()->sorted_deleted_member_functions_.begin(); + i != d.get_priv()->sorted_deleted_member_functions_.end(); ++i) { if (!(ctxt->get_allowed_category() & NON_VIRT_MEM_FUN_CHANGE_CATEGORY) - && !get_member_function_is_virtual(i->second)) + && !get_member_function_is_virtual(*i)) continue; - method_decl_sptr mem_fun = i->second; + method_decl_sptr mem_fun = *i; out << indent << " "; represent(*ctxt, mem_fun, out); } @@ -955,17 +955,17 @@ default_reporter::report(const class_or_union_diff& d, if (numins) report_mem_header(out, numins, num_filtered, ins_kind, "member function", indent); - for (string_member_function_sptr_map::const_iterator i = - d.get_priv()->inserted_member_functions_.begin(); - i != d.get_priv()->inserted_member_functions_.end(); + for (class_or_union::member_functions::const_iterator i = + d.get_priv()->sorted_inserted_member_functions_.begin(); + i != d.get_priv()->sorted_inserted_member_functions_.end(); ++i) { if (!(ctxt->get_allowed_category() & NON_VIRT_MEM_FUN_CHANGE_CATEGORY) - && !get_member_function_is_virtual(i->second)) + && !get_member_function_is_virtual(*i)) continue; - method_decl_sptr mem_fun = i->second; + method_decl_sptr mem_fun = *i; out << indent << " "; represent(*ctxt, mem_fun, out); } diff --git a/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt b/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt index 135d1dfd..7e09ed0d 100644 --- a/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt +++ b/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt @@ -1,4 +1,4 @@ -Functions changes summary: 0 Removed, 10 Changed (174 filtered out), 13 Added functions +Functions changes summary: 0 Removed, 5 Changed (179 filtered out), 13 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info Variable symbols changes summary: 0 Removed, 6 Added variable symbols not referenced by debug info @@ -25,7 +25,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere [A] 'function std::unexpected_handler std::get_unexpected()' [A] 'method std::regex_error::regex_error(std::regex_constants::error_type)' -10 functions with some indirect sub-type change: +5 functions with some indirect sub-type change: [C] 'function __cxxabiv1::__cxa_dependent_exception* __cxxabiv1::__cxa_allocate_dependent_exception()' has some indirect sub-type changes: return type changed: @@ -70,16 +70,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere 1 base class insertion: struct std::_Tuple_impl<0u, std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter> and name of 'std::unique_ptr, std::__future_base::_Result_base::_Deleter>::_M_t' changed to 'std::unique_ptr::_M_t' - 1 member function changes (3 filtered): - 'method virtual std::__future_base::_Async_state_common::~_Async_state_common(int)' has some sub-type changes: - implicit parameter 0 of type 'std::__future_base::_Async_state_common*' has sub-type changes: - pointed to type 'class std::__future_base::_Async_state_common' changed, as being reported - - [C] 'method virtual std::__future_base::_State_base::~_State_base(int)' has some indirect sub-type changes: - linkage names of method virtual std::__future_base::_State_base::~_State_base(int) - changed from '_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15, _ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15' to '_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15, _ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15' - implicit parameter 0 of type 'std::__future_base::_State_base*' has sub-type changes: - pointed to type 'class std::__future_base::_State_base' changed, as reported earlier + no member function changes (4 filtered); [C] 'function void std::__throw_regex_error(std::regex_constants::error_type)' has some indirect sub-type changes: parameter 1 of type 'enum std::regex_constants::error_type' has sub-type changes: @@ -91,10 +82,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere implicit parameter 0 of type 'std::basic_filebuf >*' has sub-type changes: in pointed to type 'class std::basic_filebuf >': type size hasn't changed - 1 member function changes (13 filtered): - 'method virtual std::basic_filebuf >::~basic_filebuf(int)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_filebuf >*' has sub-type changes: - pointed to type 'class std::basic_filebuf >' changed, as being reported + no member function changes (14 filtered); 1 data member change: type of 'const std::basic_filebuf >::__codecvt_type* std::basic_filebuf >::_M_codecvt' changed: in pointed to type 'const std::basic_filebuf >::__codecvt_type': @@ -103,46 +91,10 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere type size hasn't changed no base class change (1 filtered); 2 member function insertions: - 'method virtual std::codecvt_base::result std::codecvt::do_out(std::codecvt::state_type&, const std::codecvt::intern_type*, const std::codecvt::intern_type*, const std::codecvt::intern_type*&, std::codecvt::extern_type*, std::codecvt::extern_type*, std::codecvt::extern_type*&) const', virtual at voffset 2/8 'method virtual std::codecvt_base::result std::codecvt::do_in(std::codecvt::state_type&, const std::codecvt::extern_type*, const std::codecvt::extern_type*, const std::codecvt::extern_type*&, std::codecvt::intern_type*, std::codecvt::intern_type*, std::codecvt::intern_type*&) const', virtual at voffset 4/8 + 'method virtual std::codecvt_base::result std::codecvt::do_out(std::codecvt::state_type&, const std::codecvt::intern_type*, const std::codecvt::intern_type*, const std::codecvt::intern_type*&, std::codecvt::extern_type*, std::codecvt::extern_type*, std::codecvt::extern_type*&) const', virtual at voffset 2/8 no member function changes (10 filtered); - [C] 'method std::basic_fstream >* std::basic_fstream >::basic_fstream(int, void**, const char*, std::ios_base::openmode)' has some indirect sub-type changes: - implicit parameter 0 of type 'std::basic_fstream >*' has sub-type changes: - in pointed to type 'class std::basic_fstream >': - type size hasn't changed - 1 member function changes (3 filtered): - 'method virtual std::basic_fstream >::~basic_fstream(int, void**)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_fstream >*' has sub-type changes: - pointed to type 'class std::basic_fstream >' changed, as being reported - no data member change (1 filtered); - - [C] 'method std::basic_ifstream >* std::basic_ifstream >::basic_ifstream(int, void**, const char*, std::ios_base::openmode)' has some indirect sub-type changes: - implicit parameter 0 of type 'std::basic_ifstream >*' has sub-type changes: - in pointed to type 'class std::basic_ifstream >': - type size hasn't changed - 3 member function changes (1 filtered): - 'method virtual std::basic_ifstream >::~basic_ifstream(int, void**)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_ifstream >*' has sub-type changes: - pointed to type 'class std::basic_ifstream >' changed, as being reported - 'method virtual std::basic_ifstream >::~basic_ifstream(int, void**)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_ifstream >*' has sub-type changes: - pointed to type 'class std::basic_ifstream >' changed, as being reported - 'method virtual std::basic_ifstream >::~basic_ifstream(int, void**)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_ifstream >*' has sub-type changes: - pointed to type 'class std::basic_ifstream >' changed, as being reported - no data member change (1 filtered); - - [C] 'method std::basic_ofstream >* std::basic_ofstream >::basic_ofstream(int, void**, const char*, std::ios_base::openmode)' has some indirect sub-type changes: - implicit parameter 0 of type 'std::basic_ofstream >*' has sub-type changes: - in pointed to type 'class std::basic_ofstream >': - type size hasn't changed - 1 member function changes (3 filtered): - 'method virtual std::basic_ofstream >::~basic_ofstream(int, void**)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_ofstream >*' has sub-type changes: - pointed to type 'class std::basic_ofstream >' changed, as being reported - no data member change (1 filtered); - [C] 'method std::codecvt_byname* std::codecvt_byname::codecvt_byname(const char*, std::size_t)' has some indirect sub-type changes: Please note that the symbol of this function is _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4 and it aliases symbol: _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4 @@ -152,23 +104,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere 1 base class change: 'class std::codecvt' changed: details were reported earlier - 2 member function changes (1 filtered): - 'method virtual std::codecvt_byname::~codecvt_byname(int)' has some sub-type changes: - implicit parameter 0 of type 'std::codecvt_byname*' has sub-type changes: - pointed to type 'class std::codecvt_byname' changed, as being reported - 'method virtual std::codecvt_byname::~codecvt_byname(int)' has some sub-type changes: - implicit parameter 0 of type 'std::codecvt_byname*' has sub-type changes: - pointed to type 'class std::codecvt_byname' changed, as being reported - - [C] 'method virtual std::regex_error::~regex_error(int)' has some indirect sub-type changes: - implicit parameter 0 of type 'std::regex_error*' has sub-type changes: - in pointed to type 'class std::regex_error': - type size hasn't changed - 1 member function changes (2 filtered): - 'method virtual std::regex_error::~regex_error(int)' has some sub-type changes: - implicit parameter 0 of type 'std::regex_error*' has sub-type changes: - pointed to type 'class std::regex_error' changed, as being reported - no data member change (1 filtered); + no member function changes (3 filtered); 6 Added variable symbols not referenced by debug info: diff --git a/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt b/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt index d128d69a..f5bc3001 100644 --- a/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt +++ b/tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt @@ -1,4 +1,4 @@ -Functions changes summary: 0 Removed, 10 Changed (174 filtered out), 13 Added functions +Functions changes summary: 0 Removed, 5 Changed (179 filtered out), 13 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info Variable symbols changes summary: 0 Removed, 6 Added variable symbols not referenced by debug info @@ -25,7 +25,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere [A] 'function std::unexpected_handler std::get_unexpected()' [A] 'method std::regex_error::regex_error(std::regex_constants::error_type)' -10 functions with some indirect sub-type change: +5 functions with some indirect sub-type change: [C] 'function __cxxabiv1::__cxa_dependent_exception* __cxxabiv1::__cxa_allocate_dependent_exception()' at eh_alloc.cc:158:1 has some indirect sub-type changes: return type changed: @@ -70,16 +70,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere 1 base class insertion: struct std::_Tuple_impl<0u, std::__future_base::_Result_base*, std::__future_base::_Result_base::_Deleter> at tuple:231:1 and name of 'std::unique_ptr, std::__future_base::_Result_base::_Deleter>::_M_t' changed to 'std::unique_ptr::_M_t' at unique_ptr.h:147:1 - 1 member function changes (3 filtered): - 'method virtual std::__future_base::_Async_state_common::~_Async_state_common(int)' has some sub-type changes: - implicit parameter 0 of type 'std::__future_base::_Async_state_common*' has sub-type changes: - pointed to type 'class std::__future_base::_Async_state_common' changed, as being reported - - [C] 'method virtual std::__future_base::_State_base::~_State_base(int)' at compatibility-thread-c++0x.cc:103:1 has some indirect sub-type changes: - linkage names of method virtual std::__future_base::_State_base::~_State_base(int) - changed from '_ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15, _ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15' to '_ZNSt13__future_base11_State_baseD1Ev@@GLIBCXX_3.4.15, _ZNSt13__future_base11_State_baseD2Ev@@GLIBCXX_3.4.15' - implicit parameter 0 of type 'std::__future_base::_State_base*' has sub-type changes: - pointed to type 'class std::__future_base::_State_base' changed at future:306:1, as reported earlier + no member function changes (4 filtered); [C] 'function void std::__throw_regex_error(std::regex_constants::error_type)' at functexcept.cc:139:1 has some indirect sub-type changes: parameter 1 of type 'enum std::regex_constants::error_type' has sub-type changes: @@ -91,10 +82,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere implicit parameter 0 of type 'std::basic_filebuf >*' has sub-type changes: in pointed to type 'class std::basic_filebuf >' at fstream:72:1: type size hasn't changed - 1 member function changes (13 filtered): - 'method virtual std::basic_filebuf >::~basic_filebuf(int)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_filebuf >*' has sub-type changes: - pointed to type 'class std::basic_filebuf >' changed, as being reported + no member function changes (14 filtered); 1 data member change: type of 'const std::basic_filebuf >::__codecvt_type* std::basic_filebuf >::_M_codecvt' changed: in pointed to type 'const std::basic_filebuf >::__codecvt_type': @@ -103,46 +91,10 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere type size hasn't changed no base class change (1 filtered); 2 member function insertions: - 'method virtual std::codecvt_base::result std::codecvt::do_out(std::codecvt::state_type&, const std::codecvt::intern_type*, const std::codecvt::intern_type*, const std::codecvt::intern_type*&, std::codecvt::extern_type*, std::codecvt::extern_type*, std::codecvt::extern_type*&) const' at codecvt_members.cc:43:1, virtual at voffset 2/8 'method virtual std::codecvt_base::result std::codecvt::do_in(std::codecvt::state_type&, const std::codecvt::extern_type*, const std::codecvt::extern_type*, const std::codecvt::extern_type*&, std::codecvt::intern_type*, std::codecvt::intern_type*, std::codecvt::intern_type*&) const' at codecvt_members.cc:118:1, virtual at voffset 4/8 + 'method virtual std::codecvt_base::result std::codecvt::do_out(std::codecvt::state_type&, const std::codecvt::intern_type*, const std::codecvt::intern_type*, const std::codecvt::intern_type*&, std::codecvt::extern_type*, std::codecvt::extern_type*, std::codecvt::extern_type*&) const' at codecvt_members.cc:43:1, virtual at voffset 2/8 no member function changes (10 filtered); - [C] 'method std::basic_fstream >* std::basic_fstream >::basic_fstream(int, void**, const char*, std::ios_base::openmode)' at fstream:819:1 has some indirect sub-type changes: - implicit parameter 0 of type 'std::basic_fstream >*' has sub-type changes: - in pointed to type 'class std::basic_fstream >' at fstream:779:1: - type size hasn't changed - 1 member function changes (3 filtered): - 'method virtual std::basic_fstream >::~basic_fstream(int, void**)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_fstream >*' has sub-type changes: - pointed to type 'class std::basic_fstream >' changed, as being reported - no data member change (1 filtered); - - [C] 'method std::basic_ifstream >* std::basic_ifstream >::basic_ifstream(int, void**, const char*, std::ios_base::openmode)' at fstream:470:1 has some indirect sub-type changes: - implicit parameter 0 of type 'std::basic_ifstream >*' has sub-type changes: - in pointed to type 'class std::basic_ifstream >' at fstream:430:1: - type size hasn't changed - 3 member function changes (1 filtered): - 'method virtual std::basic_ifstream >::~basic_ifstream(int, void**)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_ifstream >*' has sub-type changes: - pointed to type 'class std::basic_ifstream >' changed, as being reported - 'method virtual std::basic_ifstream >::~basic_ifstream(int, void**)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_ifstream >*' has sub-type changes: - pointed to type 'class std::basic_ifstream >' changed, as being reported - 'method virtual std::basic_ifstream >::~basic_ifstream(int, void**)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_ifstream >*' has sub-type changes: - pointed to type 'class std::basic_ifstream >' changed, as being reported - no data member change (1 filtered); - - [C] 'method std::basic_ofstream >* std::basic_ofstream >::basic_ofstream(int, void**, const char*, std::ios_base::openmode)' at fstream:643:1 has some indirect sub-type changes: - implicit parameter 0 of type 'std::basic_ofstream >*' has sub-type changes: - in pointed to type 'class std::basic_ofstream >' at fstream:602:1: - type size hasn't changed - 1 member function changes (3 filtered): - 'method virtual std::basic_ofstream >::~basic_ofstream(int, void**)' has some sub-type changes: - implicit parameter 0 of type 'std::basic_ofstream >*' has sub-type changes: - pointed to type 'class std::basic_ofstream >' changed, as being reported - no data member change (1 filtered); - [C] 'method std::codecvt_byname* std::codecvt_byname::codecvt_byname(const char*, std::size_t)' at codecvt.h:462:1 has some indirect sub-type changes: Please note that the symbol of this function is _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@@GLIBCXX_3.4 and it aliases symbol: _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@@GLIBCXX_3.4 @@ -152,23 +104,7 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere 1 base class change: 'class std::codecvt' at codecvt.h:398:1 changed: details were reported earlier - 2 member function changes (1 filtered): - 'method virtual std::codecvt_byname::~codecvt_byname(int)' has some sub-type changes: - implicit parameter 0 of type 'std::codecvt_byname*' has sub-type changes: - pointed to type 'class std::codecvt_byname' changed, as being reported - 'method virtual std::codecvt_byname::~codecvt_byname(int)' has some sub-type changes: - implicit parameter 0 of type 'std::codecvt_byname*' has sub-type changes: - pointed to type 'class std::codecvt_byname' changed, as being reported - - [C] 'method virtual std::regex_error::~regex_error(int)' at regex.cc:36:1 has some indirect sub-type changes: - implicit parameter 0 of type 'std::regex_error*' has sub-type changes: - in pointed to type 'class std::regex_error' at regex_error.h:135:1: - type size hasn't changed - 1 member function changes (2 filtered): - 'method virtual std::regex_error::~regex_error(int)' has some sub-type changes: - implicit parameter 0 of type 'std::regex_error*' has sub-type changes: - pointed to type 'class std::regex_error' changed, as being reported - no data member change (1 filtered); + no member function changes (3 filtered); 6 Added variable symbols not referenced by debug info: 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 61b03335..59202ee4 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 @@ -27,53 +27,7 @@ 2 data member insertions: '_XtransConnFd* _XtransConnInfo::recv_fds', at offset 640 (in bits) at Xtransint.h:148:1 '_XtransConnFd* _XtransConnInfo::send_fds', at offset 704 (in bits) at Xtransint.h:149:1 - 1 data member change: - type of '_Xtransport* _XtransConnInfo::transptr' changed: - in pointed to type 'struct _Xtransport' at Xtransint.h:158:1: - type size hasn't changed - 3 data member changes (16 filtered): - type of 'typedef XtransConnInfo (_Xtransport*, char*, char*, char*)* _Xtransport::OpenCOTSClient' changed: - in pointed to type 'function type typedef XtransConnInfo (_Xtransport*, char*, char*, char*)': - parameter 2 of type 'char*' changed: - in pointed to type 'char': - entity changed from 'char' to 'const char' - type size hasn't changed - parameter 3 of type 'char*' changed: - in pointed to type 'char': - entity changed from 'char' to 'const char' - type size hasn't changed - parameter 4 of type 'char*' changed: - in pointed to type 'char': - entity changed from 'char' to 'const char' - type size hasn't changed - type of 'typedef XtransConnInfo (_Xtransport*, char*, char*, char*)* _Xtransport::OpenCOTSServer' changed: - in pointed to type 'function type typedef XtransConnInfo (_Xtransport*, char*, char*, char*)': - parameter 2 of type 'char*' changed: - in pointed to type 'char': - entity changed from 'char' to 'const char' - type size hasn't changed - parameter 3 of type 'char*' changed: - in pointed to type 'char': - entity changed from 'char' to 'const char' - type size hasn't changed - parameter 4 of type 'char*' changed: - in pointed to type 'char': - entity changed from 'char' to 'const char' - type size hasn't changed - type of 'typedef XtransConnInfo (_Xtransport*, char*, char*, char*)* _Xtransport::OpenCLTSServer' changed: - in pointed to type 'function type typedef XtransConnInfo (_Xtransport*, char*, char*, char*)': - parameter 2 of type 'char*' changed: - in pointed to type 'char': - entity changed from 'char' to 'const char' - type size hasn't changed - parameter 3 of type 'char*' changed: - in pointed to type 'char': - entity changed from 'char' to 'const char' - type size hasn't changed - parameter 4 of type 'char*' changed: - in pointed to type 'char': - entity changed from 'char' to 'const char' - type size hasn't changed + no data member change (1 filtered); type of '_IcePingWait* _IceConn::ping_waits' changed: in pointed to type 'struct _IcePingWait' at ICEconn.h:48:1: entity changed from 'struct _IcePingWait' to compatible type 'typedef _IcePingWait' at ICEconn.h:48:1 diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt index 63d1fa5c..1594161c 100644 --- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt +++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt @@ -1,5 +1,5 @@ ================ changes of 'libtbb.so.2'=============== - Functions changes summary: 0 Removed, 13 Changed (94 filtered out), 17 Added functions + Functions changes summary: 0 Removed, 10 Changed (97 filtered out), 17 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info Variable symbols changes summary: 3 Removed, 0 Added variable symbols not referenced by debug info @@ -24,7 +24,7 @@ [A] 'method void tbb::internal::concurrent_queue_base_v8::move_content(tbb::internal::concurrent_queue_base_v8&)' {_ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_} [A] 'method void tbb::task_group_context::capture_fp_settings()' {_ZN3tbb18task_group_context19capture_fp_settingsEv} - 13 functions with some indirect sub-type change: + 10 functions with some indirect sub-type change: [C] 'method void tbb::filter::set_end_of_input()' at pipeline.cpp:700:1 has some indirect sub-type changes: implicit parameter 0 of type 'tbb::filter*' has sub-type changes: @@ -105,10 +105,7 @@ 'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&, bool)' at scheduler.h:391:1, virtual at voffset 7/7 1 member function insertion: 'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&)' at scheduler.h:362:1, virtual at voffset 7/7 - 1 member function changes (3 filtered): - 'method virtual void tbb::internal::generic_scheduler::spawn(tbb::task&, tbb::task*&)' has some sub-type changes: - implicit parameter 0 of type 'tbb::internal::generic_scheduler*' has sub-type changes: - pointed to type 'class tbb::internal::generic_scheduler' changed, as being reported + no member function changes (4 filtered); 3 data member deletions: 'unsigned int tbb::internal::generic_scheduler::hint_for_push', at offset 896 (in bits) at scheduler.h:171:1 'volatile intptr_t* tbb::internal::generic_scheduler::my_ref_top_priority', at offset 2560 (in bits) at scheduler.h:433:1 @@ -118,10 +115,7 @@ type of 'tbb::internal::market* tbb::internal::generic_scheduler::my_market' changed: in pointed to type 'class tbb::internal::market' at market.h:49:1: type size changed from 1664 to 1728 (in bits) - 1 member function changes (7 filtered): - 'method virtual rml::job* tbb::internal::market::create_one_job()' has some sub-type changes: - implicit parameter 0 of type 'tbb::internal::market*' has sub-type changes: - pointed to type 'class tbb::internal::market' changed, as being reported + no member function changes (8 filtered); 1 data member insertion: 'bool tbb::internal::market::join_workers', at offset 384 (in bits) at market.h:88:1 7 data member changes: @@ -182,10 +176,7 @@ 'method virtual tbb::internal::concurrent_queue_base::~concurrent_queue_base(int)' at concurrent_queue_v2.cpp:225:1 1 member function insertion: 'method virtual tbb::internal::concurrent_queue_base::~concurrent_queue_base(int)' at concurrent_queue_v2.cpp:217:1 - 1 member function changes (3 filtered): - 'method virtual tbb::internal::concurrent_queue_base::~concurrent_queue_base(int)' has some sub-type changes: - implicit parameter 0 of type 'tbb::internal::concurrent_queue_base*' has sub-type changes: - pointed to type 'class tbb::internal::concurrent_queue_base' changed, as being reported + no member function changes (4 filtered); 1 data member change: type of 'tbb::internal::concurrent_queue_rep* tbb::internal::concurrent_queue_base::my_rep' changed: in pointed to type 'class tbb::internal::concurrent_queue_rep' at concurrent_queue_v2.cpp:102:1: @@ -225,10 +216,6 @@ 1 base class insertion: class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1 - [C] 'method bool tbb::mutex::scoped_lock::internal_try_acquire(tbb::mutex&)' at mutex.h:132:1 has some indirect sub-type changes: - parameter 1 of type 'tbb::mutex&' has sub-type changes: - referenced type 'class tbb::mutex' changed at mutex.h:48:1, as reported earlier - [C] 'method void tbb::queuing_mutex::internal_construct()' at queuing_mutex.h:106:1 has some indirect sub-type changes: implicit parameter 0 of type 'tbb::queuing_mutex*' has sub-type changes: in pointed to type 'class tbb::queuing_mutex' at queuing_mutex.h:45:1: @@ -250,14 +237,6 @@ 1 base class insertion: class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1 - [C] 'method bool tbb::recursive_mutex::scoped_lock::internal_try_acquire(tbb::recursive_mutex&)' at recursive_mutex.h:142:1 has some indirect sub-type changes: - parameter 1 of type 'tbb::recursive_mutex&' has sub-type changes: - referenced type 'class tbb::recursive_mutex' changed at recursive_mutex.h:47:1, as reported earlier - - [C] 'method void tbb::spin_mutex::scoped_lock::internal_acquire(tbb::spin_mutex&)' at spin_mutex.h:66:1 has some indirect sub-type changes: - parameter 1 of type 'tbb::spin_mutex&' has sub-type changes: - referenced type 'class tbb::spin_mutex' changed at spin_mutex.h:47:1, as reported earlier - [C] 'method tbb::thread_bound_filter::result_type tbb::thread_bound_filter::process_item()' at pipeline.cpp:712:1 has some indirect sub-type changes: implicit parameter 0 of type 'tbb::thread_bound_filter*' has sub-type changes: in pointed to type 'class tbb::thread_bound_filter' at pipeline.h:197:1: diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt index daf0622c..dda2fb76 100644 --- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt +++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt @@ -1,5 +1,5 @@ ================ changes of 'libtbb.so.2'=============== - Functions changes summary: 0 Removed, 13 Changed (94 filtered out), 17 Added functions + Functions changes summary: 0 Removed, 8 Changed (99 filtered out), 17 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable Function symbols changes summary: 0 Removed, 0 Added function symbol not referenced by debug info Variable symbols changes summary: 3 Removed, 0 Added variable symbols not referenced by debug info @@ -24,18 +24,7 @@ [A] 'method void tbb::internal::concurrent_queue_base_v8::move_content(tbb::internal::concurrent_queue_base_v8&)' {_ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_} [A] 'method void tbb::task_group_context::capture_fp_settings()' {_ZN3tbb18task_group_context19capture_fp_settingsEv} - 13 functions with some indirect sub-type change: - - [C] 'method void tbb::filter::set_end_of_input()' at pipeline.cpp:700:1 has some indirect sub-type changes: - implicit parameter 0 of type 'tbb::filter*' has sub-type changes: - in pointed to type 'class tbb::filter' at pipeline.h:65:1: - type size hasn't changed - 1 member function deletion: - 'method virtual tbb::filter::~filter(int)' at pipeline.cpp:698:1 - 1 member function insertion: - 'method virtual tbb::filter::~filter(int)' at pipeline.cpp:688:1 - no member function changes (4 filtered); - no data member changes (5 filtered); + 8 functions with some indirect sub-type change: [C] 'method tbb::task& tbb::internal::allocate_root_with_context_proxy::allocate(std::size_t) const' at task.h:135:1 has some indirect sub-type changes: implicit parameter 0 of type 'const tbb::internal::allocate_root_with_context_proxy*' has sub-type changes: @@ -54,20 +43,6 @@ array type size changed from 640 to 576 array type subrange 1 changed length from 80 to 72 - [C] 'method void tbb::internal::concurrent_queue_base_v3::assign(const tbb::internal::concurrent_queue_base&)' at concurrent_queue.cpp:570:1 has some indirect sub-type changes: - implicit parameter 0 of type 'tbb::internal::concurrent_queue_base_v3*' has sub-type changes: - in pointed to type 'class tbb::internal::concurrent_queue_base_v3' at _concurrent_queue_impl.h:834:1: - type size hasn't changed - 1 member function deletion: - 'method virtual tbb::internal::concurrent_queue_base_v3::~concurrent_queue_base_v3(int)' at concurrent_queue.cpp:361:1 - 1 member function insertion: - 'method virtual tbb::internal::concurrent_queue_base_v3::~concurrent_queue_base_v3(int)' at concurrent_queue.cpp:370:1 - 1 member function changes (6 filtered): - 'method virtual tbb::internal::concurrent_queue_base_v3::~concurrent_queue_base_v3(int)' has some sub-type changes: - implicit parameter 0 of type 'tbb::internal::concurrent_queue_base_v3*' has sub-type changes: - pointed to type 'class tbb::internal::concurrent_queue_base_v3' changed, as being reported - no data member change (1 filtered); - [C] 'function void tbb::internal::throw_exception_v4(tbb::internal::exception_id)' at tbb_misc.cpp:119:1 has some indirect sub-type changes: parameter 1 of type 'enum tbb::internal::exception_id' has sub-type changes: type size hasn't changed @@ -83,10 +58,6 @@ 1 base class insertion: class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1 - [C] 'method bool tbb::mutex::scoped_lock::internal_try_acquire(tbb::mutex&)' at mutex.h:132:1 has some indirect sub-type changes: - parameter 1 of type 'tbb::mutex&' has sub-type changes: - referenced type 'class tbb::mutex' changed at mutex.h:48:1, as reported earlier - [C] 'method void tbb::queuing_mutex::internal_construct()' at queuing_mutex.h:106:1 has some indirect sub-type changes: implicit parameter 0 of type 'tbb::queuing_mutex*' has sub-type changes: in pointed to type 'class tbb::queuing_mutex' at queuing_mutex.h:45:1: @@ -108,10 +79,6 @@ 1 base class insertion: class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1 - [C] 'method bool tbb::recursive_mutex::scoped_lock::internal_try_acquire(tbb::recursive_mutex&)' at recursive_mutex.h:142:1 has some indirect sub-type changes: - parameter 1 of type 'tbb::recursive_mutex&' has sub-type changes: - referenced type 'class tbb::recursive_mutex' changed at recursive_mutex.h:47:1, as reported earlier - [C] 'method void tbb::spin_mutex::internal_construct()' at spin_mutex.h:138:1 has some indirect sub-type changes: implicit parameter 0 of type 'tbb::spin_mutex*' has sub-type changes: in pointed to type 'class tbb::spin_mutex' at spin_mutex.h:40:1: @@ -119,10 +86,6 @@ 1 base class insertion: class tbb::internal::mutex_copy_deprecated_and_disabled at tbb_stddef.h:334:1 - [C] 'method bool tbb::spin_mutex::scoped_lock::internal_try_acquire(tbb::spin_mutex&)' at spin_mutex.h:69:1 has some indirect sub-type changes: - parameter 1 of type 'tbb::spin_mutex&' has sub-type changes: - referenced type 'class tbb::spin_mutex' changed at spin_mutex.h:47:1, as reported earlier - [C] 'method void tbb::spin_rw_mutex::internal_acquire_reader()' at spin_rw_mutex_v2.h:44:1 has some indirect sub-type changes: parameter 1 of type 'tbb::spin_rw_mutex*' has sub-type changes: in pointed to type 'typedef tbb::spin_rw_mutex' at spin_rw_mutex.h:38:1: