#include "amd64-tdep.h"
#include "i386-linux-tdep.h"
#include "amd64-nat.h"
+#include "i386-nat.h"
/* Mapping between the general-purpose registers in GNU/Linux x86-64
`struct user' format and GDB's register cache layout. */
perror_with_name (_("Couldn't write debug register"));
}
-void
+static void
amd64_linux_dr_set_control (unsigned long control)
{
struct lwp_info *lp;
amd64_linux_dr_set (ptid, DR_CONTROL, control);
}
-void
+static void
amd64_linux_dr_set_addr (int regnum, CORE_ADDR addr)
{
struct lwp_info *lp;
amd64_linux_dr_set (ptid, DR_FIRSTADDR + regnum, addr);
}
-void
+static void
amd64_linux_dr_reset_addr (int regnum)
{
amd64_linux_dr_set_addr (regnum, 0);
}
-unsigned long
+static unsigned long
amd64_linux_dr_get_status (void)
{
return amd64_linux_dr_get (inferior_ptid, DR_STATUS);
ps_get_thread_area (const struct ps_prochandle *ph,
lwpid_t lwpid, int idx, void **base)
{
- if (gdbarch_ptr_bit (current_gdbarch) == 32)
+ if (gdbarch_ptr_bit (target_gdbarch) == 32)
{
/* The full structure is found in <asm-i386/ldt.h>. The second
integer is the LDT's base_address and that is used to locate
i386_use_watchpoints (t);
+ i386_dr_low.set_control = amd64_linux_dr_set_control;
+ i386_dr_low.set_addr = amd64_linux_dr_set_addr;
+ i386_dr_low.reset_addr = amd64_linux_dr_reset_addr;
+ i386_dr_low.get_status = amd64_linux_dr_get_status;
+ i386_set_debug_register_length (8);
+
/* Override the GNU/Linux inferior startup hook. */
super_post_startup_inferior = t->to_post_startup_inferior;
t->to_post_startup_inferior = amd64_linux_child_post_startup_inferior;