X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1d2b3b745feba3c5069fe4fdab54a1832fde11e6..bae076147bfc88ce8607f15761149f42d0443585:/src/mc/mcer_ignore.cpp diff --git a/src/mc/mcer_ignore.cpp b/src/mc/mcer_ignore.cpp index 4c752035be..43fcc42670 100644 --- a/src/mc/mcer_ignore.cpp +++ b/src/mc/mcer_ignore.cpp @@ -4,8 +4,10 @@ /* 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 "internal_config.h" -#include "mc_object_info.h" +#include "mc_dwarf.hpp" #include "mc/mc_private.h" #include "smpi/private.h" #include "mc/mc_snapshot.h" @@ -13,6 +15,10 @@ #include "mc/mc_protocol.h" #include "mc/mc_client.h" +#include "mc/Frame.hpp" +#include "mc/Variable.hpp" +#include "mc/ObjectInformation.hpp" + extern "C" { XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mcer_ignore, mc, @@ -20,20 +26,20 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mcer_ignore, mc, // ***** Ignore heap chunks -extern xbt_dynar_t mc_heap_comparison_ignore; +extern XBT_PRIVATE xbt_dynar_t mc_heap_comparison_ignore; -void heap_ignore_region_free(mc_heap_ignore_region_t r) +XBT_PRIVATE void heap_ignore_region_free(mc_heap_ignore_region_t r) { xbt_free(r); } -void heap_ignore_region_free_voidp(void *r) +XBT_PRIVATE void heap_ignore_region_free_voidp(void *r) { heap_ignore_region_free((mc_heap_ignore_region_t) * (void **) r); } -void MC_heap_region_ignore_insert(mc_heap_ignore_region_t region) +XBT_PRIVATE void MC_heap_region_ignore_insert(mc_heap_ignore_region_t region) { if (mc_heap_comparison_ignore == NULL) { mc_heap_comparison_ignore = @@ -72,7 +78,7 @@ void MC_heap_region_ignore_insert(mc_heap_ignore_region_t region) xbt_dynar_insert_at(mc_heap_comparison_ignore, cursor, ®ion); } -void MC_heap_region_ignore_remove(void *address, size_t size) +XBT_PRIVATE void MC_heap_region_ignore_remove(void *address, size_t size) { unsigned int cursor = 0; int start = 0; @@ -109,20 +115,20 @@ void MC_heap_region_ignore_remove(void *address, size_t size) // ***** Ignore global variables -void MCer_ignore_global_variable(const char *name) +XBT_PRIVATE void MCer_ignore_global_variable(const char *name) { - mc_process_t process = &mc_model_checker->process(); + simgrid::mc::Process* process = &mc_model_checker->process(); xbt_assert(!process->object_infos.empty(), "MC subsystem not initialized"); - for (std::shared_ptr const& info : process->object_infos) { + for (std::shared_ptr const& info : process->object_infos) { // Binary search: int start = 0; int end = info->global_variables.size() - 1; while (start <= end) { unsigned int cursor = (start + end) / 2; - mc_variable_t current_var = &info->global_variables[cursor]; - int cmp = strcmp(current_var->name.c_str(), name); + simgrid::mc::Variable* current_var = &info->global_variables[cursor]; + int cmp = current_var->name.compare(name); if (cmp == 0) { info->global_variables.erase( info->global_variables.begin() + cursor); @@ -141,25 +147,25 @@ void MCer_ignore_global_variable(const char *name) static void mc_ignore_local_variable_in_scope(const char *var_name, const char *subprogram_name, - mc_frame_t subprogram, - mc_frame_t scope); + simgrid::mc::Frame* subprogram, + simgrid::mc::Frame* scope); static void MC_ignore_local_variable_in_object(const char *var_name, const char *subprogram_name, - mc_object_info_t info); + simgrid::mc::ObjectInformation* info); void MC_ignore_local_variable(const char *var_name, const char *frame_name) { - mc_process_t process = &mc_model_checker->process(); + simgrid::mc::Process* process = &mc_model_checker->process(); if (strcmp(frame_name, "*") == 0) frame_name = NULL; - for (std::shared_ptr const& info : process->object_infos) + for (std::shared_ptr const& info : process->object_infos) MC_ignore_local_variable_in_object(var_name, frame_name, info.get()); } static void MC_ignore_local_variable_in_object(const char *var_name, const char *subprogram_name, - mc_object_info_t info) + simgrid::mc::ObjectInformation* info) { for (auto& entry : info->subprograms) mc_ignore_local_variable_in_scope( @@ -179,8 +185,8 @@ static void MC_ignore_local_variable_in_object(const char *var_name, */ static void mc_ignore_local_variable_in_scope(const char *var_name, const char *subprogram_name, - mc_frame_t subprogram, - mc_frame_t scope) + simgrid::mc::Frame* subprogram, + simgrid::mc::Frame* scope) { // Processing of direct variables: @@ -196,9 +202,9 @@ static void mc_ignore_local_variable_in_scope(const char *var_name, // Dichotomic search: while (start <= end) { int cursor = (start + end) / 2; - mc_variable_t current_var = &scope->variables[cursor]; + simgrid::mc::Variable* current_var = &scope->variables[cursor]; - int compare = strcmp(current_var->name.c_str(), var_name); + int compare = current_var->name.compare(var_name); if (compare == 0) { // Variable found, remove it: scope->variables.erase(scope->variables.begin() + cursor); @@ -218,7 +224,7 @@ static void mc_ignore_local_variable_in_scope(const char *var_name, for (simgrid::mc::Frame& nested_scope : scope->scopes) { // The new scope may be an inlined subroutine, in this case we want to use its // namespaced name in recursive calls: - mc_frame_t nested_subprogram = + simgrid::mc::Frame* nested_subprogram = nested_scope.tag == DW_TAG_inlined_subroutine ? &nested_scope : subprogram; @@ -227,9 +233,9 @@ static void mc_ignore_local_variable_in_scope(const char *var_name, } } -extern xbt_dynar_t stacks_areas; +extern XBT_PRIVATE xbt_dynar_t stacks_areas; -void MC_stack_area_add(stack_region_t stack_area) +XBT_PRIVATE void MC_stack_area_add(stack_region_t stack_area) { if (stacks_areas == NULL) stacks_areas = xbt_dynar_new(sizeof(stack_region_t), NULL);