diff options
author | Bill Wendling <isanbard@gmail.com> | 2009-12-14 21:49:44 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2009-12-14 21:49:44 +0000 |
commit | 1bdf5d6f75fb31587c6ae10d0cad2a2f9337d5c8 (patch) | |
tree | 71c6eb0a70e62139ea1bdbb31b09398a92953186 /llvm/lib/CodeGen | |
parent | 9ac0a04b297805d2dbc729baed7641934bbb8db4 (diff) | |
download | bcm5719-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.cpp | 13 |
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); |