On 07/13/2012 01:06 PM, Geert Uytterhoeven wrote: > Hi Michael, > > On Fri, Jul 13, 2012 at 9:14 PM, Michael Eager wrote: >> I've tracked down a problem in gdb/gdbserver to ptrace() not >> clearing the i/d cache after modifying memory. >> >> To reproduce: >> m68k-gcc -g -o cf-gdb-test-no-io cf-gdb-test-no-io.c >> scp cf-gdb-test-no-io :/ >> on target: gdbserver :1234 cf-gdb-test-no-io >> m68k-gcc cf-gdb-test-no-io >> (gdb) b 8 >> (gdb) b 10 >> (gdb) tar rem :1234 >> (gdb) c >> (gdb) c >> >> Program will hit first breakpoint, but not second breakpoint. >> >> It appears that the instruction at the last breakpoint location >> is in the icache and does not get flushed when the bp is written. >> >> After applying the attached patch, gdb/gdbserver behavior is correct. > > Thanks for your report and patch! I attached the test program, which I previously forgot. > Does this happen only in 2.6.29, or also in current kernels? > The first hunk of your patch no longer applies, as the affected code is > gone and those cases are now handled purely by the generic code. I'm working with a client's environment using 2.6.29, so I can't verify that the same failure occurs in recent kernels. But I don't see anything in ptrace.c in the latest kernel which would clear the i/d caches when writing to memory. > > If yes, feel free to take this to linux-m68k@lists.linux-m68k.org. Done. -- Michael Eager eager@eagercon.com 1960 Park Blvd., Palo Alto, CA 94306 650-325-8077