GDB (xrefs)
|
#include "defs.h"
#include "inferior.h"
#include "gdbcore.h"
#include "regcache.h"
#include "regset.h"
#include "linux-nat.h"
#include "amd64-linux-tdep.h"
#include "linux-btrace.h"
#include "btrace.h"
#include "gdb_assert.h"
#include "gdb_string.h"
#include "elf/common.h"
#include <sys/uio.h>
#include <sys/ptrace.h>
#include <sys/debugreg.h>
#include <sys/syscall.h>
#include <sys/procfs.h>
#include <sys/user.h>
#include <asm/prctl.h>
#include <asm/ptrace.h>
#include <sys/reg.h>
#include "gdb_proc_service.h"
#include "gregset.h"
#include "amd64-tdep.h"
#include "i386-linux-tdep.h"
#include "amd64-nat.h"
#include "i386-nat.h"
#include "i386-xstate.h"
Go to the source code of this file.
#define AMD64_LINUX_USER64_CS 0x33 |
Definition at line 1035 of file amd64-linux-nat.c.
Referenced by amd64_linux_read_description().
#define AMD64_LINUX_X32_DS 0x2b |
Definition at line 1036 of file amd64-linux-nat.c.
Referenced by amd64_linux_read_description().
#define cpt_si_addr _sifields._sigfault._addr |
Definition at line 739 of file amd64-linux-nat.c.
#define cpt_si_band _sifields._sigpoll._band |
Definition at line 740 of file amd64-linux-nat.c.
#define cpt_si_fd _sifields._sigpoll._fd |
Definition at line 741 of file amd64-linux-nat.c.
#define cpt_si_overrun _sifields._timer._overrun |
Definition at line 734 of file amd64-linux-nat.c.
#define cpt_si_pid _sifields._kill._pid |
Definition at line 731 of file amd64-linux-nat.c.
#define cpt_si_ptr _sifields._rt._sigval.sival_ptr |
Definition at line 738 of file amd64-linux-nat.c.
#define cpt_si_status _sifields._sigchld._status |
Definition at line 735 of file amd64-linux-nat.c.
#define cpt_si_stime _sifields._sigchld._stime |
Definition at line 737 of file amd64-linux-nat.c.
#define cpt_si_timerid _sifields._timer._tid |
Definition at line 733 of file amd64-linux-nat.c.
#define cpt_si_uid _sifields._kill._uid |
Definition at line 732 of file amd64-linux-nat.c.
#define cpt_si_utime _sifields._sigchld._utime |
Definition at line 736 of file amd64-linux-nat.c.
#define PTRACE_ARCH_PRCTL 30 |
Referenced by ps_get_thread_area().
#define PTRACE_GET_THREAD_AREA 25 |
Referenced by ps_get_thread_area().
#define PTRACE_GETREGSET 0x4204 |
Definition at line 62 of file amd64-linux-nat.c.
Referenced by aarch64_linux_get_debug_reg_capacity(), amd64_linux_fetch_inferior_registers(), amd64_linux_read_description(), amd64_linux_store_inferior_registers(), fetch_fpregs_from_thread(), fetch_gregs_from_thread(), ps_get_thread_area(), store_fpregs_to_thread(), and store_gregs_to_thread().
#define PTRACE_SETREGSET 0x4205 |
Definition at line 66 of file amd64-linux-nat.c.
Referenced by aarch64_linux_set_debug_regs(), amd64_linux_store_inferior_registers(), store_fpregs_to_thread(), and store_gregs_to_thread().
#define si_overrun si_timer2 |
Definition at line 749 of file amd64-linux-nat.c.
#define si_timerid si_timer1 |
Definition at line 746 of file amd64-linux-nat.c.
typedef int compat_clock_t |
Definition at line 594 of file amd64-linux-nat.c.
typedef int compat_int_t |
Definition at line 589 of file amd64-linux-nat.c.
typedef struct compat_siginfo compat_siginfo_t |
typedef union compat_sigval compat_sigval_t |
typedef int compat_time_t |
Definition at line 592 of file amd64-linux-nat.c.
typedef int compat_timer_t |
Definition at line 593 of file amd64-linux-nat.c.
typedef unsigned int compat_uptr_t |
Definition at line 590 of file amd64-linux-nat.c.
typedef struct compat_x32_clock compat_x32_clock_t |
typedef struct compat_x32_siginfo compat_x32_siginfo_t |
void _initialize_amd64_linux_nat | ( | void | ) |
Definition at line 1170 of file amd64-linux-nat.c.
References amd64_linux_child_post_startup_inferior(), amd64_linux_disable_btrace(), amd64_linux_dr_get_addr(), amd64_linux_dr_get_control(), amd64_linux_dr_get_status(), amd64_linux_dr_set_addr(), amd64_linux_dr_set_control(), amd64_linux_enable_btrace(), amd64_linux_fetch_inferior_registers(), amd64_linux_gregset32_reg_offset, amd64_linux_gregset_reg_offset, amd64_linux_new_fork(), amd64_linux_new_thread(), AMD64_LINUX_NUM_REGS, amd64_linux_prepare_to_resume(), amd64_linux_read_description(), amd64_linux_siginfo_fixup(), amd64_linux_store_inferior_registers(), amd64_linux_teardown_btrace(), amd64_native_gregset32_num_regs, amd64_native_gregset32_reg_offset, amd64_native_gregset64_num_regs, amd64_native_gregset64_reg_offset, gdb_assert, i386_dr_low_type::get_addr, i386_dr_low_type::get_control, i386_dr_low_type::get_status, i386_dr_low, i386_forget_process(), I386_LINUX_NUM_REGS, i386_set_debug_register_length(), i386_use_watchpoints(), linux_nat_add_target(), linux_nat_set_forget_process(), linux_nat_set_new_fork(), linux_nat_set_new_thread(), linux_nat_set_prepare_to_resume(), linux_nat_set_siginfo_fixup(), linux_supports_btrace(), linux_target(), i386_dr_low_type::set_addr, i386_dr_low_type::set_control, super_post_startup_inferior, target_ops::to_disable_btrace, target_ops::to_enable_btrace, target_ops::to_fetch_registers, target_ops::to_post_startup_inferior, target_ops::to_read_description, target_ops::to_store_registers, target_ops::to_supports_btrace, and target_ops::to_teardown_btrace.
static void amd64_linux_child_post_startup_inferior | ( | ptid_t | ptid | ) | [static] |
Definition at line 572 of file amd64-linux-nat.c.
References i386_cleanup_dregs(), and super_post_startup_inferior.
Referenced by _initialize_amd64_linux_nat().
static void amd64_linux_disable_btrace | ( | struct btrace_target_info * | tinfo | ) | [static] |
Definition at line 1149 of file amd64-linux-nat.c.
References _, error(), linux_disable_btrace(), and safe_strerror().
Referenced by _initialize_amd64_linux_nat().
static unsigned long amd64_linux_dr_get | ( | ptid_t | ptid, |
int | regnum | ||
) | [static] |
Definition at line 279 of file amd64-linux-nat.c.
References _, perror_with_name(), ptid_get_lwp(), ptid_get_pid(), and ptrace().
Referenced by amd64_linux_dr_get_addr(), amd64_linux_dr_get_control(), and amd64_linux_dr_get_status().
static CORE_ADDR amd64_linux_dr_get_addr | ( | int | regnum | ) | [static] |
Definition at line 318 of file amd64-linux-nat.c.
References amd64_linux_dr_get(), DR_FIRSTADDR, DR_LASTADDR, gdb_assert, and inferior_ptid.
Referenced by _initialize_amd64_linux_nat().
static unsigned long amd64_linux_dr_get_control | ( | void | ) | [static] |
Definition at line 329 of file amd64-linux-nat.c.
References amd64_linux_dr_get(), DR_CONTROL, and inferior_ptid.
Referenced by _initialize_amd64_linux_nat().
static unsigned long amd64_linux_dr_get_status | ( | void | ) | [static] |
Definition at line 337 of file amd64-linux-nat.c.
References amd64_linux_dr_get(), DR_STATUS, and inferior_ptid.
Referenced by _initialize_amd64_linux_nat().
static void amd64_linux_dr_set | ( | ptid_t | ptid, |
int | regnum, | ||
unsigned long | value | ||
) | [static] |
Definition at line 300 of file amd64-linux-nat.c.
References _, perror_with_name(), ptid_get_lwp(), ptid_get_pid(), and ptrace().
Referenced by amd64_linux_prepare_to_resume().
static void amd64_linux_dr_set_addr | ( | int | regnum, |
CORE_ADDR | addr | ||
) | [static] |
Definition at line 378 of file amd64-linux-nat.c.
References DR_FIRSTADDR, DR_LASTADDR, gdb_assert, inferior_ptid, iterate_over_lwps(), pid_to_ptid(), ptid_get_pid(), and update_debug_registers_callback().
Referenced by _initialize_amd64_linux_nat().
static void amd64_linux_dr_set_control | ( | unsigned long | control | ) | [static] |
Definition at line 367 of file amd64-linux-nat.c.
References inferior_ptid, iterate_over_lwps(), pid_to_ptid(), ptid_get_pid(), and update_debug_registers_callback().
Referenced by _initialize_amd64_linux_nat().
static struct btrace_target_info* amd64_linux_enable_btrace | ( | ptid_t | ptid | ) | [static, read] |
Definition at line 1127 of file amd64-linux-nat.c.
References _, error(), gdbarch_ptr_bit(), linux_enable_btrace(), btrace_target_info::ptr_bits, safe_strerror(), target_pid_to_str(), and target_thread_architecture.
Referenced by _initialize_amd64_linux_nat().
static void amd64_linux_fetch_inferior_registers | ( | struct target_ops * | ops, |
struct regcache * | regcache, | ||
int | regnum | ||
) | [static] |
Definition at line 160 of file amd64-linux-nat.c.
References _, amd64_native_gregset_supplies_p(), amd64_supply_fxsave(), amd64_supply_native_gregset(), amd64_supply_xsave(), get_regcache_arch(), have_ptrace_getregset, I386_XSTATE_MAX_SIZE, inferior_ptid, perror_with_name(), ptid_get_lwp(), ptid_get_pid(), ptrace(), PTRACE_GETFPREGS, PTRACE_GETREGS, and PTRACE_GETREGSET.
Referenced by _initialize_amd64_linux_nat().
static void amd64_linux_new_fork | ( | struct lwp_info * | parent, |
pid_t | child_pid | ||
) | [static] |
Definition at line 448 of file amd64-linux-nat.c.
References lwp_info::arch_private, i386_debug_reg_state(), lwp_info::ptid, and ptid_get_pid().
Referenced by _initialize_amd64_linux_nat().
static void amd64_linux_new_thread | ( | struct lwp_info * | lp | ) | [static] |
Definition at line 436 of file amd64-linux-nat.c.
References lwp_info::arch_private, and arch_lwp_info::debug_registers_changed.
Referenced by _initialize_amd64_linux_nat().
static void amd64_linux_prepare_to_resume | ( | struct lwp_info * | lwp | ) | [static] |
Definition at line 391 of file amd64-linux-nat.c.
References amd64_linux_dr_set(), lwp_info::arch_private, arch_lwp_info::debug_registers_changed, DR_CONTROL, i386_debug_reg_state::dr_control_mirror, DR_FIRSTADDR, DR_LASTADDR, i386_debug_reg_state::dr_mirror, i386_debug_reg_state::dr_ref_count, DR_STATUS, i386_debug_reg_state(), lwp_info::ptid, ptid_get_pid(), and lwp_info::stopped_by_watchpoint.
Referenced by _initialize_amd64_linux_nat().
static struct target_desc* amd64_linux_read_description | ( | struct target_ops * | ops | ) | [static, read] |
Definition at line 1039 of file amd64-linux-nat.c.
References _, AMD64_LINUX_USER64_CS, AMD64_LINUX_X32_DS, error(), have_ptrace_getregset, I386_LINUX_XSAVE_XCR0_OFFSET, I386_XSTATE_AVX_MASK, I386_XSTATE_SSE_SIZE, inferior_ptid, gdb::printing::long, perror_with_name(), ptid_get_lwp(), ptid_get_pid(), ptrace(), PTRACE_GETREGSET, tdesc_amd64_avx_linux, tdesc_amd64_linux, tdesc_i386_avx_linux, tdesc_i386_linux, tdesc_x32_avx_linux, and tdesc_x32_linux.
Referenced by _initialize_amd64_linux_nat().
static int amd64_linux_siginfo_fixup | ( | siginfo_t * | native, |
gdb_byte * | inf, | ||
int | direction | ||
) | [static] |
Definition at line 989 of file amd64-linux-nat.c.
References compat_siginfo_from_siginfo(), compat_x32_siginfo_from_siginfo(), gdb_assert, gdbarch_addr_bit(), gdbarch_bfd_arch_info(), get_current_frame(), get_frame_arch(), siginfo_from_compat_siginfo(), and siginfo_from_compat_x32_siginfo().
Referenced by _initialize_amd64_linux_nat().
static void amd64_linux_store_inferior_registers | ( | struct target_ops * | ops, |
struct regcache * | regcache, | ||
int | regnum | ||
) | [static] |
Definition at line 215 of file amd64-linux-nat.c.
References _, amd64_collect_fxsave(), amd64_collect_native_gregset(), amd64_collect_xsave(), amd64_native_gregset_supplies_p(), get_regcache_arch(), have_ptrace_getregset, I386_XSTATE_MAX_SIZE, inferior_ptid, perror_with_name(), ptid_get_lwp(), ptid_get_pid(), ptrace(), PTRACE_GETFPREGS, PTRACE_GETREGS, PTRACE_GETREGSET, PTRACE_SETFPREGS, PTRACE_SETREGS, and PTRACE_SETREGSET.
Referenced by _initialize_amd64_linux_nat().
static void amd64_linux_teardown_btrace | ( | struct btrace_target_info * | tinfo | ) | [static] |
Definition at line 1160 of file amd64-linux-nat.c.
References linux_disable_btrace().
Referenced by _initialize_amd64_linux_nat().
static void compat_siginfo_from_siginfo | ( | compat_siginfo_t * | to, |
siginfo_t * | from | ||
) | [static] |
Definition at line 753 of file amd64-linux-nat.c.
References memset(), compat_siginfo::si_code, compat_siginfo::si_errno, and compat_siginfo::si_signo.
Referenced by amd64_linux_siginfo_fixup().
static void compat_x32_siginfo_from_siginfo | ( | compat_x32_siginfo_t * | to, |
siginfo_t * | from | ||
) | [static] |
Definition at line 865 of file amd64-linux-nat.c.
References memcpy(), memset(), compat_x32_siginfo::si_code, compat_x32_siginfo::si_errno, and compat_x32_siginfo::si_signo.
Referenced by amd64_linux_siginfo_fixup().
void fill_fpregset | ( | const struct regcache * | regcache, |
elf_fpregset_t * | fpregsetp, | ||
int | regnum | ||
) |
Definition at line 146 of file amd64-linux-nat.c.
References amd64_collect_fxsave().
void fill_gregset | ( | const struct regcache * | regcache, |
elf_gregset_t * | gregsetp, | ||
int | regnum | ||
) |
Definition at line 124 of file amd64-linux-nat.c.
References amd64_collect_native_gregset().
ps_err_e ps_get_thread_area | ( | const struct ps_prochandle * | ph, |
lwpid_t | lwpid, | ||
int | idx, | ||
void ** | base | ||
) |
Definition at line 485 of file amd64-linux-nat.c.
References ELF_NGREG, gdb_assert, gdbarch_bfd_arch_info(), PS_BADADDR, PS_ERR, PS_OK, ptrace(), PTRACE_ARCH_PRCTL, PTRACE_GET_THREAD_AREA, and target_gdbarch().
static void siginfo_from_compat_siginfo | ( | siginfo_t * | to, |
compat_siginfo_t * | from | ||
) | [static] |
Definition at line 809 of file amd64-linux-nat.c.
References memset(), compat_siginfo::si_code, compat_siginfo::si_errno, and compat_siginfo::si_signo.
Referenced by amd64_linux_siginfo_fixup().
static void siginfo_from_compat_x32_siginfo | ( | siginfo_t * | to, |
compat_x32_siginfo_t * | from | ||
) | [static] |
Definition at line 924 of file amd64-linux-nat.c.
References memcpy(), memset(), compat_x32_siginfo::si_code, compat_x32_siginfo::si_errno, and compat_x32_siginfo::si_signo.
Referenced by amd64_linux_siginfo_fixup().
void supply_fpregset | ( | struct regcache * | regcache, |
const elf_fpregset_t * | fpregsetp | ||
) |
Definition at line 136 of file amd64-linux-nat.c.
References amd64_supply_fxsave().
void supply_gregset | ( | struct regcache * | regcache, |
const elf_gregset_t * | gregsetp | ||
) |
Definition at line 114 of file amd64-linux-nat.c.
References amd64_supply_native_gregset().
static int update_debug_registers_callback | ( | struct lwp_info * | lwp, |
void * | arg | ||
) | [static] |
Definition at line 346 of file amd64-linux-nat.c.
References lwp_info::arch_private, arch_lwp_info::debug_registers_changed, linux_stop_lwp(), and lwp_info::stopped.
Referenced by amd64_linux_dr_set_addr(), and amd64_linux_dr_set_control().
int amd64_linux_gregset32_reg_offset[] [static] |
{ RAX * 8, RCX * 8, RDX * 8, RBX * 8, RSP * 8, RBP * 8, RSI * 8, RDI * 8, RIP * 8, EFLAGS * 8, CS * 8, SS * 8, DS * 8, ES * 8, FS * 8, GS * 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, ORIG_RAX * 8 }
Definition at line 89 of file amd64-linux-nat.c.
Referenced by _initialize_amd64_linux_nat().
int have_ptrace_getregset = -1 [static] |
Definition at line 78 of file amd64-linux-nat.c.
Referenced by amd64_linux_fetch_inferior_registers(), amd64_linux_read_description(), and amd64_linux_store_inferior_registers().
void(* super_post_startup_inferior)(ptid_t ptid) [static] |
Definition at line 569 of file amd64-linux-nat.c.
Referenced by _initialize_amd64_linux_nat(), and amd64_linux_child_post_startup_inferior().