Bug 14588 - Option-g-O0 bug
Summary: Option-g-O0 bug
Status: RESOLVED MOVED
Alias: None
Product: gdb
Classification: Unclassified
Component: breakpoints (show other bugs)
Version: 7.4
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-09-16 06:43 UTC by jiang
Modified: 2012-09-17 05:31 UTC (History)
1 user (show)

See Also:
Host: x86_64 GNU/Linux
Target: x86_64 GNU/Linux
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description jiang 2012-09-16 06:43:18 UTC
//123.c
char macro_ptr=0;
void next(void)
{
redo:
	if (!macro_ptr)
	{	
		if (macro_ptr)
		{
			if (macro_ptr)
			{
				if (macro_ptr)
				{
					goto redo;
				}
			}
		}
	}
	else
	{	
		goto redo;		
	}
}

int main()
{
	char a=0,b=9;
	next();
	b=a+b;
	return 0;
}

jiang@jiang:~$ gcc -o123 -g -O0 123.c
jiang@jiang:~$ gdb 123
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/jiang/123...done.
(gdb) break main 
Breakpoint 1 at 0x4004f4: file 123.c, line 28.
(gdb) run
Starting program: /home/jiang/123 

Breakpoint 1, main () at 123.c:28
28		char a=0,b=9;
(gdb) s
29		next();
(gdb) 
[Inferior 1 (process 2322) exited normally]
warning: Error removing breakpoint 0
warning: Error removing breakpoint 0
warning: Error removing breakpoint 0
(gdb)
Comment 1 Jan Kratochvil 2012-09-16 07:11:12 UTC
The line
  warning: Error removing breakpoint 0
is already fixed - GDB PR 13776.

The bug itself is GCC debug PR already tracked as:
  http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52160
Comment 2 jiang 2012-09-16 09:19:10 UTC
In addition to the-O0 option, the other can enter the next ()
Comment 3 jiang 2012-09-17 04:31:49 UTC
step in next() -g -O0 fail
step in next() -g -O1 or -g -O2,so,successful
Optimization options related
I hope you will attention to this bug

jiang@jiang:~$ gcc -o123 -g -O1 123.c
iang@jiang:~$ gdb 123
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/jiang/123...done.
(gdb) break main 
Breakpoint 1 at 0x4004c1: file 123.c, line 28.
(gdb) run
Starting program: /home/jiang/123 

Breakpoint 1, main () at 123.c:28
28		next();
(gdb) s
next () at 123.c:6
6		if (!macro_ptr)
(gdb) q
A debugging session is active.

	Inferior 1 [process 2307] will be killed.

Quit anyway? (y or n) y
Comment 4 Jan Kratochvil 2012-09-17 05:31:29 UTC
 * You may rather follow-up at the GCC bug above, this bug is off-topic for GDB:
   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52160
 * That -O1+ works is nice but it is still a real bug that -O0 does not.
 * It is more clear to use 'gcc -S' or 'objdump -dl' examples than showing GDB.