public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
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

  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).