From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <3lk1-XggKCiUHQSPDJEBHPPHMF.DPNMJCBCJHBJMTPVSDFXBSF.PSH@flex--gprocida.bounces.google.com> Received: from mail-pf1-x449.google.com (mail-pf1-x449.google.com [IPv6:2607:f8b0:4864:20::449]) by sourceware.org (Postfix) with ESMTPS id 8E267385E00B for ; Fri, 27 Mar 2020 19:01:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 8E267385E00B Received: by mail-pf1-x449.google.com with SMTP id h191so9023892pfe.14 for ; Fri, 27 Mar 2020 12:01:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=xLLY9ngU2cL+Xha+txEK7QsdYZS/EqDjtwJxhQx6W/Q=; b=Z/+1l+nm9hNYCPcGTG6HFc8gtrqDFIXV1nv/NFGad33PvNdkTrYFbv50YQFGI4W7ga odaQltOrtI4+jn369Q1AmZcu/QMeQIFSnlZa4S8GRZ3eRZQGPdnhZ7A7n86j83iJ7up4 Yy1hsKzzepao5fFWh252psJeX2N7evHLVU/n0wQMfiW8GGSS0w9/+ivcswgSkqqwWic1 2wJt2UVt7FlDi1Mpdp4JgPdPNK2aJV30LH3zFzOBtgi3OUUJLxXNT0BdkAAcgkBq0XuN pBrcs75x80EHk13Kr96tU3ixwZDdBuXjnjxYCcncF40MNCsLYuVfwSt4eexKtwGWyfYs K3tA== X-Gm-Message-State: ANhLgQ3IB4UhIMqMM/w8Br8UMFyYlB0oGAjkmuZi+foMpk0TMBpojSdu Kg1dBdhfMhaIRhPEs8Sd6WO6aQPDhhlU6/pR4BRbLfe5DrgrkEjTVS6YD5sHHWhJBiaLDryGX2a BNHkrEMack9WcJbGCGoQmBqugH44zCdkt3/AB1I8KtncfYjxWCSEFYwOZnxqxIBT1d9YWzg0= X-Google-Smtp-Source: ADFU+vv0gOv5qqSKHXAkJEKJj9DsQ2NX6oDhD5RhWc+QPpJ/iK2+rLGLaU1aVBDNoWZEf9mxazPQsH5vI27GjQ== X-Received: by 2002:a17:90a:fd90:: with SMTP id cx16mr924157pjb.41.1585335702361; Fri, 27 Mar 2020 12:01:42 -0700 (PDT) Date: Fri, 27 Mar 2020 19:01:35 +0000 In-Reply-To: <20200324171344.258865-1-gprocida@google.com> Message-Id: <20200327190135.98611-1-gprocida@google.com> Mime-Version: 1.0 References: <20200324171344.258865-1-gprocida@google.com> X-Mailer: git-send-email 2.26.0.rc2.310.g2932bb562d-goog Subject: [PATCH v2] Fix has_net_changes for --leaf-changes-only mode. From: Giuliano Procida To: libabigail@sourceware.org Cc: dodji@seketeli.org, kernel-team@android.com, gprocida@google.com, maennich@google.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-34.0 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL 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: Libabigail mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Mar 2020 19:01:44 -0000 This function was not aware of --leaf-changes-only mode. - Stats counters for changed variables and types have different names in the different modes. - Leaf type changes were not included in leaf mode. For some inputs, this resulted in abidiff producing an empty report but returning a non-zero exit status in --leaf-changes-only mode. For other inputs, including some existing tests, the combination of both issues still resulted in the correct return code. This patch makes has_net_changes mirror emit_diff_stats, modulo flags like --non-reachable-types which if absent can still result in discrepancies between output and return code. * src/abg-comparison.cc (corpus_diff::priv::emit_diff_stats): Code whitespace. (corpus_diff::has_net_changes): Reorder the logic to match emit_diff_stats, add a note about this; in --leaf-changes-only mode use the right counters for function and variable changes and include type changes. Signed-off-by: Giuliano Procida --- src/abg-comparison.cc | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc index 46bf9e30..50791cb5 100644 --- a/src/abg-comparison.cc +++ b/src/abg-comparison.cc @@ -9932,7 +9932,7 @@ corpus_diff::priv::emit_diff_stats(const diff_stats& s, out << " (" << s.num_changed_func_filtered_out() << " filtered out)"; out << ", "; - out << s.net_num_func_added()<< " Added"; + out << s.net_num_func_added() << " Added"; if (s.num_added_func_filtered_out()) out << " (" << s.num_added_func_filtered_out() << " filtered out)"; if (total_nb_function_changes <= 1) @@ -10560,7 +10560,7 @@ corpus_diff::has_incompatible_changes() const || stats.net_num_func_removed() != 0 || (stats.num_func_with_virtual_offset_changes() != 0 // If all reports about functions with sub-type changes - // have been suppressd, then even those about functions + // have been suppressed, then even those about functions // that are virtual don't matter anymore because the // user willingly requested to shut them down && stats.net_num_func_changed() != 0) @@ -10602,21 +10602,27 @@ corpus_diff::has_net_changes() const const diff_stats& stats = const_cast(this)-> apply_filters_and_suppressions_before_reporting(); + // Logic here should match emit_diff_stats. + // TODO: Possibly suppress things that won't be shown there. + bool leaf = context()->show_leaf_changes_only(); return (architecture_changed() || soname_changed() - || stats.net_num_func_changed() - || stats.net_num_vars_changed() - || stats.net_num_func_added() - || stats.net_num_added_func_syms() || stats.net_num_func_removed() - || stats.net_num_removed_func_syms() - || stats.net_num_vars_added() - || stats.net_num_added_var_syms() + || (leaf && stats.num_leaf_type_changes()) + || (leaf ? stats.net_num_leaf_func_changes() + : stats.net_num_func_changed()) + || stats.net_num_func_added() || stats.net_num_vars_removed() - || stats.net_num_removed_var_syms() - || stats.net_num_added_unreachable_types() + || (leaf ? stats.net_num_leaf_var_changes() + : stats.net_num_vars_changed()) + || stats.net_num_vars_added() || stats.net_num_removed_unreachable_types() - || stats.net_num_changed_unreachable_types()); + || stats.net_num_changed_unreachable_types() + || stats.net_num_added_unreachable_types() + || stats.net_num_removed_func_syms() + || stats.net_num_added_func_syms() + || stats.net_num_removed_var_syms() + || stats.net_num_added_var_syms()); } /// Apply the different filters that are registered to be applied to -- 2.26.0.rc2.310.g2932bb562d-goog