Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines for 2022.
[simgrid.git] / src / mc / inspect / mc_unw.cpp
index 82efd56..8a25eec 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2019. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2015-2022. 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. */
@@ -12,7 +12,7 @@
 
 #include "src/mc/inspect/mc_unw.hpp"
 #include "src/mc/inspect/Frame.hpp"
-#include "src/mc/remote/RemoteClient.hpp"
+#include "src/mc/remote/RemoteProcess.hpp"
 
 #include <cstring>
 
@@ -39,7 +39,7 @@ namespace mc {
 int UnwindContext::find_proc_info(unw_addr_space_t /*as*/, unw_word_t ip, unw_proc_info_t* pip, int need_unwind_info,
                                   void* arg) noexcept
 {
-  simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*)arg;
+  const simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*)arg;
   return unw_get_accessors(context->process_->unw_underlying_addr_space)
       ->find_proc_info(context->process_->unw_underlying_addr_space, ip, pip, need_unwind_info,
                        context->process_->unw_underlying_context);
@@ -51,7 +51,7 @@ int UnwindContext::find_proc_info(unw_addr_space_t /*as*/, unw_word_t ip, unw_pr
  */
 void UnwindContext::put_unwind_info(unw_addr_space_t /*as*/, unw_proc_info_t* pip, void* arg) noexcept
 {
-  simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*)arg;
+  const simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*)arg;
   return unw_get_accessors(context->process_->unw_underlying_addr_space)
       ->put_unwind_info(context->process_->unw_underlying_addr_space, pip, context->process_->unw_underlying_context);
 }
@@ -62,7 +62,7 @@ void UnwindContext::put_unwind_info(unw_addr_space_t /*as*/, unw_proc_info_t* pi
  */
 int UnwindContext::get_dyn_info_list_addr(unw_addr_space_t /*as*/, unw_word_t* dilap, void* arg) noexcept
 {
-  simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*)arg;
+  const simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*)arg;
   return unw_get_accessors(context->process_->unw_underlying_addr_space)
       ->get_dyn_info_list_addr(context->process_->unw_underlying_addr_space, dilap,
                                context->process_->unw_underlying_context);
@@ -74,7 +74,7 @@ int UnwindContext::get_dyn_info_list_addr(unw_addr_space_t /*as*/, unw_word_t* d
  */
 int UnwindContext::access_mem(unw_addr_space_t /*as*/, unw_word_t addr, unw_word_t* valp, int write, void* arg) noexcept
 {
-  simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*)arg;
+  const simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*)arg;
   if (write)
     return -UNW_EREADONLYREG;
   context->address_space_->read_bytes(valp, sizeof(unw_word_t), remote(addr));
@@ -172,24 +172,24 @@ void* UnwindContext::get_reg(unw_context_t* context, unw_regnum_t regnum) noexce
 int UnwindContext::access_reg(unw_addr_space_t /*as*/, unw_regnum_t regnum, unw_word_t* valp, int write,
                               void* arg) noexcept
 {
-  simgrid::mc::UnwindContext* as_context = (simgrid::mc::UnwindContext*)arg;
-  unw_context_t* context                 = &as_context->unwind_context_;
+  auto* as_context       = static_cast<simgrid::mc::UnwindContext*>(arg);
+  unw_context_t* context = &as_context->unwind_context_;
   if (write)
     return -UNW_EREADONLYREG;
-  greg_t* preg = (greg_t*)get_reg(context, regnum);
+  const greg_t* preg = (greg_t*)get_reg(context, regnum);
   if (not preg)
     return -UNW_EBADREG;
   *valp = *preg;
   return 0;
 }
 
-/** Find informations about a function (libunwind method)
+/** Find information about a function (libunwind method)
  */
 int UnwindContext::get_proc_name(unw_addr_space_t /*as*/, unw_word_t addr, char* bufp, size_t buf_len, unw_word_t* offp,
                                  void* arg) noexcept
 {
-  simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*)arg;
-  simgrid::mc::Frame* frame           = context->process_->find_function(remote(addr));
+  const simgrid::mc::UnwindContext* context = (simgrid::mc::UnwindContext*)arg;
+  const simgrid::mc::Frame* frame           = context->process_->find_function(remote(addr));
   if (not frame)
     return -UNW_ENOINFO;
   *offp = (unw_word_t)frame->range.begin() - addr;
@@ -205,25 +205,23 @@ int UnwindContext::get_proc_name(unw_addr_space_t /*as*/, unw_word_t addr, char*
 
 // ***** Init
 
-/** Virtual table for our `libunwind` implementation
- *
- *  Stack unwinding on a `simgrid::mc::Process*` (for memory, unwinding information)
- *  and `ucontext_t` (for processor registers).
- *
- * It works with the `simgrid::mc::UnwindContext` context.
- *
- * Use nullptr as access_fpreg and resume, as we don't need them.
- */
-unw_accessors_t UnwindContext::accessors = {&find_proc_info, &put_unwind_info, &get_dyn_info_list_addr,
-                                            &access_mem,     &access_reg,      nullptr,
-                                            nullptr,         &get_proc_name};
-
 unw_addr_space_t UnwindContext::createUnwindAddressSpace()
 {
-  return unw_create_addr_space(&UnwindContext::accessors, BYTE_ORDER);
+  /** Virtual table for our `libunwind` implementation
+   *
+   *  Stack unwinding on a `simgrid::mc::Process*` (for memory, unwinding information)
+   *  and `ucontext_t` (for processor registers).
+   *
+   * It works with the `simgrid::mc::UnwindContext` context.
+   *
+   * Use nullptr as access_fpreg and resume, as we don't need them.
+   */
+  unw_accessors_t accessors = {&find_proc_info, &put_unwind_info, &get_dyn_info_list_addr, &access_mem, &access_reg,
+                               nullptr,         nullptr,          &get_proc_name};
+  return unw_create_addr_space(&accessors, BYTE_ORDER);
 }
 
-void UnwindContext::initialize(simgrid::mc::RemoteClient* process, unw_context_t* c)
+void UnwindContext::initialize(simgrid::mc::RemoteProcess* process, unw_context_t* c)
 {
   this->address_space_ = process;
   this->process_      = process;