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

Reply via email to