]> granicus.if.org Git - clang/commitdiff
[cmake] Support LLD for CLANG_ORDER_FILE
authorShoaib Meenai <smeenai@fb.com>
Sat, 2 Jun 2018 01:22:39 +0000 (01:22 +0000)
committerShoaib Meenai <smeenai@fb.com>
Sat, 2 Jun 2018 01:22:39 +0000 (01:22 +0000)
LLD also supports order files using the `--symbol-ordering-file` option.
As the name would suggest, the order file format is slightly different
from gold; gold's order files specify section names, whereas LLD's
specify symbol names. Assuming you have an order file in the correct
format though, we should support using it with LLD.

Switch the check to actually use LLVM's linker detection rather than
just checking for the presence of the gold executable, since we might
have a gold executable present but be using LLD (or bfd for that matter)
as our linker.

Differential Revision: https://reviews.llvm.org/D47669

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@333810 91177308-0d34-0410-b5e6-96231b3b80d8

tools/driver/CMakeLists.txt

index 133a4494931946b0ad4704a57c3f9581a430bb7b..6e8748dd6284aee6b066cab74c14217ba252427a 100644 (file)
@@ -98,13 +98,16 @@ if (APPLE)
   set(TOOL_INFO_BUILD_VERSION)
 endif()
 
-if(CLANG_ORDER_FILE AND (LD64_EXECUTABLE OR GOLD_EXECUTABLE))
+if(CLANG_ORDER_FILE AND
+   (LD64_EXECUTABLE OR LLVM_LINKER_IS_GOLD OR LLVM_LINKER_IS_LLD))
   include(CheckLinkerFlag)
 
   if (LD64_EXECUTABLE)
     set(LINKER_ORDER_FILE_OPTION "-Wl,-order_file,${CLANG_ORDER_FILE}")
-  elseif (GOLD_EXECUTABLE)
+  elseif (LLVM_LINKER_IS_GOLD)
     set(LINKER_ORDER_FILE_OPTION "-Wl,--section-ordering-file,${CLANG_ORDER_FILE}")
+  elseif (LLVM_LINKER_IS_LLD)
+    set(LINKER_ORDER_FILE_OPTION "-Wl,--symbol-ordering-file,${CLANG_ORDER_FILE}")
   endif()
 
   # This is a test to ensure the actual order file works with the linker.