ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/sigsegv.cpp
Revision 1.64 - (view) (annotate) - [select for diffs]
2006-07-19T21:31:10Z (18 years, 3 months ago) by gbeauche
Branch: MAIN
CVS Tags: nigel-build-19
Changes since 1.63: +43 -49 lines
Diff to previous 1.63
A few fixlets to the SIGSEGV library:
- Don't export transfer types definitions (formerly used by older API)
- Handle ADD instructions in ix86_skip_instruction() (generated by icc 9.1)
- Use "%p" format for EIP/RIP addresses

Revision 1.63 - (view) (annotate) - [select for diffs]
2006-05-09T06:24:05Z (18 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.62: +8 -2 lines
Diff to previous 1.62
MacOS X exception handling updates:
- Call user handler for KERN_INVALID_ADDRESS too (SIGBUS)
- Check for VALID_THREAD_STATE_FLAVOR in forward_exception()
- Return KERN_FAILURE if forward_exception() got an unknown behavior code

Revision 1.62 - (view) (annotate) - [select for diffs]
2006-03-30T22:45:49Z (18 years, 7 months ago) by gbeauche
Branch: MAIN
Changes since 1.61: +29 -0 lines
Diff to previous 1.61
decode movslq (generated by gcc4.1)

Revision 1.61 - (view) (annotate) - [select for diffs]
2006-02-27T13:38:52Z (18 years, 8 months ago) by gbeauche
Branch: MAIN
Changes since 1.60: +9 -0 lines
Diff to previous 1.60
add some barriers to make sure L_e_region* really come after the test insns

Revision 1.60 - (view) (annotate) - [select for diffs]
2006-01-24T21:33:26Z (18 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.59: +6 -6 lines
Diff to previous 1.59
ugly cast games

Revision 1.59 - (view) (annotate) - [select for diffs]
2006-01-23T23:57:41Z (18 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.58: +2 -19 lines
Diff to previous 1.58
Code I wrote yesterday was totally broken. It's enough to make sure nPC is
correctly updated too... Instruction skipper now works on Solaris/SPARC.

Revision 1.58 - (view) (annotate) - [select for diffs]
2006-01-22T23:14:48Z (18 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.57: +41 -21 lines
Diff to previous 1.57
- Fix SPARC Store Doubleword transfer_size in decoder.
- In the instruction skipper code, add a huge kludge (trampoline) to forcibly
  zero out %global registers when requested. Otherwise, Solaris/SPARC turned
  out to use %g1 during signal handling, and the zero we could have written
  to there vanished. This assumes [%sp-8] is valid to use (ABI states data
  below %sp is undefined though)

Revision 1.57 - (view) (annotate) - [select for diffs]
2006-01-22T00:05:05Z (18 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.56: +23 -3 lines
Diff to previous 1.56
Adapt for MacOS X for Intel, also fix thread_state type in forward_exception()

Revision 1.56 - (view) (annotate) - [select for diffs]
2005-06-12T21:47:46Z (19 years, 5 months ago) by gbeauche
Branch: MAIN
CVS Tags: nigel-build-17
Changes since 1.55: +46 -32 lines
Diff to previous 1.55
Mach exception recovery and instruction skipping for Darwin/x86.

Revision 1.55 - (view) (annotate) - [select for diffs]
2005-03-23T22:00:06Z (19 years, 7 months ago) by gbeauche
Branch: MAIN
Changes since 1.54: +21 -1 lines
Diff to previous 1.54
Enable instruction skipping for OpenBSD 3.4 on i386

Revision 1.54 - (view) (annotate) - [select for diffs]
2005-03-23T21:37:24Z (19 years, 7 months ago) by gbeauche
Branch: MAIN
Changes since 1.53: +24 -5 lines
Diff to previous 1.53
instruction skipper for Solaris/i386 (Solaris 9)

Revision 1.53 - (view) (annotate) - [select for diffs]
2005-02-20T11:39:12Z (19 years, 8 months ago) by gbeauche
Branch: MAIN
Changes since 1.52: +7 -0 lines
Diff to previous 1.52
NetBSD/ppc support

Revision 1.52 - (view) (annotate) - [select for diffs]
2005-01-30T21:42:14Z (19 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.51: +1 -1 lines
Diff to previous 1.51
Happy New Year!

Revision 1.51 - (view) (annotate) - [select for diffs]
2005-01-04T23:38:01Z (19 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.50: +26 -2 lines
Diff to previous 1.50
Fixes for NetBSD 2.0

Revision 1.50 - (view) (annotate) - [select for diffs]
2004-12-11T13:07:38Z (19 years, 11 months ago) by gbeauche
Branch: MAIN
Changes since 1.49: +8 -5 lines
Diff to previous 1.49
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.

Revision 1.49 - (view) (annotate) - [select for diffs]
2004-12-02T23:29:52Z (19 years, 11 months ago) by gbeauche
Branch: MAIN
Changes since 1.48: +20 -6 lines
Diff to previous 1.48
ppc64 fixes

Revision 1.48 - (view) (annotate) - [select for diffs]
2004-11-13T23:44:11Z (20 years ago) by gbeauche
Branch: MAIN
Changes since 1.47: +128 -3 lines
Diff to previous 1.47
Integrate SIGSEGV recovery from libsigsegv for Windows and Cygwin.
Also implement instruction skipper for Windows/x86.

Revision 1.47 - (view) (annotate) - [select for diffs]
2004-02-16T16:02:48Z (20 years, 8 months ago) by gbeauche
Branch: MAIN
Changes since 1.46: +1 -0 lines
Diff to previous 1.46
Decode MOVSX r32, r/m16 (generated by icc v8.0 on x86)

Revision 1.46 - (view) (annotate) - [select for diffs]
2004-01-22T00:00:55Z (20 years, 9 months ago) by gbeauche
Branch: MAIN
CVS Tags: nigel-build-15, nigel-build-16
Changes since 1.45: +1 -1 lines
Diff to previous 1.45
cosmetic fixes when printing movsbq operation summary

Revision 1.45 - (view) (annotate) - [select for diffs]
2004-01-21T23:50:06Z (20 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.44: +27 -17 lines
Diff to previous 1.44
handle (skip) x86 movsbl instructions

Revision 1.44 - (view) (annotate) - [select for diffs]
2004-01-21T23:14:28Z (20 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.43: +160 -0 lines
Diff to previous 1.43
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.

Revision 1.43 - (view) (annotate) - [select for diffs]
2004-01-20T23:49:32Z (20 years, 9 months ago) by nigel
Branch: MAIN
Changes since 1.42: +2 -0 lines
Diff to previous 1.42
Added missing switch value to eliminate a warning

Revision 1.42 - (view) (annotate) - [select for diffs]
2004-01-19T16:59:13Z (20 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.41: +12 -0 lines
Diff to previous 1.41
ARM/linux sigsegv handler. Instruction skipper yet to be written for
happy Zaurus owners.

Revision 1.41 - (view) (annotate) - [select for diffs]
2004-01-12T15:29:25Z (20 years, 10 months ago) by cebix
Branch: MAIN
Changes since 1.40: +1 -1 lines
Diff to previous 1.40
Happy New Year! :)

Revision 1.40 - (view) (annotate) - [select for diffs]
2003-12-20T23:22:25Z (20 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.39: +135 -0 lines
Diff to previous 1.39
Instruction skipper for Solaris/SPARC.

Revision 1.39 - (view) (annotate) - [select for diffs]
2003-12-20T21:50:08Z (20 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.38: +20 -1 lines
Diff to previous 1.38
Add support for Linux/hppa, FreeBSD/alpha. Misc debugging output.

Revision 1.38 - (view) (annotate) - [select for diffs]
2003-12-20T10:06:18Z (20 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.37: +167 -0 lines
Diff to previous 1.37
MIPS instruction skipper. TODO: check LWL/LWR semantics.

Revision 1.37 - (view) (annotate) - [select for diffs]
2003-12-20T07:43:56Z (20 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.36: +8 -2 lines
Diff to previous 1.36
Fix subterfuge mode on IRIX/mips. Get PC in both modes for Irix too

Revision 1.36 - (view) (annotate) - [select for diffs]
2003-11-11T00:10:39Z (21 years ago) by gbeauche
Branch: MAIN
Changes since 1.35: +6 -4 lines
Diff to previous 1.35
really fix writes to byte registers

Revision 1.35 - (view) (annotate) - [select for diffs]
2003-11-10T23:54:31Z (21 years ago) by gbeauche
Branch: MAIN
Changes since 1.34: +1 -1 lines
Diff to previous 1.34
fix configure tests. i.e. move up arch_insn_skipper_tests()

Revision 1.34 - (view) (annotate) - [select for diffs]
2003-11-10T23:47:39Z (21 years ago) by gbeauche
Branch: MAIN
Changes since 1.33: +197 -36 lines
Diff to previous 1.33
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

Revision 1.33 - (view) (annotate) - [select for diffs]
2003-10-21T23:10:19Z (21 years ago) by gbeauche
Branch: MAIN
Changes since 1.32: +37 -15 lines
Diff to previous 1.32
- 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.

Revision 1.32 - (view) (annotate) - [select for diffs]
2003-10-21T21:59:41Z (21 years ago) by gbeauche
Branch: MAIN
Changes since 1.31: +56 -14 lines
Diff to previous 1.31
Solaris/SPARC support for SIGSEGV_FAULT_INSTRUCTION

Revision 1.31 - (view) (annotate) - [select for diffs]
2003-10-13T20:15:41Z (21 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.30: +5 -4 lines
Diff to previous 1.30
fix merge with Mach exception filters, we have preconditions to check

Revision 1.30 - (view) (annotate) - [select for diffs]
2003-10-13T19:56:17Z (21 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.29: +20 -15 lines
Diff to previous 1.29
indentation fixes, optimize handle_badaccess() to receive only necessary
data and don't copy a struct sigcontext again on x86.

Revision 1.29 - (view) (annotate) - [select for diffs]
2003-10-13T19:43:09Z (21 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.28: +10 -10 lines
Diff to previous 1.28
return something more convenient to debug on errors

Revision 1.28 - (view) (annotate) - [select for diffs]
2003-10-12T21:41:19Z (21 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.27: +22 -1 lines
Diff to previous 1.27
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.

Revision 1.27 - (view) (annotate) - [select for diffs]
2003-10-12T21:15:52Z (21 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.26: +451 -22 lines
Diff to previous 1.26
Mach memory fault recovery from Michael Z. Sliczniak

Revision 1.26 - (view) (annotate) - [select for diffs]
2003-09-29T08:04:22Z (21 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.25: +1 -1 lines
Diff to previous 1.25
really fix typo!

Revision 1.25 - (view) (annotate) - [select for diffs]
2003-09-29T08:02:04Z (21 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.24: +1 -1 lines
Diff to previous 1.24
fix typo

Revision 1.24 - (view) (annotate) - [select for diffs]
2003-09-29T07:02:58Z (21 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.23: +13 -74 lines
Diff to previous 1.23
New SIGSEGV API so that skip-instruction requests are more explicit. Yes,
that's api change, but that's cooler now for SheepShaver. ;-)

Revision 1.23 - (view) (annotate) - [select for diffs]
2003-08-17T10:52:52Z (21 years, 2 months ago) by gbeauche
Branch: MAIN
Changes since 1.22: +3 -1 lines
Diff to previous 1.22
Bring x86 instruction skipper back to life

Revision 1.22 - (view) (annotate) - [select for diffs]
2003-05-14T06:50:05Z (21 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.21: +122 -74 lines
Diff to previous 1.21
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.

Revision 1.21 - (view) (annotate) - [select for diffs]
2002-10-03T15:49:14Z (22 years, 1 month ago) by gbeauche
Branch: MAIN
CVS Tags: nigel-build-12, nigel-build-13
Changes since 1.20: +0 -3 lines
Diff to previous 1.20
configure script is reportedly no longer crashing on FreeBSD when
SIGSEGV_SKIP_INSTRUCTION is set.

Revision 1.20 - (view) (annotate) - [select for diffs]
2002-07-17T06:51:05Z (22 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.19: +6 -0 lines
Diff to previous 1.19
- New arch support for IP retrieval on SIGSEGV.

Revision 1.19 - (view) (annotate) - [select for diffs]
2002-06-27T14:28:59Z (22 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.18: +2 -0 lines
Diff to previous 1.18
Correctly guard FreeBSD bits

Revision 1.18 - (view) (annotate) - [select for diffs]
2002-05-20T18:12:01Z (22 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.17: +8 -2 lines
Diff to previous 1.17
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.

Revision 1.17 - (view) (annotate) - [select for diffs]
2002-05-20T17:49:04Z (22 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.16: +38 -1 lines
Diff to previous 1.16
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.

Revision 1.16 - (view) (annotate) - [select for diffs]
2002-05-20T16:03:37Z (22 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.15: +1 -1 lines
Diff to previous 1.15
- Fix compilation on Linux/x86 with SIGCONTEXT_SUBTERFUGE

Revision 1.15 - (view) (annotate) - [select for diffs]
2002-05-20T16:00:07Z (22 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.14: +1 -1 lines
Diff to previous 1.14
- sigsegv.cpp (ix86_skip_instruction): Fix DEBUG compilation.

Revision 1.14 - (view) (annotate) - [select for diffs]
2002-05-20T15:56:13Z (22 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.13: +218 -269 lines
Diff to previous 1.13
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.

Revision 1.13 - (view) (annotate) - [select for diffs]
2002-05-19T21:58:42Z (22 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.12: +153 -1 lines
Diff to previous 1.12
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.

Revision 1.12 - (view) (annotate) - [select for diffs]
2002-05-16T15:48:06Z (22 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.11: +10 -10 lines
Diff to previous 1.11
- 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.

Revision 1.11 - (view) (annotate) - [select for diffs]
2002-05-12T13:51:22Z (22 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.10: +9 -0 lines
Diff to previous 1.10
- 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

Revision 1.10 - (view) (annotate) - [select for diffs]
2002-05-12T11:10:50Z (22 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.9: +257 -2 lines
Diff to previous 1.9
Implement the "ignoresegv" feature from SheepShaver. This is Unix-specific
so far. Target platform is currently Linux/x86.

Revision 1.9 - (view) (annotate) - [select for diffs]
2002-03-16T21:36:12Z (22 years, 8 months ago) by gbeauche
Branch: MAIN
Changes since 1.8: +4 -0 lines
Diff to previous 1.8
- Add fault instruction recovery for Linux/ppc and siginfo_t handlers

Revision 1.8 - (view) (annotate) - [select for diffs]
2002-02-01T19:25:49Z (22 years, 9 months ago) by cebix
Branch: MAIN
Changes since 1.7: +4 -0 lines
Diff to previous 1.7
direct addressing works under FreeBSD (says Michael Alyn Miller :-)

Revision 1.7 - (view) (annotate) - [select for diffs]
2002-01-15T14:58:37Z (22 years, 10 months ago) by cebix
Branch: MAIN
CVS Tags: snapshot-15012002
Changes since 1.6: +1 -1 lines
Diff to previous 1.6
- documentation updates
- 2001 -> 2002
- version 0.9 -> 1.0

Revision 1.6 - (view) (annotate) - [select for diffs]
2002-01-07T16:30:39Z (22 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.5: +4 -0 lines
Diff to previous 1.5
- Add EIP recovery on Linux/x86 when using siginfo_t based signal handlers

Revision 1.5 - (view) (annotate) - [select for diffs]
2001-07-07T09:12:15Z (23 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.4: +7 -2 lines
Diff to previous 1.4
- small fixes for Linux/ia64

Revision 1.4 - (view) (annotate) - [select for diffs]
2001-06-26T22:35:41Z (23 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.3: +134 -9 lines
Diff to previous 1.3
- 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

Revision 1.3 - (view) (annotate) - [select for diffs]
2001-06-05T12:16:34Z (23 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.2: +4 -4 lines
Diff to previous 1.2
- use "volatile" to prevent from optimization for writes to page

Revision 1.2 - (view) (annotate) - [select for diffs]
2001-05-21T03:21:54Z (23 years, 5 months ago) by gbeauche
Branch: MAIN
CVS Tags: release-0_9-1, snapshot-29052001
Changes since 1.1: +13 -2 lines
Diff to previous 1.1
- fixed "SIGSEGV recovery" not supported case

Revision 1.1 - (view) (annotate) - [select for diffs]
2001-05-20T20:31:50Z (23 years, 5 months ago) by gbeauche
Branch: MAIN
- new and updated SIGSEGV support functions:
  + configure script cleanups
  + possible support for Direct Addressing / VOSF on other platforms

Convenience Links

Links to HEAD: (view) (annotate) Links to nigel-build-19: (view) (annotate)

Compare Revisions

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.

  Diffs between and
  Type of Diff should be a