char* start_text;
char* start_data;
char* start_bss;
- void* start_plt;
- void* end_plt;
- void* start_got_plt;
- void* end_got_plt;
xbt_dict_t local_variables; // xbt_dict_t<frame_name, 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>
mc_object_info_t MC_find_object_info(memory_map_t maps, char* name);
void MC_free_object_info(mc_object_info_t* p);
+xbt_dict_t MC_dwarf_get_location_list(const char *elf_file);
void MC_dwarf_get_variables(mc_object_info_t info);
void MC_dwarf_get_variables_libdw(mc_object_info_t info);
const char* MC_dwarf_attrname(int attr);
char *name;
char *type_origin;
union{
- dw_location_t location;
- void *address;
+ dw_location_t location; // For global==0
+ void *address; // For global!=0
}address;
}s_dw_variable_t, *dw_variable_t;
}s_dw_frame_t, *dw_frame_t;
void dw_type_free(dw_type_t t);
+void dw_variable_free(dw_variable_t v);
+void dw_variable_free_voidp(void *t);
+
+void MC_dwarf_register_global_variable(mc_object_info_t info, dw_variable_t variable);
+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);
/********************************** DWARF **********************************/
+Dwarf_Off MC_dwarf_resolve_location(unw_cursor_t* c, dw_location_t location, void* frame_pointer_address);
+
/********************************** Miscellaneous **********************************/
typedef struct s_local_variable{
int region;
}s_local_variable_t, *local_variable_t;
-#define MC_USE_LIBDW_TYPES 1
-
#endif