From patchwork Fri Mar 1 17:21:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dodji Seketeli X-Patchwork-Id: 86661 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 A6D053858416 for ; Fri, 1 Mar 2024 17:21:58 +0000 (GMT) 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 [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 6AEC93858C5F for ; Fri, 1 Mar 2024 17:21:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6AEC93858C5F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6AEC93858C5F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709313715; cv=none; b=xBId/mORySLoaJyiLvO5m6Rwkmh6ymzATB7LY47Xu56Wubnyr84AdlZ0/xqypzMA65lqi1QCdyAnFId+fJcQRR9fXt3m3I+ssbNUDydOSdy/mdWJgxGngZsJAfmHAhjPg1TY6jM3cYYFkM6LY3ntSqMWDqdi24BT00+whbJjMLA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709313715; c=relaxed/simple; bh=h4r3Oxl5IMZ3W8nQfWMLMyHHus0Kp4dboF70haTtEqM=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=MUmQBSQkI8RBvr4I0VIxrZxI5yUvipizMfw3j2bdTg4Fgnw89q6JsnbPbxQ9fPa+ABhx5FhTPVdxhXN+m7onFEUkj+/+t05Esjzrfg1w7BKKKnTTItW1bvDyMFdAVbqFeCwW/4+9texgNsqnRO4iYMecdlOyW1K95ycUMVYzVaU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1709313711; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=kqApZQq8AjHbRRHK/9w8NVHctTBYR1rZzBW3VUEbZoU=; b=Gltk2VoJAhq23jIWb1F9fpj4jNhTpNaX8UvO6HNtuPkuTWqJGKXDzrNTQewI2JSx/3KZGg XHsoeAh75tqnFhYAaCv/vdXUlWbzut/vt7OEEjSjwiDqDO7qlJnI8YNHaH6XgTvOOYUcGm lnJ8qnb2Y3pTES0MK/rGENK8aTtA7J8= Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-131-2UuyXOQFNXyCj0hp-fLPEg-1; Fri, 01 Mar 2024 12:21:48 -0500 X-MC-Unique: 2UuyXOQFNXyCj0hp-fLPEg-1 Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-787c94280c3so272573885a.2 for ; Fri, 01 Mar 2024 09:21:48 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709313708; x=1709918508; h=mime-version:user-agent:message-id:date:organization:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kqApZQq8AjHbRRHK/9w8NVHctTBYR1rZzBW3VUEbZoU=; b=urjbqAuufj3hEWWR1nbzw1O3OIeyaULgRwWQAunDKErW1wQqA1EQIWAe08qavhMLfc 8seXvd0J1v0VYEyiG9QgNG7GZyGgGIdjN22wD8NrLn22rK7asdFdf4luwvlTTx3VKIWk CMRdBQ4FMCem4GBW2WXCY0iueOMXivrFQmWtTd3JtnOf8sjx47Td6ZjOZ7dHvka4h1x2 1oTahswC5zFlMdbiUDekvb0JL0ZXhxMZjxjV53sgT7IgxXOw8xHuI+/J18N4o5/6v3Sl qiZNFF8CMzFZ/qaX4rRXLFgJDj3DR7edoWg300kJytcmMkTGkmbOv+pwIA3p6LOeWHEu iMWg== X-Gm-Message-State: AOJu0YzsE853UnLK+FATesnwl7qfX3THLWTiCt4xrFhaqFmgwcAbUXHS as6ZKmhMwBwDDejC4Yar8zVIZ6drBtupDkkxIhgK+w8752aa97JGkLXaQuRKHs/KdVvssqjpH0l ry9tuB9LpmgSsuRdAzhQ3wAjtApH5YljBFyzcM4jJ3kWa57o5Cv1+L74wr06VMFo0Gw== X-Received: by 2002:a05:620a:40cb:b0:788:413:151d with SMTP id g11-20020a05620a40cb00b007880413151dmr3025008qko.48.1709313707482; Fri, 01 Mar 2024 09:21:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IHanO+rJ6S0RLwKISjANH4Od0VE42KhMi0eGRFyOL9fRrWNKb6awXRwQkxloyDK84ESghaqdg== X-Received: by 2002:a05:620a:40cb:b0:788:413:151d with SMTP id g11-20020a05620a40cb00b007880413151dmr3024986qko.48.1709313707048; Fri, 01 Mar 2024 09:21:47 -0800 (PST) Received: from localhost (88-120-130-27.subs.proxad.net. [88.120.130.27]) by smtp.gmail.com with ESMTPSA id d17-20020a05620a167100b00787ef1fd4e0sm1828050qko.2.2024.03.01.09.21.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Mar 2024 09:21:46 -0800 (PST) Received: by localhost (Postfix, from userid 1000) id E371C5071022; Fri, 1 Mar 2024 18:21:44 +0100 (CET) From: Dodji Seketeli To: libabigail@sourceware.org Cc: dodji@redhat.com Subject: [PATCH] ir,corpus,comparison: Const-iffy the access to corpus interfaces Organization: Red Hat / France X-Operating-System: AlmaLinux 9.3 X-URL: http://www.redhat.com Date: Fri, 01 Mar 2024 18:21:44 +0100 Message-ID: <87r0gt7tqv.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.1 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_H2, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libabigail-bounces+patchwork=sourceware.org@sourceware.org Hello, In preparation to subsequent patches that perform manipulations of the corpus interfaces, it appears that we need to add const access to those corpus interfaces. * include/abg-comparison.h (typedef string_function_ptr_map): Make this typedef use a const function_decl*, not just a function_decl*. (typedef string_var_ptr_map): Make this typedef use a const var_decl*, not just a var_decl*. * include/abg-corpus.h (typedef corpus::functions): Make this typedef be a vector, not just a vector. (corpus::exported_decls_builder::fn_id_maps_to_several_fns): Adjust declaration to const function_decl*. * include/abg-fwd.h (typedef istring_var_decl_ptr_map_type) (typedef istring_function_decl_ptr_map_type): Move these typedefs to abg-ir.h. (get_function_id_or_pretty_representation): Use const function_decl*. * include/abg-ir.h (typedef istring_var_decl_ptr_map_type) (typedef istring_function_decl_ptr_map_type): Move these here from abg-fwd.h. Also make these use const var_decl* and const. function_decl. * src/abg-comparison-priv.h (sort_string_function_ptr_map) (sort_string_var_ptr_map): Use vector and vector rather than their non-const variants. * src/abg-comparison.cc (sort_string_function_ptr_map) (sort_string_var_ptr_map): Likewise. (corpus_diff::priv::{ensure_lookup_tables_populated, apply_supprs_to_added_removed_fns_vars_unreachable_types}): Adjust. * src/abg-corpus-priv.h (corpus::priv::{fns,vars}): Make these data members use vector and vector types. * src/abg-corpus.cc (corpus::exported_decls_builder::fn_id_maps_to_several_fns) (corpus::maybe_drop_some_exported_decls): Adjust. (corpus_group::priv::{fns,vars}): Make these data members use vector and vector types. * src/abg-default-reporter.cc (default_reporter::report): In the overload for const corpus_diff&, adjust. * src/abg-ir.cc (get_function_id_or_pretty_representation): Adjust. * src/abg-leaf-reporter.cc (leaf_reporter::report): In the overload for const corpus_diff&, adjust. * tools/abicompat.cc (perform_compat_check_in_normal_mode): Adjust. Signed-off-by: Dodji Seketeli Applying to the master branch --- include/abg-comparison.h | 4 +-- include/abg-corpus.h | 6 ++-- include/abg-fwd.h | 10 +----- include/abg-ir.h | 8 +++++ src/abg-comparison-priv.h | 4 +-- src/abg-comparison.cc | 28 +++++++++------- src/abg-corpus-priv.h | 4 +-- src/abg-corpus.cc | 18 ++++------ src/abg-default-reporter.cc | 59 ++++++++++++++------------------- src/abg-ir.cc | 4 +-- src/abg-leaf-reporter.cc | 66 +++++++++++++++---------------------- tools/abicompat.cc | 8 ++--- 12 files changed, 97 insertions(+), 122 deletions(-) diff --git a/include/abg-comparison.h b/include/abg-comparison.h index f6e25e20..a395210d 100644 --- a/include/abg-comparison.h +++ b/include/abg-comparison.h @@ -204,7 +204,7 @@ typedef unordered_map string_changed_enumerator_map; /// Convenience typedef for a map which key is a string and which /// value is a pointer to @ref decl_base. -typedef unordered_map string_function_ptr_map; +typedef unordered_map string_function_ptr_map; /// Convenience typedef for a map which key is a string and which /// value is a @ref function_decl_diff_sptr. @@ -229,7 +229,7 @@ typedef unordered_map string_member_function_sptr_map; /// Convenience typedef for a map which key is a string and which /// value is a point to @ref var_decl. -typedef unordered_map string_var_ptr_map; +typedef unordered_map string_var_ptr_map; /// Convenience typedef for a pair of pointer to @ref var_decl /// representing a @ref var_decl change. The first member of the pair diff --git a/include/abg-corpus.h b/include/abg-corpus.h index aafa3a1f..489a2507 100644 --- a/include/abg-corpus.h +++ b/include/abg-corpus.h @@ -28,10 +28,10 @@ public: typedef vector strings_type; /// Convenience typedef for std::vector - typedef vector functions; + typedef vector functions; ///Convenience typedef for std::vector - typedef vector variables; + typedef vector variables; class exported_decls_builder; @@ -331,7 +331,7 @@ public: exported_functions(); std::unordered_set* - fn_id_maps_to_several_fns(function_decl*); + fn_id_maps_to_several_fns(const function_decl*); const variables& exported_variables() const; diff --git a/include/abg-fwd.h b/include/abg-fwd.h index 51043af2..b9cfcf13 100644 --- a/include/abg-fwd.h +++ b/include/abg-fwd.h @@ -255,10 +255,6 @@ typedef shared_ptr var_decl_sptr; /// Convenience typedef for a weak pointer on a @ref var_decl typedef weak_ptr var_decl_wptr; -typedef unordered_map istring_var_decl_ptr_map_type; - class scope_decl; /// Convenience typedef for a shared pointer on a @ref scope_decl. @@ -269,10 +265,6 @@ class function_decl; /// Convenience typedef for a shared pointer on a @ref function_decl typedef shared_ptr function_decl_sptr; -typedef unordered_map istring_function_decl_ptr_map_type; - class method_decl; typedef shared_ptr method_decl_sptr; @@ -1096,7 +1088,7 @@ interned_string get_function_type_name(const function_type&, bool internal = false); interned_string -get_function_id_or_pretty_representation(function_decl *fn); +get_function_id_or_pretty_representation(const function_decl *fn); interned_string get_method_type_name(const method_type_sptr&, bool internal = false); diff --git a/include/abg-ir.h b/include/abg-ir.h index 90f5d4d3..2c69cfe0 100644 --- a/include/abg-ir.h +++ b/include/abg-ir.h @@ -574,6 +574,14 @@ typedef unordered_map istring_type_or_decl_base_sptr_map_type; +typedef unordered_map istring_function_decl_ptr_map_type; + +typedef unordered_map istring_var_decl_ptr_map_type; + /// This is a type that aggregates maps of all the kinds of types that /// are supported by libabigail. /// diff --git a/src/abg-comparison-priv.h b/src/abg-comparison-priv.h index 3f86db5e..434e6267 100644 --- a/src/abg-comparison-priv.h +++ b/src/abg-comparison-priv.h @@ -1422,7 +1422,7 @@ sort_changed_data_members(changed_var_sptrs_type& input); void sort_string_function_ptr_map(const string_function_ptr_map& map, - vector& sorted); + vector& sorted); void sort_string_member_function_sptr_map(const string_member_function_sptr_map& map, @@ -1447,7 +1447,7 @@ sort_string_elf_symbol_map(const string_elf_symbol_map& map, void sort_string_var_ptr_map(const string_var_ptr_map& map, - vector& sorted); + vector& sorted); void sort_string_data_member_diff_sptr_map(const string_var_diff_sptr_map& map, diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc index fdd2a688..1af10529 100644 --- a/src/abg-comparison.cc +++ b/src/abg-comparison.cc @@ -176,7 +176,7 @@ sort_changed_data_members(changed_var_sptrs_type& to_sort) /// @param sorted the resulting sorted vector. void sort_string_function_ptr_map(const string_function_ptr_map& map, - vector& sorted) + vector& sorted) { sorted.reserve(map.size()); for (string_function_ptr_map::const_iterator i = map.begin(); @@ -283,7 +283,7 @@ sort_string_elf_symbol_map(const string_elf_symbol_map& map, /// @param sorted out parameter; the sorted vector of @ref var_decl. void sort_string_var_ptr_map(const string_var_ptr_map& map, - vector& sorted) + vector& sorted) { for (string_var_ptr_map::const_iterator i = map.begin(); i != map.end(); @@ -9382,7 +9382,7 @@ corpus_diff::priv::ensure_lookup_tables_populated() unsigned i = it->index(); ABG_ASSERT(i < first_->get_functions().size()); - function_decl* deleted_fn = first_->get_functions()[i]; + const function_decl* deleted_fn = first_->get_functions()[i]; string n = get_function_id_or_pretty_representation(deleted_fn); ABG_ASSERT(!n.empty()); // The below is commented out because there can be several @@ -9402,7 +9402,7 @@ corpus_diff::priv::ensure_lookup_tables_populated() ++iit) { unsigned i = *iit; - function_decl* added_fn = second_->get_functions()[i]; + const function_decl* added_fn = second_->get_functions()[i]; string n = get_function_id_or_pretty_representation(added_fn); ABG_ASSERT(!n.empty()); // The below is commented out because there can be several @@ -9413,8 +9413,10 @@ corpus_diff::priv::ensure_lookup_tables_populated() deleted_fns_.find(n); if (j != deleted_fns_.end()) { - function_decl_sptr f(j->second, noop_deleter()); - function_decl_sptr s(added_fn, noop_deleter()); + function_decl_sptr f(const_cast(j->second), + noop_deleter()); + function_decl_sptr s(const_cast(added_fn), + noop_deleter()); function_decl_diff_sptr d = compute_diff(f, s, ctxt); if (*j->second != *added_fn) changed_fns_map_[j->first] = d; @@ -9482,7 +9484,7 @@ corpus_diff::priv::ensure_lookup_tables_populated() unsigned i = it->index(); ABG_ASSERT(i < first_->get_variables().size()); - var_decl* deleted_var = first_->get_variables()[i]; + const var_decl* deleted_var = first_->get_variables()[i]; string n = deleted_var->get_id(); ABG_ASSERT(!n.empty()); ABG_ASSERT(deleted_vars_.find(n) == deleted_vars_.end()); @@ -9499,7 +9501,7 @@ corpus_diff::priv::ensure_lookup_tables_populated() ++iit) { unsigned i = *iit; - var_decl* added_var = second_->get_variables()[i]; + const var_decl* added_var = second_->get_variables()[i]; string n = added_var->get_id(); ABG_ASSERT(!n.empty()); { @@ -9517,8 +9519,10 @@ corpus_diff::priv::ensure_lookup_tables_populated() { if (*j->second != *added_var) { - var_decl_sptr f(j->second, noop_deleter()); - var_decl_sptr s(added_var, noop_deleter()); + var_decl_sptr f(const_cast(j->second), + noop_deleter()); + var_decl_sptr s(const_cast(added_var), + noop_deleter()); changed_vars_map_[n] = compute_diff(f, s, ctxt); } deleted_vars_.erase(j); @@ -10045,7 +10049,7 @@ corpus_diff::priv::apply_supprs_to_added_removed_fns_vars_unreachable_types() if (is_member_function(e->second) && get_member_function_is_virtual(e->second)) { - function_decl *f = e->second; + const function_decl *f = e->second; class_decl_sptr c = is_class_type(is_method_type(f->get_type())->get_class_type()); ABG_ASSERT(c); @@ -10059,7 +10063,7 @@ corpus_diff::priv::apply_supprs_to_added_removed_fns_vars_unreachable_types() if (is_member_function(e->second) && get_member_function_is_virtual(e->second)) { - function_decl *f = e->second; + const function_decl *f = e->second; class_decl_sptr c = is_class_type(is_method_type(f->get_type())->get_class_type()); ABG_ASSERT(c); diff --git a/src/abg-corpus-priv.h b/src/abg-corpus-priv.h index 6908142e..58faedb2 100644 --- a/src/abg-corpus-priv.h +++ b/src/abg-corpus-priv.h @@ -742,8 +742,8 @@ struct corpus::priv string architecture_name; translation_units members; string_tu_map_type path_tu_map; - vector fns; - vector vars; + vector fns; + vector vars; symtab_reader::symtab_sptr symtab_; // The type maps contained in this data member are populated if the // corpus follows the One Definition Rule and thus if there is only diff --git a/src/abg-corpus.cc b/src/abg-corpus.cc index 2a904079..770757c3 100644 --- a/src/abg-corpus.cc +++ b/src/abg-corpus.cc @@ -122,7 +122,7 @@ corpus::exported_decls_builder::exported_functions() /// @return the set of functions designated by the ELF symbol of @p /// fn, or nullptr if the function ID maps to just @p fn. std::unordered_set* -corpus::exported_decls_builder::fn_id_maps_to_several_fns(function_decl* fn) +corpus::exported_decls_builder::fn_id_maps_to_several_fns(const function_decl* fn) { std::unordered_set *fns_for_id = priv_->fn_id_is_in_id_fns_map(fn); @@ -1570,11 +1570,9 @@ corpus::maybe_drop_some_exported_decls() { string sym_name, sym_version; - vector fns_to_keep; + functions fns_to_keep; exported_decls_builder* b = get_exported_decls_builder().get(); - for (vector::iterator f = priv_->fns.begin(); - f != priv_->fns.end(); - ++f) + for (auto f = priv_->fns.begin(); f != priv_->fns.end(); ++f) { if (b->priv_->keep_wrt_id_of_fns_to_keep(*f) && b->priv_->keep_wrt_regex_of_fns_to_suppress(*f) @@ -1583,10 +1581,8 @@ corpus::maybe_drop_some_exported_decls() } priv_->fns = fns_to_keep; - vector vars_to_keep; - for (vector::iterator v = priv_->vars.begin(); - v != priv_->vars.end(); - ++v) + variables vars_to_keep; + for (auto v = priv_->vars.begin(); v != priv_->vars.end(); ++v) { if (b->priv_->keep_wrt_id_of_vars_to_keep(*v) && b->priv_->keep_wrt_regex_of_vars_to_suppress(*v) @@ -1690,9 +1686,9 @@ struct corpus_group::priv std::set corpora_paths; corpora_type corpora; istring_function_decl_ptr_map_type fns_map; - vector fns; + corpus::functions fns; istring_var_decl_ptr_map_type vars_map; - vector vars; + corpus::variables vars; string_elf_symbols_map_type var_symbol_map; string_elf_symbols_map_type fun_symbol_map; elf_symbols sorted_var_symbols; diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc index 0b317fac..426b27b4 100644 --- a/src/abg-default-reporter.cc +++ b/src/abg-default-reporter.cc @@ -1886,32 +1886,29 @@ default_reporter::report(const corpus_diff& d, ostream& out, out << indent << s.net_num_func_removed() << " Removed functions:\n\n"; bool emitted = false; - vectorsorted_deleted_fns; + corpus::functions sorted_deleted_fns; sort_string_function_ptr_map(d.priv_->deleted_fns_, sorted_deleted_fns); - for (vector::const_iterator i = - sorted_deleted_fns.begin(); - i != sorted_deleted_fns.end(); - ++i) + for (auto f : sorted_deleted_fns) { - if (d.priv_->deleted_function_is_suppressed(*i)) + if (d.priv_->deleted_function_is_suppressed(f)) continue; out << indent << " "; out << "[D] "; - out << "'" << (*i)->get_pretty_representation() << "'"; + out << "'" << (f)->get_pretty_representation() << "'"; if (ctxt->show_linkage_names()) { out << " {"; - show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(), + show_linkage_name_and_aliases(out, "", *(f)->get_symbol(), d.first_corpus()->get_fun_symbol_map()); out << "}"; } out << "\n"; - if (is_member_function(*i) && get_member_function_is_virtual(*i)) + if (is_member_function(f) && get_member_function_is_virtual(f)) { class_decl_sptr c = - is_class_type(is_method_type((*i)->get_type())->get_class_type()); + is_class_type(is_method_type(f->get_type())->get_class_type()); out << indent << " " << "note that this removes an entry from the vtable of " @@ -1932,13 +1929,11 @@ default_reporter::report(const corpus_diff& d, ostream& out, out << indent << s.net_num_func_added() << " Added functions:\n\n"; bool emitted = false; - vector sorted_added_fns; + corpus::functions sorted_added_fns; sort_string_function_ptr_map(d.priv_->added_fns_, sorted_added_fns); - for (vector::const_iterator i = sorted_added_fns.begin(); - i != sorted_added_fns.end(); - ++i) + for (auto f : sorted_added_fns) { - if (d.priv_->added_function_is_suppressed(*i)) + if (d.priv_->added_function_is_suppressed(f)) continue; out @@ -1946,21 +1941,21 @@ default_reporter::report(const corpus_diff& d, ostream& out, << " "; out << "[A] "; out << "'" - << (*i)->get_pretty_representation() + << f->get_pretty_representation() << "'"; if (ctxt->show_linkage_names()) { out << " {"; show_linkage_name_and_aliases - (out, "", *(*i)->get_symbol(), + (out, "", *f->get_symbol(), d.second_corpus()->get_fun_symbol_map()); out << "}"; } out << "\n"; - if (is_member_function(*i) && get_member_function_is_virtual(*i)) + if (is_member_function(f) && get_member_function_is_virtual(f)) { class_decl_sptr c = - is_class_type(is_method_type((*i)->get_type())->get_class_type()); + is_class_type(is_method_type(f->get_type())->get_class_type()); out << indent << " " << "note that this adds a new entry to the vtable of " @@ -2063,17 +2058,14 @@ default_reporter::report(const corpus_diff& d, ostream& out, << " Removed variables:\n\n"; string n; bool emitted = false; - vector sorted_deleted_vars; + corpus::variables sorted_deleted_vars; sort_string_var_ptr_map(d.priv_->deleted_vars_, sorted_deleted_vars); - for (vector::const_iterator i = - sorted_deleted_vars.begin(); - i != sorted_deleted_vars.end(); - ++i) + for (auto v : sorted_deleted_vars) { - if (d.priv_->deleted_variable_is_suppressed(*i)) + if (d.priv_->deleted_variable_is_suppressed(v)) continue; - n = (*i)->get_pretty_representation(); + n = v->get_pretty_representation(); out << indent << " "; @@ -2084,7 +2076,7 @@ default_reporter::report(const corpus_diff& d, ostream& out, if (ctxt->show_linkage_names()) { out << " {"; - show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(), + show_linkage_name_and_aliases(out, "", *v->get_symbol(), d.first_corpus()->get_var_symbol_map()); out << "}"; } @@ -2104,17 +2096,14 @@ default_reporter::report(const corpus_diff& d, ostream& out, << " Added variables:\n\n"; string n; bool emitted = false; - vector sorted_added_vars; + corpus::variables sorted_added_vars; sort_string_var_ptr_map(d.priv_->added_vars_, sorted_added_vars); - for (vector::const_iterator i = - sorted_added_vars.begin(); - i != sorted_added_vars.end(); - ++i) + for (auto v : sorted_added_vars) { - if (d.priv_->added_variable_is_suppressed(*i)) + if (d.priv_->added_variable_is_suppressed(v)) continue; - n = (*i)->get_pretty_representation(); + n = v->get_pretty_representation(); out << indent << " "; @@ -2123,7 +2112,7 @@ default_reporter::report(const corpus_diff& d, ostream& out, if (ctxt->show_linkage_names()) { out << " {"; - show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(), + show_linkage_name_and_aliases(out, "", *v->get_symbol(), d.second_corpus()->get_var_symbol_map()); out << "}"; } diff --git a/src/abg-ir.cc b/src/abg-ir.cc index e6a7a51d..fcacc382 100644 --- a/src/abg-ir.cc +++ b/src/abg-ir.cc @@ -9221,13 +9221,13 @@ get_function_type_name(const function_type& fn_type, /// /// @return the function ID of pretty representation of @p fn. interned_string -get_function_id_or_pretty_representation(function_decl *fn) +get_function_id_or_pretty_representation(const function_decl *fn) { ABG_ASSERT(fn); interned_string result = fn->get_environment().intern(fn->get_id()); - if (corpus *c = fn->get_corpus()) + if (const corpus *c = fn->get_corpus()) { corpus::exported_decls_builder_sptr b = c->get_exported_decls_builder(); diff --git a/src/abg-leaf-reporter.cc b/src/abg-leaf-reporter.cc index 7b7111db..fdd53f4a 100644 --- a/src/abg-leaf-reporter.cc +++ b/src/abg-leaf-reporter.cc @@ -1074,32 +1074,29 @@ leaf_reporter::report(const corpus_diff& d, out << indent << s.net_num_func_removed() << " Removed functions:\n\n"; bool emitted = false; - vectorsorted_deleted_fns; + corpus::functions sorted_deleted_fns; sort_string_function_ptr_map(d.priv_->deleted_fns_, sorted_deleted_fns); - for (vector::const_iterator i = - sorted_deleted_fns.begin(); - i != sorted_deleted_fns.end(); - ++i) + for (auto f : sorted_deleted_fns) { - if (d.priv_->deleted_function_is_suppressed(*i)) + if (d.priv_->deleted_function_is_suppressed(f)) continue; out << indent << " "; out << "[D] "; - out << "'" << (*i)->get_pretty_representation() << "'"; + out << "'" << f->get_pretty_representation() << "'"; if (ctxt->show_linkage_names()) { out << " {"; - show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(), + show_linkage_name_and_aliases(out, "", *f->get_symbol(), d.first_corpus()->get_fun_symbol_map()); out << "}"; } out << "\n"; - if (is_member_function(*i) && get_member_function_is_virtual(*i)) + if (is_member_function(f) && get_member_function_is_virtual(f)) { class_decl_sptr c = - is_class_type(is_method_type((*i)->get_type())->get_class_type()); + is_class_type(is_method_type(f->get_type())->get_class_type()); out << indent << " " << "note that this removes an entry from the vtable of " @@ -1120,13 +1117,11 @@ leaf_reporter::report(const corpus_diff& d, out << indent << s.net_num_func_added() << " Added functions:\n\n"; bool emitted = false; - vector sorted_added_fns; + corpus::functions sorted_added_fns; sort_string_function_ptr_map(d.priv_->added_fns_, sorted_added_fns); - for (vector::const_iterator i = sorted_added_fns.begin(); - i != sorted_added_fns.end(); - ++i) + for (auto f : sorted_added_fns) { - if (d.priv_->added_function_is_suppressed(*i)) + if (d.priv_->added_function_is_suppressed(f)) continue; out @@ -1134,21 +1129,21 @@ leaf_reporter::report(const corpus_diff& d, << " "; out << "[A] "; out << "'" - << (*i)->get_pretty_representation() + << f->get_pretty_representation() << "'"; if (ctxt->show_linkage_names()) { out << " {"; show_linkage_name_and_aliases - (out, "", *(*i)->get_symbol(), + (out, "", *f->get_symbol(), d.second_corpus()->get_fun_symbol_map()); out << "}"; } out << "\n"; - if (is_member_function(*i) && get_member_function_is_virtual(*i)) + if (is_member_function(f) && get_member_function_is_virtual(f)) { class_decl_sptr c = - is_class_type(is_method_type((*i)->get_type())->get_class_type()); + is_class_type(is_method_type(f->get_type())->get_class_type()); out << indent << " " << "note that this adds a new entry to the vtable of " @@ -1239,17 +1234,14 @@ leaf_reporter::report(const corpus_diff& d, << " Removed variables:\n\n"; string n; bool emitted = false; - vector sorted_deleted_vars; + corpus::variables sorted_deleted_vars; sort_string_var_ptr_map(d.priv_->deleted_vars_, sorted_deleted_vars); - for (vector::const_iterator i = - sorted_deleted_vars.begin(); - i != sorted_deleted_vars.end(); - ++i) + for (auto v : sorted_deleted_vars) { - if (d.priv_->deleted_variable_is_suppressed(*i)) + if (d.priv_->deleted_variable_is_suppressed(v)) continue; - n = (*i)->get_pretty_representation(); + n = v->get_pretty_representation(); out << indent << " "; @@ -1260,7 +1252,7 @@ leaf_reporter::report(const corpus_diff& d, if (ctxt->show_linkage_names()) { out << " {"; - show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(), + show_linkage_name_and_aliases(out, "", *v->get_symbol(), d.first_corpus()->get_var_symbol_map()); out << "}"; } @@ -1280,17 +1272,14 @@ leaf_reporter::report(const corpus_diff& d, << " Added variables:\n\n"; string n; bool emitted = false; - vector sorted_added_vars; + corpus::variables sorted_added_vars; sort_string_var_ptr_map(d.priv_->added_vars_, sorted_added_vars); - for (vector::const_iterator i = - sorted_added_vars.begin(); - i != sorted_added_vars.end(); - ++i) + for (auto v : sorted_added_vars) { - if (d.priv_->added_variable_is_suppressed(*i)) + if (d.priv_->added_variable_is_suppressed(v)) continue; - n = (*i)->get_pretty_representation(); + n = v->get_pretty_representation(); out << indent << " "; @@ -1299,7 +1288,7 @@ leaf_reporter::report(const corpus_diff& d, if (ctxt->show_linkage_names()) { out << " {"; - show_linkage_name_and_aliases(out, "", *(*i)->get_symbol(), + show_linkage_name_and_aliases(out, "", *v->get_symbol(), d.second_corpus()->get_var_symbol_map()); out << "}"; } @@ -1319,12 +1308,9 @@ leaf_reporter::report(const corpus_diff& d, out << indent << num_changed << " Changed variables:\n\n"; string n1, n2; - for (var_diff_sptrs_type::const_iterator i = - d.priv_->sorted_changed_vars_.begin(); - i != d.priv_->sorted_changed_vars_.end(); - ++i) + for (auto d : d.priv_->sorted_changed_vars_) { - diff_sptr diff = *i; + diff_sptr diff = d; if (!diff) continue; diff --git a/tools/abicompat.cc b/tools/abicompat.cc index 043e9028..9e264b0e 100644 --- a/tools/abicompat.cc +++ b/tools/abicompat.cc @@ -435,14 +435,14 @@ perform_compat_check_in_normal_mode(options& opts, /// the differences found in the type of that function. struct fn_change { - function_decl* decl; + const function_decl* decl; function_type_diff_sptr diff; fn_change() : decl() {} - fn_change(function_decl* decl, + fn_change(const function_decl* decl, function_type_diff_sptr difference) : decl(decl), diff(difference) @@ -454,14 +454,14 @@ struct fn_change /// the differences found in the type of that variable. struct var_change { - var_decl* decl; + const var_decl* decl; diff_sptr diff; var_change() : decl() {} - var_change(var_decl* var, + var_change(const var_decl* var, diff_sptr difference) : decl(var), diff(difference)