From patchwork Sun Feb 12 20:23:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kratochvil X-Patchwork-Id: 19235 Received: (qmail 43102 invoked by alias); 12 Feb 2017 20:23:45 -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 42845 invoked by uid 89); 12 Feb 2017 20:23:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=unmatched, Macros, unrecognized, violation X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 12 Feb 2017 20:23:39 +0000 Received: from smtp.corp.redhat.com (int-mx16.intmail.prod.int.phx2.redhat.com [10.5.11.28]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 25ABD80460; Sun, 12 Feb 2017 20:23:39 +0000 (UTC) Received: from host1.jankratochvil.net (ovpn-116-221.ams2.redhat.com [10.36.116.221]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5CA6C2DB5C; Sun, 12 Feb 2017 20:23:38 +0000 (UTC) Subject: [PATCH 7/8] DWARF-5: Macros From: Jan Kratochvil To: gdb-patches@sourceware.org Cc: Victor Leschuk Date: Sun, 12 Feb 2017 21:23:36 +0100 Message-ID: <148693101650.9024.921167249134155014.stgit@host1.jankratochvil.net> In-Reply-To: <148693097396.9024.2288256732840761882.stgit@host1.jankratochvil.net> References: <148693097396.9024.2288256732840761882.stgit@host1.jankratochvil.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-IsSubscribed: yes Hi, DWARF-5 renamed DW_MACRO_GNU_* to DW_MACRO_*. Jan gdb/ChangeLog 2017-02-11 Jan Kratochvil * dwarf2read.c (read_file_scope): Rename DW_MACRO_GNU_*. (dwarf_parse_macro_header): Accept DWARF version 5. (dwarf_decode_macro_bytes, dwarf_decode_macros): Rename DW_MACRO_GNU_*. --- gdb/dwarf2read.c | 78 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 1b671e4..420cbe0 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -9312,12 +9312,14 @@ read_file_scope (struct die_info *die, struct dwarf2_cu *cu) refers to information in the line number info statement program header, so we can only read it if we've read the header successfully. */ - attr = dwarf2_attr (die, DW_AT_GNU_macros, cu); + attr = dwarf2_attr (die, DW_AT_macros, cu); + if (attr == NULL) + attr = dwarf2_attr (die, DW_AT_GNU_macros, cu); if (attr && cu->line_header) { if (dwarf2_attr (die, DW_AT_macro_info, cu)) complaint (&symfile_complaints, - _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info")); + _("CU refers to both DW_AT_macros and DW_AT_macro_info")); dwarf_decode_macros (cu, DW_UNSND (attr), 1); } @@ -21713,7 +21715,7 @@ dwarf_parse_macro_header (const gdb_byte **opcode_definitions, unsigned int version, flags; version = read_2_bytes (abfd, mac_ptr); - if (version != 4) + if (version != 4 && version != 5) { complaint (&symfile_complaints, _("unrecognized version `%d' in .debug_macro section"), @@ -21756,7 +21758,7 @@ dwarf_parse_macro_header (const gdb_byte **opcode_definitions, } /* A helper for dwarf_decode_macros that handles the GNU extensions, - including DW_MACRO_GNU_transparent_include. */ + including DW_MACRO_import. */ static void dwarf_decode_macro_bytes (bfd *abfd, @@ -21811,12 +21813,12 @@ dwarf_decode_macro_bytes (bfd *abfd, case 0: break; - case DW_MACRO_GNU_define: - case DW_MACRO_GNU_undef: - case DW_MACRO_GNU_define_indirect: - case DW_MACRO_GNU_undef_indirect: - case DW_MACRO_GNU_define_indirect_alt: - case DW_MACRO_GNU_undef_indirect_alt: + case DW_MACRO_define: + case DW_MACRO_undef: + case DW_MACRO_define_strp: + case DW_MACRO_undef_strp: + case DW_MACRO_define_sup: + case DW_MACRO_undef_sup: { unsigned int bytes_read; int line; @@ -21826,8 +21828,8 @@ dwarf_decode_macro_bytes (bfd *abfd, line = gdb_read_unsigned_leb128 (abfd, mac_ptr, &bytes_read); mac_ptr += bytes_read; - if (macinfo_type == DW_MACRO_GNU_define - || macinfo_type == DW_MACRO_GNU_undef) + if (macinfo_type == DW_MACRO_define + || macinfo_type == DW_MACRO_undef) { body = read_direct_string (abfd, mac_ptr, &bytes_read); mac_ptr += bytes_read; @@ -21839,8 +21841,8 @@ dwarf_decode_macro_bytes (bfd *abfd, str_offset = read_offset_1 (abfd, mac_ptr, offset_size); mac_ptr += offset_size; - if (macinfo_type == DW_MACRO_GNU_define_indirect_alt - || macinfo_type == DW_MACRO_GNU_undef_indirect_alt + if (macinfo_type == DW_MACRO_define_sup + || macinfo_type == DW_MACRO_undef_sup || section_is_dwz) { struct dwz_file *dwz = dwarf2_get_dwz_file (); @@ -21851,9 +21853,9 @@ dwarf_decode_macro_bytes (bfd *abfd, body = read_indirect_string_at_offset (abfd, str_offset); } - is_define = (macinfo_type == DW_MACRO_GNU_define - || macinfo_type == DW_MACRO_GNU_define_indirect - || macinfo_type == DW_MACRO_GNU_define_indirect_alt); + is_define = (macinfo_type == DW_MACRO_define + || macinfo_type == DW_MACRO_define_strp + || macinfo_type == DW_MACRO_define_sup); if (! current_file) { /* DWARF violation as no main source is present. */ @@ -21876,15 +21878,15 @@ dwarf_decode_macro_bytes (bfd *abfd, parse_macro_definition (current_file, line, body); else { - gdb_assert (macinfo_type == DW_MACRO_GNU_undef - || macinfo_type == DW_MACRO_GNU_undef_indirect - || macinfo_type == DW_MACRO_GNU_undef_indirect_alt); + gdb_assert (macinfo_type == DW_MACRO_undef + || macinfo_type == DW_MACRO_undef_strp + || macinfo_type == DW_MACRO_undef_sup); macro_undef (current_file, line, body); } } break; - case DW_MACRO_GNU_start_file: + case DW_MACRO_start_file: { unsigned int bytes_read; int line, file; @@ -21904,7 +21906,7 @@ dwarf_decode_macro_bytes (bfd *abfd, if (at_commandline) { - /* This DW_MACRO_GNU_start_file was executed in the + /* This DW_MACRO_start_file was executed in the pass one. */ at_commandline = 0; } @@ -21913,7 +21915,7 @@ dwarf_decode_macro_bytes (bfd *abfd, } break; - case DW_MACRO_GNU_end_file: + case DW_MACRO_end_file: if (! current_file) complaint (&symfile_complaints, _("macro debug info has an unmatched " @@ -21952,8 +21954,8 @@ dwarf_decode_macro_bytes (bfd *abfd, } break; - case DW_MACRO_GNU_transparent_include: - case DW_MACRO_GNU_transparent_include_alt: + case DW_MACRO_import: + case DW_MACRO_import_sup: { LONGEST offset; void **slot; @@ -21966,7 +21968,7 @@ dwarf_decode_macro_bytes (bfd *abfd, offset = read_offset_1 (abfd, mac_ptr, offset_size); mac_ptr += offset_size; - if (macinfo_type == DW_MACRO_GNU_transparent_include_alt) + if (macinfo_type == DW_MACRO_import_sup) { struct dwz_file *dwz = dwarf2_get_dwz_file (); @@ -21986,7 +21988,7 @@ dwarf_decode_macro_bytes (bfd *abfd, /* This has actually happened; see http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */ complaint (&symfile_complaints, - _("recursive DW_MACRO_GNU_transparent_include in " + _("recursive DW_MACRO_import in " ".debug_macro section")); } else @@ -22128,8 +22130,8 @@ dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset, case 0: break; - case DW_MACRO_GNU_define: - case DW_MACRO_GNU_undef: + case DW_MACRO_define: + case DW_MACRO_undef: /* Only skip the data by MAC_PTR. */ { unsigned int bytes_read; @@ -22141,7 +22143,7 @@ dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset, } break; - case DW_MACRO_GNU_start_file: + case DW_MACRO_start_file: { unsigned int bytes_read; int line, file; @@ -22155,14 +22157,14 @@ dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset, } break; - case DW_MACRO_GNU_end_file: + case DW_MACRO_end_file: /* No data to skip by MAC_PTR. */ break; - case DW_MACRO_GNU_define_indirect: - case DW_MACRO_GNU_undef_indirect: - case DW_MACRO_GNU_define_indirect_alt: - case DW_MACRO_GNU_undef_indirect_alt: + case DW_MACRO_define_strp: + case DW_MACRO_undef_strp: + case DW_MACRO_define_sup: + case DW_MACRO_undef_sup: { unsigned int bytes_read; @@ -22172,10 +22174,10 @@ dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset, } break; - case DW_MACRO_GNU_transparent_include: - case DW_MACRO_GNU_transparent_include_alt: + case DW_MACRO_import: + case DW_MACRO_import_sup: /* Note that, according to the spec, a transparent include - chain cannot call DW_MACRO_GNU_start_file. So, we can just + chain cannot call DW_MACRO_start_file. So, we can just skip this opcode. */ mac_ptr += offset_size; break;