+mc_object_info_t MC_find_object_address(memory_map_t maps, char* name) {
+ mc_object_info_t result = MC_new_object_info();
+ result->file_name = xbt_strdup(name);
+ result->start_data = NULL;
+ result->start_text = NULL;
+
+ unsigned int i = 0;
+ s_map_region_t reg;
+ int len = strlen(basename(name));
+ while (i < maps->mapsize) {
+ reg = maps->regions[i];
+ if (maps->regions[i].pathname == NULL || memcmp(basename(maps->regions[i].pathname), basename(name), len)){
+ // Nothing to do
+ }
+ else if ((reg.prot & PROT_WRITE)){
+ result->start_data = reg.start_addr;
+ i++;
+ reg = maps->regions[i];
+ }else if (reg.prot & PROT_READ) {
+ result->start_text = reg.start_addr;
+ }
+ i++;
+ }
+
+ xbt_assert(result->file_name);
+ xbt_assert(result->start_data);
+ xbt_assert(result->start_text);
+
+ return result;
+}
+