case DW_TAG_structure_type:
case DW_TAG_class_type:
for(simgrid::mc::Member& member : type->members) {
- void *member1 =
- mc_member_resolve(real_area1, type, &member, snapshot1, process_index);
- void *member2 =
- mc_member_resolve(real_area2, type, &member, snapshot2, process_index);
+ void *member1 = simgrid::dwarf::resolve_member(
+ real_area1, type, &member, snapshot1, process_index);
+ void *member2 = simgrid::dwarf::resolve_member(
+ real_area2, type, &member, snapshot2, process_index);
mc_mem_region_t subregion1 = mc_get_region_hinted(member1, snapshot1, process_index, region1);
mc_mem_region_t subregion2 = mc_get_region_hinted(member2, snapshot2, process_index, region2);
res =
} else {
for(simgrid::mc::Member& member : type->members) {
// TODO, optimize this? (for the offset case)
- void *real_member1 =
- mc_member_resolve(real_area1, type, &member, (simgrid::mc::AddressSpace*) snapshot1, process_index);
- void *real_member2 =
- mc_member_resolve(real_area2, type, &member, (simgrid::mc::AddressSpace*) snapshot2, process_index);
+ void *real_member1 = simgrid::dwarf::resolve_member(
+ real_area1, type, &member, (simgrid::mc::AddressSpace*) snapshot1, process_index);
+ void *real_member2 = simgrid::dwarf::resolve_member(
+ real_area2, type, &member, (simgrid::mc::AddressSpace*) snapshot2, process_index);
res =
compare_heap_area_with_type(state, process_index, real_member1, real_member2,
snapshot1, snapshot2,
if (member.offset() == offset)
return member.type;
} else {
- void *real_member =
- mc_member_resolve(real_base_address, type, &member,
- snapshot, process_index);
+ void *real_member = simgrid::dwarf::resolve_member(
+ real_base_address, type, &member, snapshot, process_index);
if ((char*) real_member - (char *) real_base_address == offset)
return member.type;
}
XBT_PRIVATE const char* attrname(int attr);
XBT_PRIVATE const char* tagname(int tag);
+XBT_PRIVATE void* resolve_member(
+ const void* base, simgrid::mc::Type* type, simgrid::mc::Member* member,
+ simgrid::mc::AddressSpace* snapshot, int process_index);
+
}
}
XBT_PRIVATE void MC_dwarf_get_variables(simgrid::mc::ObjectInformation* info);
-XBT_PRIVATE void* mc_member_resolve(
- const void* base, simgrid::mc::Type* type, simgrid::mc::Member* member,
- simgrid::mc::AddressSpace* snapshot, int process_index);
-
#endif
#include "mc_private.h"
#include "mc/Type.hpp"
+namespace simgrid {
+namespace dwarf {
+
/** Resolve snapshot in the process address space
*
* @param object Process address of the struct/class
* @param snapshot Snapshot (or NULL)
* @return Process address of the given member of the 'object' struct/class
*/
-void *mc_member_resolve(
+void *resolve_member(
const void *base, simgrid::mc::Type* type, simgrid::mc::Member* member,
simgrid::mc::AddressSpace* address_space, int process_index)
{
else
return (void *) state.stack[state.stack_size - 1];
}
+
+}
+}