From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sa-prd-fep-044.btinternet.com (mailomta14-sa.btinternet.com [213.120.69.20]) by sourceware.org (Postfix) with ESMTPS id EBB083857007 for ; Wed, 1 Jul 2020 21:34:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org EBB083857007 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=dronecode.org.uk Authentication-Results: sourceware.org; spf=none smtp.mailfrom=jon.turney@dronecode.org.uk Received: from sa-prd-rgout-001.btmx-prd.synchronoss.net ([10.2.38.4]) by sa-prd-fep-044.btinternet.com with ESMTP id <20200701213404.NBST3440.sa-prd-fep-044.btinternet.com@sa-prd-rgout-001.btmx-prd.synchronoss.net>; Wed, 1 Jul 2020 22:34:04 +0100 Authentication-Results: btinternet.com; none X-Originating-IP: [31.51.206.31] X-OWM-Source-IP: 31.51.206.31 (GB) X-OWM-Env-Sender: jonturney@btinternet.com X-VadeSecure-score: verdict=clean score=0/300, class=clean X-RazorGate-Vade: gggruggvucftvghtrhhoucdtuddrgeduiedrtddvgdduieehucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuueftkffvkffujffvgffngfevqffopdfqfgfvnecuuegrihhlohhuthemuceftddunecunecujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpeflohhnucfvuhhrnhgvhicuoehjohhnrdhtuhhrnhgvhiesughrohhnvggtohguvgdrohhrghdruhhkqeenucggtffrrghtthgvrhhnpeefieduveehgfffffeuueehleefgeevfedvffeljeefheduteelteelvdettefhvdenucfkphepfedurdehuddrvddtiedrfedunecuvehluhhsthgvrhfuihiivgepgeenucfrrghrrghmpehhvghloheplhhotggrlhhhohhsthdrlhhotggrlhguohhmrghinhdpihhnvghtpeefuddrhedurddvtdeirdefuddpmhgrihhlfhhrohhmpeeojhhonhdrthhurhhnvgihsegurhhonhgvtghouggvrdhorhhgrdhukheqpdhrtghpthhtohepoehguggsqdhprghttghhvghssehsohhurhgtvgifrghrvgdrohhrgheqpdhrtghpthhtohepoehjohhnrdhtuhhrnhgvhiesughrohhnvggtohguvgdrohhrghdruhhkqe X-RazorGate-Vade-Verdict: clean 0 X-RazorGate-Vade-Classification: clean Received: from localhost.localdomain (31.51.206.31) by sa-prd-rgout-001.btmx-prd.synchronoss.net (5.8.340) (authenticated as jonturney@btinternet.com) id 5ED99EC904C0082D; Wed, 1 Jul 2020 22:34:03 +0100 From: Jon Turney To: gdb-patches@sourceware.org Cc: Jon Turney Subject: [PATCH 5/7] Add amd64_windows_gregset_reg_offset Date: Wed, 1 Jul 2020 22:32:23 +0100 Message-Id: <20200701213225.14144-6-jon.turney@dronecode.org.uk> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200701213225.14144-1-jon.turney@dronecode.org.uk> References: <20200701213225.14144-1-jon.turney@dronecode.org.uk> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Jul 2020 21:34:06 -0000 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 * 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