Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Joel Brobecker <brobecker@adacore.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFC] regresssion(internal-error) printing subprogram argument
Date: Fri, 15 Dec 2017 11:02:00 -0000	[thread overview]
Message-ID: <00320239-44c8-b9c3-013b-b27c771e3401@redhat.com> (raw)
In-Reply-To: <20171215094755.dwocipbcwvtdm6f6@adacore.com>

Hi Joel,

I woke up realizing that I completely forgot that psymbols have no
overload/function parameter info in C++, so a straight strcmp probably
doesn't work properly for C++.  Indeed, I remembered now to do
"maint check-psymtabs" when debugging gdb, and I get back a few
problems:

(top-gdb) maint check-psymtabs 
Global symbol `__gnu_cxx::operator!=<symtab_and_line*, std::vector<symtab_and_line> >' only found in src/gdb/cli/cli-cmds.c psymtab
Global symbol `__gnu_cxx::operator-<const symtab_and_line*, std::vector<symtab_and_line> >' only found in src/gdb/cli/cli-cmds.c psymtab
[...]

Maybe what we need is to be a little less aggressive then and
add a new symbol_name_match_type::SEARCH_SYMBOL instead that takes as
input a non-user-input search symbol like symbol_name_match_type::LITERAL
was, and then we skip any decoding/demangling steps (like LITERAL) and make:
  - Ada treat that as a verbatim match,
  - other languages treat it as symbol_name_match_type::FULL.

I can't look at this right now, though I'll try to play with it a bit
more later today.  I'm a bit worried on timing since I'm going to be
away next week (today's my last official day before xmas holiday).  :-/

No idea offhand on the issue below.

Thanks,
Pedro Alves

On 12/15/2017 09:47 AM, Joel Brobecker wrote:
>> Reading back the patch on the list, I realized that this must be
>> fixing "maint check-psymtabs" for Ada.  And indeed, without my
>> patch, I get here:
>>
>> $ gdb ./testsuite/outputs/gdb.ada/var_arr_typedef/var_arr_typedef 
>> (gdb) start
>> ...
>> (gdb) maint check-psymtabs 
>> Global symbol `adaS' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab
>> Global symbol `interfacesS' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab
>> Global symbol `packB' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab
>> Global symbol `packS' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab
>> Global symbol `systemS' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab
>> Global symbol `var_arr_typedefB' only found in gdb/testsuite/outputs/gdb.ada/var_arr_typedef/b~var_arr_typedef.adb psymtab
>> (gdb)
>>
>> After:
>>
>> (gdb) start
>> ...
>> (gdb) maint check-psymtabs 
>> (gdb
>>
>> Looks like we only test that command for C, currently...
> 
> Good point!
> 
> Here is a commit which adds a testcase.
> 
> Sadly, unlike you, I still get an error:
> 
>     (gdb) maintenance check-psymtabs
>     Global symbol `interfaces__cS' only found in /[...]/maint_with_ada/b~var_arr_typedef.adb psymtab
> 
> I am not sure why this is happening just yet; the symbol, at first,
> looked like it had an interesting feature, which is both a DW_AT_name
> and a DW_AT_linkage name:
> 
>     <1><ad2>: Abbrev Number: 35 (DW_TAG_variable)
>        <ad3>   DW_AT_name        : (indirect string, offset: 0x476): ada_main__u00047
>        <ad7>   DW_AT_decl_file   : 5
>        <ad8>   DW_AT_decl_line   : 132
>        <ad9>   DW_AT_linkage_name: (indirect string, offset: 0x1b7e): interfaces__cS
>        <add>   DW_AT_type        : <0x79>
>        <ae1>   DW_AT_external    : 1
>        <ae1>   DW_AT_location    : 9 byte block: 3 20 1 0 0 0 0 0 0        (DW_OP_addr: 120)
> 
> However, there are plenty of other similar symbols, for instance:
> 
>  <1><b04>: Abbrev Number: 35 (DW_TAG_variable)
>     <b05>   DW_AT_name        : (indirect string, offset: 0x4b9): ada_main__u00049
>     <b09>   DW_AT_decl_file   : 5
>     <b0a>   DW_AT_decl_line   : 136
>     <b0b>   DW_AT_linkage_name: (indirect string, offset: 0x17cc): system__bounded_stringsS
>     <b0f>   DW_AT_type        : <0x79>
>     <b13>   DW_AT_external    : 1
>     <b13>   DW_AT_location    : 9 byte block: 3 28 1 0 0 0 0 0 0        (DW_OP_addr: 128)
> 
> So I'm still not sure what makes interfaces__cS special. I will look
> into it when I have a chance...
> 


  reply	other threads:[~2017-12-15 11:02 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-13 10:37 Joel Brobecker
2017-12-14 19:02 ` Pedro Alves
2017-12-14 19:41   ` Pedro Alves
2017-12-15  9:48     ` Joel Brobecker
2017-12-15 11:02       ` Pedro Alves [this message]
2017-12-15 18:57         ` Pedro Alves
2018-01-03  4:33           ` Joel Brobecker
2018-01-04  9:48             ` Joel Brobecker
2018-01-04 12:39               ` Pedro Alves
2018-01-05 16:28             ` Pedro Alves
2018-01-16 11:54               ` Pedro Alves
2018-01-17  9:13                 ` Joel Brobecker
2018-01-26  3:51                   ` Joel Brobecker
2018-01-26 11:28                     ` Pedro Alves
2018-01-29 10:38                       ` Joel Brobecker
     [not found]                         ` <250976c6-6e7a-6a8e-b9f2-a57f5b92b965@redhat.com>
2018-01-30  3:56                           ` Joel Brobecker
2018-02-05  9:57                             ` Joel Brobecker
2018-02-09  9:09                               ` [RFA/RFC] fix PR gdb/22670 (pb looking up some symbols when they have a linkage name) (was: "Re: [RFC] regresssion(internal-error) printing subprogram argument") Joel Brobecker
2018-02-21  3:02                                 ` PING: " Joel Brobecker
2018-03-19 21:22                                   ` PING^2: " Joel Brobecker
2018-03-26 14:26                                     ` PING^2: [RFA/RFC] fix PR gdb/22670 (pb looking up some symbols when they have a linkage name) Pedro Alves
2018-03-27 14:02                                       ` Joel Brobecker
2018-01-26  4:50                   ` [RFC] regresssion(internal-error) printing subprogram argument Joel Brobecker
2017-12-15 18:31       ` Pedro Alves
2017-12-15  7:54   ` Joel Brobecker

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=00320239-44c8-b9c3-013b-b27c771e3401@redhat.com \
    --to=palves@redhat.com \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    /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