- if (process_index != simgrid::mc::ProcessIndexDisabled) {
- std::shared_ptr<simgrid::mc::ObjectInformation> const& info = this->find_object_info_rw((void*)address.address());
-// Segment overlap is not handled.
-#if HAVE_SMPI
- if (info.get() && this->privatized(*info)) {
- if (process_index < 0)
- xbt_die("Missing process index");
- if (process_index >= (int)MC_smpi_process_count())
- xbt_die("Invalid process index");
-
- // Read smpi_privatization_regions from MCed:
- smpi_privatization_region_t remote_smpi_privatization_regions =
- mc_model_checker->process().read_variable<smpi_privatization_region_t>("smpi_privatization_regions");
-
- s_smpi_privatization_region_t privatization_region =
- mc_model_checker->process().read<s_smpi_privatization_region_t>(
- remote(remote_smpi_privatization_regions + process_index));
-
- // Address translation in the privatization segment:
- size_t offset = address.address() - (std::uint64_t)info->start_rw;
- address = remote((char*)privatization_region.address + offset);
- }
-#endif
- }