Re: some compile errors fo gdb-7.0.1

Harald Koenig
2010-02-23T17:14:05Z

Hi,

here is a problem report for break points on AIX 5.1 and 5.3.

first AIX 5.3:

if a program first runs in gdb without any break points and finished,
then it's not possible to set break a break point for the next run
(this is the same on AIX 5.1 too):

# gdb a.out
GNU gdb (GDB) 7.1.50.20100222-cvs
Reading symbols from a.out...done.
(gdb) r
Starting program: a.out
hello

Program exited normally.
(gdb) b main
==> Cannot access memory at address 0xf00d7530
(gdb) q

with bogus address "0xf00d7530"

if there is a(ny) break point set for the 1st run things seem to work fine:

# gdb a.out
GNU gdb (GDB) 7.1.50.20100222-cvs
Reading symbols from a.out...done.
(gdb) b main
Breakpoint 1 at 0x100003c8: file hello.c, line 23.
(gdb) r
Starting program: a.out

Breakpoint 1, main (argc=1, argv=0x2ff22578, env=0x2ff22580) at hello.c:23
23 main(int argc...
(gdb) c
Continuing.
hello

Program exited normally.
(gdb) r
Starting program: a.out

Breakpoint 1, main (argc...=1, argv=0x2ff22578, env=0x2ff22580) at hello.c:23
23 main(int argc, ...
(gdb) c
Continuing.
hello

Program exited normally.
(gdb) b main
Note: breakpoint 1 also set at pc 0x100003c8.
Breakpoint 2 at 0x100003c8: file hello.c, line 23.
(gdb) r
Starting program: a.out

Breakpoint 1, main (argc=1, argv=0x2ff22578, env=0x2ff22580) at hello.c:23
23 main(int argc, ...
(gdb) c
Continuing.
hello

Program exited normally.
(gdb)

===============================================================================

on AIX 5.1 though setting a break point before the first run
only seems to work, but that break point is not functional for the 1st run:

Reading symbols from a.out...done.
(gdb) b main
Breakpoint 1 at 0x100003c8: file hello.c, line 23.
(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep y 0x100003c8 in main at hello.c:23
(gdb) r
Starting program: a.out
==> Error in re-setting breakpoint 1: Cannot access memory at address 0x0
==> Error in re-setting breakpoint 1: Cannot access memory at address 0x0
hello

Program exited normally.
(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep y 0x100003c8 in main at hello.c:23

and that break point doesn't function either in a 2nd run:

(gdb) r
Starting program: a.out
hello

Program exited normally.

but if I add another bp to main (or another function) gdb starts to work "better";)

(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep n 0x100003c8 in main at hello.c:23
(gdb) b main
Note: breakpoint 1 (disabled) also set at pc 0x100003c8.
Breakpoint 2 at 0x100003c8: file hello.c, line 23.
(gdb) r
Starting program: a.out

Breakpoint 2, main (argc=1, argv=0x2ff2248c, env=0x2ff22494) at hello.c:23
23 main(int argc,...
(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep n 0x100003c8 in main at hello.c:23
2 breakpoint keep y 0x100003c8 in main at hello.c:23
breakpoint already hit 1 time
(gdb) c
Continuing.
hello

Program exited normally.
(gdb) r
Starting program: a.out

Breakpoint 2, main (argc=1, argv=0x2ff2248c, env=0x2ff22494) at hello.c:23
23 main(int argc,...
(gdb) c
Continuing.
hello

Program exited normally.
(gdb)

any thoughts about that breakpoint weirdnes son AIX ?!?

right now I'm trying to build gdb on AIX 6.1 which right now fails here

"gdb-CVS-20100222/gdb/aix-thread.c", line 352.46: 1506-280 (W) Function argument assignment between types "int*" and "unsigned int*" is not allowed.

where the source reads like this -- hmmmmm....

/* getthrds(3) isn't prototyped in any AIX 4.3.3 #include file. */
extern int getthrds (pid_t, struct thrdsinfo64 *,
int, pthdb_tid_t *, int);

but now I have to leave for today -- stay tuned ;-))