diff options
author | Elena Zannoni <ezannoni@kwikemart.cygnus.com> | 2001-11-19 23:59:55 +0000 |
---|---|---|
committer | Elena Zannoni <ezannoni@kwikemart.cygnus.com> | 2001-11-19 23:59:55 +0000 |
commit | 8b6f1f3a31e4a5ba0151f3ec9d0b31688c28de35 (patch) | |
tree | 750317a48b3ed3dc5111c82d537e1ed1af72f8a0 /gdb | |
parent | 479412cd97ece8382f79067ffc6cc3df96446c19 (diff) | |
download | gdb-8b6f1f3a31e4a5ba0151f3ec9d0b31688c28de35.zip gdb-8b6f1f3a31e4a5ba0151f3ec9d0b31688c28de35.tar.gz gdb-8b6f1f3a31e4a5ba0151f3ec9d0b31688c28de35.tar.bz2 |
2001-11-19 Elena Zannoni <ezannoni@redhat.com>
* infptrace.c (fetch_register): Dynamically allocate buffer for
register.
(store_register): Use regcache_collect, instead of accessing the
register buffer directly.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/infptrace.c | 10 |
2 files changed, 15 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7496a06..ea26632 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2001-11-19 Elena Zannoni <ezannoni@redhat.com> + + * infptrace.c (fetch_register): Dynamically allocate buffer for + register. + (store_register): Use regcache_collect, instead of accessing the + register buffer directly. + 2001-11-19 Daniel Jacobowitz <drow@mvista.com> * mips-tdep.c (find_proc_desc): Add cur_frame argument. Pass diff --git a/gdb/infptrace.c b/gdb/infptrace.c index d0df642..9815e05 100644 --- a/gdb/infptrace.c +++ b/gdb/infptrace.c @@ -359,7 +359,7 @@ fetch_register (int regno) char mess[128]; /* For messages */ register int i; unsigned int offset; /* Offset of registers within the u area. */ - char buf[MAX_REGISTER_RAW_SIZE]; + char *buf = alloca (MAX_REGISTER_RAW_SIZE); int tid; if (CANNOT_FETCH_REGISTER (regno)) @@ -424,6 +424,7 @@ store_register (int regno) register int i; unsigned int offset; /* Offset of registers within the u area. */ int tid; + char *buf = alloca (MAX_REGISTER_RAW_SIZE); if (CANNOT_STORE_REGISTER (regno)) { @@ -437,11 +438,16 @@ store_register (int regno) offset = U_REGS_OFFSET; regaddr = register_addr (regno, offset); + + /* Put the contents of regno into a local buffer */ + regcache_collect (regno, buf); + + /* Store the local buffer into the inferior a chunk at the time. */ for (i = 0; i < REGISTER_RAW_SIZE (regno); i += sizeof (PTRACE_XFER_TYPE)) { errno = 0; ptrace (PT_WRITE_U, tid, (PTRACE_ARG3_TYPE) regaddr, - *(PTRACE_XFER_TYPE *) & registers[REGISTER_BYTE (regno) + i]); + *(PTRACE_XFER_TYPE *) (buf + i)); regaddr += sizeof (PTRACE_XFER_TYPE); if (errno != 0) { |