Java class file verification
John Bergin
john.bergin at gmail.com
Wed Jan 14 20:35:48 UTC 2015
Hi all.
I have a query regarding Java class file verification in particular
verification of the LocalVariableTable attribute defined by the Java
Virtual Machine 7 specification here,
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.13
The specification states that "The value of start_pc must be a valid
index into the code array of this Code attribute and must be the index
of the opcode of an instruction." And in the example below the
start_pc for args is 0 and for s it is 3 and both these indexes are
valid code array offsets.
public static void main(java.lang.String[]);
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=2, args_size=1
0: ldc #2 // String A string
2: astore_1
3: return
LineNumberTable:
line 3: 0
line 4: 3
LocalVariableTable:
Start Length Slot Name Signature
0 4 0 args [Ljava/lang/String;
3 1 1 s Ljava/lang/String;
My question is: a program I'm helping to develop is dynamically
generating Java class files where the start_pc indexes are NOT valid
indexes into the code array (in fact they're off by one) and OpenJDK
is not rejecting the class via a ClassFormatException. Has anyone got
any idea why this is the case?
Kind regards,
John.
More information about the discuss
mailing list