Hi,
I intent to use VMKIT to convert java byte codes to LLVM IR
I have installed VMKIT 0.26, on running jnjvm (as ./jnjvm
Hello.class) in Release/bin I get the same error irrespective of class
content :
jnjvm: JavaClass.cpp:469: jnjvm::JavaObject*
jnjvm::Class::doNew(jnjvm::Jnjvm*): Assertion `(this->isInitializing()
classLoader->getCompiler()->isStaticCompiling()) && "Uninitialized
class when allocating."' failed.
Aborted
Am I doing something wrong?Any help regading how to use the VMKIT
tools to convert Java bytecodes to LLVM IR will be helpful
Thanks,
-Nataraj.
Hi Nataraj,
Which platform are you running on? Did you follow all the steps on vmkit.llvm.org getting started page, especially for GNU Classpath?
Thanks!
Nicolas
Nataraj Sundar wrote:
Hi Nicolas,
I’m running it on Kubuntu.
Now that you mention it I did have a problem during vmkit setup. After running the ./configure file with all the options I ran the make file it was giving this error:
make[3]: *** [/.automount/root/exports/transient/nataraj/Project/vmkit-0.25/lib/Mvm/Runtime/Release/EscapeAnalysis.o] Error 1
"
So I went into Makefile.common and modified GNU CLASSPATH FLAGS variable, I removed "//…/"before “include”(CLASSPATH_FLAGS = -I/transient/nataraj/CompilerD/classpath-0.98_//…/include_ -I/usr/include/classpath) and made it
“/classpath-0.98/include” After that the make file ran smoothly.
Looks like that was a mistake, What can I do to overcome the error?
Thanks,
-Nataraj
Hi Nataraj,
The problem comes probably from your configure option for gnu
classpath. Technically, --with-gnu-classpath-libs must give the
directory where jnjvm can find the shared libraries of gnu classpath
(*.so), you should try
'configure --with-gnu-classpath-libs=.../classpath-0.98/lib' instead
of '.../classpath-0.98'
Regards,
Gaël
Hi Nataraj,
You're using incompatible versions of vmkit and GNU Classpath. First, you should use vmkit 0.26 and llvm 2.6 (at least, -- use trunk if there are problems). Second, you should use GNU Classpath 0.97.2.
Good luck!
Nicolas
Nataraj Sundar wrote:
Thanks Nicolas, Gaël
I followed your instructions and installed compatible versions of llvm, vmkit and GNU Classpath also I unzipped glibj.zip and pointed GNU Classpath lib variable to the the unzipped files during vmkit configure. That error has vanished.
Now when I run jnjvm or vmkit in Release/bin on any file I’m getting a new error :
" terminate called without an active exception
Aborted "
Any help is much appreciated,
-Nataraj.
Have you created the symbolic links to GNU Classpath .so? ie step 2 of http://vmkit.llvm.org/get_started.html?
Nicolas
Nataraj Sundar wrote:
Yes I did, one thing worth mentioning is on running configure for GNU Classpath towards the end
this error is displayed and it crashes, I assumed it was okay and went to create the symbolic links and
completed the rest of the process with vmkit mentioned in Getting Started as instructed:
-I…/…/…/native/jni/native-lib -W -Wall -Wmissing-declarations -Wwrite-strings -Wmissing-prototypes -Wno-long-long -Wstrict-prototypes -pedantic -Werror -g -O2 -MT cpproc.lo -MD -MP -MF .deps/cpproc.Tpo -c cpproc.c -fPIC -DPIC -o .libs/cpproc.o
cc1: warnings being treated as errors
cpproc.c: In function ‘cpproc_forkAndExec’:
cpproc.c:89: error: ignoring return value of ‘chdir’, declared with attribute warn_unused_result
make[3]: *** [cpproc.lo] Error 1
Thanks,
-Nataraj.
Hi Nataraj,
OK, this a problem with GNU Classpath that can not be compiled with gc 4.3 anymore. You have to change line 89 of cpproc.c to put the result of chdir in a temporary variable, so that the new "warn_unused_result" annotation on chdir does not report an error.
Nicolas
Nataraj Sundar wrote: