[RFC/WIP PATCH 02/14] Mask software breakpoints from memory writes too
Pedro Alves
pedro@codesourcery.com
Wed Dec 14 15:06:00 GMT 2011
On Wednesday 14 December 2011 12:53:04, Andreas Schwab wrote:
> Pedro Alves <pedro@codesourcery.com> writes:
>
> > Does this fix it?
> >
> > --- a/gdb/ppc-linux-tdep.c
> > +++ b/gdb/ppc-linux-tdep.c
> > @@ -218,7 +218,7 @@ ppc_linux_memory_remove_breakpoint (struct gdbarch *gdbarch,
> > program modified the code on us, so it is wrong to put back the
> > old value. */
> > if (val == 0 && memcmp (bp, old_contents, bplen) == 0)
> > - val = target_write_memory (addr, bp_tgt->shadow_contents, bplen);
> > + val = target_write_raw_memory (addr, bp_tgt->shadow_contents, bplen);
> >
> > do_cleanups (cleanup);
> > return val;
>
> Looks good, thanks.
Thanks. I've applied the patch below to do the same adjustment to
all memory_remove_breakpoint callbacks. Applied to both mainline
and the 7.4 branch.
--
Pedro Alves
2011-12-14 Pedro Alves <pedro@codesourcery.com>
* ia64-tdep.c (ia64_memory_remove_breakpoint): Use
target_write_raw_memory.
* m32r-tdep.c (m32r_memory_remove_breakpoint): Use
target_write_raw_memory.
* microblaze-linux-tdep.c
(microblaze_linux_memory_remove_breakpoint): Use
target_write_raw_memory.
* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint): Use
target_write_raw_memory.
---
gdb/ia64-tdep.c | 2 +-
gdb/m32r-tdep.c | 2 +-
gdb/microblaze-linux-tdep.c | 2 +-
gdb/ppc-linux-tdep.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
index 68e5021..d1940e6 100644
--- a/gdb/ia64-tdep.c
+++ b/gdb/ia64-tdep.c
@@ -811,7 +811,7 @@ ia64_memory_remove_breakpoint (struct gdbarch *gdbarch,
/* In BUNDLE_MEM, be careful to modify only the bits belonging to SLOTNUM
and not any of the other ones that are stored in SHADOW_CONTENTS. */
replace_slotN_contents (bundle_mem, instr_saved, slotnum);
- val = target_write_memory (addr, bundle_mem, BUNDLE_LEN);
+ val = target_write_raw_memory (addr, bundle_mem, BUNDLE_LEN);
do_cleanups (cleanup);
return val;
diff --git a/gdb/m32r-tdep.c b/gdb/m32r-tdep.c
index 136fd7b..b417db0 100644
--- a/gdb/m32r-tdep.c
+++ b/gdb/m32r-tdep.c
@@ -163,7 +163,7 @@ m32r_memory_remove_breakpoint (struct gdbarch *gdbarch,
}
/* Write contents. */
- val = target_write_memory (addr & 0xfffffffc, buf, 4);
+ val = target_write_raw_memory (addr & 0xfffffffc, buf, 4);
return val;
}
diff --git a/gdb/microblaze-linux-tdep.c b/gdb/microblaze-linux-tdep.c
index c14e01b..7b2662d 100644
--- a/gdb/microblaze-linux-tdep.c
+++ b/gdb/microblaze-linux-tdep.c
@@ -58,7 +58,7 @@ microblaze_linux_memory_remove_breakpoint (struct gdbarch *gdbarch,
program modified the code on us, so it is wrong to put back the
old value. */
if (val == 0 && memcmp (bp, old_contents, bplen) == 0)
- val = target_write_memory (addr, bp_tgt->shadow_contents, bplen);
+ val = target_write_raw_memory (addr, bp_tgt->shadow_contents, bplen);
return val;
}
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
index e623742..9968621 100644
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
@@ -218,7 +218,7 @@ ppc_linux_memory_remove_breakpoint (struct gdbarch *gdbarch,
program modified the code on us, so it is wrong to put back the
old value. */
if (val == 0 && memcmp (bp, old_contents, bplen) == 0)
- val = target_write_memory (addr, bp_tgt->shadow_contents, bplen);
+ val = target_write_raw_memory (addr, bp_tgt->shadow_contents, bplen);
do_cleanups (cleanup);
return val;
More information about the Gdb-patches
mailing list