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.
* fixed bug #345: don't set the escaped flag to NIL on x86 in COMPUTE-CALLING FRAME if we have no code from FIND-ESCAPED-FRAME. Add tag-bytes to undefined_tramp and closure_tramp on x86 like others. * partial fix for #61: instead of throwing no-debug-info conditions, return a "no debug information for frame" bogus-debug-fun from debug-fun-from-pc. * Two new BUGS entries about backtraces. * Tests. (debug.impure.lisp now passes on sparc as well, but only because one test now axxepts the XEP in lieu of the function on sparc and x86.