View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0009985 | CMake | CMake | public | 2009-12-01 14:23 | 2015-06-24 08:42 | ||||
Reporter | Brad King | ||||||||
Assigned To | Brad King | ||||||||
Priority | normal | Severity | major | Reproducibility | always | ||||
Status | closed | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | |||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0009985: Linux.cmake should not hard-code -rdynamic | ||||||||
Description | This GNU-specific flag breaks non-GNU compilers on Linux. Several compiler-specific Linux platform files already erase the flag setting, but it always creates trouble for folks trying new compilers. | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | |||||||||
Relationships | |||||||||||||||||||||
|
Relationships |
Notes | |
(0018625) Brad King (manager) 2009-12-01 14:26 |
The following commit addresses this issue: --------------------------------------------------------------------------- Drop -rdynamic from Linux build rules This is a GNU-specific option that should not be specified for all compilers on Linux. It tells the GNU compiler to pass -export-dynamic to the linker to export symbols from executables for use by plugins. Since we provide the ENABLE_EXPORTS target property to do the same thing in a cross-platform way, there is no need to pass -rdynamic always. Since the option is not useful for GNU tools and breaks other tools on Linux we simply remove it from CMAKE_SHARED_LIBRARY_LINK_<lang>_FLAGS. This also allows us to stop setting the variable in other Linux compiler files just to erase the bad flag. --------------------------------------------------------------------------- /cvsroot/CMake/CMake/Modules/Compiler/SunPro-C.cmake,v <-- Modules/Compiler/SunPro-C.cmake new revision: 1.3; previous revision: 1.2 /cvsroot/CMake/CMake/Modules/Compiler/SunPro-CXX.cmake,v <-- Modules/Compiler/SunPro-CXX.cmake new revision: 1.3; previous revision: 1.2 /cvsroot/CMake/CMake/Modules/Compiler/SunPro-Fortran.cmake,v <-- Modules/Compiler/SunPro-Fortran.cmake new revision: 1.3; previous revision: 1.2 /cvsroot/CMake/CMake/Modules/Platform/GNU.cmake,v <-- Modules/Platform/GNU.cmake new revision: 1.2; previous revision: 1.1 /cvsroot/CMake/CMake/Modules/Platform/Linux-PGI-C.cmake,v <-- Modules/Platform/Linux-PGI-C.cmake new revision: 1.3; previous revision: 1.2 /cvsroot/CMake/CMake/Modules/Platform/Linux-PGI-CXX.cmake,v <-- Modules/Platform/Linux-PGI-CXX.cmake new revision: 1.3; previous revision: 1.2 /cvsroot/CMake/CMake/Modules/Platform/Linux-PGI-Fortran.cmake,v <-- Modules/Platform/Linux-PGI-Fortran.cmake new revision: 1.3; previous revision: 1.2 /cvsroot/CMake/CMake/Modules/Platform/Linux-XL-C.cmake,v <-- Modules/Platform/Linux-XL-C.cmake new revision: 1.3; previous revision: 1.2 /cvsroot/CMake/CMake/Modules/Platform/Linux-XL-CXX.cmake,v <-- Modules/Platform/Linux-XL-CXX.cmake new revision: 1.3; previous revision: 1.2 /cvsroot/CMake/CMake/Modules/Platform/Linux-XL-Fortran.cmake,v <-- Modules/Platform/Linux-XL-Fortran.cmake new revision: 1.3; previous revision: 1.2 /cvsroot/CMake/CMake/Modules/Platform/Linux-como.cmake,v <-- Modules/Platform/Linux-como.cmake new revision: 1.6; previous revision: 1.5 /cvsroot/CMake/CMake/Modules/Platform/Linux.cmake,v <-- Modules/Platform/Linux.cmake new revision: 1.20; previous revision: 1.19 |
(0018642) Brad King (manager) 2009-12-02 09:46 |
The Linux builds on our dashboard look good after this fix. I'll schedule it for 2.8.1. |
(0019106) Brad King (manager) 2010-01-12 17:10 |
We need to export symbols from any executable on Linux that uses dlopen() even if we do not export an API explicitly. The compiler may need RTTI symbols as an implementation detail. Furthermore, we still pass export flags when linking executables on other platforms. If we want to do change behavior on Linux we should do it on all platforms at once. |
(0019107) Brad King (manager) 2010-01-12 17:15 |
It is likely that many projects already use the workaround mentioned in issue 0005833: SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") to erase -rdynamic. Restoring the flag to match 2.8.0 behavior will have to be done in this variable, but only on compilers known to support it. |
(0019113) Brad King (manager) 2010-01-13 08:14 |
I've committed changes to restore -rdynamic. Create Linux GNU compiler flag consolidation macro /cvsroot/CMake/CMake/Modules/Platform/Linux-GNU-C.cmake,v <-- Modules/Platform/Linux-GNU-C.cmake initial revision: 1.1 /cvsroot/CMake/CMake/Modules/Platform/Linux-GNU-CXX.cmake,v <-- Modules/Platform/Linux-GNU-CXX.cmake initial revision: 1.1 /cvsroot/CMake/CMake/Modules/Platform/Linux-GNU-Fortran.cmake,v <-- Modules/Platform/Linux-GNU-Fortran.cmake new revision: 1.4; previous revision: 1.3 /cvsroot/CMake/CMake/Modules/Platform/Linux-GNU.cmake,v <-- Modules/Platform/Linux-GNU.cmake initial revision: 1.1 Restore -rdynamic in Linux build rules /cvsroot/CMake/CMake/Modules/Platform/Linux-GNU.cmake,v <-- Modules/Platform/Linux-GNU.cmake new revision: 1.2; previous revision: 1.1 /cvsroot/CMake/CMake/Modules/Platform/Linux-Intel.cmake,v <-- Modules/Platform/Linux-Intel.cmake new revision: 1.4; previous revision: 1.3 |
(0019114) Brad King (manager) 2010-01-13 08:17 |
I'm closing this because Linux.cmake no longer hard-codes -rdynamic and prior behavior for compilers that support it is preserved. If we want to avoid exporting symbols from executables that is a separate issue that should be tackled on all platforms at once. |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
2009-12-01 14:23 | Brad King | New Issue | |
2009-12-01 14:23 | Brad King | Relationship added | parent of 0009798 |
2009-12-01 14:24 | Brad King | Relationship replaced | related to 0009798 |
2009-12-01 14:24 | Brad King | Status | new => assigned |
2009-12-01 14:24 | Brad King | Assigned To | => Brad King |
2009-12-01 14:26 | Brad King | Note Added: 0018625 | |
2009-12-02 09:46 | Brad King | Note Added: 0018642 | |
2009-12-02 09:46 | Brad King | Status | assigned => closed |
2009-12-02 09:46 | Brad King | Resolution | open => fixed |
2010-01-12 17:10 | Brad King | Note Added: 0019106 | |
2010-01-12 17:10 | Brad King | Status | closed => feedback |
2010-01-12 17:10 | Brad King | Resolution | fixed => reopened |
2010-01-12 17:10 | Brad King | Relationship added | related to 0009659 |
2010-01-12 17:11 | Brad King | Relationship added | related to 0005833 |
2010-01-12 17:15 | Brad King | Note Added: 0019107 | |
2010-01-13 08:14 | Brad King | Note Added: 0019113 | |
2010-01-13 08:17 | Brad King | Note Added: 0019114 | |
2010-01-13 08:17 | Brad King | Status | feedback => closed |
2010-01-13 08:17 | Brad King | Resolution | reopened => fixed |
2015-06-24 08:42 | Brad King | Relationship added | related to 0015630 |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |