Hi, On Tue, 2002-02-05 at 22:08, Tom Tromey wrote: > > So it would probably be easier to use the verifier in the compiler. > The simplest way, which I use quite a bit, is: > > gcj --syntax-only foo.class >
Nice. I tried that (with gcj from CVS) for Classpath compiled with jikes 1.15, gcj 3.0.4 and gcj 3.1 from cvs a couple of days ago. You do have to remove java/lang/Object.class, java/lang/Class.class and java/lang/ClassLoader.class otherwise gcj gets very confused. But it did not show any real class verification errors for jikes 1.15, only some unreachable bytecode warnings. For gcj 3.1 however it did show two cases of class verification errors and even some internal compiler errors. gcj 3.0.4 had a lot of ConstantValue attribute of field 'XXX' has wrong type errors which seem to have been fixed in 3.1. Output for jikes 1.15 and gcj 3.1 attached, output for gcj3.0 omitted since it is huge and is mainly ConstantValue errors. Cheers, Mark
java/lang/reflect/Proxy.java: In class `java.lang.reflect.Proxy': java/lang/reflect/Proxy.java: In method `java.lang.reflect.Proxy.getProxyClass(java.lang.ClassLoader,java.lang.Class[])': java/lang/reflect/Proxy.java:267: warning: unreachable bytecode from 38 to before 46 Collections.java: In class `java.util.Collections$1$SynchronizedMapEntry': Collections.java: In method `java.util.Collections$1$SynchronizedMapEntry.constructor$0(java.util.Collections$SynchronizedMap,java.lang.Object)': java/util/Collections$1$SynchronizedMapEntry.java:0: warning: assignment to final field `e' not in constructor java/util/zip/DeflaterEngine.java: In class `java.util.zip.DeflaterEngine': java/util/zip/DeflaterEngine.java: In method `java.util.zip.DeflaterEngine.findLongestMatch(int)': java/util/zip/DeflaterEngine.java:273: warning: unreachable bytecode from 118 to before 137 java/util/zip/DeflaterEngine.java:277: warning: unreachable bytecode from 140 to before 158 java/util/zip/DeflaterEngine.java: In method `java.util.zip.DeflaterEngine.setDictionary(byte[],int,int)': java/util/zip/DeflaterEngine.java:322: warning: unreachable bytecode from 3 to before 21 java/util/zip/DeflaterEngine.java: In method `java.util.zip.DeflaterEngine.deflateSlow(boolean,boolean)': java/util/zip/DeflaterEngine.java:465: warning: unreachable bytecode from 64 to before 78 java/util/zip/PendingBuffer.java: In class `java.util.zip.PendingBuffer': java/util/zip/PendingBuffer.java: In method `java.util.zip.PendingBuffer.writeByte(int)': java/util/zip/PendingBuffer.java:77: warning: unreachable bytecode from 3 to before 18 java/util/zip/PendingBuffer.java: In method `java.util.zip.PendingBuffer.writeShort(int)': java/util/zip/PendingBuffer.java:84: warning: unreachable bytecode from 3 to before 18 java/util/zip/PendingBuffer.java: In method `java.util.zip.PendingBuffer.writeInt(int)': java/util/zip/PendingBuffer.java:92: warning: unreachable bytecode from 3 to before 18 java/util/zip/PendingBuffer.java: In method `java.util.zip.PendingBuffer.writeBlock(byte[],int,int)': java/util/zip/PendingBuffer.java:102: warning: unreachable bytecode from 3 to before 18 java/util/zip/PendingBuffer.java: In method `java.util.zip.PendingBuffer.alignToByte()': java/util/zip/PendingBuffer.java:113: warning: unreachable bytecode from 3 to before 18 java/util/zip/PendingBuffer.java: In method `java.util.zip.PendingBuffer.writeBits(int,int)': java/util/zip/PendingBuffer.java:127: warning: unreachable bytecode from 3 to before 18 java/util/zip/PendingBuffer.java: In method `java.util.zip.PendingBuffer.writeShortMSB(int)': java/util/zip/PendingBuffer.java:142: warning: unreachable bytecode from 3 to before 18 DeflaterHuffman.java: In class `java.util.zip.DeflaterHuffman$Tree': DeflaterHuffman.java: In method `java.util.zip.DeflaterHuffman$Tree.buildCodes()': DeflaterHuffman.java:134: warning: unreachable bytecode from 68 to before 84
java/lang/reflect/Proxy.java: In class `java.lang.reflect.Proxy': java/lang/reflect/Proxy.java: In method `java.lang.reflect.Proxy.getProxyClass(java.lang.ClassLoader,java.lang.Class[])': java/lang/reflect/Proxy.java:267: warning: unreachable bytecode from 38 to before 46 java/lang/System.java: In class `java.lang.System': java/lang/System.java: In method `java.lang.System.runFinalizersOnExit(boolean)': java/lang/System.java:355: verification error at PC=0 java/lang/System.java:355: stack overflow java/net/Socket.java: In class `java.net.Socket': java/net/Socket.java: In method `java.net.Socket.getLocalAddress()': java/net/Socket.java:296: class 'java.net.SocketImpl' has no method named 'getOption' matching signature '(I)Ljava/lang/Object;' java/net/Socket.java: In method `java.net.Socket.setTcpNoDelay(boolean)': java/net/Socket.java:388: class 'java.net.SocketImpl' has no method named 'setOption' matching signature '(ILjava/lang/Object;)V' java/net/Socket.java: In method `java.net.Socket.getTcpNoDelay()': java/net/Socket.java:403: Internal compiler error in gen_lowpart, at emit-rtl.c:1183 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. java/net/ServerSocket.java: In class `java.net.ServerSocket': java/net/ServerSocket.java: In method `java.net.ServerSocket.setSoTimeout(int)': java/net/ServerSocket.java:226: class 'java.net.SocketImpl' has no method named 'setOption' matching signature '(ILjava/lang/Object;)V' java/net/ServerSocket.java: In method `java.net.ServerSocket.getSoTimeout()': java/net/ServerSocket.java:241: Internal compiler error in gen_lowpart, at emit-rtl.c:1183 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. java/net/MulticastSocket.java: In class `java.net.MulticastSocket': java/net/MulticastSocket.java: In method `java.net.MulticastSocket.getInterface()': java/net/MulticastSocket.java:103: class 'java.net.DatagramSocketImpl' has no method named 'getOption' matching signature '(I)Ljava/lang/Object;' java/net/MulticastSocket.java: In method `java.net.MulticastSocket.getTTL()': java/net/MulticastSocket.java:122: Internal compiler error in expand_expr, at expr.c:6209 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. java/net/DatagramSocket.java: In class `java.net.DatagramSocket': java/net/DatagramSocket.java: In method `java.net.DatagramSocket.getSoTimeout()': java/net/DatagramSocket.java:216: class 'java.net.DatagramSocketImpl' has no method named 'getOption' matching signature '(I)Ljava/lang/Object;' java/net/DatagramSocket.java: In method `java.net.DatagramSocket.setSoTimeout(int)': java/net/DatagramSocket.java:238: class 'java.net.DatagramSocketImpl' has no method named 'setOption' matching signature '(ILjava/lang/Object;)V' java/net/DatagramSocket.java: In method `java.net.DatagramSocket.getSendBufferSize()': java/net/DatagramSocket.java:254: Internal compiler error in gen_lowpart, at emit-rtl.c:1183 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. java/beans/PropertyEditorManager.java: In class `java.beans.PropertyEditorManager': java/beans/PropertyEditorManager.java: In method `java.beans.PropertyEditorManager.findEditor(java.lang.Class)': java/beans/PropertyEditorManager.java:112: verification error at PC=155 java/beans/PropertyEditorManager.java:112: invalid local variable type in iinc