DynamoRIO
_dr_fault_fragment_info_t Struct Reference

#include <dr_events.h>

Data Fields

void * tag
 
byte * cache_start_pc
 
bool is_trace
 
bool app_code_consistent
 
instrlist_tilist
 

Detailed Description

Data structure passed within dr_exception_t, dr_siginfo_t, and dr_restore_state_info_t. Contains information about the code fragment inside the code cache at the exception/signal/translation interruption point.

Field Documentation

◆ app_code_consistent

bool _dr_fault_fragment_info_t::app_code_consistent

Indicates whether the original application code containing the code corresponding to the exception/signal/translation interruption point is guaranteed to still be in the same state it was when the code was placed in the code cache. This guarantee varies depending on the type of cache consistency being used by DR.

◆ cache_start_pc

byte* _dr_fault_fragment_info_t::cache_start_pc

The start address of the code fragment inside the code cache at the exception/signal/translation interruption point. NULL for interruption not in the code cache (in which case generally only unusual cases of clients changing memory require restoration). Clients are cautioned when examining code cache instructions to not rely on any details of code inserted other than their own.

◆ ilist

instrlist_t* _dr_fault_fragment_info_t::ilist

The recreated ilist for this fragment, which contains instrs added by the basic block event(s) with translating set to true and also DR's own mangling of some instrs. This includes client-added metadata in the form of notes and label instrs too. This may be helpful in restoring app state on a fault. When the recreated ilist is not available, this is set to NULL. This may happen when a client returns DR_EMIT_STORE_TRANSLATIONS, or for DR internal reasons when the app code may not be consistent: for pending deletion or self-modifying fragments. It will also be NULL for non-code-cache cases where cache_start_pc is also NULL.

◆ is_trace

bool _dr_fault_fragment_info_t::is_trace

Indicates whether the interrupted code fragment is a trace

◆ tag

void* _dr_fault_fragment_info_t::tag

The tag of the code fragment inside the code cache at the exception/signal/translation interruption point. NULL for interruption not in the code cache.


The documentation for this struct was generated from the following file:
  • /home/runner/work/dynamorio/dynamorio/build_release-64/include/dr_events.h