[PATCH] D67014: [mips] Switch to the `.text` section after emitting asm file preamble

Simon Atanasyan via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 30 11:10:58 PDT 2019


atanasyan created this revision.
atanasyan added a reviewer: Petar.Avramovic.
Herald added subscribers: jrtc27, hiraditya, krytarowski, arichardson, sdardis, emaste.
Herald added a project: LLVM.

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.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D67014

Files:
  llvm/lib/Target/Mips/MipsAsmPrinter.cpp
  llvm/test/CodeGen/Mips/start-asm-file.ll


Index: llvm/test/CodeGen/Mips/start-asm-file.ll
===================================================================
--- llvm/test/CodeGen/Mips/start-asm-file.ll
+++ llvm/test/CodeGen/Mips/start-asm-file.ll
@@ -71,4 +71,5 @@
 
 ; CHECK: .section .mdebug.abi[[ABI]]
 ; CHECK: .nan [[NAN]]
+; CHECK: .text
 ; CHECK: .file
Index: llvm/lib/Target/Mips/MipsAsmPrinter.cpp
===================================================================
--- llvm/lib/Target/Mips/MipsAsmPrinter.cpp
+++ 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 <cassert>
 #include <cstdint>
@@ -821,6 +822,9 @@
   // 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 {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D67014.218135.patch
Type: text/x-patch
Size: 1151 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190830/00e04176/attachment.bin>


More information about the llvm-commits mailing list