From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7314 invoked by alias); 23 Apr 2019 12:33:44 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 7306 invoked by uid 89); 23 Apr 2019 12:33:44 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-19.1 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=expanding, HX-Envelope-From:sk:andrew. X-HELO: mail-wr1-f66.google.com Received: from mail-wr1-f66.google.com (HELO mail-wr1-f66.google.com) (209.85.221.66) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 23 Apr 2019 12:33:42 +0000 Received: by mail-wr1-f66.google.com with SMTP id o12so16683694wrn.2 for ; Tue, 23 Apr 2019 05:33:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=bXOgg3DhpW92cshn9xZ5Yati/qzMMpzKcyqqMlc4CoY=; b=ei+lgd3ZramXEEMSigfLcVgVEvXnaTsAQAPsO/WryJ1hOuQFBRYVqyvRgtyfQxmFYT VfId83DkPMt1/AnGGacggVtnOwQz1LG7m1SvioozhqVxiHQQBdedOJQ9+gm3XSi3/mCc oyXzrjjZZOuFUkurRKXTU7EDbCICe0cRoiWrAEoo/E7HSbOwS6YNXlECbkn/hIDy92UN 158NDu0oLu2GJMHCtCb3ky8yl07vQTMQyDxJDhXsEx7iT+OlhXL6pa2owVeL5AzPAvzl DrnMyWrIWWzOR+Ckk+gkE+4q4Q5saYh8d7SgcR4aNkV6lYqhmYjlR+DlNTF3yhnU2bWf Bdkw== Return-Path: Received: from localhost (host109-148-134-137.range109-148.btcentralplus.com. [109.148.134.137]) by smtp.gmail.com with ESMTPSA id d3sm30796684wmf.46.2019.04.23.05.33.39 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 23 Apr 2019 05:33:39 -0700 (PDT) Date: Tue, 23 Apr 2019 12:33:00 -0000 From: Andrew Burgess To: Ali Tamur Cc: gdb-patches@sourceware.org Subject: Re: [PATCH] Support for DW_FORM_strx tag Message-ID: <20190423123338.GG2737@embecosm.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Fortune: "If value corrupts then absolute value corrupts absolutely." X-Editor: GNU Emacs [ http://www.gnu.org/software/emacs ] User-Agent: Mutt/1.9.2 (2017-12-15) X-IsSubscribed: yes X-SW-Source: 2019-04/txt/msg00449.txt.bz2 * Ali Tamur via gdb-patches [2019-04-22 19:07:49 -0700]: > DW_FORM_strx is the new name of DW_FORM_GNU_str_index in the Dwarf 5 > standard. > This is a small step towards supporting Dwarf 5 in gdb. This looks good, with a few minor nits below... > > gdb/ChangeLog > 2019-04-27 Ali Tamur > > * dwarf2read.c (skip_one_die): Add DW_FORM_strx > (read_attribute_value): Likewise > (dwarf2_read_addr_index): Update comment > (read_str_index): Add DW_FORM_strx > (dwarf2_string_attr): Likewise > (dwarf2_const_value_attr): Likewise > (dump_die_shallow): Likewise > (dwarf2_fetch_constant_bytes): Likewise > (skip_form_bytes): Likewise These should all have '.' at the end. > --- > gdb/dwarf2read.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c > index 829b07f01a..09ecd4fbd4 100644 > --- a/gdb/dwarf2read.c > +++ b/gdb/dwarf2read.c > @@ -9369,6 +9369,7 @@ skip_one_die (const struct die_reader_specs *reader, > const gdb_byte *info_ptr, > info_ptr += 4 + read_4_bytes (abfd, info_ptr); > break; > case DW_FORM_addrx: > + case DW_FORM_strx: > case DW_FORM_sdata: > case DW_FORM_udata: > case DW_FORM_ref_udata: > @@ -19295,6 +19296,7 @@ read_attribute_value (const struct die_reader_specs > *reader, > DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, > &bytes_read); > info_ptr += bytes_read; > break; > + case DW_FORM_strx: > case DW_FORM_GNU_str_index: > if (reader->dwo_file == NULL) > { > @@ -19890,7 +19892,7 @@ dwarf2_read_addr_index (struct dwarf2_per_cu_data > *per_cu, > addr_size); > } > > -/* Given a DW_FORM_GNU_str_index, fetch the string. > +/* Given a DW_FORM_GNU_str_index or DW_FORM_strx, fetch the string. > This is only used by the Fission support. */ > > static const char * > @@ -19907,7 +19909,7 @@ read_str_index (const struct die_reader_specs > *reader, ULONGEST str_index) > &reader->dwo_file->sections.str_offsets; > const gdb_byte *info_ptr; > ULONGEST str_offset; > - static const char form_name[] = "DW_FORM_GNU_str_index"; > + static const char form_name[] = "DW_FORM_GNU_str_index or DW_FORM_strx"; > > dwarf2_read_section (objfile, str_section); > dwarf2_read_section (objfile, str_offsets_section); > @@ -20073,6 +20075,7 @@ dwarf2_string_attr (struct die_info *die, unsigned > int name, struct dwarf2_cu *c > { > if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp > || attr->form == DW_FORM_string > + || attr->form == DW_FORM_strx Your mail client seems to have corrupted the patch slightly so I couldn't check you had the correct tabs/spaces here. Please double check before you commit. > || attr->form == DW_FORM_GNU_str_index > || attr->form == DW_FORM_GNU_strp_alt) > str = DW_STRING (attr); > @@ -21896,6 +21899,7 @@ dwarf2_const_value_attr (const struct attribute > *attr, struct type *type, > break; > case DW_FORM_string: > case DW_FORM_strp: > + case DW_FORM_strx: > case DW_FORM_GNU_str_index: > case DW_FORM_GNU_strp_alt: > /* DW_STRING is already allocated on the objfile obstack, point > @@ -22900,6 +22904,7 @@ dump_die_shallow (struct ui_file *f, int indent, > struct die_info *die) > case DW_FORM_string: > case DW_FORM_strp: > case DW_FORM_line_strp: > + case DW_FORM_strx: Same white space check here please. > case DW_FORM_GNU_str_index: > case DW_FORM_GNU_strp_alt: > fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)", > @@ -23328,6 +23333,7 @@ dwarf2_fetch_constant_bytes (sect_offset sect_off, > break; > case DW_FORM_string: > case DW_FORM_strp: > + case DW_FORM_strx: > case DW_FORM_GNU_str_index: > case DW_FORM_GNU_strp_alt: > /* DW_STRING is already allocated on the objfile obstack, point > @@ -24293,6 +24299,7 @@ skip_form_bytes (bfd *abfd, const gdb_byte *bytes, > const gdb_byte *buffer_end, > > case DW_FORM_addrx: > case DW_FORM_sdata: > + case DW_FORM_strx: > case DW_FORM_udata: > case DW_FORM_GNU_addr_index: > case DW_FORM_GNU_str_index: Additionally could you look at expanding 'proc _handle_DW_FORM' in gdb/testsuite/lib/dwarf.exp to also handle DW_FORM_strx, this should just require adding a line like this 'DW_FORM_strx -' at the correct place. Thanks, Andrew