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

Classes

struct  arch_lwp_info

Defines

#define ORIG_EAX   -1
#define PTRACE_GETREGSET   0x4204
#define PTRACE_SETREGSET   0x4205
#define GETREGS_SUPPLIES(regno)   ((0 <= (regno) && (regno) <= 15) || (regno) == I386_LINUX_ORIG_EAX_REGNUM)
#define GETFPXREGS_SUPPLIES(regno)   (I386_ST0_REGNUM <= (regno) && (regno) < I386_SSE_NUM_REGS)
#define GETXSTATEREGS_SUPPLIES(regno)   (I386_ST0_REGNUM <= (regno) && (regno) < I386_AVX_NUM_REGS)
#define PTRACE_GET_THREAD_AREA   25
#define LINUX_SYSCALL_LEN   (sizeof linux_syscall)
#define LINUX_SYSCALL_REGNUM   I386_EAX_REGNUM
#define SYS_sigreturn   0x77
#define SYS_rt_sigreturn   0xad
#define LINUX_SIGCONTEXT_EFLAGS_OFFSET   (64)

Functions

static void fetch_register (struct regcache *regcache, int regno)
static void store_register (const struct regcache *regcache, int regno)
void supply_gregset (struct regcache *regcache, const elf_gregset_t *gregsetp)
void fill_gregset (const struct regcache *regcache, elf_gregset_t *gregsetp, int regno)
static void fetch_regs (struct regcache *regcache, int tid)
static void store_regs (const struct regcache *regcache, int tid, int regno)
void supply_fpregset (struct regcache *regcache, const elf_fpregset_t *fpregsetp)
void fill_fpregset (const struct regcache *regcache, elf_fpregset_t *fpregsetp, int regno)
static void fetch_fpregs (struct regcache *regcache, int tid)
static void store_fpregs (const struct regcache *regcache, int tid, int regno)
static int fetch_xstateregs (struct regcache *regcache, int tid)
static int store_xstateregs (const struct regcache *regcache, int tid, int regno)
static int fetch_fpxregs (struct regcache *regcache, int tid)
static int store_fpxregs (const struct regcache *regcache, int tid, int regno)
static void i386_linux_fetch_inferior_registers (struct target_ops *ops, struct regcache *regcache, int regno)
static void i386_linux_store_inferior_registers (struct target_ops *ops, struct regcache *regcache, int regno)
static unsigned long i386_linux_dr_get (ptid_t ptid, int regnum)
static void i386_linux_dr_set (ptid_t ptid, int regnum, unsigned long value)
static CORE_ADDR i386_linux_dr_get_addr (int regnum)
static unsigned long i386_linux_dr_get_control (void)
static unsigned long i386_linux_dr_get_status (void)
static int update_debug_registers_callback (struct lwp_info *lwp, void *arg)
static void i386_linux_dr_set_control (unsigned long control)
static void i386_linux_dr_set_addr (int regnum, CORE_ADDR addr)
static void i386_linux_prepare_to_resume (struct lwp_info *lwp)
static void i386_linux_new_thread (struct lwp_info *lp)
static void i386_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 i386_linux_resume (struct target_ops *ops, ptid_t ptid, int step, enum gdb_signal signal)
static void i386_linux_child_post_startup_inferior (ptid_t ptid)
static struct target_desci386_linux_read_description (struct target_ops *ops)
static struct btrace_target_infoi386_linux_enable_btrace (ptid_t ptid)
static void i386_linux_disable_btrace (struct btrace_target_info *tinfo)
static void i386_linux_teardown_btrace (struct btrace_target_info *tinfo)
void _initialize_i386_linux_nat (void)

Variables

static int have_ptrace_getregset = -1
int have_ptrace_getregs
int have_ptrace_getfpxregs
static const unsigned char linux_syscall [] = { 0xcd, 0x80 }
static void(* super_post_startup_inferior )(ptid_t ptid)
initialize_file_ftype _initialize_i386_linux_nat

Define Documentation

#define GETFPXREGS_SUPPLIES (   regno)    (I386_ST0_REGNUM <= (regno) && (regno) < I386_SSE_NUM_REGS)
#define GETREGS_SUPPLIES (   regno)    ((0 <= (regno) && (regno) <= 15) || (regno) == I386_LINUX_ORIG_EAX_REGNUM)
#define GETXSTATEREGS_SUPPLIES (   regno)    (I386_ST0_REGNUM <= (regno) && (regno) < I386_AVX_NUM_REGS)
#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().

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
#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().


Function Documentation

void _initialize_i386_linux_nat ( void  )
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]
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]
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 
)
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]
static CORE_ADDR i386_linux_dr_get_addr ( int  regnum) [static]
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]
static void i386_linux_dr_set_control ( unsigned long  control) [static]
static struct btrace_target_info* i386_linux_enable_btrace ( ptid_t  ptid) [static, read]
static void i386_linux_fetch_inferior_registers ( struct target_ops ops,
struct regcache regcache,
int  regno 
) [static]
static void i386_linux_new_fork ( struct lwp_info parent,
pid_t  child_pid 
) [static]
static void i386_linux_new_thread ( struct lwp_info lp) [static]
static void i386_linux_prepare_to_resume ( struct lwp_info lwp) [static]
static struct target_desc* i386_linux_read_description ( struct target_ops ops) [static, read]
static void i386_linux_resume ( struct target_ops ops,
ptid_t  ptid,
int  step,
enum gdb_signal  signal 
) [static]
static void i386_linux_store_inferior_registers ( struct target_ops ops,
struct regcache regcache,
int  regno 
) [static]
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().

static int store_fpxregs ( const struct regcache regcache,
int  tid,
int  regno 
) [static]

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]
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().

static int store_xstateregs ( const struct regcache regcache,
int  tid,
int  regno 
) [static]
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 
)
static int update_debug_registers_callback ( struct lwp_info lwp,
void *  arg 
) [static]

Variable Documentation

Referenced by initialize_all_files().

Initial value:



  0

Definition at line 124 of file i386-linux-nat.c.

Referenced by i386_linux_read_description().

int have_ptrace_getregset = -1 [static]
const unsigned char linux_syscall[] = { 0xcd, 0x80 } [static]

Definition at line 892 of file i386-linux-nat.c.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines