mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-19 06:31:18 +00:00
Fix several bugs in named sections handling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53312 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b20015b621
commit
2a889172a4
@ -235,7 +235,7 @@ TargetAsmInfo::SectionFlagsForGlobal(const GlobalValue *GV,
|
||||
}
|
||||
|
||||
// Add flags from sections, if any.
|
||||
if (Name) {
|
||||
if (Name && *Name) {
|
||||
Flags |= SectionFlags::Named;
|
||||
|
||||
// Some lame default implementation based on some magic section names.
|
||||
@ -279,7 +279,7 @@ TargetAsmInfo::SectionForGlobal(const GlobalValue *GV) const {
|
||||
// directive and also append funky flags. Otherwise - section name is just
|
||||
// some magic assembler directive.
|
||||
if (Flags & SectionFlags::Named)
|
||||
Name = SwitchToSectionDirective + Name + PrintSectionFlags(Flags);
|
||||
Name = getSwitchToSectionDirective() + Name + PrintSectionFlags(Flags);
|
||||
|
||||
return Name;
|
||||
}
|
||||
|
@ -336,9 +336,9 @@ X86ELFTargetAsmInfo::X86ELFTargetAsmInfo(const X86TargetMachine &TM):
|
||||
bool is64Bit = X86TM->getSubtarget<X86Subtarget>().is64Bit();
|
||||
|
||||
ReadOnlySection = ".rodata";
|
||||
FourByteConstantSection = ".rodata.cst";
|
||||
EightByteConstantSection = ".rodata.cst";
|
||||
SixteenByteConstantSection = ".rodata.cst";
|
||||
FourByteConstantSection = "\t.section\t.rodata.cst4,\"aM\",@progbits,4";
|
||||
EightByteConstantSection = "\t.section\t.rodata.cst8,\"aM\",@progbits,8";
|
||||
SixteenByteConstantSection = "\t.section\t.rodata.cst16,\"aM\",@progbits,16";
|
||||
CStringSection = ".rodata.str";
|
||||
PrivateGlobalPrefix = ".L";
|
||||
WeakRefDirective = "\t.weak\t";
|
||||
@ -466,12 +466,10 @@ X86ELFTargetAsmInfo::MergeableConstSection(const GlobalVariable *GV) const {
|
||||
unsigned Size = SectionFlags::getEntitySize(Flags);
|
||||
|
||||
// FIXME: string here is temporary, until stuff will fully land in.
|
||||
if (Size == 4)
|
||||
return FourByteConstantSection;
|
||||
else if (Size == 8)
|
||||
return EightByteConstantSection;
|
||||
else if (Size == 16)
|
||||
return SixteenByteConstantSection;
|
||||
// We cannot use {Four,Eight,Sixteen}ByteConstantSection here, since it's
|
||||
// currently directly used by asmprinter.
|
||||
if (Size == 4 || Size == 8 || Size == 16)
|
||||
return ".rodata.cst" + utostr(Size);
|
||||
|
||||
return getReadOnlySection();
|
||||
}
|
||||
@ -525,8 +523,8 @@ X86ELFTargetAsmInfo::SectionFlagsForGlobal(const GlobalValue *GV,
|
||||
|
||||
// Mark section as named, when needed (so, we we will need .section directive
|
||||
// to switch into it).
|
||||
if (Flags & (SectionFlags::Mergeable ||
|
||||
SectionFlags::TLS ||
|
||||
if (Flags & (SectionFlags::Mergeable |
|
||||
SectionFlags::TLS |
|
||||
SectionFlags::Linkonce))
|
||||
Flags |= SectionFlags::Named;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user