From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd35.google.com (mail-io1-xd35.google.com [IPv6:2607:f8b0:4864:20::d35]) by sourceware.org (Postfix) with ESMTPS id D38903858C2F for ; Fri, 27 Jan 2023 16:26:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D38903858C2F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: by mail-io1-xd35.google.com with SMTP id h184so2099978iof.9 for ; Fri, 27 Jan 2023 08:26:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=nHyS37I+MDlKDNl3JqeUvgBOyXCDE+8+sLG97HFAIpU=; b=c4kzQS/XDurI9Chze+oRFvKFoT3IS36sL+AIjORRgi37wsUnnTI1PkKA4ewvI3neMb qflYnjLHXduNOg+jesfb6IhKSTmXmT89CeOhd5kQtd+77RLRwRuYSXJ28AFaumR3qewv XoejFp6ESwYBbOAJFClRbzuEzU4BAcN+eJa45ieQx3WsTaAjCheLswGw9JetC7DelFbL PAx7Jiu0eSG9s8uXunucPM7RHQZaW7RY3naYpVDaGwyK1IcGZut0v4nwLIyS/+3LSv1K 0EngOzTM9iDIrlI8ec45+9Dgo3TvG+g7VE1aenHzLjbwli+pOV0bL1eV32FDO4ymKONE IlpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=nHyS37I+MDlKDNl3JqeUvgBOyXCDE+8+sLG97HFAIpU=; b=bzgvhRZEQ4SmBdY6G90WKKX5xZrpxqTjgvMXTHXv0/2XuERrKWrgVrVNPGhBDtIYqy 2FyKQGOsfm4IFZIGQ1I3X+dBV4icTtXSVhCsdkVIPzb8kK0rduJcownHo5f9KMfPyvA8 DDeG2rPinVkvTRkva+P2ZPSu6SIefHhH0qUe4rbDkAdEbMZQXujAioRDEcEZiEcKgETa QhFAc/tig0vh7O7+AScxNjLpIL/ykz+l+MpAaF52kcOkYpsL8sG/Sse5zUjtsSaKazIz 8fquc+EXoBR6VAv9fMsk317hob+eaYx/Ogs6OVxWxizAm5Jldr10PLdNlJvs/mOF0iCh iPeg== X-Gm-Message-State: AFqh2kom1va+ZuE80ZPkzOEewZ+MiDoeGq0/B9WDjMzcq1D24A5gMjB0 HuWjH+6sO5tbszH06IDC14n1cmfAOQhFYn7R X-Google-Smtp-Source: AMrXdXsBeq5UIxS3kVRB1p3KDgIxQCAw/fe1Zfl9PdjXhzZoX4dMAsugIX3bgZjzrQ8HLhebAyMacg== X-Received: by 2002:a5e:981a:0:b0:707:63b0:f323 with SMTP id s26-20020a5e981a000000b0070763b0f323mr23289404ioj.17.1674836773089; Fri, 27 Jan 2023 08:26:13 -0800 (PST) Received: from localhost.localdomain (75-166-146-144.hlrn.qwest.net. [75.166.146.144]) by smtp.gmail.com with ESMTPSA id e26-20020a0566380cda00b003a7cbe1d235sm1631860jak.12.2023.01.27.08.26.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Jan 2023 08:26:12 -0800 (PST) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Make addrmap const-correct in cooked index Date: Fri, 27 Jan 2023 09:26:03 -0700 Message-Id: <20230127162603.4127820-1-tromey@adacore.com> X-Mailer: git-send-email 2.38.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: After the cooked index is created, the addrmaps should be const. This is slightly complicated by the fact that addrmap::foreach is not const -- however, it should be. The underlying splay tree might be rearranged during a foreach, but if so, this is a classic case where 'mutable' semantics make sense. --- gdb/addrmap.c | 4 ++-- gdb/addrmap.h | 6 +++--- gdb/dwarf2/cooked-index.c | 4 ++-- gdb/dwarf2/cooked-index.h | 2 +- gdb/dwarf2/index-write.c | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gdb/addrmap.c b/gdb/addrmap.c index 0a6b2e5a25a..47ceaca48ad 100644 --- a/gdb/addrmap.c +++ b/gdb/addrmap.c @@ -82,7 +82,7 @@ addrmap_fixed::relocate (CORE_ADDR offset) int -addrmap_fixed::foreach (addrmap_foreach_fn fn) +addrmap_fixed::foreach (addrmap_foreach_fn fn) const { size_t i; @@ -317,7 +317,7 @@ addrmap_mutable_foreach_worker (splay_tree_node node, void *data) int -addrmap_mutable::foreach (addrmap_foreach_fn fn) +addrmap_mutable::foreach (addrmap_foreach_fn fn) const { return splay_tree_foreach (tree, addrmap_mutable_foreach_worker, &fn); } diff --git a/gdb/addrmap.h b/gdb/addrmap.h index a5b784efaf2..659d3c977a8 100644 --- a/gdb/addrmap.h +++ b/gdb/addrmap.h @@ -95,7 +95,7 @@ struct addrmap If FN ever returns a non-zero value, the iteration ceases immediately, and the value is returned. Otherwise, this function returns 0. */ - virtual int foreach (addrmap_foreach_fn fn) = 0; + virtual int foreach (addrmap_foreach_fn fn) const = 0; }; struct addrmap_mutable; @@ -113,7 +113,7 @@ struct addrmap_fixed : public addrmap, void *obj) override; void *find (CORE_ADDR addr) const override; void relocate (CORE_ADDR offset) override; - int foreach (addrmap_foreach_fn fn) override; + int foreach (addrmap_foreach_fn fn) const override; private: @@ -151,7 +151,7 @@ struct addrmap_mutable : public addrmap void *obj) override; void *find (CORE_ADDR addr) const override; void relocate (CORE_ADDR offset) override; - int foreach (addrmap_foreach_fn fn) override; + int foreach (addrmap_foreach_fn fn) const override; private: diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c index 09b3fd70b26..6f228cdc749 100644 --- a/gdb/dwarf2/cooked-index.c +++ b/gdb/dwarf2/cooked-index.c @@ -401,10 +401,10 @@ cooked_index_vector::lookup (CORE_ADDR addr) /* See cooked-index.h. */ -std::vector +std::vector cooked_index_vector::get_addrmaps () { - std::vector result; + std::vector result; for (const auto &index : m_vector) result.push_back (index->m_addrmap); return result; diff --git a/gdb/dwarf2/cooked-index.h b/gdb/dwarf2/cooked-index.h index 55eaf9955ab..dc3fe6e262f 100644 --- a/gdb/dwarf2/cooked-index.h +++ b/gdb/dwarf2/cooked-index.h @@ -359,7 +359,7 @@ class cooked_index_vector : public dwarf_scanner_base /* Return a new vector of all the addrmaps used by all the indexes held by this object. */ - std::vector get_addrmaps (); + std::vector get_addrmaps (); /* Return the entry that is believed to represent the program's "main". This will return NULL if no such entry is available. */ diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c index ced58eab661..9b4a02bc694 100644 --- a/gdb/dwarf2/index-write.c +++ b/gdb/dwarf2/index-write.c @@ -500,7 +500,7 @@ addrmap_index_data::operator() (CORE_ADDR start_addr, void *obj) in the index file. */ static void -write_address_map (struct addrmap *addrmap, data_buf &addr_vec, +write_address_map (const addrmap *addrmap, data_buf &addr_vec, cu_index_map &cu_index_htab) { struct addrmap_index_data addrmap_index_data (addr_vec, cu_index_htab); -- 2.38.1