diff --git a/libunwind/src/UnwindCursor.hpp b/libunwind/src/UnwindCursor.hpp --- a/libunwind/src/UnwindCursor.hpp +++ b/libunwind/src/UnwindCursor.hpp @@ -1963,6 +1963,7 @@ if ((sects.dwarf_section != 0) && compactSaysUseDwarf(&dwarfOffset)) { if (this->getInfoFromDwarfSection(pc, sects, dwarfOffset)) { // found info in dwarf, done + _unwindInfoMissing = false; return; } } @@ -1978,8 +1979,10 @@ #if defined(_LIBUNWIND_SUPPORT_SEH_UNWIND) // If there is SEH unwind info, look there next. - if (this->getInfoFromSEH(pc)) + if (this->getInfoFromSEH(pc)) { + _unwindInfoMissing = false; return; + } #endif #if defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND) @@ -1987,6 +1990,7 @@ if (sects.dwarf_section != 0) { if (this->getInfoFromDwarfSection(pc, sects)) { // found info in dwarf, done + _unwindInfoMissing = false; return; } } @@ -1994,8 +1998,10 @@ #if defined(_LIBUNWIND_ARM_EHABI) // If there is ARM EHABI unwind info, look there next. - if (sects.arm_section != 0 && this->getInfoFromEHABISection(pc, sects)) + if (sects.arm_section != 0 && this->getInfoFromEHABISection(pc, sects)) { + _unwindInfoMissing = false; return; + } #endif } @@ -2008,8 +2014,10 @@ typename CFI_Parser::FDE_Info fdeInfo; typename CFI_Parser::CIE_Info cieInfo; if (!CFI_Parser::decodeFDE(_addressSpace, cachedFDE, &fdeInfo, &cieInfo)) - if (getInfoFromFdeCie(fdeInfo, cieInfo, pc, 0)) + if (getInfoFromFdeCie(fdeInfo, cieInfo, pc, 0)) { + _unwindInfoMissing = false; return; + } } // Lastly, ask AddressSpace object about platform specific ways to locate @@ -2021,8 +2029,10 @@ if (!CFI_Parser::decodeFDE(_addressSpace, fde, &fdeInfo, &cieInfo)) { // Double check this FDE is for a function that includes the pc. if ((fdeInfo.pcStart <= pc) && (pc < fdeInfo.pcEnd)) - if (getInfoFromFdeCie(fdeInfo, cieInfo, pc, 0)) + if (getInfoFromFdeCie(fdeInfo, cieInfo, pc, 0)) { + _unwindInfoMissing = false; return; + } } } #endif // #if defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND)