GDB (xrefs)
Classes | Defines | Typedefs | Functions | Variables
/home/stan/gdb/src/gdb/amd64-linux-nat.c File Reference
#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.

Classes

struct  arch_lwp_info
struct  compat_timeval
union  compat_sigval
struct  compat_siginfo
struct  compat_x32_clock
struct  compat_x32_siginfo

Defines

#define PTRACE_GETREGSET   0x4204
#define PTRACE_SETREGSET   0x4205
#define PTRACE_GET_THREAD_AREA   25
#define PTRACE_ARCH_PRCTL   30
#define cpt_si_pid   _sifields._kill._pid
#define cpt_si_uid   _sifields._kill._uid
#define cpt_si_timerid   _sifields._timer._tid
#define cpt_si_overrun   _sifields._timer._overrun
#define cpt_si_status   _sifields._sigchld._status
#define cpt_si_utime   _sifields._sigchld._utime
#define cpt_si_stime   _sifields._sigchld._stime
#define cpt_si_ptr   _sifields._rt._sigval.sival_ptr
#define cpt_si_addr   _sifields._sigfault._addr
#define cpt_si_band   _sifields._sigpoll._band
#define cpt_si_fd   _sifields._sigpoll._fd
#define si_timerid   si_timer1
#define si_overrun   si_timer2
#define AMD64_LINUX_USER64_CS   0x33
#define AMD64_LINUX_X32_DS   0x2b

Typedefs

typedef int compat_int_t
typedef unsigned int compat_uptr_t
typedef int compat_time_t
typedef int compat_timer_t
typedef int compat_clock_t
typedef union compat_sigval compat_sigval_t
typedef struct compat_siginfo compat_siginfo_t
typedef struct compat_x32_clock compat_x32_clock_t
typedef struct compat_x32_siginfo compat_x32_siginfo_t

Functions

void supply_gregset (struct regcache *regcache, const elf_gregset_t *gregsetp)
void fill_gregset (const struct regcache *regcache, elf_gregset_t *gregsetp, int regnum)
void supply_fpregset (struct regcache *regcache, const elf_fpregset_t *fpregsetp)
void fill_fpregset (const struct regcache *regcache, elf_fpregset_t *fpregsetp, int regnum)
static void amd64_linux_fetch_inferior_registers (struct target_ops *ops, struct regcache *regcache, int regnum)
static void amd64_linux_store_inferior_registers (struct target_ops *ops, struct regcache *regcache, int regnum)
static unsigned long amd64_linux_dr_get (ptid_t ptid, int regnum)
static void amd64_linux_dr_set (ptid_t ptid, int regnum, unsigned long value)
static CORE_ADDR amd64_linux_dr_get_addr (int regnum)
static unsigned long amd64_linux_dr_get_control (void)
static unsigned long amd64_linux_dr_get_status (void)
static int update_debug_registers_callback (struct lwp_info *lwp, void *arg)
static void amd64_linux_dr_set_control (unsigned long control)
static void amd64_linux_dr_set_addr (int regnum, CORE_ADDR addr)
static void amd64_linux_prepare_to_resume (struct lwp_info *lwp)
static void amd64_linux_new_thread (struct lwp_info *lp)
static void amd64_linux_new_fork (struct lwp_info *parent, pid_t child_pid)
ps_err_e ps_get_thread_area (const struct ps_prochandle *ph, lwpid_t lwpid, int idx, void **base)
static void amd64_linux_child_post_startup_inferior (ptid_t ptid)
static void compat_siginfo_from_siginfo (compat_siginfo_t *to, siginfo_t *from)
static void siginfo_from_compat_siginfo (siginfo_t *to, compat_siginfo_t *from)
static void compat_x32_siginfo_from_siginfo (compat_x32_siginfo_t *to, siginfo_t *from)
static void siginfo_from_compat_x32_siginfo (siginfo_t *to, compat_x32_siginfo_t *from)
static int amd64_linux_siginfo_fixup (siginfo_t *native, gdb_byte *inf, int direction)
static struct target_descamd64_linux_read_description (struct target_ops *ops)
static struct btrace_target_infoamd64_linux_enable_btrace (ptid_t ptid)
static void amd64_linux_disable_btrace (struct btrace_target_info *tinfo)
static void amd64_linux_teardown_btrace (struct btrace_target_info *tinfo)
void _initialize_amd64_linux_nat (void)

Variables

static int have_ptrace_getregset = -1
static int amd64_linux_gregset32_reg_offset []
static void(* super_post_startup_inferior )(ptid_t ptid)

Define Documentation

#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
#define PTRACE_SETREGSET   0x4205
#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 Documentation

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 int compat_time_t

Definition at line 592 of file amd64-linux-nat.c.

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.


Function Documentation

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]
static CORE_ADDR amd64_linux_dr_get_addr ( int  regnum) [static]
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]
static void amd64_linux_dr_set_control ( unsigned long  control) [static]
static struct btrace_target_info* amd64_linux_enable_btrace ( ptid_t  ptid) [static, read]
static void amd64_linux_fetch_inferior_registers ( struct target_ops ops,
struct regcache regcache,
int  regnum 
) [static]
static void amd64_linux_new_fork ( struct lwp_info parent,
pid_t  child_pid 
) [static]
static void amd64_linux_new_thread ( struct lwp_info lp) [static]
static void amd64_linux_prepare_to_resume ( struct lwp_info lwp) [static]
static struct target_desc* amd64_linux_read_description ( struct target_ops ops) [static, read]
static int amd64_linux_siginfo_fixup ( siginfo_t *  native,
gdb_byte inf,
int  direction 
) [static]
static void amd64_linux_store_inferior_registers ( struct target_ops ops,
struct regcache regcache,
int  regnum 
) [static]
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]
static void compat_x32_siginfo_from_siginfo ( compat_x32_siginfo_t to,
siginfo_t *  from 
) [static]
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 
)
static void siginfo_from_compat_siginfo ( siginfo_t *  to,
compat_siginfo_t from 
) [static]
static void siginfo_from_compat_x32_siginfo ( siginfo_t *  to,
compat_x32_siginfo_t from 
) [static]
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]

Variable Documentation

Initial value:
{
  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]
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines