GDB (xrefs)

Macros | Functions | Variables
/tmp/gdb-8.1/gdb/mips-linux-nat.c File Reference
`#include "defs.h"`
`#include "command.h"`
`#include "gdbcmd.h"`
`#include "inferior.h"`
`#include "mips-tdep.h"`
`#include "target.h"`
`#include "regcache.h"`
`#include "linux-nat.h"`
`#include "mips-linux-tdep.h"`
`#include "target-descriptions.h"`
`#include "gdb_proc_service.h"`
`#include "gregset.h"`
`#include <sgidefs.h>`
`#include "nat/gdb_ptrace.h"`
`#include <asm/ptrace.h>`
`#include "inf-ptrace.h"`
`#include "nat/mips-linux-watch.h"`

Go to the source code of this file.

## Macros
#define | PTRACE_GET_THREAD_AREA 25

## Functions
static CORE_ADDR | mips_linux_register_addr (struct gdbarch *gdbarch, int regno, int store)
static CORE_ADDR | mips64_linux_register_addr (struct gdbarch *gdbarch, int regno, int store)
ps_err_e | ps_get_thread_area (struct ps_prochandle *ph, lwpid_t lwpid, int idx, void **base)
void | supply_gregset (struct regcache *regcache, const gdb_gregset_t *gregsetp)
void | fill_gregset (const struct regcache *regcache, gdb_gregset_t *gregsetp, int regno)
void | supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp)
void | fill_fpregset (const struct regcache *regcache, gdb_fpregset_t *fpregsetp, int regno)
static void | mips64_linux_regsets_fetch_registers (struct target_ops *ops, struct regcache *regcache, int regno)
static void | mips64_linux_regsets_store_registers (struct target_ops *ops, struct regcache *regcache, int regno)
static void | mips64_linux_fetch_registers (struct target_ops *ops, struct regcache *regcache, int regnum)
static void | mips64_linux_store_registers (struct target_ops *ops, struct regcache *regcache, int regnum)
static CORE_ADDR | mips_linux_register_u_offset (struct gdbarch *gdbarch, int regno, int store_p)
static const struct target_desc * | mips_linux_read_description (struct target_ops *ops)
static void | mips_show_dr (const char *func, CORE_ADDR addr, int len, enum target_hw_bp_type type)
static int | mips_linux_can_use_hw_breakpoint (struct target_ops *self, enum bptype type, int cnt, int ot)
static int | mips_linux_stopped_by_watchpoint (struct target_ops *ops)
static int | mips_linux_stopped_data_address (struct target_ops *t, CORE_ADDR *paddr)
static int | mips_linux_region_ok_for_hw_watchpoint (struct target_ops *self, CORE_ADDR addr, int len)
static int | write_watchpoint_regs (void)
static void | mips_linux_new_thread (struct lwp_info *lp)
static int | mips_linux_insert_watchpoint (struct target_ops *self, CORE_ADDR addr, int len, enum target_hw_bp_type type, struct expression *cond)
static int | mips_linux_remove_watchpoint (struct target_ops *self, CORE_ADDR addr, int len, enum target_hw_bp_type type, struct expression *cond)
static void | mips_linux_close (struct target_ops *self)
void | _initialize_mips_linux_nat (void)

## Variables
static int | have_ptrace_regsets = 1
static void(* | super_fetch_registers )(struct target_ops *, struct regcache *, int)
static void(* | super_store_registers )(struct target_ops *, struct regcache *, int)
static void(* | super_close )(struct target_ops *)
static int | watch_readback_valid
static struct pt_watch_regs | watch_readback
static struct mips_watchpoint * | current_watches
static struct pt_watch_regs | watch_mirror

## Macro Definition Documentation

## ◆ PTRACE_GET_THREAD_AREA

#define PTRACE_GET_THREAD_AREA 25

Definition at line 42 of file mips-linux-nat.c.

Referenced by ps_get_thread_area().

## Function Documentation

## ◆ _initialize_mips_linux_nat()

void _initialize_mips_linux_nat | ( | void |  | ) |

