Esempio n. 1
0
DR_EXPORT void
dr_client_main(client_id_t id, int argc, const char *argv[])
{
    umbra_map_options_t umbra_map_ops;

    drmgr_init();

    memset(&umbra_map_ops, 0, sizeof(umbra_map_ops));
    umbra_map_ops.scale              = UMBRA_MAP_SCALE_DOWN_4X;
    umbra_map_ops.flags              = UMBRA_MAP_CREATE_SHADOW_ON_TOUCH;
    umbra_map_ops.default_value      = 0;
    umbra_map_ops.default_value_size = 1;

    if (umbra_init(id) != DRMF_SUCCESS)
        DR_ASSERT_MSG(false, "fail to init umbra");
    if (umbra_create_mapping(&umbra_map_ops, &umbra_map) != DRMF_SUCCESS)
        DR_ASSERT_MSG(false, "fail to create shadow memory mapping");
    dr_register_exit_event(exit_event);
}
Esempio n. 2
0
void
shadow_table_init(void)
{
    umbra_map_options_t umbra_map_ops;

    LOG(2, "shadow_table_init\n");
    /* create umbra shadow map */
    memset(&umbra_map_ops, 0, sizeof(umbra_map_ops));
    umbra_map_ops.struct_size = sizeof(umbra_map_ops);
    umbra_map_ops.flags =
        UMBRA_MAP_CREATE_SHADOW_ON_TOUCH |
        UMBRA_MAP_SHADOW_SHARED_READONLY;
    umbra_map_ops.scale = SHADOW_MAP_SCALE;
    umbra_map_ops.default_value = SHADOW_DEFAULT_VALUE;
    umbra_map_ops.default_value_size = SHADOW_DEFAULT_VALUE_SIZE;
#ifndef X64
    umbra_map_ops.redzone_size = 0;
#endif
    if (umbra_create_mapping(&umbra_map_ops, &umbra_map) != DRMF_SUCCESS)
        ASSERT(false, "fail to create shadow memory mapping");
}