LLDB  mainline
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Static Protected Member Functions | List of all members
ObjcObjectChecker Class Reference
Inheritance diagram for ObjcObjectChecker:
Inheritance graph
[legend]
Collaboration diagram for ObjcObjectChecker:
Collaboration graph
[legend]

Public Types

enum  msgSend_type {
  eMsgSend = 0, eMsgSendSuper, eMsgSendSuper_stret, eMsgSend_fpret,
  eMsgSend_stret
}
 

Public Member Functions

 ObjcObjectChecker (llvm::Module &module, DynamicCheckerFunctions &checker_functions)
 
 ~ObjcObjectChecker () override=default
 
- Public Member Functions inherited from Instrumenter
 Instrumenter (llvm::Module &module, DynamicCheckerFunctions &checker_functions)
 Constructor. More...
 
virtual ~Instrumenter ()=default
 
bool Inspect (llvm::Function &function)
 Inspect a function to find instructions to instrument. More...
 
bool Instrument ()
 Instrument all the instructions found by Inspect() More...
 

Public Attributes

std::map< llvm::Instruction *, msgSend_typemsgSend_types
 

Protected Member Functions

bool InstrumentInstruction (llvm::Instruction *inst) override
 Add instrumentation to a single instruction. More...
 
bool InspectInstruction (llvm::Instruction &i) override
 Determine whether a single instruction is interesting to instrument, and, if so, call RegisterInstruction. More...
 
- Protected Member Functions inherited from Instrumenter
void RegisterInstruction (llvm::Instruction &i)
 Register a single instruction to be instrumented. More...
 
virtual bool InspectBasicBlock (llvm::BasicBlock &bb)
 Scan a basic block to see if any instructions are interesting. More...
 
virtual bool InspectFunction (llvm::Function &f)
 Scan a function to see if any instructions are interesting. More...
 
llvm::FunctionCallee BuildPointerValidatorFunc (lldb::addr_t start_address)
 Build a function pointer for a function with signature void (*)(uint8_t*) with a given address. More...
 
llvm::FunctionCallee BuildObjectCheckerFunc (lldb::addr_t start_address)
 Build a function pointer for a function with signature void (*)(uint8_t*, uint8_t*) with a given address. More...
 
PointerType * GetI8PtrTy ()
 
IntegerType * GetIntptrTy ()
 

Static Protected Member Functions

static llvm::Function * GetFunction (llvm::Value *value)
 
static llvm::Function * GetCalledFunction (llvm::CallInst *inst)
 

Additional Inherited Members

- Protected Types inherited from Instrumenter
typedef std::vector< llvm::Instruction * > InstVector
 
typedef InstVector::iterator InstIterator
 
- Protected Attributes inherited from Instrumenter
InstVector m_to_instrument
 List of instructions the inspector found. More...
 
llvm::Module & m_module
 The module which is being instrumented. More...
 
DynamicCheckerFunctionsm_checker_functions
 The dynamic checker functions for the process. More...
 

Detailed Description

Definition at line 366 of file IRDynamicChecks.cpp.

Member Enumeration Documentation

◆ msgSend_type

Enumerator
eMsgSend 
eMsgSendSuper 
eMsgSendSuper_stret 
eMsgSend_fpret 
eMsgSend_stret 

Definition at line 375 of file IRDynamicChecks.cpp.

Constructor & Destructor Documentation

◆ ObjcObjectChecker()

ObjcObjectChecker::ObjcObjectChecker ( llvm::Module &  module,
DynamicCheckerFunctions checker_functions 
)
inline

Definition at line 368 of file IRDynamicChecks.cpp.

◆ ~ObjcObjectChecker()

ObjcObjectChecker::~ObjcObjectChecker ( )
overridedefault

Member Function Documentation

◆ GetCalledFunction()

static llvm::Function* ObjcObjectChecker::GetCalledFunction ( llvm::CallInst *  inst)
inlinestaticprotected

Definition at line 465 of file IRDynamicChecks.cpp.

◆ GetFunction()

static llvm::Function* ObjcObjectChecker::GetFunction ( llvm::Value *  value)
inlinestaticprotected

Definition at line 447 of file IRDynamicChecks.cpp.

◆ InspectInstruction()

bool ObjcObjectChecker::InspectInstruction ( llvm::Instruction &  i)
inlineoverrideprotectedvirtual

Determine whether a single instruction is interesting to instrument, and, if so, call RegisterInstruction.

Parameters
[in]iThe instruction to be inspected.
Returns
False if there was an error scanning; true otherwise.

Reimplemented from Instrumenter.

Definition at line 469 of file IRDynamicChecks.cpp.

References lldb_private::GetLogIfAllCategoriesSet(), LIBLLDB_LOG_EXPRESSIONS, lldb_private::Log::Printf(), and PrintValue().

◆ InstrumentInstruction()

bool ObjcObjectChecker::InstrumentInstruction ( llvm::Instruction *  inst)
inlineoverrideprotectedvirtual

Add instrumentation to a single instruction.

Parameters
[in]instThe instruction to be instrumented.
Returns
True on success; false otherwise.

Implements Instrumenter.

Definition at line 386 of file IRDynamicChecks.cpp.

Member Data Documentation

◆ msgSend_types

std::map<llvm::Instruction *, msgSend_type> ObjcObjectChecker::msgSend_types

Definition at line 383 of file IRDynamicChecks.cpp.


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