[cmucl-help] CMUCL 18c building on tru64 5.1

Fausto Saporito fausto.saporito at gmail.com
Wed Sep 3 20:04:41 UTC 2014


further investigation... leads me to call_into_lisp assembler routine.
there happens something bad.
Now I don't know alpha assembler, but maybe this could be related to
the memory addresses written in internals.h
I noticed the cross.lisp for sparc has a specific definition for
stack_pointer or similar... maybe is this needed also for alpha ?

At the moment I used the cross.lisp file from PPC that doesn't need
such definition.

I'll try to recover some useful values then I'll go back to the
cross-compilation modifying my cross.lisp file.

If you have some already known value, please let me know... or if you
think this analisys is wrong :-)

regards,
fausto


2014-09-03 21:52 GMT+02:00 Fausto Saporito <fausto.saporito at gmail.com>:
> Hello Ray,
>
> the sigsegv happens calling funcall0(initial_function)... at line 702
> in main function.
>
> ladebug under Tru64 is very cool ;-)
>
> now... what is the purpose of funcall0 ?
>
> regards,
> Fausto
>
>
>
> 2014-09-03 19:08 GMT+02:00 Raymond Toy <toy.raymond at gmail.com>:
>>
>>
>>
>> On Wed, Sep 3, 2014 at 9:29 AM, Fausto Saporito <fausto.saporito at gmail.com>
>> wrote:
>>>
>>> Hello Ray,
>>>
>>> in the alpha-cross and alpha-target log... there are no errors. it
>>> compiles like a knive in the butter :)
>>
>>
>> Cool!
>>
>>>
>>>
>>> But maybe "interrupt_handle_now" could refers to a feature we excluded
>>> from the build.
>>>
>>> this is the "back" output
>>>
>>> ldb> back
>>> Backtrace:
>>> <Frame 0x50000000 [interrupted], CODE: 0x3029472F, %INITIAL-FUNCTION,
>>> <no LRA>, PC: 0xcfd6b7b8>
>>
>>
>> Ok, that's not very helpful. You have to break out your debugger to figure
>> out why you're getting signal 11. (segv?)
>>
>>>
>>>
>>> About 18c test, can I use the 19c binaries (on linux) to cross-compile
>>> a 18c, or do I have to install a 18c linux binaries ?
>>
>>
>> It's best to use the same version, so use 18c binaries.
>>
>> Good luck!
>> --
>> Ray
>>
>>>
>>>
>>> thanks,
>>> Fausto
>>>
>>> 2014-09-03 18:24 GMT+02:00 Raymond Toy <toy.raymond at gmail.com>:
>>> >
>>> >
>>> >
>>> > On Wed, Sep 3, 2014 at 4:57 AM, Fausto Saporito
>>> > <fausto.saporito at gmail.com>
>>> > wrote:
>>> >>
>>> >> ok.. I fixed the version problem: created a file, in alpha-target/lisp
>>> >> directory, "version" with "-1" in it.
>>> >> Now the version matches with kernel.core (version 0).
>>> >>
>>> >> But it seems a needed feature is missing:
>>> >>
>>> >> axpvm01.gitanes.taz> lisp -core kernel.core
>>> >> interrupt_handle_now: No handler for signal 11?
>>> >> LDB monitor
>>> >>
>>> >> ldb>
>>> >>
>>> >
>>> > This is really great! But now comes the hard part.
>>> >
>>> > First, I would check the logs for any errors and see if they're
>>> > relevant.
>>> > Post the errors here.
>>> >
>>> > Second, from ldb you can try "back" to get a backtrace. That might have
>>> > pointers to what might have gone wrong.
>>> >
>>> > Third, if none of the above work, you'll have to get out your debugger
>>> > and
>>> > see what is causing signal 11.  This is the hard part.
>>> >
>>> > Since it seems you can successfully cross-compile from 19c, perhaps it
>>> > would
>>> > be easiest to go back farther and try again with 18c or something. It
>>> > might
>>> > be easier to get something going and then we can think about getting
>>> > alpha
>>> > running on a more up-to-date version of the code.
>>> >
>>> > Good luck!
>>> >
>>> >>
>>> >>
>>> >>
>>> >> 2014-09-03 13:39 GMT+02:00 Fausto Saporito <fausto.saporito at gmail.com>:
>>> >> > Hello all,
>>> >> >
>>> >> > ok... this is a real blocking error:
>>> >> >
>>> >> > axpvm01.gitanes.taz> alpha-target/lisp/lisp -core
>>> >> > alpha-target/lisp/kernel.core
>>> >> > WARNING: startup-code version (2) different from core version (0).
>>> >> > You may lose big.
>>> >> > interrupt_handle_now: No handler for signal 11?
>>> >> > LDB monitor
>>> >> > ldb> quit
>>> >> > Really quit? [y]
>>> >> >
>>> >> > and really I cannot understand the reason.
>>> >> > kernel.core has been generated with the same sources of the lisp
>>> >> > frontend! Why there's this version mismatch ?
>>> >> >
>>> >> > I changed internals.h cause it was totally wrong (feature list
>>> >> > section) and I copied them from internals.inc ... is it correct ?
>>> >> > But internals.inc has much more features than cross.lisp, maybe this
>>> >> > could be the problem...
>>> >> >
>>> >> > FEATURE_CMU18E = 1
>>> >> > FEATURE_CMU18 = 1
>>> >> > FEATURE_BSD = 1
>>> >> > FEATURE_OSF1 = 1
>>> >> > FEATURE_ALPHA = 1
>>> >> > FEATURE_CMU = 1
>>> >> > FEATURE_IEEE_FLOATING_POINT = 1
>>> >> > FEATURE_ANSI_CL = 1
>>> >> > FEATURE_COMMON_LISP = 1
>>> >> > FEATURE_COMMON = 1
>>> >> > FEATURE_HASH_NEW = 1
>>> >> > FEATURE_RANDOM_MT19937 = 1
>>> >> > FEATURE_UNIX = 1
>>> >> > FEATURE_RELATIVE_PACKAGE_NAMES = 1
>>> >> > FEATURE_MODULAR_ARITH = 1
>>> >> > FEATURE_CONSERVATIVE_FLOAT_TYPE = 1
>>> >> > FEATURE_PYTHON = 1
>>> >> > FEATURE_CMU19C = 1
>>> >> > FEATURE_CMU19 = 1
>>> >> > FEATURE_PCL = 1
>>> >> > <-----
>>> >> > FEATURE_PORTABLE_COMMONLOOPS = 1
>>> >> > FEATURE_PCL_STRUCTURES = 1
>>> >> > FEATURE_GERDS_PCL = 1
>>> >> > FEATURE_BOOTSTRAP = 1
>>> >> > FEATURE_NO_PCL = 1
>>> >> > <-----
>>> >> > FEATURE_NO_CLX = 1
>>> >> > FEATURE_NO_CLM = 1
>>> >> > FEATURE_NO_HEMLOCK = 1
>>> >> > FEATURE_LITTLE_ENDIAN = 1
>>> >> >
>>> >> > Is it correct
>>> >> >
>>> >> > FEATURE_PCL = 1
>>> >> >
>>> >> > then
>>> >> >
>>> >> > FEATURE_NOPCL = 1
>>> >> >
>>> >> > ???
>>> >> >
>>> >> > regards,
>>> >> > Fausto
>>> >> >
>>> >> > 2014-09-03 13:13 GMT+02:00 Fausto Saporito
>>> >> > <fausto.saporito at gmail.com>:
>>> >> >> This is trivial .. I suppose.
>>> >> >> I'm using standard Tru64 5.1b C compiler, but it seems generates a
>>> >> >> Depend file gmake doesn't like too much :-)
>>> >> >> I'm using gmake 3.80, is there a mandatory version ?
>>> >> >>
>>> >> >> gmake: Entering directory `/usr/users/fausap/CMU/alpha-target/lisp'
>>> >> >> Depends:454: *** missing separator.  Stop.
>>> >> >> gmake: Leaving directory `/usr/users/fausap/CMU/alpha-target/lisp'
>>> >> >>
>>> >> >> this code starts at line 454
>>> >> >>
>>> >> >> struct array {
>>> >> >>     lispobj header;
>>> >> >>     lispobj fill_pointer;
>>> >> >>     lispobj fill_pointer_p;
>>> >> >>     lispobj elements;
>>> >> >>     lispobj data;
>>> >> >>     lispobj displacement;
>>> >> >>     lispobj displaced_p;
>>> >> >>     lispobj dimensions[1];
>>> >> >> };
>>> >> >>
>>> >> >> thanks,
>>> >> >> Fausto
>>> >> >>
>>> >> >> 2014-09-03 11:39 GMT+02:00 Fausto Saporito
>>> >> >> <fausto.saporito at gmail.com>:
>>> >> >>> Ohhhh ... BIG NeWS!
>>> >> >>>
>>> >> >>> 19c works! Cross compiling was fine.
>>> >> >>> Now if I understood well, I have to move all the alpha-target
>>> >> >>> directory in Tru64 and recompile... correct ?
>>> >> >>> Using src/tools/build-world.sh script ?
>>> >> >>>
>>> >> >>> thanks
>>> >> >>> Fausto
>>> >> >>>
>>> >> >>>
>>> >> >>> 2014-09-03 11:28 GMT+02:00 Fausto Saporito
>>> >> >>> <fausto.saporito at gmail.com>:
>>> >> >>>> Hello all,
>>> >> >>>>
>>> >> >>>> I saw there're some patches for 19c and 19d and I found how to
>>> >> >>>> apply
>>> >> >>>> them.
>>> >> >>>> The question is: how can I update the lisp.core ? Is it needed ?
>>> >> >>>> Or
>>> >> >>>> do
>>> >> >>>> I have to load each time those patches ?
>>> >> >>>>
>>> >> >>>> thanks,
>>> >> >>>> Fausto
>>> >> >>>>
>>> >> >>>>
>>> >> >>>> 2014-09-03 8:41 GMT+02:00 Fausto Saporito
>>> >> >>>> <fausto.saporito at gmail.com>:
>>> >> >>>>> Hello Ray,
>>> >> >>>>>
>>> >> >>>>> no luck with 19d. But maybe it has the double-double support
>>> >> >>>>> too...
>>> >> >>>>>
>>> >> >>>>> I have the same errors, but instead of sigsegv at the end, I got
>>> >> >>>>> a
>>> >> >>>>> stack overflow:
>>> >> >>>>>
>>> >> >>>>> Control stack overflow
>>> >> >>>>>    [Condition of type STACK-OVERFLOW]
>>> >> >>>>>
>>> >> >>>>> Restarts:
>>> >> >>>>>   0: [CONTINUE] Blow this file
>>> >> >>>>>   1:            Return NIL from load of "target:tools/worldcom".
>>> >> >>>>>   2: [ABORT   ] Return to Top-Level.
>>> >> >>>>>
>>> >> >>>>> Debug  (type H for help)
>>> >> >>>>>
>>> >> >>>>> (YELLOW-ZONE-HIT)
>>> >> >>>>> Source:
>>> >> >>>>> ; File: target:code/interr.lisp
>>> >> >>>>> (ERROR 'STACK-OVERFLOW)
>>> >> >>>>>
>>> >> >>>>> and in compile-compiler.log I found again a DOUBLE-DOUBLE
>>> >> >>>>> reference:
>>> >> >>>>>
>>> >> >>>>> ; Comment: $Header:
>>> >> >>>>> /project/cmucl/cvsroot/src/compiler/new-assem.lisp,v 1.34
>>> >> >>>>> 2004/08/02
>>> >> >>>>> 16:04:42 cwang Exp $
>>> >> >>>>>
>>> >> >>>>> ; Compiling DEFUN SEGMENT-MAP-OUTPUT:
>>> >> >>>>>
>>> >> >>>>> Bound is not *, a DOUBLE-DOUBLE-FLOAT or a list of a
>>> >> >>>>> DOUBLE-DOUBLE-FLOAT: 0
>>> >> >>>>>
>>> >> >>>>> Aborting...
>>> >> >>>>>
>>> >> >>>>> I'll try with 19c
>>> >> >>>>>
>>> >> >>>>> 2014-09-03 8:29 GMT+02:00 Fausto Saporito
>>> >> >>>>> <fausto.saporito at gmail.com>:
>>> >> >>>>>> Hello Ray,
>>> >> >>>>>>
>>> >> >>>>>> I started with 19d, but I have this strange error:
>>> >> >>>>>>
>>> >> >>>>>> ; Error: (during macroexpansion)
>>> >> >>>>>> ;
>>> >> >>>>>> ; Error in function META-SC-OR-LOSE:
>>> >> >>>>>> ;    DOUBLE-DOUBLE-REG is not a defined storage class.
>>> >> >>>>>> ; ;
>>> >> >>>>>>
>>> >> >>>>>> ; Error: (during macroexpansion)
>>> >> >>>>>> ;
>>> >> >>>>>> ; Error in function META-SC-OR-LOSE:
>>> >> >>>>>> ;    COMPLEX-DOUBLE-DOUBLE-REG is not a defined storage class.
>>> >> >>>>>>
>>> >> >>>>>> but in 19d there shouldn't be support for DOUBLE-DOUBLE ...
>>> >> >>>>>> correct
>>> >> >>>>>> ?
>>> >> >>>>>>
>>> >> >>>>>> I'm using 19d binaries to cross-build 19d
>>> >> >>>>>>
>>> >> >>>>>> 2014-09-03 4:17 GMT+02:00 Raymond Toy <toy.raymond at gmail.com>:
>>> >> >>>>>>>
>>> >> >>>>>>>
>>> >> >>>>>>>
>>> >> >>>>>>> On Tue, Sep 2, 2014 at 4:53 PM, Fausto Saporito
>>> >> >>>>>>> <fausto.saporito at gmail.com>
>>> >> >>>>>>> wrote:
>>> >> >>>>>>>>
>>> >> >>>>>>>> Hello Raymond,
>>> >> >>>>>>>>
>>> >> >>>>>>>> thanks for these hints about cross.lisp
>>> >> >>>>>>>> I put in the proper section the unwanted feature.
>>> >> >>>>>>>>
>>> >> >>>>>>>> So, if I force the redefinition of those symbols at the end of
>>> >> >>>>>>>> alpha-cross compiling phase, alpha-target starts but I noticed
>>> >> >>>>>>>> this
>>> >> >>>>>>>> error among the others:
>>> >> >>>>>>>>
>>> >> >>>>>>>> ; File:
>>> >> >>>>>>>> /home/fausap/CMUCL/git-ver/cmucl/src/code/lispinit.lisp
>>> >> >>>>>>>>
>>> >> >>>>>>>> ; In: DEFUN SLEEP
>>> >> >>>>>>>>
>>> >> >>>>>>>> ;   (ERROR 'SIMPLE-TYPE-ERROR
>>> >> >>>>>>>> ;          :FORMAT-CONTROL "Invalid argument to SLEEP: ~S.~%~
>>> >> >>>>>>>> ;             Must be a non-negative, non-complex number."
>>> >> >>>>>>>> ;          :FORMAT-ARGUMENTS ...)
>>> >> >>>>>>>> ; Note: Deleting unreachable code.
>>> >> >>>>>>>> ;
>>> >> >>>>>>>>
>>> >> >>>>>>>> DOUBLE-DOUBLE-FLOAT fell through ECASE expression.
>>> >> >>>>>>>> Wanted one of (REAL FLOAT OR SINGLE-FLOAT DOUBLE-FLOAT
>>> >> >>>>>>>> RATIONAL
>>> >> >>>>>>>> INTEGER).
>>> >> >>>>>>>>
>>> >> >>>>>>>> it's very strange... I disabled double-double... why I have
>>> >> >>>>>>>> this
>>> >> >>>>>>>> error ?
>>> >> >>>>>>>
>>> >> >>>>>>>
>>> >> >>>>>>> I think it's a mismatch between what the cross compiler has and
>>> >> >>>>>>> what the
>>> >> >>>>>>> host compiler has. I've never figured this out.
>>> >> >>>>>>>
>>> >> >>>>>>> So, I think it's best to start with a lisp without
>>> >> >>>>>>> double-double
>>> >> >>>>>>> support.
>>> >> >>>>>>>
>>> >> >>>>>>> Support for double-double was apparently done by 19e, so your
>>> >> >>>>>>> best
>>> >> >>>>>>> bet is to
>>> >> >>>>>>> do a checkout from 19d.  I think everything that you've done up
>>> >> >>>>>>> to
>>> >> >>>>>>> now still
>>> >> >>>>>>> applies.
>>> >> >>>>>>>
>>> >> >>>>>>> Once that is done, we can consider adding double-double for
>>> >> >>>>>>> alpha.
>>> >> >>>>>>> It's
>>> >> >>>>>>> relatively easy, but you'll have to write a bunch of vops. They
>>> >> >>>>>>> can probably
>>> >> >>>>>>> be copied almost verbatim from the sparc or ppc ports with
>>> >> >>>>>>> small
>>> >> >>>>>>> changes in
>>> >> >>>>>>> the actual instructions.
>>> >> >>>>>>>
>>> >> >>>>>>>>
>>> >> >>>>>>>> This is my features list in cross.lisp (I removed
>>> >> >>>>>>>> extern-alien-name,
>>> >> >>>>>>>> fixup, etc... I don't know what they are doing... so maybe I
>>> >> >>>>>>>> can
>>> >> >>>>>>>> put
>>> >> >>>>>>>> back later)
>>> >> >>>>>>>>
>>> >> >>>>>>>> ;;; Cross-compile script to build a alpha core using x86 as
>>> >> >>>>>>>> the
>>> >> >>>>>>>> ;;; compiling system.  This needs work!
>>> >> >>>>>>>>
>>> >> >>>>>>>> (in-package :cl-user)
>>> >> >>>>>>>>
>>> >> >>>>>>>> ;;; Rename the X86 package and backend so that new-backend
>>> >> >>>>>>>> does
>>> >> >>>>>>>> the
>>> >> >>>>>>>> ;;; right thing.
>>> >> >>>>>>>> (rename-package "X86" "OLD-X86" '("OLD-VM"))
>>> >> >>>>>>>> (setf (c:backend-name c:*native-backend*) "OLD-X86")
>>> >> >>>>>>>>
>>> >> >>>>>>>> (c::new-backend "ALPHA"
>>> >> >>>>>>>>    ;; Features to add here
>>> >> >>>>>>>>    '(:alpha
>>> >> >>>>>>>>      :relative-package-names            ; Relative package
>>> >> >>>>>>>> names
>>> >> >>>>>>>> from
>>> >> >>>>>>>> Allegro
>>> >> >>>>>>>>      :conservative-float-type
>>> >> >>>>>>>>      :hash-new
>>> >> >>>>>>>>      :random-mt19937                    ; MT-19937 generator
>>> >> >>>>>>>>      :cmu                               ; Announce this is
>>> >> >>>>>>>> CMUCL
>>> >> >>>>>>>>      :cmu20 :cmu20b                     ; Current version
>>> >> >>>>>>>> identifier
>>> >> >>>>>>>>      :osf1
>>> >> >>>>>>>>      :bsd
>>> >> >>>>>>>>      :unix
>>> >> >>>>>>>>      )
>>> >> >>>>>>>>    ;; Features to remove from current *features* here
>>> >> >>>>>>>>    '(:sparc-v8 :sparc-v7 :sparc-v9 :sparc
>>> >> >>>>>>>>      ;; Other architectures we aren't using.  Particularly
>>> >> >>>>>>>> important
>>> >> >>>>>>>>      ;; to get rid of sse2 and x87 so we don't accidentally
>>> >> >>>>>>>> try
>>> >> >>>>>>>> to
>>> >> >>>>>>>>      ;; compile the x87/sse2 float support on sparc, which
>>> >> >>>>>>>> won't
>>> >> >>>>>>>> work.
>>> >> >>>>>>>>      :x86 :x86-bootstrap :sse2 :x87 :i486
>>> >> >>>>>>>>      :mips :complex-fp-vops
>>> >> >>>>>>>>      ;; Really old stuff that should have been removed long
>>> >> >>>>>>>> ago.
>>> >> >>>>>>>>      :propagate-fun-type :propagate-float-type
>>> >> >>>>>>>> :constrain-float-type
>>> >> >>>>>>>>      :double-double
>>> >> >>>>>>>>      :linkage-table
>>> >> >>>>>>>>      :stack-checking                    ; Throw error if we
>>> >> >>>>>>>> run
>>> >> >>>>>>>> out of
>>> >> >>>>>>>> stack
>>> >> >>>>>>>>      :heap-overflow-check               ; Throw error if we
>>> >> >>>>>>>> run
>>> >> >>>>>>>> out of
>>> >> >>>>>>>>                                         ; heap (This requires
>>> >> >>>>>>>> gencgc!)
>>> >> >>>>>>>>      :gencgc                            ; Generational GC
>>> >> >>>>>>>>      :modular-arith                     ; Modular arithmetic
>>> >> >>>>>>>>      :executable
>>> >> >>>>>>>>      ;; Other OSes were not using
>>> >> >>>>>>>>      :openbsd :freebsd :glibc2 :linux :mach-o :darwin :sunos
>>> >> >>>>>>>> :svr4
>>> >> >>>>>>>>      :solaris :sun4
>>> >> >>>>>>>>      :pentium
>>> >> >>>>>>>>      :long-float
>>> >> >>>>>>>>      :new-random
>>> >> >>>>>>>>      :small
>>> >> >>>>>>>>      :mp))
>>> >> >>>>>>>
>>> >> >>>>>>>
>>> >> >>>>>>> One last thing:  remove :alien-callback too. Alpha doesn't
>>> >> >>>>>>> support
>>> >> >>>>>>> that.
>>> >> >>>>>>>
>>> >> >>>>>>> Hopefully this will get us farther along....
>>> >> >>>>>>>
>>> >> >>>>>>> --
>>> >> >>>>>>> Ray
>>> >> >>>>>>>
>>> >> >>>>>>>
>>> >
>>> >
>>
>>


More information about the cmucl-help mailing list