Skip to content
Snippets Groups Projects
  1. Aug 17, 2007
  2. Nov 08, 2006
  3. Jun 30, 2006
  4. Sep 09, 2005
  5. Oct 24, 2003
    • toy's avatar
      Add support for catching heap overflows, similar to the control stack · 3e309c44
      toy authored
      overflow checking.  Enable with :heap-overflow-check.  We reserve some
      number of pages on the heap.  When the heap reaches the reserved
      pages, an overflow warning is signalled.  The reserved pages are set
      0.  This allows some additional allocation to happen during debugging,
      if necessary.  If another overflow happens, we throw to top-level.
      
      Sparc only right now.
      
      	* lisp/sparc-assem.S (_do_dynamic_space_overflow_error): New
      	function to handle a heap overflow error.
      	(_do_dynamic_space_overflow_warning): New function to handle heap
      	overflow warning.
      
      	* lisp/sparc-arch.c (sigill_handler): Handle the two new traps
      	caused by heap overflows.
      
      	* lisp/interrupt.c (interrupt_handle_space_overflow): New function
      	to handle interrupt caused by heap space overflows.
      
      	* lisp/gencgc.c (handle_heap_overflow): New function to handle
      	heap overflows.
      	(gc_alloc_new_region): Use handle_heap_overflow.
      	(gc_alloc_large): Use handle_heap_overflow
      
      	* compiler/sparc/parms.lisp (static-symbols): Add new static
      	symbols for heap overflow checking:
      	dynamic-space-overflow-error-hit and
      	dynamic-space-overflow-warning-hit.
      
      	* compiler/generic/new-genesis.lisp (finish-symbols): Initialize
      	the new dynamic-space-overflow-error-hit and
      	dynamic-space-overflow-warning-hit static symbols.
      
      	* code/lispinit.lisp (:heap-overflow-check): Add
      	heap-overflow-check to *runtime-features*, if necessary.
      	("reserved_heap_pages"): Access to alien variable for heap
      	overflow.
      	(*reserved-heap-pages*): Default number of heap pages to reserve
      	for heap overflow.
      	(%top-level): Set reserved-heap-pages to the default.
      
      	* code/interr.lisp (dynamic-space-overflow-warning-hit): Add
      	function to handle heap overflow warnings.
      	(dynamic-space-overflow-error-hit): Add function to handle heap
      	overflow error.
      
      	* code/error.lisp (heap-overflow): Add new condition type for heap
      	overflow
      3e309c44
  6. May 26, 2003
    • gerd's avatar
      Fix code signaling type-errors which did not have :datum and/or · 98ee6882
      gerd authored
      	:expected-type, which lead to the conditions which were not
      	displayable because the corresponding condition slots are
      	not bound.
      
      	* src/code/seq.lisp (coerce):
      	* src/code/list.lisp (nreconc):
      	* src/code/interr.lisp (invalid-array-index-error):
      	* src/code/bignum.lisp (bignum-to-float):
      	* src/code/byte-interp.lisp (%byte-car, %byte-cdr): Fix
      	type-errors to include :datum and/or :expected-type.
      
      	Add &more handling to the byte-compiler and -interpreter.
      	Reported by Paul Werkowski on cmucl-imp.
      
      	* src/compiler/byte-comp.lisp (make-xep-for): Handle &more.
      
      	* src/code/byte-interp.lisp (hairy-byte-function): Change
      	type of rest-arg-p slot.
      	(invoke-xep): Handle &more.
      98ee6882
  7. Apr 21, 2003
  8. Mar 23, 2003
    • gerd's avatar
      Optional control stack checking. This is controlled by the · 670d643f
      gerd authored
      	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.
      670d643f
  9. Aug 28, 2002
    • pmai's avatar
      A number of smallish changes to the new linkage-table code: · cf055d22
      pmai authored
      o Conditionalized some code that is only used in linkage-table builds
        on :linkage-table and LINKAGE_TABLE respectively.
      o Modernized undefined_ff_tramp based on recent changes, and renamed
        it to undefined_foreign_symbol_trap, because it really isn't a
        trampoline.
      o Conditionalized a stray puts(...,dlerror()) in Linux-os.c on DEBUG
      o Installed an error reporter for UNDEFINED_FOREIGN_SYMBOL_ERROR,
        which for now signals a simple-program-error.  We might want to
        introduced a new condition UNDEFINED-FOREIGN-SYMBOL or something,
        which could also be used by the old foreign linkage code.
      cf055d22
  10. Oct 27, 2001
  11. May 01, 1999
  12. Dec 19, 1998
  13. Aug 14, 1998
  14. Jul 24, 1998
  15. Mar 21, 1998
  16. Nov 15, 1997
  17. Nov 01, 1997
    • dtc's avatar
      Improved support for (complex single-float) and (complex double-float) · 4c3b1bb6
      dtc authored
      types. Adds storage classes to the backend for these so they can be
      stored in registers or on the stack without consing; new primitive
      types etc. Also adds (simple-array (complex {single,double}-float))
      array types to avoid consing and speed vectors operations.  All
      these changes are conditional on the :complex-float feature. More work
      is needed to exploit these changes: improving the type dispatch in the
      various function; maybe compiler transforms or more VOPs to handle
      common functions inline.
      4c3b1bb6
  18. Apr 01, 1997
    • dtc's avatar
      Support for some specialised signed array types: (signed-byte 8), · d5d4504f
      dtc authored
      (signed-byte 16), (signed-byte 30), (signed-byte 32).  These patches
      include the general support and the x86 backend support; more to
      follow. The important changes are conditional on the :signed-array
      feature so shouldn't affect the source without this feature. This work
      has been driven by Raymond Toy.
      d5d4504f
  19. Oct 31, 1994
  20. Oct 19, 1994
  21. Jun 24, 1993
  22. May 29, 1993
  23. Feb 26, 1993
  24. Feb 08, 1993
  25. Jan 15, 1993
  26. Apr 15, 1992
  27. Mar 28, 1992
  28. Mar 10, 1992
  29. Feb 14, 1992
  30. Jan 21, 1992
  31. Nov 09, 1991
  32. May 24, 1991
  33. Feb 08, 1991
  34. Dec 11, 1990
  35. Nov 26, 1990
  36. Nov 07, 1990
  37. Oct 03, 1990
Loading