Definition at line 760 of file mips-linux-nat.c.

References _, add_setshow_boolean_cmd(), class_maintenance, linux_nat_add_target(), linux_nat_set_new_thread(), linux_trad_target(), maintenance_set_cmdlist, maintenance_show_cmdlist, mips64_linux_fetch_registers(), mips64_linux_store_registers(), mips_linux_can_use_hw_breakpoint(), mips_linux_close(), mips_linux_insert_watchpoint(), mips_linux_new_thread(), mips_linux_read_description(), mips_linux_region_ok_for_hw_watchpoint(), mips_linux_register_u_offset(), mips_linux_remove_watchpoint(), mips_linux_stopped_by_watchpoint(), mips_linux_stopped_data_address(), show_debug_regs, super_close, super_fetch_registers, super_store_registers, target_ops::to_can_use_hw_breakpoint, target_ops::to_close, target_ops::to_fetch_registers, target_ops::to_insert_watchpoint, target_ops::to_read_description, target_ops::to_region_ok_for_hw_watchpoint, target_ops::to_remove_watchpoint, target_ops::to_stopped_by_watchpoint, target_ops::to_stopped_data_address, and target_ops::to_store_registers.

## ◆ fill_fpregset()

void fill_fpregset | ( | const struct regcache * | regcache,
|  | gdb_fpregset_t * | fpregsetp,
|  | int | regno
| ) |  |

Definition at line 197 of file mips-linux-nat.c.

References regcache::arch(), mips64_fill_fpregset(), mips_fill_fpregset(), and mips_isa_regsize().

## ◆ fill_gregset()

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

Definition at line 177 of file mips-linux-nat.c.

References regcache::arch(), mips64_fill_gregset(), mips_fill_gregset(), and mips_isa_regsize().

## ◆ mips64_linux_fetch_registers()

static void mips64_linux_fetch_registers | ( | struct target_ops * | ops,
|  | struct regcache * | regcache,
|  | int | regnum
| ) |  |
| static

Definition at line 375 of file mips-linux-nat.c.

References have_ptrace_regsets, mips64_linux_regsets_fetch_registers(), regnum, and super_fetch_registers.

Referenced by _initialize_mips_linux_nat().

## ◆ mips64_linux_register_addr()

static CORE_ADDR mips64_linux_register_addr | ( | struct gdbarch * | gdbarch,
|  | int | regno,
|  | int | store
| ) |  |
| static

Definition at line 108 of file mips-linux-nat.c.

References _, mips_regnum::badvaddr, mips_regnum::cause, DSP_BASE, DSP_CONTROL, mips_regnum::dspacc, mips_regnum::dspctl, error(), mips_regnum::fp_control_status, mips_regnum::fp_implementation_revision, gdbarch_fp0_regnum(), gdbarch_num_regs(), mips_regnum::hi, mips_regnum::lo, MIPS64_BADVADDR, MIPS64_CAUSE, MIPS64_FPC_CSR, MIPS64_FPC_EIR, MIPS64_FPR_BASE, MIPS64_MMHI, MIPS64_MMLO, MIPS64_PC, mips_linux_restart_reg_p(), mips_regnum(), MIPS_RESTART_REGNUM, MIPS_ZERO_REGNUM, and mips_regnum::pc.

Referenced by mips_linux_register_u_offset().

## ◆ mips64_linux_regsets_fetch_registers()

static void mips64_linux_regsets_fetch_registers | ( | struct target_ops * | ops,
|  | struct regcache * | regcache,
|  | int | regno
| ) |  |
| static

Definition at line 212 of file mips-linux-nat.c.

References _, regcache::arch(), mips_regnum::dspacc, mips_regnum::dspctl, get_ptrace_pid(), have_ptrace_regsets, L, mips64_supply_fpregset(), mips64_supply_gregset(), mips_regnum(), perror_with_name(), ptrace(), PTRACE_GETFPREGS, PTRACE_GETREGS, PTRACE_TYPE_ARG3, regcache_get_ptid(), super_fetch_registers, and selftests::ptid::tid.

Referenced by mips64_linux_fetch_registers().

