public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug symtab/25796] New: Symbol with inherited DW_AT_const_value not found
@ 2020-04-07 11:12 vries at gcc dot gnu.org
  2020-04-07 11:12 ` [Bug symtab/25796] " vries at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: vries at gcc dot gnu.org @ 2020-04-07 11:12 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=25796

            Bug ID: 25796
           Summary: Symbol with inherited DW_AT_const_value not found
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: symtab
          Assignee: unassigned at sourceware dot org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

[ Reported here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94469#c9 ]

Consider a test-case with dwarf (related to variable aaa):
...
 <0><d2>: Abbrev Number: 2 (DW_TAG_partial_unit)
 <1><eb>: Abbrev Number: 4 (DW_TAG_variable)
    <ec>   DW_AT_name        : aaa
    <f0>   DW_AT_type        : <0xe4>
    <f4>   DW_AT_const_value : 1
 <0><10c>: Abbrev Number: 2 (DW_TAG_compile_unit)
    <10e>   DW_AT_name        : <artificial>
 <1><11b>: Abbrev Number: 3 (DW_TAG_variable)
    <11c>   DW_AT_abstract_origin: <0xeb>
...

When running the test-case, we see:
...
(gdb) p aaa^M
No symbol "aaa" in current context.^M
(gdb) FAIL: gdb.dwarf2/imported-unit-abstract-const-value.exp: p aaa
...
while with target board readnow.exp, we have:
...
(gdb) p aaa^M
$1 = 1^M
...

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug symtab/25796] Symbol with inherited DW_AT_const_value not found
  2020-04-07 11:12 [Bug symtab/25796] New: Symbol with inherited DW_AT_const_value not found vries at gcc dot gnu.org
@ 2020-04-07 11:12 ` vries at gcc dot gnu.org
  2020-04-07 11:28 ` vries at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: vries at gcc dot gnu.org @ 2020-04-07 11:12 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=25796

--- Comment #1 from Tom de Vries <vries at gcc dot gnu.org> ---
The problem is due to the fact that there's no aaa symbol in the partial
symtabs:
...
Partial symtab for source file <artificial>@0x101 (object 0x351cf40)^M
   ...
Global partial symbols:^M
    `main', function, 0x4004a7^M
^M
...
which is due to the fact that when attempting to add the symbol corresponding
to DIE 0x11b in add_partial_symbol:
...
(gdb) p /x pdi->sect_off
$4 = 0x11b
(gdb) p pdi.has_const_value
$5 = 0
...
it seems the DW_AT_const_value was not inherited from DIE 0xeb, and
consequently we leave without adding a partial symbol.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug symtab/25796] Symbol with inherited DW_AT_const_value not found
  2020-04-07 11:12 [Bug symtab/25796] New: Symbol with inherited DW_AT_const_value not found vries at gcc dot gnu.org
  2020-04-07 11:12 ` [Bug symtab/25796] " vries at gcc dot gnu.org
@ 2020-04-07 11:28 ` vries at gcc dot gnu.org
  2020-04-07 15:33 ` cvs-commit at gcc dot gnu.org
  2020-04-07 15:33 ` vries at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: vries at gcc dot gnu.org @ 2020-04-07 11:28 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=25796

--- Comment #2 from Tom de Vries <vries at gcc dot gnu.org> ---
Created attachment 12443
  --> https://sourceware.org/bugzilla/attachment.cgi?id=12443&action=edit
Tentative patch with test-case

Note: When running the test-case with cc-with-debug-names, the "print aaa" test
fails.

That's PR25791, the test passes when applying the proposed patch for that one.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug symtab/25796] Symbol with inherited DW_AT_const_value not found
  2020-04-07 11:12 [Bug symtab/25796] New: Symbol with inherited DW_AT_const_value not found vries at gcc dot gnu.org
  2020-04-07 11:12 ` [Bug symtab/25796] " vries at gcc dot gnu.org
  2020-04-07 11:28 ` vries at gcc dot gnu.org
@ 2020-04-07 15:33 ` cvs-commit at gcc dot gnu.org
  2020-04-07 15:33 ` vries at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-04-07 15:33 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=25796

