summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-07-03 19:40:08 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-07-03 19:40:08 +0000
commit8e8debc75671a19b8df0e2e95b6a659ea6419830 (patch)
tree0ce5ed8b6d2479f70de390e883f47cbfb04af56b /llvm
parent0ed2e2f6ecd87e703334ae481972e9def125deae (diff)
downloadbcm5719-llvm-8e8debc75671a19b8df0e2e95b6a659ea6419830.tar.gz
bcm5719-llvm-8e8debc75671a19b8df0e2e95b6a659ea6419830.zip
Add support for inline asm symbols in llvm-ar.
This should allow llvm-ar to be used instead of gnu ar + plugin in a LTO build. I will add a release note about it once I finish a LTO bootstrap with it. llvm-svn: 212287
Diffstat (limited to 'llvm')
-rw-r--r--llvm/test/Object/X86/archive-ir-asm.ll20
-rw-r--r--llvm/tools/llvm-ar/CMakeLists.txt1
-rw-r--r--llvm/tools/llvm-ar/Makefile2
-rw-r--r--llvm/tools/llvm-ar/llvm-ar.cpp5
4 files changed, 27 insertions, 1 deletions
diff --git a/llvm/test/Object/X86/archive-ir-asm.ll b/llvm/test/Object/X86/archive-ir-asm.ll
new file mode 100644
index 00000000000..31ef6c6ac3d
--- /dev/null
+++ b/llvm/test/Object/X86/archive-ir-asm.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-as %s -o=%t1
+; RUN: rm -f %t2
+; RUN: llvm-ar rcs %t2 %t1
+; RUN: llvm-nm -s %t2 | FileCheck %s
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+module asm ".global global_asm_sym"
+module asm "global_asm_sym:"
+module asm "local_asm_sym:"
+module asm ".long undef_asm_sym"
+
+; CHECK: Archive map
+; CHECK-NEXT: global_asm_sym in archive-ir-asm.ll
+
+; CHECK: archive-ir-asm.ll
+; CHECK-NEXT: T global_asm_sym
+; CHECK-NEXT: t local_asm_sym
+; CHECK-NEXT: U undef_asm_sym
diff --git a/llvm/tools/llvm-ar/CMakeLists.txt b/llvm/tools/llvm-ar/CMakeLists.txt
index 9295efeeee7..0e809a705bb 100644
--- a/llvm/tools/llvm-ar/CMakeLists.txt
+++ b/llvm/tools/llvm-ar/CMakeLists.txt
@@ -1,4 +1,5 @@
set(LLVM_LINK_COMPONENTS
+ ${LLVM_TARGETS_TO_BUILD}
Object
Support
)
diff --git a/llvm/tools/llvm-ar/Makefile b/llvm/tools/llvm-ar/Makefile
index 16a828396cb..e10d6ac6ab6 100644
--- a/llvm/tools/llvm-ar/Makefile
+++ b/llvm/tools/llvm-ar/Makefile
@@ -10,7 +10,7 @@
LEVEL := ../..
TOOLNAME := llvm-ar
TOOLALIAS = llvm-ranlib
-LINK_COMPONENTS := bitreader support object
+LINK_COMPONENTS := all-targets bitreader support object
# This tool has no plugins, optimize startup time.
TOOL_NO_EXPORTS := 1
diff --git a/llvm/tools/llvm-ar/llvm-ar.cpp b/llvm/tools/llvm-ar/llvm-ar.cpp
index 60886bb7b11..4bd586be451 100644
--- a/llvm/tools/llvm-ar/llvm-ar.cpp
+++ b/llvm/tools/llvm-ar/llvm-ar.cpp
@@ -24,6 +24,7 @@
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/Signals.h"
+#include "llvm/Support/TargetSelect.h"
#include "llvm/Support/ToolOutputFile.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
@@ -903,6 +904,10 @@ int main(int argc, char **argv) {
" This program archives bitcode files into single libraries\n"
);
+ llvm::InitializeAllTargetInfos();
+ llvm::InitializeAllTargetMCs();
+ llvm::InitializeAllAsmParsers();
+
StringRef Stem = sys::path::stem(ToolName);
if (Stem.find("ar") != StringRef::npos)
return ar_main(argv);
OpenPOWER on IntegriCloud