Commit Graph

50 Commits

Author SHA1 Message Date
gbeauche
c10046c137 Check that we can really read at the faulty eip in Windows prior to decoding
the instruction. Also fix the unrecoverable fault dump to really be useful.
2004-12-11 13:07:38 +00:00
gbeauche
0e52edfbd0 ppc64 fixes 2004-12-02 23:29:52 +00:00
gbeauche
68083d1102 Integrate SIGSEGV recovery from libsigsegv for Windows and Cygwin.
Also implement instruction skipper for Windows/x86.
2004-11-13 23:44:11 +00:00
gbeauche
815390707a Decode MOVSX r32, r/m16 (generated by icc v8.0 on x86) 2004-02-16 16:02:48 +00:00
gbeauche
93c472ec0a cosmetic fixes when printing movsbq operation summary 2004-01-22 00:00:55 +00:00
gbeauche
7a0681c44b handle (skip) x86 movsbl instructions 2004-01-21 23:50:06 +00:00
gbeauche
1a6c128ab2 Summary: possible support of SheepShaver on Zaurus PDAs
Add Linux/ARM instruction skipping, includes support for ARMv4+ halfword
and signed data transfer instructions. Note that load/store multiple are
not handled and someone has to make sure post-incr/write-back logic is
correctly implemented.
2004-01-21 23:14:28 +00:00
nigel
2208c5460b Added missing switch value to eliminate a warning 2004-01-20 23:49:32 +00:00
gbeauche
d09df6d1fa ARM/linux sigsegv handler. Instruction skipper yet to be written for
happy Zaurus owners.
2004-01-19 16:59:13 +00:00
cebix
9e7932abf0 Happy New Year! :) 2004-01-12 15:29:31 +00:00
gbeauche
c48515b6d5 Instruction skipper for Solaris/SPARC. 2003-12-20 23:22:25 +00:00
gbeauche
47f64bdcb8 Add support for Linux/hppa, FreeBSD/alpha. Misc debugging output. 2003-12-20 21:50:08 +00:00
gbeauche
9b99a095f0 MIPS instruction skipper. TODO: check LWL/LWR semantics. 2003-12-20 10:06:18 +00:00
gbeauche
fdf5970c28 Fix subterfuge mode on IRIX/mips. Get PC in both modes for Irix too 2003-12-20 07:43:56 +00:00
gbeauche
d4ad77d734 really fix writes to byte registers 2003-11-11 00:10:39 +00:00
gbeauche
4bce0876c0 fix configure tests. i.e. move up arch_insn_skipper_tests() 2003-11-10 23:54:31 +00:00
gbeauche
1169001df7 Extend x86 instruction skipper to AMD64. Add plenty of arch dependent
opcodes to test it. Also fix DEBUG output & writes (zero'ing) to %xH regs
2003-11-10 23:47:39 +00:00
gbeauche
9057fda327 - FreeBSD/i386 sigcontext subterfuge support for instruction skipper
- NetBSD/alpha support from Boehm GC
- NetBSD/i386 won't work in sigcontext subterfuge mode unless instruction
  is decoded more accurately to compute the effective address. Also note
  that NetBSD 1.6 does not support siginfo_t yet.
2003-10-21 23:10:19 +00:00
gbeauche
f8a0f363ea Solaris/SPARC support for SIGSEGV_FAULT_INSTRUCTION 2003-10-21 21:59:41 +00:00
gbeauche
75df809ff7 fix merge with Mach exception filters, we have preconditions to check 2003-10-13 20:15:41 +00:00
gbeauche
6a60d56bf2 indentation fixes, optimize handle_badaccess() to receive only necessary
data and don't copy a struct sigcontext again on x86.
2003-10-13 19:56:17 +00:00
gbeauche
14b51b9519 return something more convenient to debug on errors 2003-10-13 19:43:09 +00:00
gbeauche
46dc8c5391 Make sure reported fault instruction address falls into the expected code
range. This is a configure-time safety net that depends on the GCC "Labels
as Values" extension.
2003-10-12 21:41:19 +00:00
gbeauche
cf3d36a3a7 Mach memory fault recovery from Michael Z. Sliczniak 2003-10-12 21:15:52 +00:00
gbeauche
23c4ebcdf3 really fix typo! 2003-09-29 08:04:22 +00:00
gbeauche
aa61c47591 fix typo 2003-09-29 08:02:04 +00:00
gbeauche
a48a804c15 New SIGSEGV API so that skip-instruction requests are more explicit. Yes,
that's api change, but that's cooler now for SheepShaver. ;-)
2003-09-29 07:02:58 +00:00
gbeauche
ac027954dc Bring x86 instruction skipper back to life 2003-08-17 10:52:52 +00:00
gbeauche
deb3da2e9f New API to ignore a SIGSEGV fault. This should help on SheepShaver/x86 for now
since I still don't know why MacOS would like to write to ROM on a particular
test.
2003-05-14 06:50:05 +00:00
gbeauche
177cdee820 configure script is reportedly no longer crashing on FreeBSD when
SIGSEGV_SKIP_INSTRUCTION is set.
2002-10-03 15:49:14 +00:00
gbeauche
281460fba0 - New arch support for IP retrieval on SIGSEGV. 2002-07-17 06:51:05 +00:00
gbeauche
69847c3ea2 Correctly guard FreeBSD bits 2002-06-27 14:28:59 +00:00
gbeauche
d7c4d7afbf Backout "ignoresegv" support on FreeBSD/x86 for now. Unfortunately, the
configure script would hang whereas standalone testing will pass all tests.
Any idea why??
- Unix/sigsegv.cpp (ix86_skip_instruction): Add decoder for mozbl instruction.
  (SIGSEGV_REGISTER_FILE [FreeBSD/x86]): Note why we start at EDI offset
  rather than plain sigcontext pointer. i.e. I don't know sigset_t size
  beforehand and don't intend to.
