$(srcdir)/common/btrace-common.c \
$(srcdir)/common/fileio.c $(srcdir)/nat/linux-namespaces.c \
$(srcdir)/arch/arm.c $(srcdir)/common/common-regcache.c \
- $(srcdir)/arch/arm-linux.c $(srcdir)/arch/arm-get-next-pcs.c
+ $(srcdir)/arch/arm-linux.c $(srcdir)/arch/arm-get-next-pcs.c \
+ $(srcdir)/common/gdb-byteswap.c
DEPFILES = @GDBSERVER_DEPFILES@
common-utils.o ptid.o buffer.o format.o filestuff.o dll.o notif.o \
tdesc.o print-utils.o rsp-low.o errors.o common-debug.o cleanups.o \
common-exceptions.o symbol.o btrace-common.o fileio.o common-regcache.o \
+ gdb-byteswap.o \
$(XML_BUILTIN) $(DEPFILES) $(LIBOBJS)
GDBREPLAY_OBS = gdbreplay.o version.o
GDBSERVER_LIBS = @GDBSERVER_LIBS@
common-regcache.o: ../common/common-regcache.c
$(COMPILE) $<
$(POSTCOMPILE)
+gdb-byteswap.o: ../common/gdb-byteswap.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
# Arch object files rules form ../arch
#include "gdbthread.h"
#include "tdesc.h"
#include "rsp-low.h"
+#include "bfd-types.h"
+#include "gdb-byteswap.h"
+
#ifndef IN_PROCESS_AGENT
struct regcache *
register_size (regcache->tdesc, n));
}
+#ifndef IN_PROCESS_AGENT
+
+/* Return host endianness as an enum bfd_endian. */
+
+static enum bfd_endian
+host_bfd_endian (void)
+{
+ return (__BYTE_ORDER == __LITTLE_ENDIAN
+ ? BFD_ENDIAN_LITTLE
+ : BFD_ENDIAN_BIG);
+}
+
enum register_status
regcache_raw_read_unsigned (struct regcache *regcache, int regnum,
ULONGEST *val)
{
int size;
-
- gdb_assert (regcache != NULL);
- gdb_assert (regnum >= 0 && regnum < regcache->tdesc->num_registers);
+ gdb_byte *buf;
+ enum bfd_endian byteorder;
size = register_size (regcache->tdesc, regnum);
"%d bytes."),
(int) sizeof (ULONGEST));
- *val = 0;
- collect_register (regcache, regnum, val);
+ buf = (gdb_byte *) alloca (size);
+ collect_register (regcache, regnum, buf);
+
+ /* Assume the inferior's byte order is the same as gdbserver's (the
+ host). */
+ byteorder = host_bfd_endian ();
+ *val = extract_unsigned_integer (buf, size, byteorder);
return REG_VALID;
}
-#ifndef IN_PROCESS_AGENT
-
void
collect_register_as_string (struct regcache *regcache, int n, char *buf)
{