X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0ec122a780b6dd27347cca4d240de563e607f349..7d9bf5f4e3d00bbeea1aeef15d46a337c671805b:/src/mc/mc_dwarf.cpp diff --git a/src/mc/mc_dwarf.cpp b/src/mc/mc_dwarf.cpp index a8f58bbee5..41161a49c0 100644 --- a/src/mc/mc_dwarf.cpp +++ b/src/mc/mc_dwarf.cpp @@ -11,6 +11,7 @@ #include #include +#include #include #define DW_LANG_Objc DW_LANG_ObjC /* fix spelling error in older dwarf.h */ #include @@ -24,7 +25,6 @@ #include "src/mc/mc_private.h" #include "src/mc/mc_dwarf.hpp" -#include "src/mc/mc_object_info.h" #include "src/mc/Process.hpp" #include "src/mc/ObjectInformation.hpp" #include "src/mc/Variable.hpp" @@ -679,7 +679,7 @@ static simgrid::mc::Type MC_dwarf_die_to_type( break; } - return std::move(type); + return type; } static void MC_dwarf_handle_type_die(simgrid::mc::ObjectInformation* info, Dwarf_Die * die, @@ -714,7 +714,7 @@ static std::unique_ptr MC_die_to_variable( std::unique_ptr variable = std::unique_ptr(new simgrid::mc::Variable()); - variable->dwarf_offset = dwarf_dieoffset(die); + variable->id = dwarf_dieoffset(die); variable->global = frame == nullptr; // Can be override base on DW_AT_location variable->object_info = info; @@ -740,12 +740,12 @@ static std::unique_ptr MC_die_to_variable( xbt_die( "Could not read location expression in DW_AT_location " "of variable <%" PRIx64 ">%s", - (uint64_t) variable->dwarf_offset, + (uint64_t) variable->id, variable->name.c_str()); } if (len == 1 && expr[0].atom == DW_OP_addr) { - variable->global = 1; + variable->global = true; uintptr_t offset = (uintptr_t) expr[0].number; uintptr_t base = (uintptr_t) info->base_address(); variable->address = (void *) (base + offset); @@ -767,7 +767,7 @@ static std::unique_ptr MC_die_to_variable( xbt_die("Unexpected form 0x%x (%i), class 0x%x (%i) list for location " "in <%" PRIx64 ">%s", form, form, (int) form_class, (int) form_class, - (uint64_t) variable->dwarf_offset, + (uint64_t) variable->id, variable->name.c_str()); } @@ -804,7 +804,7 @@ static std::unique_ptr MC_die_to_variable( variable->name = "@anonymous#" + std::to_string(mc_anonymous_variable_index++); - return std::move(variable); + return variable; } static void MC_dwarf_handle_variable_die(simgrid::mc::ObjectInformation* info, Dwarf_Die * die, @@ -1065,7 +1065,9 @@ static char hexdigits[16] = { static inline std::array to_hex(std::uint8_t byte) { - return { hexdigits[byte >> 4], hexdigits[byte & 0xF] }; + // Horrid double braces! + // Apparently, this is needed in C++11 (not in C++14). + return { { hexdigits[byte >> 4], hexdigits[byte & 0xF] } }; } /** Binary data to hexadecimal */ @@ -1079,7 +1081,7 @@ std::string to_hex(const char* data, std::size_t count) for (int j = 0; j < 2; ++j) res[2 * i + j] = hex_byte[j]; } - return std::move(res); + return res; } /** Binary data to hexadecimal */ @@ -1090,6 +1092,7 @@ std::string to_hex(std::vector const& data) } /** Base directories for external debug files */ +static const char* debug_paths[] = { "/usr/lib/debug/", "/usr/local/lib/debug/", @@ -1110,7 +1113,7 @@ std::string find_by_build_id(std::vector id) + to_hex(id.data() + 1, id.size() - 1) + ".debug"; XBT_DEBUG("Checking debug file: %s", filename.c_str()); if (access(filename.c_str(), F_OK) == 0) - return std::move(filename); + return filename; } return std::string(); } @@ -1304,8 +1307,11 @@ static void MC_post_process_types(simgrid::mc::ObjectInformation* info) } } +namespace simgrid { +namespace mc { + /** \brief Finds informations about a given shared object/executable */ -std::shared_ptr MC_find_object_info( +std::shared_ptr createObjectInformation( std::vector const& maps, const char *name) { std::shared_ptr result = @@ -1318,12 +1324,12 @@ std::shared_ptr MC_find_object_info( for (auto& entry : result.get()->subprograms) mc_post_process_scope(result.get(), &entry.second); MC_make_functions_index(result.get()); - return std::move(result); + return result; } /*************************************************************************/ -void MC_post_process_object_info(simgrid::mc::Process* process, simgrid::mc::ObjectInformation* info) +void postProcessObjectInformation(simgrid::mc::Process* process, simgrid::mc::ObjectInformation* info) { for (auto& i : info->types) { @@ -1352,6 +1358,9 @@ void MC_post_process_object_info(simgrid::mc::Process* process, simgrid::mc::Obj } } +} +} + namespace simgrid { namespace dwarf {