--- Comment #3 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tom de Vries <vries@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=25c11acac349bf6e77a233c7604bf8e04b8a1424

commit 25c11acac349bf6e77a233c7604bf8e04b8a1424
Author: Tom de Vries <tdevries@suse.de>
Date:   Tue Apr 7 17:33:05 2020 +0200

    [gdb/symtab] Add symbol with inherited DW_AT_const_value to psymtabs

    Consider the test-case added in this patch, with resulting dwarf (related
to
    variable aaa):
    ...
     <0><d2>: Abbrev Number: 2 (DW_TAG_partial_unit)
     <1><eb>: Abbrev Number: 4 (DW_TAG_variable)
        <ec>   DW_AT_name        : aaa
        <f0>   DW_AT_type        : <0xe4>
        <f4>   DW_AT_const_value : 1
     <0><10c>: Abbrev Number: 2 (DW_TAG_compile_unit)
        <10e>   DW_AT_name        : <artificial>
     <1><11b>: Abbrev Number: 3 (DW_TAG_variable)
        <11c>   DW_AT_abstract_origin: <0xeb>
    ...

    When running the test-case, we see:
    ...
    (gdb) p aaa^M
    No symbol "aaa" in current context.^M
    (gdb) FAIL: gdb.dwarf2/imported-unit-abstract-const-value.exp: p aaa
    ...
    while with target board readnow.exp, we have:
    ...
    (gdb) p aaa^M
    $1 = 1^M
    ...

    This is due to the fact that there's no aaa symbol in the partial symtabs:
    ...
    Partial symtab for source file <artificial>@0x101 (object 0x351cf40)^M
       ...
    Global partial symbols:^M
        `main', function, 0x4004a7^M
    ^M
    ...
    which is due to the fact that when attempting to add the symbol
corresponding
    to DIE 0x11b in add_partial_symbol:
    ...
    (gdb) p /x pdi->sect_off
    $4 = 0x11b
    (gdb) p pdi.has_const_value
    $5 = 0
    ...
    it seems the DW_AT_const_value was not inherited from DIE 0xeb, and
    consequently we leave without adding a partial symbol.

    Fix this by making sure that partial_die_info::has_const_value is inherited
    in partial_die_info::fixup.

    Build and reg-tested on x86_64-linux.

    Tested test-case with target boards readnow, cc-with-gdb-index and
    cc-with-debug-names.  The "print aaa" test fails for cc-with-gdb-index,
that's
    PR25791, the test passes when applying the corresponding proposed patch.

    gdb/ChangeLog:

    2020-04-07  Tom de Vries  <tdevries@suse.de>

            PR symtab/25796
            * dwarf2/read.c (can_have_DW_AT_const_value_p): New function.
            (partial_die_info::fixup): Inherit has_const_value.

    gdb/testsuite/ChangeLog:

    2020-04-07  Tom de Vries  <tdevries@suse.de>

            PR symtab/25796
            * gdb.dwarf2/imported-unit-abstract-const-value.exp: New file.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug symtab/25796] Symbol with inherited DW_AT_const_value not found
  2020-04-07 11:12 [Bug symtab/25796] New: Symbol with inherited DW_AT_const_value not found vries at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2020-04-07 15:33 ` cvs-commit at gcc dot gnu.org
@ 2020-04-07 15:33 ` vries at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: vries at gcc dot gnu.org @ 2020-04-07 15:33 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=25796

Tom de Vries <vries at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|NEW                         |RESOLVED

--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> ---
Patch with test-case committed, marking resolved-fixed.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-04-07 15:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-07 11:12 [Bug symtab/25796] New: Symbol with inherited DW_AT_const_value not found vries at gcc dot gnu.org
2020-04-07 11:12 ` [Bug symtab/25796] " vries at gcc dot gnu.org
2020-04-07 11:28 ` vries at gcc dot gnu.org
2020-04-07 15:33 ` cvs-commit at gcc dot gnu.org
2020-04-07 15:33 ` vries at gcc dot gnu.org

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