[RFC] regresssion(internal-error) printing subprogram argument

Joel Brobecker brobecker@adacore.com
Fri Dec 15 09:48:00 GMT 2017


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

-- 
Joel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-gdb.ada-maint_with_ada.exp-New-testcase.patch
Type: text/x-diff
Size: 6182 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20171215/e30f99be/attachment.bin>


More information about the Gdb-patches mailing list