* win32-low.c (handle_load_dll): Don't use toolhelp when waiting.
authorPedro Alves <palves@redhat.com>
Mon, 3 Sep 2007 22:04:02 +0000 (22:04 +0000)
committerPedro Alves <palves@redhat.com>
Mon, 3 Sep 2007 22:04:02 +0000 (22:04 +0000)
gdb/gdbserver/ChangeLog
gdb/gdbserver/win32-low.c

index 9698a28c8ffadb37e04b5712e4980bd7313645b3..2313e28216b0eb95d1e9a28ee94f2dc48693602a 100644 (file)
@@ -1,3 +1,7 @@
+2007-09-03  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+       * win32-low.c (handle_load_dll): Don't use toolhelp when waiting.
+
 2007-08-23  Joel Brobecker  <brobecker@adacore.com>
 
        * configure.ac: Switch license to GPLv3.
index 42cbb90fc4f4ec72078cae562d53383d1db349ca..755f816a50623b96aa5fdb9ca63676848fd4a1d4 100644 (file)
@@ -1066,9 +1066,18 @@ handle_load_dll (void)
 
   dll_buf[0] = dll_buf[sizeof (dll_buf) - 1] = '\0';
 
-  if (!psapi_get_dll_name ((DWORD) (event->lpBaseOfDll), dll_buf)
-      && !toolhelp_get_dll_name ((DWORD) (event->lpBaseOfDll), dll_buf))
-    dll_buf[0] = dll_buf[sizeof (dll_buf) - 1] = '\0';
+  /* Windows does not report the image name of the dlls in the debug
+     event on attaches.  We resort to iterating over the list of
+     loaded dlls looking for a match by image base.  */
+  if (!psapi_get_dll_name ((DWORD) event->lpBaseOfDll, dll_buf))
+    {
+      if (!server_waiting)
+       /* On some versions of Windows and Windows CE, we can't create
+          toolhelp snapshots while the inferior is stopped in a
+          LOAD_DLL_DEBUG_EVENT due to a dll load, but we can while
+          Windows is reporting the already loaded dlls.  */
+       toolhelp_get_dll_name ((DWORD) event->lpBaseOfDll, dll_buf);
+    }
 
   dll_name = dll_buf;