diff options
author | jasonliu <jasonliu.development@gmail.com> | 2020-12-02 14:48:52 +0000 |
---|---|---|
committer | jasonliu <jasonliu.development@gmail.com> | 2020-12-02 18:42:44 +0000 |
commit | a65d8c5d720db8c646adb0ad9dac54da5d5fa230 (patch) | |
tree | f56efc405cd907274a7c263ce7256414f8a6a217 /llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | |
parent | 9d6d24c25056c17db56cf1ef5124f82eb18afc2c (diff) | |
download | llvm-a65d8c5d720db8c646adb0ad9dac54da5d5fa230.zip llvm-a65d8c5d720db8c646adb0ad9dac54da5d5fa230.tar.gz llvm-a65d8c5d720db8c646adb0ad9dac54da5d5fa230.tar.bz2 |
[XCOFF][AIX] Generate LSDA data and compact unwind section on AIX
Summary:
AIX uses the existing EH infrastructure in clang and llvm.
The major differences would be
1. AIX do not have CFI instructions.
2. AIX uses a new personality routine, named __xlcxx_personality_v1.
It doesn't use the GCC personality rountine, because the
interoperability is not there yet on AIX.
3. AIX do not use eh_frame sections. Instead, it would use a eh_info
section (compat unwind section) to store the information about
personality routine and LSDA data address.
Reviewed By: daltenty, hubert.reinterpretcast
Differential Revision: https://reviews.llvm.org/D91455
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
-rw-r--r-- | llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp index a6c5a26..4c8caa0 100644 --- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -2272,9 +2272,13 @@ MCSection *TargetLoweringObjectFileXCOFF::getSectionForConstant( void TargetLoweringObjectFileXCOFF::Initialize(MCContext &Ctx, const TargetMachine &TgtM) { TargetLoweringObjectFile::Initialize(Ctx, TgtM); - TTypeEncoding = 0; + TTypeEncoding = + dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_datarel | + (TgtM.getTargetTriple().isArch32Bit() ? dwarf::DW_EH_PE_sdata4 + : dwarf::DW_EH_PE_sdata8); PersonalityEncoding = 0; LSDAEncoding = 0; + CallSiteEncoding = dwarf::DW_EH_PE_udata4; } MCSection *TargetLoweringObjectFileXCOFF::getStaticCtorSection( |