From: Simon Marchi <simon.marchi@polymtl.ca>
To: Lancelot SIX <lsix@lancelotsix.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH v3 5/7] gdb: add "id" fields to identify symtabs and subfiles
Date: Thu, 28 Jul 2022 13:46:23 -0400 [thread overview]
Message-ID: <9c6b5e6e-c164-a01f-13d3-4081dcdabb95@polymtl.ca> (raw)
In-Reply-To: <20220428235314.elsyab5pk5bufivr@ubuntu.lan>
On 4/28/22 19:53, Lancelot SIX wrote:
> Hi,
>
> Just some nits below.
>
> When applying the patch I have:
>
> Applying: gdb: add "id" fields to identify symtabs and subfiles
> .git/rebase-apply/patch:153: trailing whitespace.
> It is used to look up existing subfiles in calls to start_subfile. */
> warning: 1 line adds whitespace errors.
Fixed.
>> Another this to consider is that while the main symtab's name (or
>
> s/this/thing/ ?
Fixed.
>> Changes in the core symtab files are:
>>
>> - Add "name_for_id" and "filename_for_id" fields to "struct subfile"
>> and "struct symta"b, next to existing "name" and "filename" fields.
> ^
> Two chars are swapped here.
Fixed.
>> - Make buildsym_compunit::buildsym_compunit and
>> buildsym_compunit::start_subfile accept a "name_for_id" parameter
>> next to the existing "name" ones.
>> - Make buildsym_compunit::start_subfile used "name_for_id" for looking
>> up existing subfiles. This is the key thing for making calls
>> to start_subfile for the main source file look up the existing
>> subfile successfully, and avoid relying on
>> watch_main_source_file_lossage.
>> - Make sal_macro_scope pass "filename_for_id", rather than "filename",
>> to macro_lookup_inclusion. This is the key thing to making the
>> lookup work and macro printing work.
>>
>> Changes in the DWARF files are:
>>
>> - Make line_header::file_file_name return the "most complete possible"
>> name. The only pre-existing user of this method is the macro code,
>> to give the macro_source_file objects their name. And we now want
>> them to have this "most complete possible" name, which will match the
>> corresponding symtab's "filename_for_id".
>> - Make dwarf2_cu::start_compunit_symtab pass the "most complete
>> possible" name for the main symtab's "filename_for_id". In this
>> context, where the info comes from the compilation unit's DW_AT_name
>> / DW_AT_comp_dir, it means prepending DW_AT_comp_dir to DW_AT_name if
>> DW_AT_name is not already absolute.
>> - Change dwarf2_start_subfile to build a name_for_id for the subfile
>> being started. The simplest way is to re-use
>> line_header::file_file_name, since the callers always have a
>> file_entry handy. This ensures that it will get the exact same path
>> representation as the macro code does, for the same file (since it
>> also uses line_header::file_file_name).
>> - Update calls to allocate_symtab to pass the "name_for_id" from the
>> subfile.
>>
>> The rest of the changes are to update the other symtab users (jit,
>> ctfread, mdebugread, xcoffread). For those, the same value is passed
>> for the "id" as the for the filename, so they should keep the same
>> behavior they have today.
>
> I guess this is just personal preference, but I would have chosen to
> add overloads so those files do not have to change / bother about an
> argument which is meaningless for them.
>
> Something like:
>
> // gdb/buildsym.h
> struct buildsym_compunit
> {
> buildsym_compunit (struct objfile *objfile_, const char *name,
> const char *comp_dir_, enum language language_,
> CORE_ADDR last_addr)
> : buildsym_compunit (objfile_, name, comp_dir_, name,
> language_, last_addr);
> buildsym_compunit (struct objfile *objfile_, const char *name,
> const char *comp_dir_, const char *name_for_id,
> language language_, CORE_ADDR last_addr);
>
> ...
>
> void start_subfile (const char *name, const char *name_for_id);
>
> void start_subfile (const char *name)
> { start_subfile (name, name); }
> };
>
> // gdb/symfile.h
> extern struct symtab *allocate_symtab
> (struct compunit_symtab *cust, const char *filename, const char *id))
> ATTRIBUTE_NONNULL (1);
>
> static inline struct symtab *
> allocate_symtab (struct compunit_symtab *cust, const char *filename)
> {
> return allocate_sumtab (cust, filename, filename);
> }
>
> In the end it does not make much difference, your approach work also
> perfectly fine so feel free to keep it the way it is.
I did that.
>
> Otherwise, FWIW I find the approach to keep one string representation of
> the filename for display and one for some sort of canonicalization
> perfectly appropriate.
Ok, thanks for the review.
>> Similary, with DWARF 5:
>
> s/Similary/Similarly/
Fixed.
Simon
next prev parent reply other threads:[~2022-07-28 17:47 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-28 3:35 [PATCH v3 0/7] Fix printing macros Simon Marchi
2022-04-28 3:35 ` [PATCH v3 1/7] gdb: introduce symtab_create_debug_printf Simon Marchi
2022-04-28 15:49 ` Tom Tromey
2022-04-28 3:35 ` [PATCH v3 2/7] gdb: add debug prints in buildsym.c Simon Marchi
2022-04-28 15:50 ` Tom Tromey
2022-04-28 3:35 ` [PATCH v3 3/7] gdb/dwarf: pass compilation directory to line header Simon Marchi
2022-04-28 15:48 ` Tom Tromey
2022-04-28 15:59 ` Simon Marchi
2022-04-28 3:35 ` [PATCH v3 4/7] gdb/dwarf: pass a file_entry to line_header::file_file_name Simon Marchi
2022-05-03 20:12 ` Bruno Larsen
2022-07-28 16:26 ` Simon Marchi
2022-04-28 3:35 ` [PATCH v3 5/7] gdb: add "id" fields to identify symtabs and subfiles Simon Marchi
2022-04-28 23:53 ` Lancelot SIX
2022-07-28 17:46 ` Simon Marchi [this message]
2022-04-28 3:35 ` [PATCH v3 6/7] gdb: remove code to prepend comp dir in buildsym_compunit::start_subfile Simon Marchi
2022-05-12 13:07 ` Bruno Larsen
2022-07-28 17:47 ` Simon Marchi
2022-04-28 3:35 ` [PATCH v3 7/7] gdb/testsuite: add macros test for source files compiled in various ways Simon Marchi
2022-05-12 13:17 ` Bruno Larsen
2022-07-28 17:51 ` Simon Marchi
2022-07-30 0:56 ` [PATCH v3 0/7] Fix printing macros Simon Marchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9c6b5e6e-c164-a01f-13d3-4081dcdabb95@polymtl.ca \
--to=simon.marchi@polymtl.ca \
--cc=gdb-patches@sourceware.org \
--cc=lsix@lancelotsix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).