When gij runs the main method in the attached test case, it does not use the
precompiled libtest.jar.so, even though test.db is mentioned in the
gnu.gcj.precompiled.db.path property.

Test case attached. Type ./run.sh to build and run it. You get something like:

Obtained 10 stack frames.
.libs/libbt.so.0(print_trace+0x21) [0x1e166d]
.libs/libbt.so.0(Java_BadBacktrace_libcBacktrace+0x18) [0x1e16f6]
/usr/lib/libgcj.so.6(ffi_call_SYSV+0x17) [0x2a9b127]
/usr/lib/libgcj.so.6(ffi_raw_call+0x63) [0x2a9b0e9]
/usr/lib/libgcj.so.6(_ZN13_Jv_JNIMethod4callEP7ffi_cifPvP7ffi_rawS2_+0xf3)
[0x2700033]
/usr/lib/libgcj.so.6 [0x2a9af9c]
/usr/lib/libgcj.so.6(ffi_call_SYSV+0x17) [0x2a9b127]
/usr/lib/libgcj.so.6(ffi_raw_call+0x63) [0x2a9b0e9]
/usr/lib/libgcj.so.6(_ZN16_Jv_InterpMethod3runEPvP7ffi_raw+0x13f2) [0x270b164]
/usr/lib/libgcj.so.6(_ZN16_Jv_InterpMethod9run_classEP7ffi_cifPvP7ffi_rawS2_+0x34)
[0x270e9a6]

showing that the main method is being interpreted.

Note: If you remove the native code from the test case - and replace the native
call with e.g. Object x = null; x.toString(); - the native version of main()
*does* get used (which can be verified in gdb).

This is with
gij (GNU libgcj) version 4.0.0 20050622 (Red Hat 4.0.0-13)
and matching gcj.

-- 
           Summary: gnu.gcj.precompiled.db.path ignored for method which
                    calls JNI native method
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: libgcj
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: greenrd at greenrd dot org
                CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu
                    dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22187

Reply via email to