GDB (xrefs)
Classes | Macros | Typedefs | Enumerations | Functions | Variables
/tmp/gdb-7.10/gdb/arm-linux-nat.c File Reference
#include "defs.h"
#include "inferior.h"
#include "gdbcore.h"
#include "regcache.h"
#include "target.h"
#include "linux-nat.h"
#include "target-descriptions.h"
#include "auxv.h"
#include "observer.h"
#include "gdbthread.h"
#include "arm-tdep.h"
#include "arm-linux-tdep.h"
#include <elf/common.h>
#include <sys/user.h>
#include <sys/ptrace.h>
#include <sys/utsname.h>
#include <sys/procfs.h>
#include "nat/linux-ptrace.h"
#include "gregset.h"
#include "gdb_proc_service.h"

Go to the source code of this file.

Classes

struct  arm_linux_hwbp_cap
 
struct  arm_linux_hw_breakpoint
 
struct  arm_linux_debug_reg_state
 
struct  arm_linux_process_info
 
struct  arch_lwp_info
 
struct  update_registers_data
 

Macros

#define PTRACE_GET_THREAD_AREA   22
 
#define PTRACE_GETWMMXREGS   18
 
#define PTRACE_SETWMMXREGS   19
 
#define PTRACE_GETVFPREGS   27
 
#define PTRACE_SETVFPREGS   28
 
#define PTRACE_GETHBPREGS   29
 
#define PTRACE_SETHBPREGS   30
 
#define GET_THREAD_ID(PTID)   get_thread_id (PTID)
 
#define IWMMXT_REGS_SIZE   (16 * 8 + 6 * 4)
 
#define VFP_REGS_SIZE   (32 * 8 + 4)
 
#define MAX_BPTS   16
 
#define MAX_WPTS   16
 

Typedefs

typedef unsigned int arm_hwbp_control_t
 

Enumerations

enum  arm_hwbp_type { arm_hwbp_break = 0, arm_hwbp_load = 1, arm_hwbp_store = 2, arm_hwbp_access = 3 }
 

Functions

static int get_thread_id (ptid_t ptid)
 
static void fetch_fpregister (struct regcache *regcache, int regno)
 
static void fetch_fpregs (struct regcache *regcache)
 
static void store_fpregister (const struct regcache *regcache, int regno)
 
static void store_fpregs (const struct regcache *regcache)
 
static void fetch_register (struct regcache *regcache, int regno)
 
static void fetch_regs (struct regcache *regcache)
 
static void store_register (const struct regcache *regcache, int regno)
 
static void store_regs (const struct regcache *regcache)
 
static void fetch_wmmx_regs (struct regcache *regcache)
 
static void store_wmmx_regs (const struct regcache *regcache)
 
static void fetch_vfp_regs (struct regcache *regcache)
 
static void store_vfp_regs (const struct regcache *regcache)
 
static void arm_linux_fetch_inferior_registers (struct target_ops *ops, struct regcache *regcache, int regno)
 
static void arm_linux_store_inferior_registers (struct target_ops *ops, struct regcache *regcache, int regno)
 
void fill_gregset (const struct regcache *regcache, gdb_gregset_t *gregsetp, int regno)
 
void supply_gregset (struct regcache *regcache, const gdb_gregset_t *gregsetp)
 
void fill_fpregset (const struct regcache *regcache, gdb_fpregset_t *fpregsetp, int regno)
 
void supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp)
 
ps_err_e ps_get_thread_area (const struct ps_prochandle *ph, lwpid_t lwpid, int idx, void **base)
 
static const struct target_descarm_linux_read_description (struct target_ops *ops)
 
static const struct arm_linux_hwbp_caparm_linux_get_hwbp_cap (void)
 
static int arm_linux_get_hw_breakpoint_count (void)
 
static int arm_linux_get_hw_watchpoint_count (void)
 
static int arm_linux_can_use_hw_breakpoint (struct target_ops *self, int type, int cnt, int ot)
 
static struct arm_linux_process_infoarm_linux_find_process_pid (pid_t pid)
 
