From 748627cc2ad844954034cb2c188ec971482d9380 Mon Sep 17 00:00:00 2001 From: NAKAMURA Takumi Date: Mon, 20 Oct 2014 12:12:21 +0000 Subject: [PATCH] Revert r220174, "Always use -Wl,-gc-sections on our build." It dropped required functions for plugins with gnu ld 2.20 and 2.21. Failing Tests (1): LLVM :: Feature/load_module.ll Hello: bin/opt: symbol lookup error: lib/LLVMHello.so: undefined symbol: _ZN4llvm11raw_ostream13write_escapedENS_9StringRefEb Failing Tests (1): Clang :: Frontend/plugins.c error: unable to load plugin 'lib/PrintFunctionNames.so': 'lib/PrintFunctionNames.so: undefined symbol: _ZN5clang15PluginASTAction6anchorEv' I think we should inspect linker's version or behavior to introduce --gc-sections for --export-dynamic. llvm-svn: 220198 --- llvm/cmake/modules/AddLLVM.cmake | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 2e6b824..284912c 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -141,18 +141,15 @@ function(add_llvm_symbol_exports target_name export_file) endfunction(add_llvm_symbol_exports) function(add_dead_strip target_name) - if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - # ld64's implementation of -dead_strip breaks tools that use plugins. - if(NOT LLVM_NO_DEAD_STRIP) + if(NOT LLVM_NO_DEAD_STRIP) + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set_property(TARGET ${target_name} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-dead_strip") + elseif(NOT WIN32) + # Object files are compiled with -ffunction-data-sections. + set_property(TARGET ${target_name} APPEND_STRING PROPERTY + LINK_FLAGS " -Wl,--gc-sections") endif() - elseif(NOT WIN32) - # Object files are compiled with -ffunction-data-sections. - # On ELF --gc-sections handles --export-dynamic correctly, so we can always - # use it. - set_property(TARGET ${target_name} APPEND_STRING PROPERTY - LINK_FLAGS " -Wl,--gc-sections") endif() endfunction(add_dead_strip) -- 2.7.4