aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/MC/MCELFStreamer.cpp1
-rw-r--r--test/MC/ELF/common.s12
2 files changed, 13 insertions, 0 deletions
diff --git a/lib/MC/MCELFStreamer.cpp b/lib/MC/MCELFStreamer.cpp
index 1f4f1461a5..ba51f67f78 100644
--- a/lib/MC/MCELFStreamer.cpp
+++ b/lib/MC/MCELFStreamer.cpp
@@ -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) {
diff --git a/test/MC/ELF/common.s b/test/MC/ELF/common.s
index 9aa0c06298..96865befe3 100644
--- a/test/MC/ELF/common.s
+++ b/test/MC/ELF/common.s
@@ -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: ),