/[cmucl]/src/lisp/x86-validate.h
ViewVC logotype

Log of /src/lisp/x86-validate.h

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (annotate)
Links to snapshot-2003-11: (view) (annotate)
Sticky Tag:

Revision 1.17 - (view) (annotate) - [select for diffs]
Sun Mar 23 21:23:41 2003 UTC (11 years ago) by gerd
Branch: MAIN
CVS Tags: dynamic-extent-base, lisp-executable-base, remove_negative_zero_not_zero, snapshot-2003-10, snapshot-2003-11, snapshot-2003-12, sparc_gencgc, sparc_gencgc_merge
Branch point for: dynamic-extent, lisp-executable, sparc_gencgc_branch
Changes since 1.16: +9 -5 lines
Diff to previous 1.16
	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.

Revision 1.16 - (view) (annotate) - [select for diffs]
Tue Aug 27 22:18:34 2002 UTC (11 years, 7 months ago) by moore
Branch: MAIN
CVS Tags: LINKAGE_TABLE, UNICODE-BASE, cold-pcl-base, release-18e, release-18e-base, release-18e-pre1, release-18e-pre2
Branch point for: UNICODE-BRANCH, cold-pcl, release-18e-branch
Changes since 1.15: +9 -1 lines
Diff to previous 1.15
On x86 FreeBSD and Linux, change the way foreign symbol addresses are resolved.
They now go through a table -- effectively a new space in the core file.
Function references are resolved lazily, data references are resolved on startup
and when a .so is loaded.  The end result is that cores can be dumped that
contain references to symbols in shared libraries.  Also, the dependence of the core on addresses in the Lisp runtime is broken.

The linkage table feature is controlled by :linkage-table and LINKAGE_TABLE in C
runtime.  Several foreign symbols are now Lisp static symbols, so a cross
compile is required whether or not the new stuff is used.  I've checked in
boot4-cross-foreign-linkage.lisp that builds the compiler for linkage table; do whatever you usually do for the non-linkage table case:)  Seriously, lets start
a discussion on standardizing "cross compilation," not to mention the general
build procedure.

Revision 1.15 - (view) (annotate) - [select for diffs]
Wed Mar 13 08:02:05 2002 UTC (12 years, 1 month ago) by moore
Branch: MAIN
CVS Tags: PRE_LINKAGE_TABLE
Changes since 1.14: +3 -3 lines
Diff to previous 1.14
Support for dynamic loading in FreeBSD 4.0 and later.  This involves moving
the static space up, so a cross-compile is required to bootstrap these changes.

Revision 1.14 - (view) (annotate) - [select for diffs]
Mon Jan 28 20:17:12 2002 UTC (12 years, 2 months ago) by pmai
Branch: MAIN
Changes since 1.13: +3 -3 lines
Diff to previous 1.13
Added specialised port to NetBSD (1.5.2) on x86.  Since the code-base
was already cleaned up with the OpenBSD port, this doesn't require
massive changes.

Since current NetBSD is ELF-based by default, we don't make use of the
ELF feature, or in other words:  The presence of the NetBSD feature
implies ELF, since there is no support for non-ELF NetBSD.

Revision 1.13 - (view) (annotate) - [select for diffs]
Thu Dec 6 19:15:46 2001 UTC (12 years, 4 months ago) by pmai
Branch: MAIN
Changes since 1.12: +35 -1 lines
Diff to previous 1.12
Added specialised port to OpenBSD (2.9).  Many parts of the original
code which were previously conditionalized on :FreeBSD, are now
conditionalized on :BSD instead, with the :BSD feature now implying a
4.4BSD(lite2) derived OS.  This should make future BSD-ports easier.
FreeBSD and OpenBSD are differentiated by having either :FreeBSD or
:OpenBSD on the features list.

Currently the OpenBSD port does not have working ELF support, because
OpenBSD 2.9 is still non-ELF by default.  So don't put ELF on the
features list when building for OpenBSD, or fix the code to work
correctly in this case instead.

Revision 1.12 - (view) (annotate) - [select for diffs]
Tue Oct 24 13:32:32 2000 UTC (13 years, 5 months ago) by dtc
Branch: MAIN
Changes since 1.11: +4 -2 lines
Diff to previous 1.11
o Add the command line switch -dynamic-space-size for setting the size
  of the dynamic space. DYNAMIC_SPACE_SIZE now defines the maximum
  size, and when defined DEFAULT_DYNAMIC_SPACE_SIZE gives the default.

