A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
travis: improve our detection of whether we are on a pull request
[simgrid.git]
/
src
/
mc
/
Frame.hpp
diff --git
a/src/mc/Frame.hpp
b/src/mc/Frame.hpp
index ee3996053120e8a5f8d48999cd4dfa901011355f..0cc66304b652ba0362ae519fd7930c56c8c66c31 100644
(file)
--- a/
src/mc/Frame.hpp
+++ b/
src/mc/Frame.hpp
@@
-8,31
+8,52
@@
#define SIMGRID_MC_FRAME_HPP
#include <string>
#define SIMGRID_MC_FRAME_HPP
#include <string>
+#include <cstdint>
#include <xbt/base.h>
#include <xbt/base.h>
+#include <xbt/range.hpp>
-#include "src/mc/mc_forward.h"
+#include "src/mc/mc_forward.h
pp
"
#include "src/mc/LocationList.hpp"
#include "src/mc/Variable.hpp"
#include "src/mc/LocationList.hpp"
#include "src/mc/Variable.hpp"
-#include "src/mc/Frame.hpp"
namespace simgrid {
namespace mc {
namespace simgrid {
namespace mc {
+/** Debug information about a given function or scope within a function */
class Frame {
public:
Frame();
class Frame {
public:
Frame();
- int tag;
+ /** Kind of scope (DW_TAG_subprogram, DW_TAG_inlined_subroutine, etc.) */
+ int tag = DW_TAG_invalid;
+
+ /** Name of the function (if it is a function) */
std::string name;
std::string name;
- void *low_pc;
- void *high_pc;
+
+ /** Range of instruction addresses for which this scope is valid */
+ simgrid::xbt::Range<std::uint64_t> range;
+
simgrid::dwarf::LocationList frame_base_location;
simgrid::dwarf::LocationList frame_base_location;
+
+ /** List of the variables (sorted by name) */
std::vector<Variable> variables;
std::vector<Variable> variables;
- unsigned long int id; /* DWARF offset of the subprogram */
+
+ /* Unique identifier for this scope (in the object_info)
+ *
+ * This is the global DWARF offset of the DIE. */
+ unsigned long int id = 0;
+
std::vector<Frame> scopes;
std::vector<Frame> scopes;
- unsigned long int abstract_origin_id;
- simgrid::mc::ObjectInformation* object_info;
+
+ /** Value of `DW_AT_abstract_origin`
+ *
+ * For inlined subprograms, this is the ID of the
+ * parent function.
+ */
+ unsigned long int abstract_origin_id = 0;
+
+ simgrid::mc::ObjectInformation* object_info = nullptr;
void* frame_base(unw_cursor_t& unw_cursor) const;
void remove_variable(char* name);
void* frame_base(unw_cursor_t& unw_cursor) const;
void remove_variable(char* name);
@@
-42,8
+63,7
@@
inline
Frame::Frame()
{
this->tag = 0;
Frame::Frame()
{
this->tag = 0;
- this->low_pc = nullptr;
- this->high_pc = nullptr;
+ this->range = {0, 0};
this->id = 0;
this->abstract_origin_id = 0;
this->object_info = nullptr;
this->id = 0;
this->abstract_origin_id = 0;
this->object_info = nullptr;