[ELF] Print the .type assembly directive correctly for STT_NOTYPE
authorOliver Stannard <oliver.stannard@arm.com>
Fri, 9 Feb 2018 13:34:39 +0000 (13:34 +0000)
committerOliver Stannard <oliver.stannard@arm.com>
Fri, 9 Feb 2018 13:34:39 +0000 (13:34 +0000)
The llvm assembly parser and gas both accept "@notype" in the .type
assembly directive, but we were printing it as "@no_type", which isn't
accepted by either assembler.

Differential revision: https://reviews.llvm.org/D43116

llvm-svn: 324731

llvm/lib/MC/MCAsmStreamer.cpp
llvm/test/MC/ARM/type-directive-print.ll [new file with mode: 0644]

index bd26390..4e8dcf6 100644 (file)
@@ -565,7 +565,7 @@ bool MCAsmStreamer::EmitSymbolAttribute(MCSymbol *Symbol,
     case MCSA_ELF_TypeObject:      OS << "object"; break;
     case MCSA_ELF_TypeTLS:         OS << "tls_object"; break;
     case MCSA_ELF_TypeCommon:      OS << "common"; break;
-    case MCSA_ELF_TypeNoType:      OS << "no_type"; break;
+    case MCSA_ELF_TypeNoType:      OS << "notype"; break;
     case MCSA_ELF_TypeGnuUniqueObject: OS << "gnu_unique_object"; break;
     }
     EmitEOL();
diff --git a/llvm/test/MC/ARM/type-directive-print.ll b/llvm/test/MC/ARM/type-directive-print.ll
new file mode 100644 (file)
index 0000000..6b23b09
--- /dev/null
@@ -0,0 +1,17 @@
+; RUN: llc < %s -mtriple=armv7a | FileCheck %s
+
+module asm ".type test_notype, %notype"
+module asm ".type test_function, %function"
+module asm ".type test_object, %object"
+module asm ".type test_common, %common"
+module asm ".type test_tls_object, %tls_object"
+module asm ".type test_gnu_indirect_function, %gnu_indirect_function"
+module asm ".type test_gnu_unique_object, %gnu_unique_object"
+
+; CHECK: .type test_notype,%notype
+; CHECK: .type test_function,%function
+; CHECK: .type test_object,%object
+; CHECK: .type test_common,%common
+; CHECK: .type test_tls_object,%tls_object
+; CHECK: .type test_gnu_indirect_function,%gnu_indirect_function
+; CHECK: .type test_gnu_unique_object,%gnu_unique_object