From: Jon Turney <jon.turney@dronecode.org.uk>
To: gdb-patches@sourceware.org
Cc: Jon Turney <jon.turney@dronecode.org.uk>
Subject: [PATCH 5/7] Add amd64_windows_gregset_reg_offset
Date: Wed, 1 Jul 2020 22:32:23 +0100 [thread overview]
Message-ID: <20200701213225.14144-6-jon.turney@dronecode.org.uk> (raw)
In-Reply-To: <20200701213225.14144-1-jon.turney@dronecode.org.uk>
Register a gregset_reg_offset array for Cygwin x86_64 core dump parsing
(this causes the generic i386_iterate_over_regset_sections() '.reg'
section iterator get installed by i386_gdbarch_init()).
gdb/ChangeLog:
2020-07-01 Jon Turney <jon.turney@dronecode.org.uk>
* amd64-windows-tdep.c(amd64_windows_gregset_reg_offset): Add.
(amd64_windows_init_abi_common): ... and register.
---
gdb/ChangeLog | 5 +++
gdb/amd64-windows-tdep.c | 70 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 75 insertions(+)
diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c
index e55d021b6c0..f1526283f2f 100644
--- a/gdb/amd64-windows-tdep.c
+++ b/gdb/amd64-windows-tdep.c
@@ -42,6 +42,69 @@ static int amd64_windows_dummy_call_integer_regs[] =
AMD64_R9_REGNUM /* %r9 */
};
+/* This vector maps GDB's idea of a register's number into an offset into
+ the Windows API CONTEXT structure. */
+static int amd64_windows_gregset_reg_offset[] =
+{
+ 120, /* Rax */
+ 144, /* Rbx */
+ 128, /* Rcx */
+ 136, /* Rdx */
+ 168, /* Rsi */
+ 176, /* Rdi */
+ 160, /* Rbp */
+ 152, /* Rsp */
+ 184, /* R8 */
+ 192, /* R9 */
+ 200, /* R10 */
+ 208, /* R11 */
+ 216, /* R12 */
+ 224, /* R13 */
+ 232, /* R14 */
+ 240, /* R15 */
+ 248, /* Rip */
+ 68, /* EFlags */
+ 56, /* SegCs */
+ 66, /* SegSs */
+ 58, /* SegDs */
+ 60, /* SegEs */
+ 62, /* SegFs */
+ 64, /* SegGs */
+ 288, /* FloatSave.FloatRegisters[0] */
+ 304, /* FloatSave.FloatRegisters[1] */
+ 320, /* FloatSave.FloatRegisters[2] */
+ 336, /* FloatSave.FloatRegisters[3] */
+ 352, /* FloatSave.FloatRegisters[4] */
+ 368, /* FloatSave.FloatRegisters[5] */
+ 384, /* FloatSave.FloatRegisters[6] */
+ 400, /* FloatSave.FloatRegisters[7] */
+ 256, /* FloatSave.ControlWord */
+ 258, /* FloatSave.StatusWord */
+ 260, /* FloatSave.TagWord */
+ 268, /* FloatSave.ErrorSelector */
+ 264, /* FloatSave.ErrorOffset */
+ 276, /* FloatSave.DataSelector */
+ 272, /* FloatSave.DataOffset */
+ 268, /* FloatSave.ErrorSelector */
+ 416, /* Xmm0 */
+ 432, /* Xmm1 */
+ 448, /* Xmm2 */
+ 464, /* Xmm3 */
+ 480, /* Xmm4 */
+ 496, /* Xmm5 */
+ 512, /* Xmm6 */
+ 528, /* Xmm7 */
+ 544, /* Xmm8 */
+ 560, /* Xmm9 */
+ 576, /* Xmm10 */
+ 592, /* Xmm11 */
+ 608, /* Xmm12 */
+ 624, /* Xmm13 */
+ 640, /* Xmm14 */
+ 656, /* Xmm15 */
+ 280, /* FloatSave.MxCsr */
+};
+
#define AMD64_WINDOWS_SIZEOF_GREGSET 1232
/* Return nonzero if an argument of type TYPE should be passed
@@ -1215,6 +1278,8 @@ amd64_windows_auto_wide_charset (void)
static void
amd64_windows_init_abi_common (gdbarch_info info, struct gdbarch *gdbarch)
{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
/* The dwarf2 unwinder (appended very early by i386_gdbarch_init) is
preferred over the SEH one. The reasons are:
- binaries without SEH but with dwarf2 debug info are correctly handled
@@ -1240,6 +1305,11 @@ amd64_windows_init_abi_common (gdbarch_info info, struct gdbarch *gdbarch)
set_gdbarch_skip_prologue (gdbarch, amd64_windows_skip_prologue);
+ tdep->gregset_reg_offset = amd64_windows_gregset_reg_offset;
+ tdep->gregset_num_regs = ARRAY_SIZE (amd64_windows_gregset_reg_offset);
+ tdep->sizeof_gregset = AMD64_WINDOWS_SIZEOF_GREGSET;
+ tdep->sizeof_fpregset = 0;
+
set_gdbarch_auto_wide_charset (gdbarch, amd64_windows_auto_wide_charset);
}
--
2.27.0
next prev parent reply other threads:[~2020-07-01 21:34 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-01 21:32 [PATCH 0/7] Add gdb support for Cygwin x86_64 core dumps Jon Turney
2020-07-01 21:32 ` [PATCH 1/7] Read tid from correct offset in win32pstatus NOTE_INFO_THREAD Jon Turney
2020-07-01 21:32 ` [PATCH 2/7] Don't apply size constraint to all win32pstatus ELF notes Jon Turney
2020-07-01 21:32 ` [PATCH 3/7] Don't hardcode CONTEXT size for a NOTE_INFO_THREAD win32pstatus note Jon Turney
2020-07-06 20:12 ` Christian Biesinger
2020-07-01 21:32 ` [PATCH 4/7] Add sniffer for Cygwin x86_64 core dumps Jon Turney
2020-07-02 23:59 ` Simon Marchi
2020-07-03 13:30 ` Jon Turney
2020-07-03 14:17 ` Simon Marchi
2020-07-06 18:46 ` Jon Turney
2020-07-01 21:32 ` Jon Turney [this message]
2020-07-03 14:11 ` [PATCH 5/7] Add amd64_windows_gregset_reg_offset Pedro Alves
2020-07-01 21:32 ` [PATCH 6/7] Promote windows_core_xfer_shared_libraries and windows_core_pid_to_str Jon Turney
2020-07-02 23:53 ` Simon Marchi
2020-07-02 23:56 ` Simon Marchi
2020-07-03 13:14 ` Jon Turney
2020-07-01 21:32 ` [PATCH 7/7] Add handling for 64-bit module addresses in Cygwin core dumps Jon Turney
2020-07-06 20:13 ` Christian Biesinger
2020-07-08 15:50 ` Jon Turney
2020-07-08 16:11 ` Christian Biesinger
2020-07-12 12:58 ` Jon Turney
2020-07-02 21:17 ` [PATCH 0/7] Add gdb support for Cygwin x86_64 " Tom Tromey
2020-07-03 13:30 ` Jon Turney
2020-07-03 0:00 ` Simon Marchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200701213225.14144-6-jon.turney@dronecode.org.uk \
--to=jon.turney@dronecode.org.uk \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox