forked from OSchip/llvm-project
Use the correct section types on Solaris for unwind data on both x86 and x86-64.
Patch by Dmitri Shubin! llvm-svn: 154391
This commit is contained in:
parent
bc42d44112
commit
bbec87205d
|
@ -47,6 +47,7 @@ protected:
|
||||||
unsigned FDECFIEncoding;
|
unsigned FDECFIEncoding;
|
||||||
unsigned TTypeEncoding;
|
unsigned TTypeEncoding;
|
||||||
// Section flags for eh_frame
|
// Section flags for eh_frame
|
||||||
|
unsigned EHSectionType;
|
||||||
unsigned EHSectionFlags;
|
unsigned EHSectionFlags;
|
||||||
|
|
||||||
/// TextSection - Section directive for standard text.
|
/// TextSection - Section directive for standard text.
|
||||||
|
|
|
@ -260,9 +260,14 @@ void MCObjectFileInfo::InitELFMCObjectFileInfo(Triple T) {
|
||||||
|
|
||||||
// Solaris requires different flags for .eh_frame to seemingly every other
|
// Solaris requires different flags for .eh_frame to seemingly every other
|
||||||
// platform.
|
// platform.
|
||||||
|
EHSectionType = ELF::SHT_PROGBITS;
|
||||||
EHSectionFlags = ELF::SHF_ALLOC;
|
EHSectionFlags = ELF::SHF_ALLOC;
|
||||||
if (T.getOS() == Triple::Solaris)
|
if (T.getOS() == Triple::Solaris) {
|
||||||
EHSectionFlags |= ELF::SHF_WRITE;
|
if (T.getArch() == Triple::x86_64)
|
||||||
|
EHSectionType = ELF::SHT_X86_64_UNWIND;
|
||||||
|
else
|
||||||
|
EHSectionFlags |= ELF::SHF_WRITE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ELF
|
// ELF
|
||||||
|
@ -575,7 +580,7 @@ void MCObjectFileInfo::InitEHFrameSection() {
|
||||||
SectionKind::getReadOnly());
|
SectionKind::getReadOnly());
|
||||||
else if (Env == IsELF)
|
else if (Env == IsELF)
|
||||||
EHFrameSection =
|
EHFrameSection =
|
||||||
Ctx->getELFSection(".eh_frame", ELF::SHT_PROGBITS,
|
Ctx->getELFSection(".eh_frame", EHSectionType,
|
||||||
EHSectionFlags,
|
EHSectionFlags,
|
||||||
SectionKind::getDataRel());
|
SectionKind::getDataRel());
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue