Commit graph

357 commits

Author SHA1 Message Date
Stas Boukarev 7fd483f422 Provide restarts when calling undefined functions on x86-64.
(defun test ()
  (undefined))

(test)
restarts (invokable by number or by possibly-abbreviated name):
0: [CONTINUE      ] Retry calling UNDEFINED.
1: [USE-VALUE     ] Call specified function.
2: [RETURN-VALUE  ] Return specified values.
3: [RETURN-NOTHING] Return zero values.
4: [ABORT         ] Exit debugger, returning to top level.
2017-02-04 22:03:17 +03:00
Francois-Rene Rideau 402a8fab62 New feature sb-linkable-runtime
Add the new feature sb-linkable-runtime, that depends on sb-dynamic-core,
the sbcl build will create a file sbcl.o or libsbcl.a that you can link
with additional other object files and libraries to deliver your applications
as a single executable (after combining with a core file) that contains
whatever statically linked C libraries you need as extensions.
CFFI-toolchain and Bazel will be know how to use this features.

Support this feature on Linux, macOS and Windows, on x86 and x86-64.

Dump the parameters to compile C code and link it into a file sbcl.mk.
This new file will be included even if sb-linkable-runtime isn't present,
so CFFI and other software will not have to guess with what compiler and
what options to build dynamically linkable extensions.

Note that without a sb-linkable-runtime, SBCL can still dlopen the C code, but
then you need at least two files to deliver an application with non-Lisp code,
and that doesn't work if the code is provided as a *.a or *.o file
(not a *.so) compiled without -fPIC.

Fix https://bugs.launchpad.net/sbcl/+bug/1500628 better than the previous
attempt, which was reverted in commit a61d893a7f.
2017-01-22 21:53:58 +00:00
Douglas Katzman 0c8ef9f455 Add :IMMOBILE-CODE feature.
This is part 3 of 4 of the immobile space feature suite.
Supported only on x86-64 for macOS and Linux.

Includes some important bugfixes to the mark-and-sweep collector
that seemed not to be triggered except by immobile code.
2016-11-08 18:24:31 -05:00
Douglas Katzman 215e81a7a3 Add :compact-instance-header feature for x86-64.
This is part 2 of 4 of the overall immobile space feature.
The immobile allocator places all layouts below 4GB so that
a 32-bit pointer suffices to address them, which in turn allows
stuffing a layout pointer into an instance header.
In practical terms this yields either a 0-word or 2-word reduction
in the number of slots, depending on presence of trailing padding.

The feature is enabled by default on supported platforms.
2016-10-13 19:33:27 -04:00
Douglas Katzman 8d862fd29a Add immobile space allocator for x86-64.
Part 1 of 4 of the overall immobile space implementation.
The current change enables static placement of symbols,
fdefns, layouts, and cold packages. Space reclaimed from these
fixed-size objcts that become garbage is kept in freelists,
one per object size, for subsequent re-use.
Variable-sized objects (like code) are managed differently,
but static code is not enabled as yet.

The build-time feature switch is :IMMOBILE-SPACE.
Enabled by default on Linux and Darwin.
2016-10-13 08:57:53 -04:00
Stas Boukarev 285ee63e88 Make the build process abortable.
Wrap everything with an abort restart which will quit and stop make.sh
from proceeding.

Also remove --disable-debugger from the default sbcl options for
better debugging.
2016-10-04 22:17:34 +03:00
Stas Boukarev fd14fa5697 Support unboxed signed-word structure slots on x86, x86-64 and ARM64.
Closes lp#377616.
2016-10-04 06:42:54 +03:00
Stas Boukarev c64d6faab9 Remove the :read-only-tramps *feature*.
Now all the backends support it and nothing would work without it.
2016-10-03 04:48:06 +03:00
Alastair Bridgewater 5a36766a2a sparc: Read-only tramps
* Following the usual pattern, stuff the tramps into a new file
in src/assembly, remove them from arch-assem.S, fix up references
from the compiler, add the feature flag to make-config.sh...

  * ... and because INST WORD didn't accept fixups as a parameter,
and there was no absolute fixup type, make that happen as well.
2016-09-05 22:30:29 -04:00
Alastair Bridgewater d4141bcb45 alpha: Read-only tramps
* Following the usual pattern, stuff the tramps into a new file
in src/assembly, remove them from arch-assem.S, fix up references
from the compiler, add the feature flag to make-config.sh...

  * ... and because INST LWORD didn't accept fixups as a parameter,
and there was no absolute fixup type, make that happen as well.

  * This also fixes a recently-added bug involving the position of
the closure trampoline, due to shortening the error trap encoding
in the undefined function trampoline without adjusting the offset
for the closure trampoline (an alpha-specific gotcha, now excised).

  * And I haven't been able to figure out how the old funcallable
instance tramp worked...  assuming that it worked in the first
place.  At any rate, the new version definitely should work, more
or less.
2016-09-04 22:49:00 +00:00
Alastair Bridgewater 25088e3bae hppa: "Proper" read-only-tramps support
* The actually-used versions of the funcallable-instance and
closure tramps were already in read-only space, but there was
still the copy of the closure tramp in hppa-assem.S in order to
keep genesis from pitching a fit...  And the undefined tramp was
ONLY in hppa-assem.S, preventing it from working properly on HPUX.

  * So, stick everything in assembly/hppa/tramps.lisp, remove the
hppa-assem.S copy of those things which were in hppa-assem.S, fix
up the various references in the compiler backend, add the feature
to make-config.sh...

  * ... and, while we're here, try (and fail) to address two test
failures for debug.impure.lisp / (BACKTRACE UNDEFINED-FUNCTION
BUG-xxx).  Either something isn't quite right with the new tramp
logic or there's something else confounding the backtrace, but the
situation is no worse and arguably better, so we'll run with this
for now.
2016-09-04 10:27:18 -04:00
Stas Boukarev c05a5459d0 Enable read-only-tramps on mips. 2016-09-03 22:23:36 +03:00
Stas Boukarev fce8564851 Enable read-only-tramps on arm. 2016-09-03 04:52:31 +03:00
Stas Boukarev f0a6588d4c Complete read-only-tramps on ppc. 2016-09-01 22:25:43 +03:00
Stas Boukarev f524469706 Complete read-only-tramps on x86. 2016-09-01 22:25:43 +03:00
Stas Boukarev 3d4c8bbeb8 Read-only-tramps on arm64. 2016-09-01 22:25:43 +03:00
Stas Boukarev c2085f38dd Read-only tramps on x86-64.
Move undefined, undefined-alien, closure, and funcallable-instance
tramps into read only space.
2016-09-01 22:25:43 +03:00
Stas Boukarev e813027c88 Implement unbind-n-vop on ARM64. 2016-08-03 21:46:09 +03:00
Stas Boukarev dc0b4db0a5 Optimize unbinding of multiple special variables on x86-64.
Coalesce multiple UNBINDs into UNBIND-N. So far it saves on multiple
store/reload of BSP, could be transformed into a loop based on the
number of unbinds or SPACE in the future.
2016-08-03 13:03:39 +03:00
Douglas Katzman f773521b20 Remove feature indicator for interleaved raw slots
Now that every backend uses interleaving, remove all the #!- code blocks
which are essentially dead. Other related cleanups will follow.
2016-04-17 21:25:43 -04:00
Douglas Katzman bd58532d7b hppa: implement interleaved raw slots 2016-04-16 22:02:43 -04:00
Douglas Katzman 83d7a858dd Raw slot interleaving on Alpha + 2 bugfixes.
1. build was broken due to a duplicate defun

2. SAP-REF-DOUBLE was broken since forever ago
and failure was exposed by tests for #!+interleaved-raw-slots.

The 1.0.28 release binary shows the behavior:
* (sb-sys:sap-ref-double
   (sb-sys:int-sap (sb-kernel:get-lisp-obj-address pi)) 1)
3.141592653589793d0
* ((lambda ()
   (sb-sys:sap-ref-double
    (sb-sys:int-sap (sb-kernel:get-lisp-obj-address pi)) 1)))
3.523839999645837d-312
2016-04-14 20:05:37 -04:00
Douglas Katzman cb10066ac5 More interleaved raw slot support. 2016-04-14 07:51:32 -04:00
Douglas Katzman dd2ea3f539 Use interleaved raw slots on ARM. 2016-04-13 12:38:21 -04:00
Alastair Bridgewater 64b053a895 hppa: Enable :stack-allocated-closures by default
* It turns out that the implementation side of this was already
done ages ago, possibly even before the feature existed, and just
wasn't enabled in make-config.sh.  Might as well just enable it.
2015-11-30 15:06:41 -05:00
Alastair Bridgewater 74cb7366e2 Allow --without-<feature> to remove any build feature, however added
* Specifically, it is permitted to kill any feature added by
make-config.sh, any feature in base-target-features.lisp-expr, and
any feature added by --with-<feature>.

  * Why do we want this?  In order to make it easier to test odd,
non-default build configurations.  As a simple example, if you
disable all of the :stack-allocatable-whatever features, you end
up with a build that does no stack-allocation, which means that
you can easily rule in or out stack-allocation as a candidate for
some bug (note that this may not work on all ports, especially for
disabling :stack-allocatable-vectors).

  * Note that disabling some features can easily lead to a broken
build in one way or another.  Presumably, someone using --without
options knows what they're doing.
2015-11-20 22:28:33 -05:00
Stas Boukarev 08fe537bd6 Enable threads on ARM64-Linux by default. 2015-11-15 18:09:33 +03:00
Alastair Bridgewater d919500f05 Implement DX-allocation of "fixed objects" on Alpha
* Not much to say here, just enabling the feature and adding the
required logic to VOP FIXED-ALLOC.
2015-11-13 14:59:31 +00:00
Alastair Bridgewater 50d197d357 Define and use new feature, :64-BIT-REGISTERS
* For those machines (ALPHA, and a hypothetical MIPS n32 port)
that have 64-bit wide registers, but use a 32-bit wide heap word,
we need a feature that isn't :64-BIT, but triggers some of the
behavior that was folded into the :64-BIT feature.

  * Specifically, :64-BIT implies N-WORD-BITS = 64, while
