[Bug debug/52160] gdb ignores line "bar: if(foo)goto bar;"
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52160 Hannes Domani changed: What|Removed |Added CC||ssbssa at yahoo dot de --- Comment #5 from Hannes Domani --- I can reproduce this issue with gcc-4.6.1, but not with gcc-4.9.1 or newer, so I think this has been fixed already.
[Bug debug/52160] gdb ignores line bar: if(foo)goto bar;
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 { 0x0040055c +0: push %rbp 0x0040055d +1: mov%rsp,%rbp 0x00400560 +4: push %r12 0x00400562 +6: push %rbx 0x00400563 +7: sub$0x10,%rsp 0x00400567 +11:jmp0x40056a function()+14 9 do{ 0x00400569 +13:nop 10 int i = 0; 0x0040056a +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.
[Bug debug/52160] gdb ignores line bar: if(foo)goto bar;
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52160 Jan Kratochvil jan.kratochvil at redhat dot com changed: What|Removed |Added CC||jan.kratochvil at redhat ||dot com --- Comment #2 from Jan Kratochvil jan.kratochvil at redhat dot com 2012-09-16 07:09:26 UTC --- The same problem with IMO more minimal reproducer: -- int i; void f (void) { redo: if (i) goto redo; } int main (void) { f (); return 0; } -- (gdb) break f Breakpoint 1 at 0x4004c2: file 123.c, line 6. (gdb) run Starting program: /home/jkratoch/t/123 [Inferior 1 (process 308) exited normally] -- f: .LFB0: .file 1 123.c .loc 1 3 0 .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq%rsp, %rbp .cfi_def_cfa_register 6 jmp .L2 .L4: .loc 1 6 0 -- GDB places breakpoint here nop .L2: .loc 1 5 0
[Bug debug/52160] gdb ignores line bar: if(foo)goto bar;
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52160 --- Comment #3 from Jan Kratochvil jan.kratochvil at redhat dot com 2012-09-16 07:10:39 UTC --- FAIL: gcc (GCC) 4.4.7 FAIL: gcc (GCC) 4.5.4 FAIL: gcc (GCC) 4.6.4 20120916 (prerelease) FAIL: gcc (GCC) 4.7.2 20120916 (prerelease) FAIL: gcc (GCC) 4.8.0 20120916 (experimental)
[Bug debug/52160] gdb ignores line bar: if(foo)goto bar;
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52160 --- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2012-02-07 21:44:42 UTC --- Here is what GCC produces: .loc 1 7 0 leaq-4(%rbp), %rax movq%rax, %rsi movl$.LC1, %edi movl$0, %eax call__isoc99_scanf jmp.L2 .L5: .loc 1 8 0 nop .L2: .loc 1 8 0 is_stmt 0 discriminator 1 movl-4(%rbp), %eax testl%eax, %eax jne.L5 This looks fine to me. Which might mean this is an interesting issue with debugging info.