Switch branches/tags
Commits on Jun 30, 2010
  1. win32: Fix foreign function name conversion.

    Alastair Bridgewater
    Alastair Bridgewater committed Jun 30, 2010
      * In, the win32 case for foreign function names was
    accidentally removed when the darwin/dlshim case (the same case)
    was removed.  Re-added the win32 case.
Commits on Jun 27, 2010
  1. Fix to use absolute paths when necessary.

    Alastair Bridgewater
    Alastair Bridgewater committed Jun 27, 2010
      * The new ASDF 2 requires absolute paths in places where SBCL
    historically used relative paths.  The last(?) remaining place
    where this happens is the SBCL_HOME environment variable set up
    by  Fixed by introducing a readlink -f to generate
    an absolute path to the base SBCL directory.
Commits on Jun 26, 2010
  1. "upgrade" to ASDF 2.003

    Cyrus Harmon
    Cyrus Harmon committed Jun 26, 2010
Commits on Jun 24, 2010
  1. more ASDF2 cleanup

    Cyrus Harmon
    Cyrus Harmon committed Jun 24, 2010
     * update the asdf README and texinfo documentation
     * update asdf license
     * fix pulling documentation from upstream
Commits on Jun 23, 2010
  1. more asdf logical pathname cleanup

    Cyrus Harmon
    Cyrus Harmon committed Jun 23, 2010
     * use #p"..." for logical pathnames instead of 1) just "" or
       #.(logical-pathname "...")
Commits on Jun 22, 2010
  1. asdf2 merge from upstream

    Cyrus Harmon
    Cyrus Harmon committed Jun 22, 2010
     * replaced asdf.lisp with asdf.lisp 2.102
     * wrap logical pathname in sb-rotate-byte with #.(logical-pathname ...)
Commits on Jun 20, 2010

    Tobias C. Rittweiler
    Tobias C. Rittweiler committed Jun 20, 2010
  2. Reduce stress level of sb-concurrency tests.

    Tobias C. Rittweiler
    Tobias C. Rittweiler committed Jun 20, 2010
    Reduce the stress level of the MAILBOX tests by a factor of 10.
      a) As contrib tests are run as part of a normal SBCL build, the
         mailbox tests are executed each time SBCL is built. And they
         really result in a few minutes of 100% cpu usage and high load
         averages because of many simultaneously running threads.
      b) On BSD platforms, the tests were reported several times in past
         to fail. From what I'm told (and if I remember correctly), the
         issue is, however, not necessarily concurrency bugs, but a
         coarser SLEEP granularity than on Linux platform.
