Re: error: 'jvariant::jvariant(jbyte)' cannot be overloaded
Andrew Haley <[email protected]>
| Newsgroups | gmane.comp.gcc.java.devel |
|---|---|
| Message-ID | <[email protected]> |
On 07/21/2009 08:16 AM, Mathieu Malaterre wrote: > On Sun, Jul 19, 2009 at 5:16 PM, Andrew Haley<[email protected]> wrote: >> On 07/19/2009 09:17 AM, Florian Weimer wrote: >>> * Andrew Haley: >>> >>>> On 07/19/2009 07:02 AM, Florian Weimer wrote: >>>>> * Mathieu Malaterre: >>>>> >>>>>> I am trying to compile VTK using gcj and I am getting those compiler >>>>>> error, could someone please let me know if the code is legal (should >>>>>> compile) or not: >>>>> This is legal per Sun's JNI specficiation: jboolean and jbyte are >>>>> distinct types because there signedness differs: >>>>> >>>>> <http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/types.html#wp198> >>>>> >>>>> It's a bug in GCC. >>>> I didn't see the original message to which this is replying. >>> It's about C++ code which contains a function overloaded on jbyte and >>> jboolean. This fails with GCJ because they are typedef'ed to the same >>> type. >>> >>>> If you can make a test case I'll see if the bug can be fixed. >>> Compare the table I referenced with these pieces from jni_md.h: >>> >>> | typedef int jbyte __attribute__((__mode__(__QI__))); >>> | typedef int jshort __attribute__((__mode__(__HI__))); >>> | typedef int jint __attribute__((__mode__(__SI__))); >>> | typedef int jlong __attribute__((__mode__(__DI__))); >>> | typedef int jboolean __attribute__((__mode__(__QI__))); >>> | typedef unsigned short jchar __attribute__((__mode__(__HI__))); >>> | typedef float jfloat; >>> | typedef double jdouble; >>> | typedef jint jsize; >>> >>> | typedef int8_t jbyte; >>> | typedef int16_t jshort; >>> | typedef int32_t jint; >>> | typedef int64_t jlong; >>> | typedef float jfloat; >>> | typedef double jdouble; >>> | typedef jint jsize; >>> | typedef int8_t jboolean; >>> | typedef uint16_t jchar; >>> >>> jboolean is signed, but Sun's spec says it should be unsigned. >> OK. I can fix it, but it's an ABI-incompatible change. There's no >> way this fix could be applied to any existing releases, only gcc >> 4.5. > > Excellent ! Is there a bug entry so I can follow the process ? Not until you make one. Andrew.