From e2fd426bdafe9f5c10066d3926ece6e342184a67 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sat, 19 Jan 2019 10:05:49 +0000 Subject: Vendor import of lld trunk r351319 (just before the release_80 branch point): https://llvm.org/svn/llvm-project/lld/trunk@351319 --- wasm/LTO.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'wasm/LTO.cpp') diff --git a/wasm/LTO.cpp b/wasm/LTO.cpp index f15551da8b80..96a947e29d41 100644 --- a/wasm/LTO.cpp +++ b/wasm/LTO.cpp @@ -36,8 +36,6 @@ #include using namespace llvm; -using namespace llvm::object; - using namespace lld; using namespace lld::wasm; @@ -55,6 +53,14 @@ static std::unique_ptr createLTO() { C.DisableVerify = Config->DisableVerify; C.DiagHandler = diagnosticHandler; C.OptLevel = Config->LTOO; + C.MAttrs = GetMAttrs(); + + if (Config->Relocatable) + C.RelocModel = None; + else if (Config->Pic) + C.RelocModel = Reloc::PIC_; + else + C.RelocModel = Reloc::Static; if (Config->SaveTemps) checkError(C.addSaveTemps(Config->OutputFile.str() + ".", @@ -72,10 +78,11 @@ BitcodeCompiler::BitcodeCompiler() : LTOObj(createLTO()) {} BitcodeCompiler::~BitcodeCompiler() = default; static void undefine(Symbol *S) { - if (isa(S)) - replaceSymbol(S, S->getName(), 0); + if (auto F = dyn_cast(S)) + replaceSymbol(F, F->getName(), 0, F->getFile(), + F->Signature); else if (isa(S)) - replaceSymbol(S, S->getName(), 0); + replaceSymbol(S, S->getName(), 0, S->getFile()); else llvm_unreachable("unexpected symbol kind"); } -- cgit v1.2.3