[binutils-gdb] gdb, gdbserver: remove WinCE support code

Simon Marchi simark@sourceware.org
Mon Apr 12 15:11:21 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d4717483730cd8b9d28fd1f0741cd005e9a129e2

commit d4717483730cd8b9d28fd1f0741cd005e9a129e2
Author: Simon Marchi <simon.marchi@polymtl.ca>
Date:   Mon Apr 12 11:10:57 2021 -0400

    gdb, gdbserver: remove WinCE support code
    
    The support for WinCE was removed with commit 84b300de3666 ("gdbserver:
    remove support for ARM/WinCE").  There is some leftover code for WinCE
    support, guarded by the _WIN32_WCE macro, which I didn't know of at the
    time.
    
    I didn't remove the _WIN32_WCE references in the tests, because in
    theory we still support the WinCE architecture in GDB (when debugging
    remotely).  So someone could run a test with that (although I'd be
    really surprised).
    
    gdb/ChangeLog:
    
            * nat/windows-nat.c: Remove all code guarded by _WIN32_WCE.
            * nat/windows-nat.h: Likewise.
    
    gdbserver/ChangeLog:
    
            * win32-low.cc: Remove all code guarded by _WIN32_WCE.
            * win32-low.h: Likewise.
    
    Change-Id: I7a871b897e2135dc195b10690bff2a01d9fac05a

Diff:
---
 gdb/ChangeLog          |   5 ++
 gdb/nat/windows-nat.c  |  11 ----
 gdb/nat/windows-nat.h  |   5 --
 gdbserver/ChangeLog    |   5 ++
 gdbserver/win32-low.cc | 176 ++-----------------------------------------------
 gdbserver/win32-low.h  |   4 --
 6 files changed, 15 insertions(+), 191 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5c38a4ed164..c363dc9091c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2021-04-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* nat/windows-nat.c: Remove all code guarded by _WIN32_WCE.
+	* nat/windows-nat.h: Likewise.
+
 2021-04-10  Eli Zaretskii  <eliz@gnu.org>
 
 	* windows-nat.c (windows_nat::handle_load_dll): Call
diff --git a/gdb/nat/windows-nat.c b/gdb/nat/windows-nat.c
index 659a75663ae..794e2df85ba 100644
--- a/gdb/nat/windows-nat.c
+++ b/gdb/nat/windows-nat.c
@@ -117,11 +117,6 @@ get_image_name (HANDLE h, void *address, int unicode)
   if (address == NULL)
     return NULL;
 
-#ifdef _WIN32_WCE
-  /* Windows CE reports the address of the image name,
-     instead of an address of a pointer into the image name.  */
-  address_ptr = address;
-#else
   /* See if we could read the address of a string, and that the
      address isn't null.  */
   if (!ReadProcessMemory (h, address,  &address_ptr,
@@ -129,7 +124,6 @@ get_image_name (HANDLE h, void *address, int unicode)
       || done != sizeof (address_ptr)
       || !address_ptr)
     return NULL;
-#endif
 
   /* Find the length of the string.  */
   while (ReadProcessMemory (h, address_ptr + len++ * size, &b, size, &done)
@@ -262,11 +256,6 @@ handle_exception (struct target_waitstatus *ourstatus, bool debug_exceptions)
     case STATUS_WX86_BREAKPOINT:
       DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_BREAKPOINT");
       ourstatus->value.sig = GDB_SIGNAL_TRAP;
-#ifdef _WIN32_WCE
-      /* Remove the initial breakpoint.  */
-      check_breakpoints ((CORE_ADDR) (long) current_event
-			 .u.Exception.ExceptionRecord.ExceptionAddress);
-#endif
       break;
     case DBG_CONTROL_C:
       DEBUG_EXCEPTION_SIMPLE ("DBG_CONTROL_C");
diff --git a/gdb/nat/windows-nat.h b/gdb/nat/windows-nat.h
index 84f6505e4c7..d8aeaa4b984 100644
--- a/gdb/nat/windows-nat.h
+++ b/gdb/nat/windows-nat.h
@@ -67,11 +67,6 @@ struct windows_thread_info
      was not.  */
   int suspended = 0;
 
-#ifdef _WIN32_WCE
-  /* The context as retrieved right after suspending the thread. */
-  CONTEXT base_context {};
-#endif
-
   /* The context of the thread, including any manipulations.  */
   union
   {
diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog
index 7692979f251..e558364b9eb 100644
--- a/gdbserver/ChangeLog
+++ b/gdbserver/ChangeLog
@@ -1,3 +1,8 @@
+2021-04-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* win32-low.cc: Remove all code guarded by _WIN32_WCE.
+	* win32-low.h: Likewise.
+
 2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
 	* target.h (class process_stratum_target) <pid_to_exec_file>:
diff --git a/gdbserver/win32-low.cc b/gdbserver/win32-low.cc
index f6d35ca9843..1f4967320bc 100644
--- a/gdbserver/win32-low.cc
+++ b/gdbserver/win32-low.cc
@@ -62,13 +62,8 @@ using namespace windows_nat;
 #define COUNTOF(STR) (sizeof (STR) / sizeof ((STR)[0]))
 #endif
 
-#ifdef _WIN32_WCE
-# define GETPROCADDRESS(DLL, PROC) \
-  ((winapi_ ## PROC) GetProcAddress (DLL, TEXT (#PROC)))
-#else
-# define GETPROCADDRESS(DLL, PROC) \
+#define GETPROCADDRESS(DLL, PROC) \
   ((winapi_ ## PROC) GetProcAddress (DLL, #PROC))
-#endif
 
 int using_threads = 1;
 
@@ -111,9 +106,7 @@ winapi_Wow64GetThreadContext win32_Wow64GetThreadContext;
 static winapi_Wow64SetThreadContext win32_Wow64SetThreadContext;
 #endif
 
-#ifndef _WIN32_WCE
 static void win32_add_all_dlls (void);
-#endif
 
 /* Get the thread ID from the current selected inferior (the current
    thread).  */
@@ -142,9 +135,6 @@ win32_get_thread_context (windows_thread_info *th)
 #endif
     memset (&th->context, 0, sizeof (CONTEXT));
   (*the_low_target.get_thread_context) (th);
-#ifdef _WIN32_WCE
-  memcpy (&th->base_context, &th->context, sizeof (CONTEXT));
-#endif
 }
 
 /* Set the thread context of the thread associated with TH.  */
@@ -152,27 +142,12 @@ win32_get_thread_context (windows_thread_info *th)
 static void
 win32_set_thread_context (windows_thread_info *th)
 {
-#ifdef _WIN32_WCE
-  /* Calling SuspendThread on a thread that is running kernel code
-     will report that the suspending was successful, but in fact, that
-     will often not be true.  In those cases, the context returned by
-     GetThreadContext will not be correct by the time the thread
-     stops, hence we can't set that context back into the thread when
-     resuming - it will most likely crash the inferior.
-     Unfortunately, there is no way to know when the thread will
-     really stop.  To work around it, we'll only write the context
-     back to the thread when either the user or GDB explicitly change
-     it between stopping and resuming.  */
-  if (memcmp (&th->context, &th->base_context, sizeof (CONTEXT)) != 0)
-#endif
-    {
 #ifdef __x86_64__
-      if (wow64_process)
-	win32_Wow64SetThreadContext (th->h, &th->wow64_context);
-      else
+  if (wow64_process)
+    win32_Wow64SetThreadContext (th->h, &th->wow64_context);
+  else
 #endif
-	SetThreadContext (th->h, &th->context);
-    }
+    SetThreadContext (th->h, &th->context);
 }
 
 /* Set the thread context of the thread associated with TH.  */
@@ -445,7 +420,6 @@ do_initial_child_stuff (HANDLE proch, DWORD pid, int attached)
       }
     }
 
-#ifndef _WIN32_WCE
   /* Now that the inferior has been started and all DLLs have been mapped,
      we can iterate over all DLLs and load them in.
 
@@ -462,7 +436,6 @@ do_initial_child_stuff (HANDLE proch, DWORD pid, int attached)
      simpler to just ignore DLL load/unload events during the startup
      phase, and then process them all in one batch now.  */
   win32_add_all_dlls ();
-#endif
 
   child_initialization_done = 1;
 }
@@ -611,46 +584,6 @@ create_process (const char *program, char *args,
   proglen = strlen (program) + 1;
   argslen = strlen (args) + proglen;
 
-#ifdef _WIN32_WCE
-  wchar_t *p, *wprogram, *wargs, *wcwd = NULL;
-
-  wprogram = (wchar_t *) alloca (proglen * sizeof (wchar_t));
-  mbstowcs (wprogram, program, proglen);
-
-  for (p = wprogram; *p; ++p)
-    if (L'/' == *p)
-      *p = L'\\';
-
-  wargs = alloca ((argslen + 1) * sizeof (wchar_t));
-  wcscpy (wargs, wprogram);
-  wcscat (wargs, L" ");
-  mbstowcs (wargs + proglen, args, argslen + 1 - proglen);
-
-  if (inferior_cwd != NULL)
-    {
-      std::string expanded_infcwd = gdb_tilde_expand (inferior_cwd);
-      std::replace (expanded_infcwd.begin (), expanded_infcwd.end (),
-		    '/', '\\');
-      wcwd = alloca ((expanded_infcwd.size () + 1) * sizeof (wchar_t));
-      if (mbstowcs (wcwd, expanded_infcwd.c_str (),
-		    expanded_infcwd.size () + 1) == NULL)
-	{
-	  error (_("\
-Could not convert the expanded inferior cwd to wide-char."));
-	}
-    }
-
-  ret = CreateProcessW (wprogram, /* image name */
-			wargs,    /* command line */
-			NULL,     /* security, not supported */
-			NULL,     /* thread, not supported */
-			FALSE,    /* inherit handles, not supported */
-			flags,    /* start flags */
-			NULL,     /* environment, not supported */
-			wcwd,     /* current directory */
-			NULL,     /* start info, not supported */
-			pi);      /* proc info */
-#else
   STARTUPINFOA si = { sizeof (STARTUPINFOA) };
   char *program_and_args = (char *) alloca (argslen + 1);
 
@@ -670,7 +603,6 @@ Could not convert the expanded inferior cwd to wide-char."));
 			 : gdb_tilde_expand (inferior_cwd).c_str()),
 			&si,               /* start info */
 			pi);               /* proc info */
-#endif
 
   return ret;
 }
@@ -751,12 +683,7 @@ win32_process_target::create_inferior (const char *program,
       OUTMSG2 (("Process created: %s %s\n", program, (char *) args));
     }
 
-#ifndef _WIN32_WCE
-  /* On Windows CE this handle can't be closed.  The OS reuses
-     it in the debug events, while the 9x/NT versions of Windows
-     probably use a DuplicateHandle'd one.  */
   CloseHandle (pi.hThread);
-#endif
 
   do_initial_child_stuff (pi.hProcess, pi.dwProcessId, 0);
 
@@ -779,11 +706,7 @@ win32_process_target::attach (unsigned long pid)
   HANDLE h;
   winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
   DWORD err;
-#ifdef _WIN32_WCE
-  HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
-#else
   HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
-#endif
   DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit);
 
   h = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid);
