* [Bug gdb/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
@ 2020-11-16 15:03 ` gbenson at redhat dot com
2020-11-16 15:05 ` gbenson at redhat dot com
` (12 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gbenson at redhat dot com @ 2020-11-16 15:03 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
--- Comment #1 from Gary Benson <gbenson at redhat dot com> ---
Created attachment 12965
--> https://sourceware.org/bugzilla/attachment.cgi?id=12965&action=edit
ELF executable for gdb.mi/mi-vla-c99, which GDB handles correctly
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug gdb/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
2020-11-16 15:03 ` [Bug gdb/26905] " gbenson at redhat dot com
@ 2020-11-16 15:05 ` gbenson at redhat dot com
2020-11-16 15:05 ` gbenson at redhat dot com
` (11 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gbenson at redhat dot com @ 2020-11-16 15:05 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
--- Comment #2 from Gary Benson <gbenson at redhat dot com> ---
Created attachment 12966
--> https://sourceware.org/bugzilla/attachment.cgi?id=12966&action=edit
ELF executable for gdb.base/vla-optimized-out.exp, which GDB handles
incorrectly
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug gdb/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
2020-11-16 15:03 ` [Bug gdb/26905] " gbenson at redhat dot com
2020-11-16 15:05 ` gbenson at redhat dot com
@ 2020-11-16 15:05 ` gbenson at redhat dot com
2020-11-16 15:06 ` gbenson at redhat dot com
` (10 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gbenson at redhat dot com @ 2020-11-16 15:05 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
--- Comment #3 from Gary Benson <gbenson at redhat dot com> ---
Created attachment 12967
--> https://sourceware.org/bugzilla/attachment.cgi?id=12967&action=edit
dwarfdump of gdb.mi/mi-vla-c99 (which GDB handles correctly)
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug gdb/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
` (2 preceding siblings ...)
2020-11-16 15:05 ` gbenson at redhat dot com
@ 2020-11-16 15:06 ` gbenson at redhat dot com
2020-11-16 15:23 ` gbenson at redhat dot com
` (9 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gbenson at redhat dot com @ 2020-11-16 15:06 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
--- Comment #4 from Gary Benson <gbenson at redhat dot com> ---
Created attachment 12968
--> https://sourceware.org/bugzilla/attachment.cgi?id=12968&action=edit
dwarfdump of gdb.base/vla-optimized-out.exp (which GDB handles incorrectly)
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug gdb/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
` (3 preceding siblings ...)
2020-11-16 15:06 ` gbenson at redhat dot com
@ 2020-11-16 15:23 ` gbenson at redhat dot com
2020-11-16 15:25 ` gbenson at redhat dot com
` (8 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gbenson at redhat dot com @ 2020-11-16 15:23 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
--- Comment #5 from Gary Benson <gbenson at redhat dot com> ---
Interestingly, gdb.base/vla-ptr.exp has a mixed failure:
$ gdb /path/to/gdb/testsuite/outputs/gdb.base/vla-ptr/vla-ptr
(gdb) b vla-ptr.c:46
(gdb) r
...
Breakpoint 1, vla_func (n=5) at
/gdbtest/src/gdb/testsuite/gdb.base/vla-ptr.c:46
46 foo(n, vla);
(gdb) p vla
$1 = {2, 3, 4, 5, 6}
(gdb) p td_vla
$2 = 0x7fffffffd610
(gdb) p __vla_expr0
$3 = 5
(gdb) p __vla_expr1
$4 = 5
The two arrays are defined as:
35 int vla[n];
36 typedef int typedef_vla[n];
37 typedef_vla td_vla;
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug gdb/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
` (4 preceding siblings ...)
2020-11-16 15:23 ` gbenson at redhat dot com
@ 2020-11-16 15:25 ` gbenson at redhat dot com
2020-11-16 15:26 ` gbenson at redhat dot com
` (7 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gbenson at redhat dot com @ 2020-11-16 15:25 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
--- Comment #6 from Gary Benson <gbenson at redhat dot com> ---
Created attachment 12969
--> https://sourceware.org/bugzilla/attachment.cgi?id=12969&action=edit
ELF executable for gdb.base/vla-ptr.exp, which demonstrates both cases
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug gdb/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
` (5 preceding siblings ...)
2020-11-16 15:25 ` gbenson at redhat dot com
@ 2020-11-16 15:26 ` gbenson at redhat dot com
2020-11-17 9:51 ` gbenson at redhat dot com
` (6 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gbenson at redhat dot com @ 2020-11-16 15:26 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
--- Comment #7 from Gary Benson <gbenson at redhat dot com> ---
Created attachment 12970
--> https://sourceware.org/bugzilla/attachment.cgi?id=12970&action=edit
dwarfdump of gdb.base/vla-ptr (with one case GDB handles and one case it
doesn't)
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug gdb/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
` (6 preceding siblings ...)
2020-11-16 15:26 ` gbenson at redhat dot com
@ 2020-11-17 9:51 ` gbenson at redhat dot com
2020-11-20 13:50 ` [Bug symtab/26905] " vries at gcc dot gnu.org
` (5 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gbenson at redhat dot com @ 2020-11-17 9:51 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
Gary Benson <gbenson at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Blocks| |26909
Referenced Bugs:
https://sourceware.org/bugzilla/show_bug.cgi?id=26909
[Bug 26909] [meta] Debug Clang-built code
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug symtab/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
` (7 preceding siblings ...)
2020-11-17 9:51 ` gbenson at redhat dot com
@ 2020-11-20 13:50 ` vries at gcc dot gnu.org
2020-11-20 16:32 ` vries at gcc dot gnu.org
` (4 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: vries at gcc dot gnu.org @ 2020-11-20 13:50 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
Tom de Vries <vries at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vries at gcc dot gnu.org
Component|gdb |symtab
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug symtab/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
` (8 preceding siblings ...)
2020-11-20 13:50 ` [Bug symtab/26905] " vries at gcc dot gnu.org
@ 2020-11-20 16:32 ` vries at gcc dot gnu.org
2020-11-22 9:55 ` cvs-commit at gcc dot gnu.org
` (3 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: vries at gcc dot gnu.org @ 2020-11-20 16:32 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
--- Comment #8 from Tom de Vries <vries at gcc dot gnu.org> ---
Posted patch here:
https://sourceware.org/pipermail/gdb-patches/2020-November/173438.html
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug symtab/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
` (9 preceding siblings ...)
2020-11-20 16:32 ` vries at gcc dot gnu.org
@ 2020-11-22 9:55 ` cvs-commit at gcc dot gnu.org
2020-11-23 17:59 ` mark at klomp dot org
` (2 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-11-22 9:55 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
--- Comment #9 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=117c628d49309e3b6a8b11d492f497104f3e4b2c
commit 117c628d49309e3b6a8b11d492f497104f3e4b2c
Author: Gary Benson <gbenson@redhat.com>
Date: Sun Nov 22 10:54:58 2020 +0100
[gdb/testsuite] Add testcase for DW_AT_count referencing a variable
Clang describes the upper bounds of variable length arrays using
a DW_AT_count attribute which references the DIE of a synthetic
variable whose value is specified using a DW_AT_location. GDB handles
these incorrectly if the corresponding DWARF expression finishes with a
DW_OP_stack_value (PR26905). This commit adds a new kfailed test to
gdb.dwarf2/count.exp with the same DWARF as that generated by Clang for
gdb.base/vla-optimized-out.exp, one of the failing tests.
Checked on Fedora 32 x86_64, with GCC and Clang.
gdb/testsuite/ChangeLog:
2020-11-22 Gary Benson <gbenson@redhat.com>
PR gdb/26905
* gdb.dwarf2/count.exp: Add test for an array whose upper bound
is defined using a DW_AT_count which references another DIE.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug symtab/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
` (10 preceding siblings ...)
2020-11-22 9:55 ` cvs-commit at gcc dot gnu.org
@ 2020-11-23 17:59 ` mark at klomp dot org
2020-11-30 12:50 ` cvs-commit at gcc dot gnu.org
2020-11-30 12:53 ` vries at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: mark at klomp dot org @ 2020-11-23 17:59 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
Mark Wielaard <mark at klomp dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |mark at klomp dot org
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug symtab/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
` (11 preceding siblings ...)
2020-11-23 17:59 ` mark at klomp dot org
@ 2020-11-30 12:50 ` cvs-commit at gcc dot gnu.org
2020-11-30 12:53 ` vries at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-11-30 12:50 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
--- Comment #10 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=7ce05d212d1b825dc58d2b0d390417f2c134cd98
commit 7ce05d212d1b825dc58d2b0d390417f2c134cd98
Author: Tom de Vries <tdevries@suse.de>
Date: Mon Nov 30 13:50:26 2020 +0100
[gdb/symtab] Fix gdb.base/vla-optimized-out.exp with clang
Consider test-case gdb.base/vla-optimized-out.exp, compiled using clang-10.
GDB fails to get the size of the vla a:
...
(gdb) p sizeof (a)^M
Cannot access memory at address 0x6^M
(gdb) FAIL: gdb.base/vla-optimized-out.exp: o1: printed size of \
optimized out vla
...
The relevant DWARF looks like this: the variable a:
...
<2><12b>: Abbrev Number: 5 (DW_TAG_variable)
<12c> DW_AT_name : a
<132> DW_AT_type : <0x189>
...
has type:
...
<1><189>: Abbrev Number: 10 (DW_TAG_array_type)
<18a> DW_AT_type : <0x198>
<2><18e>: Abbrev Number: 11 (DW_TAG_subrange_type)
<18f> DW_AT_type : <0x19f>
<193> DW_AT_count : <0x117>
...
with the count attribute equated to the value of this artificial variable:
...
<2><117>: Abbrev Number: 4 (DW_TAG_variable)
<118> DW_AT_location : 10 byte block: 75 1 10 ff ff ff ff f 1a 9f
\
(DW_OP_breg5 (rdi): 1;
DW_OP_constu: 4294967295;
DW_OP_and;
DW_OP_stack_value)
<123> DW_AT_name : __vla_expr0
<127> DW_AT_type : <0x182>
<12b> DW_AT_artificial : 1
...
The location description of the variable is terminated with
DW_OP_stack_value,
which according to the DWARF spec means that "the DWARF expression
represents
the actual value of the object, rather than its location".
However, in attr_to_dynamic_prop, we set is_reference to true:
...
baton->locexpr.is_reference = true;
...
and use it in dwarf2_evaluate_property to dereference the value of the
DWARF
expression, which causes the access to memory at address 0x6.
Fix this by ignoring the baton->locexpr.is_reference == true setting if
the expression evaluation has ctx.location == DWARF_VALUE_STACK, such that
we
get:
...
(gdb) p sizeof (a)^M
$2 = 6^M
(gdb) PASS: gdb.base/vla-optimized-out.exp: o1: printed size of \
optimized out vla
...
Tested on x86_64-linux, with gcc.
Tested the following test-cases (the ones mentioned in PR26905) on
x86_64-linux with clang-10:
- gdb.base/vla-optimized-out.exp
- gdb.base/vla-ptr.exp
- gdb.mi/mi-vla-c99
gdb/ChangeLog:
2020-11-30 Tom de Vries <tdevries@suse.de>
PR symtab/26905
* dwarf2/loc.c (dwarf2_locexpr_baton_eval): Add and handle
is_reference parameter.
(dwarf2_evaluate_property): Update dwarf2_locexpr_baton_eval call.
gdb/testsuite/ChangeLog:
2020-11-30 Tom de Vries <tdevries@suse.de>
PR symtab/26905
* gdb.dwarf2/count.exp: Remove kfails.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug symtab/26905] Inconsistent DW_AT_count evaluation
2020-11-16 15:01 [Bug gdb/26905] New: Inconsistent DW_AT_count evaluation gbenson at redhat dot com
` (12 preceding siblings ...)
2020-11-30 12:50 ` cvs-commit at gcc dot gnu.org
@ 2020-11-30 12:53 ` vries at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: vries at gcc dot gnu.org @ 2020-11-30 12:53 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=26905
Tom de Vries <vries at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |11.1
Status|NEW |RESOLVED
Resolution|--- |FIXED
--- Comment #11 from Tom de Vries <vries at gcc dot gnu.org> ---
Patch committed, removing kfails in appropriate test-case, marking
resolved-fixed.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 15+ messages in thread