#include "src/internal_config.h"
#include "src/mc/mc_private.hpp"
#include "src/smpi/include/private.hpp"
+#include "xbt/file.hpp"
#include "xbt/mmalloc.h"
#include "xbt/module.h"
#define PROT_RWX (PROT_READ | PROT_WRITE | PROT_EXEC)
#define PROT_RW (PROT_READ | PROT_WRITE)
#define PROT_RX (PROT_READ | PROT_EXEC)
+extern std::string _sg_mc_property_file;
+extern std::string _sg_mc_dot_output_file;
namespace simgrid {
namespace mc {
snapshot->snapshot_regions[index]
= std::unique_ptr<simgrid::mc::RegionSnapshot>(
new simgrid::mc::RegionSnapshot(std::move(region)));
- return;
}
static void get_memory_regions(simgrid::mc::RemoteClient* process, simgrid::mc::Snapshot* snapshot)
std::vector<simgrid::xbt::VmMap> const& maps,
simgrid::mc::ObjectInformation* result)
{
- char* name = xbt_basename(result->file_name.c_str());
+ std::string name = simgrid::xbt::Path(result->file_name).getBasename();
for (size_t i = 0; i < maps.size(); ++i) {
simgrid::xbt::VmMap const& reg = maps[i];
if (maps[i].pathname.empty())
continue;
- char* map_basename = xbt_basename(maps[i].pathname.c_str());
- if (strcmp(name, map_basename) != 0) {
- free(map_basename);
+ std::string map_basename = simgrid::xbt::Path(maps[i].pathname).getBasename();
+ if (map_basename != name)
continue;
- }
- free(map_basename);
// This is the non-GNU_RELRO-part of the data segment:
if (reg.prot == PROT_RW) {
result->end = result->end_exec;
xbt_assert(result->start_exec || result->start_rw || result->start_ro);
-
- free(name);
}
/************************************* Take Snapshot ************************************/
// If dot_output enabled, do not handle the corresponding file
if (dot_output != nullptr) {
- char* link_basename = xbt_basename(link);
- if (strcmp(link_basename, _sg_mc_dot_output_file) == 0) {
- free(link_basename);
+ std::string link_basename = simgrid::xbt::Path(link).getBasename();
+ if (link_basename == _sg_mc_dot_output_file)
continue;
- }
- free(link_basename);
}
// This is probably a shared memory used by lttng-ust:
snapshot->to_ignore = mc_model_checker->process().ignored_heap();
- if (_sg_mc_max_visited_states > 0 || strcmp(_sg_mc_property_file, "")) {
+ if (_sg_mc_max_visited_states > 0 || not _sg_mc_property_file.empty()) {
snapshot->stacks = take_snapshot_stacks(snapshot.get());
if (_sg_mc_hash)
snapshot->hash = simgrid::mc::hash(*snapshot);
#if HAVE_SMPI
if(snapshot->privatization_index >= 0) {
// Fix the privatization mmap:
- s_mc_message_restore message{MC_MESSAGE_RESTORE, snapshot->privatization_index};
+ s_mc_message_restore_t message{MC_MESSAGE_RESTORE, snapshot->privatization_index};
mc_model_checker->process().getChannel().send(message);
}
#endif