Re: error: 'jvariant::jvariant(jbyte)' cannot be overloaded
Mathieu Malaterre <[email protected]>
| Newsgroups | gmane.comp.gcc.java.devel |
|---|---|
| Message-ID | <[email protected]> |
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 ? Thanks, -- Mathieu