From 45057343421c17e104fe7b4546d60056e8b68cfd Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Wed, 29 Jul 2009 21:19:44 +0000 Subject: [PATCH] Forgot to output the base offset. llvm-svn: 77505 --- llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp index 67f0e07..49512a3 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp @@ -269,8 +269,6 @@ unsigned DwarfException:: ComputeActionsTable(const SmallVectorImpl &LandingPads, SmallVectorImpl &Actions, SmallVectorImpl &FirstActions) { - const std::vector &FilterIds = MMI->getFilterIds(); - // Negative type IDs index into FilterIds. Positive type IDs index into // TypeInfos. The value written for a positive type ID is just the type ID // itself. For a negative type ID, however, the value written is the @@ -281,11 +279,14 @@ ComputeActionsTable(const SmallVectorImpl &LandingPads, // of complication does not occur for positive type IDs because type infos are // output using a fixed width encoding. FilterOffsets[i] holds the byte // offset corresponding to FilterIds[i]. + + const std::vector &FilterIds = MMI->getFilterIds(); SmallVector FilterOffsets; FilterOffsets.reserve(FilterIds.size()); int Offset = -1; - for(std::vector::const_iterator - I = FilterIds.begin(), E = FilterIds.end(); I != E; ++I) { + + for (std::vector::const_iterator + I = FilterIds.begin(), E = FilterIds.end(); I != E; ++I) { FilterOffsets.push_back(Offset); Offset -= TargetAsmInfo::getULEB128Size(*I); } @@ -295,6 +296,7 @@ ComputeActionsTable(const SmallVectorImpl &LandingPads, int FirstAction = 0; unsigned SizeActions = 0; const LandingPadInfo *PrevLPI = 0; + for (SmallVectorImpl::const_iterator I = LandingPads.begin(), E = LandingPads.end(); I != E; ++I) { const LandingPadInfo *LPI = *I; @@ -568,6 +570,8 @@ void DwarfException::EmitExceptionTable() { #else Asm->EmitInt8(dwarf::DW_EH_PE_absptr); Asm->EOL("TType format (DW_EH_PE_absptr)"); + Asm->EmitULEB128Bytes(TypeOffset); + Asm->EOL("TType base offset"); #endif Asm->EmitInt8(dwarf::DW_EH_PE_udata4); -- 2.7.4