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)