This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Another endianess problem on Solaris


Hi!
I think, i found an endianess problem on Solaris with boolean:

$ cat chello.c
#include <jni.h>
#include <stdio.h>

int main()
{
 JNIEnv *env;
 JavaVM *jvm;
 JavaVMInitArgs vm_args;
 jint res;
 jclass cls;
 jmethodID mid;
 jstring jstr;
 jobjectArray args;
 char classpath[1024];
 jboolean result;

 vm_args.version = JNI_VERSION_1_2;

 JNI_GetDefaultJavaVMInitArgs(&vm_args);

 /* Create the Java VM */
 res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
 if (res < 0)
    {
     fprintf(stderr, "Can't create Java VM\n");
     exit(1);
    }

 cls = (*env)->FindClass(env, "hello");
 if (cls == 0) {
     fprintf(stderr, "Can't find hello class\n");
     exit(1);
 }

 mid = (*env)->GetStaticMethodID(env, cls, "testme", "()Z");
 if (mid == 0) {
     fprintf(stderr, "Can't find testme\n");
     exit(1);
 }

 result = (*env)->CallStaticBooleanMethod(env, cls, mid, args);
 if (result)
    puts("o.k.");
 else
    puts("not o.k.");

 (*jvm)->DestroyJavaVM(jvm);
}



$ cat hello.java
public class hello
{
 public static boolean testme()
    {
     return true;
    }
}

$ gcc -g -c chello.c
$ gcj -g --encoding=UTF-8 -c hello.java
$ gcj -g -o chello  chello.o hello.o
$ ./chello
not o.k.

This works on Linux. With some debugging it seems that after the ffi_call
in java/lang/reflect/natMethod.cc:439
the variable result is
(gdb) p *result
$4 = {z = 0 '\000', b = 0 '\000', c = 0, s = 0, i = 1, j = 4294967296, 
  f = 1.40129846e-45, d = 2.1219957909652723e-314, l = 0x1}
 
Seems, that the 1 is on the wrong bit position here.

No idea, how i could correct that. The best thing would be, if 
libffi/src/sparc/v8.S did the right thing.
Or we have to change the value in src/sparc/ffi.c
afterwards, but do we know, if the return type is boolean here?
Otherwise the change has to be made in a higher hierarchy.

Can anybody confirm this, please?
-- 
The early bird catches the worm. If you want something else for       
breakfast, get up later.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]