:64-BIT-REGISTERS implies N-MACHINE-WORD-BITS = 64, thus is also
present for all :64-BIT backends.

  * And update those conditionals which once tested
N-MACHINE-WORD-BITS but were converted to test :64-BIT to use
:64-BIT-REGISTERS instead (except for one, which should have used
N-WORD-BITS in the first place).
2015-11-13 14:59:31 +00:00
Stas Boukarev 8f032f28f3 Implement :interleaved-raw-slots on ARM64. 2015-11-11 21:09:53 +03:00
Your Name c9eb7ed950 Port interleaved raw slots to Sparc. 2015-11-11 13:23:53 +00:00
Douglas Katzman 509cb247ce Implement interleaved raw slots on PPC. 2015-11-10 23:29:54 -05:00
Douglas Katzman 829f9515ed Port interleaved raw slot feature from x86-64 to x86. 2015-11-08 17:25:23 -05:00
Stas Boukarev 53cbb34513 Implement threads on ARM64.
Some thread tests still fail.
2015-11-08 20:00:57 +03:00
Stas Boukarev 7ba9b08e2d Add memory barrier VOPs on ARM64. 2015-11-07 12:59:26 +03:00
Stas Boukarev 975b2e6484 Implement inline constants on ARM64. 2015-11-02 06:31:07 +03:00
Stas Boukarev f10a63c8c6 ARM64: enable :fp-and-pc-standard-save. 2015-10-07 19:15:10 +03:00
Stas Boukarev 3f696f3ffb make-config.sh: guess arm64 architecture. 2015-10-04 22:53:37 +03:00
Stas Boukarev 3eb7872c6f ARM64: Implement alien callbacks. 2015-10-04 22:53:37 +03:00
Stas Boukarev 2064b90454 ARM64: implement linkage-table. 2015-10-04 22:53:37 +03:00
Stas Boukarev 4211f0931e Enable the :64-bit feature form ARM64. 2015-10-04 22:53:36 +03:00
Stas Boukarev d576cb5608 Start on ARM64
Copy stuff from arm32 changing 'arm' to 'arm64'.
2015-10-04 22:53:36 +03:00
Stas Boukarev a46fb3d52f Add :64-bit to *features*.
In preparation for the ARM64 port add a :64-bit feature and transform
all relevant x86-64 and #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits))
2015-09-19 22:25:01 +03:00
Stas Boukarev 64c6ac2fb4 Add support for ARM NetBSD.
Patch by Robert Swindells.
2015-09-02 18:44:38 +03:00
Stas Boukarev 9b9b66f7a8 Reduce debug-info size on x86oids and ARM.
They have constant return-pc-save-offset and old-fp-passing-offset
across all functions. Make constants for those and don't save them in
compiled-debug-fun.
2015-07-05 20:49:08 +03:00
Kambiz Darabi 1cac435b7b Document make-config's --host-location switch 2015-06-03 10:53:22 +01:00
Stas Boukarev daf406890f Fix ARM aarch32.
64-bit ARM kernel no longer supports the breakpoint syscall which was
used for invoking pending interrupts upon exiting pseudo-atomic.
Instead, store the address of do_pending_interrupt assembly routine in
*PSEUDO-ATOMIC-INTERRUPTED* in the interrupted case, 0 otherwise.
2015-05-30 21:05:09 +03:00
Stas Boukarev 894fc3c16a make-config.sh: make --without-sb-thread work on linux.
Linux defaults to sb-thread, but can actually build without threads.
2015-02-19 17:57:52 +03:00
Stas Boukarev f38e949846 make-config.sh: recognize MSYS as win32.
Closes lp#1418789
2015-02-15 16:49:18 +03:00
Douglas Katzman 57eb72fc61 Faster EQL for bignums on x86-64 2015-01-14 16:16:42 -05:00
Stas Boukarev 6685f06359 Implement :unwind-to-frame-and-call-vop on ARM. 2015-01-12 02:54:48 +03:00
Stas Boukarev 48ca019191 Exact arguments for invalid arg-count backtraces on ARM, x86oids.
Move argument checking before the registers and the stack are
overwritten, this allows for the backtrace to recover all the
arguments exactly as they were passed, including the extra ones.

This is actually implemented for all platforms (albeit not tested),
but not all are either interrupt safe in that place or can produce a
proper backtrace from that interrupt, hence :precise-arg-count-error
feature is only enabled on ARM and x86oids.
2015-01-10 23:13:15 +03:00
Stas Boukarev 79521d9e3e Fix generate-version on BSD.
wc -l returns formatted results, strip whitespaces before comparing
with "0".
2015-01-01 20:50:28 +03:00
Douglas Katzman afbae95476 x86-64: Integrate Paul Khuong's interleaved raw slot feature.
with significant amounts of conditionalization
and the new implementation of EQUALP and other fixes by me.
2014-11-22 18:23:21 -05:00
Stas Boukarev b0724a78b7 Fix GNU/kFreeBSD x86-64 and add x86 support.
The x86-64 patch wasn't fully merged and couldn't be built.
x86 needed a similar simple replacement __FreeBSD__ => LISP_FEATURE_FREEBSD.

Also add :gnu-kfreebsd feature for easier differentiation.
2014-07-04 23:30:29 +04:00
Christophe Rhodes c06b8c16bd support for DragonFly BSD
x86(-64) only for now, and threads are currently non-functional.
Closes lp#1292845, thanks to Vasily Postnicov.
2014-06-20 11:48:35 +01:00
Robert Swindells da5c7c75ce Minor NetBSD cleanups
- Add architecture check for NetBSD/ibmnws;
- Clean up resource limit initialization and mmap in small chunks;
- Test for SSE sysctl value when selecting bcopy variant.
2014-06-13 16:08:11 +01:00
Christoph Egger c0fd7ac50f Add kFreeBSD codepath
This consequently uses the LISP_FEATURE_FREEBSD variable in C code,
modifies the make-config target so `uname` = "GNU/kFreeBSD" is
detected as sbcl_os=freebsd correctly and adds some alternative code
for the FreeBSD target if using the GNU libc.
2014-06-13 13:39:30 +01:00
Stas Boukarev 5830d38a3c Enable GENCGC on ARM. 2014-05-28 18:20:24 +04:00
Stas Boukarev 39ab914c3f Indicate that ppc-linux supports alien-callbacks.
It does for a long time, but the feature wasn't pushed, and some tests
weren't executed, but they do pass.
2014-05-21 19:39:42 +04:00
Stas Boukarev ce1dca7a98 Implement alien-callbacks on ARM. 2014-05-19 00:32:20 +04:00
Stas Boukarev ebcbcdd8cd Implement :symbol-info-vops on ARM. 2014-05-17 23:10:01 +04:00
Stas Boukarev 39e000b2a8 Implement :multiply-high-vops on ARM. 2014-05-17 21:33:56 +04:00
Stas Boukarev 63f701c9a3 Implement stack-allocatable-vectors on ARM. 2014-05-15 05:37:36 +04:00
Stas Boukarev 87de05cecd Enable stack-allocatable-closures on ARM. 2014-05-15 04:08:32 +04:00
Stas Boukarev d5e780dee9 Enable :stack-allocatable-fixed-objects on ARM. 2014-05-13 22:47:28 +04:00
Stas Boukarev 52a2d9c1a6 Implement stack-allocatable-lists on ARM. 2014-05-12 20:20:04 +04:00
Stas Boukarev d5605ebefb Implement ash-right-vops on ARM. 2014-05-12 05:23:00 +04:00
Christophe Rhodes eccba2ae33 support target-driven cross-compilation
Running ./make-config.sh --host-location="host:path/to/sbcl" on the
target causes the make-target-N.sh scripts to do all the copying of
files to and from the host using rsync on the target to the specified
host location.

Because this is rsync, managing the reverse ssh to do this on
heavily-firewalled targets is not straightforward; we might have to
extend the syntax, or have an extra --host-port argument.  But this
should I think make the port to arm64 more straightforward.
2014-05-11 07:59:01 +01:00
Stas Boukarev 29d94b268f Enable :large-file on ARM. 2014-05-10 15:15:52 -04:00
Stas Boukarev 2aa119a0af Implement linkage-table for ARM. 2014-05-10 15:12:24 -04:00
Alastair Bridgewater a5a55b4765 make-config, compiler/arm/vm: Add feature conditions for VFP and VFPv2.
* The overall ARM architecture has several FPU options, such as
soft-float-only, FPA (Floating Point Accelerator), at least three
generations of VFP (Vector Floating Point), plus some system based
on the x86oid MMX instruction sets.  And that's off the top of my
head.

  * Make an explicit statement that we are supporting VFPv2, and
possibly not even the original VFP, and leave hooks in place to
make it obvious what needs adjusting in order to support other FPU
options.
2014-05-10 15:12:19 -04:00
Alastair Bridgewater 36a4e2b1f6 make-config.sh: Fix some rough edges in configuration.
* Add an arch auto-detect for ARM, so we don't need to use
--arch=arm anymore.

  * Add :cheneygc as a default feature for ARM, since it is
required and not otherwise defaulted.

  * Both changes from patches supplied by Krystof.
