sbcl Log

Commit Date  
[c06b8c] (13.5 kB) by Christophe Rhodes Christophe Rhodes

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 10:48:35 View
[c0fd7a] (13.5 kB) by Christoph Egger Christoph Egger , pushed by Christophe Rhodes Christophe Rhodes

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 12:39:30 View
[76e448] (13.5 kB) by Stas Boukarev Stas Boukarev

Remove an unused VOP %make-symbol on x86-64.

%make-symbol is handled by define-primitive-object now.
The old VOP was copied into alloc.lisp during the x86_64 port, got
removed from x86 before the merge. It wasn't even ported to x86-64,
and was never invoked during the 9 years it has been sitting there.

Also remove fast_random_state variable from the C runtime, it was used
by the VOP.

2013-04-15 23:47:24 View
[26ac61] (13.5 kB) by David Lichteblau David Lichteblau

Port to x86-64 versions of Windows

- Microsoft x86-64 calling convention differences compared to the
the System V ABI: Argument passing registers; shadow space.
- Inform gcc that we are using the System V ABI for a few functions.
- Define long, unsigned-long to be 32 bit. This change just falls
into place now, since incompatible code had been adjusted earlier.
- Use VEH, not SEH.
- No pseudo atomic needed around inline allocation, but tweak alloc().
- Use the gencgc space alignment that also works on win32 x86.
- Factor "function end breakpoint" handling out of the sigtrap handler.

Beware known bugs, manifested as hangs during threads.impure.lisp,
happening rather frequently with 64 bit builds and at least much
less frequently (or not at all) with 32 bit binaries on the same
version of Windows, tested on Server 2012. (All credit for features
goes to Anton, all bugs are my fault.)

Thanks to Anton Kovalenko.

2012-12-05 16:34:28 View
[b727b3] (13.2 kB) by David Lichteblau David Lichteblau

LLP64: change unsigned long to uword_t

Adjust uses of `unsigned long' in the C runtime for LLP64 platforms:
Replace with `uword_t' where applicable.

Thanks to Anton Kovalenko.

2012-11-20 14:01:27 View
[e6f4c7] (13.3 kB) by David Lichteblau David Lichteblau

Add safepoint mechanism

* Stop threads for GC at safepoints only.

* Replaces use of SIG_STOP_FOR_GC.

* Currently not used by default. Users need to set feature
SB-SAFEPOINT to enable this code. SB-SAFEPOINT should only be set
when SB-THREAD is also enabled.

* ISA support: Each architecture needs VOP support, and changes to
foreign call-out assembly; only x86 and x86-64 implemented at this

* OS support: Minor changes to signal handling required, currently
implemented for Linux and Solaris.

* Performance note: Does not currently replace pseudo-atomic entirely,
except on Windows. Only once further work has been done to reduce
use of signals will pseudo-atomic become truly redundant. Therefore
use of safepoints on POSIX currently still implies the combined
performance overhead of both mechanisms.

* Design alternatives exist for some choices made here. In particular,
this commit places the safepoint trap page into the SBCL binary for
simplicity. It is likely that future changes to allow slam-free
runtime changes will have to go back to a hand-crafted address

* This feature has been extracted from work related to Windows
support and backported to POSIX.

Credits: Uses the CSP-based stop-the-world protocol by Anton Kovalenko,
based on the safepoint and threading work by Dmitry Kalyanov. Use of
safepoints for SBCL originally researched by Paul Khuong.

2012-08-10 12:51:45 View
[6793d7] (13.2 kB) by Alastair Bridgewater Alastair Bridgewater runtime: Current stack and frame pointers are per-thread data.

* Add slots to the thread structure on threaded targets to hold
the control stack and frame pointers.

* Add some macros to thread.h to grab the correct variable or
slot on all builds, and use them everywhere required.

* Conditional-compile out the old global variables for this on
threaded targets (I probably messed this up).

2010-08-07 13:46:26 View
[11b5ac] (13.1 kB) by Alastair Bridgewater Alastair Bridgewater 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 View
[918439] (12.7 kB) by Christophe Rhodes Christophe Rhodes add support for x86-64/NetBSD

