-/* Copyright (c) 2004-2014. The SimGrid Team.
+/* Copyright (c) 2004-2015. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
#include <libunwind.h>
#include <dwarf.h>
-#include <elfutils/libdw.h>
#include <simgrid_config.h>
#include "mc_base.h"
namespace simgrid {
namespace mc {
-typedef std::vector<Dwarf_Op> DwarfExpression;
+typedef struct
+{
+ uint8_t atom;
+ std::uint64_t number;
+ std::uint64_t number2;
+ std::uint64_t offset;
+} DwarfInstruction;
+typedef std::vector<DwarfInstruction> DwarfExpression;
/** \brief A DWARF expression with optional validity contraints */
class LocationListEntry {
}
}
-XBT_INTERNAL void mc_dwarf_resolve_location(
+XBT_PRIVATE void mc_dwarf_resolve_location(
mc_location_t location, simgrid::mc::DwarfExpression* expression,
simgrid::mc::ObjectInformation* object_info, unw_cursor_t* c,
void* frame_pointer_address, simgrid::mc::AddressSpace* address_space,
int process_index);
-MC_SHOULD_BE_INTERNAL void mc_dwarf_resolve_locations(
+void mc_dwarf_resolve_locations(
mc_location_t location, simgrid::mc::LocationList* locations,
simgrid::mc::ObjectInformation* object_info, unw_cursor_t* c,
void* frame_pointer_address, simgrid::mc::AddressSpace* address_space,
int process_index);
-XBT_INTERNAL void mc_dwarf_location_list_init(
- simgrid::mc::LocationList*, simgrid::mc::ObjectInformation* info, Dwarf_Die* die,
- Dwarf_Attribute* attr);
-
#define MC_EXPRESSION_STACK_SIZE 64
#define MC_EXPRESSION_OK 0
int process_index;
} s_mc_expression_state_t, *mc_expression_state_t;
-MC_SHOULD_BE_INTERNAL int mc_dwarf_execute_expression(
- size_t n, const Dwarf_Op* ops, mc_expression_state_t state);
+int mc_dwarf_execute_expression(
+ size_t n, const simgrid::mc::DwarfInstruction* ops, mc_expression_state_t state);
-MC_SHOULD_BE_INTERNAL void* mc_find_frame_base(
+void* mc_find_frame_base(
simgrid::mc::Frame* frame, simgrid::mc::ObjectInformation* object_info, unw_cursor_t* unw_cursor);
SG_END_DECL()
namespace simgrid {
namespace mc {
-inline
+static inline
int execute(DwarfExpression const& expression, mc_expression_state_t state)
{
return mc_dwarf_execute_expression(