GDB (xrefs)
Loading...
Searching...
No Matches
Macros | Functions | Variables
arm-linux-tdep.c File Reference
#include "defs.h"
#include "target.h"
#include "value.h"
#include "gdbtypes.h"
#include "gdbcore.h"
#include "frame.h"
#include "regcache.h"
#include "solib-svr4.h"
#include "osabi.h"
#include "regset.h"
#include "trad-frame.h"
#include "tramp-frame.h"
#include "breakpoint.h"
#include "auxv.h"
#include "xml-syscall.h"
#include "expop.h"
#include "aarch32-tdep.h"
#include "arch/arm.h"
#include "arch/arm-get-next-pcs.h"
#include "arch/arm-linux.h"
#include "arm-tdep.h"
#include "arm-linux-tdep.h"
#include "linux-tdep.h"
#include "glibc-tdep.h"
#include "arch-utils.h"
#include "inferior.h"
#include "infrun.h"
#include "gdbthread.h"
#include "symfile.h"
#include "record-full.h"
#include "linux-record.h"
#include "cli/cli-utils.h"
#include "stap-probe.h"
#include "parser-defs.h"
#include "user-regs.h"
#include <ctype.h>
#include "elf/common.h"

Go to the source code of this file.

Macros

#define ARM_LINUX_JB_ELEMENT_SIZE   ARM_INT_REGISTER_SIZE
 
#define ARM_LINUX_JB_PC_FPA   21
 
#define ARM_LINUX_JB_PC_EABI   9
 
#define ARM_LINUX_SIGRETURN_INSTR   0xef900077
 
#define ARM_LINUX_RT_SIGRETURN_INSTR   0xef9000ad
 
#define ARM_SET_R7_SIGRETURN   0xe3a07077
 
#define ARM_SET_R7_RT_SIGRETURN   0xe3a070ad
 
#define ARM_EABI_SYSCALL   0xef000000
 
#define THUMB2_SET_R7_SIGRETURN1   0xf04f
 
#define THUMB2_SET_R7_SIGRETURN2   0x0777
 
#define THUMB2_SET_R7_RT_SIGRETURN1   0xf04f
 
#define THUMB2_SET_R7_RT_SIGRETURN2   0x07ad
 
#define THUMB2_EABI_SYSCALL   0xdf00
 
#define ARM_OABI_SYSCALL_RESTART_SYSCALL   0xef900000
 
#define ARM_LDR_PC_SP_12   0xe49df00c
 
#define ARM_LDR_PC_SP_4   0xe49df004
 
#define ARM_SIGRETURN   119
 
#define ARM_RT_SIGRETURN   173
 
#define ARM_LINUX_SIZEOF_GREGSET   (18 * ARM_INT_REGISTER_SIZE)
 
#define typeNone   0x00
 
#define typeSingle   0x01
 
#define typeDouble   0x02
 
#define typeExtended   0x03
 
#define ARM_LINUX_SIZEOF_VFP   (32 * 8 + 4)
 

Functions

static CORE_ADDR arm_linux_get_next_pcs_syscall_next_pc (struct arm_get_next_pcs *self)
 
static void arm_linux_sigtramp_cache (frame_info_ptr this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func, int regs_offset)
 
static void arm_linux_sigreturn_init (const struct tramp_frame *self, frame_info_ptr this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func)
 
static void arm_linux_rt_sigreturn_init (const struct tramp_frame *self, frame_info_ptr this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func)
 
static void arm_linux_restart_syscall_init (const struct tramp_frame *self, frame_info_ptr this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func)
 
void arm_linux_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs_buf, size_t len)
 
void arm_linux_collect_gregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs_buf, size_t len)
 
void supply_nwfpe_register (struct regcache *regcache, int regno, const gdb_byte *regs)
 
void collect_nwfpe_register (const struct regcache *regcache, int regno, gdb_byte *regs)
 
void arm_linux_supply_nwfpe (const struct regset *regset, struct regcache *regcache, int regnum, const void *regs_buf, size_t len)
 
void arm_linux_collect_nwfpe (const struct regset *regset, const struct regcache *regcache, int regnum, void *regs_buf, size_t len)
 
static void arm_linux_supply_vfp (const struct regset *regset, struct regcache *regcache, int regnum, const void *regs_buf, size_t len)
 
static void arm_linux_collect_vfp (const struct regset *regset, const struct regcache *regcache, int regnum, void *regs_buf, size_t len)
 
