From patchwork Tue Aug 27 23:41:53 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: 34289 Received: (qmail 71500 invoked by alias); 27 Aug 2019 23:42:01 -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 71424 invoked by uid 89); 27 Aug 2019 23:42:01 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-22.6 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=cust, HX-Received:5202, H*MI:google, HX-HELO:sk:mail-pf X-HELO: mail-pf1-f202.google.com Received: from mail-pf1-f202.google.com (HELO mail-pf1-f202.google.com) (209.85.210.202) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 27 Aug 2019 23:41:59 +0000 Received: by mail-pf1-f202.google.com with SMTP id r130so584944pfc.0 for ; Tue, 27 Aug 2019 16:41:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=jk9GMAxasTctT/qPLpWZgQfCjWzcLhSWDrra5t6OKcY=; b=lDjh0he0zquqUbnCluXBw3pCiBo9iTYwpDEM6LqMII8TmwR2NXVEWxu/xHkIZaU/0I 2FhENfEmnzqHSSdFOwVQDDsNlrcLIqvIr4W3oYb406raqlopwWsOiPpM/G5NVU9chY97 7hxdfbbJREDjN0WBCiZ85HF4Fi0+Et6wt3SZkNZdP043IXpMqygn6l8pELjmnd7BVe2z sFq5qBGUr+5KoPnCoo2qQ5DMTQGNa4fjP+Bve+KyEZgrBMwPTatfa2Qs7mBfIS5r+BH1 qjdFO2yFAcnlwoZH/8DL6QafxEQ/7s2tiIF/0mYDbMT07ZL4jxieerpvZ1YgbfoGG54a zYKg== Date: Tue, 27 Aug 2019 16:41:53 -0700 Message-Id: <20190827234154.244427-1-tamur@google.com> Mime-Version: 1.0 Subject: [PATCH 2/4] Increasing support for dwarf 5. X-Patchwork-Original-From: "Ali Tamur via gdb-patches" From: "Terekhov, Mikhail via Gdb-patches" Reply-To: Ali Tamur To: gdb-patches@sourceware.org Cc: Ali Tamur X-IsSubscribed: yes * Increase DW_FORM_strx support. * A couple of annoying whitespace corrections. gdb/ChangeLog: 2019-08-26 Ali Tamur * gdb/dwarf2read.c (skip_one_die): Handle DW_FORM_strx forms. (process_full_comp_unit): Correct whitespace. (process_full_type_unit): Likewise. (dwarf2_string_attr): Handle strx forms. (dump_die_shallow): Correct whitespace. (cu_debug_loc_section): Likewise. --- gdb/dwarf2read.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 91a4e48c8f..b04993e9b6 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -9288,6 +9288,7 @@ skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr, case DW_FORM_data1: case DW_FORM_ref1: case DW_FORM_flag: + case DW_FORM_strx1: info_ptr += 1; break; case DW_FORM_flag_present: @@ -9295,10 +9296,15 @@ skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr, break; case DW_FORM_data2: case DW_FORM_ref2: + case DW_FORM_strx2: info_ptr += 2; break; + case DW_FORM_strx3: + info_ptr += 3; + break; case DW_FORM_data4: case DW_FORM_ref4: + case DW_FORM_strx4: info_ptr += 4; break; case DW_FORM_data8: @@ -10329,7 +10335,7 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu, if (cu->language == language_go) fixup_go_packaging (cu); - /* Now that we have processed all the DIEs in the CU, all the types + /* Now that we have processed all the DIEs in the CU, all the types should be complete, and it should now be safe to compute all of the physnames. */ compute_delayed_physnames (cu); @@ -10378,7 +10384,7 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu, Still one can confuse GDB by using non-standard GCC compilation options - this waits on GCC PR other/32998 (-frecord-gcc-switches). - */ + */ if (cu->has_loclist && gcc_4_minor >= 5) cust->locations_valid = 1; @@ -10433,7 +10439,7 @@ process_full_type_unit (struct dwarf2_per_cu_data *per_cu, if (cu->language == language_go) fixup_go_packaging (cu); - /* Now that we have processed all the DIEs in the CU, all the types + /* Now that we have processed all the DIEs in the CU, all the types should be complete, and it should now be safe to compute all of the physnames. */ compute_delayed_physnames (cu); @@ -20115,6 +20121,10 @@ 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_strx1 + || attr->form == DW_FORM_strx2 + || attr->form == DW_FORM_strx3 + || attr->form == DW_FORM_strx4 || attr->form == DW_FORM_GNU_str_index || attr->form == DW_FORM_GNU_strp_alt) str = DW_STRING (attr); @@ -22982,7 +22992,7 @@ dump_die_shallow (struct ui_file *f, int indent, struct die_info *die) case DW_FORM_indirect: /* The reader will have reduced the indirect form to the "base form" so this form should not occur. */ - fprintf_unfiltered (f, + fprintf_unfiltered (f, "unexpected attribute form: DW_FORM_indirect"); break; case DW_FORM_implicit_const: @@ -25083,7 +25093,7 @@ cu_debug_loc_section (struct dwarf2_cu *cu) if (cu->dwo_unit) { struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections; - + return cu->header.version >= 5 ? §ions->loclists : §ions->loc; } return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists