* 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.
Fix two bugs relating to dlerror() in the OS X dl* shim: * dlerror() should return NULL when there is no error * dlerror() should return an error when dlsym() returns NULL Also, fix a call to cerror with only one argument. Restores support for OS X 10.2 "Jaguar": * Use a header file with constants for the dl* shim instead of the OS dlfcn.h, which doesn't exist under 10.2 and does under 10.3 * Include a fake nl_langinfo which returns a codeset of UTF-8 unless neither LC_CALL or LANG are set to C. OS X uses UTF-8 everywhere, so this is arguably the right behavior.
Reinstate fixnum arithmetic when possible by defining modular arithmetic mechanisms for (UNSIGNED-BYTE 29) ... this feels like a big, ugly hack, since the compiler is (presumably) smart enough to do this when modular arithmetic was not present; ... move some EVAL-WHEN macros into a MACROLET while we're at it; ... builds and passes tests on x86/Linux; will probably build properly on other platforms, but will fail tests in (at least) tests/arith.pure. These test failures seem harmless enough and will be fixed in another revision or two.
* Use %COERCE-NAME-TO-FUN, not FDEFINITION for evaluation of FUNCTION. * (SETF MACRO-DEFINITION) must accept NIL environments (reported by Kalle Olavi Niemitalo) * Also record a bunch of PCL/MOP bugs reported by Bruno Haible. Note: there are still more bugs reported by him on the mailing list.
* If a foreign symbol is unknown, use an address on a protected page for it: all accesses there are trapped, and signal UNDEFINED-ALIEN-ERROR. (Currently the error doesn't reveal the name of the alien that was accessed.) * Make GET-DYNAMIC-FOREIGN-SYMBOL-ADDRESS keep track of both undefined aliens and dynamic foreign symbols in general. * Fix linkage-table reinitialization bug on threaded platforms, reported by Sean Ross. * Better restarts for realoding shared objects, and CONTINUE restarts for *save-hooks* and *init-hooks*. * Accurate alien warning for SAVE-LISP-AND-DIE on non-linkage-table platforms. HEALTH WARNING: Tested on x86/FreeBSD only, but "should be fine".
* Don't resignal errors from macroexpansion before calling error. Users that care should be hooking onto *macroexpand-hook* and handling things there.