9#ifndef LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_OBJC_APPLEOBJCRUNTIME_APPLEOBJCTRAMPOLINEHANDLER_H
10#define LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_OBJC_APPLEOBJCRUNTIME_APPLEOBJCTRAMPOLINEHANDLER_H
41 const char *
name =
nullptr;
AppleObjCVTables * m_owner
lldb::addr_t m_code_end_addr
lldb::addr_t GetNextRegionAddr()
lldb::addr_t GetCodeEnd()
uint32_t GetFlagsForVTableAtAddress(lldb::addr_t address)
lldb::addr_t GetCodeStart()
lldb::addr_t m_next_region
std::vector< VTableDescriptor > m_descriptors
lldb::addr_t m_code_start_addr
bool AddressInRegion(lldb::addr_t addr, uint32_t &flags)
lldb::addr_t m_header_addr
lldb::ProcessSP GetProcessSP()
std::vector< VTableRegion > region_collection
lldb::break_id_t m_trampolines_changed_bp_id
lldb::addr_t m_trampoline_header
@ eOBJC_TRAMPOLINE_VTABLE
@ eOBJC_TRAMPOLINE_MESSAGE
static bool RefreshTrampolines(void *baton, StoppointCallbackContext *context, lldb::user_id_t break_id, lldb::user_id_t break_loc_id)
lldb::ProcessWP m_process_wp
lldb::ModuleSP m_objc_module_sp
bool InitializeVTableSymbols()
bool IsAddressInVTables(lldb::addr_t addr, uint32_t &flags)
region_collection m_regions
static const char * g_lookup_implementation_function_name
These hold the code for the function that finds the implementation of an ObjC message send given the ...
std::string m_lookup_implementation_function_code
static const DispatchFunction g_dispatch_functions[]
bool AddrIsMsgForward(lldb::addr_t addr) const
lldb::ProcessWP m_process_wp
MsgsendMap m_opt_dispatch_map
lldb::ModuleSP m_objc_module_sp
lldb::addr_t m_msg_forward_stret_addr
lldb::addr_t SetupDispatchFunction(Thread &thread, ValueList &dispatch_values)
std::mutex m_impl_function_mutex
static const char * g_lookup_implementation_with_stret_function_code
static const char * g_opt_dispatch_names[]
std::unique_ptr< AppleObjCVTables > m_vtables_up
std::unique_ptr< UtilityFunction > m_impl_code
~AppleObjCTrampolineHandler()
lldb::addr_t m_msg_forward_addr
static const char * g_lookup_implementation_no_stret_function_code
void ForEachDispatchFunction(std::function< void(lldb::addr_t, const DispatchFunction &)>)
lldb::ThreadPlanSP GetStepThroughDispatchPlan(Thread &thread, bool stop_others)
std::map< lldb::addr_t, int > MsgsendMap
const DispatchFunction * FindDispatchFunction(lldb::addr_t addr)
lldb::addr_t m_impl_stret_fn_addr
lldb::addr_t m_impl_fn_addr
static const char * g_lookup_implementation_function_common_code
FunctionCaller * GetLookupImplementationFunctionCaller()
Encapsulates a function that can be called.
General Outline: When we hit a breakpoint we need to package up whatever information is needed to eva...
A stream class that can stream formatted output to a file.
#define LLDB_INVALID_ADDRESS
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::ThreadPlan > ThreadPlanSP
std::shared_ptr< lldb_private::Process > ProcessSP
std::weak_ptr< lldb_private::Process > ProcessWP
std::shared_ptr< lldb_private::Module > ModuleSP
VTableDescriptor(uint32_t in_flags, lldb::addr_t in_code_start)