ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/sigsegv.cpp
Revision 1.46 - (view) (annotate) - [select for diffs]
2004-01-22T00:00:55Z (20 years, 5 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, 5 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, 5 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, 5 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, 5 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, 5 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, 6 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, 6 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, 6 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, 6 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 (20 years, 7 months 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 (20 years, 7 months 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 (20 years, 7 months 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 (20 years, 8 months 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 (20 years, 8 months 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 (20 years, 8 months 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 (20 years, 8 months 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 (20 years, 8 months 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 (20 years, 8 months 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 (20 years, 8 months 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 (20 years, 9 months 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 (20 years, 9 months 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 (20 years, 9 months 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 (20 years, 10 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, 1 month 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 (21 years, 9 months 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 (21 years, 11 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 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, 1 month 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, 1 month 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, 1 month 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, 1 month 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, 1 month 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, 1 month 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, 1 month 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, 1 month 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, 1 month 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, 3 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, 5 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, 5 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, 6 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 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 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, 1 month 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, 1 month 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, 1 month 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-15: (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