axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] Axiom ia64


From: Camm Maguire
Subject: [Axiom-developer] Axiom ia64
Date: 13 Nov 2006 10:29:20 -0500
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings!  Please excuse -- I am no longer receiving axiom developer
mail due to some spam blockage somewhere.  Have read on the web how
some have difficulty building axiom on ia64.

At present, there are 5 platforms in gcl-2.6.x (hppa, ia64, alpha,
mips, and mipsel) and 2 platforms on gcl-2.7.x (hppa and ia64) which
cannot natively relocate compiled object files.  This means that (load
"foo.o")(si::save-system "bar") will give garbage in bar (perhaps in
should simple be an error.  This is because loads happen via dlopen
and exist outside the heap.  Instead, images must be saved with
compiler::link.  Thus, there are some alternate commands which need
issuing in the axiom build to make this all work.  These are
summarized in the debian/patch.merge file in the debian axiom package.
With these commands, axiom builds on all 12 Debian platforms.


Here is patch.merge.  Note that one can conditionalize the alternate
procedures on #-native-reloc without having to keep track of specific
cpus.  

=============================================================================
--- ./lsp/Makefile.pamphlet.~1.5.~      2005-09-05 18:50:31.000000000 +0000
+++ ./lsp/Makefile.pamphlet     2005-09-20 21:20:10.000000000 +0000
@@ -1012,14 +1012,7 @@
        @echo 1 building ${LSP} ${GCLVERSION}
 
 gcldir: 
-       @echo 2 building ${GCLVERSION}
-       @tar -zxf ${ZIPS}/${GCLVERSION}.tgz
-<<gcl-2.6.7.socket.patch>>
-<<gcl-2.6.7.libspad.patch>>
-<<gcl-2.6.7.toploop.patch>>
-<<gcl-2.6.7.tail-recursive.patch>>
-<<gcl-2.6.7.collectfn.fix>>
-<<gclConfigureMake>>
+       echo '(compiler::link nil "${OUT}/lisp" (format nil "(progn (let 
((*load-path* (cons ~S *load-path*))(si::*load-types* ~S)) (compiler::emit-fn 
t))(when (fboundp (quote si::sgc-on)) (si::sgc-on t))#-native-reloc(setq 
compiler::*default-system-p* t))" si::*system-directory* (quote (list 
#+native-reloc".o" ".lsp"))) "${OBJ}/${SYS}/lib/cfuns-c.o 
${OBJ}/${SYS}/lib/sockio-c.o ${OBJ}/${SYS}/lib/libspad.a")' | gcl
        @echo 13 finished system build on `date` | tee >gcldir
 
 ccldir: ${LSP}/ccl/Makefile
--- ./src/algebra/Lattice.pamphlet.orig 2005-01-04 23:45:59.000000000 +0000
+++ ./src/algebra/Lattice.pamphlet      2005-02-14 18:45:10.000000000 +0000
@@ -39620,13 +39620,14 @@
        @ cp -p ${SRC}/doc/gloss.text ${LIB}
        @ cp -p ${SRC}/doc/topics.data ${MID}
        @ echo rebuilding daase files
-       @ (cd ${MID} ; \
-          echo ')set out le 200' >/tmp/tmp.input ; \
-          echo ')fin' >>/tmp/tmp.input ; \
-          echo '(make-databases "" (QUOTE ("unix")))' >>/tmp/tmp.input ; \
-          echo '(bye)' >>/tmp/tmp.input ; \
-          cat /tmp/tmp.input | ${INTERPSYS} ; \
-          rm -f /tmp/tmp.input )
+       @ (cd ${MID} ; \
+          echo ')set out le 200' >/tmp/tmp.input ; \
+          echo ')fin' >>/tmp/tmp.input ; \
+          echo "#+native-reloc(make-databases \"\" (QUOTE 
(\"unix\")))#-native-reloc(system \"cp ${SRC}/../debian/*.daase ${MID}\")" 
>>/tmp/tmp.input ; \
+          echo '(bye)' >>/tmp/tmp.input ; \
+          cat /tmp/tmp.input | ${INTERPSYS} ; \
+          rm -f /tmp/tmp.input )
+#      @ (cp ${SRC}/../debian/*.daase ${MID})
        @ echo If all went well, go-ahead Mike and do a db-install as well !
 
 db-install:
@@ -39758,7 +39759,8 @@
        @ echo rebuilding databases...
        @ cp ${SRC}/doc/gloss.text ${MID}
        @ cp ${SRC}/doc/topics.data ${MID}
-       @ (cd ${MID} ; echo ')lisp (make-databases "" nil)' | ${INTERPSYS} )
+       @ (cd ${MID} ; echo ")lisp (progn #+native-reloc(make-databases \"\" 
nil)#-native-reloc(system \"cp ${SRC}/../debian/*.daase ${MID}\"))" | 
${INTERPSYS} )
+#      @ (cp ${SRC}/../debian/*.daase ${MID})
 
 check:
        @ echo Checking that INTERP.EXPOSED and NRLIBs are consistent
