--- src/OSD/OSD_signal.cxx.orig
+++ src/OSD/OSD_signal.cxx
@@ -687,7 +687,7 @@
   // cout << "OSD::Handler: signal " << (int) theSignal << " occured inside a try block " <<  endl ;
   if ( ADR_ACT_SIGIO_HANDLER != NULL )
     (*ADR_ACT_SIGIO_HANDLER)() ;
-#ifdef __linux__
+#if defined(__linux__) && defined(__GLIBC__)
   if (fFltExceptions)
     feenableexcept (FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW);
     //feenableexcept (FE_INVALID | FE_DIVBYZERO);
@@ -805,7 +805,7 @@
   (void)theSignal; // silence GCC warnings
   (void)theContext;
 
-#ifdef __linux__
+#if defined(__linux__) && defined(__GLIBC__)
   if (fFltExceptions)
     feenableexcept (FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW);
     //feenableexcept (FE_INVALID | FE_DIVBYZERO);
@@ -891,14 +891,14 @@
       cerr << "ieee_handler does not work !!! KO " << endl;
 #endif
     }
-#elif defined (__linux__)
+#elif defined(__linux__) && defined(__GLIBC__)
     feenableexcept (FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW);
     fFltExceptions = Standard_True;
 #endif
   }
   else
   {
-#if defined (__linux__)
+#if defined(__linux__) && defined(__GLIBC__)
     fedisableexcept (FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW);
     fFltExceptions = Standard_False;
 #endif
