for(size_t i=0; i!=NB_REGIONS; ++i) {
mc_mem_region_t region = snapshot->regions[i];
- if(addr>=region->data && addr<=region->data+region->size) {
+ if(addr>=region->data && addr<=(void*)(((char*)region->data)+region->size)) {
size_t offset = (size_t) ((char*) addr - (char*) region->data);
- return (uintptr_t) (region->start_addr + offset);
+ return ((uintptr_t) region->start_addr) + offset;
}
}
void* start_data_libsimgrid = mc_libsimgrid_info->start_rw;
mc_object_info_t object_info = NULL;
- mc_object_info_t other_object_info = NULL;
if(region_type == 2){
object_info = mc_binary_info;
- other_object_info = mc_libsimgrid_info;
start_data = start_data_binary;
}else{
object_info = mc_libsimgrid_info;
- other_object_info = mc_binary_info;
start_data = start_data_libsimgrid;
}
variables = object_info->global_variables;
// Global Offset
type->id = (void *) dwarf_dieoffset(die);
- char* prefix = "";
+ const char* prefix = "";
switch (type->type) {
case DW_TAG_structure_type:
prefix = "struct ";
Dwarf_Attribute attr_frame_base;
if (!dwarf_attr_integrate(die, DW_AT_frame_base, &attr_frame_base))
- xbt_die("Coult not find DW_AT_frame_base for subprogram %s %p", frame->name, frame->start);
+ xbt_die("Coult not find DW_AT_frame_base for subprogram %s 0x%lx", frame->name, frame->start);
mc_dwarf_location_list_init(&frame->frame_base, info, die, &attr_frame_base);
frame->end = -1; // This one is now useless:
}
mc_object_info_t MC_ip_find_object_info(void* ip) {
- size_t n = 2;
size_t i;
for(i=0; i!=mc_object_infos_size; ++i) {
if(ip >= (void*)mc_object_infos[i]->start_exec && ip <= (void*)mc_object_infos[i]->end_exec) {
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);
extern "C" {
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);
return new std::set<const void*>();
}
-mc_address_set_t mc_address_set_free(mc_address_set_t* p) {
+void mc_address_set_free(mc_address_set_t* p) {
delete *p;
*p = NULL;
}
typedef struct foo {int i;} s_foo;
+static void test_type_by_name(s_foo my_foo) {
+ assert(xbt_dict_get_or_null(mc_binary_info->full_types_by_name, "struct foo"));
+}
+
int main(int argc, char** argv) {
// xbt_init(&argc, argv);
test_local_variable(mc_binary_info, "main", "argc", &argc, &cursor);
s_foo my_foo;
-
- assert(xbt_dict_get_or_null(mc_binary_info->full_types_by_name, "struct foo"));
+ test_type_by_name(my_foo);
_exit(0);
}
#include "../src/mc/mc_private.h"
+static
uintptr_t eval_binary_operation(mc_expression_state_t state, int op, uintptr_t a, uintptr_t b) {
state->stack_size = 0;
return state->stack[state->stack_size - 1];
}
+static
void basic_test(mc_expression_state_t state) {
Dwarf_Op ops[60];
assert(state->stack[state->stack_size-2]== b);
}
-int test_deref(mc_expression_state_t state) {
+static
+void test_deref(mc_expression_state_t state) {
uintptr_t foo = 42;
Dwarf_Op ops[60];