GDB (xrefs)
|
#include "defs.h"
#include "i386-nat.h"
#include "inferior.h"
#include "gdbcore.h"
#include "regcache.h"
#include "regset.h"
#include "target.h"
#include "linux-nat.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/user.h>
#include <sys/procfs.h>
#include "gregset.h"
#include "i387-tdep.h"
#include "i386-tdep.h"
#include "i386-linux-tdep.h"
#include "gdb_proc_service.h"
#include "i386-xstate.h"
Go to the source code of this file.
#define GETFPXREGS_SUPPLIES | ( | regno | ) | (I386_ST0_REGNUM <= (regno) && (regno) < I386_SSE_NUM_REGS) |
Definition at line 101 of file i386-linux-nat.c.
Referenced by i386_linux_fetch_inferior_registers(), and i386_linux_store_inferior_registers().
#define GETREGS_SUPPLIES | ( | regno | ) | ((0 <= (regno) && (regno) <= 15) || (regno) == I386_LINUX_ORIG_EAX_REGNUM) |
Definition at line 98 of file i386-linux-nat.c.
Referenced by i386_linux_fetch_inferior_registers(), and i386_linux_store_inferior_registers().
#define GETXSTATEREGS_SUPPLIES | ( | regno | ) | (I386_ST0_REGNUM <= (regno) && (regno) < I386_AVX_NUM_REGS) |
Definition at line 104 of file i386-linux-nat.c.
Referenced by i386_linux_fetch_inferior_registers(), and i386_linux_store_inferior_registers().
#define LINUX_SIGCONTEXT_EFLAGS_OFFSET (64) |
Definition at line 910 of file i386-linux-nat.c.
Referenced by i386_linux_resume().
#define LINUX_SYSCALL_LEN (sizeof linux_syscall) |
Definition at line 894 of file i386-linux-nat.c.
Referenced by i386_linux_resume().
#define LINUX_SYSCALL_REGNUM I386_EAX_REGNUM |
Definition at line 897 of file i386-linux-nat.c.
Referenced by i386_linux_resume().
#define ORIG_EAX -1 |
Definition at line 44 of file i386-linux-nat.c.
#define PTRACE_GET_THREAD_AREA 25 |
#define PTRACE_GETREGSET 0x4204 |
Definition at line 64 of file i386-linux-nat.c.
Referenced by fetch_xstateregs(), i386_linux_read_description(), and store_xstateregs().
#define PTRACE_SETREGSET 0x4205 |
Definition at line 68 of file i386-linux-nat.c.
Referenced by store_xstateregs().
#define SYS_rt_sigreturn 0xad |
Definition at line 906 of file i386-linux-nat.c.
Referenced by i386_linux_resume().
#define SYS_sigreturn 0x77 |
Definition at line 903 of file i386-linux-nat.c.
Referenced by i386_linux_resume(), and init_syscall_table().
void _initialize_i386_linux_nat | ( | void | ) |
Definition at line 1097 of file i386-linux-nat.c.
References 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_child_post_startup_inferior(), i386_linux_disable_btrace(), i386_linux_dr_get_addr(), i386_linux_dr_get_control(), i386_linux_dr_get_status(), i386_linux_dr_set_addr(), i386_linux_dr_set_control(), i386_linux_enable_btrace(), i386_linux_fetch_inferior_registers(), i386_linux_new_fork(), i386_linux_new_thread(), i386_linux_prepare_to_resume(), i386_linux_read_description(), i386_linux_resume(), i386_linux_store_inferior_registers(), i386_linux_teardown_btrace(), 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_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_resume, target_ops::to_store_registers, target_ops::to_supports_btrace, and target_ops::to_teardown_btrace.
static void fetch_fpregs | ( | struct regcache * | regcache, |
int | tid | ||
) | [static] |
Definition at line 349 of file i386-linux-nat.c.
Referenced by i386_linux_fetch_inferior_registers().
static int fetch_fpxregs | ( | struct regcache * | regcache, |
int | tid | ||
) | [static] |
Definition at line 477 of file i386-linux-nat.c.
Referenced by i386_linux_fetch_inferior_registers().
static void fetch_register | ( | struct regcache * | regcache, |
int | regno | ||
) | [static] |
Definition at line 138 of file i386-linux-nat.c.
References _, error(), gdb_assert, gdbarch_register_name(), get_regcache_arch(), have_ptrace_getregs, i386_linux_gregset_reg_offset, inferior_ptid, ptid_get_lwp(), ptid_get_pid(), ptrace(), regcache_raw_supply(), and safe_strerror().
Referenced by i386_linux_fetch_inferior_registers().
static void fetch_regs | ( | struct regcache * | regcache, |
int | tid | ||
) | [static] |
Definition at line 285 of file i386-linux-nat.c.
Referenced by i386_linux_fetch_inferior_registers().
static int fetch_xstateregs | ( | struct regcache * | regcache, |
int | tid | ||
) | [static] |
Definition at line 368 of file i386-linux-nat.c.
References _, have_ptrace_getregset, I386_XSTATE_MAX_SIZE, i387_supply_xsave(), perror_with_name(), ptrace(), and PTRACE_GETREGSET.
Referenced by i386_linux_fetch_inferior_registers().
void fill_fpregset | ( | const struct regcache * | regcache, |
elf_fpregset_t * | fpregsetp, | ||
int | regno | ||
) |
Definition at line 307 of file i386-linux-nat.c.
References i387_collect_fsave().
void fill_gregset | ( | const struct regcache * | regcache, |
elf_gregset_t * | gregsetp, | ||
int | regno | ||
) |
Definition at line 221 of file i386-linux-nat.c.
References gdbarch_num_regs(), get_regcache_arch(), i386_linux_gregset_reg_offset, I386_LINUX_ORIG_EAX_REGNUM, I386_NUM_GREGS, and regcache_raw_collect().
static void i386_linux_child_post_startup_inferior | ( | ptid_t | ptid | ) | [static] |
Definition at line 988 of file i386-linux-nat.c.
References i386_cleanup_dregs(), and super_post_startup_inferior.
Referenced by _initialize_i386_linux_nat().
static void i386_linux_disable_btrace | ( | struct btrace_target_info * | tinfo | ) | [static] |
Definition at line 1076 of file i386-linux-nat.c.
References _, error(), linux_disable_btrace(), and safe_strerror().
Referenced by _initialize_i386_linux_nat().
static unsigned long i386_linux_dr_get | ( | ptid_t | ptid, |
int | regnum | ||
) | [static] |
Definition at line 650 of file i386-linux-nat.c.
References _, perror_with_name(), ptid_get_lwp(), ptid_get_pid(), and ptrace().
Referenced by i386_linux_dr_get_addr(), i386_linux_dr_get_control(), and i386_linux_dr_get_status().
static CORE_ADDR i386_linux_dr_get_addr | ( | int | regnum | ) | [static] |
Definition at line 689 of file i386-linux-nat.c.
References DR_FIRSTADDR, DR_LASTADDR, gdb_assert, i386_linux_dr_get(), and inferior_ptid.
Referenced by _initialize_i386_linux_nat().
static unsigned long i386_linux_dr_get_control | ( | void | ) | [static] |
Definition at line 700 of file i386-linux-nat.c.
References DR_CONTROL, i386_linux_dr_get(), and inferior_ptid.
Referenced by _initialize_i386_linux_nat().
static unsigned long i386_linux_dr_get_status | ( | void | ) | [static] |
Definition at line 708 of file i386-linux-nat.c.
References DR_STATUS, i386_linux_dr_get(), and inferior_ptid.
Referenced by _initialize_i386_linux_nat().
static void i386_linux_dr_set | ( | ptid_t | ptid, |
int | regnum, | ||
unsigned long | value | ||
) | [static] |
Definition at line 671 of file i386-linux-nat.c.
References _, perror_with_name(), ptid_get_lwp(), ptid_get_pid(), and ptrace().
Referenced by i386_linux_prepare_to_resume().
static void i386_linux_dr_set_addr | ( | int | regnum, |
CORE_ADDR | addr | ||
) | [static] |
Definition at line 749 of file i386-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_i386_linux_nat().
static void i386_linux_dr_set_control | ( | unsigned long | control | ) | [static] |
Definition at line 738 of file i386-linux-nat.c.
References inferior_ptid, iterate_over_lwps(), pid_to_ptid(), ptid_get_pid(), and update_debug_registers_callback().
Referenced by _initialize_i386_linux_nat().
static struct btrace_target_info* i386_linux_enable_btrace | ( | ptid_t | ptid | ) | [static, read] |
Definition at line 1054 of file i386-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_i386_linux_nat().
static void i386_linux_fetch_inferior_registers | ( | struct target_ops * | ops, |
struct regcache * | regcache, | ||
int | regno | ||
) | [static] |
Definition at line 498 of file i386-linux-nat.c.
References _, fetch_fpregs(), fetch_fpxregs(), fetch_register(), fetch_regs(), fetch_xstateregs(), gdbarch_num_regs(), get_regcache_arch(), GETFPXREGS_SUPPLIES, GETREGS_SUPPLIES, GETXSTATEREGS_SUPPLIES, have_ptrace_getregs, inferior_ptid, internal_error(), ptid_get_lwp(), and ptid_get_pid().
Referenced by _initialize_i386_linux_nat().
static void i386_linux_new_fork | ( | struct lwp_info * | parent, |
pid_t | child_pid | ||
) | [static] |
Definition at line 815 of file i386-linux-nat.c.
References lwp_info::arch_private, i386_debug_reg_state(), lwp_info::ptid, and ptid_get_pid().
Referenced by _initialize_i386_linux_nat().
static void i386_linux_new_thread | ( | struct lwp_info * | lp | ) | [static] |
Definition at line 803 of file i386-linux-nat.c.
References lwp_info::arch_private, and arch_lwp_info::debug_registers_changed.
Referenced by _initialize_i386_linux_nat().
static void i386_linux_prepare_to_resume | ( | struct lwp_info * | lwp | ) | [static] |
Definition at line 762 of file i386-linux-nat.c.
References 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(), i386_linux_dr_set(), lwp_info::ptid, ptid_get_pid(), and lwp_info::stopped_by_watchpoint.
Referenced by _initialize_i386_linux_nat().
static struct target_desc* i386_linux_read_description | ( | struct target_ops * | ops | ) | [static, read] |
Definition at line 997 of file i386-linux-nat.c.
References have_ptrace_getfpxregs, have_ptrace_getregset, I386_LINUX_XSAVE_XCR0_OFFSET, I386_XSTATE_AVX_MASK, I386_XSTATE_SSE_SIZE, inferior_ptid, gdb::printing::long, ptid_get_lwp(), ptid_get_pid(), ptrace(), PTRACE_GETREGSET, tdesc_i386_avx_linux, tdesc_i386_linux, and tdesc_i386_mmx_linux.
Referenced by _initialize_i386_linux_nat().
static void i386_linux_resume | ( | struct target_ops * | ops, |
ptid_t | ptid, | ||
int | step, | ||
enum gdb_signal | signal | ||
) | [static] |
Definition at line 917 of file i386-linux-nat.c.
References gdbarch::byte_order, catch_syscall_enabled(), gdb_signal_to_host(), gdbarch_byte_order(), gdbarch_pc_regnum(), get_regcache_arch(), get_thread_regcache(), I386_ESP_REGNUM, LINUX_SIGCONTEXT_EFLAGS_OFFSET, LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, memcmp(), perror_with_name(), pid_to_ptid(), ptid_get_pid(), ptrace(), read_memory(), read_memory_unsigned_integer(), regcache_cooked_read_unsigned(), sp, SYS_rt_sigreturn, SYS_sigreturn, target_read_memory(), ULONGEST, and write_memory().
Referenced by _initialize_i386_linux_nat().
static void i386_linux_store_inferior_registers | ( | struct target_ops * | ops, |
struct regcache * | regcache, | ||
int | regno | ||
) | [static] |
Definition at line 579 of file i386-linux-nat.c.
References _, gdbarch_num_regs(), get_regcache_arch(), GETFPXREGS_SUPPLIES, GETREGS_SUPPLIES, GETXSTATEREGS_SUPPLIES, have_ptrace_getregs, inferior_ptid, internal_error(), ptid_get_lwp(), ptid_get_pid(), store_fpregs(), store_fpxregs(), store_register(), store_regs(), and store_xstateregs().
Referenced by _initialize_i386_linux_nat().
static void i386_linux_teardown_btrace | ( | struct btrace_target_info * | tinfo | ) | [static] |
Definition at line 1087 of file i386-linux-nat.c.
References linux_disable_btrace().
Referenced by _initialize_i386_linux_nat().
ps_err_e ps_get_thread_area | ( | const struct ps_prochandle * | ph, |
lwpid_t | lwpid, | ||
int | idx, | ||
void ** | base | ||
) |
Definition at line 852 of file i386-linux-nat.c.
References gdb_assert, PS_ERR, PS_OK, ptrace(), and PTRACE_GET_THREAD_AREA.
static void store_fpregs | ( | const struct regcache * | regcache, |
int | tid, | ||
int | regno | ||
) | [static] |
Definition at line 354 of file i386-linux-nat.c.
Referenced by i386_linux_store_inferior_registers().
Definition at line 483 of file i386-linux-nat.c.
Referenced by i386_linux_store_inferior_registers().
static void store_register | ( | const struct regcache * | regcache, |
int | regno | ||
) | [static] |
Definition at line 169 of file i386-linux-nat.c.
References _, error(), gdb_assert, gdbarch_register_name(), get_regcache_arch(), have_ptrace_getregs, i386_linux_gregset_reg_offset, inferior_ptid, ptid_get_lwp(), ptid_get_pid(), ptrace(), regcache_raw_collect(), and safe_strerror().
Referenced by i386_linux_store_inferior_registers().
static void store_regs | ( | const struct regcache * | regcache, |
int | tid, | ||
int | regno | ||
) | [static] |
Definition at line 286 of file i386-linux-nat.c.
Referenced by i386_linux_store_inferior_registers().
Definition at line 391 of file i386-linux-nat.c.
References _, have_ptrace_getregset, I386_XSTATE_MAX_SIZE, i387_collect_xsave(), perror_with_name(), ptrace(), PTRACE_GETREGSET, and PTRACE_SETREGSET.
Referenced by i386_linux_store_inferior_registers().
void supply_fpregset | ( | struct regcache * | regcache, |
const elf_fpregset_t * | fpregsetp | ||
) |
Definition at line 297 of file i386-linux-nat.c.
References i387_supply_fsave().
void supply_gregset | ( | struct regcache * | regcache, |
const elf_gregset_t * | gregsetp | ||
) |
Definition at line 201 of file i386-linux-nat.c.
References gdbarch_num_regs(), get_regcache_arch(), i386_linux_gregset_reg_offset, I386_LINUX_ORIG_EAX_REGNUM, I386_NUM_GREGS, and regcache_raw_supply().
static int update_debug_registers_callback | ( | struct lwp_info * | lwp, |
void * | arg | ||
) | [static] |
Definition at line 717 of file i386-linux-nat.c.
References lwp_info::arch_private, arch_lwp_info::debug_registers_changed, linux_stop_lwp(), and lwp_info::stopped.
Referenced by i386_linux_dr_set_addr(), and i386_linux_dr_set_control().
0
Definition at line 124 of file i386-linux-nat.c.
Referenced by i386_linux_read_description().
0
Definition at line 108 of file i386-linux-nat.c.
Referenced by fetch_register(), i386_linux_fetch_inferior_registers(), i386_linux_store_inferior_registers(), m68k_linux_fetch_inferior_registers(), m68k_linux_store_inferior_registers(), and store_register().
int have_ptrace_getregset = -1 [static] |
Definition at line 80 of file i386-linux-nat.c.
Referenced by fetch_xstateregs(), i386_linux_read_description(), and store_xstateregs().
const unsigned char linux_syscall[] = { 0xcd, 0x80 } [static] |
Definition at line 892 of file i386-linux-nat.c.
void(* super_post_startup_inferior)(ptid_t ptid) [static] |
Definition at line 985 of file i386-linux-nat.c.
Referenced by _initialize_i386_linux_nat(), and i386_linux_child_post_startup_inferior().