callbacks from VexTranslateArgs. See VEX r2958.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14564
static
IRSB* cg_instrument ( VgCallbackClosure* closure,
IRSB* sbIn,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Int i, isize;
static
IRSB* CLG_(instrument)( VgCallbackClosure* closure,
- IRSB* sbIn,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ IRSB* sbIn,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Int i;
}
/* Returns the reason for which gdbserver instrumentation is needed */
-static VgVgdb VG_(gdbserver_instrumentation_needed) (VexGuestExtents* vge)
+static VgVgdb VG_(gdbserver_instrumentation_needed) (const VexGuestExtents* vge)
{
GS_Address* g;
int e;
static void VG_(add_stmt_call_invalidate_if_not_gdbserved)
( IRSB* sb_in,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
IRTemp jmp,
IRSB* irsb)
{
debugger statement will be inserted for all instructions of a block. */
static void VG_(add_stmt_call_gdbserver)
(IRSB* sb_in, /* block being translated */
- VexGuestLayout* layout,
- VexGuestExtents* vge,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
IRType gWordTy, IRType hWordTy,
Addr iaddr, /* Addr of instruction being instrumented */
UChar delta, /* delta to add to iaddr to obtain IP */
or VG_(add_stmt_call_invalidate_if_not_gdbserved). */
static void VG_(add_stmt_call_invalidate_exit_target_if_not_gdbserved)
(IRSB* sb_in,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
IRType gWordTy,
IRSB* irsb)
{
IRSB* VG_(instrument_for_gdbserver_if_needed)
(IRSB* sb_in,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
IRType gWordTy, IRType hWordTy)
{
IRSB* sb_out;
void VG_(basic_tool_funcs)(
void(*post_clo_init)(void),
IRSB*(*instrument)(VgCallbackClosure*, IRSB*,
- VexGuestLayout*, VexGuestExtents*, VexArchInfo*,
- IRType, IRType),
+ const VexGuestLayout*, const VexGuestExtents*,
+ const VexArchInfo*, IRType, IRType),
void(*fini)(Int)
)
{
#include "pub_core_execontext.h" // VG_(make_depth_1_ExeContext_from_Addr)
-#include "pub_core_gdbserver.h" // VG_(tool_instrument_then_gdbserver_if_needed)
+#include "pub_core_gdbserver.h" // VG_(instrument_for_gdbserver_if_needed)
#include "libvex_emnote.h" // For PPC, EmWarn_PPC64_redir_underflow
*/
static
IRSB* tool_instrument_then_gdbserver_if_needed ( VgCallbackClosure* closureV,
- IRSB* sb_in,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* vai,
+ IRSB* sb_in,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* vai,
IRType gWordTy,
IRType hWordTy )
{
static
IRSB* vg_SP_update_pass ( void* closureV,
IRSB* sb_in,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* vai,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* vai,
IRType gWordTy,
IRType hWordTy )
{
return convention. */
static UInt needs_self_check ( void* closureV,
- VexGuestExtents* vge )
+ const VexGuestExtents* vge )
{
VgCallbackClosure* closure = (VgCallbackClosure*)closureV;
UInt i, bitset;
They are entirely legal but longwinded so as to maximise the
chance of the C typechecker picking up any type snafus. */
IRSB*(*f)(VgCallbackClosure*,
- IRSB*,VexGuestLayout*,VexGuestExtents*, VexArchInfo*,
- IRType,IRType)
+ IRSB*,const VexGuestLayout*,const VexGuestExtents*,
+ const VexArchInfo*,IRType,IRType)
= VG_(clo_vgdb) != Vg_VgdbNo
? tool_instrument_then_gdbserver_if_needed
: VG_(tdict).tool_instrument;
IRSB*(*g)(void*,
- IRSB*,VexGuestLayout*,VexGuestExtents*,VexArchInfo*,
- IRType,IRType)
- = (IRSB*(*)(void*,IRSB*,VexGuestLayout*,VexGuestExtents*,
- VexArchInfo*,IRType,IRType))f;
+ IRSB*,const VexGuestLayout*,const VexGuestExtents*,
+ const VexArchInfo*,IRType,IRType)
+ = (IRSB*(*)(void*,IRSB*,const VexGuestLayout*,
+ const VexGuestExtents*, const VexArchInfo*,IRType,IRType))f;
vta.instrument1 = g;
}
/* No need for type kludgery here. */
gdbserver. */
extern IRSB* VG_(instrument_for_gdbserver_if_needed)
(IRSB* sb_in, /* block to be instrumented */
- VexGuestLayout* layout,
- VexGuestExtents* vge,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
IRType gWordTy, IRType hWordTy);
/* reason for which gdbserver connection must be finished */
void (*tool_post_clo_init)(void);
IRSB* (*tool_instrument) (VgCallbackClosure*,
IRSB*,
- VexGuestLayout*, VexGuestExtents*,
- VexArchInfo*, IRType, IRType);
+ const VexGuestLayout*, const VexGuestExtents*,
+ const VexArchInfo*, IRType, IRType);
void (*tool_fini) (Int);
// VG_(needs).core_errors
IRSB* DRD_(instrument)(VgCallbackClosure* const closure,
IRSB* const bb_in,
- VexGuestLayout* const layout,
- VexGuestExtents* const vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* const layout,
+ const VexGuestExtents* const vge,
+ const VexArchInfo* archinfo_host,
IRType const gWordTy,
IRType const hWordTy)
{
void DRD_(set_first_race_only)(const Bool fro);
IRSB* DRD_(instrument)(VgCallbackClosure* const closure,
IRSB* const bb_in,
- VexGuestLayout* const layout,
- VexGuestExtents* const vge,
- VexArchInfo* const archinfo_host,
+ const VexGuestLayout* const layout,
+ const VexGuestExtents* const vge,
+ const VexArchInfo* const archinfo_host,
IRType const gWordTy,
IRType const hWordTy);
void DRD_(trace_mem_access)(const Addr addr, const SizeT size,
/* gWordTy = size of guest word */
/* hWordTy = size of host word */
static IRSB* bbv_instrument ( VgCallbackClosure* closure,
- IRSB* sbIn, VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
- IRType gWordTy, IRType hWordTy )
+ IRSB* sbIn, const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
+ IRType gWordTy, IRType hWordTy )
{
Int i,n_instrs=1;
IRSB *sbOut;
static
IRSB* dh_instrument ( VgCallbackClosure* closure,
IRSB* sbIn,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Int i, n = 0;
IRSB* h_instrument ( VgCallbackClosure* closure,
IRSB* sbIn,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Bool verboze = 0||False;
/* Note that this also does the sg_ instrumentation. */
IRSB* h_instrument ( VgCallbackClosure* closure,
IRSB* sbIn,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy );
#endif
static IRTemp gen_Get_SP ( struct _SGEnv* sge,
IRSB* bbOut,
- VexGuestLayout* layout,
+ const VexGuestLayout* layout,
Int hWordTy_szB )
{
IRExpr* sp_expr;
static IRTemp gen_Get_FP ( struct _SGEnv* sge,
IRSB* bbOut,
- VexGuestLayout* layout,
+ const VexGuestLayout* layout,
Int hWordTy_szB )
{
IRExpr* fp_expr;
Bool isStore,
Int hWordTy_szB,
Addr curr_IP,
- VexGuestLayout* layout )
+ const VexGuestLayout* layout )
{
IRType tyAddr = Ity_INVALID;
XArray* frameBlocks = NULL;
void sg_instrument_IRStmt ( /*MOD*/struct _SGEnv * env,
/*MOD*/IRSB* sbOut,
IRStmt* st,
- VexGuestLayout* layout,
+ const VexGuestLayout* layout,
IRType gWordTy, IRType hWordTy )
{
if (!sg_clo_enable_sg_checks)
/*MOD*/IRSB* sbOut,
IRExpr* next,
IRJumpKind jumpkind,
- VexGuestLayout* layout,
+ const VexGuestLayout* layout,
IRType gWordTy, IRType hWordTy )
{
if (!sg_clo_enable_sg_checks)
void sg_instrument_IRStmt ( /*MOD*/struct _SGEnv * env,
/*MOD*/IRSB* sbOut,
IRStmt* st,
- VexGuestLayout* layout,
+ const VexGuestLayout* layout,
IRType gWordTy, IRType hWordTy );
void sg_instrument_final_jump ( /*MOD*/struct _SGEnv * env,
/*MOD*/IRSB* sbOut,
IRExpr* next,
IRJumpKind jumpkind,
- VexGuestLayout* layout,
+ const VexGuestLayout* layout,
IRType gWordTy, IRType hWordTy );
#endif
static
IRSB* hg_instrument ( VgCallbackClosure* closure,
IRSB* bbIn,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Int i;
*/
IRSB*(*instrument)(VgCallbackClosure* closure,
IRSB* sb_in,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy,
IRType hWordTy),
static
IRSB* lk_instrument ( VgCallbackClosure* closure,
IRSB* sbIn,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
IRDirty* di;
static
IRSB* ms_instrument ( VgCallbackClosure* closure,
IRSB* sbIn,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
if (! have_started_executing_code) {
/* Functions defined in mc_translate.c */
IRSB* MC_(instrument) ( VgCallbackClosure* closure,
IRSB* bb_in,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy );
IRSB* MC_(final_tidy) ( IRSB* );
/* READONLY: the guest layout. This indicates which parts of
the guest state should be regarded as 'always defined'. */
- VexGuestLayout* layout;
+ const VexGuestLayout* layout;
/* READONLY: the host word type. Needed for constructing
arguments of type 'HWord' to be passed to helper functions.
IRSB* MC_(instrument) ( VgCallbackClosure* closure,
IRSB* sb_in,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Bool verboze = 0||False;
static
IRSB* nl_instrument ( VgCallbackClosure* closure,
IRSB* bb,
- VexGuestLayout* layout,
- VexGuestExtents* vge,
- VexArchInfo* archinfo_host,
+ const VexGuestLayout* layout,
+ const VexGuestExtents* vge,
+ const VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
return bb;