From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x135.google.com (mail-il1-x135.google.com [IPv6:2607:f8b0:4864:20::135]) by sourceware.org (Postfix) with ESMTPS id 8494B3858414 for ; Wed, 1 Dec 2021 22:04:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8494B3858414 Received: by mail-il1-x135.google.com with SMTP id h16so26171390ila.4 for ; Wed, 01 Dec 2021 14:04:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iVPUNri09pvan7mc+NHupAzdAKeJ17+Rzr4w0z0w3Nw=; b=6ndsEzCq4ouaHmRryn1mFgdZUSCI9Hdc4/9BkRZm9pSXieQugYKxM9Quwc4oliEQxU DBAHRNYptM8y2MWZKGhdz32BE0fpAzt0h/BkoX1kigg7U5PWBcf8UcAl2mZK0CQ02UEc IdcxBJPV2HC3UZ0T6+Akz+jFCWMqCiLR0im1TS1xOFou2D4Ti3ljo9ONeFqz0zyBWGfX k6X2uZBhFkpRy8kHUHSnBS9TpiJHlhz8p4qaQGKfu8vwFU52AGfTDqtkn35aFhH95BFs mrFSoECr5o9R7fnaE2ANCUYyN1q6NOX1DNJTmJVvJ2QqX7HiBcdudqQPihMsNztNLE2Q 0u0Q== X-Gm-Message-State: AOAM533IVFHTYOCdFcCEPyQq/O/3yk6hADA86xatpo8dM2PvjJ7fEBEO Feg6muQr4IyGT1sQWwlucoXSHdWsGv+gOw== X-Google-Smtp-Source: ABdhPJyP3vuGgj4U9DsVM7rNgb11UUo3fiyXYOI6GECARJQxGicKL3y05ZV9qSDi67oFw9KE0A1ckw== X-Received: by 2002:a05:6e02:17ca:: with SMTP id z10mr11961906ilu.98.1638396276904; Wed, 01 Dec 2021 14:04:36 -0800 (PST) Received: from murgatroyd.Home (97-122-84-67.hlrn.qwest.net. [97.122.84.67]) by smtp.gmail.com with ESMTPSA id l18sm622298iob.17.2021.12.01.14.04.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Dec 2021 14:04:36 -0800 (PST) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 1/6] Change call_site_target to use custom type and enum Date: Wed, 1 Dec 2021 15:04:27 -0700 Message-Id: <20211201220432.4105152-2-tromey@adacore.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211201220432.4105152-1-tromey@adacore.com> References: <20211201220432.4105152-1-tromey@adacore.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Dec 2021 22:04:38 -0000 call_site_target reuses field_loc_kind and field_location. However, it has never used the full range of the field_loc_kind enum. In a subsequent patch, I plan to add a new 'kind' here, so it seemed best to avoid this reuse and instead introduce new types here. --- gdb/dwarf2/loc.c | 6 +++--- gdb/gdbtypes.h | 38 ++++++++++++++++++++++++++++---------- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/gdb/dwarf2/loc.c b/gdb/dwarf2/loc.c index 182f15e7077..1d49e7960f1 100644 --- a/gdb/dwarf2/loc.c +++ b/gdb/dwarf2/loc.c @@ -643,7 +643,7 @@ call_site_to_target_addr (struct gdbarch *call_site_gdbarch, { switch (call_site->target.loc_kind ()) { - case FIELD_LOC_KIND_DWARF_BLOCK: + case call_site_target::DWARF_BLOCK: { struct dwarf2_locexpr_baton *dwarf_block; struct value *val; @@ -690,7 +690,7 @@ call_site_to_target_addr (struct gdbarch *call_site_gdbarch, return value_as_address (val); } - case FIELD_LOC_KIND_PHYSNAME: + case call_site_target::PHYSNAME: { const char *physname; struct bound_minimal_symbol msym; @@ -713,7 +713,7 @@ call_site_to_target_addr (struct gdbarch *call_site_gdbarch, return BMSYMBOL_VALUE_ADDRESS (msym); } - case FIELD_LOC_KIND_PHYSADDR: + case call_site_target::PHYSADDR: { dwarf2_per_objfile *per_objfile = call_site->per_objfile; compunit_symtab *cust = per_objfile->get_symtab (call_site->per_cu); diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index 5284a4c3a03..48d1658613f 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -1810,52 +1810,70 @@ enum call_site_parameter_kind struct call_site_target { - field_loc_kind loc_kind () const + /* The kind of location held by this call site target. */ + enum kind + { + /* An address. */ + PHYSADDR, + /* A name. */ + PHYSNAME, + /* A DWARF block. */ + DWARF_BLOCK, + }; + + kind loc_kind () const { return m_loc_kind; } CORE_ADDR loc_physaddr () const { - gdb_assert (m_loc_kind == FIELD_LOC_KIND_PHYSADDR); + gdb_assert (m_loc_kind == PHYSADDR); return m_loc.physaddr; } void set_loc_physaddr (CORE_ADDR physaddr) { - m_loc_kind = FIELD_LOC_KIND_PHYSADDR; + m_loc_kind = PHYSADDR; m_loc.physaddr = physaddr; } const char *loc_physname () const { - gdb_assert (m_loc_kind == FIELD_LOC_KIND_PHYSNAME); + gdb_assert (m_loc_kind == PHYSNAME); return m_loc.physname; } void set_loc_physname (const char *physname) { - m_loc_kind = FIELD_LOC_KIND_PHYSNAME; + m_loc_kind = PHYSNAME; m_loc.physname = physname; } dwarf2_locexpr_baton *loc_dwarf_block () const { - gdb_assert (m_loc_kind == FIELD_LOC_KIND_DWARF_BLOCK); + gdb_assert (m_loc_kind == DWARF_BLOCK); return m_loc.dwarf_block; } void set_loc_dwarf_block (dwarf2_locexpr_baton *dwarf_block) { - m_loc_kind = FIELD_LOC_KIND_DWARF_BLOCK; + m_loc_kind = DWARF_BLOCK; m_loc.dwarf_block = dwarf_block; } - union field_location m_loc; + union + { + /* Address. */ + CORE_ADDR physaddr; + /* Mangled name. */ + const char *physname; + /* DWARF block. */ + struct dwarf2_locexpr_baton *dwarf_block; + } m_loc; /* * Discriminant for union field_location. */ - - ENUM_BITFIELD(field_loc_kind) m_loc_kind : 3; + enum kind m_loc_kind; }; union call_site_parameter_u -- 2.31.1