[review] Share handle_load_dll and handle_unload_dll declarations

Message ID gerrit.1572371871000.I3ef08b0696174d281cca225e0f7dc237c10b7b32@gnutoolchain-gerrit.osci.io
State New, archived
Headers

Commit Message

Simon Marchi (Code Review) Oct. 29, 2019, 5:57 p.m. UTC
  Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/423
......................................................................

Share handle_load_dll and handle_unload_dll declarations

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.

Change-Id: I25741fca7402182e069d536e032f1c468d65a68e

gdb/ChangeLog
2019-10-29  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.

gdb/gdbserver/ChangeLog
2019-10-29  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.

Change-Id: I3ef08b0696174d281cca225e0f7dc237c10b7b32
---
M gdb/ChangeLog
M gdb/gdbserver/ChangeLog
M gdb/gdbserver/win32-low.c
M gdb/nat/windows-nat.h
M gdb/windows-nat.c
5 files changed, 45 insertions(+), 33 deletions(-)
  

Comments

Simon Marchi (Code Review) Nov. 27, 2019, 12:40 a.m. UTC | #1
Luis Machado has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/423
......................................................................


Patch Set 1:

(2 comments)

| --- gdb/gdbserver/win32-low.c
| +++ gdb/gdbserver/win32-low.c
| @@ -1138,15 +1130,13 @@ /* Handle a DLL unload event.
| -   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).  */
| -
| -static void
| -handle_unload_dll (void)
| +/* See nat/windows-nat.h.  */
| +
| +void
| +windows_nat::handle_unload_dll ()

PS1, Line 1133:

For both handle_load_dll and handle_unload_dll, is it ok to drop the
rest of the function documentation? Does it not have anything
meaningful to convey?

|  {
|    CORE_ADDR load_addr =
|  	  (CORE_ADDR) (uintptr_t) current_event.u.UnloadDll.lpBaseOfDll;
|  
|    /* The symbols in a dll are offset by 0x1000, which is the
|       offset from 0 of the first byte in an image - because
|       of the file header and the section alignment. */
|    load_addr += 0x1000;
|    unloaded_dll (NULL, load_addr);
| --- gdb/nat/windows-nat.h
| +++ gdb/nat/windows-nat.h
| @@ -114,9 +123,19 @@ 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 ();
| +
| +

PS1, Line 132:

Spurious newline?

|  /* Currently executing process */
|  extern HANDLE current_process_handle;
|  extern DWORD current_process_id;
|  extern DWORD main_thread_id;
|  extern enum gdb_signal last_sig;
|  
|  /* The current debug event from WaitForDebugEvent or from a pending
|     stop.  */
|  extern DEBUG_EVENT current_event;
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8484dc2..c8e9228 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@ 
 2019-10-29  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.
+
+2019-10-29  Tom Tromey  <tromey@adacore.com>
+
 	* complaints.h (stop_whining): Declare at top-level.
 	(complaint): Don't declare stop_whining.
 
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 72418f8..d3ce252 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,5 +1,12 @@ 
 2019-10-29  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.
+
+2019-10-29  Tom Tromey  <tromey@adacore.com>
+
 	* win32-low.c (handle_output_debug_string): Add parameter.  Change
 	return type.
 	(win32_kill, get_child_debug_event): Update.
diff --git a/gdb/gdbserver/win32-low.c b/gdb/gdbserver/win32-low.c
index 7825630..3fcd2a6 100644
--- a/gdb/gdbserver/win32-low.c
+++ b/gdb/gdbserver/win32-low.c
@@ -1111,15 +1111,10 @@ 
 typedef BOOL (WINAPI *winapi_Module32First) (HANDLE, LPMODULEENTRY32);
 typedef BOOL (WINAPI *winapi_Module32Next) (HANDLE, LPMODULEENTRY32);
 
-/* Handle a DLL load event.
+/* See nat/windows-nat.h.  */
 
-   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).  */
-
-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;
@@ -1132,15 +1127,10 @@ 
   win32_add_one_solib (dll_name, (CORE_ADDR) (uintptr_t) event->lpBaseOfDll);
 }
 
-/* Handle a DLL unload event.
+/* See nat/windows-nat.h.  */
 
-   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).  */
-
-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;
diff --git a/gdb/nat/windows-nat.h b/gdb/nat/windows-nat.h
index 5eedb54..695170e 100644
--- a/gdb/nat/windows-nat.h
+++ b/gdb/nat/windows-nat.h
@@ -111,6 +111,25 @@ 
    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 d175bd7..8bad871 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -748,15 +748,10 @@ 
   return so;
 }
 
-/* Handle a DLL load event, and return 1.
+/* See nat/windows-nat.h.  */
 
-   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).  */
-
-static void
-handle_load_dll ()
+void
+windows_nat::handle_load_dll ()
 {
   LOAD_DLL_DEBUG_INFO *event = &current_event.u.LoadDll;
   const char *dll_name;
@@ -789,16 +784,10 @@ 
   xfree (so);
 }
 
-/* Handle a DLL unload event.
-   Return 1 if successful, or zero otherwise.
+/* See nat/windows-nat.h.  */
 
-   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).  */
-
-static void
-handle_unload_dll ()
+void
+windows_nat::handle_unload_dll ()
 {
   LPVOID lpBaseOfDll = current_event.u.UnloadDll.lpBaseOfDll;
   struct so_list *so;