43 std::lock_guard<std::mutex> guard(
m_mutex);
74 std::make_unique<CompactUnwindInfo>(*object_file, sect);
79 if (sect_extab.get()) {
81 std::make_unique<ArmUnwindInfo>(*object_file, sect, sect_extab);
87 std::lock_guard<std::mutex> guard(
m_mutex);
110 result.push_back(range);
137 std::lock_guard<std::mutex> guard(
m_mutex);
143 auto pos = std::prev(insert_pos);
144 if (pos->second->ContainsAddress(addr))
153 auto func_unwinder_sp =
154 std::make_shared<FuncUnwinders>(*
this, start_addr, ranges);
156 m_unwinds.emplace_hint(insert_pos, range.GetBaseAddress().GetFileAddress(),
158 return func_unwinder_sp;
174 return std::make_shared<FuncUnwinders>(*
this, start_addr, std::move(ranges));
178 std::lock_guard<std::mutex> guard(
m_mutex);
183 s.
Printf(
"[%u] 0x%16.16" PRIx64
"\n", (
unsigned)std::distance(begin, pos),
220 return object_file->AllowAssemblyEmulationUnwindPlans();
static Address GetFunctionOrSymbolAddress(const Address &addr, const SymbolContext &sc)
A section + offset based address range class.
Address & GetBaseAddress()
Get accessor for the base address of the range.
A section + offset based address class.
lldb::addr_t GetFileAddress() const
Get the file address.
bool IsValid() const
Check if the object state is valid.
An architecture specification class.
A class that describes an executable image and its associated object and symbol files.
A plug-in interface definition class for object file parsers.
virtual std::unique_ptr< CallFrameInfo > CreateCallFrameInfo()
Creates a plugin-specific call frame info.
lldb::SectionSP FindSectionByType(lldb::SectionType sect_type, bool check_children, size_t start_idx=0) const
A stream class that can stream formatted output to a file.
void Format(const char *format, Args &&... args)
size_t Printf(const char *format,...) __attribute__((format(printf
Output printf formatted output to the stream.
size_t EOL()
Output and End of Line character to the stream.
Defines a symbol context baton that can be handed other debug core functions.
bool GetAddressRange(uint32_t scope, uint32_t range_idx, bool use_inline_block_range, AddressRange &range) const
Get the address range contained within a symbol context.
Address GetFunctionOrSymbolAddress() const
Get the address of the function or symbol represented by this symbol context.
Provides public interface for all SymbolFiles.
AddressRanges GetAddressRanges(const Address &addr, const SymbolContext &sc)
lldb_private::DWARFCallFrameInfo * GetEHFrameInfo()
std::unique_ptr< DWARFCallFrameInfo > m_debug_frame_up
std::unique_ptr< CallFrameInfo > m_object_file_unwind_up
bool GetAllowAssemblyEmulationUnwindPlans()
ArmUnwindInfo * GetArmUnwindInfo()
std::unique_ptr< DWARFCallFrameInfo > m_eh_frame_up
bool m_scanned_all_unwind_sources
UnwindTable(Module &module)
Create an Unwind table using the data in the given module.
std::unique_ptr< CompactUnwindInfo > m_compact_unwind_up
SymbolFile * GetSymbolFile()
ArchSpec GetArchitecture()
collection::const_iterator const_iterator
lldb::FuncUnwindersSP GetFuncUnwindersContainingAddress(const Address &addr, const SymbolContext &sc)
void ModuleWasUpdated()
Called after an ObjectFile/SymbolFile has been added to a Module to add any new unwind sections that ...
lldb_private::DWARFCallFrameInfo * GetDebugFrameInfo()
lldb::FuncUnwindersSP GetUncachedFuncUnwindersContainingAddress(const Address &addr, const SymbolContext &sc)
lldb_private::CompactUnwindInfo * GetCompactUnwindInfo()
lldb_private::CallFrameInfo * GetObjectFileUnwindInfo()
collection::iterator iterator
std::unique_ptr< ArmUnwindInfo > m_arm_unwind_up
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::FuncUnwinders > FuncUnwindersSP
std::shared_ptr< lldb_private::Section > SectionSP
@ eSectionTypeDWARFDebugFrame
@ eSectionTypeCompactUnwind
compact unwind section in Mach-O, __TEXT,__unwind_info