[PATCH v3 19/29] Share handle_load_dll and handle_unload_dll declarations

Tom Tromey
2020-03-13T19:09:03Z

This changes nat/windows-nat.h to declare handle_load_dll and
handle_unload_dll. The embedding application is required to implement
these -- while the actual code was difficult to share due to some
other differences between the two programs, sharing the declaration
lets a subsequent patch share more code that uses these as callbacks.

gdb/ChangeLog
2020-03-13 Tom Tromey <tromey@adacore.com>

* windows-nat.c (windows_nat::handle_load_dll)
(windows_nat::handle_unload_dll): Rename. No longer static.
* nat/windows-nat.h (handle_load_dll, handle_unload_dll):
Declare.

gdbserver/ChangeLog
2020-03-13 Tom Tromey <tromey@adacore.com>

* win32-low.c (windows_nat::handle_load_dll): Rename from
handle_load_dll. No longer static.
(windows_nat::handle_unload_dll): Rename from handle_unload_dll.
No longer static.
---
gdb/ChangeLog | 7 +++++++
gdb/nat/windows-nat.h | 19 +++++++++++++++++++
gdb/windows-nat.c | 23 ++++++-----------------
gdbserver/ChangeLog | 7 +++++++
gdbserver/win32-low.cc | 22 ++++++----------------
5 files changed, 45 insertions(+), 33 deletions(-)

diff --git a/gdb/nat/windows-nat.h b/gdb/nat/windows-nat.h
index f438befbc94..2b2fd116269 100644
--- a/gdb/nat/windows-nat.h
+++ b/gdb/nat/windows-nat.h
@@ -125,6 +125,25 @@ extern windows_thread_info *thread_rec (ptid_t ptid,
This function must be supplied by the embedding application. */
extern int handle_output_debug_string (struct target_waitstatus *ourstatus);

+/* Handle a DLL load event.
+
+ This function assumes that the current event did not occur during
+ inferior initialization.
+
+ This function must be supplied by the embedding application. */
+
+extern void handle_load_dll ();
+
+/* Handle a DLL unload event.
+
+ This function assumes that this event did not occur during inferior
+ initialization.
+
+ This function must be supplied by the embedding application. */
+
+extern void handle_unload_dll ();
+
+
/* Currently executing process */
extern HANDLE current_process_handle;
extern DWORD current_process_id;
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index 370e7bc1ae5..7a68f2d355b 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -870,15 +870,10 @@ windows_make_so (const char *name, LPVOID load_addr)
return so;
}

-/* Handle a DLL load event, and return 1.
-
- This function assumes that this event did not occur during inferior
- initialization, where their event info may be incomplete (see
- do_initial_windows_stuff and windows_add_all_dlls for more info
- on how we handle DLL loading during that phase). */
+/* See nat/windows-nat.h. */

-static void
-handle_load_dll ()
+void
+windows_nat::handle_load_dll ()
{
LOAD_DLL_DEBUG_INFO *event = &current_event.u.LoadDll;
const char *dll_name;
@@ -911,16 +906,10 @@ windows_free_so (struct so_list *so)
xfree (so);
}

-/* Handle a DLL unload event.
- Return 1 if successful, or zero otherwise.
-
- This function assumes that this event did not occur during inferior
- initialization, where their event info may be incomplete (see
- do_initial_windows_stuff and windows_add_all_dlls for more info
- on how we handle DLL loading during that phase). */
+/* See nat/windows-nat.h. */

-static void
-handle_unload_dll ()
+void
+windows_nat::handle_unload_dll ()
{
LPVOID lpBaseOfDll = current_event.u.UnloadDll.lpBaseOfDll;
struct so_list *so;
diff --git a/gdbserver/win32-low.cc b/gdbserver/win32-low.cc
index 2130366747c..73d4a6a2d8a 100644
--- a/gdbserver/win32-low.cc
+++ b/gdbserver/win32-low.cc
@@ -1123,15 +1123,10 @@ typedef HANDLE (WINAPI *winapi_CreateToolhelp32Snapshot) (DWORD, DWORD);
typedef BOOL (WINAPI *winapi_Module32First) (HANDLE, LPMODULEENTRY32);
typedef BOOL (WINAPI *winapi_Module32Next) (HANDLE, LPMODULEENTRY32);

-/* Handle a DLL load event.
-
- This function assumes that this event did not occur during inferior
- initialization, where their event info may be incomplete (see
- do_initial_child_stuff and win32_add_all_dlls for more info on
- how we handle DLL loading during that phase). */
+/* See nat/windows-nat.h. */

-static void
-handle_load_dll (void)
+void
+windows_nat::handle_load_dll ()
{
LOAD_DLL_DEBUG_INFO *event = &current_event.u.LoadDll;
const char *dll_name;
@@ -1144,15 +1139,10 @@ handle_load_dll (void)
win32_add_one_solib (dll_name, (CORE_ADDR) (uintptr_t) event->lpBaseOfDll);
}

-/* Handle a DLL unload event.
-
- This function assumes that this event did not occur during inferior
- initialization, where their event info may be incomplete (see
- do_initial_child_stuff and win32_add_one_solib for more info
- on how we handle DLL loading during that phase). */
+/* See nat/windows-nat.h. */

-static void
-handle_unload_dll (void)
+void
+windows_nat::handle_unload_dll ()
{
CORE_ADDR load_addr =
(CORE_ADDR) (uintptr_t) current_event.u.UnloadDll.lpBaseOfDll;
--
2.21.1