-/* Copyright (c) 2004-2019. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2004-2020. The SimGrid Team. All rights reserved. */
/* 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. */
-#include <cstddef>
-#include <cstdint>
-#include <utility>
+#include "src/mc/inspect/LocationList.hpp"
+#include "src/mc/inspect/ObjectInformation.hpp"
+#include "src/mc/inspect/mc_dwarf.hpp"
#include "xbt/asserts.h"
#include "xbt/sysdep.h"
+#include <cstddef>
+#include <cstdint>
#include <libunwind.h>
-
-#include "src/mc/LocationList.hpp"
-#include "src/mc/ObjectInformation.hpp"
-#include "src/mc/mc_dwarf.hpp"
+#include <utility>
namespace simgrid {
namespace dwarf {
/** Resolve a location expression */
Location resolve(simgrid::dwarf::DwarfExpression const& expression, simgrid::mc::ObjectInformation* object_info,
- unw_cursor_t* c, void* frame_pointer_address, simgrid::mc::AddressSpace* address_space,
- int process_index)
+ unw_cursor_t* c, void* frame_pointer_address, const simgrid::mc::AddressSpace* address_space)
{
simgrid::dwarf::ExpressionContext context;
context.frame_base = frame_pointer_address;
context.cursor = c;
context.address_space = address_space;
context.object_info = object_info;
- context.process_index = process_index;
if (not expression.empty() && expression[0].atom >= DW_OP_reg0 && expression[0].atom <= DW_OP_reg31) {
int dwarf_register = expression[0].atom - DW_OP_reg0;
}
Location resolve(simgrid::dwarf::LocationList const& locations, simgrid::mc::ObjectInformation* object_info,
- unw_cursor_t* c, void* frame_pointer_address, simgrid::mc::AddressSpace* address_space,
- int process_index)
+ unw_cursor_t* c, void* frame_pointer_address, const simgrid::mc::AddressSpace* address_space)
{
unw_word_t ip = 0;
if (c && unw_get_reg(c, UNW_REG_IP, &ip))
simgrid::dwarf::DwarfExpression const* expression = find_expression(locations, ip);
if (not expression)
xbt_die("Could not resolve location");
- return simgrid::dwarf::resolve(*expression, object_info, c, frame_pointer_address, address_space, process_index);
+ return simgrid::dwarf::resolve(*expression, object_info, c, frame_pointer_address, address_space);
}
-LocationList location_list(simgrid::mc::ObjectInformation& info, Dwarf_Attribute& attr)
+LocationList location_list(const simgrid::mc::ObjectInformation& info, Dwarf_Attribute& attr)
{
LocationList locations;
std::ptrdiff_t offset = 0;
- while (1) {
+ while (true) {
Dwarf_Addr base;
Dwarf_Addr start;
Dwarf_Addr end;