missing JNIEXPORT / JNICALL at some places in function declarations/implementations

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Thu Apr 5 15:45:06 UTC 2018


That's most likely a result of the new JNIEXPORT I added as part of the mapfile removal. 

I tried to match header file and C file, but I can certainly have missed cases. If I didn't get any warnings, it was hard to know what I missed. 

Please do submit your patch. 

I'm a bit surprised 32-bit Window is still buildable. :)

/Magnus

> 5 apr. 2018 kl. 17:20 skrev Baesken, Matthias <matthias.baesken at sap.com>:
> 
> Hello, we noticed  that  at a number  of places in the coding  ,   the  JNIEXPORT and/or   JNICALL modifiers   do not match  when one compares  the declaration and
> The implementation of functions.
> While this is ok on most platforms, it seems to fail on Windows 32 bit and leads to errors like this one :
>  
> e:/priv/openjdk/repos/jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvKernelConvert.c(87) : error C2373: 'j2d_mlib_ImageConvKernelConvert' : redefinition; different type modifiers
>         e:\priv\openjdk\repos\jdk\src\java.desktop\share\native\libmlib_image\mlib_image_proto.h(2630) : see declaration of 'j2d_mlib_ImageConvKernelConvert'
>  
> (there are quite a few of these e.g. in mlib  / splashscreen etc.)
>  
>  
> Another example is this one :
>  
> diff -r 4d98473ed33e src/java.base/share/native/libjimage/jimage.hpp
> --- a/src/java.base/share/native/libjimage/jimage.hpp  Thu Apr 05 09:55:16 2018 +0200
> +++ b/src/java.base/share/native/libjimage/jimage.hpp               Thu Apr 05 17:07:40 2018 +0200
> @@ -126,7 +126,7 @@
>   *   JImageLocationRef location = (*JImageFindResource)(image,
>   *                                "java.base", "9.0", "java/lang/String.class", &size);
>   */
> -extern "C" JNIEXPORT JImageLocationRef JIMAGE_FindResource(JImageFile* jimage,
> +extern "C" JNIEXPORT JImageLocationRef JNICALL JIMAGE_FindResource(JImageFile* jimage,
>          const char* module_name, const char* version, const char* name,
>          jlong* size);
>  
>  
> Is there some generic way to get  the  same  declarations / impementations   in the code  ?
>  
> Or should I just add a patch with my findings ?
>  
> Best regards, Matthias
>  


More information about the build-dev mailing list