unsigned ByteAlignment, bool External) {
assert(!Symbol->isInSection() && "Symbol must not already have a section!");
- std::string SectionName(".bss$linkonce");
- SectionName.append(Symbol->getName().begin(), Symbol->getName().end());
-
- MCSymbolData &SymbolData = getAssembler().getOrCreateSymbolData(*Symbol);
-
- unsigned Characteristics =
- COFF::IMAGE_SCN_LNK_COMDAT |
- COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA |
- COFF::IMAGE_SCN_MEM_READ |
- COFF::IMAGE_SCN_MEM_WRITE;
-
- int Selection = COFF::IMAGE_COMDAT_SELECT_LARGEST;
-
- const MCSection *Section = MCStreamer::getContext().getCOFFSection(
- SectionName, Characteristics, SectionKind::getBSS(), Symbol->getName(),
- Selection);
-
+ const MCSectionCOFF *Section = getSectionBSS();
MCSectionData &SectionData = getAssembler().getOrCreateSectionData(*Section);
-
if (SectionData.getAlignment() < ByteAlignment)
SectionData.setAlignment(ByteAlignment);
+ MCSymbolData &SymbolData = getAssembler().getOrCreateSymbolData(*Symbol);
SymbolData.setExternal(External);
AssignSection(Symbol, Section);
--- /dev/null
+// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -t | FileCheck %s
+
+.lcomm _a,4,4
+.comm _b, 4, 2
+
+
+// CHECK: Symbol {
+// CHECK: Name: _a
+// CHECK-NEXT: Value:
+// CHECK-NEXT: Section: .bss
+// CHECK-NEXT: BaseType: Null
+// CHECK-NEXT: ComplexType: Null
+// CHECK-NEXT: StorageClass: Static
+// CHECK-NEXT: AuxSymbolCount: 0
+// CHECK-NEXT: }
+
+// CHECK: Symbol {
+// CHECK: Name: _b
+// CHECK-NEXT: Value: 4
+// CHECK-NEXT: Section: .bss
+// CHECK-NEXT: BaseType: Null
+// CHECK-NEXT: ComplexType: Null
+// CHECK-NEXT: StorageClass: External
+// CHECK-NEXT: AuxSymbolCount: 0
+// CHECK-NEXT: }