GDB (xrefs)
|
#include "regcache.h"
Public Member Functions | |
DISABLE_COPY_AND_ASSIGN (regcache) | |
const address_space * | aspace () const |
void | restore (readonly_detached_regcache *src) |
void | raw_write (int regnum, const gdb_byte *buf) |
template<typename T , typename = RequireLongest<T>> | |
void | raw_write (int regnum, T val) |
void | cooked_write (int regnum, const gdb_byte *buf) |
template<typename T , typename = RequireLongest<T>> | |
void | cooked_write (int regnum, T val) |
void | raw_update (int regnum) override |
void | raw_write_part (int regnum, int offset, int len, const gdb_byte *buf) |
void | cooked_write_part (int regnum, int offset, int len, const gdb_byte *buf) |
void | supply_regset (const struct regset *regset, int regbase, int regnum, const void *buf, size_t size) |
void | collect_regset (const struct regset *regset, int regbase, int regnum, void *buf, size_t size) const |
void | supply_regset (const struct regset *regset, int regnum, const void *buf, size_t size) |
void | collect_regset (const struct regset *regset, int regnum, void *buf, size_t size) const |
ptid_t | ptid () const |
void | set_ptid (const ptid_t ptid) |
void | debug_print_register (const char *func, int regno) |
![]() | |
detached_regcache (gdbarch *gdbarch, bool has_pseudo) | |
DISABLE_COPY_AND_ASSIGN (detached_regcache) | |
![]() | |
readable_regcache (gdbarch *gdbarch, bool has_pseudo) | |
enum register_status | raw_read (int regnum, gdb_byte *buf) |
template<typename T , typename = RequireLongest<T>> | |
enum register_status | raw_read (int regnum, T *val) |
enum register_status | raw_read_part (int regnum, int offset, int len, gdb_byte *buf) |
enum register_status | cooked_read (int regnum, gdb_byte *buf) |
template<typename T , typename = RequireLongest<T>> | |
enum register_status | cooked_read (int regnum, T *val) |
enum register_status | cooked_read_part (int regnum, int offset, int len, gdb_byte *buf) |
struct value * | cooked_read_value (int regnum) |
![]() | |
reg_buffer (gdbarch *gdbarch, bool has_pseudo) | |
DISABLE_COPY_AND_ASSIGN (reg_buffer) | |
gdbarch * | arch () const |
enum register_status | get_register_status (int regnum) const override |
void | raw_collect (int regnum, void *buf) const override |
void | raw_collect_integer (int regnum, gdb_byte *addr, int addr_len, bool is_signed) const |
void | raw_collect_part (int regnum, int offset, int len, gdb_byte *out) const |
void | raw_supply (int regnum, const void *buf) override |
void | raw_supply (int regnum, const reg_buffer &src) |
void | raw_supply_integer (int regnum, const gdb_byte *addr, int addr_len, bool is_signed) |
void | raw_supply_zeroed (int regnum) |
void | raw_supply_part (int regnum, int offset, int len, const gdb_byte *in) |
void | invalidate (int regnum) |
virtual | ~reg_buffer ()=default |
bool | raw_compare (int regnum, const void *buf, int offset) const override |
Protected Member Functions | |
regcache (inferior *inf_for_target_calls, gdbarch *gdbarch, const address_space *aspace) | |
![]() | |
enum register_status | read_part (int regnum, int offset, int len, gdb_byte *out, bool is_raw) |
![]() | |
void | assert_regnum (int regnum) const |
int | num_raw_registers () const |
gdb_byte * | register_buffer (int regnum) const |
void | save (register_read_ftype cooked_read) |
Private Member Functions | |
void | transfer_regset_register (struct regcache *out_regcache, int regnum, const gdb_byte *in_buf, gdb_byte *out_buf, int slot_size, int offs) const |
void | transfer_regset (const struct regset *regset, int regbase, struct regcache *out_regcache, int regnum, const gdb_byte *in_buf, gdb_byte *out_buf, size_t size) const |
enum register_status | write_part (int regnum, int offset, int len, const gdb_byte *in, bool is_raw) |
Private Attributes | |
const address_space *const | m_aspace |
inferior * | m_inf_for_target_calls |
ptid_t | m_ptid |
Friends | |
struct regcache * | get_thread_arch_aspace_regcache (inferior *inf_for_target_calls, ptid_t ptid, struct gdbarch *gdbarch, struct address_space *aspace) |
Additional Inherited Members | |
![]() | |
struct regcache_descr * | m_descr |
bool | m_has_pseudo |
std::unique_ptr< gdb_byte[]> | m_registers |
std::unique_ptr< register_status[]> | m_register_status |
Definition at line 337 of file regcache.h.
|
protected |
Definition at line 211 of file regcache.c.
References m_ptid.
|
inline |
Definition at line 343 of file regcache.h.
References m_aspace.
Referenced by adjust_pc_after_break(), breakpoint_has_location_inserted_here(), darwin_nat_target::cancel_breakpoint(), create_sentinel_frame(), fbsd_nat_target::detach(), do_target_wait_1(), get_thread_arch_regcache(), handle_inferior_event(), handle_signal_stop(), handle_syscall_event(), insert_single_step_breakpoints(), keep_going_pass_signal(), displaced_step_buffers::prepare(), proceed(), record_full_exec_insn(), record_full_wait_1(), resume_1(), resume_stopped_resumed_lwps(), save_stop_reason(), save_waitstatus(), single_step_breakpoint_inserted_here_p(), status_callback(), and thread_still_needs_step_over_bp().
void regcache::collect_regset | ( | const struct regset * | regset, |
int | regbase, | ||
int | regnum, | ||
void * | buf, | ||
size_t | size ) const |
Definition at line 1283 of file regcache.c.
References regnum, size, and transfer_regset().
Referenced by aarch64_fbsd_collect_tls_regset(), aarch64_linux_collect_za_regset(), aarch64_linux_collect_zt_regset(), arm_fbsd_collect_tls_regset(), collect_regset(), collect_sve_regset(), and regcache_collect_regset().
|
inline |
Definition at line 400 of file regcache.h.
References collect_regset(), regnum, and size.
void regcache::cooked_write | ( | int | regnum, |
const gdb_byte * | buf ) |
Definition at line 870 of file regcache.c.
References regcache_descr::gdbarch, gdbarch_pseudo_register_write(), reg_buffer::m_descr, reg_buffer::num_raw_registers(), raw_write(), and regnum.
Referenced by aarch64_store_return_value(), alpha_push_dummy_call(), alpha_store_return_value(), amd64_push_dummy_call(), amd64_windows_push_dummy_call(), amd64_windows_store_arg_in_reg(), arc_push_dummy_call(), arm_push_dummy_call(), arm_return_value(), arm_store_return_value(), bfin_store_return_value(), BP_MANIPULATION(), bpf_store_return_value(), cooked_write(), cris_push_dummy_call(), do_ppc_sysv_return_value(), frv_store_return_value(), get_decimal_float_return_value(), hppa32_push_dummy_call(), hppa32_return_value(), i386_darwin_push_dummy_call(), i386_thiscall_push_dummy_call(), ia64_push_dummy_call(), ia64_store_return_value(), m32c_cat_write(), m32c_push_dummy_call(), m32c_r3r2r1r0_write(), m68k_push_dummy_call(), microblaze_store_return_value(), nds32_push_dummy_call(), nds32_store_return_value(), nios2_store_return_value(), or1k_return_value(), pass_in_far(), pass_in_gar(), pass_in_v(), ppc64_sysv_abi_push_freg(), ppc64_sysv_abi_push_val(), ppc64_sysv_abi_push_vreg(), ppc64_sysv_abi_return_value(), ppc64_sysv_abi_return_value_base(), ppc_sysv_abi_push_dummy_call(), put_frame_register(), record_full_exec_insn(), regcache_cooked_write_signed(), regcache_cooked_write_unsigned(), restore(), riscv_push_dummy_call(), riscv_regcache_cooked_write(), rs6000_lynx178_push_dummy_call(), rs6000_lynx178_return_value(), rs6000_push_dummy_call(), rs6000_return_value(), s390_handle_arg(), s390_register_return_value(), sparc32_store_arguments(), sparc32_store_return_value(), sparc64_store_arguments(), sparc64_store_floating_fields(), sparc64_store_return_value(), tic6x_push_dummy_call(), tic6x_store_return_value(), vax_push_dummy_call(), vax_return_value(), vax_store_arguments(), write_part(), and xtensa_push_dummy_call().
Definition at line 813 of file regcache.c.
References cooked_write(), regcache_descr::gdbarch, gdbarch_byte_order(), reg_buffer::m_descr, regnum, regcache_descr::sizeof_register, and store_integer().
void regcache::cooked_write_part | ( | int | regnum, |
int | offset, | ||
int | len, | ||
const gdb_byte * | buf ) |
Definition at line 1052 of file regcache.c.
References regnum, and write_part().
Referenced by hppa32_return_value(), hppa64_push_dummy_call(), hppa64_return_value(), loongarch_xfer_reg(), m32c_part_write(), mep_store_return_value(), mips_xfer_register(), ppc64_sysv_abi_push_freg(), ppc64_sysv_abi_push_val(), ppc64_sysv_abi_return_value(), ppc64_sysv_abi_return_value_base(), s390_handle_arg(), s390_register_return_value(), tic6x_push_dummy_call(), tic6x_store_return_value(), and z80_return_value().
void regcache::debug_print_register | ( | const char * | func, |
int | regno ) |
Definition at line 1401 of file regcache.c.
References reg_buffer::arch(), extract_unsigned_integer(), func, gdb_printf(), gdb_stdlog, gdbarch_byte_order(), gdbarch_num_regs(), gdbarch_register_name(), reg_buffer::register_buffer(), register_size(), and size.
Referenced by target_fetch_registers(), and target_store_registers().
regcache::DISABLE_COPY_AND_ASSIGN | ( | regcache | ) |
|
inline |
Definition at line 408 of file regcache.h.
References m_ptid.
Referenced by aarch64_dr_state_insert_one_point(), aarch64_dr_state_remove_one_point(), aarch64_fbsd_get_thread_local_address(), aarch64_handle_aligned_watchpoint(), aarch64_handle_breakpoint(), aarch64_handle_unaligned_watchpoint(), aarch64_handle_watchpoint(), aarch64_point_is_aligned(), amd64bsd_fetch_inferior_registers(), amd64bsd_store_inferior_registers(), amd64fbsd_get_thread_local_address(), arm_fbsd_get_thread_local_address(), fetch_fp_register(), fetch_fp_regs(), fetch_fpregs(), fetch_fpregs_from_thread(), fetch_gregs(), fetch_gregs(), fetch_gregs_from_thread(), fetch_mteregs_from_thread(), fetch_pauth_masks_from_thread(), ravenscar_arch_ops::fetch_register(), fetch_register(), fetch_register(), fetch_register(), fetch_register(), fetch_register(), linux_nat_trad_target::fetch_register(), fbsd_nat_target::fetch_register_set(), aix_thread_target::fetch_registers(), alpha_bsd_nat_target::fetch_registers(), amd_dbgapi_target::fetch_registers(), amd64_fbsd_nat_target::fetch_registers(), amd64_linux_nat_target::fetch_registers(), bsd_uthread_target::fetch_registers(), hppa_nbsd_nat_target::fetch_registers(), hppa_obsd_nat_target::fetch_registers(), i386_darwin_nat_target::fetch_registers(), i386_fbsd_nat_target::fetch_registers(), i386_gnu_nat_target::fetch_registers(), i386_linux_nat_target::fetch_registers(), loongarch_linux_nat_target::fetch_registers(), m32r_linux_nat_target::fetch_registers(), m68k_bsd_nat_target::fetch_registers(), m68k_linux_nat_target::fetch_registers(), mips_fbsd_nat_target::fetch_registers(), mips_nbsd_nat_target::fetch_registers(), mips64_obsd_nat_target::fetch_registers(), nto_procfs_target::fetch_registers(), ppc_fbsd_nat_target::fetch_registers(), ppc_linux_nat_target::fetch_registers(), ppc_nbsd_nat_target::fetch_registers(), ppc_obsd_nat_target::fetch_registers(), procfs_target::fetch_registers(), ravenscar_thread_target::fetch_registers(), record_btrace_target::fetch_registers(), gdbsim_target::fetch_registers(), remote_target::fetch_registers(), s390_linux_nat_target::fetch_registers(), sh_nbsd_nat_target::fetch_registers(), sol_thread_target::fetch_registers(), tilegx_linux_nat_target::fetch_registers(), vax_bsd_nat_target::fetch_registers(), windows_nat_target::fetch_registers(), or1k_linux_nat_target::fetch_registers(), riscv_linux_nat_target::fetch_registers(), fetch_regs(), fetch_regs_kernel_thread(), fbsd_nat_target::fetch_regset(), fetch_sveregs_from_thread(), fetch_tlsregs_from_thread(), fetch_vfp_regs(), fetch_wmmx_regs(), fetch_xtregs(), fetch_za_from_thread(), fetch_zt_from_thread(), core_target::get_core_register_section(), ravenscar_thread_target::get_fpu_state(), get_thread_arch_regcache(), get_thread_regcache(), get_thread_regcache_for_ptid(), i386bsd_fetch_inferior_registers(), i386bsd_store_inferior_registers(), i386fbsd_get_thread_local_address(), ia64_linux_fetch_register(), ia64_linux_store_register(), mips_linux_nat_target::mips64_regsets_fetch_registers(), mips_linux_nat_target::mips64_regsets_store_registers(), ppcfbsd_get_thread_local_address(), ravenscar_thread_target::prepare_to_store(), record_btrace_target::prepare_to_store(), procfs_do_thread_registers(), ps_lgetfpregs(), ps_lgetregs(), ps_lsetfpregs(), ps_lsetregs(), registers_changed_ptid(), riscv_fbsd_get_thread_local_address(), set_ptid(), sol_update_thread_list_callback(), sparc32obsd_collect_uthread(), sparc32obsd_supply_uthread(), sparc64obsd_collect_uthread(), sparc64obsd_supply_uthread(), sparc_collect_rwindow(), sparc_fetch_inferior_registers(), sparc_store_inferior_registers(), sparc_supply_rwindow(), store_debug_register(), store_debug_register_pair(), store_fp_register(), store_fp_regs(), store_fpregs(), store_fpregs_to_thread(), store_gregs(), store_gregs(), store_gregs_to_thread(), store_mteregs_to_thread(), store_register(), store_register(), store_register(), store_register(), linux_nat_trad_target::store_register(), ravenscar_arch_ops::store_register(), store_register(), fbsd_nat_target::store_register_set(), aix_thread_target::store_registers(), alpha_bsd_nat_target::store_registers(), amd_dbgapi_target::store_registers(), amd64_fbsd_nat_target::store_registers(), amd64_linux_nat_target::store_registers(), bsd_uthread_target::store_registers(), hppa_nbsd_nat_target::store_registers(), i386_darwin_nat_target::store_registers(), i386_fbsd_nat_target::store_registers(), i386_gnu_nat_target::store_registers(), i386_linux_nat_target::store_registers(), loongarch_linux_nat_target::store_registers(), m32r_linux_nat_target::store_registers(), m68k_bsd_nat_target::store_registers(), m68k_linux_nat_target::store_registers(), mips_fbsd_nat_target::store_registers(), mips_nbsd_nat_target::store_registers(), mips64_obsd_nat_target::store_registers(), nto_procfs_target::store_registers(), ppc_fbsd_nat_target::store_registers(), ppc_linux_nat_target::store_registers(), ppc_nbsd_nat_target::store_registers(), ppc_obsd_nat_target::store_registers(), procfs_target::store_registers(), ravenscar_thread_target::store_registers(), record_btrace_target::store_registers(), gdbsim_target::store_registers(), remote_target::store_registers(), s390_linux_nat_target::store_registers(), sh_nbsd_nat_target::store_registers(), sol_thread_target::store_registers(), tilegx_linux_nat_target::store_registers(), vax_bsd_nat_target::store_registers(), windows_nat_target::store_registers(), or1k_linux_nat_target::store_registers(), riscv_linux_nat_target::store_registers(), store_regs(), store_regs(), store_regs_kernel_thread(), fbsd_nat_target::store_regset(), store_sveregs_to_thread(), store_tlsregs_to_thread(), store_vfp_regs(), store_wmmx_regs(), store_xtregs(), store_za_to_thread(), and store_zt_to_thread().
|
overridevirtual |
Reimplemented from detached_regcache.
Definition at line 586 of file regcache.c.
References reg_buffer::assert_regnum(), reg_buffer::get_register_status(), m_inf_for_target_calls, reg_buffer::m_register_status, maybe_switch_inferior(), regnum, and target_fetch_registers().
Referenced by efp_pseudo_register_write(), and remote_target::prepare_to_store().
void regcache::raw_write | ( | int | regnum, |
const gdb_byte * | buf ) |
Definition at line 833 of file regcache.c.
References reg_buffer::arch(), reg_buffer::assert_regnum(), gdbarch_cannot_store_register(), reg_buffer::get_register_status(), reg_buffer::invalidate(), reg_buffer::m_descr, m_inf_for_target_calls, maybe_switch_inferior(), reg_buffer::raw_supply(), reg_buffer::register_buffer(), regnum, regcache_descr::sizeof_register, target_prepare_to_store(), and target_store_registers().
Referenced by aarch64_pseudo_write(), aarch64_pseudo_write_1(), aarch64_sme_pseudo_register_write(), amd64_pseudo_register_write(), amd64_return_value(), arm_neon_quad_write(), arm_pseudo_write(), bfin_pseudo_register_write(), cooked_write(), csky_pseudo_register_write(), dfp_pseudo_register_write(), do_regcache_raw_write(), frv_pseudo_register_write(), h8300_pseudo_register_write(), i386_darwin_push_dummy_call(), i386_pseudo_register_write(), i386_store_return_value(), i387_reset_bnd_regs(), iq2000_push_dummy_call(), iq2000_store_return_value(), m32c_banked_write(), m32c_raw_write(), m68hc11_store_return_value(), m68k_store_return_value(), m68k_svr4_store_return_value(), mep_pseudo_cr32_write(), mep_pseudo_cr64_write(), mep_pseudo_register_write(), mips_pseudo_register_write(), mn10300_store_return_value(), nds32_pseudo_register_write(), raw_write(), regcache_raw_write_signed(), regcache_raw_write_unsigned(), riscv_pseudo_register_write(), rl78_pseudo_register_write(), s390_pseudo_register_write(), sh_pseudo_register_write(), sh_store_return_value_fpu(), sh_store_return_value_nofpu(), sparc32_pseudo_register_write(), sparc64_pseudo_register_write(), tilegx_store_return_value(), v850_store_return_value(), v_alias_pseudo_register_write(), vsx_pseudo_register_write(), write_part(), xstormy16_store_return_value(), xtensa_pseudo_register_write(), and xtensa_store_return_value().
Definition at line 665 of file regcache.c.
References reg_buffer::assert_regnum(), regcache_descr::gdbarch, gdbarch_byte_order(), reg_buffer::m_descr, raw_write(), regnum, regcache_descr::sizeof_register, and store_integer().
void regcache::raw_write_part | ( | int | regnum, |
int | offset, | ||
int | len, | ||
const gdb_byte * | buf ) |
Definition at line 1032 of file regcache.c.
References reg_buffer::assert_regnum(), regnum, and write_part().
Referenced by aarch64_pseudo_write(), amd64_push_arguments(), amd64_return_value(), amd64_windows_return_value(), arm_mve_pseudo_write(), efp_pseudo_register_write(), i386_store_return_value(), m68hc11_store_return_value(), m68k_store_return_value(), mips_pseudo_register_write(), mn10300_store_return_value(), and xtensa_store_return_value().
void regcache::restore | ( | readonly_detached_regcache * | src | ) |
Definition at line 277 of file regcache.c.
References reg_buffer::arch(), cooked_write(), regcache_descr::gdbarch, gdbarch_register_reggroup_p(), reg_buffer::m_descr, reg_buffer::m_has_pseudo, reg_buffer::m_register_status, regcache_descr::nr_cooked_registers, reg_buffer::register_buffer(), regnum, and restore_reggroup.
Referenced by fork_load_infrun_state(), frame_pop(), and infcall_suspend_state::restore().
|
inline |
Definition at line 415 of file regcache.h.
References m_ptid, and ptid().
Referenced by temporarily_change_regcache_ptid::temporarily_change_regcache_ptid(), and temporarily_change_regcache_ptid::~temporarily_change_regcache_ptid().
void regcache::supply_regset | ( | const struct regset * | regset, |
int | regbase, | ||
int | regnum, | ||
const void * | buf, | ||
size_t | size ) |
Definition at line 1261 of file regcache.c.
References regnum, size, and transfer_regset().
Referenced by aarch64_fbsd_supply_tls_regset(), aarch64_linux_supply_za_regset(), aarch64_linux_supply_zt_regset(), arm_fbsd_supply_tls_regset(), regcache_supply_regset(), riscv_supply_regset(), supply_regset(), and supply_sve_regset().
|
inline |
Definition at line 394 of file regcache.h.
References regnum, size, and supply_regset().
|
private |
Definition at line 1197 of file regcache.c.
References regcache_map_entry::count, reg_buffer::m_descr, REGCACHE_MAP_SKIP, regset::regmap, regcache_map_entry::regno, regnum, size, regcache_map_entry::size, regcache_descr::sizeof_register, and transfer_regset_register().
Referenced by collect_regset(), and supply_regset().
|
private |
Definition at line 1162 of file regcache.c.
References reg_buffer::arch(), reg_buffer::raw_collect_part(), reg_buffer::raw_supply(), reg_buffer::raw_supply_part(), reg_buffer::raw_supply_zeroed(), register_size(), and regnum.
Referenced by transfer_regset().
|
private |
Definition at line 951 of file regcache.c.
References reg_buffer::arch(), readable_regcache::cooked_read(), cooked_write(), readable_regcache::raw_read(), raw_write(), register_size(), regnum, and status.
Referenced by cooked_write_part(), and raw_write_part().
|
friend |
Definition at line 350 of file regcache.c.
|
private |
Definition at line 450 of file regcache.h.
Referenced by aspace().
|
private |
Definition at line 459 of file regcache.h.
Referenced by raw_update(), and raw_write().
|
private |
Definition at line 463 of file regcache.h.
Referenced by ptid(), regcache(), and set_ptid().