@@ -901,11 +824,7 @@ win32_process_target::detach (process_info *process)
 {
   winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL;
   winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
-#ifdef _WIN32_WCE
-  HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
-#else
   HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
-#endif
   DebugActiveProcessStop = GETPROCADDRESS (dll, DebugActiveProcessStop);
   DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit);
 
@@ -1056,15 +975,8 @@ win32_add_one_solib (const char *name, CORE_ADDR load_addr)
   char buf[MAX_PATH + 1];
   char buf2[MAX_PATH + 1];
 
-#ifdef _WIN32_WCE
-  WIN32_FIND_DATA w32_fd;
-  WCHAR wname[MAX_PATH + 1];
-  mbstowcs (wname, name, MAX_PATH);
-  HANDLE h = FindFirstFile (wname, &w32_fd);
-#else
   WIN32_FIND_DATAA w32_fd;
   HANDLE h = FindFirstFileA (name, &w32_fd);
-#endif
 
   /* The symbols in a dll are offset by 0x1000, which is the
      offset from 0 of the first byte in an image - because
@@ -1077,7 +989,6 @@ win32_add_one_solib (const char *name, CORE_ADDR load_addr)
     {
       FindClose (h);
       strcpy (buf, name);
-#ifndef _WIN32_WCE
       {
 	char cwd[MAX_PATH + 1];
 	char *p;
@@ -1091,16 +1002,13 @@ win32_add_one_solib (const char *name, CORE_ADDR load_addr)
 	    SetCurrentDirectoryA (cwd);
 	  }
       }
-#endif
     }
 
-#ifndef _WIN32_WCE
   if (strcasecmp (buf, "ntdll.dll") == 0)
     {
       GetSystemDirectoryA (buf, sizeof (buf));
       strcat (buf, "\\ntdll.dll");
     }
-#endif
 
 #ifdef __CYGWIN__
   cygwin_conv_path (CCP_WIN_A_TO_POSIX, buf, buf2, sizeof (buf2));
@@ -1163,8 +1071,6 @@ load_psapi (void)
 	  && win32_GetModuleFileNameExA != NULL);
 }
 
-#ifndef _WIN32_WCE
-
 /* Iterate over all DLLs currently mapped by our inferior, looking for
    a DLL loaded at LOAD_ADDR; if found, return its file name,
    otherwise return NULL.  If LOAD_ADDR is NULL, add all mapped DLLs
@@ -1304,7 +1210,6 @@ win32_add_all_dlls (void)
 {
   win32_add_dll (NULL);
 }
-#endif	/* !_WIN32_WCE */
 
 typedef HANDLE (WINAPI *winapi_CreateToolhelp32Snapshot) (DWORD, DWORD);
 typedef BOOL (WINAPI *winapi_Module32First) (HANDLE, LPMODULEENTRY32);