## ◆ mips64_linux_regsets_store_registers()

static void mips64_linux_regsets_store_registers | ( | struct target_ops * | ops,
|  | struct regcache * | regcache,
|  | int | regno
| ) |  |
| static

Definition at line 298 of file mips-linux-nat.c.

References _, regcache::arch(), mips_regnum::dspacc, mips_regnum::dspctl, get_ptrace_pid(), L, mips64_fill_fpregset(), mips64_fill_gregset(), mips_regnum(), perror_with_name(), ptrace(), PTRACE_GETFPREGS, PTRACE_GETREGS, PTRACE_SETFPREGS, PTRACE_SETREGS, PTRACE_TYPE_ARG3, regcache_get_ptid(), super_store_registers, and selftests::ptid::tid.

Referenced by mips64_linux_store_registers().

## ◆ mips64_linux_store_registers()

static void mips64_linux_store_registers | ( | struct target_ops * | ops,
|  | struct regcache * | regcache,
|  | int | regnum
| ) |  |
| static

Definition at line 392 of file mips-linux-nat.c.

References have_ptrace_regsets, mips64_linux_regsets_store_registers(), regnum, and super_store_registers.

Referenced by _initialize_mips_linux_nat().

## ◆ mips_linux_can_use_hw_breakpoint()

static int mips_linux_can_use_hw_breakpoint | ( | struct target_ops * | self,
|  | enum bptype | type,
|  | int | cnt,
|  | int | ot
| ) |  |
| static

Definition at line 503 of file mips-linux-nat.c.

References bp_access_watchpoint, bp_hardware_watchpoint, bp_read_watchpoint, inferior_ptid, mips_linux_read_watch_registers(), mips_linux_watch_get_irw_mask(), mips_linux_watch_get_num_valid(), ptid_get_lwp(), R_MASK, W_MASK, watch_readback, and watch_readback_valid.

Referenced by _initialize_mips_linux_nat().

## ◆ mips_linux_close()

static void mips_linux_close | ( | struct target_ops * | self | ) |
| static

Definition at line 740 of file mips-linux-nat.c.

References current_watches, mips_watchpoint::next, super_close, and xfree().

Referenced by _initialize_mips_linux_nat().

## ◆ mips_linux_insert_watchpoint()

static int mips_linux_insert_watchpoint | ( | struct target_ops * | self,
|  | CORE_ADDR | addr,
|  | int | len,
|  | enum target_hw_bp_type | type,
|  | struct expression * | cond
| ) |  |
| static

Definition at line 637 of file mips-linux-nat.c.

References mips_watchpoint::addr, current_watches, inferior_ptid, mips_watchpoint::len, mips_linux_read_watch_registers(), mips_linux_watch_populate_regs(), mips_linux_watch_try_one_watch(), mips_linux_watch_type_to_irw(), mips_show_dr(), mips_watchpoint::next, ptid_get_lwp(), show_debug_regs, mips_watchpoint::type, type, watch_mirror, watch_readback, watch_readback_valid, write_watchpoint_regs(), and XNEW.

Referenced by _initialize_mips_linux_nat().

## ◆ mips_linux_new_thread()

static void mips_linux_new_thread | ( | struct lwp_info * | lp | ) |
| static

Definition at line 620 of file mips-linux-nat.c.

References _, ptid_t::lwp(), mips_linux_read_watch_registers(), perror_with_name(), lwp_info::ptid, ptrace(), PTRACE_SET_WATCH_REGS, selftests::ptid::tid, watch_mirror, watch_readback, and watch_readback_valid.

Referenced by _initialize_mips_linux_nat().

## ◆ mips_linux_read_description()

static const struct target_desc* mips_linux_read_description | ( | struct target_ops * | ops | ) |
| static

Definition at line 418 of file mips-linux-nat.c.

References _, DSP_CONTROL, inferior_ptid, perror_with_name(), ptid_get_lwp(), ptid_get_pid(), ptrace(), tdesc_mips64_dsp_linux, tdesc_mips64_linux, tdesc_mips_dsp_linux, tdesc_mips_linux, and selftests::ptid::tid.

