aix: xlc: Use -Wl,-b,expfull for old compiler versions

Unfortunately xlc 12.1 and earlier don't support -qvisibility. Therefore
be7c15b194 doesn't suffice to make extension libraries work without the
explicit mkldexport step removed in fe6a64a58a. While 12.1 is EOL, there is
some desire to leave buildfarm animals using it run a bit longer. But instead
of adding back the complicated mkldexport step, we can use -Wl,-b,expfull to
force all symbols to be exported.

Reviewed-By: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/2490844.1663123546@sss.pgh.pa.us
This commit is contained in:
Andres Freund 2022-09-13 10:55:03 -07:00
parent eacbe94ab1
commit d08a049db9
2 changed files with 10 additions and 0 deletions

5
configure vendored
View File

@ -7101,6 +7101,11 @@ if test x"$pgac_cv_prog_CXX_cxxflags__qvisibility_hidden" = x"yes"; then
fi
have_visibility_attribute=$pgac_cv_prog_CC_cflags__qvisibility_hidden
# Old xlc versions (<13.1) don't have support for -qvisibility. Use expfull to force
# all extension module symbols to be exported.
if test "$pgac_cv_prog_CC_cflags__qvisibility_hidden" != "yes"; then
CFLAGS_SL_MODULE="$CFLAGS_SL_MODULE -Wl,-b,expfull"
fi
fi
if test "$have_visibility_attribute" = "yes"; then

View File

@ -592,6 +592,11 @@ elif test "$PORTNAME" = "aix"; then
PGAC_PROG_CC_VAR_OPT(CFLAGS_SL_MODULE, [-qvisibility=hidden])
PGAC_PROG_VARCXX_VARFLAGS_OPT(CXX, CXXFLAGS_SL_MODULE, [-qvisibility=hidden])
have_visibility_attribute=$pgac_cv_prog_CC_cflags__qvisibility_hidden
# Old xlc versions (<13.1) don't have support for -qvisibility. Use expfull to force
# all extension module symbols to be exported.
if test "$pgac_cv_prog_CC_cflags__qvisibility_hidden" != "yes"; then
CFLAGS_SL_MODULE="$CFLAGS_SL_MODULE -Wl,-b,expfull"
fi
fi
if test "$have_visibility_attribute" = "yes"; then