static void arm_linux_iterate_over_regset_sections (struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
 
static const struct target_descarm_linux_core_read_description (struct gdbarch *gdbarch, struct target_ops *target, bfd *abfd)
 
static int arm_linux_sigreturn_return_addr (frame_info_ptr frame, unsigned long svc_number, CORE_ADDR *pc, int *is_thumb)
 
static CORE_ADDR arm_linux_sigreturn_next_pc (struct regcache *regcache, unsigned long svc_number, int *is_thumb)
 
static LONGEST arm_linux_get_syscall_number (struct gdbarch *gdbarch, thread_info *thread)
 
static std::vector< CORE_ADDR > arm_linux_software_single_step (struct regcache *regcache)
 
static void arm_linux_cleanup_svc (struct gdbarch *gdbarch, struct regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 
static int arm_linux_copy_svc (struct gdbarch *gdbarch, struct regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 
static void cleanup_kernel_helper_return (struct gdbarch *gdbarch, struct regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 
static void arm_catch_kernel_helper_return (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 
static displaced_step_copy_insn_closure_up arm_linux_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
 
static int arm_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
 
static expr::operation_up arm_stap_parse_special_token (struct gdbarch *gdbarch, struct stap_parse_info *p)
 
static enum gdb_syscall arm_canonicalize_syscall (int syscall)
 
static int arm_all_but_pc_registers_record (struct regcache *regcache)
 
static int arm_linux_syscall_record (struct regcache *regcache, unsigned long svc_number)
 
static CORE_ADDR arm_linux_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
 
static std::string arm_linux_gcc_target_options (struct gdbarch *gdbarch)
 
static void arm_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 
void _initialize_arm_linux_tdep ()
 

Variables

static const gdb_byte arm_linux_arm_le_breakpoint [] = { 0x01, 0x00, 0x9f, 0xef }
 
static const gdb_byte arm_linux_arm_be_breakpoint [] = { 0xef, 0x9f, 0x00, 0x01 }
 
static const gdb_byte eabi_linux_arm_le_breakpoint [] = { 0xf0, 0x01, 0xf0, 0xe7 }
 
static const gdb_byte eabi_linux_arm_be_breakpoint [] = { 0xe7, 0xf0, 0x01, 0xf0 }
 
static const gdb_byte arm_linux_thumb_be_breakpoint [] = {0xde, 0x01}
 
static const gdb_byte arm_linux_thumb_le_breakpoint [] = {0x01, 0xde}
 
static const gdb_byte arm_linux_thumb2_be_breakpoint [] = { 0xf7, 0xf0, 0xa0, 0x00 }
 
static const gdb_byte arm_linux_thumb2_le_breakpoint [] = { 0xf0, 0xf7, 0x00, 0xa0 }
 
static struct arm_get_next_pcs_ops arm_linux_get_next_pcs_ops
 
static struct tramp_frame arm_linux_sigreturn_tramp_frame
 
static struct tramp_frame arm_linux_rt_sigreturn_tramp_frame
 
static struct tramp_frame arm_eabi_linux_sigreturn_tramp_frame
 
static struct tramp_frame arm_eabi_linux_rt_sigreturn_tramp_frame
 
static struct tramp_frame thumb2_eabi_linux_sigreturn_tramp_frame
 
static struct tramp_frame thumb2_eabi_linux_rt_sigreturn_tramp_frame
 
static struct tramp_frame arm_linux_restart_syscall_tramp_frame
 
static struct tramp_frame arm_kernel_linux_restart_syscall_tramp_frame
 
static const struct regset arm_linux_gregset
 
static const struct regset arm_linux_fpregset
 
static const struct regset arm_linux_vfpregset
 
static linux_record_tdep arm_linux_record_tdep
 

Macro Definition Documentation

◆ ARM_EABI_SYSCALL

#define ARM_EABI_SYSCALL   0xef000000

Definition at line 247 of file arm-linux-tdep.c.

◆ ARM_LDR_PC_SP_12

#define ARM_LDR_PC_SP_12   0xe49df00c

Definition at line 259 of file arm-linux-tdep.c.

◆ ARM_LDR_PC_SP_4

#define ARM_LDR_PC_SP_4   0xe49df004

Definition at line 260 of file arm-linux-tdep.c.

Referenced by arm_linux_restart_syscall_init().

◆ ARM_LINUX_JB_ELEMENT_SIZE

#define ARM_LINUX_JB_ELEMENT_SIZE   ARM_INT_REGISTER_SIZE

Definition at line 107 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ ARM_LINUX_JB_PC_EABI

#define ARM_LINUX_JB_PC_EABI   9

Definition at line 109 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ ARM_LINUX_JB_PC_FPA

#define ARM_LINUX_JB_PC_FPA   21

Definition at line 108 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ ARM_LINUX_RT_SIGRETURN_INSTR

#define ARM_LINUX_RT_SIGRETURN_INSTR   0xef9000ad

Definition at line 239 of file arm-linux-tdep.c.

◆ ARM_LINUX_SIGRETURN_INSTR

#define ARM_LINUX_SIGRETURN_INSTR   0xef900077

Definition at line 238 of file arm-linux-tdep.c.

◆ ARM_LINUX_SIZEOF_GREGSET

#define ARM_LINUX_SIZEOF_GREGSET   (18 * ARM_INT_REGISTER_SIZE)

Definition at line 475 of file arm-linux-tdep.c.

Referenced by arm_linux_iterate_over_regset_sections().

◆ ARM_LINUX_SIZEOF_VFP

#define ARM_LINUX_SIZEOF_VFP   (32 * 8 + 4)

Definition at line 658 of file arm-linux-tdep.c.

Referenced by arm_linux_iterate_over_regset_sections().

◆ ARM_OABI_SYSCALL_RESTART_SYSCALL

#define ARM_OABI_SYSCALL_RESTART_SYSCALL   0xef900000

Definition at line 258 of file arm-linux-tdep.c.

◆ ARM_RT_SIGRETURN

#define ARM_RT_SIGRETURN   173

◆ ARM_SET_R7_RT_SIGRETURN

#define ARM_SET_R7_RT_SIGRETURN   0xe3a070ad

Definition at line 246 of file arm-linux-tdep.c.

◆ ARM_SET_R7_SIGRETURN

#define ARM_SET_R7_SIGRETURN   0xe3a07077

Definition at line 245 of file arm-linux-tdep.c.

◆ ARM_SIGRETURN

#define ARM_SIGRETURN   119

◆ THUMB2_EABI_SYSCALL

#define THUMB2_EABI_SYSCALL   0xdf00

Definition at line 254 of file arm-linux-tdep.c.

◆ THUMB2_SET_R7_RT_SIGRETURN1

#define THUMB2_SET_R7_RT_SIGRETURN1   0xf04f

Definition at line 252 of file arm-linux-tdep.c.

◆ THUMB2_SET_R7_RT_SIGRETURN2

#define THUMB2_SET_R7_RT_SIGRETURN2   0x07ad

Definition at line 253 of file arm-linux-tdep.c.

◆ THUMB2_SET_R7_SIGRETURN1

#define THUMB2_SET_R7_SIGRETURN1   0xf04f

Definition at line 250 of file arm-linux-tdep.c.

◆ THUMB2_SET_R7_SIGRETURN2

#define THUMB2_SET_R7_SIGRETURN2   0x0777

Definition at line 251 of file arm-linux-tdep.c.

◆ typeDouble

#define typeDouble   0x02

Definition at line 547 of file arm-linux-tdep.c.

Referenced by collect_nwfpe_register(), and supply_nwfpe_register().

◆ typeExtended

#define typeExtended   0x03

Definition at line 548 of file arm-linux-tdep.c.

Referenced by collect_nwfpe_register(), and supply_nwfpe_register().

◆ typeNone

#define typeNone   0x00

Definition at line 545 of file arm-linux-tdep.c.

◆ typeSingle

#define typeSingle   0x01

Definition at line 546 of file arm-linux-tdep.c.

Referenced by collect_nwfpe_register(), and supply_nwfpe_register().

Function Documentation

◆ _initialize_arm_linux_tdep()

void _initialize_arm_linux_tdep ( )

◆ arm_all_but_pc_registers_record()

static int arm_all_but_pc_registers_record ( struct regcache * regcache)
static

◆ arm_canonicalize_syscall()

static enum gdb_syscall arm_canonicalize_syscall ( int syscall)
static

Definition at line 1254 of file arm-linux-tdep.c.

References gdb_old_mmap, gdb_old_readdir, gdb_sys_accept, gdb_sys_access, gdb_sys_acct, gdb_sys_add_key, gdb_sys_adjtimex, gdb_sys_alarm, gdb_sys_bdflush, gdb_sys_bind, gdb_sys_brk, gdb_sys_capget, gdb_sys_capset, gdb_sys_chdir, gdb_sys_chmod, gdb_sys_chown, gdb_sys_chroot, gdb_sys_clock_getres, gdb_sys_clock_gettime, gdb_sys_clock_nanosleep, gdb_sys_clock_settime, gdb_sys_clone, gdb_sys_close, gdb_sys_connect, gdb_sys_creat, gdb_sys_delete_module, gdb_sys_dup, gdb_sys_dup2, gdb_sys_dup3, gdb_sys_epoll_create, gdb_sys_epoll_create1, gdb_sys_epoll_ctl, gdb_sys_epoll_pwait, gdb_sys_epoll_wait, gdb_sys_eventfd2, gdb_sys_execve, gdb_sys_exit, gdb_sys_exit_group, gdb_sys_faccessat, gdb_sys_fallocate, gdb_sys_fchdir, gdb_sys_fchmod, gdb_sys_fchmodat, gdb_sys_fchown, gdb_sys_fchown16, gdb_sys_fchownat, gdb_sys_fcntl, gdb_sys_fcntl64, gdb_sys_fdatasync, gdb_sys_fgetxattr, gdb_sys_flistxattr, gdb_sys_flock, gdb_sys_fork, gdb_sys_fremovexattr, gdb_sys_fsetxattr, gdb_sys_fstat, gdb_sys_fstat64, gdb_sys_fstatat64, gdb_sys_fstatfs, gdb_sys_fstatfs64, gdb_sys_fsync, gdb_sys_ftruncate, gdb_sys_ftruncate64, gdb_sys_futex, gdb_sys_futimesat, gdb_sys_get_mempolicy, gdb_sys_get_robust_list, gdb_sys_getcpu, gdb_sys_getcwd, gdb_sys_getdents, gdb_sys_getdents64, gdb_sys_getegid, gdb_sys_getegid16, gdb_sys_geteuid, gdb_sys_geteuid16, gdb_sys_getgid, gdb_sys_getgid16, gdb_sys_getgroups, gdb_sys_getgroups16, gdb_sys_getitimer, gdb_sys_getpeername, gdb_sys_getpgid, gdb_sys_getpgrp, gdb_sys_getpid, gdb_sys_getppid, gdb_sys_getpriority, gdb_sys_getrandom, gdb_sys_getresgid, gdb_sys_getresuid, gdb_sys_getresuid16, gdb_sys_getrlimit, gdb_sys_getrusage, gdb_sys_getsid, gdb_sys_getsockname, gdb_sys_getsockopt, gdb_sys_gettid, gdb_sys_gettimeofday, gdb_sys_getuid, gdb_sys_getuid16, gdb_sys_getxattr, gdb_sys_init_module, gdb_sys_inotify_add_watch, gdb_sys_inotify_init, gdb_sys_inotify_init1, gdb_sys_inotify_rm_watch, gdb_sys_io_cancel, gdb_sys_io_destroy, gdb_sys_io_getevents, gdb_sys_io_setup, gdb_sys_io_submit, gdb_sys_ioctl, gdb_sys_ioprio_get, gdb_sys_ioprio_set, gdb_sys_ipc, gdb_sys_kexec_load, gdb_sys_keyctl, gdb_sys_kill, gdb_sys_lchown, gdb_sys_lchown16, gdb_sys_lgetxattr, gdb_sys_link, gdb_sys_linkat, gdb_sys_listen, gdb_sys_listxattr, gdb_sys_llistxattr, gdb_sys_llseek, gdb_sys_lookup_dcookie, gdb_sys_lremovexattr, gdb_sys_lseek, gdb_sys_lsetxattr, gdb_sys_lstat, gdb_sys_lstat64, gdb_sys_madvise, gdb_sys_mbind, gdb_sys_mincore, gdb_sys_mkdir, gdb_sys_mkdirat, gdb_sys_mknod, gdb_sys_mknodat, gdb_sys_mlock, gdb_sys_mlockall, gdb_sys_mmap2, gdb_sys_mount, gdb_sys_move_pages, gdb_sys_mprotect, gdb_sys_mq_getsetattr, gdb_sys_mq_notify, gdb_sys_mq_open, gdb_sys_mq_timedreceive, gdb_sys_mq_timedsend, gdb_sys_mq_unlink, gdb_sys_mremap, gdb_sys_msgctl, gdb_sys_msgget, gdb_sys_msgrcv, gdb_sys_msgsnd, gdb_sys_msync, gdb_sys_munlock, gdb_sys_munlockall, gdb_sys_munmap, gdb_sys_nanosleep, gdb_sys_nfsservctl, gdb_sys_nice, gdb_sys_no_syscall, gdb_sys_oldumount, gdb_sys_open, gdb_sys_openat, gdb_sys_pause, gdb_sys_personality, gdb_sys_pipe, gdb_sys_pipe2, gdb_sys_pivot_root, gdb_sys_poll, gdb_sys_ppoll, gdb_sys_prctl, gdb_sys_pread64, gdb_sys_pselect6, gdb_sys_ptrace, gdb_sys_pwrite64, gdb_sys_quotactl, gdb_sys_read, gdb_sys_readahead, gdb_sys_readlink, gdb_sys_readlinkat, gdb_sys_readv, gdb_sys_reboot, gdb_sys_recv, gdb_sys_recvfrom, gdb_sys_recvmsg, gdb_sys_remap_file_pages, gdb_sys_removexattr, gdb_sys_rename, gdb_sys_renameat, gdb_sys_request_key, gdb_sys_restart_syscall, gdb_sys_rmdir, gdb_sys_rt_sigaction, gdb_sys_rt_sigpending, gdb_sys_rt_sigprocmask, gdb_sys_rt_sigqueueinfo, gdb_sys_rt_sigreturn, gdb_sys_rt_sigsuspend, gdb_sys_rt_sigtimedwait, gdb_sys_sched_get_priority_max, gdb_sys_sched_get_priority_min, gdb_sys_sched_getaffinity, gdb_sys_sched_getparam, gdb_sys_sched_getscheduler, gdb_sys_sched_rr_get_interval, gdb_sys_sched_setaffinity, gdb_sys_sched_setparam, gdb_sys_sched_setscheduler, gdb_sys_sched_yield, gdb_sys_select, gdb_sys_semctl, gdb_sys_semget, gdb_sys_semop, gdb_sys_semtimedop, gdb_sys_sendfile, gdb_sys_sendfile64, gdb_sys_sendmsg, gdb_sys_sendto, gdb_sys_set_mempolicy, gdb_sys_set_robust_list, gdb_sys_set_tid_address, gdb_sys_setdomainname, gdb_sys_setfsgid, gdb_sys_setfsgid16, gdb_sys_setfsuid, gdb_sys_setfsuid16, gdb_sys_setgid, gdb_sys_setgid16, gdb_sys_setgroups, gdb_sys_setgroups16, gdb_sys_sethostname, gdb_sys_setitimer, gdb_sys_setpgid, gdb_sys_setpriority, gdb_sys_setregid, gdb_sys_setregid16, gdb_sys_setresgid, gdb_sys_setresuid, gdb_sys_setresuid16, gdb_sys_setreuid, gdb_sys_setreuid16, gdb_sys_setrlimit, gdb_sys_setsid, gdb_sys_setsockopt, gdb_sys_settimeofday, gdb_sys_setuid, gdb_sys_setuid16, gdb_sys_setxattr, gdb_sys_shmat, gdb_sys_shmctl, gdb_sys_shmdt, gdb_sys_shmget, gdb_sys_shutdown, gdb_sys_sigaction, gdb_sys_sigaltstack, gdb_sys_sigpending, gdb_sys_sigprocmask, gdb_sys_sigreturn, gdb_sys_sigsuspend, gdb_sys_socket, gdb_sys_socketcall, gdb_sys_socketpair, gdb_sys_splice, gdb_sys_stat, gdb_sys_stat64, gdb_sys_statfs, gdb_sys_statfs64, gdb_sys_stime, gdb_sys_swapoff, gdb_sys_swapon, gdb_sys_symlink, gdb_sys_symlinkat, gdb_sys_sync, gdb_sys_sysctl, gdb_sys_sysfs, gdb_sys_sysinfo, gdb_sys_syslog, gdb_sys_tee, gdb_sys_tgkill, gdb_sys_time, gdb_sys_timer_create, gdb_sys_timer_delete, gdb_sys_timer_getoverrun, gdb_sys_timer_gettime, gdb_sys_timer_settime, gdb_sys_times, gdb_sys_tkill, gdb_sys_truncate, gdb_sys_truncate64, gdb_sys_umask, gdb_sys_umount, gdb_sys_uname, gdb_sys_unlink, gdb_sys_unlinkat, gdb_sys_unshare, gdb_sys_uselib, gdb_sys_ustat, gdb_sys_utime, gdb_sys_utimes, gdb_sys_vfork, gdb_sys_vhangup, gdb_sys_vmsplice, gdb_sys_wait4, gdb_sys_waitid, gdb_sys_write, and gdb_sys_writev.

Referenced by arm_linux_syscall_record().

◆ arm_catch_kernel_helper_return()

static void arm_catch_kernel_helper_return ( struct gdbarch * gdbarch,
CORE_ADDR from,
CORE_ADDR to,
struct regcache * regs,
arm_displaced_step_copy_insn_closure * dsc )
static

◆ arm_linux_cleanup_svc()

static void arm_linux_cleanup_svc ( struct gdbarch * gdbarch,
struct regcache * regs,
arm_displaced_step_copy_insn_closure * dsc )
static

◆ arm_linux_collect_gregset()

void arm_linux_collect_gregset ( const struct regset * regset,
const struct regcache * regcache,
int regnum,
void * gregs_buf,
size_t len )

◆ arm_linux_collect_nwfpe()

void arm_linux_collect_nwfpe ( const struct regset * regset,
const struct regcache * regcache,
int regnum,
void * regs_buf,
size_t len )

◆ arm_linux_collect_vfp()

static void arm_linux_collect_vfp ( const struct regset * regset,
const struct regcache * regcache,
int regnum,
void * regs_buf,
size_t len )
static

◆ arm_linux_copy_svc()

static int arm_linux_copy_svc ( struct gdbarch * gdbarch,
struct regcache * regs,
arm_displaced_step_copy_insn_closure * dsc )
static

◆ arm_linux_core_read_description()

static const struct target_desc * arm_linux_core_read_description ( struct gdbarch * gdbarch,
struct target_ops * target,
bfd * abfd )
static

◆ arm_linux_displaced_step_copy_insn()

static displaced_step_copy_insn_closure_up arm_linux_displaced_step_copy_insn ( struct gdbarch * gdbarch,
CORE_ADDR from,
CORE_ADDR to,
struct regcache * regs )
static

◆ arm_linux_gcc_target_options()

static std::string arm_linux_gcc_target_options ( struct gdbarch * gdbarch)
static

Definition at line 1704 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_linux_get_next_pcs_syscall_next_pc()

static CORE_ADDR arm_linux_get_next_pcs_syscall_next_pc ( struct arm_get_next_pcs * self)
static

◆ arm_linux_get_syscall_number()

static LONGEST arm_linux_get_syscall_number ( struct gdbarch * gdbarch,
thread_info * thread )
static

◆ arm_linux_init_abi()

static void arm_linux_init_abi ( struct gdbarch_info info,
struct gdbarch * gdbarch )
static

Definition at line 1711 of file arm-linux-tdep.c.

References linux_record_tdep::arg1, linux_record_tdep::arg2, linux_record_tdep::arg3, linux_record_tdep::arg4, linux_record_tdep::arg5, linux_record_tdep::arg6, linux_record_tdep::arg7, ARM_A1_REGNUM, ARM_ABI_AAPCS, arm_gdbarch_tdep::arm_breakpoint, arm_gdbarch_tdep::arm_breakpoint_size, arm_displaced_step_fixup(), arm_eabi_linux_rt_sigreturn_tramp_frame, arm_eabi_linux_sigreturn_tramp_frame, ARM_FLOAT_AUTO, ARM_FLOAT_FPA, ARM_FLOAT_SOFT_FPA, ARM_FLOAT_SOFT_VFP, ARM_FLOAT_VFP, arm_kernel_linux_restart_syscall_tramp_frame, arm_linux_arm_be_breakpoint, arm_linux_arm_le_breakpoint, arm_linux_core_read_description(), arm_linux_displaced_step_copy_insn(), arm_linux_gcc_target_options(), arm_linux_get_syscall_number(), arm_linux_iterate_over_regset_sections(), ARM_LINUX_JB_ELEMENT_SIZE, ARM_LINUX_JB_PC_EABI, ARM_LINUX_JB_PC_FPA, arm_linux_record_tdep, arm_linux_restart_syscall_tramp_frame, arm_linux_rt_sigreturn_tramp_frame, arm_linux_sigreturn_tramp_frame, arm_linux_skip_trampoline_code(), arm_linux_software_single_step(), arm_linux_syscall_record(), arm_linux_thumb2_be_breakpoint, arm_linux_thumb2_le_breakpoint, arm_linux_thumb_be_breakpoint, arm_linux_thumb_le_breakpoint, arm_process_record(), arm_stap_is_single_operand(), arm_stap_parse_special_token(), arm_gdbarch_tdep::arm_syscall_record, eabi_linux_arm_be_breakpoint, eabi_linux_arm_le_breakpoint, linux_record_tdep::fcntl_F_GETLK, linux_record_tdep::fcntl_F_GETLK64, linux_record_tdep::fcntl_F_SETLK64, linux_record_tdep::fcntl_F_SETLKW64, gdbarch_int_bit(), gdbarch_long_bit(), gdbarch_ptr_bit(), glibc_skip_solib_resolver(), linux_record_tdep::ioctl_FIOASYNC, linux_record_tdep::ioctl_FIOCLEX, linux_record_tdep::ioctl_FIONBIO, linux_record_tdep::ioctl_FIONCLEX, linux_record_tdep::ioctl_FIONREAD, linux_record_tdep::ioctl_FIOQSIZE, linux_record_tdep::ioctl_TCFLSH, linux_record_tdep::ioctl_TCGETA, linux_record_tdep::ioctl_TCGETS, linux_record_tdep::ioctl_TCGETS2, linux_record_tdep::ioctl_TCSBRK, linux_record_tdep::ioctl_TCSBRKP, linux_record_tdep::ioctl_TCSETA, linux_record_tdep::ioctl_TCSETAF, linux_record_tdep::ioctl_TCSETAW, linux_record_tdep::ioctl_TCSETS, linux_record_tdep::ioctl_TCSETS2, linux_record_tdep::ioctl_TCSETSF, linux_record_tdep::ioctl_TCSETSF2, linux_record_tdep::ioctl_TCSETSW, linux_record_tdep::ioctl_TCSETSW2, linux_record_tdep::ioctl_TCXONC, linux_record_tdep::ioctl_TIOCCBRK, linux_record_tdep::ioctl_TIOCCONS, linux_record_tdep::ioctl_TIOCEXCL, linux_record_tdep::ioctl_TIOCGETD, linux_record_tdep::ioctl_TIOCGHAYESESP, linux_record_tdep::ioctl_TIOCGICOUNT, linux_record_tdep::ioctl_TIOCGLCKTRMIOS, linux_record_tdep::ioctl_TIOCGPGRP, linux_record_tdep::ioctl_TIOCGPTN, linux_record_tdep::ioctl_TIOCGSERIAL, linux_record_tdep::ioctl_TIOCGSID, linux_record_tdep::ioctl_TIOCGSOFTCAR, linux_record_tdep::ioctl_TIOCGWINSZ, linux_record_tdep::ioctl_TIOCINQ, linux_record_tdep::ioctl_TIOCLINUX, linux_record_tdep::ioctl_TIOCMBIC, linux_record_tdep::ioctl_TIOCMBIS, linux_record_tdep::ioctl_TIOCMGET, linux_record_tdep::ioctl_TIOCMIWAIT, linux_record_tdep::ioctl_TIOCMSET, linux_record_tdep::ioctl_TIOCNOTTY, linux_record_tdep::ioctl_TIOCNXCL, linux_record_tdep::ioctl_TIOCOUTQ, linux_record_tdep::ioctl_TIOCPKT, linux_record_tdep::ioctl_TIOCSBRK, linux_record_tdep::ioctl_TIOCSCTTY, linux_record_tdep::ioctl_TIOCSERCONFIG, linux_record_tdep::ioctl_TIOCSERGETLSR, linux_record_tdep::ioctl_TIOCSERGETMULTI, linux_record_tdep::ioctl_TIOCSERGSTRUCT, linux_record_tdep::ioctl_TIOCSERGWILD, linux_record_tdep::ioctl_TIOCSERSETMULTI, linux_record_tdep::ioctl_TIOCSERSWILD, linux_record_tdep::ioctl_TIOCSETD, linux_record_tdep::ioctl_TIOCSHAYESESP, linux_record_tdep::ioctl_TIOCSLCKTRMIOS, linux_record_tdep::ioctl_TIOCSPGRP, linux_record_tdep::ioctl_TIOCSPTLCK, linux_record_tdep::ioctl_TIOCSSERIAL, linux_record_tdep::ioctl_TIOCSSOFTCAR, linux_record_tdep::ioctl_TIOCSTI, linux_record_tdep::ioctl_TIOCSWINSZ, linux_record_tdep::ioctl_TIOCTTYGSTRUCT, arm_gdbarch_tdep::jb_elt_size, arm_gdbarch_tdep::jb_pc, linux_ilp32_fetch_link_map_offsets(), linux_init_abi(), arm_gdbarch_tdep::lowest_pc, set_gdbarch_core_read_description(), set_gdbarch_displaced_step_copy_insn(), set_gdbarch_displaced_step_fixup(), set_gdbarch_fetch_tls_load_module_address(), set_gdbarch_gcc_target_options(), set_gdbarch_get_syscall_number(), set_gdbarch_iterate_over_regset_sections(), set_gdbarch_process_record(), set_gdbarch_skip_solib_resolver(), set_gdbarch_skip_trampoline_code(), set_gdbarch_software_single_step(), set_gdbarch_stap_gdb_register_prefix(), set_gdbarch_stap_integer_prefixes(), set_gdbarch_stap_is_single_operand(), set_gdbarch_stap_parse_special_token(), set_gdbarch_stap_register_indirection_prefixes(), set_gdbarch_stap_register_indirection_suffixes(), set_gdbarch_stap_register_prefixes(), set_solib_svr4_fetch_link_map_offsets(), set_xml_syscall_file_name(), linux_record_tdep::size__old_kernel_stat, linux_record_tdep::size_cap_user_data_t, linux_record_tdep::size_epoll_event, linux_record_tdep::size_fd_set, linux_record_tdep::size_flock, linux_record_tdep::size_flock64, linux_record_tdep::size_fs_quota_stat, linux_record_tdep::size_gid_t, linux_record_tdep::size_hayes_esp_config, linux_record_tdep::size_if_dqblk, linux_record_tdep::size_int, linux_record_tdep::size_io_event, linux_record_tdep::size_iocb, linux_record_tdep::size_iovec, linux_record_tdep::size_itimerspec, linux_record_tdep::size_itimerval, linux_record_tdep::size_knfsd_fh, linux_record_tdep::size_loff_t, linux_record_tdep::size_long, linux_record_tdep::size_mem_dqinfo, linux_record_tdep::size_mq_attr, linux_record_tdep::size_msghdr, linux_record_tdep::size_msqid_ds, linux_record_tdep::size_new_utsname, linux_record_tdep::size_NFS_FHSIZE, linux_record_tdep::size_off_t, linux_record_tdep::size_old_dirent, linux_record_tdep::size_old_gid_t, linux_record_tdep::size_old_sigaction, linux_record_tdep::size_old_sigset_t, linux_record_tdep::size_old_uid_t, linux_record_tdep::size_old_utsname, linux_record_tdep::size_oldold_utsname, linux_record_tdep::size_PAGE_SIZE, linux_record_tdep::size_pid_t, linux_record_tdep::size_pointer, linux_record_tdep::size_pollfd, linux_record_tdep::size_rlimit, linux_record_tdep::size_rusage, linux_record_tdep::size_serial_icounter_struct, linux_record_tdep::size_serial_struct, linux_record_tdep::size_shmid_ds, linux_record_tdep::size_sigaction, linux_record_tdep::size_siginfo_t, linux_record_tdep::size_sigset_t, linux_record_tdep::size_size_t, linux_record_tdep::size_sockaddr, linux_record_tdep::size_stack_t, linux_record_tdep::size_stat, linux_record_tdep::size_stat64, linux_record_tdep::size_statfs, linux_record_tdep::size_statfs64, linux_record_tdep::size_sysinfo, linux_record_tdep::size_TASK_COMM_LEN, linux_record_tdep::size_termios, linux_record_tdep::size_termios2, linux_record_tdep::size_time_t, linux_record_tdep::size_timespec, linux_record_tdep::size_timeval, linux_record_tdep::size_timex, linux_record_tdep::size_timezone, linux_record_tdep::size_tms, linux_record_tdep::size_uid_t, linux_record_tdep::size_ulong, linux_record_tdep::size_user_desc, linux_record_tdep::size_ustat, linux_record_tdep::size_winsize, stap_register_indirection_prefixes, stap_register_indirection_suffixes, svr4_fetch_objfile_link_map(), arm_gdbarch_tdep::thumb2_breakpoint, arm_gdbarch_tdep::thumb2_breakpoint_size, thumb2_eabi_linux_rt_sigreturn_tramp_frame, thumb2_eabi_linux_sigreturn_tramp_frame, arm_gdbarch_tdep::thumb_breakpoint, arm_gdbarch_tdep::thumb_breakpoint_size, and tramp_frame_prepend_unwinder().

Referenced by _initialize_arm_linux_tdep().

◆ arm_linux_iterate_over_regset_sections()

static void arm_linux_iterate_over_regset_sections ( struct gdbarch * gdbarch,
iterate_over_regset_sections_cb * cb,
void * cb_data,
const struct regcache * regcache )
static

◆ arm_linux_restart_syscall_init()

static void arm_linux_restart_syscall_init ( const struct tramp_frame * self,
frame_info_ptr this_frame,
struct trad_frame_cache * this_cache,
CORE_ADDR func )
static

◆ arm_linux_rt_sigreturn_init()

static void arm_linux_rt_sigreturn_init ( const struct tramp_frame * self,
frame_info_ptr this_frame,
struct trad_frame_cache * this_cache,
CORE_ADDR func )
static

◆ arm_linux_sigreturn_init()

static void arm_linux_sigreturn_init ( const struct tramp_frame * self,
frame_info_ptr this_frame,
struct trad_frame_cache * this_cache,
CORE_ADDR func )
static

◆ arm_linux_sigreturn_next_pc()

static CORE_ADDR arm_linux_sigreturn_next_pc ( struct regcache * regcache,
unsigned long svc_number,
int * is_thumb )
static

◆ arm_linux_sigreturn_return_addr()

static int arm_linux_sigreturn_return_addr ( frame_info_ptr frame,
unsigned long svc_number,
CORE_ADDR * pc,
int * is_thumb )
static

◆ arm_linux_sigtramp_cache()

static void arm_linux_sigtramp_cache ( frame_info_ptr this_frame,
struct trad_frame_cache * this_cache,
CORE_ADDR func,
int regs_offset )
static

◆ arm_linux_skip_trampoline_code()

static CORE_ADDR arm_linux_skip_trampoline_code ( frame_info_ptr frame,
CORE_ADDR pc )
static

Definition at line 1691 of file arm-linux-tdep.c.

References arm_skip_stub(), and find_solib_trampoline_target().

Referenced by arm_linux_init_abi().

◆ arm_linux_software_single_step()

static std::vector< CORE_ADDR > arm_linux_software_single_step ( struct regcache * regcache)
static

◆ arm_linux_supply_gregset()

void arm_linux_supply_gregset ( const struct regset * regset,
struct regcache * regcache,
int regnum,
const void * gregs_buf,
size_t len )

◆ arm_linux_supply_nwfpe()

void arm_linux_supply_nwfpe ( const struct regset * regset,
struct regcache * regcache,
int regnum,
const void * regs_buf,
size_t len )

◆ arm_linux_supply_vfp()

static void arm_linux_supply_vfp ( const struct regset * regset,
struct regcache * regcache,
int regnum,
const void * regs_buf,
size_t len )
static

◆ arm_linux_syscall_record()

static int arm_linux_syscall_record ( struct regcache * regcache,
unsigned long svc_number )
static

◆ arm_stap_is_single_operand()

static int arm_stap_is_single_operand ( struct gdbarch * gdbarch,
const char * s )
static

Definition at line 1134 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_stap_parse_special_token()

static expr::operation_up arm_stap_parse_special_token ( struct gdbarch * gdbarch,
struct stap_parse_info * p )
static

◆ cleanup_kernel_helper_return()

static void cleanup_kernel_helper_return ( struct gdbarch * gdbarch,
struct regcache * regs,
arm_displaced_step_copy_insn_closure * dsc )
static

◆ collect_nwfpe_register()

void collect_nwfpe_register ( const struct regcache * regcache,
int regno,
gdb_byte * regs )

◆ supply_nwfpe_register()

void supply_nwfpe_register ( struct regcache * regcache,
int regno,
const gdb_byte * regs )

Variable Documentation

◆ arm_eabi_linux_rt_sigreturn_tramp_frame

struct tramp_frame arm_eabi_linux_rt_sigreturn_tramp_frame
static
Initial value:
= {
4,
{
{ ARM_SET_R7_RT_SIGRETURN, ULONGEST_MAX },
{ ARM_EABI_SYSCALL, ULONGEST_MAX },
},
}
#define ARM_EABI_SYSCALL
static void arm_linux_rt_sigreturn_init(const struct tramp_frame *self, frame_info_ptr this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func)
#define ARM_SET_R7_RT_SIGRETURN
@ SIGTRAMP_FRAME
Definition frame.h:198
#define TRAMP_SENTINEL_INSN
Definition tramp-frame.h:44

Definition at line 416 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_eabi_linux_sigreturn_tramp_frame

struct tramp_frame arm_eabi_linux_sigreturn_tramp_frame
static
Initial value:
= {
4,
{
{ ARM_SET_R7_SIGRETURN, ULONGEST_MAX },
{ ARM_EABI_SYSCALL, ULONGEST_MAX },
},
}
static void arm_linux_sigreturn_init(const struct tramp_frame *self, frame_info_ptr this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func)
#define ARM_SET_R7_SIGRETURN

Definition at line 405 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_kernel_linux_restart_syscall_tramp_frame

struct tramp_frame arm_kernel_linux_restart_syscall_tramp_frame
static
Initial value:
= {
4,
{
{ ARM_LDR_PC_SP_4, ULONGEST_MAX },
},
}
#define ARM_OABI_SYSCALL_RESTART_SYSCALL
#define ARM_LDR_PC_SP_4
static void arm_linux_restart_syscall_init(const struct tramp_frame *self, frame_info_ptr this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func)
@ NORMAL_FRAME
Definition frame.h:187

Definition at line 462 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_linux_arm_be_breakpoint

const gdb_byte arm_linux_arm_be_breakpoint[] = { 0xef, 0x9f, 0x00, 0x01 }
static

Definition at line 69 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_linux_arm_le_breakpoint

const gdb_byte arm_linux_arm_le_breakpoint[] = { 0x01, 0x00, 0x9f, 0xef }
static

Definition at line 67 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_linux_fpregset

const struct regset arm_linux_fpregset
static
Initial value:
=
{
}
void arm_linux_supply_nwfpe(const struct regset *regset, struct regcache *regcache, int regnum, const void *regs_buf, size_t len)
void arm_linux_collect_nwfpe(const struct regset *regset, const struct regcache *regcache, int regnum, void *regs_buf, size_t len)

Definition at line 697 of file arm-linux-tdep.c.

Referenced by arm_linux_iterate_over_regset_sections().

◆ arm_linux_get_next_pcs_ops

struct arm_get_next_pcs_ops arm_linux_get_next_pcs_ops
static
Initial value:
= {
}
static CORE_ADDR arm_linux_get_next_pcs_syscall_next_pc(struct arm_get_next_pcs *self)
CORE_ADDR arm_linux_get_next_pcs_fixup(struct arm_get_next_pcs *self, CORE_ADDR nextpc)
Definition arm-linux.c:65
ULONGEST arm_get_next_pcs_read_memory_unsigned_integer(CORE_ADDR memaddr, int len, int byte_order)
Definition arm-tdep.c:7245
CORE_ADDR arm_get_next_pcs_addr_bits_remove(struct arm_get_next_pcs *self, CORE_ADDR val)
Definition arm-tdep.c:7255
int arm_get_next_pcs_is_thumb(struct arm_get_next_pcs *self)
Definition arm-tdep.c:7272

Definition at line 271 of file arm-linux-tdep.c.

Referenced by arm_linux_software_single_step().

◆ arm_linux_gregset

const struct regset arm_linux_gregset
static
Initial value:
=
{
}
void arm_linux_supply_gregset(const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs_buf, size_t len)
void arm_linux_collect_gregset(const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs_buf, size_t len)

Definition at line 692 of file arm-linux-tdep.c.

Referenced by arm_linux_iterate_over_regset_sections().

◆ arm_linux_record_tdep

linux_record_tdep arm_linux_record_tdep
static

Definition at line 1247 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi(), and arm_linux_syscall_record().

◆ arm_linux_restart_syscall_tramp_frame

struct tramp_frame arm_linux_restart_syscall_tramp_frame
static
Initial value:
= {
4,
{
{ ARM_LDR_PC_SP_12, ULONGEST_MAX },
},
}
#define ARM_LDR_PC_SP_12

Definition at line 451 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_linux_rt_sigreturn_tramp_frame

struct tramp_frame arm_linux_rt_sigreturn_tramp_frame
static
Initial value:

Definition at line 395 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_linux_sigreturn_tramp_frame

struct tramp_frame arm_linux_sigreturn_tramp_frame
static
Initial value:
= {
4,
{
{ ARM_LINUX_SIGRETURN_INSTR, ULONGEST_MAX },
},
}
#define ARM_LINUX_SIGRETURN_INSTR

Definition at line 385 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_linux_thumb2_be_breakpoint

const gdb_byte arm_linux_thumb2_be_breakpoint[] = { 0xf7, 0xf0, 0xa0, 0x00 }
static

Definition at line 92 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_linux_thumb2_le_breakpoint

const gdb_byte arm_linux_thumb2_le_breakpoint[] = { 0xf0, 0xf7, 0x00, 0xa0 }
static

Definition at line 94 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_linux_thumb_be_breakpoint

const gdb_byte arm_linux_thumb_be_breakpoint[] = {0xde, 0x01}
static

Definition at line 84 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_linux_thumb_le_breakpoint

const gdb_byte arm_linux_thumb_le_breakpoint[] = {0x01, 0xde}
static

Definition at line 86 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ arm_linux_vfpregset

const struct regset arm_linux_vfpregset
static
Initial value:
=
{
}
static void arm_linux_collect_vfp(const struct regset *regset, const struct regcache *regcache, int regnum, void *regs_buf, size_t len)
static void arm_linux_supply_vfp(const struct regset *regset, struct regcache *regcache, int regnum, const void *regs_buf, size_t len)

Definition at line 702 of file arm-linux-tdep.c.

Referenced by arm_linux_iterate_over_regset_sections().

◆ eabi_linux_arm_be_breakpoint

const gdb_byte eabi_linux_arm_be_breakpoint[] = { 0xe7, 0xf0, 0x01, 0xf0 }
static

Definition at line 79 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ eabi_linux_arm_le_breakpoint

const gdb_byte eabi_linux_arm_le_breakpoint[] = { 0xf0, 0x01, 0xf0, 0xe7 }
static

Definition at line 77 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ thumb2_eabi_linux_rt_sigreturn_tramp_frame

struct tramp_frame thumb2_eabi_linux_rt_sigreturn_tramp_frame
static
Initial value:
= {
2,
{
{ THUMB2_SET_R7_RT_SIGRETURN1, ULONGEST_MAX },
{ THUMB2_SET_R7_RT_SIGRETURN2, ULONGEST_MAX },
{ THUMB2_EABI_SYSCALL, ULONGEST_MAX },
},
}
#define THUMB2_SET_R7_RT_SIGRETURN1
#define THUMB2_SET_R7_RT_SIGRETURN2
#define THUMB2_EABI_SYSCALL

Definition at line 439 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().

◆ thumb2_eabi_linux_sigreturn_tramp_frame

struct tramp_frame thumb2_eabi_linux_sigreturn_tramp_frame
static
Initial value:
= {
2,
{
{ THUMB2_SET_R7_SIGRETURN1, ULONGEST_MAX },
{ THUMB2_SET_R7_SIGRETURN2, ULONGEST_MAX },
{ THUMB2_EABI_SYSCALL, ULONGEST_MAX },
},
}
#define THUMB2_SET_R7_SIGRETURN2
#define THUMB2_SET_R7_SIGRETURN1

Definition at line 427 of file arm-linux-tdep.c.

Referenced by arm_linux_init_abi().