o Increase the maximum dynamic space size for Linux x86 to 1.625GB,
  with the default remaining at 512MB.

o Define the default dynamic space size for FreeBSD x86 to also be 512MB,
  with a maximum of 2GB.

Revision 1.11 - (view) (annotate) - [select for diffs]
Thu Sep 16 15:40:11 1999 UTC (14 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.10: +6 -7 lines
Diff to previous 1.10
Move Linux over to the new address map, giving 256M for the static and
read-only spaces; all the code branches work fine with this map on recent
Linux systems.

Revision 1.10 - (view) (annotate) - [select for diffs]
Fri Nov 13 04:39:42 1998 UTC (15 years, 5 months ago) by dtc
Branch: MAIN
Changes since 1.9: +5 -4 lines
Diff to previous 1.9
Reworking of the linux address map to support larger heaps,
and bringing it closer to the FreeBSD map. From Raymond Toy.

Revision 1.9 - (view) (annotate) - [select for diffs]
Thu Sep 17 10:54:23 1998 UTC (15 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.8: +29 -16 lines
Diff to previous 1.8
Back-out the address map changes for Linux. Only FreeBSD now uses a new
address space.

Revision 1.8 - (view) (annotate) - [select for diffs]
Tue Sep 1 13:00:44 1998 UTC (15 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.7: +2 -2 lines
Diff to previous 1.7
Fix a typo in the CONTROL_STACK_START for linux.

Revision 1.7 - (view) (annotate) - [select for diffs]
Sun Aug 30 04:56:49 1998 UTC (15 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.6: +59 -31 lines
Diff to previous 1.6
Revise the address map to better utilise the address space, allowing
larger heaps and stacks:

* There is now the potential for up to 2.75GB dynamic space on
FreeBSD, and 1.75GB on linux.  Since GENCGC statically allocates page
tables the default size is set at just 1GB.

* The Read-only and Static spaces have been increased to 256MB
allowing larger heaps to be purified. The Read-only and Static spaces
are in the same locations for both the FreeBSD and Linux ports to
avoid unnecessary binary incompatibility.

* The Control stack and Binking stack now have room for upto 128MB,
supporting deeply nested algorithms, and potentially giving room for
subdivision for thread stacks.

* There is a reserve for the FreeBSD static libraries in the event
that the FreeBSD lisp binary is dynamically linked, and the foreign
segment size for FreeBSD is now 32MB, up from just 4MB.

* There is now significantly more room for C allocated memory, roughly
128M on Linux and 224M on FreeBSD.

Revision 1.6 - (view) (annotate) - [select for diffs]
Wed May 27 03:20:22 1998 UTC (15 years, 10 months ago) by dtc
Branch: MAIN
Changes since 1.5: +2 -2 lines
Diff to previous 1.5
Increase the default read-only space size by 8MB because non-:small
cores loaded with subsystems can grow rather large.

Revision 1.5 - (view) (annotate) - [select for diffs]
Fri May 1 01:21:42 1998 UTC (15 years, 11 months ago) by dtc
Branch: MAIN
Changes since 1.4: +1 -0 lines
Diff to previous 1.4
Update for the linux port from Peter VanEynde, adds preliminary
support for glibc2.

Revision 1.4 - (view) (annotate) - [select for diffs]
Wed Dec 17 23:00:55 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.3: +7 -3 lines
Diff to previous 1.3
Increase the read-only space size to 32MB under GENCGC as code is move
here and it can fill up with a big core.

Revision 1.3 - (view) (annotate) - [select for diffs]
Tue Nov 25 17:59:15 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.2: +14 -7 lines
Diff to previous 1.2
Conservative generational garbage collection for the x86 port.

Revision 1.2 - (view) (annotate) - [select for diffs]
Tue Feb 18 01:14:31 1997 UTC (17 years, 2 months ago) by dtc
Branch: MAIN
CVS Tags: RELEASE_18a
Branch point for: RELENG_18
Changes since 1.1: +1 -0 lines
Diff to previous 1.1
Add CONTROL_STACK_END.

Revision 1.1 - (view) (annotate) - [select for diffs]
Tue Jan 21 00:28:13 1997 UTC (17 years, 3 months ago) by ram
Branch: MAIN
source kit 1.03.7

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

Sort log by:

  ViewVC Help
Powered by ViewVC 1.1.5