Fix the type of a symbol created with .comm and no corresponding .type.
authorRafael Espindola <rafael.espindola@gmail.com>
Sun, 14 Nov 2010 19:40:55 +0000 (19:40 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sun, 14 Nov 2010 19:40:55 +0000 (19:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119060 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MCELFStreamer.cpp
test/MC/ELF/common.s

index 1f4f1461a571479c938f0e3f18cbbe69398ad91b..ba51f67f786298ac3ffb27cda9ca2a78e2873ab4 100644 (file)
@@ -409,6 +409,7 @@ void MCELFStreamer::EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
   if (!BindingExplicitlySet.count(Symbol)) {
     SetBinding(SD, ELF::STB_GLOBAL);
     SD.setExternal(true);
+    SetType(SD, ELF::STT_OBJECT);
   }
 
   if (GetBinding(SD) == ELF_STB_Local) {
index 9aa0c06298e48b39d1ff54ea49d216aa3e4ac650..96865befe385ff6679d3813ff3343226f765e1d6 100644 (file)
@@ -61,3 +61,15 @@ foo:
 // CHECK-NEXT: ('st_shndx', 0x0000fff2)
 // CHECK-NEXT: ('st_value', 0x00000010)
 // CHECK-NEXT: ('st_size', 0x00000028)
+
+        .comm  common5,4,4
+
+// CHECK:      # Symbol 0x00000008
+// CHECK-NEXT: (('st_name', 0x00000025) # 'common5'
+// CHECK-NEXT:  ('st_bind', 0x00000001)
+// CHECK-NEXT:  ('st_type', 0x00000001)
+// CHECK-NEXT:  ('st_other', 0x00000000)
+// CHECK-NEXT:  ('st_shndx', 0x0000fff2)
+// CHECK-NEXT:  ('st_value', 0x00000004)
+// CHECK-NEXT:  ('st_size', 0x00000004)
+// CHECK-NEXT: ),