diff --git a/CMakeLists.txt b/CMakeLists.txt index 5276a854d8..542667f1fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -203,12 +203,17 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PIC_FLAG}" ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PIC_FLAG}" ) - # Thou shalt not link vaporware and tell us it's a valid DSO (apple ld doesn't support it) if( NOT APPLE ) + # Thou shalt not link vaporware and tell us it's a valid DSO (apple ld doesn't support it) set( CMAKE_SHARED_LINKER_FLAGS "${TO_LINKER},--no-undefined" ) set( CMAKE_MODULE_LINKER_FLAGS "${TO_LINKER},--no-undefined" ) set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" ) + + # Defeat ELF's ability to use the GOT to replace locally implemented functions + # with ones from another module. + set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${TO_LINKER},-Bsymbolic" ) + set( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${TO_LINKER},-Bsymbolic" ) endif() endif()