This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: RFA: Linux gdbserver: store register values with proper type
On Thu, May 29, 2003 at 02:14:13PM -0500, Jim Blandy wrote:
>
> Daniel Jacobowitz <drow@mvista.com> writes:
> > This is almost OK. Could you correct the other int reference in the
> > same block?
>
> *duh*
>
> How's this?
Good by me, go ahead.
>
> gdbserver/ChangeLog:
> 2003-05-29 Jim Blandy <jimb@redhat.com>
>
> * linux-low.c (usr_store_inferior_registers): Transfer buf in
> PTRACE_XFER_TYPE-sized chunks, not int-sized chunks. Otherwise,
> if 'int' is smaller than PTRACE_XFER_TYPE, you end up throwing
> away part of the register's value.
>
> Index: gdb/gdbserver/linux-low.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/gdbserver/linux-low.c,v
> retrieving revision 1.21.14.2
> diff -c -r1.21.14.2 linux-low.c
> *** gdb/gdbserver/linux-low.c 29 May 2003 19:01:10 -0000 1.21.14.2
> --- gdb/gdbserver/linux-low.c 29 May 2003 19:02:52 -0000
> ***************
> *** 976,982 ****
> {
> errno = 0;
> ptrace (PTRACE_POKEUSER, inferior_pid, (PTRACE_ARG3_TYPE) regaddr,
> ! *(int *) (buf + i));
> if (errno != 0)
> {
> if ((*the_low_target.cannot_store_register) (regno) == 0)
> --- 976,982 ----
> {
> errno = 0;
> ptrace (PTRACE_POKEUSER, inferior_pid, (PTRACE_ARG3_TYPE) regaddr,
> ! *(PTRACE_XFER_TYPE *) (buf + i));
> if (errno != 0)
> {
> if ((*the_low_target.cannot_store_register) (regno) == 0)
> ***************
> *** 989,995 ****
> return;
> }
> }
> ! regaddr += sizeof (int);
> }
> }
> else
> --- 989,995 ----
> return;
> }
> }
> ! regaddr += sizeof (PTRACE_XFER_TYPE);
> }
> }
> else
>
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer