From 25d5b54542e0b41dbb14e3771388677c4b9703cc Mon Sep 17 00:00:00 2001 From: Simon Atanasyan Date: Tue, 3 Sep 2019 10:24:07 +0000 Subject: [PATCH] [mips] Switch to the `.text` section after emitting asm file preamble Now the last `.section` directive in the MIPS asm file preamble is the `.section .mdebug.abi`. If assembler code injected for example by the LLVM `module asm` or the C ` __asm` directives do not contain explicit switching to the `.text` section it goes to the `.mdebug.abi` section. It might be unexpected to the user and in fact for example breaks building some existing code like FreeBSD libc [1]. The patch forces switching to the `.text` section after emitting MIPS assembler file preamble. [1] https://bugs.llvm.org/show_bug.cgi?id=43119 Fix PR43119. Differential Revision: https://reviews.llvm.org/D67014 llvm-svn: 370735 --- llvm/lib/Target/Mips/MipsAsmPrinter.cpp | 4 ++++ llvm/test/CodeGen/Mips/start-asm-file.ll | 1 + 2 files changed, 5 insertions(+) diff --git a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp index d9e4785..b9e67bb 100644 --- a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp +++ b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp @@ -56,6 +56,7 @@ #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/TargetRegistry.h" #include "llvm/Support/raw_ostream.h" +#include "llvm/Target/TargetLoweringObjectFile.h" #include "llvm/Target/TargetMachine.h" #include #include @@ -821,6 +822,9 @@ void MipsAsmPrinter::EmitStartOfAsmFile(Module &M) { // option has changed the default (i.e. FPXX) and omit it otherwise. if (ABI.IsO32() && (!STI.useOddSPReg() || STI.isABI_FPXX())) TS.emitDirectiveModuleOddSPReg(); + + // Switch to the .text section. + OutStreamer->SwitchSection(getObjFileLowering().getTextSection()); } void MipsAsmPrinter::emitInlineAsmStart() const { diff --git a/llvm/test/CodeGen/Mips/start-asm-file.ll b/llvm/test/CodeGen/Mips/start-asm-file.ll index b80f20a..b827057 100644 --- a/llvm/test/CodeGen/Mips/start-asm-file.ll +++ b/llvm/test/CodeGen/Mips/start-asm-file.ll @@ -71,4 +71,5 @@ ; CHECK: .section .mdebug.abi[[ABI]] ; CHECK: .nan [[NAN]] +; CHECK: .text ; CHECK: .file -- 2.7.4