#define SO_RE "\\.so[\\.0-9]*$"
#define VERSION_RE "-[\\.0-9-]*$"
-// In lexicographic order (but this is currently not used in the code):
-static const char *const filtered_libraries[] = {
- "ld",
- "libbz2",
- "libboost_chrono",
- "libboost_context",
- "libboost_system",
- "libboost_thread",
- "libc",
- "libc++",
- "libcdt",
- "libcgraph",
- "libdl",
- "libdw",
- "libelf",
- "libgcc_s",
- "liblua5.1",
- "liblua5.3",
- "liblzma",
- "libm",
- "libpthread",
- "librt",
- "libsigc",
- "libstdc++",
- "libunwind",
- "libunwind-x86_64",
- "libunwind-x86",
- "libunwind-ptrace",
- "libz"
-};
+// List of library which memory segments are not considered:
+static const char* const filtered_libraries[] = {
+#ifdef __linux__
+ "ld",
+#elif defined __FreeBSD__
+ "ld-elf",
+ "ld-elf32",
+ "libkvm", /* kernel data access library */
+ "libprocstat", /* process and file information retrieval */
+ "libthr", /* thread library */
+ "libutil",
+#endif
+ "libasan", /* gcc sanitizers */
+ "libargp", /* workarounds for glibc-less systems */
+ "libtsan",
+ "libubsan",
+ "libbz2",
+ "libboost_chrono",
+ "libboost_context",
+ "libboost_context-mt",
+ "libboost_system",
+ "libboost_thread",
+ "libc",
+ "libc++",
+ "libcdt",
+ "libcgraph",
+ "libcxxrt",
+ "libdl",
+ "libdw",
+ "libelf",
+ "libevent",
+ "libgcc_s",
+ "liblua5.1",
+ "liblua5.3",
+ "liblzma",
+ "libm",
+ "libpthread",
+ "librt",
+ "libstdc++",
+ "libunwind",
+ "libunwind-x86_64",
+ "libunwind-x86",
+ "libunwind-ptrace",
+ "libz"};
static bool is_simgrid_lib(const char* libname)
{
/** Refresh the information about the process
*
- * Do not use direclty, this is used by the getters when appropriate
+ * Do not use directly, this is used by the getters when appropriate
* in order to have fresh data.
*/
void Process::refresh_heap()
regfree(&res.so_re);
regfree(&res.version_re);
- // Resolve time (including accross differents objects):
+ // Resolve time (including across different objects):
for (auto const& object_info : this->object_infos)
postProcessObjectInformation(this, object_info.get());
return info ? info->find_function((void*) ip.address()) : nullptr;
}
-/** Find (one occurence of) the named variable definition
+/** Find (one occurrence of) the named variable definition
*/
simgrid::mc::Variable* Process::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
// is reinstanciated in the executable memory .data/.bss.
- // We need to look up the variable in the execvutable first.
+ // 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);
this->read_bytes(target, size, remote(var->address));
}
-std::string Process::read_string(RemotePtr<void> address) const
+std::string Process::read_string(RemotePtr<char> address) const
{
if (!address)
return {};
+ // TODO, use std::vector with .data() in C++17 to avoid useless copies
std::vector<char> res(128);
off_t off = 0;
mc_model_checker->process().read<s_smpi_privatisation_region_t>(
remote(remote_smpi_privatisation_regions + process_index));
- // Address translation in the privaization segment:
+ // Address translation in the privatization segment:
size_t offset = address.address() - (std::uint64_t)info->start_rw;
address = remote((char*)privatisation_region.address + offset);
}
void Process::dumpStack()
{
- unw_addr_space_t as = unw_create_addr_space(&_UPT_accessors, __BYTE_ORDER);
+ unw_addr_space_t as = unw_create_addr_space(&_UPT_accessors, BYTE_ORDER);
if (as == nullptr) {
XBT_ERROR("Could not initialize ptrace address space");
return;