From patchwork Thu Apr 13 04:15:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 20016 Received: (qmail 32801 invoked by alias); 13 Apr 2017 04:44:30 -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 54745 invoked by uid 89); 13 Apr 2017 04:42:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: outbound-ss-1812.hostmonster.com Received: from gproxy1-pub.mail.unifiedlayer.com (HELO outbound-ss-1812.hostmonster.com) (69.89.25.95) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 13 Apr 2017 04:42:49 +0000 Received: from cmgw2 (cmgw3 [10.0.90.83]) by gproxy1.mail.unifiedlayer.com (Postfix) with ESMTP id A77891761FF for ; Wed, 12 Apr 2017 22:15:21 -0600 (MDT) Received: from box522.bluehost.com ([74.220.219.122]) by cmgw2 with id 7gFJ1v00Q2f2jeq01gFMoy; Wed, 12 Apr 2017 22:15:21 -0600 X-Authority-Analysis: v=2.2 cv=LIwWeNe9 c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=AzvcPWV-tVgA:10 a=zstS-IiYAAAA:8 a=20KFwNOVAAAA:8 a=5LUADulxP6_muqzdW8MA:9 a=4G6NA9xxw8l3yy4pmD5M:22 Received: from 75-166-65-226.hlrn.qwest.net ([75.166.65.226]:55462 helo=bapiya.Home) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.87) (envelope-from ) id 1cyWAA-0004mA-5u; Wed, 12 Apr 2017 22:15:18 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA 1/2] Use a distinguishing name for minidebug objfile Date: Wed, 12 Apr 2017 22:15:03 -0600 Message-Id: <20170413041504.14435-2-tom@tromey.com> In-Reply-To: <20170413041504.14435-1-tom@tromey.com> References: <20170413041504.14435-1-tom@tromey.com> X-BWhitelist: no X-Exim-ID: 1cyWAA-0004mA-5u X-Source-Sender: 75-166-65-226.hlrn.qwest.net (bapiya.Home) [75.166.65.226]:55462 X-Source-Auth: tom+tromey.com X-Email-Count: 2 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== One part of PR cli/19951 is that the mini debug info objfile reuses the name of the main objfile from which it comes. This can be seen because gdb claims to be reading symbols from the same file two times, like: Reading symbols from /bin/gdb...Reading symbols from /bin/gdb...(no debugging symbols found)...done. I think this would be less confusing if the minidebug objfile were given a different name. That is what this patch implements. It also arranges for the minidebug objfile to be marked OBJF_NOT_FILENAME. gdb/ChangeLog 2017-04-12 Tom Tromey PR cli/19551: * symfile-add-flags.h (enum symfile_add_flags) : New constant. * symfile.c (read_symbols): Use SYMFILE_NOT_FILENAME. Get objfile name from BFD. (symbol_file_add_with_addrs): Check SYMFILE_NOT_FILENAME. * minidebug.c (find_separate_debug_file_in_section): Put ".gnu_debugdata" into BFD's file name. --- gdb/ChangeLog | 11 +++++++++++ gdb/minidebug.c | 5 ++++- gdb/symfile-add-flags.h | 7 +++++-- gdb/symfile.c | 4 +++- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 315932e..c56de68 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2017-04-12 Tom Tromey + + PR cli/19551: + * symfile-add-flags.h (enum symfile_add_flags) + : New constant. + * symfile.c (read_symbols): Use SYMFILE_NOT_FILENAME. Get + objfile name from BFD. + (symbol_file_add_with_addrs): Check SYMFILE_NOT_FILENAME. + * minidebug.c (find_separate_debug_file_in_section): Put + ".gnu_debugdata" into BFD's file name. + 2017-04-13 Pedro Alves * breakpoint.h (struct breakpoint): Reindent. diff --git a/gdb/minidebug.c b/gdb/minidebug.c index d4687dd..c2ada46 100644 --- a/gdb/minidebug.c +++ b/gdb/minidebug.c @@ -270,7 +270,10 @@ find_separate_debug_file_in_section (struct objfile *objfile) return NULL; #ifdef HAVE_LIBLZMA - abfd = gdb_bfd_openr_iovec (objfile_name (objfile), gnutarget, lzma_open, + std::string filename = (std::string (".gnu_debugdata for ") + + objfile_name (objfile)); + + abfd = gdb_bfd_openr_iovec (filename.c_str (), gnutarget, lzma_open, section, lzma_pread, lzma_close, lzma_stat); if (abfd == NULL) return NULL; diff --git a/gdb/symfile-add-flags.h b/gdb/symfile-add-flags.h index 4d5f58a..c2c6fd2 100644 --- a/gdb/symfile-add-flags.h +++ b/gdb/symfile-add-flags.h @@ -40,8 +40,11 @@ enum symfile_add_flag /* Do not immediately read symbols for this file. By default, symbols are read when the objfile is created. */ - SYMFILE_NO_READ = 1 << 4 - }; + SYMFILE_NO_READ = 1 << 4, + + /* The new objfile should be marked OBJF_NOT_FILENAME. */ + SYMFILE_NOT_FILENAME = 1 << 5, + }; DEF_ENUM_FLAGS_TYPE (enum symfile_add_flag, symfile_add_flags); diff --git a/gdb/symfile.c b/gdb/symfile.c index 846aabe..ff1e726 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -876,7 +876,7 @@ read_symbols (struct objfile *objfile, symfile_add_flags add_flags) section. Therefore use also non-canonical name form for the same file containing the section. */ symbol_file_add_separate (abfd.get (), objfile->original_name, - add_flags, objfile); + add_flags | SYMFILE_NOT_FILENAME, objfile); } } if ((add_flags & SYMFILE_NO_READ) == 0) @@ -1143,6 +1143,8 @@ symbol_file_add_with_addrs (bfd *abfd, const char *name, flags |= OBJF_READNOW; add_flags &= ~SYMFILE_NO_READ; } + if ((add_flags & SYMFILE_NOT_FILENAME) != 0) + flags |= OBJF_NOT_FILENAME; /* Give user a chance to burp if we'd be interactively wiping out any existing symbols. */