[Bug debug/52160] gdb ignores line "bar: if(foo)goto bar;"

2024-01-08 Thread ssbssa at yahoo dot de via Gcc-bugs
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;

2013-04-12 Thread palves at redhat dot com


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;

2012-09-16 Thread jan.kratochvil at redhat dot com
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;

2012-09-16 Thread jan.kratochvil at redhat dot com
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;

2012-02-07 Thread pinskia at gcc dot gnu.org
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.