From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ot1-x344.google.com (mail-ot1-x344.google.com [IPv6:2607:f8b0:4864:20::344]) by sourceware.org (Postfix) with ESMTPS id 104E2385B831 for ; Mon, 23 Mar 2020 20:11:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 104E2385B831 Received: by mail-ot1-x344.google.com with SMTP id 111so14758169oth.13 for ; Mon, 23 Mar 2020 13:11:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=NH2TdHeDjpJRG1NIkmh4XfeHcoXWSOoWkbgh6GIQlZM=; b=YPrAM9IWuLDI/BmDmEDIqPyEB496xjgj1r/l+C5mkWtd9jIqjJKuZ+rPLU0EvFqbmA UIm29mekqfqGEC8QejlzjGDot9rcd/0YO7n9j+DrKlaWTOlxgRCddkSvA1MEytTF+1qt AdNAPwvBYF17TeWVb9wT375IqJPs3dInKs8LKxdFmOatireug1tr1Eh/Xqh8lFCvs1yt 1r2CupUOJ9vkwZY23eAQIVZc4G69BFKAeDwgpeAzD1bb2OvWSjm6O360C+Bmvojk1b6o sbUZtl3CtEXwMaUSdFG1dxjxCvwRClNvrETEYE7Z9z3gmZGeOmcWj8HYHByWZXRGL0yc Quzw== X-Gm-Message-State: ANhLgQ0R4ldEH4l+9yseQEYJW6Qb29gLWkV2wgxoHah2MJXOUUrDPuau Tg01voE30k9z03bmXxJuV9B9RJpuKxS7CL6IlRSF+7pD X-Google-Smtp-Source: ADFU+vsNPCX+YZARUiJHbUc+IeXtVpif8dpj1pQhB/3O1Qi+SwFNI2Uttsb26K+BGIN2z5Daj4z6XrnK3vUBVv6AV/A= X-Received: by 2002:a9d:3603:: with SMTP id w3mr19556831otb.94.1584994295002; Mon, 23 Mar 2020 13:11:35 -0700 (PDT) MIME-Version: 1.0 References: <20200322184523.28959-1-tom@tromey.com> <20200322184523.28959-20-tom@tromey.com> In-Reply-To: <20200322184523.28959-20-tom@tromey.com> From: Christian Biesinger Date: Mon, 23 Mar 2020 14:07:26 -0500 Message-ID: Subject: Re: [PATCH 19/22] Change two more functions to be methods on die_info To: Tom Tromey Cc: gdb-patches Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-43.5 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_CSS, URIBL_CSS_A, USER_IN_DEF_DKIM_WL, USER_IN_DEF_SPF_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: 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: Mon, 23 Mar 2020 20:11:37 -0000 On Sun, Mar 22, 2020 at 1:46 PM Tom Tromey wrote: > > This changes lookup_addr_base and lookup_ranges_base to be methods on > die_info. > > gdb/ChangeLog > 2020-03-22 Tom Tromey > > * dwarf2/die.h (struct die_info) : New > methods. > * dwarf2/read.c (lookup_addr_base): Move to die.h. > (lookup_ranges_base): Likewise. > (read_cutu_die_from_dwo, read_full_die_1): Update. > --- > gdb/ChangeLog | 8 ++++++++ > gdb/dwarf2/die.h | 28 ++++++++++++++++++++++++++++ > gdb/dwarf2/read.c | 34 +++------------------------------- > 3 files changed, 39 insertions(+), 31 deletions(-) > > diff --git a/gdb/dwarf2/die.h b/gdb/dwarf2/die.h > index 3a265b7df03..5673ae261ac 100644 > --- a/gdb/dwarf2/die.h > +++ b/gdb/dwarf2/die.h > @@ -33,6 +33,34 @@ struct die_info > return NULL; > } > > + /* Return the address base of the compile unit, which, if exists, is > + stored either at the attribute DW_AT_GNU_addr_base, or > + DW_AT_addr_base. */ > + gdb::optional addr_base () > + { > + struct attribute *attr; > + attr = attr (DW_AT_addr_base); I get that you want to avoid making code changes while moving code but I would really suggest merging these two lines at least (similar in the next function) > + if (attr == nullptr) > + attr = attr (DW_AT_GNU_addr_base); > + if (attr == nullptr) > + return gdb::optional (); > + return DW_UNSND (attr); > + } > + > + /* Return range lists base of the compile unit, which, if exists, is > + stored either at the attribute DW_AT_rnglists_base or > + DW_AT_GNU_ranges_base. */ > + ULONGEST ranges_base () > + { > + struct attribute *attr; > + attr = attr (DW_AT_rnglists_base); > + if (attr == nullptr) > + attr = attr (DW_AT_GNU_ranges_base); > + if (attr == nullptr) > + return 0; > + return DW_UNSND (attr); > + } > + > > /* DWARF-2 tag for this DIE. */ > ENUM_BITFIELD(dwarf_tag) tag : 16; > diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c > index 9d744ab0825..9e7152d03e6 100644 > --- a/gdb/dwarf2/read.c > +++ b/gdb/dwarf2/read.c > @@ -6386,34 +6386,6 @@ lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig) > } > } > > -/* Return the address base of the compile unit, which, if exists, is stored > - either at the attribute DW_AT_GNU_addr_base, or DW_AT_addr_base. */ > -static gdb::optional > -lookup_addr_base (struct die_info *comp_unit_die) > -{ > - struct attribute *attr; > - attr = comp_unit_die->attr (DW_AT_addr_base); > - if (attr == nullptr) > - attr = comp_unit_die->attr (DW_AT_GNU_addr_base); > - if (attr == nullptr) > - return gdb::optional (); > - return DW_UNSND (attr); > -} > - > -/* Return range lists base of the compile unit, which, if exists, is stored > - either at the attribute DW_AT_rnglists_base or DW_AT_GNU_ranges_base. */ > -static ULONGEST > -lookup_ranges_base (struct die_info *comp_unit_die) > -{ > - struct attribute *attr; > - attr = comp_unit_die->attr (DW_AT_rnglists_base); > - if (attr == nullptr) > - attr = comp_unit_die->attr (DW_AT_GNU_ranges_base); > - if (attr == nullptr) > - return 0; > - return DW_UNSND (attr); > -} > - > /* Low level DIE reading support. */ > > /* Initialize a die_reader_specs struct from a dwarf2_cu struct. */ > @@ -6502,12 +6474,12 @@ read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu, > ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu); > comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu); > > - cu->addr_base = lookup_addr_base (stub_comp_unit_die); > + cu->addr_base = stub_comp_unit_die->addr_base (); > > /* There should be a DW_AT_rnglists_base (DW_AT_GNU_ranges_base) attribute > here (if needed). We need the value before we can process > DW_AT_ranges. */ > - cu->ranges_base = lookup_ranges_base (stub_comp_unit_die); > + cu->ranges_base = stub_comp_unit_die->ranges_base (); > } > else if (stub_comp_dir != NULL) > { > @@ -17538,7 +17510,7 @@ read_full_die_1 (const struct die_reader_specs *reader, > if (attr != nullptr) > cu->str_offsets_base = DW_UNSND (attr); > > - auto maybe_addr_base = lookup_addr_base(die); > + auto maybe_addr_base = die->addr_base (); > if (maybe_addr_base.has_value ()) > cu->addr_base = *maybe_addr_base; > for (int index : indexes_that_need_reprocess) > -- > 2.17.2 >