public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Philippe Waroquiers <philippe.waroquiers@skynet.be>
To: Pedro Alves <palves@redhat.com>, gdb-patches@sourceware.org
Subject: Re: [RFA 2/5] Use scoped_switch_auto_to_sym_language in symtab.c to switch language.
Date: Sat, 17 Nov 2018 12:24:00 -0000	[thread overview]
Message-ID: <1542457452.1531.12.camel@skynet.be> (raw)
In-Reply-To: <5c4edf47-cdb1-640b-6127-f14842a9707d@redhat.com>

On Fri, 2018-11-16 at 18:28 +0000, Pedro Alves wrote:
> On 10/28/2018 02:46 PM, Philippe Waroquiers wrote:
> > 
> >    if (symbol_lookup_debug > 1)
> >      {
> > @@ -4601,6 +4598,7 @@ print_symbol_info (enum search_domain kind,
> >  		   struct symbol *sym,
> >  		   int block, const char *last)
> >  {
> > +  scoped_switch_auto_to_sym_language l (sym);
> 
> Sounds unnecessarily inefficient to use the scoped switch here
> instead of at the caller to avoid the back and forth for each
> symbol, but probably this isn't in any hot path, so it's fine.
Yes, I do not think this is performance critical,
and also, switching of language is not very expensive :
it implies to construct/destroy scoped_switch_auto_to_sym_language l,
which do calls to functions setting enumeration values for
the language and case settings.
 
> 
> >    struct symtab *s = symbol_symtab (sym);
> >  
> >    if (last != NULL)
> > diff --git a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
> > index b15dcafa00..2e3397865a 100644
> > --- a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
> > +++ b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
> > @@ -42,8 +42,10 @@ gdb_test "info functions fUnC_lang" \
> >  gdb_test "set case-sensitive off" {warning: the current case sensitivity setting does not match the language\.}
> >  
> >  # The dot-leading symbol is for ppc64 function descriptors.
> > +# Note that info functions gives the FUNC_lang result using the fortran syntax
> > +# as specific in dw-case-insensitive-debug.S DW_AT_language.
> >  gdb_test "info functions fUnC_lang" \
> > -	 "All functions matching regular expression \"fUnC_lang\":\[\r\n\]+File file1.txt:\r\n\tfoo FUNC_lang\\(void\\);(\r\n\r\nNon-debugging symbols:\r\n0x\[0-9a-f\]+ +\\.FUNC_lang)?" \
> > +	 "All functions matching regular expression \"fUnC_lang\":\[\r\n\]+File file1.txt:\r\n\tfoo FUNC_lang\\(\\);(\r\n\r\nNon-debugging symbols:\r\n0x\[0-9a-f\]+ +\\.FUNC_lang)?" \
> >  	 "regexp case-sensitive off"
> 
> OOC, the actual name & type matching respect the symbol's language, right?
Yes, effectively, the previous patch series that introduced
e.g. 'info function -t TYPEREGEXP' was already switching to the entity language
to do the matching of the type.

The only somewhat (strange ? non intuitive ?) behavior remaining is that the
entity names are printed (and matched) not according to the language setting,
but according to the 'set print demangle' setting.

For example, in the below, you see that with set lang c, the var name
is still printed with a . after global_pack, while intuitively, one
would have expected the 'raw' name with __. The __ are shown
when demangling is off.
 
  (gdb) set lang c
  Warning: the current language does not match this frame.
  (gdb) info var some_struct_in_ada
  All variables matching regular expression "some_struct_in_ada":

  File /bd/home/philippe/gdb/git/info_t/gdb/testsuite/gdb.ada/info_auto_lang/global_pack.ads:
  24:	struct global_pack__some_type_in_ada global_pack.some_struct_in_ada;
  (gdb) set print demangle off
  (gdb) info var some_struct_in_ada
  All variables matching regular expression "some_struct_in_ada":

  File /bd/home/philippe/gdb/git/info_t/gdb/testsuite/gdb.ada/info_auto_lang/global_pack.ads:
  24:	struct global_pack__some_type_in_ada global_pack__some_struct_in_ada;
  (gdb) 

I guess that changing this would mean to have demangling be driven by language
setting (not too sure how the demangling logic works now).


Thanks for the review, I think I handled all your comments/suggestions
in RFAv2.

Philippe

  reply	other threads:[~2018-11-17 12:24 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-28 14:46 [RFA 0/5] Use language mode in 'info [functions|variables|types]|rbreak' Philippe Waroquiers
2018-10-28 14:46 ` [RFA 3/5] Add a test to verify info [functions|variables|types]|rbreak respect language_mode Philippe Waroquiers
2018-11-16 18:30   ` Pedro Alves
2018-10-28 14:46 ` [RFA 4/5] Document language choice in 'info [functions|variables|types]|rbreak' commands Philippe Waroquiers
2018-10-28 15:33   ` Eli Zaretskii
2018-10-28 14:46 ` [RFA 1/5] Add class scoped_switch_auto_to_sym_language Philippe Waroquiers
2018-11-16 18:27   ` Pedro Alves
2018-10-28 14:46 ` [RFA 5/5] NEWS: Document the language choice by 'info [types|functions|variables]|rbreak' Philippe Waroquiers
2018-10-28 15:31   ` Eli Zaretskii
2018-10-28 14:46 ` [RFA 2/5] Use scoped_switch_auto_to_sym_language in symtab.c to switch language Philippe Waroquiers
2018-11-16 18:28   ` Pedro Alves
2018-11-17 12:24     ` Philippe Waroquiers [this message]
2018-11-13 19:15 ` PING Re: [RFA 0/5] Use language mode in 'info [functions|variables|types]|rbreak' Philippe Waroquiers

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=1542457452.1531.12.camel@skynet.be \
    --to=philippe.waroquiers@skynet.be \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.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).