summaryrefslogtreecommitdiff
path: root/lib/MC
diff options
context:
space:
mode:
authorLogan Chien <tzuhsiang.chien@gmail.com>2014-05-30 16:48:56 +0000
committerLogan Chien <tzuhsiang.chien@gmail.com>2014-05-30 16:48:56 +0000
commit731d23ed42db0f876f0c9b2a3985637ef4ec8384 (patch)
treee08fa24608817b6b422f7d2c2b96e650cd3634c7 /lib/MC
parentba735134d73c8df1aa2bb4f47cda962cc27e5e7f (diff)
downloadllvm-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.cpp7
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 |