Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Stupid microsoft compiler not understanding the basic bases of C99
[simgrid.git] / src / xbt / ex.c
index 091a4cd..c93ea85 100644 (file)
@@ -18,6 +18,7 @@
 #include "xbt/ex.h"
 #include "xbt/str.h"
 #include "xbt/module.h" /* xbt_binary_name */
+#include "xbt_modinter.h" /* backtrace initialization headers */
 #include "xbt/synchro.h" /* xbt_thread_self */
 
 #include "gras/Virtu/virtu_interface.h" /* gras_os_myname */
@@ -28,7 +29,7 @@
 # define HAVE_BACKTRACE 1 /* Hello linux box */
 #endif
 
-#if defined(WIN32) && defined(_M_IX86)
+#if defined(WIN32) && defined(_M_IX86) && !defined(__GNUC__)
 # define HAVE_BACKTRACE 1 /* Hello x86 windows box */
 #endif 
    
@@ -55,21 +56,15 @@ ex_ctx_t *__xbt_ex_ctx_default(void) {
 /* Change raw libc symbols to file names and line numbers */
 void xbt_ex_setup_backtrace(xbt_ex_t *e);
 
-void xbt_backtrace_current(xbt_ex_t *e) {
-#ifdef HAVE_BACKTRACE
-  e->used     = backtrace((void**)e->bt,XBT_BACKTRACE_SIZE);
-  e->bt_strings = NULL;
-  xbt_ex_setup_backtrace(e);
-#endif
-}
-
 void xbt_backtrace_display(xbt_ex_t *e) {
+  xbt_ex_setup_backtrace(e);
+   
 #ifdef HAVE_BACKTRACE
-  int i;
-
   if (e->used == 0) {
      fprintf(stderr,"(backtrace not set)\n");
   } else {     
+     int i;
+     
      fprintf(stderr,"Backtrace (displayed in thread %p):\n",
             (void*)xbt_thread_self());
      for (i=1; i<e->used; i++) /* no need to display "xbt_display_backtrace" */
@@ -95,11 +90,10 @@ void xbt_backtrace_display_current(void) {
 
 #if defined(HAVE_EXECINFO_H) && defined(HAVE_POPEN) && defined(ADDR2LINE)
 # include "backtrace_linux.c"
-#elif (defined(WIN32) && defined (_M_IX86))
+#elif (defined(WIN32) && defined (_M_IX86)) && !defined(__GNUC__)
 # include "backtrace_windows.c"
 #else
-void xbt_ex_setup_backtrace(xbt_ex_t *e)  {
-}
+# include "backtrace_dummy.c"
 #endif
 
 /** @brief shows an exception content and the associated stack if available */