static struct arm_linux_process_infoarm_linux_add_process (pid_t pid)
 
static struct arm_linux_process_infoarm_linux_process_info_get (pid_t pid)
 
static void arm_linux_forget_process (pid_t pid)
 
static struct arm_linux_debug_reg_statearm_linux_get_debug_reg_state (pid_t pid)
 
static arm_hwbp_control_t arm_hwbp_control_initialize (unsigned byte_address_select, arm_hwbp_type hwbp_type, int enable)
 
static int arm_hwbp_control_is_enabled (arm_hwbp_control_t control)
 
static arm_hwbp_control_t arm_hwbp_control_disable (arm_hwbp_control_t control)
 
static void arm_linux_hw_breakpoint_initialize (struct gdbarch *gdbarch, struct bp_target_info *bp_tgt, struct arm_linux_hw_breakpoint *p)
 
static arm_hwbp_type arm_linux_get_hwbp_type (int rw)
 
static void arm_linux_hw_watchpoint_initialize (CORE_ADDR addr, int len, int rw, struct arm_linux_hw_breakpoint *p)
 
static int arm_linux_hw_breakpoint_equal (const struct arm_linux_hw_breakpoint *p1, const struct arm_linux_hw_breakpoint *p2)
 
static int update_registers_callback (struct lwp_info *lwp, void *arg)
 
static void arm_linux_insert_hw_breakpoint1 (const struct arm_linux_hw_breakpoint *bpt, int watchpoint)
 
static void arm_linux_remove_hw_breakpoint1 (const struct arm_linux_hw_breakpoint *bpt, int watchpoint)
 
