[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [MIT-Scheme-devel] [commit 13b5bca] Fix new build to cross from 9.1.
From: |
Matt Birkholz |
Subject: |
Re: [MIT-Scheme-devel] [commit 13b5bca] Fix new build to cross from 9.1.1. |
Date: |
Sat, 22 Feb 2014 11:27:18 -0700 |
> From: Matt Birkholz <address@hidden>
> Date: Fri, 29 Nov 2013 11:54:09 -0700
>
> [...] you might want to look at why `make check' fails on i386. New
> flonum tests reveal a snafu in SIGFPE handling that leaves a bogus
> word in the heap. The bogosity trips up find_block_address's heap
> scan -- a "linkage section" where none should be.
I found the problem. I created a new primitive that scans the whole
heap with find_block_address() and started calling it everywhere. I
found that SIGFPE recovery may trip over the bogus linkage section
header, but it is not the cause. If I run `make check' a second time,
it works fine! If I clean tests/ and run `make check' it fails again.
I eventually narrowed it down to GCs during the compilation of
test-arith.bin. No bogosity appears in the heap after compilation of
other files (GCing or not), nor after compilation of test-arith
withOUT a GC. Interesting, eh? (No.)
Upon closer examination of the Riastradh Build (with my hack to make
it work), I realized binaries were fasdumped by the host and loaded
into the target -- not the cross-compile I was expecting. The
--enable-cross-compiling option seems to force a cross-compile, but
then installation fails because there are no .bci's, just .fni's.
(Perhaps that is easy to fix?) Besides that, the cross-compiled
.com's are not compiled by-procedure and... and there were good
reasons why compile-svm.sh took the pains it did.
So I generalized compile-svm.sh somewhat, called the variation
cross-compile.sh, and usurped the Riastradh Build as in the patch
below. This brought immediate relief and I did not have to #undef
ENABLE_TRAP_RECOVERY.
diff --git a/src/Makefile.in b/src/Makefile.in
index adaf948..e3a85e0 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -79,22 +79,10 @@ check:
./microcode/scheme --library lib --batch-mode \
--load ../tests/check.scm --eval '(%exit)'
-all-native: microcode/scheme
-all-native: lib/runtime.com
-all-native: lib/all.com
-all-native: all-compiler
-all-native: all-cref
-all-native: all-edwin
-all-native: all-ffi
-all-native: all-imail
-all-native: all-runtime
-all-native: all-sf
-all-native: all-sos
-all-native: all-ssp
-all-native: all-star-parser
-all-native: all-win32
-all-native: all-xml
-all-native: cross-target
+all-native:
+ $(MAKE) compile-microcode
+ @$(top_srcdir)/etc/cross-compile.sh "$(MIT_SCHEME_EXE)"
+ $(MAKE) build-bands
@address@hidden = (set! compiler:cross-compiling? true)
@address@hidden = (set! compiler:invoke-c-compiler? false)
- Re: [MIT-Scheme-devel] [commit 13b5bca] Fix new build to cross from 9.1.1.,
Matt Birkholz <=