Raymond Toy pushed to branch rtoy-mmap-anon-control-and-binding-stacks at cmucl / cmucl

Commits:

11 changed files:

Changes:

  • BUILDING
    --- a/BUILDING
    +++ b/BUILDING
    @@ -55,7 +55,7 @@ Setting up a build environment
     
         or, if you want to use the git sources directly:
     
    -    git clone git://common-lisp.net/projects/cmucl/cmucl.git
    +    git clone https://gitlab.common-lisp.net/cmucl/cmucl.git
     
         Whatever you do, the sources must be in a directory named src
         inside the base directory.  Since the build tools keep all
    

  • bin/build.sh
    --- a/bin/build.sh
    +++ b/bin/build.sh
    @@ -39,7 +39,7 @@ ENABLE2="yes"
     ENABLE3="yes"
     ENABLE4="yes"
     
    -version=20f
    +version=21a
     SRCDIR=src
     BINDIR=bin
     TOOLDIR=$BINDIR
    

  • bin/make-main-dist.sh
    --- a/bin/make-main-dist.sh
    +++ b/bin/make-main-dist.sh
    @@ -96,7 +96,9 @@ install -d ${GROUP} ${OWNER} -m 0755 $DESTDIR/${MANDIR}
     install ${GROUP} ${OWNER} -m 0755 $TARGET/lisp/lisp $DESTDIR/bin/
     if [ "$EXECUTABLE" = "true" ]
     then
    -    install ${GROUP} ${OWNER} -m 0755 $TARGET/lisp/lisp.a $DESTDIR/lib/cmucl/lib/
    +    install ${GROUP} ${OWNER} -m 0555 $TARGET/lisp/lisp.a $DESTDIR/lib/cmucl/lib/
    +    install ${GROUP} ${OWNER} -m 0555 $TARGET/lisp/exec-init.o $DESTDIR/lib/cmucl/lib/
    +    install ${GROUP} ${OWNER} -m 0555 $TARGET/lisp/exec-final.o $DESTDIR/lib/cmucl/lib/
         install ${GROUP} ${OWNER} -m 0755 src/tools/linker.sh $DESTDIR/lib/cmucl/lib/
         if [ -f src/tools/$SCRIPT-cmucl-linker-script ]; then
     	install ${GROUP} ${OWNER} -m 0755 src/tools/$SCRIPT-cmucl-linker-script $DESTDIR/lib/cmucl/lib/
    

  • src/code/run-program.lisp
    --- a/src/code/run-program.lisp
    +++ b/src/code/run-program.lisp
    @@ -90,15 +90,18 @@
       output		    ; Stream from child's output or nil.
       error			    ; Stream from child's error output or nil.
       status-hook		    ; Closure to call when PROC changes status.
    -  plist			    ; Place for clients to stash tings.
    +  plist			    ; Place for clients to stash things.
       cookie		    ; List of the number of pipes from the subproc.
       )
     
     (defun %print-process (proc stream depth)
       (declare (ignore depth))
    -  (format stream "#<process ~D ~S>"
    -	  (process-pid proc)
    -	  (process-status proc)))
    +  (print-unreadable-object (proc stream :type t :identity t)
    +    (format stream "~D ~S ~S ~D"
    +	    (process-pid proc)
    +	    (process-status proc)
    +	    :exit-code
    +	    (process-exit-code proc))))
     
     ;;; PROCESS-STATUS -- Public.
     ;;;
    

  • src/compiler/disassem.lisp
    --- a/src/compiler/disassem.lisp
    +++ b/src/compiler/disassem.lisp
    @@ -2470,7 +2470,7 @@
       (declare (type offset num)
     	   (type stream stream)
     	   (type disassem-state dstate))
    -  (format stream "~a~vt" 'BYTE (dstate-argument-column dstate))
    +  (format stream "~a~vt" '.BYTE (dstate-argument-column dstate))
       (let ((sap (dstate-segment-sap dstate))
     	(start-offs (dstate-cur-offs dstate)))
         (dotimes (offs num)
    @@ -2483,7 +2483,7 @@
       (declare (type offset num)
     	   (type stream stream)
     	   (type disassem-state dstate))
    -  (format stream "~a~vt" 'WORD (dstate-argument-column dstate))
    +  (format stream "~a~vt" '.WORD (dstate-argument-column dstate))
       (let ((sap (dstate-segment-sap dstate))
     	(start-offs (dstate-cur-offs dstate))
     	(byte-order (dstate-byte-order dstate)))
    

  • src/compiler/x86/insts.lisp
    --- a/src/compiler/x86/insts.lisp
    +++ b/src/compiler/x86/insts.lisp
    @@ -2105,6 +2105,7 @@
     (define-instruction break (segment code)
       (:declare (type (unsigned-byte 8) code))
       (:printer byte-imm ((op #b11001100)) '(:name :tab code)
    +	    :print-name 'int3
     	    :control #'break-control)
       (:emitter
        (emit-byte segment #b11001100)
    

  • src/general-info/release-21b.txt
    --- /dev/null
    +++ b/src/general-info/release-21b.txt
    @@ -0,0 +1,49 @@
    +========================== C M U C L  21 a =============================
    +
    +[Work in progress]
    +
    +The CMUCL project is pleased to announce the release of CMUCL 21b.
    +This is a major release which contains numerous enhancements and
    +bug fixes from the 21a release.
    +
    +CMUCL is a free, high performance implementation of the Common Lisp
    +programming language which runs on most major Unix platforms. It
    +mainly conforms to the ANSI Common Lisp standard. CMUCL provides a
    +sophisticated native code compiler; a powerful foreign function
    +interface; an implementation of CLOS, the Common Lisp Object System,
    +which includes multi-methods and a meta-object protocol; a source-level
    +debugger and code profiler; and an Emacs-like editor implemented in
    +Common Lisp. CMUCL is maintained by a team of volunteers collaborating
    +over the Internet, and is mostly in the public domain.
    +
    +New in this release:
    +  * Known issues:
    +
    +  * Feature enhancements
    +
    +  * Changes
    +
    +  * ANSI compliance fixes:
    +
    +  * Bugfixes:
    +
    +  * Trac Tickets:
    +
    +  * Gitlab tickets:
    +
    +  * Other changes:
    +
    +  * Improvements to the PCL implementation of CLOS:
    +
    +  * Changes to building procedure:
    +
    +
    +This release is not binary compatible with code compiled using CMUCL
    +21a; you will need to recompile FASL files. 
    +
    +See <URL:http://www.cmucl.org> or
    +<URL:http://trac.common-lisp.net/cmucl> for download information,
    +guidelines on reporting bugs, and mailing list details.
    +
    +
    +We hope you enjoy using this release of CMUCL!
    

  • src/lisp/Config.x86_darwin
    --- a/src/lisp/Config.x86_darwin
    +++ b/src/lisp/Config.x86_darwin
    @@ -2,7 +2,8 @@
     
     include Config.x86_common
     
    -# Compile code that will run on OSX 10.5 (Tiger)
    +# Compile code that will run on OSX 10.5 (Tiger).  This only works if
    +# you have the 10.5 SDK available.
     MIN_VER = -mmacosx-version-min=10.5
     
     CPPFLAGS += -DDARWIN $(MIN_VER) -m32
    @@ -13,7 +14,10 @@ ASFLAGS += -g3 $(MIN_VER)
     UNDEFSYMPATTERN = -Xlinker -u -Xlinker &
     
     OS_SRC += Darwin-os.c mach-o.c
    -OS_LINK_FLAGS = -m32 $(MIN_VER)
    +
    +# Turn off the PIE warning; we know the x86-assem.S is not
    +# relocatable, and we're not going to fix that anytime soon.
    +OS_LINK_FLAGS = -m32 $(MIN_VER) -Wl,-no_pie
     OS_LIBS =
     
     EXEC_FINAL_OBJ = exec-final.o
    

  • src/lisp/GNUmakefile
    --- a/src/lisp/GNUmakefile
    +++ b/src/lisp/GNUmakefile
    @@ -52,21 +52,15 @@ version.o : version.c version
     	$(CC) ${CFLAGS} $(CPPFLAGS) -DVERSION=`cat version` -c $<
     
     lisp: ${OBJS} version.o
    -	$(CC) -g ${OS_LINK_FLAGS} -o ,lisp \
    -		${OBJS} version.o \
    -		${OS_LIBS} -lm
    +	$(CC) -g ${OS_LINK_FLAGS} -o ,lisp $^ ${OS_LIBS} -lm
     	mv -f ,lisp lisp
     
     # Create a library out of all the object files so we can build an
     # executable.  However, we need to remove exec-init.o from the library
    -# and replace it with exec-final.o because exec-final.o sets the
    -# builtin_image_flag to 1 so that the runtime knows the runtime
    -# contains the core sections.
     lisp.a:	version.o ${OBJS} ${EXEC_FINAL_OBJ}
     	$(AR) crs lisp.a ${OBJS} version.o
     ifneq (${EXEC_FINAL_OBJ},)
     	$(AR) d lisp.a exec-init.o
    -	$(AR) r lisp.a ${EXEC_FINAL_OBJ}
     endif
     
     version:
    

  • src/lisp/save.c
    --- a/src/lisp/save.c
    +++ b/src/lisp/save.c
    @@ -254,6 +254,7 @@ save_executable(char *filename, lispobj init_function)
     {
         char *dir_name;
         char *dir_copy;
    +    int rc;
         
     #if defined WANT_CGC
         volatile lispobj *func_ptr = &init_function;
    @@ -365,9 +366,9 @@ save_executable(char *filename, lispobj init_function)
         
         printf("Linking executable...\n");
         fflush(stdout);
    -    obj_run_linker(init_function, filename);
    +    rc = obj_run_linker(init_function, filename);
         printf("done.\n");
         free(dir_copy);
    -    exit(0);
    +    exit(rc);
     }
     #endif
    

  • src/tools/linker.sh
    --- a/src/tools/linker.sh
    +++ b/src/tools/linker.sh
    @@ -92,13 +92,9 @@ case $uname_s in
     	    # Extra stuff.  For some reason one __LINKEDIT segment is
     	    # mapped just past the dynamic space.  This messes things
     	    # up, so we move it to another address.  This seems to be
    -	    # free, at least on 10.5.
    -
    -	    # Also specify the min version. (See Config.x86_darwin for
    -	    # the desired version.)  This gets rid of a PIE warning
    -	    # when creating the executable on 10.8.  (See ticket:112.)
    -
    -	    OPT_EXTRA="-segaddr __LINKEDIT 0x99000000 -rdynamic -mmacosx-version-min=10.5"
    +	    # free, at least on 10.5.  -no_pie is to get rid of the
    +	    # linker warning about PIE.
    +	    OPT_EXTRA="-segaddr __LINKEDIT 0x99000000 -rdynamic -Wl,-no_pie"
     	    OS_LIBS=
     	    ;;
     	powerpc)
    @@ -106,7 +102,7 @@ case $uname_s in
     	    # just after the dynamic space which messes things up, so
     	    # we move it to a diffferent address. The address below
     	    # appears to be free.
    -	    OPT_EXTRA="-segaddr __LINKEDIT 0x99000000 -mmacosx-version-min=10.4 -static-libgcc"
    +	    OPT_EXTRA="-segaddr __LINKEDIT 0x99000000 -static-libgcc"
     	    OS_LIBS="-lSystem -lc -lm"
     	    ;;
           esac
    @@ -139,5 +135,5 @@ trap 'rm -f $OUTDIR/$OPT_IFADDR $OUTDIR/CORRO.o $OUTDIR/CORSTA.o $OUTDIR/CORDYN.
     
     (cd $OUTDIR
     echo "long initial_function_addr = $IFADDR;" > $OPT_IFADDR
    -$CCOMPILER -m32 -o $OUTNAME $OPT_IFADDR $OPT_ARCHIVE $OPT_CORE $RO_ADDR $STATIC_ADDR $DYN_ADDR $OPT_EXTRA $OS_LIBS -lm)
    +$CCOMPILER -m32 -o $OUTNAME $OPT_IFADDR $OPT_ARCHIVE $CMUCLLIB/exec-final.o $OPT_CORE $RO_ADDR $STATIC_ADDR $DYN_ADDR $OPT_EXTRA $OS_LIBS -lm)