The *real* cause is that, for some reason, gcj isn't being passed the
correct path to libgcj.jar in the host system. Instead, this happens:
jc1 /mnt/zebedee/aph/gcc/trunk/libjava/.././libjava/../ecj.jar \
-fhash-synchronization \
-fno-use-divide-subroutine \
-fuse-boehm-gc \
-fnon-call-exceptions \
-fkeep-inline-functions \
-quiet \
-dumpbase ecj.jar \
-mtune=generic \
-auxbase ecj \
-g \
-O2 \
-version \
-ffloat-store \
-fomit-frame-pointer \
-findirect-dispatch \
-fbootclasspath=./:/tmp/prefix/share/java/libgcj-4.3.0.jar \
-o /tmp/ccD80X4c.s
Note that the bootclasspath at this point is wrong: there's no
libgcj.jar in the install dir yet. The first "./" item in the string
is wrong because the .class files we need are no longer in the build
dir: they're in the srcdir.
This oughta do it:
Index: Makefile.am
===================================================================
--- Makefile.am (revision 120638)
+++ Makefile.am (working copy)
@@ -670,7 +670,7 @@
ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) -Djava.class.path=$(ECJ_JAR)
else !ENABLE_SHARED
## Use ecj.jar at compile time.
-ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR)
+ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) -fbootclasspath=$(BOOTCLASSPATH)
endif !ENABLE_SHARED
ecjx_LDADD = -L$(here)/.libs libgcj.la