Commits on Jun 14, 2010
  1. tls-slot allocation not thread-safe

    cracauer committed Jun 14, 2010
    Committing James Knight's patch from
    Tested on amd64 and x86 with same failures before and after.
    It seems as though the ALLOC-TLS-INDEX-IN-* code is not thread-safe. I
    cannot figure out how it's not thread-safe, because it looks correct
    to me, so far as I can see.
    But this test case shows that it's not.
    sbcl --eval '(load (compile-file "thread-test.lisp"))' --eval "(run-test)" --eval "(quit)"
    It will fail with something like:
       The assertion (BOUNDP '*VAR50*) failed.
    The variable number will vary randomly, of course.
    SBCL Debian Linux 2.6.32-amd64, x86-64.
    Okay, turns out to be an utterly trivial problem. This is the
    disassembly of SB-VM::ALLOC-TLS-INDEX-IN-RAX. See instructions
    0x20000f42 and 0x20000f47. You can't use %rax as the new value and the
    compare-to value for cmpxchg! So, the lock was never actually
    taken. The variants for allocating in everything else worked
    fine. Just RAX is broken.
    0x20000f38: mov %rbp,0xb8(%r12)
    0x20000f40: push %rcx
    0x20000f41: push %rax
    0x20000f42: mov $0x1,%eax
    0x20000f47: xor %eax,%eax
    0x20000f49: lock cmpxchg %rax,0x20100b88
    0x20000f53: jne 0x20000f42
    0x20000f55: pop %rcx
    0x20000f56: mov 0x21(%rcx),%rax
    0x20000f5a: or %rax,%rax
    0x20000f5d: jne 0x20000f8d
    0x20000f5f: mov 0x20100b48,%rax
    0x20000f67: cmp $0x8000,%rax
    0x20000f6d: jl 0x20000f80
    0x20000f6f: movq $0x0,0xb8(%r12)
    0x20000f7b: jmpq 0x20001874
    0x20000f80: addq $0x8,0x20100b48
    0x20000f89: mov %rax,0x21(%rcx)
    0x20000f8d: xor %ecx,%ecx
    0x20000f8f: xchg %rcx,0x20100b88
    0x20000f97: pop %rcx
    0x20000f98: xor %rbp,0xb8(%r12)
    0x20000fa0: je 0x20000fa4
    0x20000fa2: int3
    0x20000fa3: 0x09
    0x20000fa4: ret
Commits on Jun 13, 2010
  1. GIT GATEWAY: Remove files that were deleted in 2006.

    antifuchs committed Jun 13, 2010
    These file removals were never picked up, probably due to a git bug.
    The changes corresponding to these file deletions are:
      * b66385e (
        - src/compiler/ir1-step.lisp
      * 28ed41e
        - src/runtime/ppc-darwin-{langinfo,dlshim}.[ch]
        - src/runtime/x86-darwin-langinfo.c
    Thanks to Cyrus Harmon for alerting me to this issue.
  2. delete all traces of the darwin dlshim

    Cyrus Harmon
    Cyrus Harmon committed Jun 13, 2010
     * following up on previous commits which still used the shim with the
       :dlshim feature, now completely remover all traces of the dlshim.
  3. prepend an underscore to ldso stubs

    Cyrus Harmon
    Cyrus Harmon committed Jun 13, 2010
     * a leading underscore keeps the cross-compiling linker happy
       and matches the way we do things on x86oid darwins.
Commits on Jun 12, 2010
  1. restore darwin/ppc building

    Cyrus Harmon
    Cyrus Harmon committed Jun 12, 2010
     * fix ldso stubs to work without the dlshim
     * hack to avoid calling dlclose on the main executable
       for darwin/ppc
  2. remove darwin-langinfo

    Cyrus Harmon
    Cyrus Harmon committed Jun 12, 2010
     * remove darwin-langinfo.c/h from Config.*-darwin and
     * revert explicit setting of *default-c-string-external-format* to
       latin-1 in sb-posix test.
  3. fix readdir for :inode64 builds

    Cyrus Harmon
    Cyrus Harmon committed Jun 12, 2010
     * readdir now calls readdir$INODE64 when buildling with :inode64
       (launchpad bug #592897)
Commits on Jun 11, 2010
  1. cleanup sb-posix tests for darwin

    Cyrus Harmon
    Cyrus Harmon committed Jun 11, 2010
     * check for the error codes darwin gives back
     * use :latin-1 for *default-c-string-external-format* in readdir test
Commits on Jun 6, 2010
  1. improvements to the manual

    csrhodes committed Jun 6, 2010
    These improvements mainly centre around better indexing, including
    some nifty trickery to get suitably collated and aligned index
    entries (to cope with issues like *earmuffs* and sb-foo package
    prefixes).  This patch also incorporates work by Robert Goldman to
    document the commands for enabling and disabling the debuggers.
    The remainder of this log message is a squashed version of my git
    branch's log messages:
    improve text relating to my support availability
    Remove a stray comma in instructions for signal-related bug reporting
    Patch from Robert Goldman for enable/disable-debugger documentation
    trick texinfo's collation engine into producing a better index
    The issue is that the sort order and what is printed (both in the
    index and as the title of a definition entry) are deeply tied together
    in texinfo, and there's no obvious way short of rewriting lots of TeX
    code to undo that.  There is one get-out clause, though: texinfo
    macros are replaced by their arguments.  So define a number of macros
    which hide from the collation engine things that we would rather not
    play a part in the sorting (package names, "(setf", *earmuffs*)
    In the process, note that @deffoo in texinfo automatically produces an
    index entry, so get rid of the apparently redundant extra index
    entries produced by docstrings.lisp
    Mostly move to using the new indexing helper macros
    Only mostly: there are a few remaining issues.  The first is
    declarations, which are treated as types; I think they might warrant
    their own index; similarly, various commands (debugger, inspector)
    aren't really functions.  Hardest of all is the ffi chapter, which has
    handwritten function documentation which is highly similar to but not
    exactly the same as the docstrings for those operators; it would be
    good to merge the documentation into the docstrings, include the
    autogenerated texinfo snippets into the manual, and thereby gain
    complete consistency.
    add some index entries from the efficiency chapter
    ... because why not?
    manually (!) change the entries for FFI-related functions and macros
    Making the docstrings match the text match reality is an exercise for
    the future.
    make index in info form mostly work
    info readers apparently parse the formatted index to work out where to
    go.  This is hilariously bad if the index entries contain colons, so
    define macros conditional on output format to make sure that they
    don't in info.
    better, more useful indexes
    Now that collation is sorted (!), getting the display of index entries
    to be useful is important.  This not-quite-general trick is to make
    the package name as small as possible, have the colon always in the
    same horizontal position, and arrange that the package name extends at
    most three characters ("sb-") into the left margin.  This is the most
    tolerable I can find.
    Continue not having package information at all in info format; in
    other formats, place the package information after the symbol name.
    This probably goes wrong in corner cases like
    (setf sb-mop:symbol-value-using-class)
    deal with remaining manually-documented functions
    make documentation for declarations consistent
    Arbitrarily decide that declarations belong in the function index
    rather than the type index; use the package prefix texinfo macros to
    get them properly indented.
    One more manually-documented thing which needed a package macro decoration
    Fix the nopkg{} macro to align index entries in TeX mode
    Use it for debugger commands.
  2. Inline-compare more character codes on SB-UNICODE PPC.

    Alastair Bridgewater
    Alastair Bridgewater committed Jun 6, 2010
      * In, I disabled the -c character compare VOPs on SB-UNICODE
    because the instruction used (cmplwi) was limited to a 16-bit constant.
      * Added a predicate to determine if a character can safely be used in
    the -c character compare VOPs.
      * Changed the required constant type on the -c character compare VOPs
    from CHARACTER to (SATISFIES <the-new-predicate>).
      * Back in the commit comment for I said that there was no
    good way to conditionally use the VOPs.  Looks like I was wrong, unless
    you want to argue that SATISFIES types are bad.

    Alastair Bridgewater
    Alastair Bridgewater committed Jun 6, 2010
      * SIGNAL-CONTEXT-FRAME (debug-int.lisp) was passing a bogus
    parameter to COMPUTE-CALLING-FRAME on non-x86oids, causing an
    unknown immediate object to be constructed.  Fixed, and KLUDGEd
    to still work on x86oids.
      * fun_end_breakpoint_guts (ppc-assem.S) wasn't implemented at
    all, just stubbed out to provide the symbols that the core looks
    for when compiling MAKE-BOGUS-LRA (debug-int.lisp).
      * The implementation of fun_end_breakpoint_guts on non-PPC is
    sparsely explained at best.  Addressed in the new PPC version.
      * The usual implementation of fun_end_breakpoint_guts leaves
    setting the LRA header data to MAKE-BOGUS-LRA but this is done
    after attempting to create the LRA object, which fails on GENCGC
    systems due to the sanity checking of the pointer.  On PPC, this
    is addressed by setting the LRA header data by dead reckoning in
      * In MAKE-BOGUS-LRA, don't bother setting the LRA header data
    if it is known to already be correct.
  4. valid_lisp_pointer_p() is gencgc-specific, not x86oid-speci…

    Alastair Bridgewater
    Alastair Bridgewater committed Jun 6, 2010
      * Changed SB-KERNEL:MAKE-LISP-OBJ (src/code/debug-int) to use
    valid-lisp-pointer-p on all gencgc targets, not just x86oids.
      * Changed valid_lisp_pointer_p() (src/runtime/gencgc.c) to build on
    all targets, not just x86oids.
      * Added a special-case to looks_like_valid_lisp_pointer_p() to
    correctly handle LRA objects (RETURN_PC_HEADER_WIDETAG) on non-x86oid
    targets (though, really, we probably should have an :IMPLICIT-LRA
    feature for this sort of nonsense).
  5. Initial attempt to make breakpoints work on PPC.

    Alastair Bridgewater
    Alastair Bridgewater committed Jun 6, 2010
      * The actual breakpoint trap instruction was wrong, acting as a
    NOP instead of trapping.  Fixed.
      * A bit of cleanup and fixes surrounding setting up breakpoints
    and dealing with after-breakpoints.
      * An initial implementation of the clever part of
      * Added a couple of new arch-os-specific functions to find the
    parts of the context required for arch_do_displaced_inst().  Stubbed
    out for darwin and bsd, probably broken on GLIBC231_STYLE_UCONTEXT
    linux systems.
      * Everything beyond fixing the breakpoint trap instruction not
    actually tested, because it turned out that the entire breakpoint
    system is broken on all non-x86oid targets, due to something in
Commits on Jun 3, 2010
  1. fix build on non-darwin and ppc/darwin platforms

    Cyrus Harmon
    Cyrus Harmon committed Jun 3, 2010
      * fix conditional include of langinfo.h
      * conditionalize the darwin/ppc Config file for :dlshim
  2. support building on darwin x86 and x86-64 without the dlshim

    Cyrus Harmon
    Cyrus Harmon committed Jun 3, 2010
      * x86 config -mmacosx-version-min cleanup
      * remove dlshim feature in
      * 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
      * add :dlshim feature for darwin in 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
Commits on May 30, 2010
  1. Fix symbol-name-conflict resolution test from

    Alastair Bridgewater
    Alastair Bridgewater committed May 30, 2010
      * Before signalling a name-conflict in IMPORT due to a symbol found
    previously on the arglist, remove the earlier symbol from the list of
    symbols to add to the package (one or the other will be shadowing-imported,
    and there's no further check for name collision.
  2. Test case for symbol-conflict resolution bug on import.

    Alastair Bridgewater
    Alastair Bridgewater committed May 30, 2010
      * If two symbols of the same name are IMPORTed to a package that does
    not yet have a symbol of that name accessible, and the latter of the two
    symbols is chosen during conflict resolution, the former is also added
    to the package, as is detectable via do-symbols.
Commits on May 29, 2010
Commits on May 24, 2010
  1. Fix FP traps on PPC/Linux.

    Alastair Bridgewater
    Alastair Bridgewater committed May 24, 2010
      * Linux on most platforms, including PPC, kicks off its signal
    handlers with a cleared FP control word.  We already have a hook to deal
    with this, so enable it.
      * The implementation of said hook on PPC/Linux was broken, largely due
    to a variable-size mismatch in a KLUDGE it uses.  Fixed and documented
    the KLUDGE, added support for preserving the current rounding mode, and
    enabled the actual restoration of the FP control word.
      * NetBSD isn't the only target which requires :INVALID exceptions to
    be disabled, it also matters on PPC.  Fixed the default control mode.
      * Fix up the test suite to reflect the current expectations for
    float.pure.lisp tests.
Commits on May 23, 2010
  1. Enable floating-point exception delivery on PPC/Linux.

    Alastair Bridgewater
    Alastair Bridgewater committed May 23, 2010
      * For some reason, Linux disables floating-point exception delivery
    by default.  Use the PR_SET_FPEXC prctl (new in 2.4.21 and 2.5.32) to
    enable it in "precise" mode (possibly overkill).
      * This is necessary but not sufficient to fix one of the failing
    tests in float.pure.lisp.
      * Given that this is only necessary for one test case, the test
    suite has woefully incomplete coverage of floating-point exceptions.
  2. Support for building on OpenBSD/PPC (patch by Josh Elsasser).

    Alastair Bridgewater
    Alastair Bridgewater committed May 23, 2010
      * Dynamic space assignments.
      * New Config.* makefile fragment.
      * OpenBSD-specific support in ppc-arch.c and ppc-bsd-os.c
      * Fixed test suite issues relating to OpenBSD/PPC.  This was that the
    foreign stack alignment needed setting and that OpenBSD, unlike other
    PowerPC targets, requires -fPIC in CFLAGS when building shared objects.
      * It turns out that os_context_sp_addr() in ppc-bsd-os.c is only used
    when ARCH_HAS_STACK_POINTER is set, which only occurs on x86oid systems
    at the present time.
Commits on May 21, 2010
  1. Integer callback result fixes.

    Alastair Bridgewater
    Alastair Bridgewater committed May 21, 2010
      * Callback results should be typechecked based on their declared
    type, but stored as if they were the full width of a machine register.
      * Fixed sb-alien::alien-callback-lisp-wrapper-lambda to make this
    happen properly.
      * Updated corresponding tests (formerly callback.impure.lisp /
    sign-extension and underflow-detection) to cover 16-bit cases, which
    would have broken on all targets, not merely 64-bit targets.
      * As a minor side note, assistance in testing the changes in
    was provided by one Andreas Selfjord Eriksen, but I forgot to note this
    fact in the commit message.  Mea Culpa.
Commits on May 20, 2010
  1. Test suite cleanups.

    Alastair Bridgewater
    Alastair Bridgewater committed May 20, 2010
      * Changed the impure test runner to be more in line with what used
    to happen when it used fork() instead of RUN-PROGRAM (--noprint and
    --disable-debugger, don't allow RUN-PROGRAM to use the inherit-stdin
    code path).
      * Re-enabled the (RUN-PROGRAM INHERIT-STDIN) test, as it no longer
    hangs on ppc/linux, x86-64/linux, or x86-64/darwin, the platforms
    which prompted the test to be disabled.
      * Fixed the failure mode of dynamic-extent.impure.lisp test case
    HANDLER-CASE-BOGUS-COMPILER-NOTE to fail the test case instead of
    attempting to enter the debugger (due to COMPILER-NOTE not being a
    subclass of ERROR).
      * Disabled the x86-64 SSE floating-point tests on non-x86oid
    platforms due to the use of x86oid-only SB-VM::TOUCH-OBJECT in the
    test code causing a package lock error.
      * Registered all tests that fail on PPC/Linux as :fails-on :ppc.
      * Removed a number of :fails-on clauses that appear to be out of
Commits on May 10, 2010
  1. fix clisp build for ppc

    Nathan Froyd
    Nathan Froyd committed May 10, 2010
    LP #576587, thanks to Josh Elsasser for the patch.
Commits on May 6, 2010
  1. Clear higher order bits for SSE operations that don't

    pkhuong committed May 6, 2010
     * SQRTSD, CVT{SS,SD}2{SS,SD} and CVTSI2{SS,SD} leave the high-order
       bits of the result as-is. These are the only (hopefully) operations
       we use that have a single input, so we must explicitly clear out
       the destination register.
     * Probably a performance fix too, as it breaks dependency chains on
       the destination register.
     * The bug was relatively hard to observe. Raymond Toy reported seeing
       and fixing something similar on maxima/CMUCL. Brittle test case
Commits on May 1, 2010
  1. PPC character handling fixes.

    Alastair Bridgewater
    Alastair Bridgewater committed May 1, 2010
      * SAP-REF-32LE referred to SAP-REF-16 instead of SAP-REF-16LE on
    non-x86oid platforms, incorrect for all big-endian targets.
      * The immediate-character MOVE function was using a 16-bit-only
    load instruction, which was insufficient for unicode operation.
      * The -c (constant) character compare VOPs use a compare
    instruction with a 16-bit immediate field.  Disabled on unicode
    (there's no good way to conditionally use them when the code
    point of the constant character fits a signed-byte 16).
      * Cleaned up some external-format.impure.lisp test-cases, adding
    with-test and names as needed.