VMKIT problem

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: