From 68b826dafff940839fae71cbb9b4cc6d64dae0e9 Mon Sep 17 00:00:00 2001 From: midipix Date: Fri, 30 Aug 2019 19:35:21 +0000 Subject: project: gdb bits: applied new directory layout (./overlay). --- overlay/mgdb/gdb/amd64-winnt-tdep.c | 47 +++++++++++++++++++++++++++++++ overlay/mgdb/gdb/config/i386/midipix.mh | 1 + overlay/mgdb/gdb/config/i386/midipix64.mh | 1 + overlay/mgdb/gdb/i386-winnt-tdep.c | 37 ++++++++++++++++++++++++ 4 files changed, 86 insertions(+) create mode 100644 overlay/mgdb/gdb/amd64-winnt-tdep.c create mode 100644 overlay/mgdb/gdb/config/i386/midipix.mh create mode 100644 overlay/mgdb/gdb/config/i386/midipix64.mh create mode 100644 overlay/mgdb/gdb/i386-winnt-tdep.c (limited to 'overlay/mgdb') diff --git a/overlay/mgdb/gdb/amd64-winnt-tdep.c b/overlay/mgdb/gdb/amd64-winnt-tdep.c new file mode 100644 index 0000000..d47bca4 --- /dev/null +++ b/overlay/mgdb/gdb/amd64-winnt-tdep.c @@ -0,0 +1,47 @@ +#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); +} diff --git a/overlay/mgdb/gdb/config/i386/midipix.mh b/overlay/mgdb/gdb/config/i386/midipix.mh new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/overlay/mgdb/gdb/config/i386/midipix.mh @@ -0,0 +1 @@ + diff --git a/overlay/mgdb/gdb/config/i386/midipix64.mh b/overlay/mgdb/gdb/config/i386/midipix64.mh new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/overlay/mgdb/gdb/config/i386/midipix64.mh @@ -0,0 +1 @@ + diff --git a/overlay/mgdb/gdb/i386-winnt-tdep.c b/overlay/mgdb/gdb/i386-winnt-tdep.c new file mode 100644 index 0000000..070747b --- /dev/null +++ b/overlay/mgdb/gdb/i386-winnt-tdep.c @@ -0,0 +1,37 @@ +#include "defs.h" +#include "osabi.h" +#include "frame-unwind.h" +#include "windows-tdep.h" + +static void +i386_winnt_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +{ + /* abi */ + windows_init_abi (info, gdbarch); + + /* out-of-band function calls */ + set_gdbarch_push_dummy_call (gdbarch, 0); + set_gdbarch_return_value (gdbarch, 0); + + /* progloue/trampoline methods */ + set_gdbarch_skip_main_prologue (gdbarch, 0); + set_gdbarch_skip_trampoline_code (gdbarch, 0); + + /* auto wide charset hack */ + set_gdbarch_auto_wide_charset (gdbarch, 0); + + /* unwainder */ + frame_unwind_append_unwinder (gdbarch, 0); +} + +extern initialize_file_ftype _initialize_i386_winnt_tdep; + +void +_initialize_i386_winnt_tdep (void) +{ + gdbarch_register_osabi( + bfd_arch_i386, + 0, + GDB_OSABI_WINNT, + i386_winnt_init_abi); +} -- cgit v1.2.3