Parse and record the gnu_unique_object type.
authorRafael Espindola <rafael.espindola@gmail.com>
Sat, 13 Nov 2010 04:51:02 +0000 (04:51 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sat, 13 Nov 2010 04:51:02 +0000 (04:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118980 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCDirectives.h
lib/MC/MCMachOStreamer.cpp
lib/MC/MCParser/ELFAsmParser.cpp
test/MC/ELF/type.s

index 5c1b848ade4c4356571c6378126af5b0ac91f1ad..03337a9f521cbd597df18047f8f99aa218f82a07 100644 (file)
@@ -26,6 +26,7 @@ enum MCSymbolAttr {
   MCSA_ELF_TypeTLS,         ///< .type _foo, STT_TLS     # aka @tls_object
   MCSA_ELF_TypeCommon,      ///< .type _foo, STT_COMMON  # aka @common
   MCSA_ELF_TypeNoType,      ///< .type _foo, STT_NOTYPE  # aka @notype
+  MCSA_ELF_TypeGnuUniqueObject, /// .type _foo, @gnu_unique_object
   MCSA_Global,              ///< .globl
   MCSA_Hidden,              ///< .hidden (ELF)
   MCSA_IndirectSymbol,      ///< .indirect_symbol (MachO)
index 8759f2b51ca6c369d2e52f046887ea01847d7590..b8640d3b08e1420342cece9dec2866e9abf0bffa 100644 (file)
@@ -206,6 +206,7 @@ void MCMachOStreamer::EmitSymbolAttribute(MCSymbol *Symbol,
   case MCSA_ELF_TypeTLS:
   case MCSA_ELF_TypeCommon:
   case MCSA_ELF_TypeNoType:
+  case MCSA_ELF_TypeGnuUniqueObject:
   case MCSA_IndirectSymbol:
   case MCSA_Hidden:
   case MCSA_Internal:
index b3d5f11e0eb62faa2b3df5d8296a5a82c3a41f8d..d074ea9d781e1e1845198a61baa3b01888904a46 100644 (file)
@@ -370,6 +370,7 @@ bool ELFAsmParser::ParseDirectiveType(StringRef, SMLoc) {
     .Case("tls_object", MCSA_ELF_TypeTLS)
     .Case("common", MCSA_ELF_TypeCommon)
     .Case("notype", MCSA_ELF_TypeNoType)
+    .Case("gnu_unique_object", MCSA_ELF_TypeGnuUniqueObject)
     .Default(MCSA_Invalid);
 
   if (Attr == MCSA_Invalid)
index 8738433de66b1a5e236673a76532468dcefff057..a2d07878ea53401d29e0d54f38b478e8aef54f41 100644 (file)
@@ -9,6 +9,9 @@ foo:
         .type bar,@object
 bar:
 
+// Test that gnu_unique_object is accepted.
+        .type zed,@gnu_unique_object
+
 // CHECK:      # Symbol 0x00000004
 // CHECK-NEXT: (('st_name', 0x00000005) # 'bar'
 // CHECK-NEXT:  ('st_bind', 0x00000001)