From: Tom Tromey <tromey@adacore.com>
To: gdb-patches@sourceware.org
Cc: Tom Tromey <tromey@adacore.com>
Subject: [PATCH v3 04/29] Share windows_thread_info between gdb and gdbserver
Date: Fri, 13 Mar 2020 13:08:30 -0600 [thread overview]
Message-ID: <20200313190855.28662-5-tromey@adacore.com> (raw)
In-Reply-To: <20200313190855.28662-1-tromey@adacore.com>
This introduces a new file, nat/windows-nat.h, which holds the
definition of windows_thread_info. This is now shared between gdb and
gdbserver.
Note that the two implementations different slightly. gdb had a
couple of fields ("name" and "reload_context") that gdbserver did not;
while gdbserver had one field ("base_context") that gdb did not, plus
better comments. The new file preserves all the fields, and the
comments.
gdb/ChangeLog
2020-03-13 Tom Tromey <tromey@adacore.com>
* windows-nat.c (struct windows_thread_info): Remove.
* nat/windows-nat.h: New file.
gdbserver/ChangeLog
2020-03-13 Tom Tromey <tromey@adacore.com>
* win32-low.h (struct windows_thread_info): Remove.
---
gdb/ChangeLog | 5 ++++
gdb/nat/windows-nat.h | 66 +++++++++++++++++++++++++++++++++++++++++++
gdb/windows-nat.c | 20 +------------
gdbserver/ChangeLog | 4 +++
gdbserver/win32-low.h | 30 +-------------------
5 files changed, 77 insertions(+), 48 deletions(-)
create mode 100644 gdb/nat/windows-nat.h
diff --git a/gdb/nat/windows-nat.h b/gdb/nat/windows-nat.h
new file mode 100644
index 00000000000..71df097ed0b
--- /dev/null
+++ b/gdb/nat/windows-nat.h
@@ -0,0 +1,66 @@
+/* Internal interfaces for the Windows code
+ Copyright (C) 1995-2020 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef NAT_WINDOWS_NAT_H
+#define NAT_WINDOWS_NAT_H
+
+#include <windows.h>
+
+/* Thread information structure used to track extra information about
+ each thread. */
+struct windows_thread_info
+{
+ /* The Win32 thread identifier. */
+ DWORD tid;
+
+ /* The handle to the thread. */
+ HANDLE h;
+
+ /* Thread Information Block address. */
+ CORE_ADDR thread_local_base;
+
+ /* Non zero if SuspendThread was called on this thread. */
+ int suspended;
+
+#ifdef _WIN32_WCE
+ /* The context as retrieved right after suspending the thread. */
+ CONTEXT base_context;
+#endif
+
+ /* The context of the thread, including any manipulations. */
+ union
+ {
+ CONTEXT context;
+#ifdef __x86_64__
+ WOW64_CONTEXT wow64_context;
+#endif
+ };
+
+ /* Whether debug registers changed since we last set CONTEXT back to
+ the thread. */
+ int debug_registers_changed;
+
+ /* Nonzero if CONTEXT is invalidated and must be re-read from the
+ inferior thread. */
+ int reload_context;
+
+ /* The name of the thread, allocated by xmalloc. */
+ char *name;
+};
+
+#endif
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index 69930b00a11..d2c4ecd6daf 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -70,6 +70,7 @@
#include "gdbsupport/gdb_tilde_expand.h"
#include "gdbsupport/pathstuff.h"
#include "gdbsupport/gdb_wait.h"
+#include "nat/windows-nat.h"
#define STATUS_WX86_BREAKPOINT 0x4000001F
#define STATUS_WX86_SINGLE_STEP 0x4000001E
@@ -244,25 +245,6 @@ static unsigned long cygwin_get_dr7 (void);
static enum gdb_signal last_sig = GDB_SIGNAL_0;
/* Set if a signal was received from the debugged process. */
-/* Thread information structure used to track information that is
- not available in gdb's thread structure. */
-struct windows_thread_info
- {
- DWORD tid;
- HANDLE h;
- CORE_ADDR thread_local_base;
- char *name;
- int suspended;
- int reload_context;
- union
- {
- CONTEXT context;
-#ifdef __x86_64__
- WOW64_CONTEXT wow64_context;
-#endif
- };
- };
-
static std::vector<windows_thread_info *> thread_list;
/* The process and thread handles for the above context. */
diff --git a/gdbserver/win32-low.h b/gdbserver/win32-low.h
index 2bd94e85288..28ac2b082d9 100644
--- a/gdbserver/win32-low.h
+++ b/gdbserver/win32-low.h
@@ -20,6 +20,7 @@
#define GDBSERVER_WIN32_LOW_H
#include <windows.h>
+#include "nat/windows-nat.h"
struct target_desc;
@@ -27,35 +28,6 @@ struct target_desc;
Windows ports support neither bi-arch nor multi-process. */
extern const struct target_desc *win32_tdesc;
-/* Thread information structure used to track extra information about
- each thread. */
-struct windows_thread_info
-{
- /* The Win32 thread identifier. */
- DWORD tid;
-
- /* The handle to the thread. */
- HANDLE h;
-
- /* Thread Information Block address. */
- CORE_ADDR thread_local_base;
-
- /* Non zero if SuspendThread was called on this thread. */
- int suspended;
-
-#ifdef _WIN32_WCE
- /* The context as retrieved right after suspending the thread. */
- CONTEXT base_context;
-#endif
-
- /* The context of the thread, including any manipulations. */
- CONTEXT context;
-
- /* Whether debug registers changed since we last set CONTEXT back to
- the thread. */
- int debug_registers_changed;
-};
-
struct win32_target_ops
{
/* Architecture-specific setup. */
--
2.21.1
next prev parent reply other threads:[~2020-03-13 19:08 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-13 19:08 [PATCH v3 00/29] Windows code sharing + bug fix Tom Tromey
2020-03-13 19:08 ` [PATCH v3 01/29] Remove the "next" field from windows_thread_info Tom Tromey
2020-03-13 19:08 ` [PATCH v3 02/29] Rename win32_thread_info to windows_thread_info Tom Tromey
2020-03-13 19:08 ` [PATCH v3 03/29] Rename windows_thread_info::id to "tid" Tom Tromey
2020-03-13 19:08 ` Tom Tromey [this message]
2020-03-13 19:08 ` [PATCH v3 05/29] Use new and delete for windows_thread_info Tom Tromey
2020-03-13 19:08 ` [PATCH v3 06/29] Change two windows_thread_info members to "bool" Tom Tromey
2020-03-13 19:08 ` [PATCH v3 07/29] Make windows_thread_info::name a unique_xmalloc_ptr Tom Tromey
2020-03-13 19:08 ` [PATCH v3 08/29] Use lwp, not tid, for Windows thread id Tom Tromey
2020-03-13 19:08 ` [PATCH v3 09/29] Share Windows thread-suspend and -resume code Tom Tromey
2020-03-13 19:08 ` [PATCH v3 10/29] Change type of argument to windows-nat.c:thread_rec Tom Tromey
2020-03-13 19:08 ` [PATCH v3 11/29] Handle pending stops from the Windows kernel Tom Tromey
2020-03-13 19:08 ` [PATCH v3 12/29] Call CloseHandle from ~windows_thread_info Tom Tromey
2020-03-13 19:08 ` [PATCH v3 13/29] Wrap shared windows-nat code in windows_nat namespace Tom Tromey
2020-03-13 19:08 ` [PATCH v3 14/29] Share thread_rec between gdb and gdbserver Tom Tromey
2020-03-13 19:08 ` [PATCH v3 15/29] Share get_image_name " Tom Tromey
2020-03-13 19:08 ` [PATCH v3 16/29] Share some Windows-related globals Tom Tromey
2020-03-13 19:08 ` [PATCH v3 17/29] Normalize handle_output_debug_string API Tom Tromey
2020-03-13 19:08 ` [PATCH v3 18/29] Fix up complaints.h for namespace use Tom Tromey
2020-03-13 19:08 ` [PATCH v3 19/29] Share handle_load_dll and handle_unload_dll declarations Tom Tromey
2020-03-13 19:08 ` [PATCH v3 20/29] Remove some globals from windows-nat.c Tom Tromey
2020-03-13 19:08 ` [PATCH v3 21/29] Share handle_exception Tom Tromey
2020-04-15 15:27 ` Simon Marchi
2020-04-15 16:54 ` Tom Tromey
2020-04-15 17:54 ` Simon Marchi
2020-04-15 19:13 ` Tom Tromey
2020-04-16 0:52 ` Simon Marchi
2020-03-13 19:08 ` [PATCH v3 22/29] Share some inferior-related Windows code Tom Tromey
2020-03-13 19:08 ` [PATCH v3 23/29] Introduce fetch_pending_stop Tom Tromey
2020-03-13 19:08 ` [PATCH v3 24/29] Move wait_for_debug_event to nat/windows-nat.c Tom Tromey
2020-03-13 19:08 ` [PATCH v3 25/29] Make last_wait_event static Tom Tromey
2020-03-13 19:08 ` [PATCH v3 26/29] Add read_pc / write_pc support to win32-low Tom Tromey
2020-03-13 19:08 ` [PATCH v3 27/29] Introduce win32_target_ops::decr_pc_after_break Tom Tromey
2020-03-13 19:08 ` [PATCH v3 28/29] Implement stopped_by_sw_breakpoint for Windows gdbserver Tom Tromey
2020-03-13 19:08 ` [PATCH v3 29/29] Add pending stop support to gdbserver's Windows port Tom Tromey
2020-04-16 1:11 ` [pushed] gdbserver: fix format string warning in win32-low.cc (was: Re: [PATCH v3 29/29] Add pending stop support to gdbserver's Windows port) Simon Marchi
2020-04-08 20:33 ` [PATCH v3 00/29] Windows code sharing + bug fix Tom Tromey
2020-04-08 22:17 ` Hannes Domani
2020-04-09 2:49 ` Tom Tromey
2020-04-09 14:57 ` Jon Turney
2020-04-09 15:08 ` Hannes Domani
2020-04-09 17:54 ` Tom Tromey
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=20200313190855.28662-5-tromey@adacore.com \
--to=tromey@adacore.com \
--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