From patchwork Tue Apr 23 02:07:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Terekhov, Mikhail via Gdb-patches" X-Patchwork-Id: 32364 Received: (qmail 13417 invoked by alias); 23 Apr 2019 02:08:07 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 13402 invoked by uid 89); 23 Apr 2019 02:08:06 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-28.5 required=5.0 tests=AWL, BAYES_00, ENV_AND_HDR_SPF_MATCH, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_PASS, USER_IN_DEF_SPF_WL autolearn=ham version=3.3.1 spammy=sk:dwarf2_, H*c:alternative X-HELO: mail-wm1-f68.google.com Received: from mail-wm1-f68.google.com (HELO mail-wm1-f68.google.com) (209.85.128.68) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 23 Apr 2019 02:08:04 +0000 Received: by mail-wm1-f68.google.com with SMTP id w15so16611392wmc.3 for ; Mon, 22 Apr 2019 19:08:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=jdwc4/wM1XNS92Jl62KXV7kBrqmZgv3k1+I9bnPQozw=; b=GAHrY4d9vYqKK7U0dgXtZMuFxwdhc3t15BeKn7sm74yTxCQCyUoIboYkgaFyVisRoV 6LJWwQSImPSRPZRwds1T87zJCl1GYjry61UXwNjKLosD28+TuswaKVzCO65lFsQi7HkP sbeMBu79z6VwWvgxtWG/VCtX35TuBz9ViNuFYzV8M946841bBXeo1t/ABDHKrpZWFD2O 3BKSHYL9jTctdMoGoxsnAME9O2g14yUu1wNQb/akC5Ch9wrCKheg3q1UlBLRKwLVi/H1 KTnxmLzgQksCFKLUD/G7jlXNrDCIirGY6MzUe/g9NZz7ggKNLTvuI68fxbE008t/nyur wX6A== MIME-Version: 1.0 X-Patchwork-Original-From: "Ali Tamur via gdb-patches" From: "Terekhov, Mikhail via Gdb-patches" Reply-To: Ali Tamur Date: Mon, 22 Apr 2019 19:07:49 -0700 Message-ID: Subject: [PATCH] Support for DW_FORM_strx tag To: gdb-patches@sourceware.org X-IsSubscribed: yes 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. 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 --- gdb/dwarf2read.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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 || 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: 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: 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: