X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ea9cce21b6d3f37823143217f1ca183bb2f0c9ac..7f80c96356063a741966f244c8d00eaaf6f17fc0:/src/mc/mc_dwarf.cpp diff --git a/src/mc/mc_dwarf.cpp b/src/mc/mc_dwarf.cpp index 1fb7db17b8..5a994b0b90 100644 --- a/src/mc/mc_dwarf.cpp +++ b/src/mc/mc_dwarf.cpp @@ -4,11 +4,12 @@ /* 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 + #include #define DW_LANG_Objc DW_LANG_ObjC /* fix spelling error in older dwarf.h */ #include #include -#include #include #include @@ -119,6 +120,7 @@ const char *MC_dwarf_attrname(int attr) * \param tag tag code (see the DWARF specification) * \return name of the tag */ +XBT_INTERNAL const char *MC_dwarf_tagname(int tag) { switch (tag) { @@ -677,6 +679,12 @@ static dw_type_t MC_dwarf_die_to_type(mc_object_info_t info, Dwarf_Die * die, type->dw_type_id = MC_dwarf_at_type(die); + // Some compilers do not emit DW_AT_byte_size for pointer_type, + // so we fill this. We currently assume that the model-checked process is in + // the same architecture.. + if (type->type == DW_TAG_pointer_type) + type->byte_size = sizeof(void*); + // Computation of the byte_size; if (dwarf_hasattr_integrate(die, DW_AT_byte_size)) type->byte_size = MC_dwarf_attr_integrate_uint(die, DW_AT_byte_size, 0); @@ -1107,12 +1115,12 @@ mc_object_info_t MC_new_object_info(void) void MC_free_object_info(mc_object_info_t * info) { - xbt_free(&(*info)->file_name); + xbt_free((*info)->file_name); xbt_dict_free(&(*info)->subprograms); xbt_dynar_free(&(*info)->global_variables); xbt_dict_free(&(*info)->types); xbt_dict_free(&(*info)->full_types_by_name); - xbt_free(info); + xbt_free(*info); xbt_dynar_free(&(*info)->functions_index); *info = NULL; } @@ -1270,8 +1278,8 @@ static void MC_post_process_types(mc_object_info_t info) } /** \brief Finds informations about a given shared object/executable */ -mc_object_info_t MC_find_object_info(memory_map_t maps, const char *name, - int executable) +mc_object_info_t MC_find_object_info( + std::vector const& maps, const char *name, int executable) { mc_object_info_t result = MC_new_object_info(); if (executable)