From patchwork Fri Feb 7 11:34:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 37723 Received: (qmail 64284 invoked by alias); 7 Feb 2020 11:34:42 -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 64276 invoked by uid 89); 7 Feb 2020 11:34:41 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.1 spammy=batch, xmalloc, pst X-HELO: mx2.suse.de Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 07 Feb 2020 11:34:35 +0000 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id B0E23B17A for ; Fri, 7 Feb 2020 11:34:32 +0000 (UTC) Date: Fri, 7 Feb 2020 12:34:31 +0100 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH][gdb] Mention CU offset for if verbose Message-ID: <20200207113429.GA6532@delia> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) X-IsSubscribed: yes Hi, Say we're debugging a test-case with CUs with name "", meaning not originating from a single file compilation, and use the verbose setting: ... $ gdb -iex "set verbose on" -batch cc1 Reading symbols from cc1... Reading in symbols for ... \ and /tmp/trunk/gcc/attribs.c... \ ... and /tmp/trunk/gcc/tree-ssa-reassoc.c... \ done. ... From the "/tmp/trunk/gcc/attribs.c" message, it's clear which CU is loaded. But that's not the case for the "" message. The message uses the filename field of struct partial_symtab, which is documented like this: ... /* Name of the source file which this partial_symtab defines, or if the psymtab is anonymous then a descriptive name for debugging purposes, or "". It must not be NULL. */ ... So, fix this by setting the filename field to a more descriptive name than "", by appending the CU offset. This way, we print instead: ... $ gdb -iex "set verbose on" -batch cc1 Reading symbols from cc1... Reading in symbols for @0x41146d9 \ and /tmp/trunk/gcc/attribs.c... \ ... \ and /tmp/trunk/gcc/tree-ssa-reassoc.c... \ done. ... Build and reg-tested on x86_64-linux. OK for trunk? Thanks, - Tom [gdb] Mention CU offset for if verbose gdb/ChangeLog: 2020-02-07 Tom de Vries * dwarf2read.c (create_partial_symtab): Append CU offset to filename if it matches "". --- gdb/dwarf2read.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index dafe01d94a..28ade424fd 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -8020,6 +8020,20 @@ create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name) struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile; dwarf2_psymtab *pst; + const char *artificial = ""; + if (strcmp (name, artificial) == 0) + { + sect_offset cu_offset = per_cu->sect_off; + const char *cu_offset_str = sect_offset_str (cu_offset); + const char *sep = "@"; + char *new_name = (char *) xmalloc (strlen (artificial) + strlen (sep) + + strlen (cu_offset_str) + 1); + strcpy (new_name, artificial); + strcat (new_name, sep); + strcat (new_name, cu_offset_str); + name = new_name; + } + pst = new dwarf2_psymtab (name, objfile, 0); pst->psymtabs_addrmap_supported = true;