Patch from Aymeric Vincent.

2009-11-19 15:38:50 View
[53ab02] (12.7 kB) by Juho Snellman Juho Snellman Solaris x86-64 support

* Patch by Alex Viskovatoff

2009-03-22 22:34:58 View
[d63d80] (12.7 kB) by Juho Snellman Juho Snellman OpenBSD x86-64 support

* Patch by Josh Elsasser

2009-03-22 20:07:50 View
[012b15] (12.7 kB) by Gabor Melis Gabor Melis centralize scattered arch_os_get_context() calls

... to the six signal handlers trampolines. These are now the only
places where void_context appears, the rest of the runtime uses

Also, the &void_context+37 hack was removed. On Sparc/Linux the third
parameter of SA_SIGINFO signal handlers is a pointer to sigcontext,
which happens to be the same as &void_context+37 most of the time,

I have tested two on Sparc/Linux boxes, one running 2.6.26 that
randomly segfaulted compiling itself with, and another
runnin 2.6.24 that worked fine before at that version.

Thanks to Bruce O'Neel for the shell access.

2009-02-16 22:30:25 View
[842d3c] (12.8 kB) by Gabor Melis Gabor Melis OOAO restoring fp control word

Do it in all signal handlers, no matter what, on platforms that
require it.

2009-02-16 22:20:16 View
[de0a47] (13.3 kB) by Gabor Melis Gabor Melis x86/x86-64 runtime pseudo atomic fixes

Make sure that {clear,set}_pseudo_atomic_{atomic,interrupted} boil
down to a single assembly intruction. And that the compiler does not
reorder them.

I think the ppc bits in pseudo-atomic.h are still broken on both

2009-02-16 21:38:43 View
[540a67] (13.3 kB) by Brian Mastenbrook Brian Mastenbrook build OS X 10.4-compatible binaries on OS X 10.5
* Set minimum compatibility version in compiler options.
* Refactor existing 10.5 support so that when 10.4 support is
deprecated and we're building on 10.6+, everything will continue to

2008-10-09 00:36:08 View
[c39567] (13.4 kB) by Cyrus Harmon Cyrus Harmon fix x86-64/darwin build

* use MAC_OS_X_VERSION_10_5 instead of __DARWIN_UNIX03 as the test
for new style headers as __DARWIN_UNIX03 is defined when building
x86-64 on 10.4

2007-10-08 04:30:21 View
[127fd3] (13.4 kB) by Cyrus Harmon Cyrus Harmon support for Darwin versions that support __DARWIN_UNIX03

* on some versions of darwin symbols without a leading _ are dropped
by the linker. Use a leading _ on Darwin ldso_stub functions.

* Add a FIXME about 128-bit integeer passing being broken on x86-64

* _DARWIN_UNIX03 support
** os_context_t is now __darwin_ucontext
** eip -> __eip (and friends) - use macro hackery EIP etc...
** use darwin_ucontext/darwin_mcontext instead of struct
ucontext/mcontext where appropriate.
** struct ucontext -> os_context_t where appropriate

* allow socket-error for the aceptable errors in inet-socket error
test cases

* Add a fix me about a rumored OS bug fix that in name-service tests

2007-10-08 01:46:30 View
[4023b1] (13.3 kB) by Juho Snellman Juho Snellman clean up compiler warnings in the runtime

* Patch by Robert Brown.

2007-06-18 16:18:34 View
[5f4fe7] (13.4 kB) by Nikodemus Siivola Nikodemus Siivola merge redundant funcallN definitions in the runtime
* We need only two implementations, not one per arch: put them into
a new file "funcall.c".

2007-04-04 13:11:15 View
[231249] (14.7 kB) by Nikodemus Siivola Nikodemus Siivola trap handling cleanup continues

* handle_trap is even better then maybe_handle_trap: if we can't
handle the trap sanely pass the buck to unhandled_trap_error
instead of generic signal handling routines.

