strange gdb behavior

Max N. Boyarov m.boyarov at gmail.com
Tue Nov 3 11:19:42 UTC 2009


Kostik Belousov <kostikbel at gmail.com> writes:

> On Mon, Nov 02, 2009 at 03:52:33PM +0200, Max Boyarov wrote:
>> Hi,
[cut]
>
> Can you check it on RELENG_7 ? It seems to be another old gdb bug.
> With gdb 7.0,
> (gdb) b main
> Breakpoint 1 at 0x8048414: file hello.c, line 8.
> (gdb) r
> Starting program: /usr/home/kostik/build/bsd/6/stuff/hello1
>
> Breakpoint 1, main (argc=1, argv=0xbfbfe53c) at hello.c:8
> 8               for (i = 0; i < argc; i++)
>
> while in-tree gdb shows me the same behaviour as yours.


$ cat gdbt.c 
#include <unistd.h>

int
main(int argc, char **argv)
{
        int t;

        t = getopt(argc, argv, "f:");

        return t;
}


$ cat gdbt.gdb 
b main
run
print &argc
next
print &argc
list
quit


$ cat gdbt.sh 
#!/bin/sh

uname -mr

cc -O0 -ggdb -o gdbt gdbt.c && gdb -nx -quiet -x gdbt.gdb gdbt


9.0-CURRENT i386 / r198846
Breakpoint 1 at 0x80483f0: file gdbt.c, line 5.

Breakpoint 1, main (argc=Error accessing memory address 0x2: Bad address.
) at gdbt.c:5
5       {
$1 = (int *) 0x2
main (argc=1, argv=0xbfbfe7e0) at gdbt.c:8
8               t = getopt(argc, argv, "f:");
$2 = (int *) 0xbfbfe7c0
3       int
4       main(int argc, char **argv)
5       {
6               int t;
7       
8               t = getopt(argc, argv, "f:");
9       
10              return t;
11      }


9.0-CURRENT amd64 /r198480
Breakpoint 1 at 0x40057f: file gdbt.c, line 8.

Breakpoint 1, main (argc=1, argv=0x7fffffffeac0) at gdbt.c:8
8               t = getopt(argc, argv, "f:");
$1 = (int *) 0x7fffffffea5c
10              return t;
$2 = (int *) 0x7fffffffea5c
5       {
6               int t;
7
8               t = getopt(argc, argv, "f:");
9
10              return t;
11      }


7.2-RELEASE-p1 i386
Breakpoint 1 at 0x8048400: file gdbt.c, line 5.

Breakpoint 1, main (argc=Error accessing memory address 0x2: Bad address.
) at gdbt.c:5
5       {
$1 = (int *) 0x2
main (argc=1, argv=0xbfbfeca4) at gdbt.c:8
8               t = getopt(argc, argv, "f:");
$2 = (int *) 0xbfbfec80
3       int
4       main(int argc, char **argv)
5       {
6               int t;
7
8               t = getopt(argc, argv, "f:");
9
10              return t;
11      }

7.2-RELEASE-p4 amd64
Breakpoint 1 at 0x40057f: file gdbt.c, line 8.

Breakpoint 1, main (argc=1, argv=0x7fffffffebc8) at gdbt.c:8
8               t = getopt(argc, argv, "f:");
$1 = (int *) 0x7fffffffeb5c
10              return t;
$2 = (int *) 0x7fffffffeb5c
5       {
6               int t;
7
8               t = getopt(argc, argv, "f:");
9
10              return t;
11      }


-- 
Max N. Boyarov
xmpp:zotrix at jabber.ru


More information about the freebsd-hackers mailing list