diff options
author | Mark Kettenis <kettenis@gnu.org> | 2005-11-21 09:11:44 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2005-11-21 09:11:44 +0000 |
commit | 0d74f5184687d447d25af11a66a8a286ce8faba2 (patch) | |
tree | a6d4cbec62d84f9a51e2024abde22ca570b86811 | |
parent | 33362918bffa49495556d4f1eb5fc4e5a0808398 (diff) | |
download | gdb-0d74f5184687d447d25af11a66a8a286ce8faba2.tar.gz |
* inf-ptrace.c (inf_ptrace_xfer_partial): Use PIOD_WRITE_I instead
of PIOD_WRITE_D.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/inf-ptrace.c | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3ef2cd9fe4b..1d0b6c75c5e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2005-11-20 Mark Kettenis <kettenis@gnu.org> + + * inf-ptrace.c (inf_ptrace_xfer_partial): Use PIOD_WRITE_I instead + of PIOD_WRITE_D. + 2005-11-19 Jim Blandy <jimb@redhat.com> * tracepoint.c (memrange_absolute): New enum constant. diff --git a/gdb/inf-ptrace.c b/gdb/inf-ptrace.c index d12d1ad3214..f3c399ea309 100644 --- a/gdb/inf-ptrace.c +++ b/gdb/inf-ptrace.c @@ -462,8 +462,12 @@ inf_ptrace_xfer_partial (struct target_ops *ops, enum target_object object, struct ptrace_io_desc piod; /* NOTE: We assume that there are no distinct address spaces - for instruction and data. */ - piod.piod_op = writebuf ? PIOD_WRITE_D : PIOD_READ_D; + for instruction and data. However, on OpenBSD 3.9 and + later, PIOD_WRITE_D doesn't allow changing memory that's + mapped read-only. Since most code segments will be + read-only, using PIOD_WRITE_D will prevent us from + inserting breakpoints, so we use PIOD_WRITE_I instead. */ + piod.piod_op = writebuf ? PIOD_WRITE_I : PIOD_READ_D; piod.piod_addr = writebuf ? (void *) writebuf : readbuf; piod.piod_offs = (void *) (long) offset; piod.piod_len = len; |