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".

Reply via email to