X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ffe8ce65fd9a8e18a0469f26f067c3ea6d5d60d4..deaddec5dc5d4dda8dc1b9692869970e253facfa:/src/mc/mc_location.h diff --git a/src/mc/mc_location.h b/src/mc/mc_location.h index 5c450caae7..1bafe6c5bd 100644 --- a/src/mc/mc_location.h +++ b/src/mc/mc_location.h @@ -4,20 +4,29 @@ /* 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. */ -#ifndef MC_OBJECT_LOCATION_H -#define MC_OBJECT_LOCATION_H +#ifndef SIMGRID_MC_OBJECT_LOCATION_H +#define SIMGRID_MC_OBJECT_LOCATION_H #include +#include + #include #include #include #include -#include "mc_interface.h" -#include "mc_object_info.h" +#include "mc_base.h" #include "mc_forward.h" -#include "mc_address_space.h" +#include "AddressSpace.hpp" + +namespace simgrid { +namespace mc { + +typedef std::vector DwarfExpression; + +} +} SG_BEGIN_DECL() @@ -76,16 +85,16 @@ enum mc_location_type mc_get_location_type(mc_location_t location) { } } -void mc_dwarf_resolve_location(mc_location_t location, mc_expression_t expression, mc_object_info_t object_info, unw_cursor_t* c, void* frame_pointer_address, mc_address_space_t address_space, int process_index); -void mc_dwarf_resolve_locations(mc_location_t location, mc_location_list_t locations, mc_object_info_t object_info, unw_cursor_t* c, void* frame_pointer_address, mc_address_space_t address_space, int process_index); +XBT_INTERNAL void mc_dwarf_resolve_location(mc_location_t location, mc_expression_t expression, mc_object_info_t object_info, unw_cursor_t* c, void* frame_pointer_address, mc_address_space_t address_space, int process_index); +MC_SHOULD_BE_INTERNAL void mc_dwarf_resolve_locations(mc_location_t location, mc_location_list_t locations, mc_object_info_t object_info, unw_cursor_t* c, void* frame_pointer_address, mc_address_space_t address_space, int process_index); -void mc_dwarf_expression_clear(mc_expression_t expression); -void mc_dwarf_expression_init(mc_expression_t expression, size_t len, Dwarf_Op* ops); +XBT_INTERNAL void mc_dwarf_expression_clear(mc_expression_t expression); +XBT_INTERNAL void mc_dwarf_expression_init(mc_expression_t expression, size_t len, Dwarf_Op* ops); -void mc_dwarf_location_list_clear(mc_location_list_t list); +XBT_INTERNAL void mc_dwarf_location_list_clear(mc_location_list_t list); -void mc_dwarf_location_list_init_from_expression(mc_location_list_t target, size_t len, Dwarf_Op* ops); -void mc_dwarf_location_list_init(mc_location_list_t target, mc_object_info_t info, Dwarf_Die* die, Dwarf_Attribute* attr); +XBT_INTERNAL void mc_dwarf_location_list_init_from_expression(mc_location_list_t target, size_t len, Dwarf_Op* ops); +XBT_INTERNAL void mc_dwarf_location_list_init(mc_location_list_t target, mc_object_info_t info, Dwarf_Die* die, Dwarf_Attribute* attr); #define MC_EXPRESSION_STACK_SIZE 64 @@ -108,10 +117,25 @@ typedef struct s_mc_expression_state { int process_index; } s_mc_expression_state_t, *mc_expression_state_t; -int mc_dwarf_execute_expression(size_t n, const Dwarf_Op* ops, mc_expression_state_t state); +MC_SHOULD_BE_INTERNAL int mc_dwarf_execute_expression( + size_t n, const Dwarf_Op* ops, mc_expression_state_t state); -void* mc_find_frame_base(dw_frame_t frame, mc_object_info_t object_info, unw_cursor_t* unw_cursor); +MC_SHOULD_BE_INTERNAL void* mc_find_frame_base( + dw_frame_t frame, mc_object_info_t object_info, unw_cursor_t* unw_cursor); SG_END_DECL() +namespace simgrid { +namespace mc { + +inline +int execute(DwarfExpression const& expression, mc_expression_state_t state) +{ + return mc_dwarf_execute_expression( + expression.size(), expression.data(), state); +} + +} +} + #endif