X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/19ae8582cb401f7b1b6d2f7e3ca00e79ce78e8bb..f4782c312dc48a0fdce1934a03f8392ae4f9ce5e:/src/mc/mc_private.h diff --git a/src/mc/mc_private.h b/src/mc/mc_private.h index 01514bb3ff..0de75609ec 100644 --- a/src/mc/mc_private.h +++ b/src/mc/mc_private.h @@ -48,6 +48,8 @@ typedef struct s_mc_snapshot{ size_t heap_bytes_used; mc_mem_region_t regions[NB_REGIONS]; int nb_processes; + mc_mem_region_t* privatization_regions; + int privatization_index; size_t *stack_sizes; xbt_dynar_t stacks; xbt_dynar_t to_ignore; @@ -416,8 +418,8 @@ typedef struct s_mc_location_list { mc_expression_t locations; } s_mc_location_list_t, *mc_location_list_t; -Dwarf_Off mc_dwarf_resolve_location(mc_expression_t expression, unw_cursor_t* c, void* frame_pointer_address, mc_snapshot_t snapshot); -Dwarf_Off mc_dwarf_resolve_locations(mc_location_list_t locations, unw_cursor_t* c, void* frame_pointer_address, mc_snapshot_t snapshot); +uintptr_t mc_dwarf_resolve_location(mc_expression_t expression, mc_object_info_t object_info, unw_cursor_t* c, void* frame_pointer_address, mc_snapshot_t snapshot); +uintptr_t mc_dwarf_resolve_locations(mc_location_list_t locations, mc_object_info_t object_info, unw_cursor_t* c, void* frame_pointer_address, mc_snapshot_t snapshot); void mc_dwarf_expression_clear(mc_expression_t expression); void mc_dwarf_expression_init(mc_expression_t expression, size_t len, Dwarf_Op* ops); @@ -431,7 +433,7 @@ void mc_dwarf_location_list_init(mc_location_list_t target, mc_object_info_t inf struct s_dw_type{ e_dw_type_type type; - void *id; /* Offset in the section (in hexadecimal form) */ + Dwarf_Off id; /* Offset in the section (in hexadecimal form) */ char *name; /* Name of the type */ int byte_size; /* Size in bytes */ int element_count; /* Number of elements for array type */ @@ -462,6 +464,7 @@ typedef struct s_dw_variable{ void* address; size_t start_scope; + mc_object_info_t object_info; }s_dw_variable_t, *dw_variable_t; @@ -472,8 +475,10 @@ struct s_dw_frame{ void *high_pc; s_mc_location_list_t frame_base; xbt_dynar_t /* */ variables; /* Cannot use dict, there may be several variables with the same name (in different lexical blocks)*/ - unsigned long int start; /* DWARF offset of the subprogram */ + unsigned long int id; /* DWARF offset of the subprogram */ xbt_dynar_t /* */ scopes; + Dwarf_Off abstract_origin_id; + mc_object_info_t object_info; }; struct s_mc_function_index_item { @@ -491,6 +496,21 @@ void MC_dwarf_register_global_variable(mc_object_info_t info, dw_variable_t vari void MC_register_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable); void MC_dwarf_register_non_global_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable); void MC_dwarf_register_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable); + +/** Find the DWARF offset for this ELF object + * + * An offset is applied to address found in DWARF: + * + *