* implement Windows trap handling on top of handle_trap, not
sigtrap_handler: some copy-paste from x86-arch.c later Windows is
now almost free of the "signal handling" remnants.

* Replace the bogus lossage messages saying
"fake_foreign_function_call fell through" with things that actually
make sense.

2007-04-02 15:20:39 View
[6c605f] (14.8 kB) by Nikodemus Siivola Nikodemus Siivola refactor trap handling

* All architectures had an essentially identical switch(trap){...}
for different trap codes. Pull this into a single shared
handle_trap function, which dispatches to architecture specific
functions where necessary.

* Remove unnecessary signal and siginfo arguments from breakpoint
handling functions and interrupt_internal_error as a tentative step
towards admitting that POSIX is not the only world out there.

* Clean up some compiler warnings from the runtime, and a missing
anti-copyright header.

* Fix the PPC build... at least on G4 Darwin 10.3: no suseconds_t

Tested on x86, x86-64, and PPC. Sparc, MIPS (and Alpha) testing

2007-04-01 19:36:16 View
[0f2348] (15.7 kB) by Cyrus Harmon Cyrus Harmon experimental x86-64/darwin suport
* fix sb-posix time structs to match headers on darwin
* comment out mtime sb-posix test as this isn't working ATM
* add UD2A trap stuff to x86-64 and corresponding word-imm support
* remove bogus extern-alien-name in boxed_region fixups
* add compiler parameters for Darwin
* add x86-64 darwin config file
* some type safety fixes (proper types) in darwin-dlshim.c
* use setpgid on Darwin
* add signal context support x86-64/darwin
* report trap instead of si_code for trap_Error/trap_Cerror
* unsigned -> unsigned long in purify.c
* add mach exception handler support for x86-64/darwin
* x86-64 assembly hacks to make darwin's assembler happy
* update x86-64-bsd-os.c to suppot darwin and mach exceptions
* add x86-64-darwin-os.c/h
* update LDSO stubs for x86-64 darwin

2007-03-03 00:42:01 View
[bd4553] (15.2 kB) by sa2c sa2c support for FreeBSD/x86-64

2006-12-15 02:57:52 View
[b66385] (12.6 kB) by Juho Snellman Juho Snellman
Rewrite the single-stepper to solve the compilation/run-time
performance and type-inference inaccuracy problems with the old
approach. Also make some UI improvements to the stepper.

* The IR1 stage no longer instruments the code. Instead it
only detects function call forms which should (according to
the policy) be steppable, and records a string
representation of those forms in the matching combination
nodes (to be stored in the debug-info).
* Modify the function call vops to emit some instrumentation just
before the actual call happens. This will check either the
symbol-value of *STEPPING* (unithreaded) or the new STEPPING
slot of threads (multithreaded) and trap if it's true. The
trap handler will replace the closure / fdefn that was about
to be called with a wrapper, which will signal a stepper
condition and then call the original function.
* Emit a similar bit of instrumentation before any call that
got optimized to a simple VOP. The difference is that the
only thing that the trap handler will do is to directly
signal the condition.
* The necessary VOP / runtime changes have only been done on
x86, x86-64 and ppc so far. Alpha, Mips and Sparc should
still compile, but the stepper won't work there.
* Remove the old single-stepper REPL, and instead integrate the
stepper into the debugger.
* Add STEP-OUT functionality (stop stepping temporarily,
resuming it once the current function returns).

2006-09-18 20:09:13 View
[160008] (12.3 kB) by Nathan Froyd Nathan Froyd
Shorten pseudo-atomic sequence on x86 and x86-64.

Do this by combining *pseudo-atomic-{atomic,interrupted}* into
a single variable, *pseudo-atomic-bits*, which is a fixnum
bitmask where bit 0 denotes atomic-ness and bit 1 denotes
* Change genesis to initialize this variable properly (this
didn't need to be done for the old variables because the
allocation sequences would set them upon entrance);
* Modify functions and macros accessing pseudo-atomic variables
to reflect the new state of the world;

2006-09-13 17:30:28 View
Older >