diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog index 70a2a821dc..3eef544704 100644 --- a/gdbserver/ChangeLog +++ b/gdbserver/ChangeLog @@ -1,3 +1,11 @@ +2020-06-12 Simon Marchi + + * Makefile.in (SFILES): Remove win32-arm-low.cc, wincecompat.cc. + * configure.srv: Remove mingw32ce cases. + * server.h, win32-low.cc: Remove __MINGW32CE__-guarded code. + * win32-low.h (to_back_slashes): Remove. + * win32-arm-low.cc, wincecompat.cc, wincecompat.h: Remove. + 2020-06-12 Simon Marchi * Makefile.in (SFILES): linux-tile-low.cc. diff --git a/gdbserver/Makefile.in b/gdbserver/Makefile.in index cc5fa427c9..7321ba12c2 100644 --- a/gdbserver/Makefile.in +++ b/gdbserver/Makefile.in @@ -202,10 +202,8 @@ SFILES = \ $(srcdir)/target.cc \ $(srcdir)/thread-db.cc \ $(srcdir)/utils.cc \ - $(srcdir)/win32-arm-low.cc \ $(srcdir)/win32-i386-low.cc \ $(srcdir)/win32-low.cc \ - $(srcdir)/wincecompat.cc \ $(srcdir)/x86-low.cc \ $(srcdir)/../gdb/alloc.c \ $(srcdir)/../gdb/arch/arm.c \ diff --git a/gdbserver/configure.srv b/gdbserver/configure.srv index b376cb1344..5e33bd9c54 100644 --- a/gdbserver/configure.srv +++ b/gdbserver/configure.srv @@ -73,14 +73,6 @@ case "${gdbserver_host}" in srv_linux_regsets=yes srv_linux_thread_db=yes ;; - arm*-*-mingw32ce*) srv_regobj=reg-arm.o - srv_tgtobj="win32-low.o windows-nat.o win32-arm-low.o" - srv_tgtobj="${srv_tgtobj} wincecompat.o" - # hostio_last_error implementation is in win32-low.c - srv_hostio_err_objs="" - srv_mingw=yes - srv_mingwce=yes - ;; i[34567]86-*-cygwin*) srv_regobj="" srv_tgtobj="x86-low.o nat/x86-dregs.o win32-low.o" srv_tgtobj="${srv_tgtobj} win32-i386-low.o" @@ -102,18 +94,6 @@ case "${gdbserver_host}" in ipa_obj="linux-i386-ipa.o linux-x86-tdesc-ipa.o" ipa_obj="${ipa_obj} arch/i386-ipa.o" ;; - i[34567]86-*-mingw32ce*) - srv_regobj="" - srv_tgtobj="x86-low.o nat/x86-dregs.o win32-low.o" - srv_tgtobj="${srv_tgtobj} win32-i386-low.o" - srv_tgtobj="${srv_tgtobj} nat/windows-nat.o" - srv_tgtobj="${srv_tgtobj} arch/i386.o" - srv_tgtobj="${srv_tgtobj} wincecompat.o" - # hostio_last_error implementation is in win32-low.c - srv_hostio_err_objs="" - srv_mingw=yes - srv_mingwce=yes - ;; i[34567]86-*-mingw*) srv_regobj="" srv_tgtobj="x86-low.o nat/x86-dregs.o win32-low.o" srv_tgtobj="${srv_tgtobj} win32-i386-low.o" diff --git a/gdbserver/server.h b/gdbserver/server.h index 09989e4626..22228050a8 100644 --- a/gdbserver/server.h +++ b/gdbserver/server.h @@ -31,10 +31,6 @@ gdb_static_assert (sizeof (CORE_ADDR) >= sizeof (void *)); -#ifdef __MINGW32CE__ -#include "wincecompat.h" -#endif - #include "gdbsupport/version.h" #if !HAVE_DECL_PERROR diff --git a/gdbserver/win32-arm-low.cc b/gdbserver/win32-arm-low.cc deleted file mode 100644 index aacf2cdf8c..0000000000 --- a/gdbserver/win32-arm-low.cc +++ /dev/null @@ -1,168 +0,0 @@ -/* Copyright (C) 2007-2020 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include "server.h" -#include "win32-low.h" - -using namespace windows_nat; - -#ifndef CONTEXT_FLOATING_POINT -#define CONTEXT_FLOATING_POINT 0 -#endif - -/* Defined in auto-generated file reg-arm.c. */ -void init_registers_arm (void); -extern const struct target_desc *tdesc_arm; - -static void -arm_get_thread_context (windows_thread_info *th) -{ - th->context.ContextFlags = \ - CONTEXT_FULL | \ - CONTEXT_FLOATING_POINT; - - GetThreadContext (th->h, &th->context); -} - -#define context_offset(x) ((int)&(((CONTEXT *)NULL)->x)) -static const int mappings[] = { - context_offset (R0), - context_offset (R1), - context_offset (R2), - context_offset (R3), - context_offset (R4), - context_offset (R5), - context_offset (R6), - context_offset (R7), - context_offset (R8), - context_offset (R9), - context_offset (R10), - context_offset (R11), - context_offset (R12), - context_offset (Sp), - context_offset (Lr), - context_offset (Pc), - -1, /* f0 */ - -1, /* f1 */ - -1, /* f2 */ - -1, /* f3 */ - -1, /* f4 */ - -1, /* f5 */ - -1, /* f6 */ - -1, /* f7 */ - -1, /* fps */ - context_offset (Psr), -}; -#undef context_offset - -/* Return a pointer into a CONTEXT field indexed by gdb register number. - Return a pointer to an dummy register holding zero if there is no - corresponding CONTEXT field for the given register number. */ -static char * -regptr (CONTEXT* c, int r) -{ - if (mappings[r] < 0) - { - static ULONG zero; - /* Always force value to zero, in case the user tried to write - to this register before. */ - zero = 0; - return (char *) &zero; - } - else - return (char *) c + mappings[r]; -} - -/* Fetch register from gdbserver regcache data. */ -static void -arm_fetch_inferior_register (struct regcache *regcache, - windows_thread_info *th, int r) -{ - char *context_offset = regptr (&th->context, r); - supply_register (regcache, r, context_offset); -} - -/* Store a new register value into the thread context of TH. */ -static void -arm_store_inferior_register (struct regcache *regcache, - windows_thread_info *th, int r) -{ - collect_register (regcache, r, regptr (&th->context, r)); -} - -static void -arm_arch_setup (void) -{ - init_registers_arm (); - win32_tdesc = tdesc_arm; -} - -/* Implement win32_target_ops "num_regs" method. */ - -static int -arm_num_regs (void) -{ - return sizeof (mappings) / sizeof (mappings[0]), -} - -/* Correct in either endianness. We do not support Thumb yet. */ -static const unsigned long arm_wince_breakpoint = 0xe6000010; -#define arm_wince_breakpoint_len 4 - -/* Implement win32_target_ops "get_pc" method. */ - -static CORE_ADDR -arm_win32_get_pc (struct regcache *regcache) -{ - uint32_t pc; - - collect_register_by_name (regcache, "pc", &pc); - return (CORE_ADDR) pc; -} - -/* Implement win32_target_ops "set_pc" method. */ - -static void -arm_win32_set_pc (struct regcache *regcache, CORE_ADDR pc) -{ - uint32_t newpc = pc; - - supply_register_by_name (regcache, "pc", &newpc); -} - -struct win32_target_ops the_low_target = { - arm_arch_setup, - arm_num_regs, - NULL, /* initial_stuff */ - arm_get_thread_context, - NULL, /* prepare_to_resume */ - NULL, /* thread_added */ - arm_fetch_inferior_register, - arm_store_inferior_register, - NULL, /* single_step */ - (const unsigned char *) &arm_wince_breakpoint, - arm_wince_breakpoint_len, - 0, - arm_win32_get_pc, - arm_win32_set_pc, - /* Watchpoint related functions. See target.h for comments. */ - NULL, /* supports_z_point_type */ - NULL, /* insert_point */ - NULL, /* remove_point */ - NULL, /* stopped_by_watchpoint */ - NULL /* stopped_data_address */ -}; diff --git a/gdbserver/win32-low.cc b/gdbserver/win32-low.cc index a42fe25a22..a11cc74092 100644 --- a/gdbserver/win32-low.cc +++ b/gdbserver/win32-low.cc @@ -1421,69 +1421,39 @@ get_child_debug_event (DWORD *continue_status, goto gotevent; } -#ifndef _WIN32_WCE attaching = 0; -#else - if (attaching) - { - /* WinCE doesn't set an initial breakpoint automatically. To - stop the inferior, we flush all currently pending debug - events -- the thread list and the dll list are always - reported immediatelly without delay, then, we suspend all - threads and pretend we saw a trap at the current PC of the - main thread. + { + gdb::optional stop = fetch_pending_stop (debug_threads); + if (stop.has_value ()) + { + *ourstatus = stop->status; + current_event = stop->event; + ptid = debug_event_ptid (¤t_event); + current_thread = find_thread_ptid (ptid); + return 1; + } - Contrary to desktop Windows, Windows CE *does* report the dll - names on LOAD_DLL_DEBUG_EVENTs resulting from a - DebugActiveProcess call. This limits the way we can detect - if all the dlls have already been reported. If we get a real - debug event before leaving attaching, the worst that will - happen is the user will see a spurious breakpoint. */ + /* Keep the wait time low enough for comfortable remote + interruption, but high enough so gdbserver doesn't become a + bottleneck. */ + if (!wait_for_debug_event (¤t_event, 250)) + { + DWORD e = GetLastError(); - current_event.dwDebugEventCode = 0; - if (!wait_for_debug_event (¤t_event, 0)) - { - OUTMSG2(("no attach events left\n")); - fake_breakpoint_event (); - attaching = 0; - } - else - OUTMSG2(("got attach event\n")); - } - else -#endif - { - gdb::optional stop = fetch_pending_stop (debug_threads); - if (stop.has_value ()) - { - *ourstatus = stop->status; - current_event = stop->event; - ptid = debug_event_ptid (¤t_event); - current_thread = find_thread_ptid (ptid); - return 1; - } + if (e == ERROR_PIPE_NOT_CONNECTED) + { + /* This will happen if the loader fails to succesfully + load the application, e.g., if the main executable + tries to pull in a non-existing export from a + DLL. */ + ourstatus->kind = TARGET_WAITKIND_EXITED; + ourstatus->value.integer = 1; + return 1; + } - /* Keep the wait time low enough for comfortable remote - interruption, but high enough so gdbserver doesn't become a - bottleneck. */ - if (!wait_for_debug_event (¤t_event, 250)) - { - DWORD e = GetLastError(); - - if (e == ERROR_PIPE_NOT_CONNECTED) - { - /* This will happen if the loader fails to succesfully - load the application, e.g., if the main executable - tries to pull in a non-existing export from a - DLL. */ - ourstatus->kind = TARGET_WAITKIND_EXITED; - ourstatus->value.integer = 1; - return 1; - } - - return 0; - } - } + return 0; + } + } gotevent: @@ -1534,19 +1504,6 @@ get_child_debug_event (DWORD *continue_status, main_thread_id, current_event.u.CreateProcessInfo.hThread, current_event.u.CreateProcessInfo.lpThreadLocalBase); - -#ifdef _WIN32_WCE - if (!attaching) - { - /* Windows CE doesn't set the initial breakpoint - automatically like the desktop versions of Windows do. - We add it explicitly here. It will be removed as soon as - it is hit. */ - set_breakpoint_at ((CORE_ADDR) (long) current_event.u - .CreateProcessInfo.lpStartAddress, - auto_delete_breakpoint); - } -#endif break; case EXIT_PROCESS_DEBUG_EVENT: diff --git a/gdbserver/win32-low.h b/gdbserver/win32-low.h index a023eb1f83..f3b44776ae 100644 --- a/gdbserver/win32-low.h +++ b/gdbserver/win32-low.h @@ -183,8 +183,4 @@ extern void win32_require_context (windows_nat::windows_thread_info *th); of GetLastError. */ extern char * strwinerror (DWORD error); -/* in wincecompat.c */ - -extern void to_back_slashes (char *); - #endif /* GDBSERVER_WIN32_LOW_H */ diff --git a/gdbserver/wincecompat.cc b/gdbserver/wincecompat.cc deleted file mode 100644 index 46eece17e5..0000000000 --- a/gdbserver/wincecompat.cc +++ /dev/null @@ -1,38 +0,0 @@ -/* Compatibility routines for Windows CE. - Copyright (C) 2007-2020 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include "server.h" - -#include - -void -perror (const char *s) -{ - if (s && *s) - fprintf (stderr, "%s: %s\n", s, strwinerror (GetLastError ())); - else - fprintf (stderr, "%s\n", strwinerror (GetLastError ())); -} - -void -to_back_slashes (char *path) -{ - for (; *path; ++path) - if ('/' == *path) - *path = '\\'; -} diff --git a/gdbserver/wincecompat.h b/gdbserver/wincecompat.h deleted file mode 100644 index 34705c3d66..0000000000 --- a/gdbserver/wincecompat.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Compatibility routines for Windows CE. - Copyright (C) 2007-2020 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#ifndef GDBSERVER_WINCECOMPAT_H -#define GDBSERVER_WINCECOMPAT_H - -#include - -#define errno (GetLastError ()) - -/* in win32-low.c */ -extern char * strwinerror (DWORD error); -#define strerror strwinerror - -#endif /* GDBSERVER_WINCECOMPAT_H */