GDB (xrefs)
|
#include "defs.h"
#include "osabi.h"
#include "amd64-tdep.h"
#include "gdbtypes.h"
#include "gdbcore.h"
#include "regcache.h"
#include "windows-tdep.h"
#include "frame.h"
#include "objfiles.h"
#include "frame-unwind.h"
#include "coff/internal.h"
#include "coff/i386.h"
#include "coff/pe.h"
#include "libcoff.h"
#include "value.h"
Go to the source code of this file.
void _initialize_amd64_windows_tdep | ( | void | ) |
Definition at line 1199 of file amd64-windows-tdep.c.
References amd64_windows_init_abi(), GDB_OSABI_CYGWIN, and gdbarch_register_osabi().
static CORE_ADDR amd64_skip_main_prologue | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 340 of file amd64-windows-tdep.c.
References extract_signed_integer(), gdbarch_byte_order(), lookup_minimal_symbol_by_pc(), bound_minimal_symbol::minsym, SYMBOL_LINKAGE_NAME, and target_read_memory().
Referenced by amd64_windows_init_abi().
static CORE_ADDR amd64_windows_adjust_args_passed_by_pointer | ( | struct value ** | args, |
int | nargs, | ||
CORE_ADDR | sp | ||
) | [static] |
Definition at line 104 of file amd64-windows-tdep.c.
References amd64_windows_passed_by_pointer(), len, TYPE_LENGTH, value_addr(), value_contents(), value_from_contents_and_address(), value_type(), and write_memory().
Referenced by amd64_windows_push_arguments().
static const char* amd64_windows_auto_wide_charset | ( | void | ) | [static] |
Definition at line 1153 of file amd64-windows-tdep.c.
Referenced by amd64_windows_init_abi().
static int amd64_windows_find_unwind_info | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc, | ||
CORE_ADDR * | unwind_info, | ||
CORE_ADDR * | image_base, | ||
CORE_ADDR * | start_rva, | ||
CORE_ADDR * | end_rva | ||
) | [static] |
Definition at line 852 of file amd64-windows-tdep.c.
References ANOFFSET, extract_unsigned_integer(), find_pc_section(), fprintf_unfiltered(), frame_debug, gdb_stdlog, gdbarch_byte_order(), objfile::obfd, obj_section::objfile, paddress(), SECT_OFF_TEXT, objfile::section_offsets, and target_read_memory().
Referenced by amd64_windows_frame_cache(), and amd64_windows_skip_prologue().
static struct amd64_windows_frame_cache* amd64_windows_frame_cache | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static, read] |
Definition at line 949 of file amd64-windows-tdep.c.
References AMD64_RSP_REGNUM, amd64_windows_find_unwind_info(), amd64_windows_frame_decode_insns(), gdbarch::byte_order, amd64_windows_frame_cache::end_rva, extract_unsigned_integer(), FRAME_OBSTACK_ZALLOC, gdbarch_byte_order(), get_frame_arch(), get_frame_pc(), get_frame_register(), amd64_windows_frame_cache::image_base, amd64_windows_frame_cache::pc, amd64_windows_frame_cache::prev_rip_addr, amd64_windows_frame_cache::prev_sp, amd64_windows_frame_cache::sp, and amd64_windows_frame_cache::start_rva.
Referenced by amd64_windows_frame_prev_register(), and amd64_windows_frame_this_id().
static int amd64_windows_frame_decode_epilogue | ( | struct frame_info * | this_frame, |
struct amd64_windows_frame_cache * | cache | ||
) | [static] |
Definition at line 435 of file amd64-windows-tdep.c.
References gdbarch::byte_order, extract_signed_integer(), extract_unsigned_integer(), gdbarch_byte_order(), get_frame_arch(), amd64_windows_frame_cache::pc, pc_in_range(), amd64_windows_frame_cache::prev_reg_addr, amd64_windows_frame_cache::prev_rip_addr, amd64_windows_frame_cache::prev_sp, QUIT, amd64_windows_frame_cache::sp, and target_read_memory().
Referenced by amd64_windows_frame_decode_insns().
static void amd64_windows_frame_decode_insns | ( | struct frame_info * | this_frame, |
struct amd64_windows_frame_cache * | cache, | ||
CORE_ADDR | unwind_info | ||
) | [static] |
Definition at line 616 of file amd64-windows-tdep.c.
References amd64_windows_frame_decode_epilogue(), gdbarch::byte_order, amd64_windows_frame_cache::end_rva, extract_unsigned_integer(), fprintf_unfiltered(), frame_debug, gdb_stdlog, gdbarch_byte_order(), gdbarch_register_name(), get_frame_arch(), get_frame_register(), amd64_windows_frame_cache::image_base, memset(), p, paddress(), amd64_windows_frame_cache::pc, amd64_windows_frame_cache::prev_reg_addr, amd64_windows_frame_cache::prev_rip_addr, amd64_windows_frame_cache::prev_rsp_addr, amd64_windows_frame_cache::prev_sp, amd64_windows_frame_cache::prev_xmm_addr, QUIT, amd64_windows_frame_cache::sp, amd64_windows_frame_cache::start_rva, and target_read_memory().
Referenced by amd64_windows_frame_cache().
static struct value* amd64_windows_frame_prev_register | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
int | regnum | ||
) | [static, read] |
Definition at line 1000 of file amd64-windows-tdep.c.
References AMD64_R15_REGNUM, AMD64_RAX_REGNUM, AMD64_RIP_REGNUM, AMD64_RSP_REGNUM, amd64_windows_frame_cache(), AMD64_XMM0_REGNUM, gdbarch::byte_order, fprintf_unfiltered(), frame_debug, frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), gdb_stdlog, gdbarch_byte_order(), gdbarch_register_name(), get_frame_arch(), paddress(), amd64_windows_frame_cache::prev_reg_addr, amd64_windows_frame_cache::prev_rip_addr, amd64_windows_frame_cache::prev_rsp_addr, amd64_windows_frame_cache::prev_sp, and amd64_windows_frame_cache::prev_xmm_addr.
static void amd64_windows_frame_this_id | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
struct frame_id * | this_id | ||
) | [static] |
Definition at line 1050 of file amd64-windows-tdep.c.
References amd64_windows_frame_cache(), frame_id_build(), get_frame_arch(), amd64_windows_frame_cache::image_base, amd64_windows_frame_cache::prev_sp, and amd64_windows_frame_cache::start_rva.
static void amd64_windows_init_abi | ( | struct gdbarch_info | info, |
struct gdbarch * | gdbarch | ||
) | [static] |
Definition at line 1159 of file amd64-windows-tdep.c.
References amd64_init_abi(), amd64_skip_main_prologue(), amd64_windows_auto_wide_charset(), amd64_windows_push_dummy_call(), amd64_windows_return_value(), amd64_windows_skip_prologue(), amd64_windows_skip_trampoline_code(), frame_unwind_append_unwinder(), gdbarch_tdep(), set_gdbarch_auto_wide_charset(), set_gdbarch_long_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_return_value(), set_gdbarch_skip_main_prologue(), set_gdbarch_skip_prologue(), set_gdbarch_skip_trampoline_code(), and windows_init_abi().
Referenced by _initialize_amd64_windows_tdep().
static int amd64_windows_passed_by_integer_register | ( | struct type * | type | ) | [static] |
Definition at line 47 of file amd64-windows-tdep.c.
References TYPE_CODE, TYPE_CODE_BOOL, TYPE_CODE_CHAR, TYPE_CODE_ENUM, TYPE_CODE_INT, TYPE_CODE_PTR, TYPE_CODE_RANGE, TYPE_CODE_REF, TYPE_CODE_STRUCT, TYPE_CODE_UNION, and TYPE_LENGTH.
Referenced by amd64_windows_passed_by_pointer(), and amd64_windows_push_arguments().
static int amd64_windows_passed_by_pointer | ( | struct type * | type | ) | [static] |
Definition at line 85 of file amd64-windows-tdep.c.
References amd64_windows_passed_by_integer_register(), and amd64_windows_passed_by_xmm_register().
Referenced by amd64_windows_adjust_args_passed_by_pointer().
static int amd64_windows_passed_by_xmm_register | ( | struct type * | type | ) | [static] |
Definition at line 74 of file amd64-windows-tdep.c.
References TYPE_CODE, TYPE_CODE_DECFLOAT, TYPE_CODE_FLT, and TYPE_LENGTH.
Referenced by amd64_windows_passed_by_pointer(), and amd64_windows_push_arguments().
static CORE_ADDR amd64_windows_push_arguments | ( | struct regcache * | regcache, |
int | nargs, | ||
struct value ** | args, | ||
CORE_ADDR | sp, | ||
int | struct_return | ||
) | [static] |
Definition at line 155 of file amd64-windows-tdep.c.
References amd64_windows_adjust_args_passed_by_pointer(), amd64_windows_dummy_call_integer_regs, amd64_windows_passed_by_integer_register(), amd64_windows_passed_by_xmm_register(), amd64_windows_store_arg_in_reg(), AMD64_XMM0_REGNUM, len, memcpy(), TYPE_LENGTH, value_contents(), value_type(), and write_memory().
Referenced by amd64_windows_push_dummy_call().
static CORE_ADDR amd64_windows_push_dummy_call | ( | struct gdbarch * | gdbarch, |
struct value * | function, | ||
struct regcache * | regcache, | ||
CORE_ADDR | bp_addr, | ||
int | nargs, | ||
struct value ** | args, | ||
CORE_ADDR | sp, | ||
int | struct_return, | ||
CORE_ADDR | struct_addr | ||
) | [static] |
Definition at line 242 of file amd64-windows-tdep.c.
References AMD64_RBP_REGNUM, AMD64_RSP_REGNUM, amd64_windows_dummy_call_integer_regs, amd64_windows_push_arguments(), gdbarch_byte_order(), regcache_cooked_write(), store_unsigned_integer(), and write_memory().
Referenced by amd64_windows_init_abi().
static enum return_value_convention amd64_windows_return_value | ( | struct gdbarch * | gdbarch, |
struct value * | function, | ||
struct type * | type, | ||
struct regcache * | regcache, | ||
gdb_byte * | readbuf, | ||
const gdb_byte * | writebuf | ||
) | [static] |
Definition at line 287 of file amd64-windows-tdep.c.
References AMD64_RAX_REGNUM, AMD64_XMM0_REGNUM, len, read_memory(), regcache_raw_read_part(), regcache_raw_read_unsigned(), regcache_raw_write_part(), regnum, RETURN_VALUE_ABI_RETURNS_ADDRESS, RETURN_VALUE_REGISTER_CONVENTION, TYPE_CODE, TYPE_CODE_DECFLOAT, TYPE_CODE_FLT, TYPE_LENGTH, and ULONGEST.
Referenced by amd64_windows_init_abi().
static CORE_ADDR amd64_windows_skip_prologue | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 1076 of file amd64-windows-tdep.c.
References amd64_windows_find_unwind_info(), find_pc_partial_function(), max, skip_prologue_using_sal(), and target_read_memory().
Referenced by amd64_windows_init_abi().
static CORE_ADDR amd64_windows_skip_trampoline_code | ( | struct frame_info * | frame, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 1116 of file amd64-windows-tdep.c.
References gdbarch::byte_order, gdbarch_byte_order(), get_frame_arch(), lookup_minimal_symbol_by_pc(), bound_minimal_symbol::minsym, offset, read_memory_unsigned_integer(), SYMBOL_LINKAGE_NAME, and ULONGEST.
Referenced by amd64_windows_init_abi().
static void amd64_windows_store_arg_in_reg | ( | struct regcache * | regcache, |
struct value * | arg, | ||
int | regno | ||
) | [static] |
Definition at line 135 of file amd64-windows-tdep.c.
References gdb_assert, memcpy(), memset(), min, regcache_cooked_write(), TYPE_LENGTH, value_contents(), and value_type().
Referenced by amd64_windows_push_arguments().
static int pc_in_range | ( | CORE_ADDR | pc, |
const struct amd64_windows_frame_cache * | cache | ||
) | [static] |
Definition at line 423 of file amd64-windows-tdep.c.
References amd64_windows_frame_cache::end_rva, amd64_windows_frame_cache::image_base, and amd64_windows_frame_cache::start_rva.
Referenced by amd64_windows_frame_decode_epilogue().
int amd64_windows_dummy_call_integer_regs[] [static] |
Definition at line 35 of file amd64-windows-tdep.c.
Referenced by amd64_windows_push_arguments(), and amd64_windows_push_dummy_call().
struct frame_unwind amd64_windows_frame_unwind [static] |
{ NORMAL_FRAME, default_frame_unwind_stop_reason, &amd64_windows_frame_this_id, &amd64_windows_frame_prev_register, NULL, default_frame_sniffer }
Definition at line 1063 of file amd64-windows-tdep.c.
enum amd64_regnum amd64_windows_w2gdb_regnum[] [static] |
{ AMD64_RAX_REGNUM, AMD64_RCX_REGNUM, AMD64_RDX_REGNUM, AMD64_RBX_REGNUM, AMD64_RSP_REGNUM, AMD64_RBP_REGNUM, AMD64_RSI_REGNUM, AMD64_RDI_REGNUM, AMD64_R8_REGNUM, AMD64_R9_REGNUM, AMD64_R10_REGNUM, AMD64_R11_REGNUM, AMD64_R12_REGNUM, AMD64_R13_REGNUM, AMD64_R14_REGNUM, AMD64_R15_REGNUM }
Definition at line 399 of file amd64-windows-tdep.c.