diff options
author | Pedro Alves <palves@redhat.com> | 2007-03-29 01:06:48 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2007-03-29 01:06:48 +0000 |
commit | 68070c10c721d67b22599511a73da6eb57bb4097 (patch) | |
tree | 4e643b732ae741779f2a21a83ef3f28c867aed6d /gdb/arm-wince-tdep.c | |
parent | a7b7bc0d0e309d4adc19e5508c4dd545fd99226e (diff) | |
download | gdb-68070c10c721d67b22599511a73da6eb57bb4097.zip gdb-68070c10c721d67b22599511a73da6eb57bb4097.tar.gz gdb-68070c10c721d67b22599511a73da6eb57bb4097.tar.bz2 |
gdb/
* arm-wince-tdep.c: New.
* config/arm/wince.mt (DEPRECATED_TM_FILE): Use tm-arm.h.
(MT_CFLAGS): Delete.
(TM_CLIBS): Delete.
(TDEPFILES): Add arm-wince-tdep.o, corelow.o, solib.o,
solib-legacy.o, solib-svr4.o, and remove wince.o.
* configure.tgt (arm*-*-mingw32ce*): Add.
* signals/signals.c [HAVE_SIGNAL_H]: Check.
(do_target_signal_to_host): Silence 'not used' warning.
* config/arm/tm-wince.h: Remove.
gdb/gdbserver/
* gdbserver/configure.ac: Add errno checking.
(AC_CHECK_HEADERS): Add errno.h, fcntl.h, signal.h,
sys/file.h and malloc.h.
(AC_CHECK_DECLS): Add perror.
(srv_mingwce): Handle.
* gdbserver/configure.srv (i[34567]86-*-cygwin*): Add
win32-i386-low.o to srv_tgtobj.
(i[34567]86-*-mingw*): Likewise.
(arm*-*-mingw32ce*): Add case.
* gdbreplay.c [HAVE_SYS_FILE_H, HAVE_SIGNAL_H,
HAVE_FCNTL_H, HAVE_ERRNO_H, HAVE_MALLOC_H]: Check.
[__MINGW32CE__] (strerror): New function.
[__MINGW32CE__] (errno): Define to GetLastError.
[__MINGW32CE__] (COUNTOF): New macro.
(remote_open): Remove extra close call.
* mem-break.c (delete_breakpoint_at): New function.
* mem-break.h (delete_breakpoint_at): Declare.
* remote-utils.c [HAVE_SYS_FILE_H, HAVE_SIGNAL_H,
HAVE_FCNTL_H, HAVE_UNISTD_H, HAVE_ERRNO_H]: Check.
[USE_WIN32API] (read, write): Add char* casts.
* server.c [HAVE_UNISTD_H, HAVE_SIGNAL_H]: Check.
* server.h: Include wincecompat.h on Windows CE.
[HAVE_ERRNO_H]: Check.
(perror): Declare if not declared.
* utils.c: Add stdlib.h, errno.h and malloc.h includes.
(perror_with_name): Remove errno declaration.
* wincecompat.h: New.
* wincecompat.c: New.
* win32-low.h: New.
* win32-arm-low.c: New.
* win32-i386-low.c: New.
(win32-low.c): Include mem-break.h and win32-low.h, and winnt.h.
(OUTMSG2): Make it safe.
(_T): New macro.
(COUNTOF): New macro.
(NUM_REGS): Get it from the low target.
(CONTEXT_EXTENDED_REGISTERS, CONTEXT_FLOATING_POINT,
CONTEXT_DEBUG_REGISTERS): Add fallbacks to 0.
(thread_rec): Let low target handle debug registers.
(child_add_thread): Likewise.
(child_init_thread_list): Likewise.
(continue_one_thread): Likewise.
(regptr): New.
(do_child_fetch_inferior_registers): Move to ...
* win32-i386-low.c: ... here, and rename to ...
(do_fetch_inferior_registers): ... this.
* win32-low.c (child_fetch_inferior_registers):
Go through the low target.
(do_child_store_inferior_registers): Use regptr.
(strwinerror): New function.
(win32_create_inferior): Handle Windows CE.
Use strwinerror instead of strerror on Windows error
codes. Add program to the error output.
Don't close the main thread handle on Windows CE.
(win32_attach): Use coredll.dll on Windows CE.
(win32_kill): Close current process and current
thread handles.
(win32_detach): Use coredll.dll on Windows CE.
(win32_resume): Let low target handle debug registers, and
step request.
(handle_exception): Add/Remove initial breakpoint. Avoid
non-existant WSTOPSIG on Windows CE.
(win32_read_inferior_memory): Cast to remove warning.
(win32_arch_string): Go through the low target.
(initialize_low): Call set_breakpoint_data with the low
target's breakpoint.
* win32-low.c (dr, FLAG_TRACE_BIT, FCS_REGNUM,
FOP_REGNUM, mappings): Move to ...
* win32-i386-low.c: ... here.
* win32-low.c (win32_thread_info): Move to ...
* win32-low.h: ... here.
* Makefile.in (SFILES): Add win32-low.c, win32-i386-low.c,
win32-arm-low.c and wincecompat.c.
(all:): Add $EXEEXT.
(install-only:): Likewise.
(gdbserver:): Likewise.
(gdbreplay:): Likewise.
* config.in: Regenerate.
* configure: Regenerate.
Diffstat (limited to 'gdb/arm-wince-tdep.c')
-rw-r--r-- | gdb/arm-wince-tdep.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/gdb/arm-wince-tdep.c b/gdb/arm-wince-tdep.c new file mode 100644 index 0000000..bfebef1 --- /dev/null +++ b/gdb/arm-wince-tdep.c @@ -0,0 +1,84 @@ +/* Target-dependent code for Windows CE running on ARM processors, + for GDB. + + Copyright (C) 2007 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 2 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, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "defs.h" +#include "osabi.h" +#include "solib-svr4.h" +#include "target.h" + +#include "gdb_string.h" + +#include "arm-tdep.h" + +static const char arm_wince_le_breakpoint[] = { 0x10, 0x00, 0x00, 0xe6 }; + +/* Description of the longjmp buffer. */ +#define ARM_WINCE_JB_ELEMENT_SIZE INT_REGISTER_SIZE +#define ARM_WINCE_JB_PC 21 + +static void +arm_wince_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + tdep->arm_breakpoint = arm_wince_le_breakpoint; + tdep->arm_breakpoint_size = sizeof (arm_wince_le_breakpoint); + tdep->struct_return = pcc_struct_return; + + tdep->fp_model = ARM_FLOAT_SOFT_VFP; + + tdep->jb_pc = ARM_WINCE_JB_PC; + tdep->jb_elt_size = ARM_WINCE_JB_ELEMENT_SIZE; + + /* On ARM WinCE char defaults to signed. */ + set_gdbarch_char_signed (gdbarch, 1); + + set_solib_svr4_fetch_link_map_offsets + (gdbarch, svr4_ilp32_fetch_link_map_offsets); + + /* Shared library handling. */ + set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); +} + +static enum gdb_osabi +arm_wince_osabi_sniffer (bfd *abfd) +{ + const char *target_name = bfd_get_target (abfd); + + if (strcmp (target_name, "pei-arm-wince-little") == 0) + return GDB_OSABI_WINCE; + + return GDB_OSABI_UNKNOWN; +} + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_arm_wince_tdep (void); + +void +_initialize_arm_wince_tdep (void) +{ + gdbarch_register_osabi_sniffer (bfd_arch_arm, bfd_target_coff_flavour, + arm_wince_osabi_sniffer); + + gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_WINCE, + arm_wince_init_abi); +} |