[Git][cmucl/cmucl][rtoy-mmap-anon-control-and-binding-stacks] 13 commits: Support asdf's static-image-op.

Raymond Toy rtoy at common-lisp.net
Sun Oct 11 22:38:41 UTC 2015


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


Commits:
43e24775 by Raymond Toy at 2015-10-11T15:38:24Z
Support asdf's static-image-op.

* src/lisp/GNUMakefile
    * Don't add exec-final.o to lisp.a.  (But still remove exec-init.o
      from it.)
* src/tools/linker.sh
    * When linking the executable, need to link exec-final.o too.
* bin/make-main-dist.sh
    * Need to install exec-init.o and exec-final.o.  exec-init.o is
      needed to link a normal lisp; exec-final.o is used for the
      executable image.
    * Fix modes on some installed files.  exec-init.o, exec-final.o,
      and lisp.a don't need to be executable.

- - - - -
c49d87c7 by Raymond Toy at 2015-10-11T15:38:24Z
Exit with the return code from obj_run_linker.

obj_run_linker() returns the return code from the call to system().
Exit lisp with this return code to indicate if running the executable
linker script worked or not.

- - - - -
c614c412 by Raymond Toy at 2015-10-11T15:38:24Z
Include the exit code when printing the process structure.

It's really nice to see the exit code of the process when printing out
the process structure.

Fix a typo too: "tings" -> "things".

- - - - -
7c199b29 by Raymond Toy at 2015-10-11T15:38:24Z
Use correct path for git clone.

Noticed by Joram Schrijver who gave the correct path.

- - - - -
776f7f63 by Raymond Toy at 2015-10-11T15:38:24Z
Use PRINT-UNREADABLE-OBJECT to print the process structure.

- - - - -
c415308a by Raymond Toy at 2015-10-11T15:38:24Z
Give hint on what the last value of the printed process is

Left this out in the previous commit.

- - - - -
3e5e8ebb by Raymond Toy at 2015-10-11T15:38:24Z
Remove -mmacosx-version-min=10.5

When making an executable on some random machine, we can't depend on
the user having the 10.5 SDK around.  So remove the flag, but add
-Wl,-no_pie to suppress the warning about PIE disabled due to absolute
addressing.

- - - - -
1a3f83f6 by Raymond Toy at 2015-10-11T15:38:24Z
Update version so bootfiles are loaded from the dir

- - - - -
de896d6e by Raymond Toy at 2015-10-11T15:38:24Z
Add new release notes file for 21b.

- - - - -
46d1d014 by Raymond Toy at 2015-10-11T15:38:24Z
Add some comments.

MIN_VER requires the 10.5 SDK be available.
Add -Wl,-no_pie to turn off warning (and add comment).

- - - - -
16fbb323 by Raymond Toy at 2015-10-11T15:38:24Z
Cleanup.

Remove old comment, and remove the min OSX version on ppc too.

- - - - -
00bb8d4e by Raymond Toy at 2015-10-11T15:38:24Z
Disassemble BREAK inst as INT3.

The break inst is really the int3 instruction, so disassemble it as
int3.

- - - - -
33cb8d6c by Raymond Toy at 2015-10-11T15:38:24Z
Change disassembly to use .byte and .word instead of byte and word
when printing random bytes and words.

- - - - -


11 changed files:

- BUILDING
- bin/build.sh
- bin/make-main-dist.sh
- src/code/run-program.lisp
- src/compiler/disassem.lisp
- src/compiler/x86/insts.lisp
- + src/general-info/release-21b.txt
- src/lisp/Config.x86_darwin
- src/lisp/GNUmakefile
- src/lisp/save.c
- src/tools/linker.sh


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)
 



View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/1d8db41a003ab622e274078f0e7878bfc04dfa07...33cb8d6cd378f516486c128367dbb257b6de2134
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cmucl-cvs/attachments/20151011/ec91da92/attachment-0001.html>


More information about the cmucl-cvs mailing list