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
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?
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