Hi Adam , the webrev looks OK to me (not a Reviewer however). I think it will not break anything on lower xlc versions (like xlc 12.1 that we are using).
Are you able to do a full successful build with this change (when using xlc 13.1) ? Do you have a chance to test with the beta-xlc after 13 and tell if your change is needed there too ? (I think this is the interesting xlc version because we need one with better c++11/14 support in the future ) Best regards, Matthias > Hi Tom, > > Sounds reasonable. I've added a webex to the bug, and here's a link to the > bug. > > https://bugs.openjdk.java.net/browse/JDK-8214063 > > This patch is required because otherwise, when building on AIX using xlc > 3.1, > the build fails with this error: > > "Visibility is not allowed on a reference to an imported symbol." > > We believe this is caused by JNIEXPORT and JNIIMPORT not being defined. > Without > this, almost no symbols are exported from shared libraries due to use of > -qvisibility=hidden as specified in make/lib/LibCommon.gmk. > > For convenience, here's a summary of the diffs: > > -------------------------------------- > File 1 of 2) src/java.base/share/native/libjimage/NativeImageBuffer.cpp > > #include "osSupport.hpp" > > +#if defined(__xlC__) && (__xlC__ >= 0x0d01) > +/* > + * Version 13.1.3 of xlc seems to have trouble parsing the > `__attribute__` > + * annotation in the generated header file we're about to include. > Repeating > + * the forward declaration (without the braces) here avoids the > diagnostic: > + * 1540-0040 (S) The text "void" is unexpected. "visibility" may be > undeclared or ambiguous. > + */ > +extern "C" JNIEXPORT jobject JNICALL > Java_jdk_internal_jimage_NativeImageBuffer_getNativeMap(JNIEnv *, > jclass, > jstring); > +#endif > + > #include "jdk_internal_jimage_NativeImageBuffer.h" > -------------------------------------- > File 2 of 2) src/java.base/unix/native/include/jni_md.h > > #define JNIIMPORT __attribute__((visibility("default"))) > #endif > +#elif defined(__xlC__) && (__xlC__ >= 0x0d01) /* xlc version 13.1 or > better required */ > + #define JNIEXPORT __attribute__((visibility("default"))) > + #define JNIIMPORT __attribute__((visibility("default"))) > #else > #define JNIEXPORT > -------------------------------------- > > Best Regards > > Adam Farley > IBM Runtimes >