Skip to content
Snippets Groups Projects
  1. Nov 12, 2002
  2. Aug 27, 2002
    • moore's avatar
      · bf84be07
      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.
      bf84be07
  3. Apr 07, 2002
    • pmai's avatar
      Change the new FASL format code to use a new FOP for the long version · 8ccaec4f
      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.
      8ccaec4f
  4. Mar 31, 2002
    • pw's avatar
      From Eric Marsden: · 9792d475
      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.
      `----
      9792d475
  5. Oct 16, 2001
  6. May 30, 2001
    • pw's avatar
      When LOAD calls MERGE-PATHNAMES on its input file, use :default-version · 76b3e3c2
      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.
      76b3e3c2
  7. May 02, 2001
  8. Apr 11, 2001
  9. Apr 10, 2001
    • pw's avatar
      From Ray Toy: · 1abb4762
      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.
      1abb4762
  10. Apr 07, 2001
  11. Mar 04, 2001
  12. Feb 25, 1999
  13. Jul 24, 1998
  14. Jul 14, 1998
    • pw's avatar
      This revision merges in many of the fixes for ANSI condition types · 42efe00d
      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.
      42efe00d
  15. May 04, 1998
    • dtc's avatar
      Gray streams support: · 6c21ff8a
      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.
      6c21ff8a
  16. Mar 21, 1998
  17. Mar 01, 1998
  18. Jan 16, 1998
  19. Nov 07, 1997
  20. Nov 01, 1997
    • dtc's avatar
      Improved support for (complex single-float) and (complex double-float) · 4c3b1bb6
      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.
      4c3b1bb6
  21. Aug 23, 1997
    • pw's avatar
      I just finished making load-foreign work on SGIs, along with fixing calling of · efd9aa3b
      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...
      efd9aa3b
  22. Jun 11, 1997
  23. Apr 01, 1997
    • dtc's avatar
      Support for some specialised signed array types: (signed-byte 8), · d5d4504f
      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.
      d5d4504f
  24. Feb 11, 1997
  25. Feb 05, 1997
  26. Jan 18, 1997
  27. Nov 04, 1994
  28. Oct 31, 1994
  29. Oct 20, 1994
  30. Oct 19, 1994
  31. Aug 19, 1993
  32. May 26, 1993
  33. May 11, 1993
  34. Mar 01, 1993
  35. Feb 26, 1993
  36. Jan 23, 1993
  37. Jan 15, 1993
Loading