GDB (xrefs)
|
#include "defs.h"
#include "gdbcore.h"
#include "frame.h"
#include "value.h"
#include "regcache.h"
#include "regset.h"
#include "inferior.h"
#include "osabi.h"
#include "reggroups.h"
#include "dwarf2/frame.h"
#include "i386-tdep.h"
#include "i386-linux-tdep.h"
#include "linux-tdep.h"
#include "utils.h"
#include "glibc-tdep.h"
#include "solib-svr4.h"
#include "symtab.h"
#include "arch-utils.h"
#include "xml-syscall.h"
#include "infrun.h"
#include "i387-tdep.h"
#include "gdbsupport/x86-xstate.h"
#include "record-full.h"
#include "linux-record.h"
#include "arch/i386.h"
#include "target-descriptions.h"
Go to the source code of this file.
Macros | |
#define | XML_SYSCALL_FILENAME_I386 "syscalls/i386-linux.xml" |
#define | LINUX_SIGTRAMP_INSN0 0x58 /* pop %eax */ |
#define | LINUX_SIGTRAMP_OFFSET0 0 |
#define | LINUX_SIGTRAMP_INSN1 0xb8 /* mov $NNNN, %eax */ |
#define | LINUX_SIGTRAMP_OFFSET1 1 |
#define | LINUX_SIGTRAMP_INSN2 0xcd /* int */ |
#define | LINUX_SIGTRAMP_OFFSET2 6 |
#define | LINUX_SIGTRAMP_LEN (sizeof linux_sigtramp_code) |
#define | LINUX_RT_SIGTRAMP_INSN0 0xb8 /* mov $NNNN, %eax */ |
#define | LINUX_RT_SIGTRAMP_OFFSET0 0 |
#define | LINUX_RT_SIGTRAMP_INSN1 0xcd /* int */ |
#define | LINUX_RT_SIGTRAMP_OFFSET1 5 |
#define | LINUX_RT_SIGTRAMP_LEN (sizeof linux_rt_sigtramp_code) |
#define | I386_LINUX_UCONTEXT_SIGCONTEXT_OFFSET 20 |
#define | SIG_CODE_BOUNDARY_FAULT 3 |
#define | I386_LINUX_xstate 270 |
#define | I386_LINUX_frame_size 732 |
Variables | |
static const gdb_byte | linux_sigtramp_code [] |
static const gdb_byte | linux_rt_sigtramp_code [] |
static struct linux_record_tdep | i386_linux_record_tdep |
int | i386_linux_gregset_reg_offset [] |
static int | i386_linux_sc_reg_offset [] |
static const struct regset | i386_linux_xstateregset |
#define I386_LINUX_frame_size 732 |
Definition at line 497 of file i386-linux-tdep.c.
Referenced by i386_linux_record_signal().
#define I386_LINUX_UCONTEXT_SIGCONTEXT_OFFSET 20 |
Definition at line 272 of file i386-linux-tdep.c.
Referenced by i386_linux_sigcontext_addr().
#define I386_LINUX_xstate 270 |
Definition at line 496 of file i386-linux-tdep.c.
Referenced by i386_linux_record_signal().
#define LINUX_RT_SIGTRAMP_INSN0 0xb8 /* mov $NNNN, %eax */ |
Definition at line 176 of file i386-linux-tdep.c.
Referenced by i386_linux_rt_sigtramp_start().
#define LINUX_RT_SIGTRAMP_INSN1 0xcd /* int */ |
Definition at line 178 of file i386-linux-tdep.c.
Referenced by i386_linux_rt_sigtramp_start().
#define LINUX_RT_SIGTRAMP_LEN (sizeof linux_rt_sigtramp_code) |
Definition at line 187 of file i386-linux-tdep.c.
Referenced by i386_linux_rt_sigtramp_start().
#define LINUX_RT_SIGTRAMP_OFFSET0 0 |
Definition at line 177 of file i386-linux-tdep.c.
#define LINUX_RT_SIGTRAMP_OFFSET1 5 |
Definition at line 179 of file i386-linux-tdep.c.
Referenced by i386_linux_rt_sigtramp_start().
#define LINUX_SIGTRAMP_INSN0 0x58 /* pop %eax */ |
Definition at line 105 of file i386-linux-tdep.c.
Referenced by i386_linux_sigtramp_start().
#define LINUX_SIGTRAMP_INSN1 0xb8 /* mov $NNNN, %eax */ |
Definition at line 107 of file i386-linux-tdep.c.
Referenced by i386_linux_sigtramp_start().
#define LINUX_SIGTRAMP_INSN2 0xcd /* int */ |
Definition at line 109 of file i386-linux-tdep.c.
Referenced by i386_linux_sigtramp_start().
#define LINUX_SIGTRAMP_LEN (sizeof linux_sigtramp_code) |
Definition at line 119 of file i386-linux-tdep.c.
Referenced by i386_linux_sigtramp_start().
#define LINUX_SIGTRAMP_OFFSET0 0 |
Definition at line 106 of file i386-linux-tdep.c.
#define LINUX_SIGTRAMP_OFFSET1 1 |
Definition at line 108 of file i386-linux-tdep.c.
Referenced by i386_linux_sigtramp_start().
#define LINUX_SIGTRAMP_OFFSET2 6 |
Definition at line 110 of file i386-linux-tdep.c.
Referenced by i386_linux_sigtramp_start().
#define SIG_CODE_BOUNDARY_FAULT 3 |
Definition at line 389 of file i386-linux-tdep.c.
Referenced by i386_linux_report_signal_info().
#define XML_SYSCALL_FILENAME_I386 "syscalls/i386-linux.xml" |
Definition at line 45 of file i386-linux-tdep.c.
Referenced by i386_linux_init_abi().
void _initialize_i386_linux_tdep | ( | ) |
Definition at line 1087 of file i386-linux-tdep.c.
Referenced by initialize_all_files().
|
static |
Definition at line 347 of file i386-linux-tdep.c.
References I386_EAX_REGNUM, I386_EBP_REGNUM, I386_EBX_REGNUM, I386_ECX_REGNUM, I386_EDI_REGNUM, I386_EDX_REGNUM, I386_EFLAGS_REGNUM, I386_ESI_REGNUM, I386_ESP_REGNUM, and record_full_arch_list_add_reg().
Referenced by i386_linux_intx80_sysenter_syscall_record(), and i386_linux_record_signal().
|
static |
Definition at line 377 of file i386-linux-tdep.c.
References gdb_sys_no_syscall.
Referenced by i386_linux_intx80_sysenter_syscall_record().
|
static |
Definition at line 746 of file i386-linux-tdep.c.
References i387_collect_xsave(), and regnum.
|
static |
Definition at line 709 of file i386-linux-tdep.c.
References i386_linux_core_read_xsave_info(), and i386_linux_read_description().
Referenced by i386_linux_init_abi().
bool i386_linux_core_read_x86_xsave_layout | ( | struct gdbarch * | gdbarch, |
x86_xsave_layout & | layout ) |
Definition at line 675 of file i386-linux-tdep.c.
References core_bfd, and i386_linux_core_read_xsave_info().
Referenced by amd64_linux_init_abi_common(), and i386_linux_init_abi().
uint64_t i386_linux_core_read_xsave_info | ( | bfd * | abfd, |
x86_xsave_layout & | layout ) |
Definition at line 644 of file i386-linux-tdep.c.
References I386_LINUX_XSAVE_XCR0_OFFSET, i387_guess_xsave_layout(), and size.
Referenced by amd64_linux_core_read_description(), i386_linux_core_read_description(), and i386_linux_core_read_x86_xsave_layout().
|
static |
Definition at line 808 of file i386-linux-tdep.c.
References buf_displaced_step_copy_insn_closure::buf, i386_displaced_step_copy_insn(), and i386_linux_get_syscall_number_from_regcache().
Referenced by i386_linux_init_abi().
|
static |
Definition at line 254 of file i386-linux-tdep.c.
References find_pc_partial_function(), get_frame_pc(), and name.
Referenced by i386_linux_init_abi().
|
static |
Definition at line 562 of file i386-linux-tdep.c.
References get_thread_regcache(), and i386_linux_get_syscall_number_from_regcache().
Referenced by i386_linux_init_abi().
|
static |
Definition at line 539 of file i386-linux-tdep.c.
References reg_buffer::arch(), readable_regcache::cooked_read(), extract_signed_integer(), gdbarch_byte_order(), and I386_LINUX_ORIG_EAX_REGNUM.
Referenced by i386_linux_displaced_step_copy_insn(), and i386_linux_get_syscall_number().
|
static |
Definition at line 830 of file i386-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, dwarf2_frame_set_signal_frame_p(), linux_record_tdep::fcntl_F_GETLK, linux_record_tdep::fcntl_F_GETLK64, linux_record_tdep::fcntl_F_SETLK64, linux_record_tdep::fcntl_F_SETLKW64, find_solib_trampoline_target(), gdbarch_int_bit(), gdbarch_long_bit(), gdbarch_ptr_bit(), glibc_skip_solib_resolver(), i386_gdbarch_tdep::gregset_num_regs, i386_gdbarch_tdep::gregset_reg_offset, i386_displaced_step_fixup(), I386_EBP_REGNUM, I386_EBX_REGNUM, I386_ECX_REGNUM, I386_EDI_REGNUM, I386_EDX_REGNUM, i386_elf_init_abi(), I386_ESI_REGNUM, i386_gdbarch_tdep::i386_intx80_record, i386_linux_core_read_description(), i386_linux_core_read_x86_xsave_layout(), i386_linux_displaced_step_copy_insn(), i386_linux_dwarf_signal_frame_p(), i386_linux_get_syscall_number(), i386_linux_gregset_reg_offset, i386_linux_intx80_sysenter_syscall_record(), i386_linux_iterate_over_regset_sections(), I386_LINUX_NUM_REGS, I386_LINUX_ORIG_EAX_REGNUM, i386_linux_read_description(), i386_linux_record_signal(), i386_linux_record_tdep, i386_linux_register_reggroup_p(), i386_linux_report_signal_info(), i386_linux_sc_reg_offset, i386_linux_sigcontext_addr(), i386_linux_sigtramp_p(), i386_linux_write_pc(), I386_LINUX_XSAVE_XCR0_OFFSET, i386_process_record(), i386_gdbarch_tdep::i386_syscall_record, i386_gdbarch_tdep::i386_sysenter_record, 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, i386_gdbarch_tdep::jb_pc_offset, linux_ilp32_fetch_link_map_offsets(), linux_init_abi(), i386_gdbarch_tdep::register_reggroup_p, i386_gdbarch_tdep::sc_num_regs, i386_gdbarch_tdep::sc_reg_offset, set_gdbarch_core_read_description(), set_gdbarch_core_read_x86_xsave_layout(), set_gdbarch_displaced_step_copy_insn(), set_gdbarch_displaced_step_fixup(), set_gdbarch_fetch_tls_load_module_address(), set_gdbarch_get_siginfo_type(), set_gdbarch_get_syscall_number(), set_gdbarch_iterate_over_regset_sections(), set_gdbarch_num_regs(), set_gdbarch_process_record(), set_gdbarch_process_record_signal(), set_gdbarch_report_signal_info(), set_gdbarch_skip_solib_resolver(), set_gdbarch_skip_trampoline_code(), set_gdbarch_sofun_address_maybe_missing(), set_gdbarch_write_pc(), set_solib_svr4_fetch_link_map_offsets(), set_xml_syscall_file_name(), i386_gdbarch_tdep::sigcontext_addr, i386_gdbarch_tdep::sigtramp_p, 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, i386_gdbarch_tdep::sizeof_gregset, svr4_fetch_objfile_link_map(), i386_gdbarch_tdep::tdesc, tdesc_data, tdesc_find_feature(), tdesc_has_registers(), tdesc_numbered_register(), x86_linux_get_siginfo_type(), XML_SYSCALL_FILENAME_I386, and i386_gdbarch_tdep::xsave_xcr0_offset.
|
static |
Definition at line 457 of file i386-linux-tdep.c.
References gdb_printf(), gdb_stderr, gdb_sys_rt_sigreturn, gdb_sys_sigreturn, i386_all_but_ip_registers_record(), i386_canonicalize_syscall(), I386_EAX_REGNUM, i386_linux_record_tdep, record_full_arch_list_add_reg(), record_linux_system_call(), and regcache_raw_read_signed().
Referenced by i386_linux_init_abi().
|
static |
Definition at line 765 of file i386-linux-tdep.c.
References i386_fpregset, i386_gregset, i386_linux_xstateregset, i386_gdbarch_tdep::xcr0, and i386_gdbarch_tdep::xsave_layout.
Referenced by i386_linux_init_abi().
const struct target_desc * i386_linux_read_description | ( | uint64_t | xcr0 | ) |
Definition at line 684 of file i386-linux-tdep.c.
References i386_create_target_description().
Referenced by i386_linux_core_read_description(), i386_linux_init_abi(), and x86_linux_nat_target::read_description().
|
static |
Definition at line 500 of file i386-linux-tdep.c.
References i386_all_but_ip_registers_record(), I386_EIP_REGNUM, I386_ESP_REGNUM, I386_LINUX_frame_size, I386_LINUX_xstate, record_full_arch_list_add_end(), record_full_arch_list_add_mem(), record_full_arch_list_add_reg(), and regcache_raw_read_unsigned().
Referenced by i386_linux_init_abi().
|
static |
Definition at line 56 of file i386-linux-tdep.c.
References I386_LINUX_ORIG_EAX_REGNUM, i386_register_reggroup_p(), regnum, restore_reggroup, save_reggroup, and system_reggroup.
Referenced by i386_linux_init_abi().
void i386_linux_report_signal_info | ( | struct gdbarch * | gdbarch, |
struct ui_out * | uiout, | ||
enum gdb_signal | siggnal ) |
Definition at line 395 of file i386-linux-tdep.c.
References ui_out::field_core_addr(), ui_out::field_string(), i386_mpx_enabled(), parse_and_eval_long(), SIG_CODE_BOUNDARY_FAULT, and ui_out::text().
Referenced by amd64_linux_init_abi_common(), and i386_linux_init_abi().
|
static |
Definition at line 193 of file i386-linux-tdep.c.
References get_frame_pc(), linux_rt_sigtramp_code, LINUX_RT_SIGTRAMP_INSN0, LINUX_RT_SIGTRAMP_INSN1, LINUX_RT_SIGTRAMP_LEN, LINUX_RT_SIGTRAMP_OFFSET1, and safe_frame_unwind_memory().
Referenced by i386_linux_sigcontext_addr(), and i386_linux_sigtramp_p().
|
static |
Definition at line 278 of file i386-linux-tdep.c.
References extract_unsigned_integer(), gdbarch_byte_order(), get_frame_arch(), get_frame_pc(), get_frame_register(), I386_ESP_REGNUM, i386_linux_rt_sigtramp_start(), i386_linux_sigtramp_start(), I386_LINUX_UCONTEXT_SIGCONTEXT_OFFSET, and read_memory().
Referenced by i386_linux_init_abi().
|
static |
Definition at line 230 of file i386-linux-tdep.c.
References find_pc_partial_function(), get_frame_pc(), i386_linux_rt_sigtramp_start(), i386_linux_sigtramp_start(), and name.
Referenced by i386_linux_init_abi().
|
static |
Definition at line 125 of file i386-linux-tdep.c.
References get_frame_pc(), linux_sigtramp_code, LINUX_SIGTRAMP_INSN0, LINUX_SIGTRAMP_INSN1, LINUX_SIGTRAMP_INSN2, LINUX_SIGTRAMP_LEN, LINUX_SIGTRAMP_OFFSET1, LINUX_SIGTRAMP_OFFSET2, and safe_frame_unwind_memory().
Referenced by i386_linux_sigcontext_addr(), and i386_linux_sigtramp_p().
|
static |
Definition at line 730 of file i386-linux-tdep.c.
References i387_supply_xsave(), and regnum.
|
static |
Definition at line 323 of file i386-linux-tdep.c.
References I386_EIP_REGNUM, I386_LINUX_ORIG_EAX_REGNUM, and regcache_cooked_write_unsigned().
Referenced by i386_linux_init_abi().
Definition at line 738 of file i386-linux-tdep.c.
References linux_get_siginfo_type_with_fields(), and LINUX_SIGINFO_FIELD_ADDR_BND.
Referenced by amd64_linux_init_abi_common(), and i386_linux_init_abi().
int i386_linux_gregset_reg_offset[] |
Definition at line 586 of file i386-linux-tdep.c.
Referenced by fetch_register(), fill_gregset(), i386_linux_init_abi(), store_register(), and supply_gregset().
|
static |
Definition at line 454 of file i386-linux-tdep.c.
Referenced by i386_linux_init_abi(), and i386_linux_intx80_sysenter_syscall_record().
|
static |
Definition at line 621 of file i386-linux-tdep.c.
Referenced by i386_linux_init_abi().
|
static |
Definition at line 755 of file i386-linux-tdep.c.
Referenced by i386_linux_iterate_over_regset_sections().
|
static |
Definition at line 181 of file i386-linux-tdep.c.
Referenced by i386_linux_rt_sigtramp_start().
|
static |
Definition at line 112 of file i386-linux-tdep.c.
Referenced by i386_linux_sigtramp_start().