Commit graph

357 commits

Author SHA1 Message Date
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
William Harold Newman d7f6139a91 0.6.12.7.flaky1:
(This system state is seriously screwed up. It did build,
		both on Linux and on OpenBSD, but signalled an
		error after writing out sbcl.core on OpenBSD, and
		although it runs a little both on Linux and on
		OpenBSD, it hangs in the regression tests. It
		also has some temporary hacks marked REMOVEME,
		including one which suppresses PURIFY when
		building the system (!).)
	made the system build on OpenBSD again..
	..stubbed stuff out as a quick fix to the problem of FFI to
		64-bit stat.st_size
	tried to make the system run on OpenBSD again..
	..initialized current_dynamic_space, since it's now used
		instead of DYNAMIC_SPACE_START in PURIFY
	..added new assertions about GENCGC alloc_region stuff being
		reset when it should be
	renamed Lisp-level struct stat stuff to struct wrapped_stat
	tried to tidy up Lisp-level stat stuff; removed mysterious
		(STRING= NAME "") behavior from UNIX-STAT
	added slam.sh to help in low-level compile-and-try cycle
	pulled alloc_region-is-reset logic out into separate
		functions, and added more assertions on it (hunting
		for a bug which broke the old assertions)
	renamed gc_alloc_large to gc_alloc_possibly_large, and
		gc_quick_alloc_large_unboxed to
		gc_quick_alloc_unboxed_possibly_large
	enabled various GC checks, e.g. gencgc_zero_check=1
	deleted unused (and bizarre..) gencgc_verify_zero_fill()
	turned off PURIFY in order to get the system to build, since
		PURIFY seems to be misbehaving (leaving INIT-FUNCTION
		above the cutoff address..)
2001-05-15 14:08:31 +00:00
William Harold Newman f2aa2d01b8 0.6.12.7:
Make sure that we "mkdir output/" before we use it in the build
		process. (MNA pointed out that we used it before we
		made it.)
	Use "uname -m" to figure out sbcl_arch default.
	merged MNA PCL fixes from sbcl-devel 2001-05-09 (including
		port of Pierre Mai's method combination fixes from
		cmucl-imp 2001-04-26)
	added regression test for method combination fix
	Bug 14 was mostly fixed already: the problem with
		INVALID-METHOD-ERROR complaining about being outside
		a method combination function went away some time ago.
		The MNA/Mai patch above improves method combination
		error reporting further, so it's definitely time
		to retire 14 from BUGS.
2001-05-10 15:18:02 +00:00
William Harold Newman 672ac5849b 0.6.12.6:
merged Dan Barlow's patches sbcl-devel 2001-05-08 and
		2001-05-09
2001-05-09 19:20:18 +00:00
William Harold Newman 4cf50b1896 0.6.12.4:
made grovel-headers.c run automatically as part of the build
		process (so that the automatically-generated file
		output/stuff-groveled-from-headers.lisp replaced the
		old symlink src/code/target-os-types.lisp)
	redid grovel_headers.c DEFCONSTANT macro as function
	removed 'ln -sf $sbcl_arch-linux-types.lisp' stuff (from
		src/runtime/make-config.sh??)
	redid the definition of a stem in stems-and-flags.lisp,
		as a relative path from SBCL base directory instead
		of from the src/ subdirectory, so that it can now
		refer to "output/stuff-groveled-from-headers.lisp
2001-05-08 00:13:54 +00:00
William Harold Newman dfa55a883f 0.6.12.3:
NOTE: This is a slightly screwed-up checkin, which won't
		quite build as is, because the checked-in changes from
		the Alpha port expect various src/code/*types.lisp
		files (e.g. src/code/x86-linux-types.lisp) which
		Daniel Barlow created by hand once and for all. Those
		are in my working directory but I didn't check them in
		because almost immediately, probably 0.6.12.4, I
		expect to rearrange things so that the build
		process generates a types file on every run of
		make.sh. So since CVS add/delete is a little mixed up,
		I thought I'd just skip it, even though it means that
		this version isn't quite buildable unless you grab
		those files from DB's patch.
	merged Daniel Barlow's port to the Alpha CPU sbcl-devel
		2001-05-04
	moved CIRCULAR-LIST-P to early-extensions.lisp (since it
		logically belongs there, and DB's new definition,
		unlike the old one, doesn't have a physical dependence
		on IGNORE-ERRORS which prevents it from being there)
	merged boot-extensions.lisp, early-extensions.lisp, and
		late-extensions.lisp, since there's no longer any
		distinction between the files
	deleted CVS files from sbcl-alpha-extra-files.tar, since
		they were probably an oversight, I think
	also src/compiler/alpha/z050.pdf:-|
	The patch change
			-  (/hexstr arguments)
			+  #!+sb-show (/hexstr arguments)
		shouldn't be necessary because /SHOW, like all the
		/FOO macros, is already conditional on SB-SHOW. So I
		undid this change (and added some comments in
		src/code/show.lisp explaining the intended behavior
		of /FOO macros).
	merged stat_wrapper.c into the relatively new, related
		wrap.c file; deleted stat_wrapper.h since stat wrappers
		seem never intended to be used by C code anyway
	renamed build-tools/ to tools-for-build/ in the interest of
		unambiguous (even painfully unambiguous)
		globally-visible names
	tweaked tests/alien.impure.lisp so that the test uses a
		non-GENCGC-dependent variable (instead of having to
		have the test conditional on #+GENCGC).
2001-05-07 20:16:21 +00:00
William Harold Newman eaf8fba81b tidied up OpenBSD-vs.-FreeBSD stuff, and src/runtime/Config.x86-* 2000-10-02 17:27:10 +00:00
William Harold Newman a530bbe337 Initial revision 2000-09-18 01:26:16 +00:00