[llvm] r220198 - Revert r220174, "Always use -Wl, -gc-sections on our build."

NAKAMURA Takumi geek4civic at gmail.com
Mon Oct 20 05:12:22 PDT 2014


Author: chapuni
Date: Mon Oct 20 07:12:21 2014
New Revision: 220198

URL: http://llvm.org/viewvc/llvm-project?rev=220198&view=rev
Log:
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.

Modified:
    llvm/trunk/cmake/modules/AddLLVM.cmake

Modified: llvm/trunk/cmake/modules/AddLLVM.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddLLVM.cmake?rev=220198&r1=220197&r2=220198&view=diff
==============================================================================
--- llvm/trunk/cmake/modules/AddLLVM.cmake (original)
+++ llvm/trunk/cmake/modules/AddLLVM.cmake Mon Oct 20 07:12:21 2014
@@ -141,18 +141,15 @@ function(add_llvm_symbol_exports target_
 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)
 





More information about the llvm-commits mailing list