This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Emi,

I tried your patch against the CVS head. GDB seems to handle this set of
instructions just fine:

0x40000119a00 <._IO_puts+80>:   beq-    cr7,0x40000119a3c <._IO_puts
+140>
0x40000119a04 <._IO_puts+84>:   li      r0,1
0x40000119a08 <._IO_puts+88>:   lwarx   r11,0,r3
0x40000119a0c <._IO_puts+92>:   cmpw    r11,r9
0x40000119a10 <._IO_puts+96>:   bne-    0x40000119a1c <._IO_puts+108>
0x40000119a14 <._IO_puts+100>:  stwcx.  r0,0,r3
0x40000119a18 <._IO_puts+104>:  bne+    0x40000119a08 <._IO_puts+88>
0x40000119a1c <._IO_puts+108>:  isync
0x40000119a20 <._IO_puts+112>:  cmpwi   cr7,r11,0
0x40000119a24 <._IO_puts+116>:  bne-    cr7,0x40000119b84 <._IO_puts
+468>

If i step through "lwarx", i end up with this:

Stepping over an atomic sequence of instructions.
Beginning at 0x0000040000119a08, break at 0x0000040000119a18 next time.
0x0000040000119a18 in ._IO_puts () from /lib64/power5/libc.so.6

So far so good. But if we continue executing the program we will
eventually reach a set of instructions like this one:

0x40000119ae8 <._IO_puts+312>:  lwarx   r9,0,r3
0x40000119aec <._IO_puts+316>:  stwcx.  r0,0,r3
0x40000119af0 <._IO_puts+320>:  bne+    0x40000119ae8 <._IO_puts+312>

At this point, GDB keeps stepping through the lwarx and stwcx
instructions endlessly. If i hit continue right after the first
breakpoint (0x40000119a08), the program ends normally

I tested the same instruction block with Paul's patch and this did not
happen, stating that it skipped the atomic instruction set as usual, and
ending the program.

I'm trying to figure out what is going on exactly.

Regards,
Luis


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]