diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-14 19:40:55 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-14 19:40:55 +0000 |
commit | 765fb1a446e0f1f338858dc628b4a7a60da37e80 (patch) | |
tree | 6b14da43edc1a35f22f0989739bfedd8c1574fc3 | |
parent | 60d5b5fdeec64b69c92db60242d3d90b3f978e69 (diff) |
Fix the type of a symbol created with .comm and no corresponding .type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119060 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/MC/MCELFStreamer.cpp | 1 | ||||
-rw-r--r-- | test/MC/ELF/common.s | 12 |
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: ), |