diff options
Diffstat (limited to 'tools/llvm-mc/llvm-mc.cpp')
| -rw-r--r-- | tools/llvm-mc/llvm-mc.cpp | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/tools/llvm-mc/llvm-mc.cpp b/tools/llvm-mc/llvm-mc.cpp index 8782588dfdd8..e925346eb2d1 100644 --- a/tools/llvm-mc/llvm-mc.cpp +++ b/tools/llvm-mc/llvm-mc.cpp @@ -15,6 +15,7 @@ #include "Disassembler.h" #include "llvm/MC/MCAsmBackend.h" #include "llvm/MC/MCAsmInfo.h" +#include "llvm/MC/MCCodeEmitter.h" #include "llvm/MC/MCContext.h" #include "llvm/MC/MCInstPrinter.h" #include "llvm/MC/MCInstrInfo.h" @@ -22,10 +23,9 @@ #include "llvm/MC/MCParser/AsmLexer.h" #include "llvm/MC/MCParser/MCTargetAsmParser.h" #include "llvm/MC/MCRegisterInfo.h" -#include "llvm/MC/MCSectionMachO.h" #include "llvm/MC/MCStreamer.h" #include "llvm/MC/MCSubtargetInfo.h" -#include "llvm/MC/MCTargetOptionsCommandFlags.h" +#include "llvm/MC/MCTargetOptionsCommandFlags.def" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Compression.h" #include "llvm/Support/FileUtilities.h" @@ -131,20 +131,10 @@ MAttrs("mattr", static cl::opt<bool> PIC("position-independent", cl::desc("Position independent"), cl::init(false)); -static cl::opt<llvm::CodeModel::Model> -CMModel("code-model", - cl::desc("Choose code model"), - cl::init(CodeModel::Default), - cl::values(clEnumValN(CodeModel::Default, "default", - "Target default code model"), - clEnumValN(CodeModel::Small, "small", - "Small code model"), - clEnumValN(CodeModel::Kernel, "kernel", - "Kernel code model"), - clEnumValN(CodeModel::Medium, "medium", - "Medium code model"), - clEnumValN(CodeModel::Large, "large", - "Large code model"))); +static cl::opt<bool> + LargeCodeModel("large-code-model", + cl::desc("Create cfi directives that assume the code might " + "be more than 2gb away")); static cl::opt<bool> NoInitialTextSection("n", cl::desc("Don't assume assembly file starts " @@ -207,13 +197,13 @@ static const Target *GetTarget(const char *ProgName) { return TheTarget; } -static std::unique_ptr<tool_output_file> GetOutputStream() { +static std::unique_ptr<ToolOutputFile> GetOutputStream() { if (OutputFilename == "") OutputFilename = "-"; std::error_code EC; - auto Out = llvm::make_unique<tool_output_file>(OutputFilename, EC, - sys::fs::F_None); + auto Out = + llvm::make_unique<ToolOutputFile>(OutputFilename, EC, sys::fs::F_None); if (EC) { errs() << EC.message() << '\n'; return nullptr; @@ -506,7 +496,7 @@ int main(int argc, char **argv) { // MCObjectFileInfo needs a MCContext reference in order to initialize itself. MCObjectFileInfo MOFI; MCContext Ctx(MAI.get(), MRI.get(), &MOFI, &SrcMgr); - MOFI.InitMCObjectFileInfo(TheTriple, PIC, CMModel, Ctx); + MOFI.InitMCObjectFileInfo(TheTriple, PIC, Ctx, LargeCodeModel); if (SaveTempLabels) Ctx.setAllowTemporaryLabels(false); @@ -544,7 +534,7 @@ int main(int argc, char **argv) { FeaturesStr = Features.getString(); } - std::unique_ptr<tool_output_file> Out = GetOutputStream(); + std::unique_ptr<ToolOutputFile> Out = GetOutputStream(); if (!Out) return 1; @@ -601,7 +591,8 @@ int main(int argc, char **argv) { MCAsmBackend *MAB = TheTarget->createMCAsmBackend(*MRI, TripleName, MCPU, MCOptions); Str.reset(TheTarget->createMCObjectStreamer( - TheTriple, Ctx, *MAB, *OS, CE, *STI, MCOptions.MCRelaxAll, + TheTriple, Ctx, std::unique_ptr<MCAsmBackend>(MAB), *OS, + std::unique_ptr<MCCodeEmitter>(CE), *STI, MCOptions.MCRelaxAll, MCOptions.MCIncrementalLinkerCompatible, /*DWARFMustBeAtTheEnd*/ false)); if (NoExecStack) |
