What steps will reproduce the problem?
1. run the runVerify.sh attached script
2.
3.
What is the expected output? What do you see instead?
Making a dex file with dx tool from a jar (which has no verifier error)
and then using dex2jar to generate a new jar, generated a class with Verifier
error. DVM also reports the Verifier error when trying to boot with the new
class...
(Note that this problem occurs only on the java/text/SimpleDateFormat class.
All other classes from core.jar that are passed to dx and dex2jar work fine.
This is the output of the BCEL verifier after running dex2jar
Pass 3b, method number 0 ['static void <clinit>()']:
VERIFIED_REJECTED
Constraint violated in method 'static void <clinit>()':
Instruction LDC constraint violated: Referenced constant should be a
CONSTANT_Integer, a CONSTANT_Float or a CONSTANT_String, but is
'CONSTANT_Class[7](name_index = 34)'.
InstructionHandle: 13: ldc[18](2) 35
Execution Frame:
Local Variables:
0: java.io.ObjectStreamField[]
OperandStack:
Slots used: 5 MaxStack: 6.
java.lang.String (Size: 1)
<UNINITIALIZED OBJECT OF TYPE 'java.io.ObjectStreamField'> (Size: 1)
<UNINITIALIZED OBJECT OF TYPE 'java.io.ObjectStreamField'> (Size: 1)
int (Size: 1)
java.io.ObjectStreamField[] (Size: 1)
Execution flow:
0: iconst_4 [InstructionContext]
1: anewarray 32 [InstructionContext]
4: astore_0 [InstructionContext]
5: aload_0 [InstructionContext]
6: iconst_0 [InstructionContext]
7: new 32 [InstructionContext]
10: dup [InstructionContext]
11: ldc 33 [InstructionContext]
13: ldc 35 [InstructionContext]
What version of the product are you using? On what operating system?
dex2jar 0.0.15 with Java 1.6 on Linux Ubuntu 13.04
Please upload the file which cause the issue if possible.
Please provide any additional information below.
The simple.jar contains the java/text/SimpleDateFormat.class from core.jar
I used jarjar to change the package to org/d2j/java/text (to avoid conflicts
with
one in rt.jar)
The original SimpleDateFormat.class passes BCEL Verifier
but the one generated by dex2jar (after putting it on a dex file with dx)
has a class that is not valid.
Original issue reported on code.google.com by alex.vil...@gmail.com on 6 Dec 2013 at 5:35
Original issue reported on code.google.com by
alex.vil...@gmail.com
on 6 Dec 2013 at 5:35Attachments: