/* Native-dependent code for GNU/Linux x86 (i386 and x86-64).
- Copyright (C) 1999-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GDB.
#ifdef __x86_64__
#include "amd64-linux-tdep.h"
#endif
-#include "x86-xstate.h"
+#include "gdbsupport/x86-xstate.h"
#include "nat/linux-btrace.h"
#include "nat/linux-nat.h"
#include "nat/x86-linux.h"
#include "nat/x86-linux-dregs.h"
#include "nat/linux-ptrace.h"
-/* linux_nat_new_fork hook. */
+/* linux_nat_target::low_new_fork implementation. */
-static void
-x86_linux_new_fork (struct lwp_info *parent, pid_t child_pid)
+void
+x86_linux_nat_target::low_new_fork (struct lwp_info *parent, pid_t child_pid)
{
pid_t parent_pid;
struct x86_debug_reg_state *parent_state;
in the end before detaching the forked off process, thus making
this compatible with older Linux kernels too. */
- parent_pid = ptid_get_pid (parent->ptid);
+ parent_pid = parent->ptid.pid ();
parent_state = x86_debug_reg_state (parent_pid);
child_state = x86_debug_reg_state (child_pid);
*child_state = *parent_state;
uint64_t xcr0_features_bits;
/* GNU/Linux LWP ID's are process ID's. */
- tid = ptid_get_lwp (inferior_ptid);
+ tid = inferior_ptid.lwp ();
if (tid == 0)
- tid = ptid_get_pid (inferior_ptid); /* Not a threaded program. */
+ tid = inferior_ptid.pid (); /* Not a threaded program. */
#ifdef __x86_64__
{
const struct btrace_config *conf)
{
struct btrace_target_info *tinfo = nullptr;
- TRY
+ try
{
tinfo = linux_enable_btrace (ptid, conf);
}
- CATCH (exception, RETURN_MASK_ERROR)
+ catch (const gdb_exception_error &exception)
{
error (_("Could not enable branch tracing for %s: %s"),
- target_pid_to_str (ptid), exception.message);
+ target_pid_to_str (ptid).c_str (), exception.what ());
}
- END_CATCH
return tinfo;
}
}
\f
-/* Add an x86 GNU/Linux target. */
-
void
-x86_linux_add_target (linux_nat_target *t)
+_initialize_x86_linux_nat ()
{
/* Initialize the debug register function vectors. */
x86_dr_low.set_control = x86_linux_dr_set_control;
x86_dr_low.get_status = x86_linux_dr_get_status;
x86_dr_low.get_control = x86_linux_dr_get_control;
x86_set_debug_register_length (sizeof (void *));
-
- add_target (t);
- linux_nat_set_new_thread (t, x86_linux_new_thread);
- linux_nat_set_delete_thread (t, x86_linux_delete_thread);
- linux_nat_set_new_fork (t, x86_linux_new_fork);
- linux_nat_set_forget_process (t, x86_forget_process);
- linux_nat_set_prepare_to_resume (t, x86_linux_prepare_to_resume);
}