X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/88fad0aaff9eb463f048bfdfe4ad6218aba44ddb..51c23076e2b42ff07dc167dea1cb0e3a4ab3cf68:/src/xbt/memory_map.cpp diff --git a/src/xbt/memory_map.cpp b/src/xbt/memory_map.cpp index 2be233b060..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 @@ -46,9 +46,10 @@ # include #endif -#include +#include #include #include +#include #include "memory_map.hpp" @@ -144,21 +145,13 @@ 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; - -#if 0 /* Display mappings for debug */ - fprintf(stderr, - "%#014llx - %#014llx | %c%c%c | %s\n", - memreg.start_addr, memreg.end_addr, - (memreg.prot & PROT_READ) ? 'r' : '-', - (memreg.prot & PROT_WRITE) ? 'w' : '-', - (memreg.prot & PROT_EXEC) ? 'x' : '-', - memreg.pathname.c_str()); -#endif + 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' : '-', + (memreg.prot & PROT_EXEC) ? 'x' : '-', memreg.pathname.c_str()); ret.push_back(std::move(memreg)); address += size;