]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Introduce windows_nat::event_code_to_string
authorPedro Alves <pedro@palves.net>
Fri, 11 Apr 2025 21:36:10 +0000 (22:36 +0100)
committerPedro Alves <pedro@palves.net>
Mon, 9 Jun 2025 17:09:16 +0000 (18:09 +0100)
Instead of:

   switch (event_code)
     {
     case FOO_DEBUG_EVENT:
      DEBUG_EVENTS (..., "FOO_DEBUG_EVENT");
      ...
     case BAR_DEBUG_EVENT:
      DEBUG_EVENTS (..., "BAR_DEBUG_EVENT");
      ...

... with one DEBUG_EVENTS call per event type, log the event just once
before the switch, and introduce a new event_code_to_string function
to handle the event code to string conversion.

Do the same on GDB's and gdbserver's Windows backends.

Change-Id: Id38b7e30df182e4742f3179538de3c643cf42668

gdb/nat/windows-nat.c
gdb/nat/windows-nat.h
gdb/windows-nat.c
gdbserver/win32-low.cc

index 907d39f317affa65c79f9ad6282027e10bcb158f..e9005cea0901fe9b8b5e1e0dbb81c2f86fbb4c51 100644 (file)
@@ -689,6 +689,31 @@ windows_process_info::add_all_dlls ()
 
 /* See nat/windows-nat.h.  */
 
+std::string
+event_code_to_string (DWORD event_code)
+{
+#define CASE(X) \
+  case X: return #X
+
+  switch (event_code)
+    {
+    CASE (CREATE_THREAD_DEBUG_EVENT);
+    CASE (EXIT_THREAD_DEBUG_EVENT);
+    CASE (CREATE_PROCESS_DEBUG_EVENT);
+    CASE (EXIT_PROCESS_DEBUG_EVENT);
+    CASE (LOAD_DLL_DEBUG_EVENT);
+    CASE (UNLOAD_DLL_DEBUG_EVENT);
+    CASE (EXCEPTION_DEBUG_EVENT);
+    CASE (OUTPUT_DEBUG_STRING_EVENT);
+    default:
+      return string_printf ("unknown event code %u", (unsigned) event_code);
+    }
+
+#undef CASE
+}
+
+/* See nat/windows-nat.h.  */
+
 ptid_t
 get_last_debug_event_ptid ()
 {
index 667fc832292902e771bd612b3228ae30cec240dd..19403d0e623dfd39cd5650a64efdc38943bc6c16 100644 (file)
@@ -284,6 +284,10 @@ private:
   int get_exec_module_filename (char *exe_name_ret, size_t exe_name_max_len);
 };
 
+/* Return a string version of EVENT_CODE.  */
+
+extern std::string event_code_to_string (DWORD event_code);
+
 /* A simple wrapper for ContinueDebugEvent that continues the last
    waited-for event.  If DEBUG_EVENTS is true, logging will be
    enabled.  */
index 1b91be36ab1b8b4c7c6199a26d12755a232d1ed6..50bee8717769e21bdd09315a10527bf5bf60e94c 100644 (file)
@@ -1620,13 +1620,14 @@ windows_nat_target::get_windows_debug_event
   event_code = current_event->dwDebugEventCode;
   ourstatus->set_spurious ();
 
+  DEBUG_EVENTS ("kernel event for pid=%u tid=0x%x code=%s",
+               (unsigned) current_event->dwProcessId,
+               (unsigned) current_event->dwThreadId,
+               event_code_to_string (event_code).c_str ());
+
   switch (event_code)
     {
     case CREATE_THREAD_DEBUG_EVENT:
-      DEBUG_EVENTS ("kernel event for pid=%u tid=0x%x code=%s",
-                   (unsigned) current_event->dwProcessId,
-                   (unsigned) current_event->dwThreadId,
-                   "CREATE_THREAD_DEBUG_EVENT");
       if (windows_process.saw_create != 1)
        {
          inferior *inf = find_inferior_pid (this, current_event->dwProcessId);
@@ -1658,10 +1659,6 @@ windows_nat_target::get_windows_debug_event
       break;
 
     case EXIT_THREAD_DEBUG_EVENT:
-      DEBUG_EVENTS ("kernel event for pid=%u tid=0x%x code=%s",
-                   (unsigned) current_event->dwProcessId,
-                   (unsigned) current_event->dwThreadId,
-                   "EXIT_THREAD_DEBUG_EVENT");
       delete_thread (ptid_t (current_event->dwProcessId,
                             current_event->dwThreadId, 0),
                     current_event->u.ExitThread.dwExitCode,
@@ -1670,10 +1667,6 @@ windows_nat_target::get_windows_debug_event
       break;
 
     case CREATE_PROCESS_DEBUG_EVENT:
-      DEBUG_EVENTS ("kernel event for pid=%u tid=0x%x code=%s",
-                   (unsigned) current_event->dwProcessId,
-                   (unsigned) current_event->dwThreadId,
-                   "CREATE_PROCESS_DEBUG_EVENT");
       CloseHandle (current_event->u.CreateProcessInfo.hFile);
       if (++windows_process.saw_create != 1)
        break;
@@ -1690,10 +1683,6 @@ windows_nat_target::get_windows_debug_event
       break;
 
     case EXIT_PROCESS_DEBUG_EVENT:
-      DEBUG_EVENTS ("kernel event for pid=%u tid=0x%x code=%s",
-                   (unsigned) current_event->dwProcessId,
-                   (unsigned) current_event->dwThreadId,
-                   "EXIT_PROCESS_DEBUG_EVENT");
       if (!windows_process.windows_initialization_done)
        {
          target_terminal::ours ();
@@ -1722,10 +1711,6 @@ windows_nat_target::get_windows_debug_event
       break;
 
     case LOAD_DLL_DEBUG_EVENT:
-      DEBUG_EVENTS ("kernel event for pid=%u tid=0x%x code=%s",
-                   (unsigned) current_event->dwProcessId,
-                   (unsigned) current_event->dwThreadId,
-                   "LOAD_DLL_DEBUG_EVENT");
       CloseHandle (current_event->u.LoadDll.hFile);
       if (windows_process.saw_create != 1
          || ! windows_process.windows_initialization_done)
@@ -1743,10 +1728,6 @@ windows_nat_target::get_windows_debug_event
       break;
 
     case UNLOAD_DLL_DEBUG_EVENT:
-      DEBUG_EVENTS ("kernel event for pid=%u tid=0x%x code=%s",
-                   (unsigned) current_event->dwProcessId,
-                   (unsigned) current_event->dwThreadId,
-                   "UNLOAD_DLL_DEBUG_EVENT");
       if (windows_process.saw_create != 1
          || ! windows_process.windows_initialization_done)
        break;
@@ -1763,10 +1744,6 @@ windows_nat_target::get_windows_debug_event
       break;
 
     case EXCEPTION_DEBUG_EVENT:
-      DEBUG_EVENTS ("kernel event for pid=%u tid=0x%x code=%s",
-                   (unsigned) current_event->dwProcessId,
-                   (unsigned) current_event->dwThreadId,
-                   "EXCEPTION_DEBUG_EVENT");
       if (windows_process.saw_create != 1)
        break;
       switch (windows_process.handle_exception (*current_event,
@@ -1786,10 +1763,6 @@ windows_nat_target::get_windows_debug_event
       break;
 
     case OUTPUT_DEBUG_STRING_EVENT:    /* Message from the kernel.  */
-      DEBUG_EVENTS ("kernel event for pid=%u tid=0x%x code=%s",
-                   (unsigned) current_event->dwProcessId,
-                   (unsigned) current_event->dwThreadId,
-                   "OUTPUT_DEBUG_STRING_EVENT");
       if (windows_process.saw_create != 1)
        break;
       thread_id = windows_process.handle_output_debug_string (*current_event,
index 1a80269678ecdfd5511423705fd62641c5e82b2f..1d3b24540d6d7b15e451df477a63d2d428d50cd9 100644 (file)
@@ -1010,13 +1010,14 @@ get_child_debug_event (DWORD *continue_status,
       }
   }
 
+  OUTMSG2 (("gdbserver: kernel event %s for pid=%u tid=%x)\n",
+           event_code_to_string (current_event->dwDebugEventCode).c_str (),
+           (unsigned) current_event->dwProcessId,
+           (unsigned) current_event->dwThreadId));
+
   switch (current_event->dwDebugEventCode)
     {
     case CREATE_THREAD_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event CREATE_THREAD_DEBUG_EVENT "
-               "for pid=%u tid=%x)\n",
-               (unsigned) current_event->dwProcessId,
-               (unsigned) current_event->dwThreadId));
 
       /* Record the existence of this thread.  */
       child_add_thread (current_event->dwProcessId,
@@ -1026,10 +1027,6 @@ get_child_debug_event (DWORD *continue_status,
       break;
 
     case EXIT_THREAD_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event EXIT_THREAD_DEBUG_EVENT "
-               "for pid=%u tid=%x\n",
-               (unsigned) current_event->dwProcessId,
-               (unsigned) current_event->dwThreadId));
       child_delete_thread (current_event->dwProcessId,
                           current_event->dwThreadId);
 
@@ -1037,10 +1034,6 @@ get_child_debug_event (DWORD *continue_status,
       return 1;
 
     case CREATE_PROCESS_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event CREATE_PROCESS_DEBUG_EVENT "
-               "for pid=%u tid=%x\n",
-               (unsigned) current_event->dwProcessId,
-               (unsigned) current_event->dwThreadId));
       CloseHandle (current_event->u.CreateProcessInfo.hFile);
 
       if (windows_process.open_process_used)
@@ -1060,10 +1053,6 @@ get_child_debug_event (DWORD *continue_status,
       break;
 
     case EXIT_PROCESS_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event EXIT_PROCESS_DEBUG_EVENT "
-               "for pid=%u tid=%x\n",
-               (unsigned) current_event->dwProcessId,
-               (unsigned) current_event->dwThreadId));
       {
        DWORD exit_status = current_event->u.ExitProcess.dwExitCode;
        /* If the exit status looks like a fatal exception, but we
@@ -1080,10 +1069,6 @@ get_child_debug_event (DWORD *continue_status,
       break;
 
     case LOAD_DLL_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event LOAD_DLL_DEBUG_EVENT "
-               "for pid=%u tid=%x\n",
-               (unsigned) current_event->dwProcessId,
-               (unsigned) current_event->dwThreadId));
       CloseHandle (current_event->u.LoadDll.hFile);
       if (! windows_process.child_initialization_done)
        break;
@@ -1093,10 +1078,6 @@ get_child_debug_event (DWORD *continue_status,
       break;
 
     case UNLOAD_DLL_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event UNLOAD_DLL_DEBUG_EVENT "
-               "for pid=%u tid=%x\n",
-               (unsigned) current_event->dwProcessId,
-               (unsigned) current_event->dwThreadId));
       if (! windows_process.child_initialization_done)
        break;
       windows_process.handle_unload_dll (*current_event);
@@ -1104,10 +1085,6 @@ get_child_debug_event (DWORD *continue_status,
       break;
 
     case EXCEPTION_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event EXCEPTION_DEBUG_EVENT "
-               "for pid=%u tid=%x\n",
-               (unsigned) current_event->dwProcessId,
-               (unsigned) current_event->dwThreadId));
       if (windows_process.handle_exception (*current_event,
                                            ourstatus, debug_threads)
          == HANDLE_EXCEPTION_UNHANDLED)
@@ -1116,20 +1093,8 @@ get_child_debug_event (DWORD *continue_status,
 
     case OUTPUT_DEBUG_STRING_EVENT:
       /* A message from the kernel (or Cygwin).  */
-      OUTMSG2 (("gdbserver: kernel event OUTPUT_DEBUG_STRING_EVENT "
-               "for pid=%u tid=%x\n",
-               (unsigned) current_event->dwProcessId,
-               (unsigned) current_event->dwThreadId));
       windows_process.handle_output_debug_string (*current_event, nullptr);
       break;
-
-    default:
-      OUTMSG2 (("gdbserver: kernel event unknown "
-               "for pid=%u tid=%x code=%x\n",
-               (unsigned) current_event->dwProcessId,
-               (unsigned) current_event->dwThreadId,
-               (unsigned) current_event->dwDebugEventCode));
-      break;
     }
 
   ptid = debug_event_ptid (current_event);