[Bug debug/82010] New: Inspecting a function parameter of "vec<basic_block, va_gc> *&path" from gdb yields nonsense.
aldyh at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Aug 28 16:44:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82010
Bug ID: 82010
Summary: Inspecting a function parameter of "vec<basic_block,
va_gc> *&path" from gdb yields nonsense.
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: debug
Assignee: unassigned at gcc dot gnu.org
Reporter: aldyh at gcc dot gnu.org
Target Milestone: ---
While debugging cc1, a function parameter of "vec<...> *&path" yields
garbabge when printing it from gdb:
(gdb) print path
$1 = Python Exception <class 'gdb.error'> Cannot convert value to long.:
whereas if you print the vector from the caller, gdb can see inside
the vector of basic blocks just fine:
(gdb) up
(gdb) print bb_path
$2 = 0x7fb8fca77000 = {<basic_block 0x7fb8fc93d270 (2)>}
Detailed steps follow:
$ cat a.c
void foo(int i)
{
extern void bar ();
if (i > 5)
bar();
}
$ gdb cc1
GNU gdb (GDB) Fedora 8.0-22.fc26
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Demangling of encoded C++/ObjC names when displaying symbols is on.
Really redefine built-in command "dump"? (y or n) [answered Y; input not from
terminal]
Reading symbols from cc1...done.
Breakpoint 1 at 0x1a657e2: file /source/gcc-pristine/gcc/diagnostic.c, line
1488.
Breakpoint 2 at 0x1a65559: file /source/gcc-pristine/gcc/diagnostic.c, line
1420.
Breakpoint 3 at 0x76cfd0
Breakpoint 4 at 0x76d0f0
[snip snip]
[snip snip]
Successfully loaded GDB hooks for GCC
(gdb) break fsm_find_control_statement_thread_paths
Breakpoint 5 at 0x118c4e3: file
/source/gcc-pristine/gcc/tree-ssa-threadbackward.c, line 678.
(gdb) run a.c -O2 -quiet
Starting program: /home/build/pristine/gcc/cc1 a.c -O2 -quiet
Breakpoint 5, fsm_find_control_statement_thread_paths (name=
<ssa_name 0x7fb8fc93c990>, visited_bbs=0x283b0c0, Python Exception <class
'gdb.error'> Cannot convert value to long.:
path=,
seen_loop_phi=false, speed_p=false)
at /source/gcc-pristine/gcc/tree-ssa-threadbackward.c:678
678 if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name))
(gdb) print path
$1 = Python Exception <class 'gdb.error'> Cannot convert value to long.:
(gdb) up
#1 0x000000000118ca93 in find_jump_threads_backwards (
bb=<basic_block 0x7fb8fc93d270 (2)>, speed_p=false)
at /source/gcc-pristine/gcc/tree-ssa-threadbackward.c:785
785 fsm_find_control_statement_thread_paths (name, visited_bbs, bb_path,
false,
(gdb) print bb_path
$2 = 0x7fb8fca77000 = {<basic_block 0x7fb8fc93d270 (2)>}
More information about the Gcc-bugs
mailing list