* linux-low.c (fetch_register, usr_store_inferior_registers): Handle
left-padded registers. * linux-low.h (struct linux_target_ops): Add left_pad_xfer. * linux-ppc64-low.c (the_low_target): Set left_pad_xfer.
This commit is contained in:
parent
e27b69eef7
commit
5a1f5858d4
4 changed files with 27 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2005-07-13 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
|
||||||
|
* linux-low.c (fetch_register, usr_store_inferior_registers): Handle
|
||||||
|
left-padded registers.
|
||||||
|
* linux-low.h (struct linux_target_ops): Add left_pad_xfer.
|
||||||
|
* linux-ppc64-low.c (the_low_target): Set left_pad_xfer.
|
||||||
|
|
||||||
2005-07-01 Steve Ellcey <sje@cup.hp.com>
|
2005-07-01 Steve Ellcey <sje@cup.hp.com>
|
||||||
|
|
||||||
* configure.ac (BFD_NEED_DECLARATION): Replace with AC_CHECK_DECLS.
|
* configure.ac (BFD_NEED_DECLARATION): Replace with AC_CHECK_DECLS.
|
||||||
|
|
|
@ -1126,7 +1126,12 @@ fetch_register (int regno)
|
||||||
goto error_exit;
|
goto error_exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
supply_register (regno, buf);
|
if (the_low_target.left_pad_xfer
|
||||||
|
&& register_size (regno) < sizeof (PTRACE_XFER_TYPE))
|
||||||
|
supply_register (regno, (buf + sizeof (PTRACE_XFER_TYPE)
|
||||||
|
- register_size (regno)));
|
||||||
|
else
|
||||||
|
supply_register (regno, buf);
|
||||||
|
|
||||||
error_exit:;
|
error_exit:;
|
||||||
}
|
}
|
||||||
|
@ -1168,7 +1173,12 @@ usr_store_inferior_registers (int regno)
|
||||||
& - sizeof (PTRACE_XFER_TYPE);
|
& - sizeof (PTRACE_XFER_TYPE);
|
||||||
buf = alloca (size);
|
buf = alloca (size);
|
||||||
memset (buf, 0, size);
|
memset (buf, 0, size);
|
||||||
collect_register (regno, buf);
|
if (the_low_target.left_pad_xfer
|
||||||
|
&& register_size (regno) < sizeof (PTRACE_XFER_TYPE))
|
||||||
|
collect_register (regno, (buf + sizeof (PTRACE_XFER_TYPE)
|
||||||
|
- register_size (regno)));
|
||||||
|
else
|
||||||
|
collect_register (regno, buf);
|
||||||
for (i = 0; i < size; i += sizeof (PTRACE_XFER_TYPE))
|
for (i = 0; i < size; i += sizeof (PTRACE_XFER_TYPE))
|
||||||
{
|
{
|
||||||
errno = 0;
|
errno = 0;
|
||||||
|
|
|
@ -64,6 +64,9 @@ struct linux_target_ops
|
||||||
int (*stopped_by_watchpoint) (void);
|
int (*stopped_by_watchpoint) (void);
|
||||||
CORE_ADDR (*stopped_data_address) (void);
|
CORE_ADDR (*stopped_data_address) (void);
|
||||||
|
|
||||||
|
/* Whether to left-pad registers for PEEKUSR/POKEUSR if they are smaller
|
||||||
|
than an xfer unit. */
|
||||||
|
int left_pad_xfer;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct linux_target_ops the_low_target;
|
extern struct linux_target_ops the_low_target;
|
||||||
|
|
|
@ -109,4 +109,9 @@ struct linux_target_ops the_low_target = {
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
ppc_breakpoint_at,
|
ppc_breakpoint_at,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
1
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue