#include "mc_object_info.h"
#include "mc_private.h"
+using simgrid::mc::remote;
+
extern "C" {
static int mc_dwarf_push_value(mc_expression_state_t state, Dwarf_Off value)
if (state->stack_size == MC_EXPRESSION_STACK_SIZE)
return MC_EXPRESSION_E_STACK_OVERFLOW;
Dwarf_Off addr = (Dwarf_Off) (uintptr_t)
- MC_object_base_address(state->object_info) + op->number;
+ state->object_info->base_address() + op->number;
error = mc_dwarf_push_value(state, addr);
break;
}
uintptr_t address = (uintptr_t) state->stack[state->stack_size - 1];
if (!state->address_space)
xbt_die("Missing address space");
- MC_address_space_read(
- state->address_space, MC_ADDRESS_SPACE_READ_FLAGS_NONE,
- &state->stack[state->stack_size - 1], (const void*) address,
- sizeof(uintptr_t), state->process_index);
+ state->address_space->read_bytes(
+ &state->stack[state->stack_size - 1], sizeof(uintptr_t),
+ remote(address), state->process_index);
}
break;
* \param frame
* \param unw_cursor
*/
-void *mc_find_frame_base(dw_frame_t frame, mc_object_info_t object_info,
+void *mc_find_frame_base(mc_frame_t frame, mc_object_info_t object_info,
unw_cursor_t * unw_cursor)
{
s_mc_location_t location;
expression->ops = NULL;
mc_dwarf_expression_init(expression, len, ops);
- void *base =
- info->
- flags & MC_OBJECT_INFO_EXECUTABLE ? 0 : MC_object_base_address(info);
+ void *base = info->base_address();
// If start == 0, this is not a location list:
expression->lowpc = start == 0 ? NULL : (char *) base + start;
expression->highpc = start == 0 ? NULL : (char *) base + end;