mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 02:33:33 +00:00
[MC][COFF] Emit weak symbols to the correct section. Patch by Dmitry Puzirev!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167877 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2aac6161e4
commit
4de5872ded
@ -701,8 +701,19 @@ getCOFFSectionFlags(SectionKind K) {
|
||||
const MCSection *TargetLoweringObjectFileCOFF::
|
||||
getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind,
|
||||
Mangler *Mang, const TargetMachine &TM) const {
|
||||
return getContext().getCOFFSection(GV->getSection(),
|
||||
getCOFFSectionFlags(Kind),
|
||||
int Selection = 0;
|
||||
unsigned Characteristics = getCOFFSectionFlags(Kind);
|
||||
SmallString<128> Name(GV->getSection().c_str());
|
||||
if (GV->isWeakForLinker()) {
|
||||
Selection = COFF::IMAGE_COMDAT_SELECT_ANY;
|
||||
Characteristics |= COFF::IMAGE_SCN_LNK_COMDAT;
|
||||
MCSymbol *Sym = Mang->getSymbol(GV);
|
||||
Name.append("$");
|
||||
Name.append(Sym->getName().begin() + 1, Sym->getName().end());
|
||||
}
|
||||
return getContext().getCOFFSection(Name,
|
||||
Characteristics,
|
||||
Selection,
|
||||
Kind);
|
||||
}
|
||||
|
||||
|
23
test/MC/COFF/weak-symbol-section-specification.ll
Normal file
23
test/MC/COFF/weak-symbol-section-specification.ll
Normal file
@ -0,0 +1,23 @@
|
||||
; The purpose of this test is to verify that weak linkage type is not ignored by backend,
|
||||
; if section was specialized.
|
||||
|
||||
; RUN: llc -filetype=obj -mtriple i686-pc-win32 %s -o - | coff-dump.py | FileCheck %s
|
||||
|
||||
@a = weak unnamed_addr constant { i32, i32, i32 } { i32 0, i32 0, i32 0}, section ".data"
|
||||
|
||||
; CHECK: Name = .data$a
|
||||
; CHECK-NEXT: VirtualSize = 0
|
||||
; CHECK-NEXT: VirtualAddress = 0
|
||||
; CHECK-NEXT: SizeOfRawData = {{[0-9]+}}
|
||||
; CHECK-NEXT: PointerToRawData = 0x{{[0-9A-F]+}}
|
||||
; CHECK-NEXT: PointerToRelocations = 0x0
|
||||
; CHECK-NEXT: PointerToLineNumbers = 0x0
|
||||
; CHECK-NEXT: NumberOfRelocations = 0
|
||||
; CHECK-NEXT: NumberOfLineNumbers = 0
|
||||
; CHECK-NEXT: Charateristics = 0x40401040
|
||||
; CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
|
||||
; CHECK-NEXT: IMAGE_SCN_LNK_COMDAT
|
||||
; CHECK-NEXT: IMAGE_SCN_ALIGN_8BYTES
|
||||
; CHECK-NEXT: IMAGE_SCN_MEM_READ
|
||||
; CHECK-NEXT: SectionData =
|
||||
; CHECK-NEXT: 00 00 00 00 00 00 00 00 - 00 00 00 00
|
Loading…
x
Reference in New Issue
Block a user