diff options
author | Brad King <brad.king@kitware.com> | 2019-07-17 13:20:31 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-07-17 18:21:37 (GMT) |
commit | 3fb3157dae5427b6c86949ec1603986c57602658 (patch) | |
tree | 0627ce39322fe6b69c721f04fa40b796183d0d46 /Help | |
parent | 44a6468304ad7b2e7d7b9e9b43bc04588f0ab918 (diff) | |
download | CMake-3fb3157dae5427b6c86949ec1603986c57602658.zip CMake-3fb3157dae5427b6c86949ec1603986c57602658.tar.gz CMake-3fb3157dae5427b6c86949ec1603986c57602658.tar.bz2 |
AIX: Do not enable runtime linking by default anymore
We've long created shared objects on AIX using the linker's `-G` option
(also offered by the XL front-end). The `-G` option implies `-brtl` and
enables runtime linking. This has been largely unnecessary because we
provide all dependencies on the link line and both XL and GNU compilers
offer builtin behavior to export symbols. Since commit 0f150b69d3 (AIX:
Explicitly compute shared object exports for both XL and GNU,
2019-07-11) we compute exports explicitly and consistently.
Therefore runtime linking is no longer necessary for shared objects.
We've also long created executables on AIX using the linker's `-brtl`
option to enable runtime linking in case they load plugins at runtime.
Since commit 9f5c2040bf (AIX: Explicitly compute executable exports for
both XL and GNU, 2019-07-12) and commit 2fa920c0cd (AIX: Create import
library for executables with exports, 2019-07-16) we now provide the
linker enough information to fully resolve symbols in plugins up front.
Therefore runtime linking is no longer necessary for executables.
Drop use of `-G` for creating shared objects and use the XL `-qmkshrobj`
and GCC `-shared` options instead. Both invoke the linker with the
`-bM:SRE -bnoentry` options to create a shared object without runtime
linking enabled. Also drop use of `-brtl` for creating executables.
Issue: #19163
Diffstat (limited to 'Help')
-rw-r--r-- | Help/release/dev/aix.rst | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Help/release/dev/aix.rst b/Help/release/dev/aix.rst index c24872e..6919358 100644 --- a/Help/release/dev/aix.rst +++ b/Help/release/dev/aix.rst @@ -8,3 +8,13 @@ aix to the executable for its symbols are now linked using the import file. The :command:`install(TARGETS)` command now installs the import file as an ``ARCHIVE`` artifact. + +* On AIX, runtime linking is no longer enabled by default. CMake provides + the linker enough information to resolve all symbols up front. + One may manually enable runtime linking for shared libraries and/or + loadable modules by adding ``-Wl,-G`` to their link flags + (e.g. in the :variable:`CMAKE_SHARED_LINKER_FLAGS` or + :variable:`CMAKE_MODULE_LINKER_FLAGS` variable). + One may manually enable runtime linking for executables by adding + ``-Wl,-brtl`` to their link flags (e.g. in the + :variable:`CMAKE_EXE_LINKER_FLAGS` variable). |