mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
Revert r150814. It turns out that there is a good reason for this after all...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150818 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0f7de3542f
commit
8bb51ef6d2
@ -284,6 +284,8 @@ public:
|
|||||||
const MCSection *getXDataSection() const { return XDataSection; }
|
const MCSection *getXDataSection() const { return XDataSection; }
|
||||||
|
|
||||||
const MCSection *getEHFrameSection() {
|
const MCSection *getEHFrameSection() {
|
||||||
|
if (!EHFrameSection)
|
||||||
|
InitEHFrameSection();
|
||||||
return EHFrameSection;
|
return EHFrameSection;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,6 +300,9 @@ private:
|
|||||||
void InitELFMCObjectFileInfo(Triple T);
|
void InitELFMCObjectFileInfo(Triple T);
|
||||||
void InitCOFFMCObjectFileInfo(Triple T);
|
void InitCOFFMCObjectFileInfo(Triple T);
|
||||||
|
|
||||||
|
/// InitEHFrameSection - Initialize EHFrameSection on demand.
|
||||||
|
///
|
||||||
|
void InitEHFrameSection();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end namespace llvm
|
} // end namespace llvm
|
||||||
|
@ -142,14 +142,6 @@ void MCObjectFileInfo::InitMachOMCObjectFileInfo(Triple T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Exception Handling.
|
// Exception Handling.
|
||||||
EHFrameSection =
|
|
||||||
Ctx->getMachOSection("__TEXT", "__eh_frame",
|
|
||||||
MCSectionMachO::S_COALESCED |
|
|
||||||
MCSectionMachO::S_ATTR_NO_TOC |
|
|
||||||
MCSectionMachO::S_ATTR_STRIP_STATIC_SYMS |
|
|
||||||
MCSectionMachO::S_ATTR_LIVE_SUPPORT,
|
|
||||||
SectionKind::getReadOnly());
|
|
||||||
|
|
||||||
LSDASection = Ctx->getMachOSection("__TEXT", "__gcc_except_tab", 0,
|
LSDASection = Ctx->getMachOSection("__TEXT", "__gcc_except_tab", 0,
|
||||||
SectionKind::getReadOnlyWithRel());
|
SectionKind::getReadOnlyWithRel());
|
||||||
|
|
||||||
@ -347,17 +339,6 @@ void MCObjectFileInfo::InitELFMCObjectFileInfo(Triple T) {
|
|||||||
|
|
||||||
// Exception Handling Sections.
|
// Exception Handling Sections.
|
||||||
|
|
||||||
// Solaris requires different flags for .eh_frame to seemingly every other
|
|
||||||
// platform.
|
|
||||||
unsigned EHSectionFlags = ELF::SHF_ALLOC;
|
|
||||||
if (T.getOS() == Triple::Solaris)
|
|
||||||
EHSectionFlags |= ELF::SHF_WRITE;
|
|
||||||
|
|
||||||
EHFrameSection =
|
|
||||||
Ctx->getELFSection(".eh_frame", ELF::SHT_PROGBITS,
|
|
||||||
EHSectionFlags,
|
|
||||||
SectionKind::getDataRel());
|
|
||||||
|
|
||||||
// FIXME: We're emitting LSDA info into a readonly section on ELF, even though
|
// FIXME: We're emitting LSDA info into a readonly section on ELF, even though
|
||||||
// it contains relocatable pointers. In PIC mode, this is probably a big
|
// it contains relocatable pointers. In PIC mode, this is probably a big
|
||||||
// runtime hit for C++ apps. Either the contents of the LSDA need to be
|
// runtime hit for C++ apps. Either the contents of the LSDA need to be
|
||||||
@ -434,13 +415,6 @@ void MCObjectFileInfo::InitCOFFMCObjectFileInfo(Triple T) {
|
|||||||
COFF::IMAGE_SCN_MEM_WRITE,
|
COFF::IMAGE_SCN_MEM_WRITE,
|
||||||
SectionKind::getDataRel());
|
SectionKind::getDataRel());
|
||||||
|
|
||||||
EHFrameSection =
|
|
||||||
Ctx->getCOFFSection(".eh_frame",
|
|
||||||
COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
|
|
||||||
COFF::IMAGE_SCN_MEM_READ |
|
|
||||||
COFF::IMAGE_SCN_MEM_WRITE,
|
|
||||||
SectionKind::getDataRel());
|
|
||||||
|
|
||||||
// FIXME: We're emitting LSDA info into a readonly section on COFF, even
|
// FIXME: We're emitting LSDA info into a readonly section on COFF, even
|
||||||
// though it contains relocatable pointers. In PIC mode, this is probably a
|
// though it contains relocatable pointers. In PIC mode, this is probably a
|
||||||
// big runtime hit for C++ apps. Either the contents of the LSDA need to be
|
// big runtime hit for C++ apps. Either the contents of the LSDA need to be
|
||||||
@ -573,3 +547,25 @@ void MCObjectFileInfo::InitMCObjectFileInfo(StringRef TT, Reloc::Model relocm,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MCObjectFileInfo::InitEHFrameSection() {
|
||||||
|
if (Env == IsMachO)
|
||||||
|
EHFrameSection =
|
||||||
|
Ctx->getMachOSection("__TEXT", "__eh_frame",
|
||||||
|
MCSectionMachO::S_COALESCED |
|
||||||
|
MCSectionMachO::S_ATTR_NO_TOC |
|
||||||
|
MCSectionMachO::S_ATTR_STRIP_STATIC_SYMS |
|
||||||
|
MCSectionMachO::S_ATTR_LIVE_SUPPORT,
|
||||||
|
SectionKind::getReadOnly());
|
||||||
|
else if (Env == IsELF)
|
||||||
|
EHFrameSection =
|
||||||
|
Ctx->getELFSection(".eh_frame", ELF::SHT_PROGBITS,
|
||||||
|
ELF::SHF_ALLOC,
|
||||||
|
SectionKind::getDataRel());
|
||||||
|
else
|
||||||
|
EHFrameSection =
|
||||||
|
Ctx->getCOFFSection(".eh_frame",
|
||||||
|
COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
|
||||||
|
COFF::IMAGE_SCN_MEM_READ |
|
||||||
|
COFF::IMAGE_SCN_MEM_WRITE,
|
||||||
|
SectionKind::getDataRel());
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user