Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Efficient lookup of subprogram by offset
[simgrid.git] / src / mc / mc_private.h
index 47fb84c..168fa7a 100644 (file)
@@ -346,7 +346,7 @@ struct s_mc_object_info {
   char *start_exec, *end_exec; // Executable segment
   char *start_rw, *end_rw; // Read-write segment
   char *start_ro, *end_ro; // read-only segment
-  xbt_dynar_t subprograms; // xbt_dynar_t<dw_frame_t>
+  xbt_dict_t subprograms; // xbt_dict_t<origin as hexadecimal string, dw_frame_t>
   xbt_dynar_t global_variables; // xbt_dynar_t<dw_variable_t>
   xbt_dict_t types; // xbt_dict_t<origin as hexadecimal string, dw_type_t>
   xbt_dict_t full_types_by_name; // xbt_dict_t<name, dw_type_t> (full defined type only)
@@ -371,6 +371,8 @@ mc_object_info_t MC_ip_find_object_info(void* ip);
 
 extern mc_object_info_t mc_libsimgrid_info;
 extern mc_object_info_t mc_binary_info;
+extern mc_object_info_t mc_object_infos[2];
+extern size_t mc_object_infos_size;
 
 void MC_find_object_address(memory_map_t maps, mc_object_info_t result);
 void MC_post_process_types(mc_object_info_t info);
@@ -419,7 +421,7 @@ struct s_dw_type{
   int offset;
 
   dw_type_t subtype; // DW_AT_type
-  dw_type_t other_object_same_type; // The same (but more complete) type in the other object.
+  dw_type_t full_type; // The same (but more complete) type
 };
 
 void* mc_member_resolve(const void* base, dw_type_t type, dw_type_t member, mc_snapshot_t snapshot);
@@ -455,6 +457,8 @@ struct s_mc_function_index_item {
   dw_frame_t function;
 };
 
+void mc_frame_free(dw_frame_t freme);
+
 void dw_type_free(dw_type_t t);
 void dw_variable_free(dw_variable_t v);
 void dw_variable_free_voidp(void *t);
@@ -526,7 +530,7 @@ void get_comm_pattern(xbt_dynar_t communications_pattern, smx_simcall_t request,
 typedef struct s_mc_address_set *mc_address_set_t;
 
 mc_address_set_t mc_address_set_new();
-mc_address_set_t mc_address_set_free(mc_address_set_t* p);
+void mc_address_set_free(mc_address_set_t* p);
 void mc_address_add(mc_address_set_t p, const void* value);
 bool mc_address_test(mc_address_set_t p, const void* value);