COFFSection *coff_section = createSection(Sec.getSectionName());
COFFSymbol *coff_symbol = createSymbol(Sec.getSectionName());
- if (const MCSymbol *S = Sec.getCOMDATSymbol()) {
- COFFSymbol *COMDATSymbol = GetOrCreateCOFFSymbol(S);
- assert(!COMDATSymbol->Section);
- COMDATSymbol->Section = coff_section;
- }
coff_section->Symbol = coff_symbol;
coff_symbol->Section = coff_section;
coff_symbol->Data.SectionNumber = COFF::IMAGE_SYM_ABSOLUTE;
} else {
const MCSymbolData &BaseData = Assembler.getSymbolData(*Base);
- if (BaseData.Fragment) {
- COFFSection *Sec =
+ if (BaseData.Fragment)
+ coff_symbol->Section =
SectionMap[&BaseData.Fragment->getParent()->getSection()];
-
- if (coff_symbol->Section && coff_symbol->Section != Sec)
- report_fatal_error("conflicting sections for symbol");
-
- coff_symbol->Section = Sec;
- }
}
coff_symbol->MCData = &ResSymData;
Symbol7:
.long 1
-.section SecName, "dr", newest, "Symbol8"
-.globl AnotherSymbol
-AnotherSymbol:
-.long 1
-
// CHECK: Sections [
// CHECK: Section {
// CHECK: Number: 1
// CHECK: }
// CHECK: }
// CHECK: Symbol {
-// CHECK: Name: Symbol1
-// CHECK: Section: secName (2)
-// CHECK: }
-// CHECK: Symbol {
// CHECK: Name: secName
// CHECK: Section: secName (3)
// CHECK: AuxSectionDef {
// CHECK: }
// CHECK: }
// CHECK: Symbol {
-// CHECK: Name: Symbol2
-// CHECK: Section: secName (3)
-// CHECK: }
-// CHECK: Symbol {
// CHECK: Name: SecName
// CHECK: Section: SecName (4)
// CHECK: AuxSectionDef {
// CHECK: }
// CHECK: }
// CHECK: Symbol {
-// CHECK: Name: Symbol3
-// CHECK: Section: SecName (4)
-// CHECK: }
-// CHECK: Symbol {
// CHECK: Name: SecName
// CHECK: Section: SecName (5)
// CHECK: AuxSymbolCount: 1
// CHECK: }
// CHECK: }
// CHECK: Symbol {
-// CHECK: Name: Symbol4
-// CHECK: Section: SecName (5)
-// CHECK: }
-// CHECK: Symbol {
// CHECK: Name: SecName
// CHECK: Section: SecName (6)
// CHECK: AuxSectionDef {
// CHECK: }
// CHECK: }
// CHECK: Symbol {
-// CHECK: Name: Symbol5
-// CHECK: Section: SecName (6)
-// CHECK: }
-// CHECK: Symbol {
// CHECK: Name: SecName
// CHECK: Section: SecName (7)
// CHECK: AuxSectionDef {
// CHECK: }
// CHECK: }
// CHECK: Symbol {
-// CHECK: Name: Symbol6
-// CHECK: Section: SecName (7)
-// CHECK: }
-// CHECK: Symbol {
// CHECK: Name: SecName
// CHECK: Section: SecName (8)
// CHECK: AuxSectionDef {
// CHECK: }
// CHECK: }
// CHECK: Symbol {
-// CHECK: Name: Symbol7
-// CHECK: Section: SecName (8)
+// CHECK: Name: Symbol1
+// CHECK: Section: secName (2)
// CHECK: }
// CHECK: Symbol {
-// CHECK: Name: SecName
-// CHECK: Section: SecName (9)
-// CHECK: AuxSectionDef {
-// CHECK: Selection: Newest (0x7)
-// CHECK: }
+// CHECK: Name: Symbol2
+// CHECK: Section: secName (3)
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: Symbol3
+// CHECK: Section: SecName (4)
// CHECK: }
// CHECK: Symbol {
-// CHECK: Name: Symbol8
-// CHECK: Section: SecName (9)
+// CHECK: Name: Symbol4
+// CHECK: Section: SecName (5)
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: Symbol5
+// CHECK: Section: SecName (6)
// CHECK: }
// CHECK: Symbol {
-// CHECK: Name: AnotherSymbol
-// CHECK: Section: SecName (9)
+// CHECK: Name: Symbol6
+// CHECK: Section: SecName (7)
+// CHECK: }
+// CHECK: Symbol {
+// CHECK: Name: Symbol7
+// CHECK: Section: SecName (8)
// CHECK: }
// CHECK: ]