--- ./src/etc/Makefile.pamphlet.orig    2005-01-30 12:03:12.000000000 +0000
+++ ./src/etc/Makefile.pamphlet 2005-02-14 18:47:16.000000000 +0000
@@ -33,9 +33,10 @@
        @ cp ${SRC}/doc/gloss.text ${INT}/algebra
        @ cp ${SRC}/doc/topics.data ${INT}/algebra
        @ cp ${SRC}/doc/topics.data ${INT}/algebra
-       @ (cd ${INT}/algebra ; \
-           echo ')lisp (make-databases "" nil)' | ${INTERPSYS} )
-       @ cp ${INT}/algebra/*.daase ${MNT}/${SYS}/algebra
+       @ (cd ${INT}/algebra ; \
+           echo ")lisp (progn #+native-reloc(progn (make-databases \"\" 
nil)(system \"cp ${INT}/algebra/*.daase 
${MNT}/${SYS}/algebra\"))#-native-reloc(system \"cp ${SRC}/../debian/*.daase 
${MNT}/${SYS}/algebra\"))" | ${INTERPSYS} )
+#      @ cp ${INT}/algebra/*.daase ${MNT}/${SYS}/algebra
+#      @ (cp ${SRC}/../debian/*.daase ${MNT}/${SYS}/algebra)
 
 @
 \section{summary}
--- ./src/boot/Makefile.pamphlet.orig   2005-06-05 03:23:35.000000000 +0000
+++ ./src/boot/Makefile.pamphlet        2005-09-20 21:36:15.000000000 +0000
@@ -1173,7 +1173,8 @@
 
 Until this is fixed we need to continue to use the old scheme.
 <<environment>>= 
-CMD0=  (progn (mapcar (function (lambda (x) (load  x))) (quote (${OBJS1}))) 
(system::save-system "${SAVESYS}"))
+#CMD0= (progn (mapcar (function (lambda (x) (load  x))) (quote (${OBJS1}))) 
(system::save-system "${SAVESYS}"))
+CMD0=  (if (member :native-reloc *features*) (progn (mapcar (function (lambda 
(x) (load  x))) (quote (${OBJS1}))) (system::save-system "${SAVESYS}")) 
(compiler::link (quote (${OBJS1})) "${SAVESYS}" (format nil "(let ((*load-path* 
(cons ~S *load-path*))(si::*load-types* ~S)) (compiler::emit-fn t)) (when 
(fboundp (quote si::sgc-on)) (si::sgc-on t)) (setq compiler::*default-system-p* 
t)" si::*system-directory* (quote  (list ".lsp")))))
  
 @
 \subsection{boothdr.lisp \cite{1}}
--- ./src/interp/Makefile.pamphlet.orig 2005-09-20 21:48:56.000000000 +0000
+++ ./src/interp/Makefile.pamphlet      2005-09-20 21:49:14.000000000 +0000
@@ -576,7 +576,28 @@
 \begin{verbatim}
 <<save depsys image>>=
        @ (cd ${MNT}/${SYS}/bin ; \
-          echo '(progn (load "${OUT}/makedep.lisp") (spad-save "${DEPSYS}"))' 
| ${LISPSYS})
+          echo '#+native-reloc(progn (load "${OUT}/makedep.lisp") (spad-save 
"${DEPSYS}"))#-native-reloc(progn\
+                       (setq si::*collect-binary-modules* t)\
+                       (load "${OUT}/makedep.lisp")\
+                       (compiler::link\
+                               (remove-duplicates si::*binary-modules* :test 
(quote equal))\
+                               "$(DEPSYS)"\
+                               (format nil "\
+                                       (setq si::*collect-binary-modules* t)\
+                                       (let ((si::*load-path* (cons ~S 
si::*load-path*))\
+                                            (si::*load-types* ~S))\
+                                               (compiler::emit-fn t))\
+                                       (load \"$(OUT)/makedep.lisp\")\
+                                       (gbc t)\
+                                       (when si::*binary-modules*\
+                                               (error si::*binary-modules*))\
+                                       (setq si::collect-binary-modules* nil 
si::*binary-modules* nil)\
+                                       (gbc t)\
+                                       (when (fboundp (quote si::sgc-on)) 
(si::sgc-on t))\
+                                       (setq compiler::*default-system-p* t)\
+                               " si::*system-directory* (quote (list ".lsp")))\
+                               ""\
+                               nil))' | sed 's,\\$$,,g' | ${LISPSYS})
 @
 \end{verbatim}
 
@@ -880,8 +901,36 @@
        @ echo '#+:akcl (setq compiler::*suppress-compiler-notes* t)' >> 
${OUT}/makeint.lisp
        @ echo '#+:akcl (si::gbc-time 0)' >> ${OUT}/makeint.lisp
        @ echo '#+:akcl (setq si::*system-directory* "${SPAD}/bin/")' >> 
${OUT}/makeint.lisp
+#      @ (cd ${OBJ}/${SYS}/bin ; \
+#        echo '(progn (gbc t) (load "${OUT}/makeint.lisp") (gbc t) 
(user::spad-save "${SAVESYS}"))' | ${LISPSYS} )
        @ (cd ${OBJ}/${SYS}/bin ; \
-         echo '(progn (gbc t) (load "${OUT}/makeint.lisp") (gbc t) 
(user::spad-save "${SAVESYS}"))' | ${LISPSYS} )
+         echo '#+native-reloc(progn (gbc t) (setq x 
si::*system-directory*)(load "${OUT}/makeint.lisp") (setq 
si::*system-directory* x) (unintern (quote x))(gbc t)(user::spad-save 
"${SAVESYS}"))#-native-reloc(progn\
+                       (setq si::*collect-binary-modules* t)\
+                       (setq x si::*system-directory*)\
+                       (load "${OUT}/makeint.lisp")\
+                       (setq si::*system-directory* x)\
+                       (unintern (quote x))\
+                       (compiler::link\
+                               (remove-duplicates si::*binary-modules* :test 
(quote equal))\
+                               "$(SAVESYS)"\
+                               (format nil "\
+                                       (let ((si::*load-path* (cons ~S 
si::*load-path*))\
+                                             (si::*load-types* ~S))\
+                                               (compiler::emit-fn t))\
+                                        (setq si::*collect-binary-modules* t)\
+                                        (setq x si::*system-directory*)\
+                                        (load \"$(OUT)/makeint.lisp\")\
+                                        (setq si::*system-directory* x)\
+                                        (unintern (quote x))\
+                                        (when si::*binary-modules*\
+                                               (error si::*binary-modules*))\
+                                       (setq si::collect-binary-modules* nil 
si::*binary-modules* nil)\
+                                       (gbc t)\
+                                       (when (fboundp (quote si::sgc-on)) 
(si::sgc-on t))\
+                                       (setq compiler::*default-system-p* t)\
+                               " si::*system-directory* (quote (list ".lsp")))\
+                       "$(OBJ)/$(SYS)/lib/sockio-c.o 
$(OBJ)/$(SYS)/lib/cfuns-c.o $(OBJ)/$(SYS)/lib/libspad.a" \
+                       nil))' | sed 's,\\$$,,g' | $(LISPSYS))
        @ echo 6 ${SAVESYS} created
        @ cp ${SAVESYS} ${AXIOMSYS}
        @ echo 6a ${AXIOMSYS} created
=============================================================================

If anyone would like to help getting bfd support for ia64 and friends,
please look at sfaslbfd_alpha.c and sfaslbfd_mips.c from the HEAD cvs
tree.  This should serve as an example for the needed sfaslbfd_ia64.c


Take care,
-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]