partially fixed static builds, jar.c, native zip, and more (Was: Re: [kaffe] --with-static{bin,lib,vm} does not work)
Dalibor Topic
robilad at kaffe.org
Sun Jul 1 20:15:14 PDT 2007
Kiyo Inaba wrote:
> When I specify '--with-static{bin,lib,vm}' for CVS-head the generated
> code does not work. This was happened for ia32/linux and several other
> ports.
>
> When I specify only --with-staticvm, I got
> -------------------------------------------------------------------------
> Failed to locate native library "/home/inaba/src/kaffe-070215-dds3/libraries/clib/security/.libs/libkaffevm" in path:
> /home/inaba/src/kaffe-070215-dds3/kaffe/kaffevm/.libs:/home/inaba/src/kaffe-070215-dds3/libraries/clib/net/.libs:/home/inaba/src/kaffe-070215-dds3/libraries/clib/io/.libs:/home/inaba/src/kaffe-070215-dds3/libraries/javalib/external/classpath/native/jni/java-lang/.libs:/home/inaba/src/kaffe-070215-dds3/libraries/javalib/external/classpath/native/jni/java-nio/.libs:/home/inaba/src/kaffe-070215-dds3/libraries/javalib/external/classpath/native/jni/java-net/.libs:/home/inaba/src/kaffe-070215-dds3/libraries/javalib/external/classpath/native/jni/java-io/.libs:/home/inaba/src/kaffe-070215-dds3/libraries/javalib/external/classpath/native/jni/java-util/.libs:/home/inaba/src/kaffe-070215-dds3/libraries/clib/zip/.libs:/home/inaba/src/kaffe-070215-dds3/libraries/clib/management/.libs:/home/inaba/src/kaffe-070215-dds3/libraries/clib/security/.libs
> Aborting.
> -------------------------------------------------------------------------
>
Fixed for --with-staticvm and --with-staticlib now, when used with
--disable-zlib-zip.
When not using --disable-zlib-zip, i.e. using Kaffe's default, native
zip code leads to an assertion failure in the gc (main_collector is
NULL, and therefore can't be dereferenced, so that would lead to a crash
in stringJava2C without the assert ... undebuggable in gdb for me on
x86/linux).
I don't know if we really need to have that many options for a static
build. I don't think --with-staticbin makes much sense, as it adds
-all-static, and that can't be used portably with libltdl (which we need
to be able to dlopen the JNI libs):
" Avoid using the `-static' or `-all-static' switches when linking
programs with libltdl. This will not work on all platforms, because
the dlopening functions may not be available for static linking."
according to the libtool 1.5.22 manual. As it crashes happily on a bunch
of test cases even with --disable-zlib-zip, I'd like to remove the
--with-staticbin option, unless someone needs it, in particular since
with it I get warnings like
/home/topic/build-kaffe/libltdl/../../kaffe/libltdl/ltdl.c:1099:
warning: Using 'dlopen' in statically linked applications requires at
runtime the shared libraries from the glibc version used for linking
/home/topic/build-kaffe/kaffe/kaffevm/../../../kaffe/libraries/clib/native/gnu_classpath_VMSystemProperties.c:341:
warning: Using 'getpwuid' in statically linked applications requires at
runtime the shared libraries from the glibc version used for linking
/home/topic/build-kaffe/kaffe/kaffevm/../../../kaffe/libraries/clib/net/InetAddressImpl.c:93:
warning: Using 'getaddrinfo' in statically linked applications requires
at runtime the shared libraries from the glibc version used for linking
/home/topic/build-kaffe/kaffe/kaffevm/systems/unix-pthreads/../../../../../kaffe/kaffe/kaffevm/systems/unix-pthreads/syscalls.c:412:
warning: Using 'gethostbyaddr' in statically linked applications
requires at runtime the shared libraries from the glibc version used for
linking
/home/topic/build-kaffe/kaffe/kaffevm/systems/unix-pthreads/../../../../../kaffe/kaffe/kaffevm/systems/unix-pthreads/syscalls.c:395:
warning: Using 'gethostbyname' in statically linked applications
requires at runtime the shared libraries from the glibc version used for
linking
when building kaffe.
I'd also like to remove the zlib zip code, as it triggers the crash with
--with-staticvm and --with-staticlib, and seems to be in a worse shape
than the corresponding code in GNU Classpath. That would leave jar.c as
the remaining user of zlib.
It seems to me that one could rewrite jar.c as a trivial shell around
libzip's simple API wrapper around zlib. See nih.at/libzip and jar.h in
kaffevm. libzip is in ports & linux distributions, so it would not limit
supported platforms.
Going forward after the release, I think it makes sense to
1) switch the remaining native code in kaffe over to JNI,
severing the necessity to link it with libkaffe directly
and removing the need to deal with KNI,
2) drop kaffeh & KNI,
3) merge kaffe-bin with libkaffe into a single executable.
i.e. after these three steps, we should automatically have something
quite like the current --with-staticvm setup, and the different static
builds wouldn't be useful/necessary, afaict.
cheers,
dalibor topic
More information about the kaffe
mailing list