Referenced by _initialize_mips_linux_nat().

## ◆ mips_linux_region_ok_for_hw_watchpoint()

static int mips_linux_region_ok_for_hw_watchpoint | ( | struct target_ops * | self,
|  | CORE_ADDR | addr,
|  | int | len
| ) |  |
| static

Definition at line 581 of file mips-linux-nat.c.

References inferior_ptid, mips_linux_read_watch_registers(), mips_linux_watch_get_num_valid(), mips_linux_watch_set_watchlo(), mips_linux_watch_try_one_watch(), ptid_get_lwp(), watch_readback, and watch_readback_valid.

Referenced by _initialize_mips_linux_nat().

## ◆ mips_linux_register_addr()

static CORE_ADDR mips_linux_register_addr | ( | struct gdbarch * | gdbarch,
|  | int | regno,
|  | int | store
| ) |  |
| static

Definition at line 67 of file mips-linux-nat.c.

References _, BADVADDR, mips_regnum::badvaddr, CAUSE, mips_regnum::cause, DSP_BASE, DSP_CONTROL, mips_regnum::dspacc, mips_regnum::dspctl, error(), mips_regnum::fp0, mips_regnum::fp_control_status, mips_regnum::fp_implementation_revision, FPC_CSR, FPC_EIR, FPR_BASE, gdbarch_num_regs(), mips_regnum::hi, mips_regnum::lo, mips_linux_restart_reg_p(), mips_regnum(), MIPS_RESTART_REGNUM, MIPS_ZERO_REGNUM, MMHI, MMLO, PC, and mips_regnum::pc.

Referenced by mips_linux_register_u_offset().

## ◆ mips_linux_register_u_offset()

static CORE_ADDR mips_linux_register_u_offset | ( | struct gdbarch * | gdbarch,
|  | int | regno,
|  | int | store_p
| ) |  |
| static

Definition at line 409 of file mips-linux-nat.c.

References mips64_linux_register_addr(), mips_abi_regsize(), and mips_linux_register_addr().

Referenced by _initialize_mips_linux_nat().

## ◆ mips_linux_remove_watchpoint()

static int mips_linux_remove_watchpoint | ( | struct target_ops * | self,
|  | CORE_ADDR | addr,
|  | int | len,
|  | enum target_hw_bp_type | type,
|  | struct expression * | cond
| ) |  |
| static

Definition at line 691 of file mips-linux-nat.c.

References mips_watchpoint::addr, current_watches, gdb_assert, mips_watchpoint::len, mips_linux_watch_populate_regs(), mips_show_dr(), mips_watchpoint::next, show_debug_regs, mips_watchpoint::type, watch_mirror, watch_readback, watch_readback_valid, write_watchpoint_regs(), and xfree().

Referenced by _initialize_mips_linux_nat().

## ◆ mips_linux_stopped_by_watchpoint()

static int mips_linux_stopped_by_watchpoint | ( | struct target_ops * | ops | ) |
| static

Definition at line 546 of file mips-linux-nat.c.

References inferior_ptid, MAX_DEBUG_REGISTER, mips_linux_read_watch_registers(), mips_linux_watch_get_num_valid(), mips_linux_watch_get_watchhi(), num_valid, ptid_get_lwp(), R_MASK, W_MASK, watch_readback, and watch_readback_valid.

Referenced by _initialize_mips_linux_nat().

## ◆ mips_linux_stopped_data_address()

static int mips_linux_stopped_data_address | ( | struct target_ops * | t,
|  | CORE_ADDR * | paddr
| ) |  |
| static

Definition at line 570 of file mips-linux-nat.c.

Referenced by _initialize_mips_linux_nat().

## ◆ mips_show_dr()

static void mips_show_dr | ( | const char * | func,
|  | CORE_ADDR | addr,
|  | int | len,
|  | enum target_hw_bp_type | type
| ) |  |
| static

Definition at line 473 of file mips-linux-nat.c.

