So far -O0 code could be safely debugged. With 4.3.1 and HEAD if you `break
func' in GDB the breakpoint can be missed despite the function got executed.
The line number info is wrong and as GCC does not produce prologue-end GDB is
using the line number information to skip the prologue.
Version-Release number of selected component (if applicable):
gcc-4.3.1-3.x86_64 (Fedora 9, broken)
Fedora 8 was correct: gcc-4.1.2-33.x86_64
Verified as broken on:
GNU C (GCC) version 4.4.0 20080701 (experimental) (x86_64-unknown-linux-gnu)
compiled by GNU C version 3.4.6 20060404 (Red Hat 3.4.6-9), GMP version
4.2.2, MPFR version 2.3.0-p2.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Steps to Reproduce:
cat >whilemain.c <<EOH
int i;
void func (void)
{
while (i == 1)
i = 0;
}
EOH
gcc -c -o whilemain.o whilemain.c -Wall -g
new broken gccs:
000000000040047c <func>:
int i;
void func (void)
{
40047c: 55 push %rbp
40047d: 48 89 e5 mov %rsp,%rbp
400480: eb 0a jmp 40048c <func+0x10>
while (i == 1)
i = 0;
400482: c7 05 fc 03 20 00 00 movl $0x0,0x2003fc(%rip) #
600888 <i>
400489: 00 00 00
gcc-4.1.2-33.x86_64 (Fedora 8):
0000000000400468 <func>:
int i;
void func (void)
{
400468: 55 push %rbp
400469: 48 89 e5 mov %rsp,%rbp
while (i == 1)
40046c: eb 0a jmp 400478 <func+0x10>
i = 0;
40046e: c7 05 fc 03 20 00 00 movl $0x0,0x2003fc(%rip) #
600874 <i>
400475: 00 00 00
--
Summary: .debug_line first line is behind the first instruction
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: debug
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jan dot kratochvil at redhat dot com
GCC build triplet: x86_64-unknown-linux-gnu
GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36690