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