CACAO
Functions
patcher.cpp File Reference

Go to the source code of this file.

Functions

void patcher_patch_code (patchref_t *pr)
 
static int32_t * patch_checked_location (int32_t *p, int32_t val)
 
static void checked_icache_flush (void *addr, int nbytes, int32_t *check_loc)
 
bool patcher_is_valid_trap_instruction_at (void *pc)
 Check if the trap instruction at the given PC is valid. More...
 
static void patch_out_mfence (void *pc)
 Overwrites the MFENCE instruction at the indicated address with a 3-byte NOP. More...
 
bool patcher_resolve_classref_to_classinfo (patchref_t *pr)
 
bool patcher_resolve_classref_to_vftbl (patchref_t *pr)
 
bool patcher_resolve_classref_to_flags (patchref_t *pr)
 
bool patcher_get_putstatic (patchref_t *pr)
 
bool patcher_get_putfield (patchref_t *pr)
 
bool patcher_putfieldconst (patchref_t *pr)
 
bool patcher_invokestatic_special (patchref_t *pr)
 
bool patcher_invokevirtual (patchref_t *pr)
 
bool patcher_invokeinterface (patchref_t *pr)
 
bool patcher_checkcast_interface (patchref_t *pr)
 
bool patcher_instanceof_interface (patchref_t *pr)
 

Function Documentation

static void checked_icache_flush ( void addr,
int  nbytes,
int32_t *  check_loc 
)
static

Definition at line 70 of file patcher.cpp.

static int32_t* patch_checked_location ( int32_t *  p,
int32_t  val 
)
static

Definition at line 61 of file patcher.cpp.

static void patch_out_mfence ( void pc)
static

Overwrites the MFENCE instruction at the indicated address with a 3-byte NOP.

The MFENCE instruction is not allowed to cross a (4-byte) word boundary.

Parameters
pcProgram counter.

Definition at line 98 of file patcher.cpp.

bool patcher_checkcast_interface ( patchref_t pr)

Definition at line 480 of file patcher.cpp.

bool patcher_get_putfield ( patchref_t pr)

Definition at line 284 of file patcher.cpp.

bool patcher_get_putstatic ( patchref_t pr)

Definition at line 240 of file patcher.cpp.

bool patcher_instanceof_interface ( patchref_t pr)

Definition at line 523 of file patcher.cpp.

bool patcher_invokeinterface ( patchref_t pr)

Definition at line 435 of file patcher.cpp.

bool patcher_invokestatic_special ( patchref_t pr)

Definition at line 361 of file patcher.cpp.

bool patcher_invokevirtual ( patchref_t pr)

Definition at line 396 of file patcher.cpp.

bool patcher_is_valid_trap_instruction_at ( void pc)

Check if the trap instruction at the given PC is valid.

Parameters
pcProgram counter.
Returns
true if valid, false otherwise.

Definition at line 83 of file patcher.cpp.

void patcher_patch_code ( patchref_t pr)

Definition at line 55 of file patcher.cpp.

bool patcher_putfieldconst ( patchref_t pr)

Definition at line 322 of file patcher.cpp.

bool patcher_resolve_classref_to_classinfo ( patchref_t pr)

Definition at line 135 of file patcher.cpp.

bool patcher_resolve_classref_to_flags ( patchref_t pr)

Definition at line 200 of file patcher.cpp.

bool patcher_resolve_classref_to_vftbl ( patchref_t pr)

Definition at line 168 of file patcher.cpp.