/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
+#define _FILE_OFFSET_BITS 64 /* needed for pread_whole to work as expected on 32bits */
+
#include "src/mc/remote/RemoteClient.hpp"
#include "xbt/file.hpp"
#include "src/mc/mc_smx.hpp"
#include "src/mc/sosp/mc_snapshot.hpp"
-#define _FILE_OFFSET_BITS 64 /* needed for pread_whole to work as expected on 32bits */
-
#include <fcntl.h>
#include <libunwind-ptrace.h>
#include <sys/mman.h> // PROT_*
"libboost_chrono",
"libboost_context",
"libboost_context-mt",
+ "libboost_stacktrace_addr2line",
"libboost_stacktrace_backtrace",
"libboost_system",
"libboost_thread",
this->memory_file = fd;
// Read std_heap (is a struct mdesc*):
- simgrid::mc::Variable* std_heap_var = this->find_variable("__mmalloc_default_mdp");
+ const simgrid::mc::Variable* std_heap_var = this->find_variable("__mmalloc_default_mdp");
if (not std_heap_var)
xbt_die("No heap information in the target process");
if (not std_heap_var->address)
{
// Read/dereference/refresh the std_heap pointer:
if (not this->heap)
- this->heap = std::unique_ptr<s_xbt_mheap_t>(new s_xbt_mheap_t());
+ this->heap.reset(new s_xbt_mheap_t());
this->read_bytes(this->heap.get(), sizeof(mdesc), remote(this->heap_address), simgrid::mc::ProcessIndexDisabled);
this->cache_flags_ |= RemoteClient::cache_heap;
}
/** Find (one occurrence of) the named variable definition
*/
-simgrid::mc::Variable* RemoteClient::find_variable(const char* name) const
+const simgrid::mc::Variable* RemoteClient::find_variable(const char* name) const
{
// First lookup the variable in the executable shared object.
// A global variable used directly by the executable code from a library
// We need to look up the variable in the executable first.
if (this->binary_info) {
std::shared_ptr<simgrid::mc::ObjectInformation> const& info = this->binary_info;
- simgrid::mc::Variable* var = info->find_variable(name);
+ const simgrid::mc::Variable* var = info->find_variable(name);
if (var)
return var;
}
for (std::shared_ptr<simgrid::mc::ObjectInformation> const& info : this->object_infos) {
- simgrid::mc::Variable* var = info->find_variable(name);
+ const simgrid::mc::Variable* var = info->find_variable(name);
if (var)
return var;
}
void RemoteClient::read_variable(const char* name, void* target, size_t size) const
{
- simgrid::mc::Variable* var = this->find_variable(name);
+ const simgrid::mc::Variable* var = this->find_variable(name);
xbt_assert(var->address, "No simple location for this variable");
xbt_assert(var->type->full_type, "Partial type for %s, cannot check size", name);
xbt_assert((size_t)var->type->full_type->byte_size == size, "Unexpected size for %s (expected %zu, was %zu)", name,
return;
}
- simgrid::mc::dumpStack(stderr, cursor);
+ simgrid::mc::dumpStack(stderr, std::move(cursor));
_UPT_destroy(context);
unw_destroy_addr_space(as);