-
- Downloads
Optional control stack checking. This is controlled by the
feature :stack-checking because it's not implemented for other systems/architectures yet. It is currently known to work on FreeBSD 4.8-RC/x86 and Debian 2.2.20/x86. * bootfiles/18e/boot3.lisp: New boot file, well, only a description of the boot procedure since no boot file is needed. * lisp/x86-validate.h (SIGNAL_STACK_START, SIGNAL_STACK_SIZE) [__FreeBSD__, __linux__]: New defines. (CONTROL_STACK_SIZE) {__FreeBSD__, __linux__]: Adjust for signal stack. * lisp/validate.c (validate) [RED_ZONE_HIT]: Call os_guard_control_stack. Some cleanup. * lisp/os.h (BOTH_ZONES, YELLOW_ZONE, RED_ZONE): New enums. Add function prototypes. * lisp/interrupt.c (interrupt_install_low_level_handler) [RED_ZONE_HIT]: Deliver protection violations on a dedicated signal stack. * lisp/os-common.c (os_stack_grows_down_1, os_stack_grows_down): New functions. (guard_zones, control_stack_zone, os_guard_control_stack) (os_control_stack_overflow) [RED_ZONE_HIT]: New functions. (os_control_stack_overflow) [!RED_ZONE_HIT]: Dummy function. * lisp/Linux-os.c (sigsegv_handler) [RED_ZONE_HIT]: Handle control stack overflows. * lisp/FreeBSD-os.c: General cleansing. (sigbus_handler) [RED_ZONE_HIT]: Handle control stack overflows. * lisp/FreeBSD-os.h (PROTECTION_VIOLATION_SIGNAL): New define. * lisp/Linux-os.h (PROTECTION_VIOLATION_SIGNAL): New define. * compiler/x86/system.lisp (lisp::%scrub-control-stack): Change defknown from sys:scrub-control-stack. (%scrub-control-stack): Rename VOP. * code/lispinit.lisp (os-guard-control-stack) [#+stack-checking]: Define alien os_guard_control_stack. (%scrub-control-stack) [#+x86]: New function. (scrub-control-stack) [#+x86]: Call %scrub-control-stack, call os-guard-control-stack if #+stack-checking. * code/interr.lisp (yellow-zone-hit, red-zone-hit) [#+stack-checking]: New functions. * code/error.lisp (stack-overflow) [#+stack-checking]: New condition. * compiler/generic/new-genesis.lisp (finish-symbols) [#+stack-checking]: Add symbols for control stack checking. * compiler/x86/parms.lisp (static-symbols): Likewise.
Showing
- code/error.lisp 10 additions, 2 deletionscode/error.lisp
- code/exports.lisp 2 additions, 1 deletioncode/exports.lisp
- code/interr.lisp 37 additions, 2 deletionscode/interr.lisp
- code/lispinit.lisp 16 additions, 2 deletionscode/lispinit.lisp
- compiler/generic/new-genesis.lisp 5 additions, 1 deletioncompiler/generic/new-genesis.lisp
- compiler/x86/parms.lisp 3 additions, 1 deletioncompiler/x86/parms.lisp
- compiler/x86/system.lisp 4 additions, 4 deletionscompiler/x86/system.lisp
- lisp/FreeBSD-os.c 106 additions, 90 deletionslisp/FreeBSD-os.c
- lisp/FreeBSD-os.h 12 additions, 15 deletionslisp/FreeBSD-os.h
- lisp/Linux-os.c 8 additions, 3 deletionslisp/Linux-os.c
- lisp/Linux-os.h 5 additions, 1 deletionlisp/Linux-os.h
- lisp/interrupt.c 41 additions, 21 deletionslisp/interrupt.c
- lisp/os-common.c 173 additions, 2 deletionslisp/os-common.c
- lisp/os.h 6 additions, 1 deletionlisp/os.h
- lisp/validate.c 43 additions, 37 deletionslisp/validate.c
- lisp/x86-validate.h 9 additions, 5 deletionslisp/x86-validate.h
Loading
Please register or sign in to comment