Generate the correct EH frame section types on Solaris, this time without breaking other platforms...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150819 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Chisnall 2012-02-17 17:31:15 +00:00
parent 8bb51ef6d2
commit 4cbcee1618
2 changed files with 10 additions and 1 deletions

View File

@ -47,6 +47,8 @@ protected:
unsigned FDEEncoding;
unsigned FDECFIEncoding;
unsigned TTypeEncoding;
// Section flags for eh_frame
unsigned EHSectionFlags;
/// TextSection - Section directive for standard text.
///

View File

@ -258,6 +258,13 @@ void MCObjectFileInfo::InitELFMCObjectFileInfo(Triple T) {
}
}
// Solaris requires different flags for .eh_frame to seemingly every other
// platform.
EHSectionFlags = ELF::SHF_ALLOC;
if (T.getOS() == Triple::Solaris)
EHSectionFlags |= ELF::SHF_WRITE;
// ELF
BSSSection =
Ctx->getELFSection(".bss", ELF::SHT_NOBITS,
@ -559,7 +566,7 @@ void MCObjectFileInfo::InitEHFrameSection() {
else if (Env == IsELF)
EHFrameSection =
Ctx->getELFSection(".eh_frame", ELF::SHT_PROGBITS,
ELF::SHF_ALLOC,
EHSectionFlags,
SectionKind::getDataRel());
else
EHFrameSection =