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/1d8db41a003ab622e274078f0...