LLDB  mainline
Public Member Functions | Private Attributes | List of all members
lldb_private::DirectCallEdge Class Reference

A direct call site. More...

#include <Function.h>

Inheritance diagram for lldb_private::DirectCallEdge:
Inheritance graph
[legend]
Collaboration diagram for lldb_private::DirectCallEdge:
Collaboration graph
[legend]

Public Member Functions

 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. More...
 
- Public Member Functions inherited from lldb_private::CallEdge
virtual ~CallEdge ()=default
 
std::pair< AddrType, lldb::addr_tGetCallerAddress (Function &caller, Target &target) const
 Return an address in the caller. More...
 
bool IsTailCall () const
 
llvm::ArrayRef< CallSiteParameterGetCallSiteParameters () const
 Get the call site parameters available at this call edge. More...
 
std::pair< bool, lldb::addr_tGetSortKey () const
 Non-tail-calls go first, sorted by the return address. More...
 
lldb::addr_t GetReturnPCAddress (Function &caller, Target &target) const
 Get the load PC address of the instruction which executes after the call returns. More...
 

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. More...
 

Call site related structures

FunctionGetCallee (ModuleList &images, ExecutionContext &exe_ctx) override
 Get the callee's definition. More...
 
void ParseSymbolFileAndResolve (ModuleList &images)
 

Additional Inherited Members

- Public Types inherited from lldb_private::CallEdge
enum  AddrType : uint8_t { AddrType::Call, AddrType::AfterCall }
 
- Protected Member Functions inherited from lldb_private::CallEdge
 CallEdge (AddrType caller_address_type, lldb::addr_t caller_address, bool is_tail_call, CallSiteParameterArray &&parameters)
 
lldb::addr_t GetUnresolvedReturnPCAddress () const
 Like GetReturnPCAddress, but returns an unresolved file address. More...
 
- Static Protected Member Functions inherited from lldb_private::CallEdge
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. More...
 

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 340 of file Function.h.

Constructor & Destructor Documentation

◆ DirectCallEdge()

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

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 344 of file Function.h.

References lazy_callee, 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 186 of file Function.cpp.

References lazy_callee, ParseSymbolFileAndResolve(), and resolved.

◆ ParseSymbolFileAndResolve()

void DirectCallEdge::ParseSymbolFileAndResolve ( ModuleList images)
private

Member Data Documentation

◆ def

Function* lldb_private::DirectCallEdge::def

Definition at line 363 of file Function.h.

◆ lazy_callee

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 367 of file Function.h.

Referenced by GetCallee(), and ParseSymbolFileAndResolve().

◆ symbol_name

const char* lldb_private::DirectCallEdge::symbol_name

Definition at line 362 of file Function.h.

Referenced by DirectCallEdge().


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