Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid
[simgrid.git] / src / mc / mc_object_info.h
index b175daf..2ec4e56 100644 (file)
 
 #include <elfutils/libdw.h>
 
-#include "mc_forward.h"
+#include "mc_forward.hpp"
 #include "mc_location.h"
 #include "mc_process.h"
 #include "../smpi/private.h"
 
 // ***** Type
 
-typedef int e_mc_type_type;
-
 namespace simgrid {
 namespace mc {
 
@@ -47,7 +45,8 @@ public:
   Type(Type&& type) = default;
   Type& operator=(Type&&) = default;
 
-  e_mc_type_type type;
+  /** The DWARF TAG of the type (e.g. DW_TAG_array_type) */
+  int type;
   Dwarf_Off id; /* Offset in the section (in hexadecimal form) */
   std::string name; /* Name of the type */
   int byte_size; /* Size in bytes */
@@ -59,8 +58,8 @@ public:
   // Location (for members) is either of:
   simgrid::mc::DwarfExpression location_expression;
 
-  mc_type_t subtype; // DW_AT_type
-  mc_type_t full_type; // The same (but more complete) type
+  simgrid::mc::Type* subtype; // DW_AT_type
+  simgrid::mc::Type* full_type; // The same (but more complete) type
 
   bool has_offset_location() const
   {
@@ -89,11 +88,6 @@ public:
 
 // ***** Object info
 
-/** Bit field of options */
-typedef int mc_object_info_flags;
-#define MC_OBJECT_INFO_NONE 0
-#define MC_OBJECT_INFO_EXECUTABLE 1
-
 namespace simgrid {
 namespace mc {
 
@@ -105,14 +99,14 @@ public:
   int global;
   std::string name;
   std::uint64_t type_id;
-  mc_type_t type;
+  simgrid::mc::Type* type;
 
   // Use either of:
   simgrid::mc::LocationList location_list;
   void* address;
 
   size_t start_scope;
-  mc_object_info_t object_info;
+  simgrid::mc::ObjectInformation* object_info;
 };
 
 class Frame {
@@ -128,7 +122,7 @@ public:
   unsigned long int id; /* DWARF offset of the subprogram */
   std::vector<Frame> scopes;
   Dwarf_Off abstract_origin_id;
-  mc_object_info_t object_info;
+  simgrid::mc::ObjectInformation* object_info;
 };
 
 /** An entry in the functions index
@@ -137,7 +131,7 @@ public:
  */
 struct FunctionIndexEntry {
   void* low_pc;
-  mc_frame_t function;
+  simgrid::mc::Frame* function;
 };
 
 /** Information about an (ELF) executable/sharedobject
@@ -165,7 +159,11 @@ public:
   ObjectInformation(ObjectInformation const&) = delete;
   ObjectInformation& operator=(ObjectInformation const&) = delete;
 
-  mc_object_info_flags flags;
+  // Flag:
+  static const int Executable = 1;
+
+  /** Bitfield of flags */
+  int flags;
   std::string file_name;
   const void* start;
   const void *end;
@@ -190,7 +188,7 @@ public:
 
   bool executable() const
   {
-    return this->flags & MC_OBJECT_INFO_EXECUTABLE;
+    return this->flags & simgrid::mc::ObjectInformation::Executable;
   }
 
   bool privatized() const
@@ -200,8 +198,7 @@ public:
 
   void* base_address() const;
 
-  mc_frame_t find_function(const void *ip) const;
-  // TODO, should be simgrid::mc::Variable*
+  simgrid::mc::Frame* find_function(const void *ip) const;
   simgrid::mc::Variable* find_variable(const char* name) const;
 
 };
@@ -210,17 +207,17 @@ public:
 }
 
 
-XBT_INTERNAL std::shared_ptr<s_mc_object_info_t> MC_find_object_info(
+XBT_INTERNAL std::shared_ptr<simgrid::mc::ObjectInformation> MC_find_object_info(
   std::vector<simgrid::mc::VmMap> const& maps, const char* name, int executable);
-XBT_INTERNAL void MC_post_process_object_info(mc_process_t process, mc_object_info_t info);
+XBT_INTERNAL void MC_post_process_object_info(simgrid::mc::Process* process, simgrid::mc::ObjectInformation* info);
 
-XBT_INTERNAL void MC_dwarf_get_variables(mc_object_info_t info);
-XBT_INTERNAL void MC_dwarf_get_variables_libdw(mc_object_info_t info);
+XBT_INTERNAL void MC_dwarf_get_variables(simgrid::mc::ObjectInformation* info);
+XBT_INTERNAL void MC_dwarf_get_variables_libdw(simgrid::mc::ObjectInformation* info);
 XBT_INTERNAL const char* MC_dwarf_attrname(int attr);
 XBT_INTERNAL const char* MC_dwarf_tagname(int tag);
 
 XBT_INTERNAL void* mc_member_resolve(
-  const void* base, mc_type_t type, mc_type_t member,
-  mc_address_space_t snapshot, int process_index);
+  const void* base, simgrid::mc::Type* type, simgrid::mc::Type* member,
+  simgrid::mc::AddressSpace* snapshot, int process_index);
 
 #endif