[Bug debug/37002] New: [4.4 Regression] No debug info on unreferenced parameters
hjl dot tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Aug 1 16:41:00 GMT 2008
[hjl@gnu-33 gcc]$ cat /tmp/x.c
#include <stdio.h>
void
foo (int x, int y, int z)
{
printf ("hello\n");
}
int
main ()
{
foo (3000, 3303, -193);
}
[hjl@gnu-33 gcc]$ ./xgcc -B./ -m32 -mforce-drap -mstackrealign /tmp/x.c -g
[hjl@gnu-33 gcc]$ /usr/bin/gdb a.out
GNU gdb Fedora (6.8-12.fc9)
...
(gdb) b foo
Breakpoint 1 at 0x80483b5: file /tmp/x.c, line 6.
(gdb) r
Starting program: /export/build/gnu/gcc-work/build-x86_64-linux/gcc/a.out
Breakpoint 1, foo () at /tmp/x.c:6
6 printf ("hello\n");
Missing separate debuginfos, use: debuginfo-install glibc.i686
(gdb)
The unreferenced parameters aren't available. The problem is when
DRAP is used to align stack, the parameters are referenced via
internal_arg_pointer, which may be a copy of DRAP. When the RTL
that assigning DRAP to internal_arg_pointer is optimized away
since it is never referenced in the function body, mem_loc_descriptor
finds a pseudo register:
if (REGNO (rtl) < FIRST_PSEUDO_REGISTER)
mem_loc_result = based_loc_descr (rtl, 0, VAR_INIT_STATUS_INITIALIZED);
where rtl is internal_arg_pointer and doesn't generate debug info.
--
Summary: [4.4 Regression] No debug info on unreferenced
parameters
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: debug
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: hjl dot tools at gmail dot com
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37002
More information about the Gcc-bugs
mailing list