Lines Matching full:drcontext
175 void InstrumentMops(void *drcontext, instrlist_t *bb, instr_t *instr, opnd_t op,
190 dr_save_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1);
191 dr_save_arith_flags_to_xax(drcontext, bb, instr);
192 dr_save_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_3);
193 dr_restore_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1);
237 dr_save_reg(drcontext, bb, instr, R1, SPILL_SLOT_1);
239 dr_save_reg(drcontext, bb, instr, R2, SPILL_SLOT_2);
242 CHECK(drutil_insert_get_mem_addr(drcontext, bb, instr, op, R1, R2));
243 PRE(instr, mov_imm(drcontext, opnd_create_reg(R2),
245 PRE(instr, and(drcontext, opnd_create_reg(R1), opnd_create_reg(R2)));
252 mov_st(drcontext, opnd_create_base_disp(R1, DR_REG_NULL, 0, 0, op_size),
258 mov_st(drcontext, OPND_CREATE_MEM32(R1, ofs), OPND_CREATE_INT32(0)));
263 dr_restore_reg(drcontext, bb, instr, R1, SPILL_SLOT_1);
264 dr_restore_reg(drcontext, bb, instr, R2, SPILL_SLOT_2);
270 dr_save_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1);
271 dr_restore_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_3);
272 dr_restore_arith_flags_from_xax(drcontext, bb, instr);
273 dr_restore_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1);
280 void InstrumentReturn(void *drcontext, instrlist_t *bb, instr_t *instr) {
281 dr_save_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1);
285 dr_insert_get_seg_base(drcontext, bb, instr, DR_SEG_FS, DR_REG_XAX);
290 mov_st(drcontext, OPND_CREATE_MEM64(DR_REG_XAX, msan_retval_tls_offset),
293 dr_restore_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1);
299 void InstrumentIndirectBranch(void *drcontext, instrlist_t *bb,
301 dr_save_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1);
305 dr_insert_get_seg_base(drcontext, bb, instr, DR_SEG_FS, DR_REG_XAX);
311 mov_st(drcontext, OPND_CREATE_MEMPTR(DR_REG_XAX, msan_param_tls_offset +
316 dr_restore_reg(drcontext, bb, instr, DR_REG_XAX, SPILL_SLOT_1);
379 event_basic_block_app2app(void *drcontext, void *tag, instrlist_t *bb,
384 CHECK(drutil_expand_rep_string(drcontext, bb));
389 dr_emit_flags_t event_basic_block(void *drcontext, void *tag, instrlist_t *bb,
415 instrlist_disassemble(drcontext, pc, bb, STDOUT);
425 InstrumentReturn(drcontext, bb, i);
437 InstrumentIndirectBranch(drcontext, bb, i);
461 InstrumentMops(drcontext, bb, i, op, true);
472 instrlist_disassemble(drcontext, pc, bb, STDOUT);
477 void event_module_load(void *drcontext, const module_data_t *info,
495 void event_module_unload(void *drcontext, const module_data_t *info) {
521 bool event_filter_syscall(void *drcontext, int sysnum) {
566 bool event_pre_syscall(void *drcontext, int sysnum) {
574 res = drsys_cur_syscall(drcontext, &syscall);
592 res = drsys_iterate_memargs(drcontext, drsys_iter_memarg_cb, NULL);
598 static bool IsInLoader(void *drcontext) {
602 bool need_swap = !dr_using_app_state(drcontext);
604 dr_switch_to_app_state(drcontext);
607 dr_switch_to_dr_state(drcontext);
611 void event_post_syscall(void *drcontext, int sysnum) {
617 res = drsys_cur_syscall(drcontext, &syscall);
624 res = drsys_syscall_succeeded(syscall, dr_syscall_get_result(drcontext),
630 drsys_iterate_memargs(drcontext, drsys_iter_memarg_cb, (void *)syscall);
645 if (IsInLoader(drcontext)) {
646 app_pc base = (app_pc)dr_syscall_get_result(drcontext);
648 drmf_status_t res = drsys_pre_syscall_arg(drcontext, 1, &size);
698 void *drcontext = dr_get_current_drcontext();
700 dr_switch_to_app_state(drcontext);
703 dr_switch_to_dr_state(drcontext);