[patch] "single step" atomic instruction sequences as a whole.

Luis Machado luisgpm@linux.vnet.ibm.com
Wed Feb 28 16:09:00 GMT 2007


Hi,

I refreshed Paul's patches to apply cleanly on HEAD. I did a test run
and it still works as expected.

->
(gdb) start
(gdb) x/g &puts
0x400001dc1d8 <puts>:   0x00000400000e99b0
(gdb) x/10i 0x00000400000e99b0 + 80
0x400000e9a00 <._IO_puts+80>:   beq-    cr7,0x400000e9a3c <._IO_puts+140>
0x400000e9a04 <._IO_puts+84>:   li      r0,1
0x400000e9a08 <._IO_puts+88>:   lwarx   r11,0,r3
0x400000e9a0c <._IO_puts+92>:   cmpw    r11,r9
0x400000e9a10 <._IO_puts+96>:   bne-    0x400000e9a1c <._IO_puts+108>
0x400000e9a14 <._IO_puts+100>:  stwcx.  r0,0,r3
0x400000e9a18 <._IO_puts+104>:  bne+    0x400000e9a08 <._IO_puts+88>
0x400000e9a1c <._IO_puts+108>:  isync
0x400000e9a20 <._IO_puts+112>:  cmpwi   cr7,r11,0
0x400000e9a24 <._IO_puts+116>:  bne-    cr7,0x400000e9b84 <._IO_puts+468>
(gdb) b *0x400000e9a04
Breakpoint 2 at 0x400000e9a04
(gdb) c
Continuing.

Breakpoint 2, 0x00000400000e9a04 in ._IO_puts () from /lib64/power5/libc.so.6
(gdb) si
0x00000400000e9a08 in ._IO_puts () from /lib64/power5/libc.so.6
(gdb)
Stepping over an atomic sequence of instructions beginning at 0x00000400000e9a08
0x00000400000e9a18 in ._IO_puts () from /lib64/power5/libc.so.6
(gdb) x/5i 0x00000400000e9a08
0x400000e9a08 <._IO_puts+88>:   lwarx   r11,0,r3
0x400000e9a0c <._IO_puts+92>:   cmpw    r11,r9
0x400000e9a10 <._IO_puts+96>:   bne-    0x400000e9a1c <._IO_puts+108>
0x400000e9a14 <._IO_puts+100>:  stwcx.  r0,0,r3
0x400000e9a18 <._IO_puts+104>:  bne+    0x400000e9a08 <._IO_puts+88>
(gdb)
<-

Also, i haven't been able to reproduce the issue related at this post:
(http://sourceware.org/ml/gdb-patches/2006-09/msg00060.html)

This is the test run on my power machine. No Internal errors at this
time.

->
(gdb) start
Breakpoint 1 at 0x10000674: file atomic.c, line 9.
Starting program: /home/luis/binaries/atomic64
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
warning: Breakpoint address adjusted from 0x10010b58 to 0x100004f0.
main (argc=1, argv=0xfffff8351e8 "") at atomic.c:9
9       printf("atomic_step_test\n");
(gdb) n
atomic_step_test
10      atomic_set(&i,5);
(gdb)
11      printf("i=%d\n",atomic_read(&i));
(gdb)
i=5
12      atomic_dec(&i);
(gdb)
13      printf("i=%d\n",atomic_read(&i));
(gdb)
i=4
16      }
(gdb)
0x00000400000a0c8c in .generic_start_main ()
from /lib64/power5/libc.so.6
(gdb)
Single stepping until exit from function .generic_start_main,
which has no line number information.
0x00000400000150f0 in ._dl_fini () from /lib64/ld64.so.1
(gdb)
Single stepping until exit from function ._dl_fini,
which has no line number information.
Stepping over an atomic sequence of instructions beginning at
0x00000400000fa69c
Stepping over an atomic sequence of instructions beginning at
0x00000400000fa820

Program exited with code 04.
(gdb)
<-

Regards,
Luis
-------------- next part --------------
A non-text attachment was scrubbed...
Name: change-software-single-step.diff
Type: text/x-patch
Size: 16370 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20070228/9a4f8c62/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ppc-atomic.single-step.diff
Type: text/x-patch
Size: 3409 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20070228/9a4f8c62/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rs6000-atomic-single-step.diff
Type: text/x-patch
Size: 2855 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20070228/9a4f8c62/attachment-0002.bin>


More information about the Gdb-patches mailing list