I tried to execute the preverify tool (intel x86 linux executable) on my amd64 machine but it didn't run at all. Can anyone please tell me how I can execute preverify on amd64 machine running linux?
Wouldn't it be easier to port the verifier to java??
Got over the Bad magic number error -
Need to change the get4bytes function in classloader.c. We need to do explicit cast to unsigned long before shifting bits. Since unsigned long on amd64 is 8 bytes long the bit shifting was causing sign extension and hence the magic number check was failing.
Unfortunately the errors are still not over :(
VERIFIER ERROR javax/microedition/lcdui/Canvas.allowKey(I)Z:
Code stops in the middle of instruction starting at offset 14
I guess a lot more porting is required for the 64bit platform.
You can try build preverifier for your platform from sources.
Checkout the sources from
go to build/linux and run 'make all'.
Please let me know if it works.
Thanks for the quick reply.
I compiled the preverify executable on my amd64 machine - now atleast the executable runs on my machine!
But the preverify exe is still unable to preverify the classes -
Unexpected CRC value
Error preverifying class java.lang.Object
Class loading error: Bad magic number
I have successfully preverified these classes on windows & ubuntu (intel32 platform)
Any idea why this is happening?
Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Participation.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.