http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52160
Pedro Alves <palves at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |palves at redhat dot com --- Comment #4 from Pedro Alves <palves at redhat dot com> 2013-04-12 18:59:23 UTC --- GDB PR15360 at <http://sourceware.org/bugzilla/show_bug.cgi?id=15360> shows another reproducer: (gdb) b function Breakpoint 1 at 0x400569: file pr15360.c, line 9. (gdb) r ... ...exited normally. GDB wants to put the breakpoint after the prologue of 'function', but: (gdb) disassemble /m function Dump of assembler code for function function(): 8 { 0x000000000040055c <+0>: push %rbp 0x000000000040055d <+1>: mov %rsp,%rbp 0x0000000000400560 <+4>: push %r12 0x0000000000400562 <+6>: push %rbx 0x0000000000400563 <+7>: sub $0x10,%rsp 0x0000000000400567 <+11>: jmp 0x40056a <function()+14> 9 do{ 0x0000000000400569 <+13>: nop 10 int i = 0; 0x000000000040056a <+14>: movl $0x0,-0x14(%rbp) ... Extended opcode 2: set Address to 0x40055c Special opcode 12: advance Address by 0 to 0x40055c and Line by 7 to 8 Special opcode 188: advance Address by 13 to 0x400569 and Line by 1 to 9 ... Why is the jmp in the prologue's line? That's what causes the issue. GDB has long (since ever?) skipped the line where the prologue is to find the first instruction of "user code".