diff --git a/lldb/include/lldb/Symbol/UnwindPlan.h b/lldb/include/lldb/Symbol/UnwindPlan.h --- a/lldb/include/lldb/Symbol/UnwindPlan.h +++ b/lldb/include/lldb/Symbol/UnwindPlan.h @@ -11,10 +11,10 @@ #include #include +#include #include #include "lldb/Core/AddressRange.h" -#include "lldb/Utility/ConstString.h" #include "lldb/Utility/Stream.h" #include "lldb/lldb-private.h" @@ -465,9 +465,9 @@ const UnwindPlan::RowSP GetLastRow() const; - lldb_private::ConstString GetSourceName() const; + const std::string &GetSourceName() const; - void SetSourceName(const char *); + void SetSourceName(std::string name); // Was this UnwindPlan emitted by a compiler? lldb_private::LazyBool GetSourcedFromCompiler() const { @@ -509,7 +509,7 @@ m_row_list.clear(); m_plan_valid_address_range.Clear(); m_register_kind = lldb::eRegisterKindDWARF; - m_source_name.Clear(); + m_source_name.clear(); m_plan_is_sourced_from_compiler = eLazyBoolCalculate; m_plan_is_valid_at_all_instruction_locations = eLazyBoolCalculate; m_plan_is_for_signal_trap = eLazyBoolCalculate; @@ -539,7 +539,7 @@ uint32_t m_return_addr_register; // The register that has the return address // for the caller frame // e.g. the lr on arm - lldb_private::ConstString + std::string m_source_name; // for logging, where this UnwindPlan originated from lldb_private::LazyBool m_plan_is_sourced_from_compiler; lldb_private::LazyBool m_plan_is_valid_at_all_instruction_locations; diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp --- a/lldb/source/Commands/CommandObjectTarget.cpp +++ b/lldb/source/Commands/CommandObjectTarget.cpp @@ -3458,21 +3458,21 @@ if (non_callsite_unwind_plan) { result.GetOutputStream().Printf( "Asynchronous (not restricted to call-sites) UnwindPlan is '%s'\n", - non_callsite_unwind_plan->GetSourceName().AsCString()); + non_callsite_unwind_plan->GetSourceName().c_str()); } UnwindPlanSP callsite_unwind_plan = func_unwinders_sp->GetUnwindPlanAtCallSite(*target, *thread); if (callsite_unwind_plan) { result.GetOutputStream().Printf( "Synchronous (restricted to call-sites) UnwindPlan is '%s'\n", - callsite_unwind_plan->GetSourceName().AsCString()); + callsite_unwind_plan->GetSourceName().c_str()); } UnwindPlanSP fast_unwind_plan = func_unwinders_sp->GetUnwindPlanFastUnwind(*target, *thread); if (fast_unwind_plan) { result.GetOutputStream().Printf( "Fast UnwindPlan is '%s'\n", - fast_unwind_plan->GetSourceName().AsCString()); + fast_unwind_plan->GetSourceName().c_str()); } result.GetOutputStream().Printf("\n"); diff --git a/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp b/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp --- a/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp +++ b/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp @@ -1554,9 +1554,9 @@ unwind_plan.SetPlanValidAddressRange(func_range); if (unwind_plan_updated) { - std::string unwind_plan_source(unwind_plan.GetSourceName().AsCString()); + std::string unwind_plan_source(unwind_plan.GetSourceName()); unwind_plan_source += " plus augmentation from assembly parsing"; - unwind_plan.SetSourceName(unwind_plan_source.c_str()); + unwind_plan.SetSourceName(std::move(unwind_plan_source)); unwind_plan.SetSourcedFromCompiler(eLazyBoolNo); unwind_plan.SetUnwindPlanValidAtAllInstructions(eLazyBoolYes); } diff --git a/lldb/source/Symbol/UnwindPlan.cpp b/lldb/source/Symbol/UnwindPlan.cpp --- a/lldb/source/Symbol/UnwindPlan.cpp +++ b/lldb/source/Symbol/UnwindPlan.cpp @@ -12,7 +12,6 @@ #include "lldb/Target/RegisterContext.h" #include "lldb/Target/Target.h" #include "lldb/Target/Thread.h" -#include "lldb/Utility/ConstString.h" #include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Log.h" #include "llvm/DebugInfo/DIContext.h" @@ -443,11 +442,11 @@ LLDB_LOGF(log, "UnwindPlan is invalid -- no unwind rows for UnwindPlan " "'%s' at address %s", - m_source_name.GetCString(), s.GetData()); + m_source_name.c_str(), s.GetData()); } else { LLDB_LOGF(log, "UnwindPlan is invalid -- no unwind rows for UnwindPlan '%s'", - m_source_name.GetCString()); + m_source_name.c_str()); } } return false; @@ -466,12 +465,12 @@ 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()); + m_source_name.c_str(), s.GetData()); } else { LLDB_LOGF(log, "UnwindPlan is invalid -- no CFA register defined in row 0 " "for UnwindPlan '%s'", - m_source_name.GetCString()); + m_source_name.c_str()); } } return false; @@ -491,9 +490,9 @@ } void UnwindPlan::Dump(Stream &s, Thread *thread, lldb::addr_t base_addr) const { - if (!m_source_name.IsEmpty()) { + if (!m_source_name.empty()) { s.Printf("This UnwindPlan originally sourced from %s\n", - m_source_name.GetCString()); + m_source_name.c_str()); } if (m_lsda_address.IsValid() && m_personality_func_addr.IsValid()) { TargetSP target_sp(thread->CalculateTarget()); @@ -561,11 +560,11 @@ } } -void UnwindPlan::SetSourceName(const char *source) { - m_source_name = ConstString(source); +void UnwindPlan::SetSourceName(std::string name) { + m_source_name = std::move(name); } -ConstString UnwindPlan::GetSourceName() const { return m_source_name; } +const std::string &UnwindPlan::GetSourceName() const { return m_source_name; } const RegisterInfo *UnwindPlan::GetRegisterInfo(Thread *thread, uint32_t unwind_reg) const { diff --git a/lldb/source/Target/RegisterContextUnwind.cpp b/lldb/source/Target/RegisterContextUnwind.cpp --- a/lldb/source/Target/RegisterContextUnwind.cpp +++ b/lldb/source/Target/RegisterContextUnwind.cpp @@ -300,9 +300,8 @@ UnwindLogMsg("initialized frame current pc is 0x%" PRIx64 " cfa is 0x%" PRIx64 " afa is 0x%" PRIx64 " using %s UnwindPlan", (uint64_t)m_current_pc.GetLoadAddress(exe_ctx.GetTargetPtr()), - (uint64_t)m_cfa, - (uint64_t)m_afa, - m_full_unwind_plan_sp->GetSourceName().GetCString()); + (uint64_t)m_cfa, (uint64_t)m_afa, + m_full_unwind_plan_sp->GetSourceName().c_str()); } // Initialize a RegisterContextUnwind for the non-zeroth frame -- rely on the @@ -645,7 +644,7 @@ active_row->Dump(active_row_strm, m_fast_unwind_plan_sp.get(), &m_thread, m_start_pc.GetLoadAddress(exe_ctx.GetTargetPtr())); UnwindLogMsg("Using fast unwind plan '%s'", - m_fast_unwind_plan_sp->GetSourceName().AsCString()); + m_fast_unwind_plan_sp->GetSourceName().c_str()); UnwindLogMsg("active row: %s", active_row_strm.GetData()); } } else { @@ -661,7 +660,7 @@ &m_thread, m_start_pc.GetLoadAddress(exe_ctx.GetTargetPtr())); UnwindLogMsg("Using full unwind plan '%s'", - m_full_unwind_plan_sp->GetSourceName().AsCString()); + m_full_unwind_plan_sp->GetSourceName().c_str()); UnwindLogMsg("active row: %s", active_row_strm.GetData()); } } @@ -957,7 +956,7 @@ if (unwind_plan_sp && unwind_plan_sp->PlanValidAtAddress(m_current_pc)) { UnwindLogMsgVerbose("frame uses %s for full UnwindPlan because the " "DynamicLoader suggested we prefer it", - unwind_plan_sp->GetSourceName().GetCString()); + unwind_plan_sp->GetSourceName().c_str()); return unwind_plan_sp; } } @@ -995,7 +994,7 @@ UnwindLogMsgVerbose("frame uses %s for full UnwindPlan because this " "is the non-call site unwind plan and this is a " "zeroth frame", - unwind_plan_sp->GetSourceName().GetCString()); + unwind_plan_sp->GetSourceName().c_str()); return unwind_plan_sp; } @@ -1007,9 +1006,10 @@ func_unwinders_sp->GetUnwindPlanArchitectureDefaultAtFunctionEntry( m_thread); if (unwind_plan_sp) { - UnwindLogMsgVerbose("frame uses %s for full UnwindPlan because we are at " - "the first instruction of a function", - unwind_plan_sp->GetSourceName().GetCString()); + UnwindLogMsgVerbose( + "frame uses %s for full UnwindPlan because we are at " + "the first instruction of a function", + unwind_plan_sp->GetSourceName().c_str()); return unwind_plan_sp; } } @@ -1024,7 +1024,7 @@ if (IsUnwindPlanValidForCurrentPC(unwind_plan_sp)) { UnwindLogMsgVerbose("frame uses %s for full UnwindPlan because this " "is the call-site unwind plan", - unwind_plan_sp->GetSourceName().GetCString()); + unwind_plan_sp->GetSourceName().c_str()); return unwind_plan_sp; } @@ -1061,9 +1061,10 @@ } if (IsUnwindPlanValidForCurrentPC(unwind_plan_sp)) { - UnwindLogMsgVerbose("frame uses %s for full UnwindPlan because we " - "failed to find a call-site unwind plan that would work", - unwind_plan_sp->GetSourceName().GetCString()); + UnwindLogMsgVerbose( + "frame uses %s for full UnwindPlan because we " + "failed to find a call-site unwind plan that would work", + unwind_plan_sp->GetSourceName().c_str()); return unwind_plan_sp; } @@ -1073,7 +1074,7 @@ UnwindLogMsgVerbose( "frame uses %s for full UnwindPlan because we are falling back " "to the arch default plan", - arch_default_unwind_plan_sp->GetSourceName().GetCString()); + arch_default_unwind_plan_sp->GetSourceName().c_str()); else UnwindLogMsg( "Unable to find any UnwindPlan for full unwind of this frame."); @@ -1337,7 +1338,7 @@ &m_thread, m_start_pc.GetLoadAddress(exe_ctx.GetTargetPtr())); UnwindLogMsg("Using full unwind plan '%s'", - m_full_unwind_plan_sp->GetSourceName().AsCString()); + m_full_unwind_plan_sp->GetSourceName().c_str()); UnwindLogMsg("active row: %s", active_row_strm.GetData()); } RegisterNumber return_address_reg; @@ -1393,7 +1394,7 @@ UnwindLogMsg( "supplying caller's saved %s (%d)'s location using %s UnwindPlan", regnum.GetName(), regnum.GetAsKind(eRegisterKindLLDB), - m_full_unwind_plan_sp->GetSourceName().GetCString()); + m_full_unwind_plan_sp->GetSourceName().c_str()); } // This is frame 0 and we're retrieving the PC and it's saved in a Return @@ -1448,7 +1449,7 @@ !m_all_registers_available) { UnwindLogMsg("%s UnwindPlan tried to restore the pc from the link " "register but this is a non-zero frame", - m_full_unwind_plan_sp->GetSourceName().GetCString()); + m_full_unwind_plan_sp->GetSourceName().c_str()); // Throw away the full unwindplan; install the arch default unwindplan if (ForceSwitchToFallbackUnwindPlan()) { @@ -1525,11 +1526,9 @@ return UnwindLLDB::RegisterSearchResult::eRegisterFound; } else { std::string unwindplan_name; - if (m_full_unwind_plan_sp) { - unwindplan_name += "via '"; - unwindplan_name += m_full_unwind_plan_sp->GetSourceName().AsCString(); - unwindplan_name += "'"; - } + if (m_full_unwind_plan_sp) + unwindplan_name += + "via '" + m_full_unwind_plan_sp->GetSourceName() + "'"; UnwindLogMsg("no save location for %s (%d) %s", regnum.GetName(), regnum.GetAsKind(eRegisterKindLLDB), unwindplan_name.c_str()); @@ -1845,8 +1844,8 @@ UnwindLogMsg("trying to unwind from this function with the UnwindPlan '%s' " "because UnwindPlan '%s' failed.", - m_fallback_unwind_plan_sp->GetSourceName().GetCString(), - original_full_unwind_plan_sp->GetSourceName().GetCString()); + m_fallback_unwind_plan_sp->GetSourceName().c_str(), + original_full_unwind_plan_sp->GetSourceName().c_str()); // We've copied the fallback unwind plan into the full - now clear the // fallback. @@ -1898,7 +1897,7 @@ PropagateTrapHandlerFlagFromUnwindPlan(m_full_unwind_plan_sp); UnwindLogMsg("switched unconditionally to the fallback unwindplan %s", - m_full_unwind_plan_sp->GetSourceName().GetCString()); + m_full_unwind_plan_sp->GetSourceName().c_str()); return true; } return false;