Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Fix DW_OP_addr to translate address into virtual address space
[simgrid.git] / src / mc / mc_hash.c
index 2916ed2..c4ba6c6 100644 (file)
@@ -137,7 +137,8 @@ static void mc_hash_value(mc_hash_t* hash, mc_hashing_state* state, mc_object_in
       XBT_DEBUG("Hash struct member %s", member->name);
       if(type->subtype==NULL)
         return;
-       mc_hash_value(hash, state, info, ((char*)address) + member->offset, type->subtype);
+      void* member_variable = mc_member_resolve(address, type, member, NULL);
+      mc_hash_value(hash, state, info, member_variable, type->subtype);
     }
     return;
   }
@@ -240,7 +241,8 @@ static void mc_hash_stack_frame(
 
     XBT_DEBUG("Hash local variable %s", variable->name);
 
-    void* variable_address = (void*) mc_dwarf_resolve_locations(&variable->locations, unw_cursor, frame_pointer, NULL);
+    void* variable_address = (void*) mc_dwarf_resolve_locations(
+      &variable->locations, variable->object_info, unw_cursor, frame_pointer, NULL);
 
     dw_type_t type = variable->type;
     if(type==NULL) {
@@ -250,6 +252,8 @@ static void mc_hash_stack_frame(
 
     mc_hash_value(hash, state, info, variable_address, type);
   }
+
+  // TODO, handle nested scopes
 }
 
 static void mc_hash_stack(mc_hash_t *hash, mc_snapshot_stack_t stack, mc_hashing_state* state) {