summaryrefslogtreecommitdiff
path: root/overlay/mgdb/gdb/amd64-winnt-tdep.c
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2019-08-30 19:35:21 +0000
committermidipix <writeonce@midipix.org>2019-08-30 19:35:21 +0000
commit68b826dafff940839fae71cbb9b4cc6d64dae0e9 (patch)
treee081b8cab629efa4895c27a2b4eadd34e5a99a68 /overlay/mgdb/gdb/amd64-winnt-tdep.c
parenta98c846ea845b6de9b3b15bb6927daad47e0d384 (diff)
downloadchainport-68b826dafff940839fae71cbb9b4cc6d64dae0e9.tar.bz2
chainport-68b826dafff940839fae71cbb9b4cc6d64dae0e9.tar.xz
project: gdb bits: applied new directory layout (./overlay).
Diffstat (limited to 'overlay/mgdb/gdb/amd64-winnt-tdep.c')
-rw-r--r--overlay/mgdb/gdb/amd64-winnt-tdep.c47
1 files changed, 47 insertions, 0 deletions
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);
+}