From a8c18890da312e810c687b78658dcd4c989b9776 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Mon, 18 Jan 2010 19:36:27 +0000 Subject: [PATCH] - Add a comment to the callback indicating that it's *extremely* not a good idea, but unfortunately necessary. - Default to using 4-bytes for the LSDA pointer encoding to agree with the encoded value in the CIE. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93753 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Target/TargetMachine.h | 3 +++ lib/CodeGen/AsmPrinter/DwarfException.cpp | 2 +- lib/Target/X86/X86TargetMachine.cpp | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/include/llvm/Target/TargetMachine.h b/include/llvm/Target/TargetMachine.h index 74dd11fd035..15f4e6c35c0 100644 --- a/include/llvm/Target/TargetMachine.h +++ b/include/llvm/Target/TargetMachine.h @@ -202,6 +202,9 @@ public: /// getLSDAEncoding - Returns the LSDA pointer encoding. The choices are /// 4-byte, 8-byte, and target default. + /// FIXME: This call-back isn't good! We should be using the correct encoding + /// regardless of the system. However, there are some systems which have bugs + /// that prevent this from occuring. virtual DwarfLSDAEncoding::Encoding getLSDAEncoding() const { return DwarfLSDAEncoding::Default; } diff --git a/lib/CodeGen/AsmPrinter/DwarfException.cpp b/lib/CodeGen/AsmPrinter/DwarfException.cpp index 8de9bd65cac..01c32647740 100644 --- a/lib/CodeGen/AsmPrinter/DwarfException.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfException.cpp @@ -283,7 +283,7 @@ void DwarfException::EmitFDE(const FunctionEHFrameInfo &EHFrameInfo) { if (MMI->getPersonalities()[0] != NULL) { bool is4Byte = TD->getPointerSize() == sizeof(int32_t); - if (Asm->TM.getLSDAEncoding() == DwarfLSDAEncoding::FourByte) { + if (Asm->TM.getLSDAEncoding() != DwarfLSDAEncoding::EightByte) { Asm->EmitULEB128Bytes(4); Asm->EOL("Augmentation size"); diff --git a/lib/Target/X86/X86TargetMachine.cpp b/lib/Target/X86/X86TargetMachine.cpp index ea21676c3b2..b778fc2f2c8 100644 --- a/lib/Target/X86/X86TargetMachine.cpp +++ b/lib/Target/X86/X86TargetMachine.cpp @@ -251,8 +251,8 @@ void X86TargetMachine::setCodeModelForJIT() { } DwarfLSDAEncoding::Encoding X86TargetMachine::getLSDAEncoding() const { - if (Subtarget.isTargetDarwin() && Subtarget.getDarwinVers() > 10) + if (Subtarget.isTargetDarwin() && Subtarget.getDarwinVers() != 10) return DwarfLSDAEncoding::FourByte; - return DwarfLSDAEncoding::Default; + return DwarfLSDAEncoding::EightByte; }