[review] Share windows_thread_info between gdb and gdbserver
Commit Message
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/407
......................................................................
Share windows_thread_info between gdb and gdbserver
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
2019-10-29 Tom Tromey <tromey@adacore.com>
* windows-nat.c (struct windows_thread_info): Remove.
* nat/windows-nat.h: New file.
gdb/gdbserver/ChangeLog
2019-10-29 Tom Tromey <tromey@adacore.com>
* win32-low.h (struct windows_thread_info): Remove.
Change-Id: I9ba2d1b94be1550ea2e75e977d0808c7a27e2223
---
M gdb/ChangeLog
M gdb/gdbserver/ChangeLog
M gdb/gdbserver/win32-low.h
A gdb/nat/windows-nat.h
M gdb/windows-nat.c
5 files changed, 69 insertions(+), 42 deletions(-)
Comments
Luis Machado has posted comments on this change.
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/407
......................................................................
Patch Set 1: Code-Review+1
(2 comments)
A couple nits, but otherwise LGTM.
https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/407/1/gdb/nat/windows-nat.h
File gdb/nat/windows-nat.h:
https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/407/1/gdb/nat/windows-nat.h@1
PS1, Line 1:
1 > /* Internal interfaces for the Windows code
2 | Copyright (C) 1995-2019 Free Software Foundation, Inc.
3 |
4 | This file is part of GDB.
5 |
6 | This program is free software; you can redistribute it and/or modify
Internal native interfaces maybe?
https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/407/1/gdb/nat/windows-nat.h@35
PS1, Line 35:
24 | struct windows_thread_info
| ...
30 | HANDLE h;
31 |
32 | /* Thread Information Block address. */
33 | CORE_ADDR thread_local_base;
34 |
35 > /* Non zero if SuspendThread was called on this thread. */
36 | int suspended;
37 |
38 | #ifdef _WIN32_WCE
39 | /* The context as retrieved right after suspending the thread. */
40 | CONTEXT base_context;
This discrepancy between Non zero here and Nonzero below caught my attention. Maybe we should fix it since we're adding new comments?
Luis Machado has posted comments on this change.
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/407
......................................................................
Patch Set 1:
(1 comment)
https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/407/1/gdb/nat/windows-nat.h
File gdb/nat/windows-nat.h:
https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/407/1/gdb/nat/windows-nat.h@35
PS1, Line 35:
24 | struct windows_thread_info
| ...
30 | HANDLE h;
31 |
32 | /* Thread Information Block address. */
33 | CORE_ADDR thread_local_base;
34 |
35 > /* Non zero if SuspendThread was called on this thread. */
36 | int suspended;
37 |
38 | #ifdef _WIN32_WCE
39 | /* The context as retrieved right after suspending the thread. */
40 | CONTEXT base_context;
> This discrepancy between Non zero here and Nonzero below caught my attention. […]
Nevermind. I noticed a later patch replaces this comment.
Simon Marchi has posted comments on this change.
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/407
......................................................................
Patch Set 1: Code-Review+2
Pedro Alves has posted comments on this change.
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/407
......................................................................
Patch Set 2: Code-Review+2
@@ -1,5 +1,10 @@
2019-10-29 Tom Tromey <tromey@adacore.com>
+ * windows-nat.c (struct windows_thread_info): Remove.
+ * nat/windows-nat.h: New file.
+
+2019-10-29 Tom Tromey <tromey@adacore.com>
+
* windows-nat.c (struct windows_thread_info) <tid>: Rename from "id".
(thread_rec, windows_add_thread, windows_delete_thread)
(windows_continue): Update.
@@ -1,5 +1,9 @@
2019-10-29 Tom Tromey <tromey@adacore.com>
+ * win32-low.h (struct windows_thread_info): Remove.
+
+2019-10-29 Tom Tromey <tromey@adacore.com>
+
* win32-low.h (struct windows_thread_info): Rename from
win32_thread_info. Remove typedef.
(struct win32_target_ops, win32_require_context): Update.
@@ -20,6 +20,7 @@
#define GDBSERVER_WIN32_LOW_H
#include <windows.h>
+#include "nat/windows-nat.h"
struct target_desc;
@@ -27,35 +28,6 @@
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. */
new file mode 100644
@@ -0,0 +1,58 @@
+/* Internal interfaces for the Windows code
+ Copyright (C) 1995-2019 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
+
+/* 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;
+
+ /* 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
@@ -69,6 +69,7 @@
#include "inf-child.h"
#include "gdbsupport/gdb_tilde_expand.h"
#include "gdbsupport/pathstuff.h"
+#include "nat/windows-nat.h"
#define AdjustTokenPrivileges dyn_AdjustTokenPrivileges
#define DebugActiveProcessStop dyn_DebugActiveProcessStop
@@ -213,19 +214,6 @@
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;
- CONTEXT context;
- };
-
static std::vector<windows_thread_info *> thread_list;
/* The process and thread handles for the above context. */