X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b53d4ab74ae9c8c50b84f8efd9c96a82653ee8d9..f9e6853d2c5b7b867211700bc12f0ee57f640b30:/src/mc/mc_private.h diff --git a/src/mc/mc_private.h b/src/mc/mc_private.h index e3dd0d8bb0..6b2ae33224 100644 --- a/src/mc/mc_private.h +++ b/src/mc/mc_private.h @@ -416,8 +416,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); +Dwarf_Off 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); +Dwarf_Off 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); @@ -462,17 +462,21 @@ typedef struct s_dw_variable{ void* address; size_t start_scope; + mc_object_info_t object_info; }s_dw_variable_t, *dw_variable_t; struct s_dw_frame{ + int tag; char *name; void *low_pc; 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 end; /* Dwarf offset of the next sibling */ + 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 { @@ -490,6 +494,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: + * + *