From: Arnaud Giersch Date: Thu, 5 Apr 2018 08:21:18 +0000 (+0200) Subject: Use dladdr(3) to get region filename. X-Git-Tag: v3.20~515 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/398f1a82c992764ca69db74edde82ad36a6b1277 Use dladdr(3) to get region filename. proc_regionfilename gives bogus results and breaks mmap privatization. --- diff --git a/src/xbt/memory_map.cpp b/src/xbt/memory_map.cpp index 567611b81b..edba494696 100644 --- a/src/xbt/memory_map.cpp +++ b/src/xbt/memory_map.cpp @@ -13,13 +13,13 @@ #include #if defined __APPLE__ +# include # include # include # include # include # include # include -# include # if __MAC_OS_X_VERSION_MIN_REQUIRED < 1050 # define mach_vm_address_t vm_address_t # define mach_vm_size_t vm_size_t @@ -145,11 +145,9 @@ XBT_PRIVATE std::vector get_memory_map(pid_t pid) memreg.inode = 0; /* Path */ - char path[MAXPATHLEN]; - int pathlen; - pathlen = proc_regionfilename(pid, address, path, sizeof(path)); - path[pathlen] = '\0'; - memreg.pathname = path; + Dl_info dlinfo; + if (dladdr(reinterpret_cast(address), &dlinfo)) + memreg.pathname = dlinfo.dli_fname; XBT_DEBUG("Region: %016" PRIx64 "-%016" PRIx64 " | %c%c%c | %s", memreg.start_addr, memreg.end_addr, (memreg.prot & PROT_READ) ? 'r' : '-', (memreg.prot & PROT_WRITE) ? 'w' : '-',