public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] Use new and delete for windows_thread_info
@ 2020-04-08 20:49 Tom Tromey
0 siblings, 0 replies; only message in thread
From: Tom Tromey @ 2020-04-08 20:49 UTC (permalink / raw)
To: gdb-cvs
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e9534bd257ac9ea2f7921e8000d27c5dc4477b4e
commit e9534bd257ac9ea2f7921e8000d27c5dc4477b4e
Author: Tom Tromey <tromey@adacore.com>
Date: Wed Apr 8 14:33:35 2020 -0600
Use new and delete for windows_thread_info
This adds a constructor, destructor, and member initializers to
windows_thread_info, and changes gdb and gdbserver to use new and
delete.
gdb/ChangeLog
2020-04-08 Tom Tromey <tromey@adacore.com>
* windows-nat.c (windows_add_thread): Use new.
(windows_init_thread_list, windows_delete_thread): Use delete.
(get_windows_debug_event): Update.
* nat/windows-nat.h (struct windows_thread_info): Add constructor,
destructor, and initializers.
gdbserver/ChangeLog
2020-04-08 Tom Tromey <tromey@adacore.com>
* win32-low.c (child_add_thread): Use new.
(delete_thread_info): Use delete.
Diff:
---
gdb/ChangeLog | 8 ++++++++
gdb/nat/windows-nat.h | 26 ++++++++++++++++++++------
gdb/windows-nat.c | 15 ++++++---------
gdbserver/ChangeLog | 5 +++++
gdbserver/win32-low.cc | 7 ++-----
5 files changed, 41 insertions(+), 20 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c2e6d60fd6f..f0b1f334850 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2020-04-08 Tom Tromey <tromey@adacore.com>
+
+ * windows-nat.c (windows_add_thread): Use new.
+ (windows_init_thread_list, windows_delete_thread): Use delete.
+ (get_windows_debug_event): Update.
+ * nat/windows-nat.h (struct windows_thread_info): Add constructor,
+ destructor, and initializers.
+
2020-04-08 Tom Tromey <tromey@adacore.com>
* windows-nat.c (struct windows_thread_info): Remove.
diff --git a/gdb/nat/windows-nat.h b/gdb/nat/windows-nat.h
index 71df097ed0b..a3da2686422 100644
--- a/gdb/nat/windows-nat.h
+++ b/gdb/nat/windows-nat.h
@@ -25,6 +25,20 @@
each thread. */
struct windows_thread_info
{
+ windows_thread_info (DWORD tid_, HANDLE h_, CORE_ADDR tlb)
+ : tid (tid_),
+ h (h_),
+ thread_local_base (tlb)
+ {
+ }
+
+ ~windows_thread_info ()
+ {
+ xfree (name);
+ }
+
+ DISABLE_COPY_AND_ASSIGN (windows_thread_info);
+
/* The Win32 thread identifier. */
DWORD tid;
@@ -35,17 +49,17 @@ struct windows_thread_info
CORE_ADDR thread_local_base;
/* Non zero if SuspendThread was called on this thread. */
- int suspended;
+ int suspended = 0;
#ifdef _WIN32_WCE
/* The context as retrieved right after suspending the thread. */
- CONTEXT base_context;
+ CONTEXT base_context {};
#endif
/* The context of the thread, including any manipulations. */
union
{
- CONTEXT context;
+ CONTEXT context {};
#ifdef __x86_64__
WOW64_CONTEXT wow64_context;
#endif
@@ -53,14 +67,14 @@ struct windows_thread_info
/* Whether debug registers changed since we last set CONTEXT back to
the thread. */
- int debug_registers_changed;
+ int debug_registers_changed = 0;
/* Nonzero if CONTEXT is invalidated and must be re-read from the
inferior thread. */
- int reload_context;
+ int reload_context = 0;
/* The name of the thread, allocated by xmalloc. */
- char *name;
+ char *name = nullptr;
};
#endif
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index 9368396b0fc..715cf602a07 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -468,16 +468,14 @@ windows_add_thread (ptid_t ptid, HANDLE h, void *tlb, bool main_thread_p)
if ((th = thread_rec (id, FALSE)))
return th;
- th = XCNEW (windows_thread_info);
- th->tid = id;
- th->h = h;
- th->thread_local_base = (CORE_ADDR) (uintptr_t) tlb;
+ CORE_ADDR base = (CORE_ADDR) (uintptr_t) tlb;
#ifdef __x86_64__
/* For WOW64 processes, this is actually the pointer to the 64bit TIB,
and the 32bit TIB is exactly 2 pages after it. */
if (wow64_process)
- th->thread_local_base += 0x2000;
+ base += 0x2000;
#endif
+ th = new windows_thread_info (id, h, base);
thread_list.push_back (th);
/* Add this new thread to the list of threads.
@@ -536,7 +534,7 @@ windows_init_thread_list (void)
init_thread_list ();
for (windows_thread_info *here : thread_list)
- xfree (here);
+ delete here;
thread_list.clear ();
}
@@ -581,8 +579,7 @@ windows_delete_thread (ptid_t ptid, DWORD exit_code, bool main_thread_p)
if (iter != thread_list.end ())
{
- xfree ((*iter)->name);
- xfree (*iter);
+ delete *iter;
thread_list.erase (iter);
}
}
@@ -1718,7 +1715,7 @@ windows_nat_target::get_windows_debug_event (int pid,
BOOL debug_event;
DWORD continue_status, event_code;
windows_thread_info *th;
- static windows_thread_info dummy_thread_info;
+ static windows_thread_info dummy_thread_info (0, 0, 0);
DWORD thread_id = 0;
last_sig = GDB_SIGNAL_0;
diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog
index 3923429cfc2..be2f7676628 100644
--- a/gdbserver/ChangeLog
+++ b/gdbserver/ChangeLog
@@ -1,3 +1,8 @@
+2020-04-08 Tom Tromey <tromey@adacore.com>
+
+ * win32-low.c (child_add_thread): Use new.
+ (delete_thread_info): Use delete.
+
2020-04-08 Tom Tromey <tromey@adacore.com>
* win32-low.h (struct windows_thread_info): Remove.
diff --git a/gdbserver/win32-low.cc b/gdbserver/win32-low.cc
index 55e8322cebb..1284ed177cb 100644
--- a/gdbserver/win32-low.cc
+++ b/gdbserver/win32-low.cc
@@ -212,10 +212,7 @@ child_add_thread (DWORD pid, DWORD tid, HANDLE h, void *tlb)
if ((th = thread_rec (ptid, FALSE)))
return th;
- th = XCNEW (windows_thread_info);
- th->tid = tid;
- th->h = h;
- th->thread_local_base = (CORE_ADDR) (uintptr_t) tlb;
+ th = new windows_thread_info (tid, h, (CORE_ADDR) (uintptr_t) tlb);
add_thread (ptid, th);
@@ -233,7 +230,7 @@ delete_thread_info (thread_info *thread)
remove_thread (thread);
CloseHandle (th->h);
- free (th);
+ delete th;
}
/* Delete a thread from the list of threads. */
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-04-08 20:49 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-08 20:49 [binutils-gdb] Use new and delete for windows_thread_info Tom Tromey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).