Author: joerg Date: Fri Sep 18 06:13:43 2015 New Revision: 247981 URL: http://llvm.org/viewvc/llvm-project?rev=247981&view=rev Log: Pass the relocation model to LLVM for assembler files.
Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp cfe/trunk/tools/driver/cc1as_main.cpp Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=247981&r1=247980&r2=247981&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original) +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Fri Sep 18 06:13:43 2015 @@ -463,6 +463,7 @@ TargetMachine *EmitAssemblyHelper::Creat FeaturesStr = Features.getString(); } + // Keep this synced with the equivalent code in tools/driver/cc1as_main.cpp. llvm::Reloc::Model RM = llvm::Reloc::Default; if (CodeGenOpts.RelocationModel == "static") { RM = llvm::Reloc::Static; Modified: cfe/trunk/tools/driver/cc1as_main.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=247981&r1=247980&r2=247981&view=diff ============================================================================== --- cfe/trunk/tools/driver/cc1as_main.cpp (original) +++ cfe/trunk/tools/driver/cc1as_main.cpp Fri Sep 18 06:13:43 2015 @@ -126,6 +126,9 @@ struct AssemblerInvocation { unsigned NoExecStack : 1; unsigned FatalWarnings : 1; + /// The name of the relocation model to use. + std::string RelocationModel; + /// @} public: @@ -248,6 +251,7 @@ bool AssemblerInvocation::CreateFromArgs Opts.RelaxAll = Args.hasArg(OPT_mrelax_all); Opts.NoExecStack = Args.hasArg(OPT_mno_exec_stack); Opts.FatalWarnings = Args.hasArg(OPT_massembler_fatal_warnings); + Opts.RelocationModel = Args.getLastArgValue(OPT_mrelocation_model, "pic"); return Success; } @@ -321,8 +325,19 @@ static bool ExecuteAssembler(AssemblerIn std::unique_ptr<MCObjectFileInfo> MOFI(new MCObjectFileInfo()); MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), &SrcMgr); - // FIXME: Assembler behavior can change with -static. - MOFI->InitMCObjectFileInfo(Triple(Opts.Triple), Reloc::Default, + + llvm::Reloc::Model RM = llvm::Reloc::Default; + if (Opts.RelocationModel == "static") { + RM = llvm::Reloc::Static; + } else if (Opts.RelocationModel == "pic") { + RM = llvm::Reloc::PIC_; + } else { + assert(Opts.RelocationModel == "dynamic-no-pic" && + "Invalid PIC model!"); + RM = llvm::Reloc::DynamicNoPIC; + } + + MOFI->InitMCObjectFileInfo(Triple(Opts.Triple), RM, CodeModel::Default, Ctx); if (Opts.SaveTemporaryLabels) Ctx.setAllowTemporaryLabels(false); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits