https://github.com/Kitware/CMake
Revision 9f5c2040bfd41a2c87624cec3d9504cf477c9fc3 authored by Brad King on 12 July 2019, 16:55:55 UTC, committed by Brad King on 15 July 2019, 17:27:16 UTC
On AIX, symbols in executables must be exported in order to be visible to modules (plugins) they load via `dlopen`. Prior to policy `CMP0065`, CMake linked all executables with flags to export symbols, but the NEW behavior for that policy is to do so only for executables that have the `ENABLE_EXPORTS` target property set. In both cases, CMake has always used the AIX linker option `-bexpall` option to export symbols from executables. This has worked fairly well with the XL compiler, but with the GNU compiler it works only for C ABI symbols. The reason is that `-bexpall` does not export symbols starting in `_` but the GNU C++ ABI mangles all symbols with a leading `_`. Therefore we have only supported C ABI plugins with the GNU compiler on AIX. Some projects have tried to work around this by replacing `-bexpall` with `-bexpfull`, but the latter often exports symbols that we do not want exported. Avoid using `-bexpall` for executables by instead using by our own internal `ExportImportList` script to compute symbol export lists from the object files to be linked into an executable. Pass the explicitly computed export list to the AIX linker's `-bE:...` option. We already do this for shared object exports. Issue: #19163
1 parent 0f150b6
Tip revision: 9f5c2040bfd41a2c87624cec3d9504cf477c9fc3 authored by Brad King on 12 July 2019, 16:55:55 UTC
AIX: Explicitly compute executable exports for both XL and GNU
AIX: Explicitly compute executable exports for both XL and GNU
Tip revision: 9f5c204
File | Mode | Size |
---|---|---|
.github | ||
Auxiliary | ||
Help | ||
Licenses | ||
Modules | ||
Packaging | ||
Source | ||
Templates | ||
Tests | ||
Utilities | ||
.clang-format | -rw-r--r-- | 551 bytes |
.clang-tidy | -rw-r--r-- | 986 bytes |
.gitattributes | -rw-r--r-- | 1.1 KB |
.gitignore | -rw-r--r-- | 132 bytes |
.hooks-config | -rw-r--r-- | 418 bytes |
CMakeCPack.cmake | -rw-r--r-- | 9.7 KB |
CMakeCPackOptions.cmake.in | -rw-r--r-- | 11.9 KB |
CMakeGraphVizOptions.cmake | -rw-r--r-- | 153 bytes |
CMakeLists.txt | -rw-r--r-- | 31.1 KB |
CMakeLogo.gif | -rw-r--r-- | 4.4 KB |
CONTRIBUTING.rst | -rw-r--r-- | 3.0 KB |
CTestConfig.cmake | -rw-r--r-- | 440 bytes |
CTestCustom.cmake.in | -rw-r--r-- | 6.5 KB |
CompileFlags.cmake | -rw-r--r-- | 4.0 KB |
Copyright.txt | -rw-r--r-- | 5.2 KB |
DartConfig.cmake | -rw-r--r-- | 374 bytes |
README.rst | -rw-r--r-- | 3.9 KB |
bootstrap | -rwxr-xr-x | 49.9 KB |
cmake_uninstall.cmake.in | -rw-r--r-- | 790 bytes |
configure | -rwxr-xr-x | 99 bytes |
doxygen.config | -rw-r--r-- | 27.4 KB |
Computing file changes ...