-/* Copyright (c) 2014-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2014-2018. The SimGrid Team. All rights reserved. */
/* 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. */
#include <xbt/mmalloc.h>
#include "src/mc/mc_smx.hpp"
-#include "src/mc/mc_snapshot.hpp"
#include "src/mc/mc_unw.hpp"
+#include "src/mc/sosp/mc_snapshot.hpp"
#include "src/mc/AddressSpace.hpp"
#include "src/mc/ObjectInformation.hpp"
"libboost_context-mt",
"libboost_system",
"libboost_thread",
+ "libboost_timer",
+ "libboost_unit_test_framework",
"libc",
"libc++",
"libcdt",
"libelf",
"libevent",
"libgcc_s",
+ "libimf",
+ "libintlc",
+ "libirng",
"liblua5.1",
"liblua5.3",
"liblzma",
"libm",
+ "libpapi",
+ "libpfm",
"libpthread",
"librt",
"libstdc++",
+ "libsvml",
"libunwind",
"libunwind-x86_64",
"libunwind-x86",
static std::string get_lib_name(const std::string& pathname)
{
- constexpr char digits[] = ".0123456789";
- std::string map_basename = simgrid::xbt::Path(pathname).getBasename();
+ std::string map_basename = simgrid::xbt::Path(pathname).get_base_name();
std::string libname;
size_t pos = map_basename.rfind(".so");
- if (pos != std::string::npos && map_basename.find_first_not_of(digits, pos + 3) == std::string::npos) {
- // strip the extension (matching regex "\.so[.0-9]*$")
+ if (pos != std::string::npos) {
+ // strip the extension (matching regex "\.so.*$")
libname.assign(map_basename, 0, pos);
// strip the version suffix (matching regex "-[.0-9-]*$")
while (true) {
pos = libname.rfind('-');
- if (pos == std::string::npos || libname.find_first_not_of(digits, pos + 1) != std::string::npos)
+ if (pos == std::string::npos || libname.find_first_not_of(".0123456789", pos + 1) != std::string::npos)
break;
libname.erase(pos);
}
ReadOptions options) const
{
if (process_index != simgrid::mc::ProcessIndexDisabled) {
- std::shared_ptr<simgrid::mc::ObjectInformation> const& info = this->find_object_info_rw((void*)address.address());
+ std::shared_ptr<simgrid::mc::ObjectInformation> const& info = this->find_object_info_rw(address);
// Segment overlap is not handled.
#if HAVE_SMPI
if (info.get() && this->privatized(*info)) {