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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212287 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2014-07-03 19:40:08 +00:00
parent dfb53d227b
commit 96052a8d12
4 changed files with 27 additions and 1 deletions

View File

@ -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

View File

@ -1,4 +1,5 @@
set(LLVM_LINK_COMPONENTS
${LLVM_TARGETS_TO_BUILD}
Object
Support
)

View File

@ -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

View File

@ -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);