Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Tidy up mc/mc_unw a little.
[simgrid.git] / src / mc / mc_unw.hpp
index 3a62c53..f629b8c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2017. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2015-2019. 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. */
 #include "src/mc/mc_forward.hpp"
 #include "xbt/base.h"
 
-#include <libunwind.h>
 #include <cstdio>
-#include <sys/types.h>
+#include <libunwind.h>
 
 namespace simgrid {
 namespace unw {
 
 XBT_PRIVATE unw_addr_space_t create_addr_space();
 XBT_PRIVATE void* create_context(unw_addr_space_t as, pid_t pid);
-
 }
 }
 
@@ -50,46 +48,30 @@ class UnwindContext {
   unw_context_t unwindContext_;
 
 public:
-  UnwindContext() = default;
-  ~UnwindContext() { clear(); }
   void initialize(simgrid::mc::RemoteClient* process, unw_context_t* c);
-  void clear();
   unw_cursor_t cursor();
 
 private: // Methods and virtual table for libunwind
-  static int find_proc_info(unw_addr_space_t as,
-                unw_word_t ip, unw_proc_info_t *pip,
-                int need_unwind_info, void* arg) noexcept;
-  static void put_unwind_info(unw_addr_space_t as,
-                unw_proc_info_t *pip, void* arg) noexcept;
-  static int get_dyn_info_list_addr(unw_addr_space_t as,
-                unw_word_t *dilap, void* arg) noexcept;
-  static int access_mem(unw_addr_space_t as,
-                unw_word_t addr, unw_word_t *valp,
-                int write, void* arg) noexcept;
+  static int find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t* pip, int need_unwind_info,
+                            void* arg) noexcept;
+  static void put_unwind_info(unw_addr_space_t as, unw_proc_info_t* pip, void* arg) noexcept;
+  static int get_dyn_info_list_addr(unw_addr_space_t as, unw_word_t* dilap, void* arg) noexcept;
+  static int access_mem(unw_addr_space_t as, unw_word_t addr, unw_word_t* valp, int write, void* arg) noexcept;
   static void* get_reg(unw_context_t* context, unw_regnum_t regnum) noexcept;
-  static int access_reg(unw_addr_space_t as,
-                unw_regnum_t regnum, unw_word_t *valp,
-                int write, void* arg) noexcept;
-  static int access_fpreg(unw_addr_space_t as,
-                unw_regnum_t regnum, unw_fpreg_t *fpvalp,
-                int write, void* arg) noexcept;
-  static int resume(unw_addr_space_t as,
-                unw_cursor_t *cp, void* arg) noexcept;
-  static int 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;
+  static int access_reg(unw_addr_space_t as, unw_regnum_t regnum, unw_word_t* valp, int write, void* arg) noexcept;
+  static int access_fpreg(unw_addr_space_t as, unw_regnum_t regnum, unw_fpreg_t* fpvalp, int write, void* arg) noexcept;
+  static int resume(unw_addr_space_t as, unw_cursor_t* cp, void* arg) noexcept;
+  static int 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;
   static unw_accessors_t accessors;
+
 public:
   // Create a libunwind address space:
   static unw_addr_space_t createUnwindAddressSpace();
 };
 
-void MC_dump_stack_unw(FILE* file, unw_cursor_t cursor);
-void dumpStack(FILE* file, unw_cursor_t cursor);
+void dumpStack(FILE* file, unw_cursor_t&& cursor);
 void dumpStack(FILE* file, pid_t pid);
-
 }
 }