diff options
author | Bill Wendling <isanbard@gmail.com> | 2010-01-18 19:36:27 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2010-01-18 19:36:27 +0000 |
commit | a73e471c624aed4b80fd4468523df203dc19a87e (patch) | |
tree | 23938b90f1d315ff060a6c64554d42bdba0b256d | |
parent | e15bbff98dbbce2e3253bcc5489712ec011e2f60 (diff) | |
download | bcm5719-llvm-a73e471c624aed4b80fd4468523df203dc19a87e.tar.gz bcm5719-llvm-a73e471c624aed4b80fd4468523df203dc19a87e.zip |
- 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.
llvm-svn: 93753
-rw-r--r-- | llvm/include/llvm/Target/TargetMachine.h | 3 | ||||
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86TargetMachine.cpp | 4 |
3 files changed, 6 insertions, 3 deletions
diff --git a/llvm/include/llvm/Target/TargetMachine.h b/llvm/include/llvm/Target/TargetMachine.h index 74dd11fd035..15f4e6c35c0 100644 --- a/llvm/include/llvm/Target/TargetMachine.h +++ b/llvm/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/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp index 8de9bd65cac..01c32647740 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp +++ b/llvm/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/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp index ea21676c3b2..b778fc2f2c8 100644 --- a/llvm/lib/Target/X86/X86TargetMachine.cpp +++ b/llvm/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; } |