summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2009-12-14 21:49:44 +0000
committerBill Wendling <isanbard@gmail.com>2009-12-14 21:49:44 +0000
commit1bdf5d6f75fb31587c6ae10d0cad2a2f9337d5c8 (patch)
tree71c6eb0a70e62139ea1bdbb31b09398a92953186 /llvm/lib/CodeGen
parent9ac0a04b297805d2dbc729baed7641934bbb8db4 (diff)
downloadbcm5719-llvm-1bdf5d6f75fb31587c6ae10d0cad2a2f9337d5c8.tar.gz
bcm5719-llvm-1bdf5d6f75fb31587c6ae10d0cad2a2f9337d5c8.zip
The CIE says that the LSDA point in the FDE section is an "sdata4". That's fine,
but we need it to actually be 4-bytes in the FDE. llvm-svn: 91337
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp
index 1c8b8f46472..3fd077f6873 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp
@@ -292,14 +292,13 @@ void DwarfException::EmitFDE(const FunctionEHFrameInfo &EHFrameInfo) {
Asm->EmitULEB128Bytes(is4Byte ? 4 : 8);
Asm->EOL("Augmentation size");
+ // We force 32-bits here because we've encoded our LSDA in the CIE with
+ // `dwarf::DW_EH_PE_sdata4'. And the CIE and FDE should agree.
if (EHFrameInfo.hasLandingPads)
- EmitReference("exception", EHFrameInfo.Number, true, false);
- else {
- if (is4Byte)
- Asm->EmitInt32((int)0);
- else
- Asm->EmitInt64((int)0);
- }
+ EmitReference("exception", EHFrameInfo.Number, true, true);
+ else
+ Asm->EmitInt32((int)0);
+
Asm->EOL("Language Specific Data Area");
} else {
Asm->EmitULEB128Bytes(0);
OpenPOWER on IntegriCloud