diff options
Diffstat (limited to 'source/Symbol/UnwindPlan.cpp')
-rw-r--r-- | source/Symbol/UnwindPlan.cpp | 46 |
1 files changed, 26 insertions, 20 deletions
diff --git a/source/Symbol/UnwindPlan.cpp b/source/Symbol/UnwindPlan.cpp index 774f9cb587ee..15443ce5d8ac 100644 --- a/source/Symbol/UnwindPlan.cpp +++ b/source/Symbol/UnwindPlan.cpp @@ -170,7 +170,8 @@ operator==(const UnwindPlan::Row::FAValue &rhs) const { if (m_type == rhs.m_type) { switch (m_type) { case unspecified: - return true; + case isRaSearch: + return m_value.ra_search_offset == rhs.m_value.ra_search_offset; case isRegisterPlusOffset: return m_value.reg.offset == rhs.m_value.reg.offset; @@ -205,9 +206,12 @@ void UnwindPlan::Row::FAValue::Dump(Stream &s, const UnwindPlan *unwind_plan, llvm::makeArrayRef(m_value.expr.opcodes, m_value.expr.length), thread); break; - default: + case unspecified: s.PutCString("unspecified"); break; + case isRaSearch: + s.Printf("RaSearch@SP%+d", m_value.ra_search_offset); + break; } } @@ -402,10 +406,10 @@ const UnwindPlan::RowSP UnwindPlan::GetRowAtIndex(uint32_t idx) const { return m_row_list[idx]; else { Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_UNWIND)); - if (log) - log->Printf("error: UnwindPlan::GetRowAtIndex(idx = %u) invalid index " - "(number rows is %u)", - idx, (uint32_t)m_row_list.size()); + LLDB_LOGF(log, + "error: UnwindPlan::GetRowAtIndex(idx = %u) invalid index " + "(number rows is %u)", + idx, (uint32_t)m_row_list.size()); return UnwindPlan::RowSP(); } } @@ -413,8 +417,7 @@ const UnwindPlan::RowSP UnwindPlan::GetRowAtIndex(uint32_t idx) const { const UnwindPlan::RowSP UnwindPlan::GetLastRow() const { if (m_row_list.empty()) { Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_UNWIND)); - if (log) - log->Printf("UnwindPlan::GetLastRow() when rows are empty"); + LLDB_LOGF(log, "UnwindPlan::GetLastRow() when rows are empty"); return UnwindPlan::RowSP(); } return m_row_list.back(); @@ -434,13 +437,14 @@ bool UnwindPlan::PlanValidAtAddress(Address addr) { if (log) { StreamString s; if (addr.Dump(&s, nullptr, Address::DumpStyleSectionNameOffset)) { - log->Printf("UnwindPlan is invalid -- no unwind rows for UnwindPlan " - "'%s' at address %s", - m_source_name.GetCString(), s.GetData()); + LLDB_LOGF(log, + "UnwindPlan is invalid -- no unwind rows for UnwindPlan " + "'%s' at address %s", + m_source_name.GetCString(), s.GetData()); } else { - log->Printf( - "UnwindPlan is invalid -- no unwind rows for UnwindPlan '%s'", - m_source_name.GetCString()); + LLDB_LOGF(log, + "UnwindPlan is invalid -- no unwind rows for UnwindPlan '%s'", + m_source_name.GetCString()); } } return false; @@ -456,13 +460,15 @@ bool UnwindPlan::PlanValidAtAddress(Address addr) { if (log) { StreamString s; if (addr.Dump(&s, nullptr, Address::DumpStyleSectionNameOffset)) { - log->Printf("UnwindPlan is invalid -- no CFA register defined in row 0 " - "for UnwindPlan '%s' at address %s", - m_source_name.GetCString(), s.GetData()); + LLDB_LOGF(log, + "UnwindPlan is invalid -- no CFA register defined in row 0 " + "for UnwindPlan '%s' at address %s", + m_source_name.GetCString(), s.GetData()); } else { - log->Printf("UnwindPlan is invalid -- no CFA register defined in row 0 " - "for UnwindPlan '%s'", - m_source_name.GetCString()); + LLDB_LOGF(log, + "UnwindPlan is invalid -- no CFA register defined in row 0 " + "for UnwindPlan '%s'", + m_source_name.GetCString()); } } return false; |