[New WinCE support] [patch 4/4] The bulk of the code.
Pedro Alves
pedro_alves@portugalmail.pt
Fri Mar 16 02:10:00 GMT 2007
This patch is the bulk of the new WinCE support.
It contains:
- The new WinCE support on gdb/ side.
- The gdbserver port.
WinCE has the following (and a few more) twists:
- No errno/perror/strerror - The runtime only knows about
GetLastError/SetLastError.
- No signals support.
- The initial breakpoint (the automatically inserted
at the entry point breakpoint) must be inserted manually.
- All programs link to coredll.dll instead of kernel32.dll.
- CreateProcess has the same signature as the 9x/NT Windows,
but a bunch of parameters are unsupported, and the
image name (first param) must never be null.
There was a little bug in win32-low.c
(original win32-i386-low.c). There was a call to
strerror (GetLastError ()), but strerror should take an errno
value, not a winerror, as the error codes are not compatible.
That was fixed by using a new strwinerror function, that is
used also as a replacement for strerror on WinCE.
The patch moves the gdbserver i386 specifics into a new
win32-i386-low.c, and the new arm stuff into
win32-arm-low.c. The changes were modelled on the linux
support. It was done this way to minimize the #ifdefery.
The arm/i386 differences are mostly:
- the gdb/'win32 Context' register mappings
- I need to store the ARM WinCE breakpoint opcode somewhere - it
is used to insert the initial breakpoint.
- The i386 debug registers handling (although watchpoint support isn't
really implemented in win32-i386-low.c currently; gdb/i386-nat.c
would have to be copied/used from gdbserver).
Note that i386/arm is orthogonal to 9x/NT/CE. WinCE can also be i386.
I stashed the i386 debug registers copying into a
load/store interface, mainly because I needed to get them out
of the generic win32-low.c. I'm open to better suggestions.
Note that although the debug registers handling code was copied from
gdb/win32-nat.c, watchpoints are not supported, making the
debug registers copying unneeded; they could be disabled until
proper watchpoint support is implemented.
With this patch, the old config/arm/tm-wince.h, wince.c,
wince-stub.h and wince-stub.c file can finally go away.
Cheers,
Pedro Alves
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: wince_gdbserver.diff
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20070316/673a808c/attachment.ksh>
More information about the Gdb-patches
mailing list