2002-05-20 18:12:01 +00:00
gbeauche
2bd9ee71e8 Implement "ignoresegv" feature on FreeBSD/x86 (tested on FreeBSD 4.5)
- sigsegv.cpp (ix86_skip_instruction): Add decoder for movzwl instructions.
  (main): oddly, FreeBSD doesn't seem to let a write to a page if it is
  write-only. Aka. make the page readable too.
2002-05-20 17:49:04 +00:00
gbeauche
ae93f1e0d8 - Fix compilation on Linux/x86 with SIGCONTEXT_SUBTERFUGE 2002-05-20 16:03:37 +00:00
gbeauche
c2d3d08a7a - sigsegv.cpp (ix86_skip_instruction): Fix DEBUG compilation. 2002-05-20 16:00:07 +00:00
gbeauche
e81b9ace6d Implement "ignoresegv" feature on Darwin/ppc (tested on MacOS X)
- Unix/sigsegv.cpp (powerpc_decode_instruction): New.
  (get_fault_instruction [MacOS X]): Factorize code.
  (get_fault_instruction [Linux/m68k]): Don't use expression statement.
- README (ignoresegv): Add Darwin/ppc to list of supported platforms.
2002-05-20 15:56:13 +00:00
gbeauche
c47819020c Implement "ignoresegv" feature on Linux/ppc:
- Unix/sigsegv.cpp (powerpc_skip_instruction): New from SheepShaver code.
- README (ignoresegv): Add Linux/ppc to list of supported platforms.
2002-05-19 21:58:42 +00:00
gbeauche
39d97f5b04 - video_vosh.h (Screen_fault_handler): Move unrecoverable fault case to...
- main_unix.cpp (sigsegv_dump_state): ... Here.
- sigsegv.h (sigsegv_fault_handler_t): Rename from sigsegv_handler_t.
- sigsegv.h (sigsegv_state_dumper_t): New.
2002-05-16 15:48:06 +00:00
gbeauche
d5be07f449 - Merge with clisp SIGSEGV library version 1.2 with support added for
HP-UX (contributed by Paolo Bonzini)
- Add missing? include <ucontext.h> for Irix and OSF/1 support
2002-05-12 13:51:22 +00:00
gbeauche
266fc18f8a Implement the "ignoresegv" feature from SheepShaver. This is Unix-specific
so far. Target platform is currently Linux/x86.
2002-05-12 11:10:50 +00:00
gbeauche
b8ffa860a2 - Add fault instruction recovery for Linux/ppc and siginfo_t handlers 2002-03-16 21:36:12 +00:00
cebix
dc4d9a56c7 direct addressing works under FreeBSD (says Michael Alyn Miller :-) 2002-02-01 19:25:49 +00:00
cebix
628533940d - documentation updates
- 2001 -> 2002
- version 0.9 -> 1.0
2002-01-15 14:58:43 +00:00
gbeauche
00ef1ff5da - Add EIP recovery on Linux/x86 when using siginfo_t based signal handlers 2002-01-07 16:30:39 +00:00
gbeauche
054e33c8fc - small fixes for Linux/ia64 2001-07-07 09:12:15 +00:00
gbeauche
dae4fb627c - added SIGSEGV support for Linux/Alpha (to be checked), Darwin/PPC
- added uniform virtual memory allocation
  (supports mmap(), vm_allocate(), or fallbacks to malloc()/free())
- cleaned up memory allocation in main_unix.cpp
2001-06-26 22:35:42 +00:00
gbeauche
fe6ad83317 - use "volatile" to prevent from optimization for writes to page 2001-06-05 12:16:34 +00:00
gbeauche
b7d1ee252c - fixed "SIGSEGV recovery" not supported case 2001-05-21 03:21:54 +00:00
gbeauche
98192c4ba9 - new and updated SIGSEGV support functions:
+ configure script cleanups
  + possible support for Direct Addressing / VOSF on other platforms
2001-05-20 20:31:50 +00:00