summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2010-01-18 19:36:27 +0000
committerBill Wendling <isanbard@gmail.com>2010-01-18 19:36:27 +0000
commita73e471c624aed4b80fd4468523df203dc19a87e (patch)
tree23938b90f1d315ff060a6c64554d42bdba0b256d
parente15bbff98dbbce2e3253bcc5489712ec011e2f60 (diff)
downloadbcm5719-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.h3
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp2
-rw-r--r--llvm/lib/Target/X86/X86TargetMachine.cpp4
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;
}
OpenPOWER on IntegriCloud