From 8065b83e3317c2162066e7d541682a6df037bae4 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Wed, 17 Oct 2012 10:37:06 +0200 Subject: [PATCH 1/1] Use function-like macros instead of inline functions for MC_is_active(). When using functions, Gcc apparently does not remove dead branches when building without optimizations, and then complains at link time with: Linking C executable ../../bin/gras_stub_generator ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_ignore' ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_do_the_modelcheck_for_real' ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_process_clock_get' ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_process_clock_add' ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_memory_init' ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_new_stack_area' collect2: error: ld returned 1 exit status This is if course when building with -Denable_model-checking=OFF. --- include/simgrid/modelchecker.h | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/include/simgrid/modelchecker.h b/include/simgrid/modelchecker.h index 65d437a45c..52b2ed7f2d 100644 --- a/include/simgrid/modelchecker.h +++ b/include/simgrid/modelchecker.h @@ -16,9 +16,7 @@ extern int _surf_do_model_check; /* please don't use directly: we inline MC_is_active, but that's what you should use */ -static int MC_is_active(void) { - return _surf_do_model_check; -} +#define MC_is_active() _surf_do_model_check XBT_PUBLIC(void) MC_assert(int); XBT_PUBLIC(int) MC_random(int min, int max); @@ -27,10 +25,7 @@ XBT_PUBLIC(void) MC_automaton_new_propositional_symbol(const char* id, void* fct #else #define MC_assert(a) xbt_assert(a) - -static int MC_is_active(void) { - return 0; -} +#define MC_is_active() 0 #endif -- 2.20.1