LLDB mainline
lldb_private::DirectCallEdge Class Reference

A direct call site. More...

#include <Function.h>

Inheritance diagram for lldb_private::DirectCallEdge:
[legend]

Private Attributes

union { 
   const char *   symbol_name 
   Function *   def 
lazy_callee
bool resolved = false
 Whether or not an attempt was made to find the callee's definition.

Call site related structures

 DirectCallEdge (const char *symbol_name, AddrType caller_address_type, lldb::addr_t caller_address, bool is_tail_call, CallSiteParameterArray &&parameters)
 Construct a call edge using a symbol name to identify the callee, and a return PC within the calling function to identify a specific call site.
FunctionGetCallee (ModuleList &images, ExecutionContext &exe_ctx) override
 Get the callee's definition.
void ParseSymbolFileAndResolve (ModuleList &images)

Additional Inherited Members

Public Types inherited from lldb_private::CallEdge
enum class  AddrType : uint8_t { Call , AfterCall }
Public Member Functions inherited from lldb_private::CallEdge
std::pair< AddrType, lldb::addr_tGetCallerAddress (Function &caller, Target &target) const
 Return an address in the caller.
bool IsTailCall () const
llvm::ArrayRef< CallSiteParameterGetCallSiteParameters () const
 Get the call site parameters available at this call edge.
std::pair< bool, lldb::addr_tGetSortKey () const
 Non-tail-calls go first, sorted by the return address.
virtual ~CallEdge ()
lldb::addr_t GetReturnPCAddress (Function &caller, Target &target) const
 Get the load PC address of the instruction which executes after the call returns.
Protected Member Functions inherited from lldb_private::CallEdge
lldb::addr_t GetUnresolvedReturnPCAddress () const
 Like GetReturnPCAddress, but returns an unresolved file address.
 CallEdge (AddrType caller_address_type, lldb::addr_t caller_address, bool is_tail_call, CallSiteParameterArray &&parameters)
static lldb::addr_t GetLoadAddress (lldb::addr_t unresolved_pc, Function &caller, Target &target)
 Helper that finds the load address of unresolved_pc, a file address which refers to an instruction within caller.

Detailed Description

A direct call site.

Used to represent call sites where the address of the callee is fixed (e.g. a function call in C in which the call target is not a function pointer).

Definition at line 334 of file Function.h.

Constructor & Destructor Documentation

◆ DirectCallEdge()

DirectCallEdge::DirectCallEdge ( const char * symbol_name,
AddrType caller_address_type,
lldb::addr_t caller_address,
bool is_tail_call,
CallSiteParameterArray && parameters )

Construct a call edge using a symbol name to identify the callee, and a return PC within the calling function to identify a specific call site.

Definition at line 195 of file Function.cpp.

References lldb_private::CallEdge::CallEdge(), lldb_private::CallEdge::caller_address, lldb_private::CallEdge::caller_address_type, lldb_private::CallEdge::is_tail_call, lazy_callee, lldb_private::CallEdge::parameters, and symbol_name.

Member Function Documentation

◆ GetCallee()

Function * DirectCallEdge::GetCallee ( ModuleList & images,
ExecutionContext & exe_ctx )
overridevirtual

Get the callee's definition.

Note that this might lazily invoke the DWARF parser. A register context from the caller's activation is needed to find indirect call targets.

Implements lldb_private::CallEdge.

Definition at line 204 of file Function.cpp.

References lazy_callee, ParseSymbolFileAndResolve(), and resolved.

◆ ParseSymbolFileAndResolve()

Member Data Documentation

◆ def

Function* lldb_private::DirectCallEdge::def

Definition at line 353 of file Function.h.

◆ [union]

union { ... } lldb_private::DirectCallEdge::lazy_callee

◆ resolved

bool lldb_private::DirectCallEdge::resolved = false
private

Whether or not an attempt was made to find the callee's definition.

Definition at line 357 of file Function.h.

Referenced by GetCallee(), and ParseSymbolFileAndResolve().

◆ symbol_name

const char* lldb_private::DirectCallEdge::symbol_name

Definition at line 352 of file Function.h.

Referenced by DirectCallEdge().


The documentation for this class was generated from the following files: