- Nov 12, 2002
-
-
toy authored
not an SAP.
-
- Aug 27, 2002
-
-
moore authored
On x86 FreeBSD and Linux, change the way foreign symbol addresses are resolved. They now go through a table -- effectively a new space in the core file. Function references are resolved lazily, data references are resolved on startup and when a .so is loaded. The end result is that cores can be dumped that contain references to symbols in shared libraries. Also, the dependence of the core on addresses in the Lisp runtime is broken. The linkage table feature is controlled by :linkage-table and LINKAGE_TABLE in C runtime. Several foreign symbols are now Lisp static symbols, so a cross compile is required whether or not the new stuff is used. I've checked in boot4-cross-foreign-linkage.lisp that builds the compiler for linkage table; do whatever you usually do for the non-linkage table case:) Seriously, lets start a discussion on standardizing "cross compilation," not to mention the general build procedure.
-
- Apr 07, 2002
-
-
pmai authored
number, retaining the old FOP for short (one byte) version numbers. This enables old lisp versions to gracefully fail on new FASLs (reporting an unknown FOP), and new lisp versions to gracefully fail on old FASLs (reporting a version mismatch), yet still allowing the user to safely proceed from that error.
-
- Mar 31, 2002
-
-
pw authored
- change the FASL file format to store fasl-file version as uint32, rather than a single octet. This requires small changes to the FASL dumper and two FOP functions - change the FASL-FILE-FORMAT to #x18d for each of the backends - change the byte-code version number to #x18d - make the FASL file version checking errors continuable - add a variable CL::*SKIP-FASL-FILE-VERSION-CHECK* that avoids the version check - add a bootfile that bootstraps this change Loading an old FASL file results in the following behaviour: ,---- | Error in function COMMON-LISP::CHECK-VERSION: | #<Stream for file "/usr/local/lib/cmucl/lib/subsystems/defsystem-library.x86f"> | was compiled for fasl-file version 3E3F02, but this is version 18D | Restarts: | 0: [CONTINUE] Load #<Stream for file "/usr/local/lib/cmucl/lib/subsystems/defsystem-library.x86f"> anyway | 1: Return NIL from load of #p"modules:defsystem-library". | 2: Return NIL from load of "home:.cmucl-init". | 3: [ABORT ] Skip remaining initializations. `----
-
- Oct 16, 2001
-
-
toy authored
o Add :external-format option to LOAD, as specified by ANSI. Doesn't do anything currently.
-
- May 30, 2001
-
-
pw authored
of NIL so as to not gratuitously tack on a :newest version attribute. This lets eg (load "HOST:FILE.LISP") work when no explicit version translation is supplied. So far, this seems like the "Right Thing To Do" and seems compatible with other implementations.
-
- May 02, 2001
-
-
toy authored
pathname types for object files. o Modified load to search for possible fasl file types for logical pathnames just as it does for physical pathnames. (But source files are still only searched using LISP type.)
-
- Apr 11, 2001
-
-
pw authored
-
- Apr 10, 2001
-
-
pw authored
ANSI CL says LOAD takes an :external-format keyword to specify the format of the file or stream being loaded. CMUCL already had the :contents keyword that does this, but its default was nil instead of :default. The appended patch replaces :contents with :external-format. This will break any code that uses :contents. Ray Changelog: code/load.lisp, compiler/fndb.lisp Replace :contents option to LOAD with :external-format, for ANSI CL conformance.
-
- Apr 07, 2001
-
-
pw authored
by Kalle Olavi Niemital.
-
- Mar 04, 2001
-
-
pw authored
-
- Feb 25, 1999
-
-
pw authored
It is a benign revision as no structures are redefined. At some later point the definitions in compiler/objdef could be removed, perhaps in sync with some other type change.
-
- Jul 24, 1998
-
-
dtc authored
remove unnecessary conditionals.
-
- Jul 14, 1998
-
-
pw authored
in various calls to ERROR. Those easily handled by using new condition types simple-file-error and simple-program-error are included. The only functional change here is that the function CHARACTER no longer accepts an integer argument so as to be ANSI compliant. This may break some code.
-
- May 04, 1998
-
-
dtc authored
* Rename the 'stream structure class to sys:lisp-stream. * Add a new none hierarchical 'stream built-in class which inherits from: instance, t. * Hack in the new stream class as a mixin for the structure base lisp-stream class which now inherits from: stream, structure-object, instance, t. * Add a new 'fundamental-stream standard-class which includes 'stream as a mixin, and add PCL hacks to allow this to be redefined after PCL is loaded to be (defclass fundamental-stream (standard-object stream) ...). * Add appropriate support to the base stream functions to dispatch to the Gray stream functions for the handling of fundamental-streams. Some of the lisp-streams encapsulating CLOS streams still need a little work.
-
- Mar 21, 1998
-
-
dtc authored
-
- Mar 01, 1998
-
-
dtc authored
-
- Jan 16, 1998
-
-
dtc authored
of heap corruption and to try and handle return address on the stack. Enhance new-genesis to save the code fixups for x86 code objects allowing the code to be placed in the dynamic heap and thus garbage collected by purify.
-
- Nov 07, 1997
-
-
dtc authored
-
- Nov 01, 1997
-
-
dtc authored
types. Adds storage classes to the backend for these so they can be stored in registers or on the stack without consing; new primitive types etc. Also adds (simple-array (complex {single,double}-float)) array types to avoid consing and speed vectors operations. All these changes are conditional on the :complex-float feature. More work is needed to exploit these changes: improving the type dispatch in the various function; maybe compiler transforms or more VOPs to handle common functions inline.
-
- Aug 23, 1997
-
-
pw authored
foreign functions taking floating-point arguments after integer arguments but before the fourth argument (more or less; mips has unusual C calling conventions), and making cmucl work on IRIX 6.2 on the Onyx (where the system page size has changed). I've included the patches below, along with some discussion of the changes and a couple of problems with cmucl's interaction with dynamic loading. Also, there's a misc change to make ioctls work (I'm not sure for what version the released code worked, but it doesn't work on anything I have). The patches do not fix the R10000; cmucl continues to not work on it (O2 and Octane). The fixes make cmucl on the sgi use shared libraries so it can use dlopen et al in load-foreign; this is based on the solaris implementation. The problem with this is that the addresses of foreign variables are included directly in the dumped lisp image (without relocation on loading), which might result in a problem if cmucl is run with newer shared libraries than those it was compiled and dumped with. As far as I can tell, for the SGI at least, this does not affect function calls because the addresses used (and included in the dumped image) are those of stub routines that jump to the actual routines, thus are located in the executable proper rather than in the shared libraries, and so shouldn't be changed by a new version of the shared library. Unfortunately, this is not the case for global variables. Fortunately, there appear to only be two foreign variables used by cmucl in any of its system code winding up in the dumped image: errno and tzname. Apparently, Solaris relocates data references in dsos to match the program, while IRIX relocates data references in the program to match the dso. Thus, on Solaris, you don't need to do anything special for cmucl to work with a newer runtime libc, but on IRIX it gets the wrong value of errno and tzname. Unfortunately, the address of errno is different between irix 6.2, 6.3, and 6.4 (all of which we have to have because SGI doesn't have a single cross-platform OS version yet), which would require a different lisp.core for each machine (you just need to run mk-lisp, not recompile) if it weren't for the hack below. But fortunately again, a lisp compiled for one version seems to be able to run on another version well enough to generate the new lisp.core (presumably the worst that would happen is that error messages could be confusing). It would be really nice to avoid this problem. Perhaps some kind of relocation table could be added to the dumped image format? I don't know enough about the system to know how possible or ridiculous that suggestion is, unfortunately. Is the Solaris behavior guaranteed to be the same in future releases? If not, or if any other platforms have the irix behavior, this might become a more general problem. In the meantime, we use a hack: we *define* errno in undefineds.c rather than just referencing it; this results in warnings from the linker, but it resolves the conflict in favor of the definition in the program, relocating libc to match, thus fixing this problem for errno. The other global variables, tzname et al, can't be fixed this way as easily because they're listed as weak symbols, essentially aliases for the real symbol, so redefining them wouldn't cause libc to reference the new version. Thus, as long as you don't use tzname, there's no problem right now (although there may be if any other library global variables are used in cmucl in the future). The definition of tzname is in a progn preceeded by a comment which says not to use it, so hopefully it's not in fact used and therefore not a problem. These patches have been tested on an R5000 O2 running irix 6.3 and a dual R4400 Onyx running irix 6.2. A previous version of these patches (for 17f) was tested on the onyx when it was running 5.3 (I think, maybe 5.2). The patches here are from the main branch of the CVS tar as of August 13. Incidentally, it was quite painful figuring out how to compile and bootstrap the current sources under the distributed irix 18a binary, even without trying :new-random or :signed-array (which I haven't tried to do yet); it might be nice to put a newer binary up...
-
- Jun 11, 1997
-
-
dtc authored
bytes to read for (simple-array (signed-byte 30)).
-
- Apr 01, 1997
-
-
dtc authored
(signed-byte 16), (signed-byte 30), (signed-byte 32). These patches include the general support and the x86 backend support; more to follow. The important changes are conditional on the :signed-array feature so shouldn't affect the source without this feature. This work has been driven by Raymond Toy.
-
- Feb 11, 1997
-
-
dtc authored
x86 hack is no longer needed.
-
- Feb 05, 1997
-
-
pw authored
-
- Jan 18, 1997
-
-
ram authored
-
- Nov 04, 1994
-
-
ram authored
fop-foreign-fixup instead of duplicating code (erroneously in the case of Solaris.)
-
- Oct 31, 1994
-
-
ram authored
-
- Oct 20, 1994
-
-
ram authored
-
- Oct 19, 1994
-
-
ram authored
-
- Aug 19, 1993
-
-
wlott authored
-
- May 26, 1993
-
-
wlott authored
-
- May 11, 1993
- Mar 01, 1993
-
-
ram authored
the file exists as specified, then look at the header instead of trying to default the type. If :CONTENTS is specified, then don't try defaulting types.
-
- Feb 26, 1993
-
-
ram authored
-
- Jan 23, 1993
-
-
ram authored
-
- Jan 15, 1993
-
-
ram authored
-