static int arm_linux_insert_hw_breakpoint (struct target_ops *self, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
 
static int arm_linux_remove_hw_breakpoint (struct target_ops *self, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
 
static int arm_linux_region_ok_for_hw_watchpoint (struct target_ops *self, CORE_ADDR addr, int len)
 
static int arm_linux_insert_watchpoint (struct target_ops *self, CORE_ADDR addr, int len, int rw, struct expression *cond)
 
static int arm_linux_remove_watchpoint (struct target_ops *self, CORE_ADDR addr, int len, int rw, struct expression *cond)
 
static int arm_linux_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
 
static int arm_linux_stopped_by_watchpoint (struct target_ops *ops)
 
static int arm_linux_watchpoint_addr_within_range (struct target_ops *target, CORE_ADDR addr, CORE_ADDR start, int length)
 
static void arm_linux_new_thread (struct lwp_info *lp)
 
static void arm_linux_prepare_to_resume (struct lwp_info *lwp)
 
static void arm_linux_new_fork (struct lwp_info *parent, pid_t child_pid)
 
void _initialize_arm_linux_nat (void)
 

Variables

int arm_apcs_32
 
static struct arm_linux_process_infoarm_linux_process_list = NULL
 

Macro Definition Documentation

#define GET_THREAD_ID (   PTID)    get_thread_id (PTID)
#define IWMMXT_REGS_SIZE   (16 * 8 + 6 * 4)

Definition at line 506 of file arm-linux-nat.c.

Referenced by fetch_wmmx_regs(), and store_wmmx_regs().

#define MAX_BPTS   16

Definition at line 865 of file arm-linux-nat.c.

Referenced by arm_linux_get_hwbp_cap(), and arm_linux_new_thread().

#define MAX_WPTS   16

Definition at line 866 of file arm-linux-nat.c.

Referenced by arm_linux_get_hwbp_cap().

#define PTRACE_GET_THREAD_AREA   22

Definition at line 48 of file arm-linux-nat.c.

Referenced by ps_get_thread_area().

#define PTRACE_GETHBPREGS   29

Definition at line 62 of file arm-linux-nat.c.

Referenced by arm_linux_get_hwbp_cap().

#define PTRACE_GETVFPREGS   27

Definition at line 57 of file arm-linux-nat.c.

Referenced by arm_linux_read_description(), fetch_vfp_regs(), and store_vfp_regs().

#define PTRACE_GETWMMXREGS   18

Definition at line 52 of file arm-linux-nat.c.

Referenced by fetch_wmmx_regs(), and store_wmmx_regs().

#define PTRACE_SETHBPREGS   30

Definition at line 63 of file arm-linux-nat.c.

Referenced by arm_linux_prepare_to_resume().

#define PTRACE_SETVFPREGS   28

Definition at line 58 of file arm-linux-nat.c.

Referenced by store_vfp_regs().

#define PTRACE_SETWMMXREGS   19

Definition at line 53 of file arm-linux-nat.c.

Referenced by store_wmmx_regs().

#define VFP_REGS_SIZE   (32 * 8 + 4)

Definition at line 583 of file arm-linux-nat.c.

Referenced by arm_linux_read_description(), fetch_vfp_regs(), and store_vfp_regs().

Typedef Documentation

typedef unsigned int arm_hwbp_control_t

Definition at line 974 of file arm-linux-nat.c.

Enumeration Type Documentation

Enumerator
arm_hwbp_break 
arm_hwbp_load 
arm_hwbp_store 
arm_hwbp_access 

Definition at line 965 of file arm-linux-nat.c.

Function Documentation

void _initialize_arm_linux_nat ( void  )
static arm_hwbp_control_t arm_hwbp_control_disable ( arm_hwbp_control_t  control)
static

Definition at line 1141 of file arm-linux-nat.c.

Referenced by arm_linux_remove_hw_breakpoint1().

static arm_hwbp_control_t arm_hwbp_control_initialize ( unsigned  byte_address_select,
arm_hwbp_type  hwbp_type,
int  enable 
)
static
static int arm_hwbp_control_is_enabled ( arm_hwbp_control_t  control)
static
static struct arm_linux_process_info* arm_linux_add_process ( pid_t  pid)
static
static int arm_linux_can_use_hw_breakpoint ( struct target_ops self,
int  type,
int  cnt,
int  ot 
)
static
static void arm_linux_fetch_inferior_registers ( struct target_ops ops,
struct regcache regcache,
int  regno 
)
static
static struct arm_linux_process_info* arm_linux_find_process_pid ( pid_t  pid)
static
static void arm_linux_forget_process ( pid_t  pid)
static
static struct arm_linux_debug_reg_state* arm_linux_get_debug_reg_state ( pid_t  pid)
static
static int arm_linux_get_hw_breakpoint_count ( void  )
static
static int arm_linux_get_hw_watchpoint_count ( void  )
static
static const struct arm_linux_hwbp_cap* arm_linux_get_hwbp_cap ( void  )
static
static arm_hwbp_type arm_linux_get_hwbp_type ( int  rw)
static
static int arm_linux_hw_breakpoint_equal ( const struct arm_linux_hw_breakpoint p1,
const struct arm_linux_hw_breakpoint p2 
)
static
static void arm_linux_hw_breakpoint_initialize ( struct gdbarch gdbarch,
struct bp_target_info bp_tgt,
struct arm_linux_hw_breakpoint p 
)
static
static void arm_linux_hw_watchpoint_initialize ( CORE_ADDR  addr,
int  len,
int  rw,
struct arm_linux_hw_breakpoint p 
)
static
static int arm_linux_insert_hw_breakpoint ( struct target_ops self,
struct gdbarch gdbarch,
struct bp_target_info bp_tgt 
)
static
static void arm_linux_insert_hw_breakpoint1 ( const struct arm_linux_hw_breakpoint bpt,
int  watchpoint 
)
static
static int arm_linux_insert_watchpoint ( struct target_ops self,
CORE_ADDR  addr,
int  len,
int  rw,
struct expression cond 
)
static
static void arm_linux_new_fork ( struct lwp_info parent,
pid_t  child_pid 
)
static
static void arm_linux_new_thread ( struct lwp_info lp)
static
static void arm_linux_prepare_to_resume ( struct lwp_info lwp)
static
static struct arm_linux_process_info* arm_linux_process_info_get ( pid_t  pid)
static
static const struct target_desc* arm_linux_read_description ( struct target_ops ops)
static
static int arm_linux_region_ok_for_hw_watchpoint ( struct target_ops self,
CORE_ADDR  addr,
int  len 
)
static
static int arm_linux_remove_hw_breakpoint ( struct target_ops self,
struct gdbarch gdbarch,
struct bp_target_info bp_tgt 
)
static
static void arm_linux_remove_hw_breakpoint1 ( const struct arm_linux_hw_breakpoint bpt,
int  watchpoint 
)
static
static int arm_linux_remove_watchpoint ( struct target_ops self,
CORE_ADDR  addr,
int  len,
int  rw,
struct expression cond 
)
static
static int arm_linux_stopped_by_watchpoint ( struct target_ops ops)
static

Definition at line 1465 of file arm-linux-nat.c.

References arm_linux_stopped_data_address().

Referenced by _initialize_arm_linux_nat().

static int arm_linux_stopped_data_address ( struct target_ops target,
CORE_ADDR addr_p 
)
static
static void arm_linux_store_inferior_registers ( struct target_ops ops,
struct regcache regcache,
int  regno 
)
static
static int arm_linux_watchpoint_addr_within_range ( struct target_ops target,
CORE_ADDR  addr,
CORE_ADDR  start,
int  length 
)
static

Definition at line 1472 of file arm-linux-nat.c.

Referenced by _initialize_arm_linux_nat().

static void fetch_fpregister ( struct regcache regcache,
int  regno 
)
static
static void fetch_fpregs ( struct regcache regcache)
static
static void fetch_register ( struct regcache regcache,
int  regno 
)
static
static void fetch_regs ( struct regcache regcache)
static
static void fetch_vfp_regs ( struct regcache regcache)
static
static void fetch_wmmx_regs ( struct regcache regcache)
static
void fill_fpregset ( const struct regcache regcache,
gdb_fpregset_t fpregsetp,
int  regno 
)

Definition at line 763 of file arm-linux-nat.c.

References arm_linux_collect_nwfpe().

void fill_gregset ( const struct regcache regcache,
gdb_gregset_t gregsetp,
int  regno 
)

Definition at line 750 of file arm-linux-nat.c.

References arm_linux_collect_gregset().

static int get_thread_id ( ptid_t  ptid)
static

Definition at line 75 of file arm-linux-nat.c.

References ptid_get_lwp(), and ptid_get_pid().

ps_err_e ps_get_thread_area ( const struct ps_prochandle ph,
lwpid_t  lwpid,
int  idx,
void **  base 
)

Definition at line 781 of file arm-linux-nat.c.

References PS_ERR, PS_OK, ptrace(), and PTRACE_GET_THREAD_AREA.

static void store_fpregister ( const struct regcache regcache,
int  regno 
)
static
static void store_fpregs ( const struct regcache regcache)
static
static void store_register ( const struct regcache regcache,
int  regno 
)
static
static void store_regs ( const struct regcache regcache)
static
static void store_vfp_regs ( const struct regcache regcache)
static
static void store_wmmx_regs ( const struct regcache regcache)
static
void supply_fpregset ( struct regcache regcache,
const gdb_fpregset_t fpregsetp 
)

Definition at line 773 of file arm-linux-nat.c.

References arm_linux_supply_nwfpe().

void supply_gregset ( struct regcache regcache,
const gdb_gregset_t gregsetp 
)

Definition at line 757 of file arm-linux-nat.c.

References arm_linux_supply_gregset().

static int update_registers_callback ( struct lwp_info lwp,
void *  arg 
)
static

Variable Documentation

int arm_apcs_32

Definition at line 278 of file arm-tdep.c.

Referenced by fetch_register(), fetch_regs(), store_register(), and store_regs().

struct arm_linux_process_info* arm_linux_process_list = NULL
static

Definition at line 1034 of file arm-linux-nat.c.

Referenced by arm_linux_add_process(), and arm_linux_forget_process().