I totally agree that the current usage of JNIEXPORT in typedefs in AWT and 2D code is a bug.

My concern, however, is about other code that mistakenly adapted the same pattern. After this fix its compilation will fail.

--
best regards,
Anthony

On 4/9/2013 19:39, David DeHaven wrote:
[ cc'ing awt-dev@ ]

Probably gcc can't process typedefs with visibility attributes specified, hence 
the changes to AWT. Generally they look good.

It's not necessary for those typedefs as those types are not being used to 
define exported functions. The way it was being used in awt_LoadLibrary.c 
doesn't make any sense. It shouldn't be used for typedefs at all, it's used to 
mark a specific function for export which has nothing to do with the functions 
signature.


However, I'm concerned with the compatibility impact of this change. I suppose 
that 3rd-party JNI libraries could use such a pattern, too. And now their 
compilation may fail. I understand that this is just a source compatibility 
issue, not a binary compatibility. But I just want to make sure we're aware of 
it.

Unless gcc is also passed -fvisibility=hidden then this change has no effect, 
so it's an opt-in feature in that regard. This isn't changing the default 
visibility in the JDK JNI libs, so it should have no impact on the binaries. 
What it is doing is implementing a feature that wasn't implemented, allowing 
those who wish to trim their JNI libs to do so without further hackery (as such 
I wouldn't think a CCC needs to be filed).

Also, I'm not an official jdk8 reviewer so I'm not sure my name should be there 
(just wanted to point that out before someone got cranky about it :).

-DrD-

Reply via email to