2014-05-10 15:12:12 -04:00
Christophe Rhodes 7c0e7cad82 handle --without-xxx options more correctly in make.sh
Thanks to Richard M Kreuter
2014-04-28 20:58:12 +01:00
Stas Boukarev b2ce61193b Config.x86-64-linux => Config.x86_64-linux.
Everything else uses a dash.
2014-03-22 20:23:37 +04:00
Douglas Katzman 0fb6f83412 Initial reimplementation of globaldb - fast INFO and (SETF INFO).
The main idea is that info values are stored in a vector attached to
each symbol when possible. When not possible, the storage reverts
to the volatile [sic] environment, but still using a vector as the
payload instead of the chained hashing/alist approach.

This strives to be very fast at lookup at the expense of some added
complexity during updates. Performance testing suggests that it is
at least 2x to 3x faster at (INFO :class :type name), and FBOUNDP
is almost 4x faster. In a repeatable test, a file that took 1.8 seconds
to compile now takes 1.7 seconds but with more consing (as expected).

sbcl.core itself increases in size by <1% for 64-bit architecture,
and less for 32-bit architecture because there is proportionaly less
wasted space. A compact environment's table is effectively the
concatenation of all info vectors into one, so the added overhead is
in vector headers. However the fallback hash is now smaller,
so there used to be more wasted cells in the compact env.

Eventually the compact and volatile environments will both go away,
but not until the quasi-lockfree hashtable bootstraps properly.
The problem is an inability to use raw slots in early cold init.
It's actually not a problem of using them - the compiled code is ok -
but cold-init drops into 'ldb' due to how defstruct expands.

Among the bugs fixed by this (not straightforwardly testable) is that
the compact environment would hold into symbols that became otherwise
inaccessible. It no longer does, but still holds onto other names.

This patch builds with CCL as host, and for 32-on-64 and vice-versa,
so nothing seems terribly broken in terms of assumptions made.
2014-03-07 12:51:29 -05:00
Paul Khuong 60deeb7616 Simpler word-sized variable right shifts on x86 and x86-64
* Known negative shifts are converted to another function that
   only handles machine-friendly right shifts.

 * The transforms and VOPs are conditionalised on ash-right-vops,
   so other platforms aren't penalised.

 * The new transforms trigger a lot of notes; this is suboptimal,
   and one test had to be adjusted.
2013-05-22 01:13:22 -04:00
Paul Khuong bd1a7d535c SB-SIMD-PACK on x86-64
* Enable them by default on x86-64;

 * And run some smoke tests, at least.
2013-05-21 15:12:26 -04:00
Alastair Bridgewater a5b844b680 ppc support for stack-allocatable-vectors
* This turned out to be fairly straightforward.  Unlike in a
heap-allocation-only regime, where a VOP is required to :TRANSLATE
ALLOCATE-VECTOR, the :STACK-ALLOCATABLE-VECTORS feature enables an
LTN-ANNOTATE optimizer for ALLOCATE-VECTOR that substitutes
invocations of one of two named VOPs.

  * To convert from the old regime to the new, rename the old VOP
to fit the new naming scheme, and write a new VOP to do the stack
allocation.

  * As a cleaning-up-a-loose-end matter, lose the :TRANSLATE
option for the old VOP.

  * And as a "being somewhat cute about things" matter, make the
support for stack-allocatable-vectors selectable at build time,
which should provide a quick overview of how to make this work on
some other platform, should anyone else be interested later on.
2013-05-01 16:23:28 -04:00
Alastair Bridgewater 37a9a1acdb ppc: Implement :stack-allocatable-fixed-objects
* Alter SYS:SRC;COMPILER;PPC;MACROS.LISP, WITH-FIXED-ALLOCATION
to accept a parameter for requesting stack allocation instead of
heap allocation.

  * Alter SYS:SRC;COMPILER;PPC;ALLOC.LISP, VOP FIXED-ALLOC to pass
the new stack-allocation parameter.

  * And add :stack-allocatable-fixed-objects to the PPC section in
make-config.sh.
2013-05-01 16:23:27 -04:00
David Lichteblau 37d3828773 Support building without PSEUDO-ATOMIC on POSIX safepoints
- Mark Lisp signal handlers with a flag `synchronous' to indicate
    whether we can (and must) handle them immediately.  Conversely,
    we understand this flag to imply a guarantee that the signal
    does not occur during allocation.

  - Any signal with a Lisp handler that is not synchronous is
    implemented in the runtime using a trampoline, which (instead of
    invoking Lisp code directly) first spawns a new pthread, which
    only then calls back into Lisp to invoke the handler function
    (with a fake signal context).

  - Used in particular for SIGINT.

  - For SIGPROF, introduce a second per-thread allocation region,
    which gets swapped with the usual region around the call into
    SIGPROF-HANDLER.  This handler is a special case, because it is
    careful not to trigger GC nor non-local unwinds, and we can
    safely return to the original region afterwards.

  - Add a new subclass SIGNAL-HANDLER-THREAD for this purpose,
    making it easy to identify these threads (e.g. in the test
    driver).

  - Run sprof tests while building the contrib.  Add a test stressing
    time profiling of allocation sequences.

Enable using :SB-SAFEPOINT-STRICTLY on features.

Quite usable already on x86 and x86-64; PPC still has more prominent
issues, e.g. in threads.impure.lisp.
2012-12-21 20:30:48 +01:00
Stas Boukarev 9f53ac7b6e make.sh --help no longer runs clean.sh
Fixes lp#937001
2012-12-18 19:04:29 +04:00
David Lichteblau 9644b3bcfc In x86 arch_os_get_current_thread(), do not load from %fs
Simplify arch_os_get_current_thread() such that %fs is not being
loaded directly even on platforms which preserve it reliably (in
particular, Linux/x86 and Solaris/x86).

Aside from a code simplification and reduction of cross-platform
differences, this change is an improvement in the following way:

If arch_os_get_current_thread() gets called in a non-Lisp pthread,
it now returns NULL cleanly even on the platforms mentioned above.

On the other platforms, keep the support for restoring %fs, but
refactor to remove code duplication with arch_os_thread_init().
Coalesce the two differently-spelled Lisp features for this case
into one.
2012-12-17 14:42:07 +01:00
David Lichteblau f057566fe9 Extend use of the linkage table to static symbols
- Formerly static symbols are static no more:

  - Always use the linkage table, even in cross compilation.  The
    runtime retrieves the resulting list of foreign symbols and installs
    linkage table entries before calling into Lisp for the first time.

  - Simplify/remove various win32 foreign symbol special cases.

  - Almost remove scratch().

Conditional on feature SB-DYNAMIC-CORE; required on Windows and optional
on other platforms supporting the linkage table.

With this feature, changes to src/runtime can be built using make,
without requiring a slam.sh step to update core files.

For LINKAGE-TABLE platforms only.  Currently supported on x86 and
x86-64.  (PowerPC does not yet work.)  In the interest of simplicity,
disable this feature permanently on non-SB-THREAD platforms, because
these would require unpleasant changes to allocation macros.

Thanks to Anton Kovalenko.
2012-11-02 20:43:05 +01:00
nyef ad096f09fb GENCGC on SPARC/Linux
* Tweak make-config.sh to automatically select GENCGC, and to
update the fallback message for those poor bsd-using folks.

  * Copied the gencgc memory map from the SunOS version to use for
Linux (the cheneygc maps were identical, we may as well keep the
parallelism).

  * Also tweaked the linker flags to match.  Not because it was
required to build, but because I don't know why they were changed
for SunOS, and in the absence of such knowledge I'd rather keep
things more or less parallel.
2012-10-19 14:50:34 -04:00
David Lichteblau 9e53774401 Update NEWS, make-config.sh 2012-10-19 18:37:03 +02:00
David Lichteblau ec58ac2852 Use futexes on windows 2012-10-05 21:40:18 +02:00
David Lichteblau 1d06300e09 SPARC gencgc
Based on Raymond Toy's work.
2012-10-05 18:07:43 +02:00
David Lichteblau ebb604b442 Add odxprint, a replacement for FSHOW which can be configured at run-time
- A new macro odxprint(flag, "fmt", ...) performs the equivalent of
    a printf("fmt", ...), but only if `flag' has been enabled at
    run-time.

  - Environment variables can be used to set flags, using either
    SBCL_DYNDEBUG="flag1 flag2 flag3" syntax, or
    SBCL_DYNDEBUG__FLAG1="nonempty string" syntax.

  - Lisp feature SB-QSHOW enables support for odxprint-based FSHOW.
    (Users who prefer to edit runtime.h to enable QSHOW can still do
    so...)  SB-QSHOW is enabled by default on Windows, where the
    odxprint mechanism was first used.

  - Implement FSHOW, FSHOW_SIGNAL on top of odxprint.  Corresponding
    flags are called fshow, fshow_signal.

  - For gencgc_verbose, support a flag of the same name, since it is
    conditional on QSHOW (inspite of not being implemented on top of
    FSHOW).

 - Does not yet support odxprint features specific to Windows debugger
   integration; output is currently directed to stderr unconditionally.

This commit backports Anton Kovalenko's Windows-specific odxprint to
POSIX and integrates it with FSHOW.
2012-09-11 12:14:50 +02:00
David Lichteblau 98cc9eff5b Use preprocessor includes for link_or_copy on Windows 2012-07-17 15:48:47 +02:00
Luis Oliveira 32d3b398d3 explicit :BIG-ENDIAN feature
Instead of implying big-endianness by lack of the :LITTLE-ENDIAN feature,
 make it explicit.
2011-12-08 17:24:43 +02:00
Jim Wise c1fa54f1a4 Document --fancy.
While here, put list of features set by --fancy into $FANCY_FEATURES,
so documentation doesn't fall out of sync with what option does.
2011-12-06 11:26:48 -05:00
Alastair Bridgewater 6e3259c47f Add :CHENEYGC feature to non-GENCGC targets.
* When I wrote 14fd5afbac I was
under the impression that there was a :CHENEYGC feature used on
plaforms that used the cheney collector.  This was logical, but
incorrect.

  * The two ways forward were to back out the use of :CHENEYGC
