I attach a simple Java class, which exercises the readResolve method. An object is serialzed and deserialized from a byte array. Because of the readResolve method, the object read back should be the exact same instance. This works with JDK, but fails with both gij and gcj, as of today. It also fails with other free runtimes: kaffe (1.1.4.PRECVS8) and jamvm (1.2.3), so it could be a GNU classpath issue.
Here is the testcase: /////////////////////////////////// import java.io.*; public abstract class Enum implements Serializable { static Enum instance; Object readResolve() { return instance; } static class Color extends Enum { static final Color red = new Color(); static { instance = red; } } public static void main(String[] args) { try { ByteArrayOutputStream outb = new ByteArrayOutputStream(); ObjectOutputStream outs = new ObjectOutputStream(outb); outs.writeObject(Color.red); byte[] store = outb.toByteArray(); ByteArrayInputStream inb = new ByteArrayInputStream(store); ObjectInputStream ins = new ObjectInputStream(inb); Color color = (Color) ins.readObject(); System.out.println(color); System.out.println(Color.red); System.out.println(color == Color.red); } catch (Throwable e) { throw new Error(e); } } } ////////////////////////////////////// Here is what happens: /tmp/gcc/bin/gcj -C Enum.java #### JDK: java Enum [EMAIL PROTECTED] [EMAIL PROTECTED] true #### GIJ: LD_LIBRARY_PATH=/tmp/gcc/lib /tmp/gcc/bin/gij Enum [EMAIL PROTECTED] [EMAIL PROTECTED] false #### GCJ: /tmp/gcc/bin/gcj --main=Enum *.class LD_LIBRARY_PATH=/tmp/gcc/lib ./a.out [EMAIL PROTECTED] [EMAIL PROTECTED] false /tmp/gcc/bin/gcj --version gcj (GCC) 4.0.0 20050223 (experimental) -- Summary: Serialization: readResolve does not work Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: java AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bonniot at users dot sf dot net CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu dot org GCC host triplet: i386-debian-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20169