#include "mc_smx.h"
#include "mc_server.h"
-#include "mc/Process.hpp"
-#include "mc/AddressSpace.hpp"
-#include "mc/ObjectInformation.hpp"
-#include "mc/Variable.hpp"
+#include "src/mc/Process.hpp"
+#include "src/mc/AddressSpace.hpp"
+#include "src/mc/ObjectInformation.hpp"
+#include "src/mc/Variable.hpp"
using simgrid::mc::remote;
"libelf",
"libgcc_s",
"liblua5.1",
+ "liblua5.3",
"liblzma",
"libm",
"libpthread",
process->pid_ = pid;
process->running_ = true;
process->status_ = 0;
- process->memory_map_ = get_memory_map(pid);
+ process->memory_map_ = simgrid::xbt::get_memory_map(pid);
process->cache_flags = MC_PROCESS_CACHE_FLAG_NONE;
- process->heap = NULL;
- process->heap_info = NULL;
process->init_memory_map_info();
process->clear_refs_fd_ = -1;
process->pagemap_fd_ = -1;
process->cache_flags = MC_PROCESS_CACHE_FLAG_NONE;
- free(process->heap);
- process->heap = NULL;
-
- free(process->heap_info);
- process->heap_info = NULL;
-
if (process->clear_refs_fd_ >= 0)
close(process->clear_refs_fd_);
if (process->pagemap_fd_ >= 0)
{
xbt_assert(mc_mode == MC_MODE_SERVER);
// Read/dereference/refresh the std_heap pointer:
- if (!this->heap) {
- this->heap = (struct mdesc*) malloc(sizeof(struct mdesc));
- }
- this->read_bytes(this->heap, sizeof(struct mdesc), remote(this->heap_address),
- simgrid::mc::ProcessIndexDisabled);
+ if (!this->heap)
+ this->heap = std::unique_ptr<s_xbt_mheap_t>(new s_xbt_mheap_t());
+ this->read_bytes(this->heap.get(), sizeof(struct mdesc),
+ remote(this->heap_address), simgrid::mc::ProcessIndexDisabled);
this->cache_flags |= MC_PROCESS_CACHE_FLAG_HEAP;
}
if (!(this->cache_flags & MC_PROCESS_CACHE_FLAG_HEAP))
this->refresh_heap();
// Refresh process->heapinfo:
- size_t malloc_info_bytesize =
- (this->heap->heaplimit + 1) * sizeof(malloc_info);
- this->heap_info = (malloc_info*) realloc(this->heap_info, malloc_info_bytesize);
- this->read_bytes(this->heap_info, malloc_info_bytesize,
+ size_t count = this->heap->heaplimit + 1;
+ if (this->heap_info.size() < count)
+ this->heap_info.resize(count);
+ this->read_bytes(this->heap_info.data(), count * sizeof(malloc_info),
remote(this->heap->heapinfo), simgrid::mc::ProcessIndexDisabled);
this->cache_flags |= MC_PROCESS_CACHE_FLAG_MALLOC_INFO;
}
if(regcomp(&res.so_re, SO_RE, 0) || regcomp(&res.version_re, VERSION_RE, 0))
xbt_die(".so regexp did not compile");
- std::vector<simgrid::mc::VmMap> const& maps = this->memory_map_;
+ std::vector<simgrid::xbt::VmMap> const& maps = this->memory_map_;
const char* current_name = NULL;
this->object_infos.resize(0);
for (size_t i=0; i < maps.size(); i++) {
- simgrid::mc::VmMap const& reg = maps[i];
+ simgrid::xbt::VmMap const& reg = maps[i];
const char* pathname = maps[i].pathname.c_str();
// Nothing to do
}
std::shared_ptr<simgrid::mc::ObjectInformation> info =
- MC_find_object_info(this->memory_map_, pathname, is_executable);
+ MC_find_object_info(this->memory_map_, pathname);
this->object_infos.push_back(info);
if (is_executable)
this->binary_info = info;