projects
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
2010-07-13 Emmanuel Thomé <Emmanuel.Thome@gmail.com>
[binutils-gdb.git]
/
gdb
/
hppa-hpux-nat.c
diff --git
a/gdb/hppa-hpux-nat.c
b/gdb/hppa-hpux-nat.c
index 4a0f75ff52c61b26396d0e3e6eee7c802a1e32a4..e5947a9f07f6a3b8ab2ed9a841de80da98b25b08 100644
(file)
--- a/
gdb/hppa-hpux-nat.c
+++ b/
gdb/hppa-hpux-nat.c
@@
-1,6
+1,7
@@
/* Native-dependent code for PA-RISC HP-UX.
/* Native-dependent code for PA-RISC HP-UX.
- Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010
+ Free Software Foundation, Inc.
This file is part of GDB.
This file is part of GDB.
@@
-87,6
+88,8
@@
hppa_hpux_save_state_offset (struct regcache *regcache, int regnum)
static void
hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
{
static void
hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
+ enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
CORE_ADDR addr;
size_t size;
PTRACE_TYPE_RET *buf;
CORE_ADDR addr;
size_t size;
PTRACE_TYPE_RET *buf;
@@
-97,7
+100,7
@@
hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
/* This isn't really an address, but ptrace thinks of it as one. */
addr = hppa_hpux_save_state_offset (regcache, regnum);
/* This isn't really an address, but ptrace thinks of it as one. */
addr = hppa_hpux_save_state_offset (regcache, regnum);
- size = register_size (
current_
gdbarch, regnum);
+ size = register_size (gdbarch, regnum);
gdb_assert (size == 4 || size == 8);
buf = alloca (size);
gdb_assert (size == 4 || size == 8);
buf = alloca (size);
@@
-108,7
+111,7
@@
hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
if (ttrace (TT_LWP_RUREGS, pid, lwp, addr, size, (uintptr_t)buf) == -1)
error (_("Couldn't read register %s (#%d): %s"),
if (ttrace (TT_LWP_RUREGS, pid, lwp, addr, size, (uintptr_t)buf) == -1)
error (_("Couldn't read register %s (#%d): %s"),
- gdbarch_register_name (
current_
gdbarch, regnum),
+ gdbarch_register_name (gdbarch, regnum),
regnum, safe_strerror (errno));
}
#else
regnum, safe_strerror (errno));
}
#else
@@
-122,7
+125,7
@@
hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
buf[i] = ptrace (PT_RUREGS, pid, (PTRACE_TYPE_ARG3) addr, 0, 0);
if (errno != 0)
error (_("Couldn't read register %s (#%d): %s"),
buf[i] = ptrace (PT_RUREGS, pid, (PTRACE_TYPE_ARG3) addr, 0, 0);
if (errno != 0)
error (_("Couldn't read register %s (#%d): %s"),
- gdbarch_register_name (
current_
gdbarch, regnum),
+ gdbarch_register_name (gdbarch, regnum),
regnum, safe_strerror (errno));
addr += sizeof (PTRACE_TYPE_RET);
regnum, safe_strerror (errno));
addr += sizeof (PTRACE_TYPE_RET);
@@
-134,18
+137,22
@@
hppa_hpux_fetch_register (struct regcache *regcache, int regnum)
`struct save_state', even for 64-bit code. */
if (regnum == HPPA_FLAGS_REGNUM && size == 8)
{
`struct save_state', even for 64-bit code. */
if (regnum == HPPA_FLAGS_REGNUM && size == 8)
{
- ULONGEST flags = extract_unsigned_integer ((gdb_byte *)buf, 4);
- store_unsigned_integer ((gdb_byte *)buf, 8, flags);
+ ULONGEST flags;
+ flags = extract_unsigned_integer ((gdb_byte *)buf, 4, byte_order);
+ store_unsigned_integer ((gdb_byte *)buf, 8, byte_order, flags);
}
regcache_raw_supply (regcache, regnum, buf);
}
static void
}
regcache_raw_supply (regcache, regnum, buf);
}
static void
-hppa_hpux_fetch_inferior_registers (struct regcache *regcache, int regnum)
+hppa_hpux_fetch_inferior_registers (struct target_ops *ops,
+ struct regcache *regcache, int regnum)
{
if (regnum == -1)
{
if (regnum == -1)
- for (regnum = 0; regnum < gdbarch_num_regs (current_gdbarch); regnum++)
+ for (regnum = 0;
+ regnum < gdbarch_num_regs (get_regcache_arch (regcache));
+ regnum++)
hppa_hpux_fetch_register (regcache, regnum);
else
hppa_hpux_fetch_register (regcache, regnum);
hppa_hpux_fetch_register (regcache, regnum);
else
hppa_hpux_fetch_register (regcache, regnum);
@@
-156,6
+163,8
@@
hppa_hpux_fetch_inferior_registers (struct regcache *regcache, int regnum)
static void
hppa_hpux_store_register (struct regcache *regcache, int regnum)
{
static void
hppa_hpux_store_register (struct regcache *regcache, int regnum)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
+ enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
CORE_ADDR addr;
size_t size;
PTRACE_TYPE_RET *buf;
CORE_ADDR addr;
size_t size;
PTRACE_TYPE_RET *buf;
@@
-165,7
+174,7
@@
hppa_hpux_store_register (struct regcache *regcache, int regnum)
/* This isn't really an address, but ptrace thinks of it as one. */
addr = hppa_hpux_save_state_offset (regcache, regnum);
/* This isn't really an address, but ptrace thinks of it as one. */
addr = hppa_hpux_save_state_offset (regcache, regnum);
- size = register_size (
current_
gdbarch, regnum);
+ size = register_size (gdbarch, regnum);
gdb_assert (size == 4 || size == 8);
buf = alloca (size);
gdb_assert (size == 4 || size == 8);
buf = alloca (size);
@@
-176,8
+185,9
@@
hppa_hpux_store_register (struct regcache *regcache, int regnum)
`struct save_state', even for 64-bit code. */
if (regnum == HPPA_FLAGS_REGNUM && size == 8)
{
`struct save_state', even for 64-bit code. */
if (regnum == HPPA_FLAGS_REGNUM && size == 8)
{
- ULONGEST flags = extract_unsigned_integer ((gdb_byte *)buf, 8);
- store_unsigned_integer ((gdb_byte *)buf, 4, flags);
+ ULONGEST flags;
+ flags = extract_unsigned_integer ((gdb_byte *)buf, 8, byte_order);
+ store_unsigned_integer ((gdb_byte *)buf, 4, byte_order, flags);
size = 4;
}
size = 4;
}
@@
-187,7
+197,7
@@
hppa_hpux_store_register (struct regcache *regcache, int regnum)
if (ttrace (TT_LWP_WUREGS, pid, lwp, addr, size, (uintptr_t)buf) == -1)
error (_("Couldn't write register %s (#%d): %s"),
if (ttrace (TT_LWP_WUREGS, pid, lwp, addr, size, (uintptr_t)buf) == -1)
error (_("Couldn't write register %s (#%d): %s"),
- gdbarch_register_name (
current_
gdbarch, regnum),
+ gdbarch_register_name (gdbarch, regnum),
regnum, safe_strerror (errno));
}
#else
regnum, safe_strerror (errno));
}
#else
@@
-201,7
+211,7
@@
hppa_hpux_store_register (struct regcache *regcache, int regnum)
ptrace (PT_WUREGS, pid, (PTRACE_TYPE_ARG3) addr, buf[i], 0);
if (errno != 0)
error (_("Couldn't write register %s (#%d): %s"),
ptrace (PT_WUREGS, pid, (PTRACE_TYPE_ARG3) addr, buf[i], 0);
if (errno != 0)
error (_("Couldn't write register %s (#%d): %s"),
- gdbarch_register_name (
current_
gdbarch, regnum),
+ gdbarch_register_name (gdbarch, regnum),
regnum, safe_strerror (errno));
addr += sizeof (PTRACE_TYPE_RET);
regnum, safe_strerror (errno));
addr += sizeof (PTRACE_TYPE_RET);
@@
-214,10
+224,13
@@
hppa_hpux_store_register (struct regcache *regcache, int regnum)
this for all registers (including the floating point registers). */
static void
this for all registers (including the floating point registers). */
static void
-hppa_hpux_store_inferior_registers (struct regcache *regcache, int regnum)
+hppa_hpux_store_inferior_registers (struct target_ops *ops,
+ struct regcache *regcache, int regnum)
{
if (regnum == -1)
{
if (regnum == -1)
- for (regnum = 0; regnum < gdbarch_num_regs (current_gdbarch); regnum++)
+ for (regnum = 0;
+ regnum < gdbarch_num_regs (get_regcache_arch (regcache));
+ regnum++)
hppa_hpux_store_register (regcache, regnum);
else
hppa_hpux_store_register (regcache, regnum);
hppa_hpux_store_register (regcache, regnum);
else
hppa_hpux_store_register (regcache, regnum);