From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 45400 invoked by alias); 21 Dec 2018 21:59:55 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 45382 invoked by uid 89); 21 Dec 2018 21:59:54 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.2 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_HELO_PASS,SPF_SOFTFAIL autolearn=ham version=3.3.2 spammy= X-HELO: mail.baldwin.cx Received: from bigwig.baldwin.cx (HELO mail.baldwin.cx) (96.47.65.170) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 21 Dec 2018 21:59:51 +0000 Received: from John-Baldwins-MacBook-Pro-2.local (ralph.baldwin.cx [66.234.199.215]) by mail.baldwin.cx (Postfix) with ESMTPSA id 9CF1A10B670; Fri, 21 Dec 2018 16:59:49 -0500 (EST) Subject: Re: [PATCH] Add "set debug minsyms" command To: Simon Marchi References: <20181221214706.26981-1-simon.marchi@ericsson.com> Cc: "gdb-patches@sourceware.org" From: John Baldwin Openpgp: preference=signencrypt Message-ID: <18230036-5562-b705-a9b5-b9e435d63c32@FreeBSD.org> Date: Fri, 21 Dec 2018 21:59:00 -0000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:60.0) Gecko/20100101 Thunderbird/60.3.3 MIME-Version: 1.0 In-Reply-To: <20181221214706.26981-1-simon.marchi@ericsson.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-IsSubscribed: yes X-SW-Source: 2018-12/txt/msg00262.txt.bz2 On 12/21/18 1:47 PM, Simon Marchi wrote: > While discussing this issue: > > https://sourceware.org/ml/gdb-patches/2018-12/threads.html#00082 > > I added a printf to be able to quickly see all minimal symbols recorded > by GDB. I thought it would be useful to have it built-in, for the > future. > > The output isn't particularly pretty. I found it more readable when making > sure the fields were vertically aligned, which results in a lot of space wasted > in the "type" column (the width is based on the length of the longest > enumerator): > > minsym: recording minsym type: mst_data addr: 0x00000000004047c0 section: 2 name: __rt_psrelocs_end > minsym: recording minsym type: mst_text addr: 0x0000000000402b88 section: 0 name: exit > > But since this is just debugging output, I think it doesn't really > matter. > > Also, I didn't use paddress to print the address, because: > > 1. There is no gdbarch handy at this point > 2. The address may not actually be an address, but any numerical value. > Printing with paddress could change how it's displayed (e.g. mask > certain bits) and could be misleading. I think it's better to print > the actual raw value saved in the minimal symbol. 2) seems compelling to me. > gdb/ChangeLog: > > * minsyms.c: Include cli/cli-cmds.h. > (debug_minsyms): New. > (mst_str): New. > (minimal_symbol_reader::record_full): Add debug output. > (_initialize_minsyms): New. > --- > gdb/auto-load.c | 2 ++ > gdb/elfread.c | 2 ++ > gdb/minsyms.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 52 insertions(+) > > diff --git a/gdb/auto-load.c b/gdb/auto-load.c > index 33d282afe83..e35fd29426b 100644 > --- a/gdb/auto-load.c > +++ b/gdb/auto-load.c > @@ -1175,6 +1175,8 @@ load_auto_scripts_for_objfile (struct objfile *objfile) > static void > auto_load_new_objfile (struct objfile *objfile) > { > + std::vector c; > + c.clear(); > if (!objfile) > { > /* OBJFILE is NULL when loading a new "main" symbol-file. */ This seems spurious (also not in ChangeLog)? > diff --git a/gdb/elfread.c b/gdb/elfread.c > index 71e6fcca6ec..359089b166c 100644 > --- a/gdb/elfread.c > +++ b/gdb/elfread.c > @@ -249,6 +249,8 @@ elf_symtab_read (minimal_symbol_reader &reader, > continue; > } > > + printf(" --- %s\n", sym->name); > + > /* Skip "special" symbols, e.g. ARM mapping symbols. These are > symbols which do not correspond to objects in the symbol table, > but have some other target-specific meaning. */ Likewise. > diff --git a/gdb/minsyms.c b/gdb/minsyms.c > index 0f854422e0f..98ce969eed0 100644 > --- a/gdb/minsyms.c > +++ b/gdb/minsyms.c > @@ -1112,6 +1143,11 @@ minimal_symbol_reader::record_full (const char *name, int name_len, > if (ms_type == mst_file_text && startswith (name, "__gnu_compiled")) > return (NULL); > > + if (debug_minsyms) > + printf_unfiltered > + ("minsym: recording minsym type: %-21s addr: 0x%016llx section: %-5d name: %s\n", > + mst_str (ms_type), (long long) address, section, name); Maybe plongest() instead of %llx? Or does plongest not do the leading 0 fill you want? -- John Baldwin                                                                            Â