diff options
author | Logan Chien <tzuhsiang.chien@gmail.com> | 2014-05-30 16:48:56 +0000 |
---|---|---|
committer | Logan Chien <tzuhsiang.chien@gmail.com> | 2014-05-30 16:48:56 +0000 |
commit | 731d23ed42db0f876f0c9b2a3985637ef4ec8384 (patch) | |
tree | e08fa24608817b6b422f7d2c2b96e650cd3634c7 /lib/MC | |
parent | ba735134d73c8df1aa2bb4f47cda962cc27e5e7f (diff) | |
download | llvm-731d23ed42db0f876f0c9b2a3985637ef4ec8384.tar.gz llvm-731d23ed42db0f876f0c9b2a3985637ef4ec8384.tar.bz2 llvm-731d23ed42db0f876f0c9b2a3985637ef4ec8384.tar.xz |
Fix MIPS exception personality encoding.
For MIPS, we have to encode the personality routine with
an indirect pointer to absptr; otherwise, some link warning
warning will be raised, and the program might crash in some
early MIPS Android device.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209907 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC')
-rw-r--r-- | lib/MC/MCObjectFileInfo.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/MC/MCObjectFileInfo.cpp b/lib/MC/MCObjectFileInfo.cpp index 9d413afe5d..2a9bf6ade9 100644 --- a/lib/MC/MCObjectFileInfo.cpp +++ b/lib/MC/MCObjectFileInfo.cpp @@ -321,6 +321,13 @@ void MCObjectFileInfo::InitELFMCObjectFileInfo(Triple T) { TTypeEncoding = dwarf::DW_EH_PE_absptr; } break; + case Triple::mips: + case Triple::mipsel: + // MIPS uses indirect pointer to refer personality functions, so that the + // eh_frame section can be read-only. DW.ref.personality will be generated + // for relocation. + PersonalityEncoding = dwarf::DW_EH_PE_indirect; + break; case Triple::ppc64: case Triple::ppc64le: PersonalityEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | |