+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>
* configure.ac (BFD_NEED_DECLARATION): Replace with AC_CHECK_DECLS.
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:;
}
& - sizeof (PTRACE_XFER_TYPE);
buf = alloca (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))
{
errno = 0;
int (*stopped_by_watchpoint) (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;