LLVM API Documentation

Public Member Functions
llvm::RuntimeDyldChecker Class Reference

RuntimeDyld invariant checker for verifying that RuntimeDyld has correctly applied relocations. More...

#include <RuntimeDyldChecker.h>

List of all members.

Public Member Functions

 RuntimeDyldChecker (RuntimeDyld &RTDyld, MCDisassembler *Disassembler, MCInstPrinter *InstPrinter, raw_ostream &ErrStream)
 ~RuntimeDyldChecker ()
RuntimeDyldgetRTDyld ()
const RuntimeDyldgetRTDyld () const
bool check (StringRef CheckExpr) const
 Check a single expression against the attached RuntimeDyld instance.
bool checkAllRulesInBuffer (StringRef RulePrefix, MemoryBuffer *MemBuf) const
 Scan the given memory buffer for lines beginning with the string in RulePrefix. The remainder of the line is passed to the check method to be evaluated as an expression.
std::pair< uint64_t, std::string > getSectionAddr (StringRef FileName, StringRef SectionName, bool LinkerAddress)
 Returns the address of the requested section (or an error message in the second element of the pair if the address cannot be found).

Detailed Description

RuntimeDyld invariant checker for verifying that RuntimeDyld has correctly applied relocations.

The RuntimeDyldChecker class evaluates expressions against an attached RuntimeDyld instance to verify that relocations have been applied correctly.

The expression language supports basic pointer arithmetic and bit-masking, and has limited disassembler integration for accessing instruction operands and the next PC (program counter) address for each instruction.

The language syntax is:

check = expr '=' expr

expr = binary_expr | sliceable_expr

sliceable_expr = '*{' number '}' load_addr_expr [slice] | '(' expr ')' [slice] | ident_expr [slice] | number [slice]

slice = '[' high-bit-index ':' low-bit-index ']'

load_addr_expr = symbol | '(' symbol '+' number ')' | '(' symbol '-' number ')'

ident_expr = 'decode_operand' '(' symbol ',' operand-index ')' | 'next_pc' '(' symbol ')' | symbol

binary_expr = expr '+' expr | expr '-' expr | expr '&' expr | expr '|' expr | expr '<<' expr | expr '>>' expr

Definition at line 64 of file RuntimeDyldChecker.h.


Constructor & Destructor Documentation

RuntimeDyldChecker::RuntimeDyldChecker ( RuntimeDyld RTDyld,
MCDisassembler Disassembler,
MCInstPrinter InstPrinter,
raw_ostream ErrStream 
)

Definition at line 902 of file RuntimeDyldChecker.cpp.

Definition at line 909 of file RuntimeDyldChecker.cpp.


Member Function Documentation

Check a single expression against the attached RuntimeDyld instance.

Definition at line 919 of file RuntimeDyldChecker.cpp.

Scan the given memory buffer for lines beginning with the string in RulePrefix. The remainder of the line is passed to the check method to be evaluated as an expression.

Definition at line 923 of file RuntimeDyldChecker.cpp.

Definition at line 911 of file RuntimeDyldChecker.cpp.

Definition at line 915 of file RuntimeDyldChecker.cpp.

std::pair< uint64_t, std::string > RuntimeDyldChecker::getSectionAddr ( StringRef  FileName,
StringRef  SectionName,
bool  LinkerAddress 
)

Returns the address of the requested section (or an error message in the second element of the pair if the address cannot be found).

if 'LinkerAddress' is true, this returns the address of the section within the linker's memory. If 'LinkerAddress' is false it returns the address within the target process (i.e. the load address).

Definition at line 929 of file RuntimeDyldChecker.cpp.


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