as a feature when checking compatibility or to move forward and
add :CHENEYGC and use it in preference to (NOT :GENCGC) where
appropriate, opening the door to a third GC option.

  * This is the minimal fix, adding :cheneygc to the non-gencgc
targets in make-config.sh.
2011-12-06 11:05:53 -05:00
Nikodemus Siivola 250bcb73b9 oops. actually stop when seeing --with-foo and customize-target-features.lisp
...instead of just complaining to the stdout.
2011-12-05 11:28:01 +02:00
Nikodemus Siivola 650ed695be add --fancy option to make.sh
Enables threads, core compression, xref for internals, and
  after-xc-core. (The last one for convenience, even though it's not user
  visible.)
2011-12-05 10:23:56 +02:00
Nikodemus Siivola 89a02d3ba8 add --with-<feature> and --without-<feature> support to make.sh
customize-target-features.lisp still works, but the system refuses to mix it
  with --with[out] options to avoid confusion.
2011-12-05 10:22:17 +02:00
Nikodemus Siivola d5ab481790 add --arch option to make.sh
Not for full-blown cross compilation, though.
2011-12-05 10:22:09 +02:00
Alastair Bridgewater 3c786524ac linux: Enable :SB-FUTEX by default on PPC.
* Prior to the great de-lutexification, we used futexes on
threaded Linux/PPC.  Not having them enabled on PPC was an
oversight, but one which highlighted some problems with the
non-futex threading code.  Now that that's fixed, we may as
well restore the status quo.
2011-11-22 10:32:56 -05:00
Nikodemus Siivola d6f9676ae9 killing lutexes, adding timeouts
* Remove all lutex-specific code from the system.
    ** Use SB-FUTEX for futex-capable platforms, and plain SB-THREAD
       otherwise.
    ** Make non-futex mutexes unfair spinlocks for now, using WAIT-FOR to
       provide timeouts and backoff.
    ** Build non-futex condition variables on top of a queue and WAIT-FOR.

    Performance implications: SB-FUTEX builds should perform pretty much the
    same, or improve a bit. Threaded non-futex builds are affected as follows:

      1. Threads idling on semaphores or condition variables aren't quite as
         cheap. Just how costly depends on the OS. On Darwin 1000 idle threads
         can chew up a bit over 50% CPU. I will try to address this later.

      2. Contested locking around operations that take considerably longer
         than a single timeslice suffers mild degradation.

      3. Contested locking around operations that don't take long is an order
         of magnitude performant.

      4. Highly active semaphores perform much better. (Follows from #3.)

  * GRAB-MUTEX gets timeout support on all platforms.

  * CONDITION-WAIT gets timeout support.

  * Disable a bunch of prone-to-hang thread tests on Darwin.  (All of them
    were already prone to hang prior to this commit.)

  * Enable a bunch tests that now /pass/ on Darwin. \o/ This doesn't mean that
    the threaded Darwin is fully expected to pass all tests yet, but let's say
    it's more likely to do so.

    ...but still not robust enough to enable threads on Darwin by default.

  * GET-MUTEX/GRAB-MUTEX get refactored into two main parts: %TRY-MUTEX and
    %WAIT-ON-MUTEX, which are also used directly from CONDITION-WAIT where
    appropriate.
2011-11-10 01:00:48 +02:00
Jim Wise 987e39e16c Fix HEAD ref lookups, and compatibility for non-bash shells. 2011-10-24 09:38:25 -04:00
Alastair Bridgewater 7d407220e1 Clean up build process for cross-compiled targets.
* Over time, the process for producing an SBCL build for another
target architecture or OS has become more difficult and less
documented.

  * Move all make.sh argument processing to make-config.sh.

  * Have make-config.sh produce a file, output/build-config,
containing shell commands to set up important build parameters
such as where to find GNUMAKE, what SBCL_XC_HOST is, and so on.

  * Source output/build-config in most of the make*.sh scripts.

  * The practical upshot of all this is that a cross-compile
build is now a matter of alternating between target and host,
calling make-config.sh, make-host-1.sh, make-target-1.sh,
make-host-2.sh, make-target-2.sh, and following up with a
make-target-contrib.sh on the target, and you wind up with a
usable product.  And, as make-config.sh does all of the arg
parsing, you can pass --xc-host= or --dynamic-space-size= or
whatever and it all works out.
2011-10-22 17:10:38 -04:00
Paul Khuong 3254e1b6fb New function: SB!KERNEL:%MULTIPLY-HIGH
* Does the same thing as only returning the first value of %MULTIPLY,
   only better on some platforms.

 * Implemented vas VOPs on x86, x86-64 and PPC.  The PPC code sequence
   is fully untested, and merely looks correct.

 * VOPs for fixnum first argument are included, but will only be used
   when the result is forcibly marked as fixnum, e.g., with TRULY-THE.
   Questionnable, but I'd rather err on the side of straightforwardness
   rather than put even more pressure on representation selection.

 * Use it in the division-by-multiplication transform for unsigned
   TRUNCATE by constant.
2011-08-14 16:49:27 -04:00
jimwise 17c4e8486b 1.0.46.22: fix sb-posix readdir on SunOS/x86
for the time being, disable :largefile on SunOS/x86.  Unfortunately,
 sb-grovel cannot navigate the somewhat sticky way in which struct
 dirent gets setup for a 32-bit host with 64-bit ino_t on SunOS, so
 sb-posix:readdir breaks

 :largefile works fine on SunOS x86_64, and will be re-enabled on x86
 after I get some more time to fight with the alien def for struct dirent
2011-03-03 19:50:21 +00:00
Nikodemus Siivola 621e3867fc 1.0.45.16: *features* tweaks for Solaris targets
A mistake in make-config.sh ("amd64" for "x86-64") was preventing
 :sb-lutex from being enabled on Solaris x86-64.

 While here, enable :largefile for Solaris (all platforms)

 Patch by Jim Wise, lp#667297.
2011-02-11 17:20:10 +00:00
Nikodemus Siivola ddff816990 1.0.42.8: fix build on OpenBSD/i386 -current and upcoming 4.8 release
* Patch by Josh Elsasser, lp#615489.

 * On OpenBSD/i386, the structure that stores the FPU state during
   signals was recently moved.

   Add a script to tools-for-build/ which is run from make-config.sh
   to detect where the FPU state is located, and create a
   src/runtime/openbsd-sigcontext.h header containing a #define which
   src/runtime/x86-bsd-os.c can use.

   This is necessary to build SBCL on recent -current snapshots of
   OpenBSD, and for the upcoming 4.8 release.

 * Missing NEWS entry for last commit.
2010-08-31 13:04:54 +00:00
Alastair Bridgewater 5745b5a5b2 1.0.41.35: ppc: Implement compare-and-swap-vops.
* Based roughly on the x86-64 version and the differences
between x86oid define-full-reffer and the PPC use of VOPs
instead (the VOPs seem smart enough, why do x86oids do the
whole define-full-reffer / -c VOP thing?).

  * Compare-and-swap VOPs are full memory barriers.

  * Left the VOPs conditionally-compiled in based on the
compare-and-swap-vops feature, more as documentation of what
is involved than anything else.

  * Enabled compare-and-swap-vops for all PPC targets.
2010-08-08 01:12:49 +00:00
Alastair Bridgewater d4d54599b5 1.0.41.5: x86: Implement memory-barrier-vops.
* Add the VOPs for the various memory-barriers.

  * Add the memory-barrier-vops feature to local-target-features on
x86 in make-config.sh.
2010-08-04 18:02:45 +00:00
Alastair Bridgewater 6ab1e0d948 1.0.41.4: x86-64: Implement memory-barrier-vops.
* Add the VOPs for the various memory-barriers.

  * Add the memory-barrier-vops feature to local-target-features on
x86-64 in make-config.sh.
2010-08-04 18:01:29 +00:00
Alastair Bridgewater 7121b6b31a 1.0.41.3: ppc: Implement memory-barrier-vops.
* Add the VOPs for inlining the various memory-barriers.

  * Add the memory-barrier-vops feature to local-target-features on
ppc systems in make-config.sh.
2010-08-04 17:59:25 +00:00
Cyrus Harmon bd2df60f7c 1.0.39.3: support building on darwin x86 and x86-64 without the dlshim
* x86 config -mmacosx-version-min cleanup

  * remove dlshim feature in make-config.sh

  * fix extern-alien-name and ldso naming conventions

  * kludge in load-cold-foreign-symbol-table to strip off the leading
    #\_ from the nm parsing

  * change dependency on ldso stubs for dlopen and friends to be
    #!-dlshim instead of #!-darwin

  * remove Config.x86-64-darwin9+ and replace with makefile
    conditionals

  * add :dlshim feature for darwin in make-config.sh and rework the
    darwin9+ stuff

  * make grovel-headers.c load genesis/config.h first so that we can
    use the LISP_FEATURE_xxx conditionals earlier
2010-06-03 04:39:50 +00:00
Nathan Froyd d5e1f093b8 1.0.37.43: add RAW-INSTANCE-INIT/* VOPs for PPC 2010-04-06 14:32:42 +00:00
Alastair Bridgewater 11b5ac86a9 1.0.36.9: UD2-BREAKPOINTS feature for x86oid systems
* Add new feature UD2-BREAKPOINTS, enabled by default only on x86oid
darwin targets.

  * Use said feature instead of DARWIN for breakpoint trap selection.

  * Make breakpoints work when using UD2-BREAKPOINTS (tested on x86 and
x86-64 linux).

  * This patch brought to you by lp#309067, which remains valid for
three reasons: First, the test case is still disabled.  Second, this
only fixes for x86oids, not for PPC.  And third, I didn't actually test
this on a darwin system.
2010-03-01 13:09:00 +00:00
Nathan Froyd 572da92e86 1.0.35.22: fix building on Darwin when sysctl is not in PATH
Thanks to Robert Goldman for the fix.
2010-02-27 16:46:05 +00:00
Tobias C. Rittweiler b411b7d5ee 1.0.35.6: Fix typo in make-config.sh
on ppc: :stacka-allocatable-lists -> :stack-allocatable-lists
2010-02-06 10:30:36 +00:00
Cyrus Harmon a3282da5cd 1.0.34.9: darwin/x86-64 sb-posix:stat fixes from Kei Suzuki
* sb-unix:unix-stat/lstat/fstat return the 32bit inode with x86 and
  the 64bit inode with x86-64,

* sb-posix:stat/lstat/fstat get stat values using the old stat calls
  with x86 and the new ones with x86-64

* re-enable now-working sb-posix stat tests
2010-01-21 05:09:43 +00:00
Nikodemus Siivola 1baab0bfb9 1.0.33.26: enabled threads by default on x86[-64] Linux
I'll let FreeBSD folks make the judgement if threads should be
 default there as well.

 Also: update INSTALL documentation regarding *FEATURES* a bit, and
 make the documentation clear about availability of threads on
 different builds.
2009-12-18 14:26:33 +00:00
Christophe Rhodes d7eae4b7d4 1.0.32.3: O_LARGEFILE support on x86-64/linux
Reported by Daniel Janus (and patch) as lp bug #453080.
2009-10-29 16:39:01 +00:00
Brian Mastenbrook 305c519d04 1.0.31.19: build x86-64 on OS X when available by default
* For consistency with other platforms, build x86-64 by default on OS
   X when the OS and hardware support it.
 * ... also clean up some stragglers needing .cvsignore entries
2009-09-22 02:22:41 +00:00
Paul Khuong 2230ea0c17 1.0.29.54: Inline unboxed constants on x86[-64]
* New build-time feature: inline-constants, which specifies that SB!C
  and SB!VM implement a protocol described in base-target-features.lisp-expr.
  Backends implementing that feature are able to load constants from code
  components, in a section that follows the actual executable code.

* Implement the protocol on x86 and x86-64, and use it for float constants,
  and, on x86-64 only, mid-sized (> 2^(29-32), but still machine-sized)
  integers.

* Use the new feature in integer and float arithmetic VOPs.

* Adjust a few test cases to take newly consing situations into account.

* Clean-up:
  - New build-time feature: float-eql-vops, which disable rewriting EQL
    of single and double floats in terms of foo-float*-bits.
  - Fix a typo (unused variable lookup) in TWO-ARG-+/-
2009-06-28 21:37:05 +00:00
Paul Khuong a157ed0be7 1.0.29.44: Complex float improvements
* On all platforms:
 - Slightly more stable complex-complex float (double and single)
   division;
 - New transform for real-complex division;
 - complex-real and real-complex float addition and subtraction
   behave as though the real was first upgraded to a complex, thus
   losing the sign of any imaginary zero.

* On x86-64
 - Complexes floats are represented packed in a single SSE register;
 - VOPs for all four arithmetic operations, complex-complex, but also
   complex-real and real-complex, except for complex-complex and
   real-complex division;
 - VOPs for =, negate and conjugate of complexes (complex-real and
   complex-complex);
 - VOPs for EQL of floats (real and complexes).
 - Full register moves for float values in SSE registers should also
   speed scalar operations up.
2009-06-25 15:37:05 +00:00
Nikodemus Siivola e3f6b2dba9 1.0.29.20: fix build breakage from 1.0.29.12 (PPC and MIPS, hopefully)
* Typos in make-config.sh PPC parts. Reported by Bruce O'Neel.

* MIPS was missing :STACK-ALLOCATABLE-VECTORS.
2009-06-20 09:08:09 +00:00
Nikodemus Siivola 55dc8558f0 1.0.29.12: nicer DX capability conditionalization
* New *FEATURES*: :STACK-ALLOCATABLE-LISTS, :STACK-ALLOCATABLE-VECTORS, and
   :STACK-ALLOCATABLE-FIXED-OBJECTS filled in by make-config.sh.

 * Use them instead of #!+(or arch1 arch2 ...).
2009-06-17 16:40:34 +00:00
Alastair Bridgewater b42c75203a 1.0.28.15: Build desymlinkification
Changed the object filename computation function to use a different
suffix for files in target-compile mode with the :assem flag.

  Changed the src/compiler/assembly/ paths in build-order.lisp-expr to
refer to src/assembly/ instead.

  Changed the duplicate-stem check in src/cold/shared.lisp to operate
in terms of target-compile object file names.

  Changed both the source and object filename computation functions to
call a new function to remap stem path segments matching "/target/" to
the appropriate per-arch directory.

  Removed the code for creating the compiler/assembly/ and target/
symlinks from make-config.sh.

  With this, source-location information in SBCL is now correct even
when used against an unbuilt source tree.
2009-05-05 17:11:18 +00:00
Juho Snellman 53ab0266f9 1.0.26.18: Solaris x86-64 support
* Patch by Alex Viskovatoff
2009-03-22 22:34:58 +00:00
Nikodemus Siivola dcd86042bb 1.0.24.12: adding and fixing the HPUX/HPPA build target
* Patch by Larry Valkama.
2009-01-03 15:50:46 +00:00
Nikodemus Siivola 96bb2dc76d 1.0.17.4: support for dynamic-extent structures
* Replace %MAKE-INSTANCE-WITH-LAYOUT with %MAKE-STRUCTURE-INSTANCE,
   which has an IR2 transform that can handle both initialization and
   allocation of the structure. On x86 and x86-64 it can initialize
   all slots, whereas on other platforms it only does the layout and
   non-raw slots. (See RAW-INSTANCE-INIT/* below.)

 * EMIT-INITS needs two new kinds of inits to handle: :SLOT for
   instance slots, and :DD for the defstruct-description/layout.

 * DEF-ALLOC doesn't anymore use a simple boolean for denoting
   variable length allocation, but instead a keyword: either
   :VAR-ALLOC, :FIXED-ALLOC, or :STRUCTURE-ALLOC.

 * New VOPs: RAW-INSTANCE-INIT/* for all raw slot types, which are
   almost identical to RAW-INSTANCE-SET[-C]/* VOPs, except that they
   always have a constant index and do not return a result. Structures
   with raw slots can be stack allocated only on platforms that
   implement these VOPs, denoted in make-config.sh by the
   :RAW-INSTANCE-INIT-VOPS feature. ...we really could use a
   *VM-FEATURES* or something.
2008-05-28 22:32:28 +00:00
Nikodemus Siivola 9b1fade83d 1.0.16.35: improved TIME output
* Print measured times using fixed-width decimal output with the
   measured precision, instead of converting to floats for printing.

 * Report processor cycle counts on x86 and x86-64.
   ** Since Intel doesn't seem to consider it necessary to issue a
      CPUID both before and after RDTSC, maybe we don't need to do
      that either.
   ** New feature, :CYCLE-COUNTER, for platforms that implement
      SB-VM::%READ-CYCLE-COUNTER.

 * Instead of reporting %EVAL calls, report "interpreted forms", which means
   both %EVAL and SIMPLE-EVAL-IN-LEXENV.

 * Report "lambdas converted" for the compiler, not counting TL-XEPs.

 * Report CPU percentage (computed from real and run time.)

 * Report total run time separately. Condence run time output slightly
   by reporting total, user, and system on the same line.

 * Report non-GC time as well.

 * Condence output by omitting page faults, converted lambdas, and
   interpreted forms when they are zero.
2008-05-17 11:02:27 +00:00
Richard M Kreuter c2ac5ba396 1.0.13.18: Revived OpenBSD support, contributed by Josh Elsasser 2008-01-09 19:12:23 +00:00
Rudi Schlatte 102b7c83b3 1.0.10.40: Fix build for windows when source directory contains spaces 2007-10-08 11:02:52 +00:00
NIIMI Satoshi 81e552e32a 1.0.9.64: Use umtx system call on FreeBSD to emulate futex. 2007-09-19 04:11:44 +00:00
NIIMI Satoshi 9a19ce460a 1.0.9.62: Performance and stability improvement of threading on FreeBSD
* Use GCC's Thread-Local Storage to store current thread.
  (Tested on Linux x86 and x86-64, too)

* Restore lisp level TLS segment register at interrupt handler.
2007-09-18 06:43:42 +00:00
William Harold Newman 8643c93d4d 1.0.9.53: trivial typo fixes
(I had batched these up as a "git baby steps" commit, but now
	that's been delayed...)
2007-09-10 13:31:45 +00:00
Nikodemus Siivola 828bcd9589 1.0.9.38: fix COMPARE-AND-SWAP
* :COMPARE-AND-SWAP-VOPS, not :COMPARE-AND-SWAP-VOP in *FEATURES*.

* Threaded cas tests. (threads.impure.lisp currently broken for
  unrelated reasons since .30 or so.)
2007-09-06 11:49:15 +00:00
Thiemo Seufer ccfb3a7d29 1.0.9.28: Enable alien callbacks for MIPS. 2007-09-02 03:08:38 +00:00
Thiemo Seufer b2f01c86f3 1.0.9.27: Fix large file support for MIPS. 2007-09-02 03:06:27 +00:00
Nikodemus Siivola b822fdd53a 1.0.9.6: remove :UNIX from *FEATURES* on Windows
Thanks to Luis Oliveira.
2007-08-29 14:51:55 +00:00
Nikodemus Siivola bfb19d3065 1.0.7.19: SB-EXT:COMPARE-AND-SWAP
* New macro SB-EXT:COMPARE-AND-SWAP provides a supported interface to
   compare-and-swap functionality.

 * New info-type :FUNCTION :STRUCTURE-ACCESSOR allows us to map from
   defstruct slot-accessor names to defstruct descriptions.

 * Add :CAS-TRANS slot keyword to DEFINE-PRIMITIVE object, and the
   compiler machinery needed to support compare and swap on primitive
   object slots.

 * New VOPs COMPARE-AND-SWAP-SLOT and %COMPARE-AND-SWAP-SYMBOL-VALUE.

 * Delete now unnecessary DEFINE-STRUCTURE-SLOT-COMPARE-AND-SWAP.

 * Use a consistent %COMPARE-AND-SWAP-FOO naming scheme for CAS
   functions.

 * Tests.

 Tested on x86/Linux & x86/Darwin, x86-64/Darwi, and PPC/Darwin.
2007-07-15 22:28:12 +00:00
Juho Snellman 578d987735 1.0.6.24: a more sophisticated UNWIND-TO-FRAME-AND-CALL for x86 and x86-64
* Implement three new VOPs:
          ** UNWIND-TO-FRAME-AND-CALL constructs a fake catch block for a
             given frame pointer, runs all unwinds for that block, sets
             the frame pointer to the new value, and calls a given function.
          ** BIND-SENTINEL (stores a marker on the binding stack, used
             to determine how far the binding stack needs to be unwound
             during a U-T-F-A-C).
          ** UNBIND-SENTINEL (pops one of these markers from the stack).
        * Modify IR2 to use these VOPs when converting suitable functions.
        * Modify the IR1 translation in maybe-insert-debug-catch to only
          ensure that tail recursion doesn't happen (needed to match the
          BIND-SENTINELs with UNBIND-SENTINELs).
        * Use these to implement SB-DEBUG:UNWIND-TO-FRAME-AND-CALL:
          ** Grovel the binding stack, uwp block chain and the catch block
             chain for the values needed to reconstruct the dynamic state.
          ** Call SB-VM:U-T-F-A-C.
        * The new implementation should be substantially the same as the
          old one (minor difference in handling of functions with special
          variables in the lambda list). Some tests added to verify this.
        * New implementation is somewhat faster at runtime (a simple
          function call overhead benchmark on (DEBUG 2) improved from 3.4s
          to 2.9s), and significantly faster at compiling (generally around
          15-30% improvement with (DEBUG 2)).
        * Other platforms still use the old implementation that instruments
          the code with a CATCH during IR1 translation.
        * Based on an earlier hack by Alastair Bridgewater.
2007-06-05 11:42:54 +00:00
Cyrus Harmon 1adf4db5a4 1.0.4.108: turn mach-exception-handler on for macos/x86 and x86_64
* have make-config.sh add mach-exception-handler to the features by
   default. This gets around the CrashReporter problems and enables
   debugging of SBCL processes with GDB.
2007-04-20 05:19:48 +00:00
Cyrus Harmon 1cf1afff10 1.0.4.54: x86-64/darwin preliminary threads support
* add sb-lutex to features via make-config.sh
 * preserve_pointer context registers in gencgc.c
 * use lock/cmpxchg on darwin
 * GSYM/GNAME asm hacks
 * add -arch options when appropriate for building threads-foreign.so
2007-04-10 04:18:10 +00:00
Christophe Rhodes 1071bf1ca8 1.0.2.11:
NetBSD/PPC support (from Aymeric Vincent sbcl-devel 2007-01-18).
2007-02-05 07:23:40 +00:00
sa2c bd455348d3 1.0.0.32: support for FreeBSD/x86-64 2006-12-15 02:57:52 +00:00
sa2c 4efb45cc0b 1.0.0.31: pthread-futex: another pthread back-end of mutex
An implementation of futex by pthread.  This is default back-end on
FreeBSD since pthread-lutex has some problems on these systems.
2006-12-15 01:48:59 +00:00
Juho Snellman 46e428110e 0.9.18.46:
Support files >2GB on Linux/x86.

        * Compile the runtime (and the C type grovelers) with various flags
          to enable a 64-bit off_t.
        * Add C-side wrappers for various POSIX functions, so that we can
          reliably get the largefile versions of them from Lisp-side.
2006-11-12 23:04:57 +00:00
Juho Snellman 402958f925 0.9.13.22:
Implement SB-THREAD mutexes and waitqueues using only pthread
        functionality on platforms that don't support Linux futexes. New
        platforms that can be compiled with SB-THREAD:

          * Solaris/x86 (seems to be as stable as SBCL threads on Linux)
          * OS X/x86 (some known stability problems, but doesn't fail on the
            thread regression tests every time)
          * FreeBSD/x86 (reportedly "flat-out broken", tends to cause
            kernel panics)

        While I (Juho) am doing the final merge from lutex-branch to
        HEAD, much of the work was done by Cyrus Harmon, based on an
        initial implementation by Nathan Froyd. The Solaris work was
        funded by Tellme Networks, Inc.
2006-06-03 20:26:52 +00:00
Juho Snellman 44c608efa2 0.9.11.21:
Merge sbcl-devel "Subject: make-config.sh patch for linux/ppc"
        from Rex Dieter.
2006-04-07 14:09:26 +00:00
Rudi Schlatte 76237af144 0.9.10.29
Linkage tables on win32
    ... heuristically choose a memory range ("does not break on my two
        systems, let's ship it")
    ... added some leftovers to cleanup.sh
    ... also #!+sb-doc-conditionalize docstrings in run-program.lisp
2006-03-14 12:27:46 +00:00
Cyrus Harmon 3d2165e67f 0.9.10.16:
x86/Darwin support
    ... Add Config support and ape the darwin/ppc space fixup stuff.
    ... Align stack to 16-bytes as per ABI in %alien-funcall,
        c-call and show.
    ... Add darwin space params.
    ... Use an altstack for handling signals in hopes of giving signal
        handlers properly aligned stacks.
    ... Get registers and flags out of the mcontext properly. Needed
        to play some games to get sys/_types included in order to get
        the full definition of the mcontext struct which Apple tries
        to hide from us.
    ... Moved os_get_runtime_executable_path from ppc-darwin-os.c to
        new file darwin-os.c.
    ... Fix debugging #ifdefs in runtime.h
    ... #define hacks to x86-assem.S to keep Apple's brain-dead
        assembler happy. In particular, it doesn't like things like
        $NIL, so I had to play some games with the precompiler to make
        it happy, and it wants .globl instead of .global. Also fixed a
        couple raw .aligns that should have used the macros
    ... Align stack in ppc-assem.S:call_into_c
    ... Added x86-darwin-os.h
    ... #- out debug.impure test that causes bad things to happen on
        darwin/ppc as it seems to cause bad things on x86/darwin as
        well.
    ... adjust fails for float tests
    ... LDSO stubs for x86/darwin
2006-03-06 09:59:33 +00:00
Christophe Rhodes 3a0f3612dc 0.9.9.36:
Merge Cyrus Harmon's 7th gencgc merge candidate
	... with the addition of idempotent implementations of
		arch_clear_pseudo_atomic_interrupted() for
		sparc, mips, alpha and hppa.  (the last three completely
		untested).
	... many, many changes, most of which are documented in
		doc/internals-notes/GENCGC-PORTING-NOTES

	(This commit may break horribly.  Please read, please test)
2006-02-21 22:59:29 +00:00
Christophe Rhodes a58ade75b2 0.9.9.22:
PPC64 build fixes
	... uname returning ppc64 should give us an SBCL_ARCH of ppc;
	... move the spaces around for MORE HEAP (512Mb vs 128Mb);
	... turn on linkage tables on Linux/PPC.
2006-02-07 17:55:22 +00:00
Christophe Rhodes 48ec282d87 0.9.8.34:
Merge patch from nyef for load-shared-object on win32.
	... there's a scary amount of duplication between
		win32-foreign-load and foreign-load; hope some
		gardening takes place at some point.
	... attempt to make make-config.sh put the relevant target
		features in place.
2006-01-11 14:28:35 +00:00
Christophe Rhodes 04d819bb1a 0.9.8.27:
Merge patch from James Bielman fixing self-build under Win32.
	... a little bit of an accident ensued; I ran
		canonicalize-whitespace on .sh files, which seemed to
		work (except on wc.sh) until it scribbled all over
		make.sh, confusing the shell interpreter utterly.
	... the resulting files have built the system, nevertheless.
2006-01-09 13:00:17 +00:00
Juho Snellman 93be0089fe 0.9.8.14:
Fix saving a core with callbacks on x86 and x86-64, as
        discussed on sbcl-devel "CFFI Callbacks on SBCL" on
        2005-12-31. Essentially the problem is that the address of
        #'ENTER-ALIEN-CALLBACK is hard-coded into the assembly callback
        wrappers, and the address of the function can change when
        saving a non-purified core.

        * Define a static symbol that contains #'ENTER-ALIEN-CALLBACK
          in the value slot.
        * Change the x86 / x86-64 wrappers to indirect through the
          slot.
        * Add minimal test case
        * Add a make-config.sh-detected :alien-callbacks feature
2006-01-06 01:11:07 +00:00
Thiemo Seufer 3da4a7fbba 0.9.5.11:
Linkage table support for mips.
2005-09-29 06:45:08 +00:00
Thiemo Seufer 656f994cdd 0.9.5.7:
Actually implement stack allocatable closures.
2005-09-28 15:10:39 +00:00
Thiemo Seufer babd45f778 0.9.4.72:
Robustify the build system scripts.
2005-09-16 13:26:39 +00:00
Brian Mastenbrook 8fc734ad59 0.9.3.72: enable linkage tables on Solaris/x86 2005-08-20 19:34:44 +00:00
Christophe Rhodes 40e3ba03d0 0.9.3.63:
Merge Solaris/x86 support, mostly as in sbcl-devel 2005-06-07
	... one or two minor fixups
	... log the major problems remaining in BUGS
2005-08-19 12:15:15 +00:00
Christophe Rhodes 2253ebaef8 0.9.1.63:
DX for sparc.
2005-06-20 16:52:45 +00:00
Christophe Rhodes 02c3d0ab1e 0.9.1.58:
Really stack-allocate dx closures on x86-64.
2005-06-19 17:38:41 +00:00
Nikodemus Siivola 16a6592367 0.9.1.54: dynamic-extent lists and closures on ppc
* Implement stack-allocating of lists and closures on PPC, cribbing
    liberally from the Alpha backend.
2005-06-19 13:48:16 +00:00
Alexey Dejneka 7c7e627671 0.9.1.52:
* Implement stack allocation of dynamic extent lists,
          &REST-lists and closures for Alpha-32;
          ... remove obsolete "economic" implementation of stack
              allocation.
2005-06-19 06:30:50 +00:00
Nikodemus Siivola a2ff6543c7 0.8.21.21: fix & share EXTERN-ALIEN-NAME logic (fixes bug #373)
* move e-a-n from SB-VM to SB-SYS, and from target/vm.lisp
    to foreign.lisp.
 * move all e-a-n calls to FIND-FOREIGN-SYMBOL-IN-TABLE and
    GET-DYNAMIC-FOREIGN-SYMBOL-ADDRESS.
 * reader conditionalize e-a-n behaviour on :ELF and :MACH-O; explicitly
    add the relevant feature for each OS in make-config.sh.
 * delete unused file ppc/print.lisp (duplicates ppc/show.lisp).
 * increment fasl-format number.

 note: affects all backends; tested on ppc/darwin, x86/freebsd, and
  sparc/sunos.
2005-04-07 08:00:03 +00:00
Christophe Rhodes fd00d78acc 0.8.21.18:
Patch from Thiemo Seufer / Peter van Eynde for MIPS assembly code
	... maybe fixes stability problems.
2005-04-05 16:38:14 +00:00
Juho Snellman 11504ccc2b 0.8.20.31:
Has it been a month already? Bump +FASL-FILE-VERSION+. Reasons:
        * "0.8.20.6: Make FILE-STREAM and STRING-STREAM potential mixins
           in CLOS"
        * "0.8.20.21: Add immediate single-floats on x86-64."
        * Probably others...

        Restore a modified version of the "slightly odd-looking stuff"
        that was removed in 0.8.20.30. It's there because the arch name
        is "x86-64" but the config file suffix is "x86_64-linux".
2005-03-22 22:09:18 +00:00
Daniel Barlow 10adbe19b8 0.8.20.30:
Slightly nicer behaviour on non-NPTL systems makes it possible
	to use thread-enabled binaries in thread-unfriendly environments again
	- but a warning is issued at startup and MAKE-THREAD signals an error

	Remove some slightly odd-looking stuff in make-config.sh: once
	again it is possible to "SBCL_ARCH=x86 sh make.sh" on an x86-64
2005-03-22 19:32:26 +00:00
Alexey Dejneka fae139755a 0.8.18.20:
* Allocate closures at the beginning of FLET/LABELS form.
        ... fix bug 125.
        * Partial support of stack allocation of dynamic-extent
          closures on x86.
2005-01-08 09:41:46 +00:00
Christophe Rhodes 78fa16bf55 0.8.18.14:
Merge x86-64-again branch onto HEAD.

	Many, many, many 64-bit cleanups in code/, runtime/, compiler/,
	compiler/generic/

	New SAP-REF-WORD and friends.

	Various fixes to the x86-64 backends (and addition of assembly/
	and runtime/ files necessary).  Implementation of Unicode-related
	stuff by CSR.  Signed modular arithmetic has not yet been
	implemented.

	A number of tests fail:
	... alien.impure.lisp: enum <-> integer array conversion
	... exhaust.impure.lisp: "deferred gubbins"
	... float.pure.lisp: float infinities
	... foreign.test.sh: "deferred gubbins"

	It's possible that this merge will cause alpha32 to break in an
	interesting way, probably related to undefined-alien.  Needs
	debugging.  Other architectures have been tested, but of course
	it's possible that something has gone wrong.

	Though I (CSR) am merging this, the vast majority of the work was
	done by Juho Snellman (building on Dan Barlow's initial work to
	get it into executing lisp code in cold-init), with guest appearances
	by Cheuksan Edward Wang and Vincent Arkesteijn.
2005-01-06 12:47:55 +00:00
Brian Mastenbrook b36697e233 0.8.19.1: PowerPC linkage tables (darwin only for now)
* Linkage tables are now implemented on PowerPC.
     Right now I've only enabled it on Darwin; to enable it on Linux,
	 the addresses used for linkage table spaces would need to be tested.
   * Lazy foreign functions do not work correctly - the code expects the signal
     that occurs when jumping to a write-protected page to be the same as the
	 signal that occurs when reading from one. On Darwin the former is SIGBUS
	 and the latter is SIGSEGV; this means that the fault address testing does
	 not work on Darwin.
2004-12-30 13:44:26 +00:00
Nikodemus Siivola 1f7bb609de 0.8.15.18: Linkage table tweaks & alien bugfix
* Build with linkage-table by default on x86/NetBSD and
               sparc/Linux as well.
            * Don't try to be too clever about when to warn user about
               alien definitions when saving cores on non-linkage-table
               platforms: do it unconditionally.
            * Fix parsing of recursive alien record and union types
               (reported by Thomas F. Burdick, port of Helmut Eller's
               patch for the same problem in CMUCL.)
2004-10-18 14:59:34 +00:00
William Harold Newman eb5265ab22 0.8.14.9:
fixes for build on my old Debian system...
	...added missing #!+LINKAGE-TABLE
	...converted "cd foo" to "cd ./foo" so that CDPATH-based logic
		won't helpfully announce the name of the new dir to
 		stdout (and thus into local-target-features.lisp-expr);
		then "cd ./foo > /dev/null" for overkill
	generally grepped for and changed "cd foo" to "cd ./foo" to
		reduce the amount of CDPATH ambiguity involved and
		the amount of stdout noise generated
2004-09-10 15:36:17 +00:00
Nikodemus Siivola 75b52379bd 0.8.14.5: Join the foreign legion!
* x86/FreeBSD, x86/Linux and Sparc/SunOS now have
              linkage-table support, allowing SAVE-LISP-AND-DIE to
              function properly in the presence of loaded shared
              objects.
           * As a related cleanup automate testing for dlopen
              support on the plaform, and conditionalize
              LOAD-SHARED-OBJECT support on the resulting
              :os-provides-dlopen feature.
2004-09-09 12:10:11 +00:00
Nikodemus Siivola 4bc6b918bb 0.8.13.78: Birds of Feather
* Fix dladdr bogosities: test if dladdr is supported on
               the platform, and add an ldso_stub for it if so. This
               so that SBCL isn't dependant on the dladdr being at the
               same location at runtime as it was on the build-host.
               Move the dummy definition for FOREIGN-SYMBOL-IN-ADDRESS
               to target-load, so that backtraces on target will work
               before foreign.lisp is built. Clean up the real F-S-I-A
               definition to use the :os-provides-dladdr feature.
            * Fix manual bogosities: generate functions signalling
               UNSUPPORTED-OPERATOR-ERROR for SB-BSD-SOCKETS
               platform-dependant sockopts on platforms where they're
               not supported; make these functions have the normal
               doctrings. This so that manual building will work on
               non-Linux as well. Also clean up the .sbclrc examples
               slightly.
2004-08-25 14:24:23 +00:00
Christophe Rhodes eba7d5d4fd 0.8.13.27:
Make make-config.sh work better on SunOS (thanks to Vincent
	Arkensteijn)
2004-08-05 10:43:08 +00:00
Christophe Rhodes 074ba0606c 0.8.9.6.netbsd.1:
Merge patch (Perry Metzger sbcl-devel 2004-03-27) for partial
	NetBSD support (some work also due to Valtteri Vuorikoski)
2004-03-29 10:36:30 +00:00
Christophe Rhodes 286cb407fc 0.8.8.25:
More SB-POSIX test fixes
	... allow building as root again, since it seems that's a
		desired feature
	... test for not having EUID of 0 in EACCES posix tests instead

	(this will probably annoy antifuchs, but I forgot to commit
	version.lisp-expr for the last fix.  Since this is logically a
	simple continuation, I haven't bothered to increment it again)
2004-03-15 15:24:52 +00:00
Christophe Rhodes 146f785ee2 0.8.8.25:
Don't allow the system to be built as root
	... id(1) check early in the build.
	Fix the SB-POSIX test suite
	... rewrite mkdir.error.3 not to assume that / is unwriteable;
	... continue to assume that the user is not (fake)root, but
		nonetheless try to clean up a bit more if we are.
2004-03-15 13:27:50 +00:00
Christophe Rhodes fab1ba8d4e 0.8.8.2:
Merge build patch ("building SBCL with Sun toolchain" Nikodemus
	Siivola sbcl-devel 2004-02-05)
	... add some assertions to ldso-stubs.lisp
	... fix the conditional around dlopen()
	... delete ~% pasteo from sparc-funcdef.sh
2004-02-26 08:36:22 +00:00
Kevin Rosenberg 9e81b69b92 0.8.5.49:
* Revert previous tools-for-build/modify-ldt-struct-name commit
	(which never actually included the necessary C file) for the
	simpler test of LINUX_VERSION_CODE suggested by Dan Barlow.
2003-11-19 22:46:22 +00:00
Kevin Rosenberg 1a6c2275ab 0.8.4.48:
* Add tools-for-build program to determine if asm/ldt.h has the
	new name for the modify_ldt structure.
	* Fixes to properly compile contribs on x86_64 systems
2003-11-19 13:48:07 +00:00
Christophe Rhodes d543ff4caa 0.8.4.38:
Solaris fixes (from Nikodemus Siivola sbcl-devel 2003-10-22)
	... sh(1) apparently doesn't like $(foo).  Make it `foo`.
	... allow building from cmucl/sparc, by suppressing underflow
		traps
	... /dev/random doesn't exist.  /dev/zero better had, though
2003-10-22 11:30:19 +00:00
Christophe Rhodes e3f68bde02 0.8.4.36:
Fix bug 213a
	... CONS-TYPE-LENGTH-INFO to walk CONS-TYPE lists
	... delete the neat but ultimately flawed (CONS NIL T) test
		and use a proper test instead
	... test suite additions.
	Add idea from Michael Hudson (sbcl-devel 2003-08-26) to exit
		early from Darwin compilations when the stack size
		limit is too small.
2003-10-20 13:31:06 +00:00
Christophe Rhodes c65f4c06c8 0.8.4.5:
PPC build fix (kludge)
	... use offsetof() to find where the glibc maintainers have put
		the uc_mcontext slot today, and delegate to appropriate
		source code
	non-x86/linux build fix
	... undefine arch_os_get_current_thread() from individual
		architecture header files
	Everywhere clean.sh fix
	... only include src/runtime/Config in tools-for-build/Makefile
		if it exists.  Now clean.sh works on a clean tree.
2003-10-03 10:59:34 +00:00
Kevin Rosenberg f7b3fe1bd8 0.8.3.78:
* Initial changes to build on SuSE AMD64. Still need to port sb-bsd-sockets.
2003-09-18 21:09:08 +00:00
Christophe Rhodes 5062535056 0.8.2.8:
MacOS/Darwin merge.  Points to note:
	... thanks to Patrik Nordebo, Pierre Mai and Brian Mastenbrook;
	... mmap()ed simple-streams appear not to work under darwin;
	... floating point traps are currently non-functional on both ppc
		platforms;
	... on darwin, hitting ^C, then choosing CONTINUE results in a
		memory fault;
	... there's no lchown under darwin;
	... x86/bsd building is also slightly non-functional currently;
	... There's a OAOOM problem in src/compiler/ppc/c-call.lisp, and in
		src/runtime/ppc-assem.S.
2003-07-29 13:01:55 +00:00
Christophe Rhodes c5759c0356 0.8.1.15:
Mostly MIPS goodies, though some infrastructural fixes too
	... fix hideous DEFINE-PARTIAL-REFFER constant-case bug;
	... also adjust the costs so that the constant reffers and
		setters are prioritized;
	... also build fix for undefined static symbols (reported by
		KMR end June 2003)
	... include src/runtime/Config in tools-for-build/Makefile
		(and adjust order of events in make-config.sh to
		ensure that src/runtime/Config exists by the time
		we need to build any of the tools-for-build)
2003-07-02 14:32:12 +00:00
Christophe Rhodes df679ed627 0.8alpha.0.32:
Improvements in build technology:
	... detect and choose GNUMAKE earlier, once and only once.
	... provide recompile and use-anyway restarts for warm load.
2003-05-16 11:37:09 +00:00
Christophe Rhodes ecb9714eb7 0.7.12.21:
As per Johannes Groedem sbcl-devel 2003-01-28, use the simplest
		invocation of hostname(1) possible, to avoid e.g.
		attempting to set the system hostname.
2003-02-05 13:03:27 +00:00
Christophe Rhodes f6f77e8d2a 0.7.10.16:
Fix one "outstanding embarrassment" (as per CSR sbcl-devel
		2002-12-10): no more building of compiler files in
		warm load.
	... play symlink games instead, to build the troublesome
		assembly files twice under different names (will need
		adjustments to work on non-Unix filesystems (e.g.
		NTFS) but no more than the rest of the build).
2002-12-11 11:10:27 +00:00
Christophe Rhodes 435b7acd18 0.7.9.67:
MIPSel build patch
	... write a noddy C program to determine target endianness
		(KLUDGE: assumes int is 32 bits)
	... use it in make-config.sh if we are building a MIPS target
2002-11-25 13:24:15 +00:00
Christophe Rhodes 91392754bf 0.7.9.7:
Move build-id.tmp-making logic to make-config.sh, to facilitate
		cross-compilation
	Add a comment regarding *policy* rebinding.
2002-10-27 16:02:56 +00:00
Christophe Rhodes 4ae1b794a5 0.7.7.9:
Commit MIPS backend
	... one or two modifications to extant code, as per CSR sbcl-devel
		2002-08-31
	... lots of new files
2002-09-01 22:34:13 +00:00
Christophe Rhodes 8a19c68764 0.7.6.27:
Merge (alpha-quality, probably) HPPA/Linux port
	... added hppa fixups in genesis.lisp
	... moved disassem-state definition from target-disassem.lisp to
		disassem.lisp, so building it on the host
	... lots of new files (thank you, CMUCL)
	Minor boilerplate cleanups in src/runtime/
2002-08-19 12:13:59 +00:00
Daniel Barlow dc5e3163fe 0.7.6.1:
Mostly-tested but still considered "experimental" non-invasive
	stack exhaustion checking, using a guard page at the end of the
	stack and an extra clause in the sigsegv (on some ports, sigbus)
	handler.  One day there will be an internals doc with the
	gory details: for now, try http://ww.telent.net/diary/2002/7/#23.59392
2002-07-23 17:22:35 +00:00
Daniel Barlow 1e4629723d 0.7.4.17: Mostly Alpha fixes
Ported runtime to OSF/1 a.k.a Digital Unix a.k.a Tru64

        current_binding_stack_pointer and related are actual _pointers_
          i.e. 8 byte quantities.  Asm now uses ldq/stq on them not ldl/stl

        Fix bug when gc trigger called while *gc-inhibit* set: see
          new comment in interrupt.c for details

        Small amount of general comment/dead code cleanup
2002-06-07 01:54:42 +00:00
Christophe Rhodes 0d669e68a1 0.7.1.1:
Merged	support for SPARC/SunOS (aka Solaris)
	... added relevant runtime and	-os.lisp files;
	... cleaned up sparc backend runtime,	actually _using_ the
		abstractions	that were written for the SPARC/Linux
		port;
	... added some	#includes for compilation (nothing breaks on
		Linux, but BSD has not yet been tested;
	... removed some bash-/ksh-isms from build and test scripts;
	... abstraced wait3() constants into grovel_headers and
		unix.lisp.
2002-03-25 18:25:03 +00:00
William Harold Newman aca45f35fc 0.7.1.41:
more ordinary name (one *FEATURES* symbol, not two)
		for the opposed pair of stack-grows-upward and
		stack-grows-downward concepts
	...replaced old pair of features with new
		 :CONTROL-STACK-GROWS-DOWNWARD-NOT-UPWARD feature
	...#!+STACK-GROWS-DOWNWARD becomes
		#!+CONTROL-STACK-GROWS-DOWNWARD-NOT-UPWARD
	...#!+STACK-GROWS-UPWARD becomes
		#!-CONTROL-STACK-GROWS-DOWNWARD-NOT-UPWARD
	Since references to the new STACK-EXHAUSTION stuff can be
		automatically written into fasl files, the fasl file
		version needs to be incremented.
2002-03-16 16:12:30 +00:00
William Harold Newman 8286d1fc02 0.7.1.29:
(Note that the STACK-FOO symbols introduced in this version
		probably need to change, since as DB pointed out
		on sbcl-devel 2002-03-04, they assume an identity
		between C stack and SBCL control stack which doesn't
		exist on the non-X86 ports.)
	catching stack overflow, part II...
	...defined *STACK-EXHAUSTION* and arranged for it to be
		initialized in cold init
	...added STACK-GROWS-FOOWARD to *FEATURES*, and used it to
		reexpress some of the old #!+X86 conditionalization
	merged APD "unbound condition slot" patch (sbcl-devel
		2002-03-04), so that PARSE-DEFMACRO creates
		ARG-COUNT-ERROR conditions correctly in the
		(NOT (EQ ERROR-FUN 'ERROR)) case
	made parse-defmacro-errors.lisp use pretty-printer
	s/defmacro-lambda-list-bind-error/defmacro-ll-bind-error
	added SB-DEBUG::*NESTED-DEBUG-CONDITION* to succor those of us
		who like to divert ourselves by trashing print methods
	bumped *DEBUG-PRINT-LEVEL* and *DEBUG-PRINT-LENGTH* so that
		the new highly-structured pretty-printing :REPORT
		methods for parse-defmacro-errors.lisp don't truncate
		output too ludicrously
2002-03-05 03:53:04 +00:00
William Harold Newman b767eae488 0.7.1.24:
merged CSR "build patch" 2002-02-21
2002-02-22 04:16:41 +00:00
William Harold Newman 68fd2d2dd6 0.7.1.20:
merged CSR SPARC port patch (sbcl-devel 2002-02-12, plus
		lotso new files through FTP)
	tweaking patch...
	...s/ARCH_HAS_FOO/ARCH_HAS_FOO_IN_SIGCONTEXT/
	...updated sbcl.1
	...added 'typedef os_context_register' for OpenBSD
	...added ARCH_HAS_STACK_POINTER for x86 (and added
		x86-arch.h to hold it)
	...renamed fpregister and fp.register to float.register (to
		avoid the ambiguity with "frame pointer" that I
		experienced when first trying to figure this out,
		since even though for a given architecture it's pretty
		unambiguous, in architecture-neutral code it's not)
	...added x86-bsd-os.h
2002-02-15 17:10:02 +00:00