@@ -1370,14 +1275,6 @@ fake_breakpoint_event (void)
   for_each_thread (suspend_one_thread);
 }
 
-#ifdef _WIN32_WCE
-static int
-auto_delete_breakpoint (CORE_ADDR stop_pc)
-{
-  return 1;
-}
-#endif
-
 /* See nat/windows-nat.h.  */
 
 bool
@@ -1723,11 +1620,7 @@ win32_process_target::request_interrupt ()
   winapi_DebugBreakProcess DebugBreakProcess;
   winapi_GenerateConsoleCtrlEvent GenerateConsoleCtrlEvent;
 
-#ifdef _WIN32_WCE
-  HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
-#else
   HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
-#endif
 
   GenerateConsoleCtrlEvent = GETPROCADDRESS (dll, GenerateConsoleCtrlEvent);
 
@@ -1756,65 +1649,6 @@ win32_process_target::supports_hardware_single_step ()
   return true;
 }
 
-#ifdef _WIN32_WCE
-int
-win32_error_to_fileio_error (DWORD err)
-{
-  switch (err)
-    {
-    case ERROR_BAD_PATHNAME:
-    case ERROR_FILE_NOT_FOUND:
-    case ERROR_INVALID_NAME:
-    case ERROR_PATH_NOT_FOUND:
-      return FILEIO_ENOENT;
-    case ERROR_CRC:
-    case ERROR_IO_DEVICE:
-    case ERROR_OPEN_FAILED:
-      return FILEIO_EIO;
-    case ERROR_INVALID_HANDLE:
-      return FILEIO_EBADF;
-    case ERROR_ACCESS_DENIED:
-    case ERROR_SHARING_VIOLATION:
-      return FILEIO_EACCES;
-    case ERROR_NOACCESS:
-      return FILEIO_EFAULT;
-    case ERROR_BUSY:
-      return FILEIO_EBUSY;
-    case ERROR_ALREADY_EXISTS:
-    case ERROR_FILE_EXISTS:
-      return FILEIO_EEXIST;
-    case ERROR_BAD_DEVICE:
-      return FILEIO_ENODEV;
-    case ERROR_DIRECTORY:
-      return FILEIO_ENOTDIR;
-    case ERROR_FILENAME_EXCED_RANGE:
-    case ERROR_INVALID_DATA:
-    case ERROR_INVALID_PARAMETER:
-    case ERROR_NEGATIVE_SEEK:
-      return FILEIO_EINVAL;
-    case ERROR_TOO_MANY_OPEN_FILES:
-      return FILEIO_EMFILE;
-    case ERROR_HANDLE_DISK_FULL:
-    case ERROR_DISK_FULL:
-      return FILEIO_ENOSPC;
-    case ERROR_WRITE_PROTECT:
-      return FILEIO_EROFS;
-    case ERROR_NOT_SUPPORTED:
-      return FILEIO_ENOSYS;
-    }
-
-  return FILEIO_EUNKNOWN;
-}
-
-void
-win32_process_target::hostio_last_error (char *buf)
-{
-  DWORD winerr = GetLastError ();
-  int fileio_err = win32_error_to_fileio_error (winerr);
-  sprintf (buf, "F-1,%x", fileio_err);
-}
-#endif
-
 bool
 win32_process_target::supports_qxfer_siginfo ()
 {
diff --git a/gdbserver/win32-low.h b/gdbserver/win32-low.h
index 81946612cef..fce19e49dec 100644
--- a/gdbserver/win32-low.h
+++ b/gdbserver/win32-low.h
@@ -142,10 +142,6 @@ public:
 
   CORE_ADDR stopped_data_address () override;
 
-#ifdef _WIN32_WCE
-  void hostio_last_error (char *buf) override;
-#endif
-
   bool supports_qxfer_siginfo () override;
 
   int qxfer_siginfo (const char *annex, unsigned char *readbuf,


More information about the Gdb-cvs mailing list