#include <libunwind-ptrace.h>
#include <sys/mman.h> // PROT_*
+#include <memory>
+#include <string>
+
using simgrid::mc::remote;
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_process, mc, "MC process information");
"libcrypt",
"libcrypto",
"libcurl",
+ "libcurl-gnutls",
"libcxxrt",
"libdebuginfod",
"libdl",
"libelf",
"libevent",
"libexecinfo",
+ "libffi",
"libflang",
"libflangrti",
"libgcc_s",
+ "libgmp",
+ "libgnutls",
+ "libgcrypt",
"libgfortran",
+ "libgpg-error",
"libgssapi_krb5",
+ "libhogweed",
"libidn2",
"libimf",
"libintlc",
"libkrb5support", /*odd behaviour on fedora rawhide ... remove these when fixed*/
"liblber",
"libldap",
+ "libldap_r",
"liblua5.1",
"liblua5.3",
"liblzma",
"libm",
+ "libmd",
+ "libnettle",
"libnghttp2",
"libomp",
+ "libp11-kit",
"libpapi",
"libpcre2",
"libpfm",
"libquadmath",
"libresolv",
"librt",
+ "librtmp",
"libsasl2",
"libselinux",
"libssh",
"libssl",
"libstdc++",
"libsvml",
+ "libtasn1",
"libtsan", /* gcc sanitizers */
"libubsan", /* gcc sanitizers */
"libunistring",
static ssize_t pread_whole(int fd, void* buf, size_t count, off_t offset)
{
- char* buffer = (char*)buf;
+ auto* buffer = static_cast<char*>(buf);
ssize_t real_count = count;
while (count) {
ssize_t res = pread(fd, buffer, count, offset);
static ssize_t pwrite_whole(int fd, const void* buf, size_t count, off_t offset)
{
- const char* buffer = (const char*)buf;
+ const auto* buffer = static_cast<const char*>(buf);
ssize_t real_count = count;
while (count) {
ssize_t res = pwrite(fd, buffer, count, offset);
int open_vm(pid_t pid, int flags)
{
- const size_t buffer_size = 30;
- char buffer[buffer_size];
- int res = snprintf(buffer, buffer_size, "/proc/%lli/mem", (long long)pid);
- if (res < 0 || (size_t)res >= buffer_size) {
- errno = ENAMETOOLONG;
- return -1;
- }
- return open(buffer, flags);
+ std::string buffer = "/proc/" + std::to_string(pid) + "/mem";
+ return open(buffer.c_str(), flags);
}
// ***** RemoteSimulation
{
// Read/dereference/refresh the std_heap pointer:
if (not this->heap)
- this->heap.reset(new s_xbt_mheap_t());
+ this->heap = std::make_unique<s_xbt_mheap_t>();
this->read_bytes(this->heap.get(), sizeof(mdesc), remote(this->heap_address));
this->cache_flags_ |= RemoteSimulation::cache_heap;
}
void RemoteSimulation::ignore_heap(IgnoredHeapRegion const& region)
{
if (ignored_heap_.empty()) {
- ignored_heap_.push_back(std::move(region));
+ ignored_heap_.push_back(region);
return;
}
- typedef std::vector<IgnoredHeapRegion>::size_type size_type;
+ using size_type = std::vector<IgnoredHeapRegion>::size_type;
size_type start = 0;
size_type end = ignored_heap_.size() - 1;
void RemoteSimulation::unignore_heap(void* address, size_t size)
{
- typedef std::vector<IgnoredHeapRegion>::size_type size_type;
+ using size_type = std::vector<IgnoredHeapRegion>::size_type;
size_type start = 0;
size_type end = ignored_heap_.size() - 1;