[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