/***************************************************************/ /* mgdb: midipix-specific bits for gdb */ /* Copyright (C) 2019 Z. Gilboa */ /* Released under GPLv2 and GPLv3; see COPYING.MGDB. */ /***************************************************************/ #include "defs.h" #include "osabi.h" #include "frame-unwind.h" #include "windows-tdep.h" #include "amd64-windows-tdep.c" #define amd64_winnt_push_dummy_call amd64_windows_push_dummy_call #define amd64_winnt_return_value amd64_windows_return_value #define amd64_winnt_skip_trampoline_code amd64_windows_skip_trampoline_code #define amd64_winnt_skip_prologue amd64_windows_skip_prologue #define amd64_winnt_skip_main_prologue amd64_skip_main_prologue static void amd64_winnt_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { /* abi */ amd64_init_abi (info, gdbarch); windows_init_abi (info, gdbarch); /* out-of-band function calls */ set_gdbarch_push_dummy_call (gdbarch, amd64_winnt_push_dummy_call); set_gdbarch_return_value (gdbarch, amd64_winnt_return_value); set_gdbarch_skip_trampoline_code (gdbarch, amd64_winnt_skip_trampoline_code); /* skip prologue methods */ set_gdbarch_skip_prologue (gdbarch, amd64_windows_skip_prologue); set_gdbarch_skip_main_prologue (gdbarch, amd64_skip_main_prologue); /* todo: SEH unwinder */ frame_unwind_append_unwinder (gdbarch, 0); /* todo: inferior-specific, dynamically detected size of long */ set_gdbarch_long_bit (gdbarch, 64); } extern initialize_file_ftype _initialize_amd64_winnt_tdep; void _initialize_amd64_winnt_tdep (void) { gdbarch_register_osabi( bfd_arch_i386, bfd_mach_x86_64, GDB_OSABI_WINNT, amd64_winnt_init_abi); }