Date: Thu, 03 Jul 2003 19:05:31 +0900 (JST) From: shudo@computer.org To: freebsd-java@freebsd.org Subject: Re: JDK 1.1.8 V1999-11-9 on recent FBSD 4 Message-ID: <20030703.190531.299490113.shudo@localhost> In-Reply-To: <20030702142029.4fa5b862.daichi@freebsd.org> References: <20030702.141346.607956687.shudo@localhost> <20030702142029.4fa5b862.daichi@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Thanks for you suggestion, Daichi. I could see the rationale of my trouble by further investigation. The JDK 1.1.8 binary release cannot work on recent FBSD 4.x systems in nature. Generally, this problem happens when a program try to use both the libc of the compat3x port and a FBSD 4's library using stdin, stdout or stderr. > > I tried to run JDK 1.1.8 V1999-11-9 (ELF version) on my FreeBSD > > 4.8-STABLE box. It could not run and I had the following message: > > % java > > /usr/libexec/ld-elf.so.1: /usr/lib/libm.so.2: Undefined symbol "__stderrp" JDK 1.1.8 uses the native libm of FreeBSD 4 and the libc of the compat3x port as follows: % ldd /usr/local/jdk1.1.8/bin/i386/green_threads/java /usr/local/jdk1.1.8/bin/i386/green_threads/java: libjava.so => not found (0x0) libxpg4.so.2 => /usr/local/lib/compat/libxpg4.so.2 (0x28066000) libm.so.2 => /usr/lib/libm.so.2 (0x2806a000) libc.so.3 => /usr/local/lib/compat/libc.so.3 (0x28085000) FBSD 4's libm expects the FBSD 3's libc to supply the symbols __stdinp, __stdoutp and __stderrp as stdin, stdout and stderr respectively. But the compat3x's libc does not supply them. In /usr/src/lib/libc/stdio/findfp.c of FBSD 4.8-STABLE: /* * The following kludge is done to ensure enough binary compatibility * with future versions of libc. Or rather it allows us to work with * libraries that have been built with a newer libc that defines these * symbols and expects libc to provide them. We only have need to support * i386 and alpha because they are the only "old" systems we have deployed. */ FILE *__stdinp = &__sF[0]; FILE *__stdoutp = &__sF[1]; FILE *__stderrp = &__sF[2]; So, there are several workarounds: - Add __stdinp, __stdoutp and __stderrp to the compat3x's libc. - Compile JDK 1.1.8 on a recent FBSD system. (The patches to Sun's 1.1.8 are available.) - Provide a small library supplying these symbols and load it with JDK 1.1.8 somehow. - ... I prefer the modification to the compat3x port because this problem is not limited to Java, rather general to programs which need compat3x. Does someone have motivation to solve this problem? I suppose no one is not using 1.1.8 on recent FBSD systems because we have not seen such an trouble report on this list. Kazuyuki Shudo shudo@computer.org http://www.shudo.net/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030703.190531.299490113.shudo>