JDK 1.1.8 V1999-11-9 on recent FBSD 4
shudo at computer.org
shudo at computer.org
Sat Nov 1 20:14:38 PST 2003
I cvsup'ed my FreeBSD box to 4.9-STABLE just after the release of FBSD
4.9R and could confirm JDK 1.1.8 (1999/11/9) works well on the box.
The problem I explained below has gone away.
Kazuyuki Shudo shudo at computer.org http://www.shudo.net/
> Message-Id: <20030703.190531.299490113.shudo at localhost>
> Subject: Re: JDK 1.1.8 V1999-11-9 on recent FBSD 4
> From: shudo at computer.org
> Date: Thu, 03 Jul 2003 19:05:31 +0900 (JST)
> 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
> 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;
> FILE *__stdoutp = &__sF;
> FILE *__stderrp = &__sF;
> 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 at computer.org http://www.shudo.net/
More information about the freebsd-java