References func, hw_access, hw_execute, hw_read, hw_write, MAX_DEBUG_REGISTER, mips_linux_watch_get_watchhi(), mips_linux_watch_get_watchlo(), paddress(), printf_unfiltered(), puts_unfiltered(), target_gdbarch(), and watch_mirror.

Referenced by mips_linux_insert_watchpoint(), and mips_linux_remove_watchpoint().

## ◆ ps_get_thread_area()

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

Definition at line 151 of file mips-linux-nat.c.

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

## ◆ supply_fpregset()

void supply_fpregset | ( | struct regcache * | regcache,
|  | const gdb_fpregset_t * | fpregsetp
| ) |  |

Definition at line 187 of file mips-linux-nat.c.

References regcache::arch(), mips64_supply_fpregset(), mips_isa_regsize(), and mips_supply_fpregset().

## ◆ supply_gregset()

void supply_gregset | ( | struct regcache * | regcache,
|  | const gdb_gregset_t * | gregsetp
| ) |  |

Definition at line 168 of file mips-linux-nat.c.

References regcache::arch(), mips64_supply_gregset(), mips_isa_regsize(), and mips_supply_gregset().

## ◆ write_watchpoint_regs()

static int write_watchpoint_regs | ( | void |  | ) |
| static

Definition at line 602 of file mips-linux-nat.c.

References _, ALL_LWPS, perror_with_name(), lwp_info::ptid, ptid_get_lwp(), ptrace(), PTRACE_SET_WATCH_REGS, selftests::ptid::tid, and watch_mirror.

Referenced by mips_linux_insert_watchpoint(), and mips_linux_remove_watchpoint().

## Variable Documentation

## ◆ current_watches

struct mips_watchpoint* current_watches
| static

Definition at line 465 of file mips-linux-nat.c.

Referenced by mips_linux_close(), mips_linux_insert_watchpoint(), mips_linux_remove_watchpoint(), and mips_linux_watch_populate_regs().

## ◆ have_ptrace_regsets

int have_ptrace_regsets = 1
| static

Definition at line 47 of file mips-linux-nat.c.

Referenced by mips64_linux_fetch_registers(), mips64_linux_regsets_fetch_registers(), and mips64_linux_store_registers().

## ◆ super_close

void(* super_close) (struct target_ops *)
| static

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

Referenced by _initialize_mips_linux_nat(), and mips_linux_close().

## ◆ super_fetch_registers

void(* super_fetch_registers) (struct target_ops *, struct regcache *, int)
| static

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

Referenced by _initialize_mips_linux_nat(), mips64_linux_fetch_registers(), and mips64_linux_regsets_fetch_registers().

## ◆ super_store_registers

void(* super_store_registers) (struct target_ops *, struct regcache *, int)
| static

Definition at line 54 of file mips-linux-nat.c.

Referenced by _initialize_mips_linux_nat(), mips64_linux_regsets_store_registers(), and mips64_linux_store_registers().

## ◆ watch_mirror

struct pt_watch_regs watch_mirror
| static

Definition at line 470 of file mips-linux-nat.c.

Referenced by mips_linux_insert_watchpoint(), mips_linux_new_thread(), mips_linux_remove_watchpoint(), mips_show_dr(), and write_watchpoint_regs().

## ◆ watch_readback

struct pt_watch_regs watch_readback
| static

Definition at line 463 of file mips-linux-nat.c.

Referenced by mips_linux_can_use_hw_breakpoint(), mips_linux_insert_watchpoint(), mips_linux_new_thread(), mips_linux_read_watch_registers(), mips_linux_region_ok_for_hw_watchpoint(), mips_linux_remove_watchpoint(), and mips_linux_stopped_by_watchpoint().

## ◆ watch_readback_valid

int watch_readback_valid
| static

Definition at line 459 of file mips-linux-nat.c.

Referenced by mips_linux_can_use_hw_breakpoint(), mips_linux_insert_watchpoint(), mips_linux_new_thread(), mips_linux_read_watch_registers(), mips_linux_region_ok_for_hw_watchpoint(), mips_linux_remove_watchpoint(), and mips_linux_stopped_by_watchpoint().