diff --git a/3rdparty/hts_engine_API/lib/HTS_misc.c b/3rdparty/hts_engine_API/lib/HTS_misc.c index b0d112d..6de47ee 100644 --- a/3rdparty/hts_engine_API/lib/HTS_misc.c +++ b/3rdparty/hts_engine_API/lib/HTS_misc.c @@ -247,8 +247,10 @@ size_t HTS_ftell(HTS_File * fp) fgetpos((FILE *) fp->pointer, &pos); #if defined(_WIN32) || defined(__CYGWIN__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__ANDROID__) return (size_t) pos; -#else +#elif defined(__GLIBC__) return (size_t) pos.__pos; +#else + return (size_t) ftell(fp->pointer); #endif /* _WIN32 || __CYGWIN__ || __APPLE__ || __ANDROID__ */ } else if (fp->type == HTS_DATA) { HTS_Data *d = (HTS_Data *) fp->pointer; diff --git a/3rdparty/iaxclient/lib/libiax2/src/iax.c b/3rdparty/iaxclient/lib/libiax2/src/iax.c index 0bfd2e4..39eea99 100644 --- a/3rdparty/iaxclient/lib/libiax2/src/iax.c +++ b/3rdparty/iaxclient/lib/libiax2/src/iax.c @@ -75,7 +75,7 @@ // FlightGear: Modified to include FreeBSD #if !defined(MACOSX) && !defined(__OpenBSD__) && !defined(__FreeBSD__) #include -#if !defined(SOLARIS) +#if !defined(SOLARIS) && defined(__GLIBC__) #include #endif #endif diff --git a/src/FDM/JSBSim/JSBSim.cpp b/src/FDM/JSBSim/JSBSim.cpp index 87b5e6e..ea39ca6 100644 --- a/src/FDM/JSBSim/JSBSim.cpp +++ b/src/FDM/JSBSim/JSBSim.cpp @@ -287,7 +287,7 @@ int main(int argc, char* argv[]) _clearfp(); _controlfp(_controlfp(0, 0) & ~(_EM_INVALID | _EM_ZERODIVIDE | _EM_OVERFLOW), _MCW_EM); -#elif defined(__GNUC__) && !defined(sgi) && !defined(__APPLE__) +#elif defined(__GLIBC__) feenableexcept(FE_DIVBYZERO | FE_INVALID); #endif diff --git a/src/Main/bootstrap.cxx b/src/Main/bootstrap.cxx index 550d028..db369ea 100644 --- a/src/Main/bootstrap.cxx +++ b/src/Main/bootstrap.cxx @@ -93,12 +93,16 @@ static void handleFPE(int); static void initFPE (bool fpeAbort) { +#if defined(__GLIBC__) if (fpeAbort) { int except = fegetexcept(); feenableexcept(except | FE_DIVBYZERO | FE_INVALID); } else { signal(SIGFPE, handleFPE); } +#else + signal(SIGFPE, handleFPE); +#endif } static void handleFPE(int) @@ -137,7 +141,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, } #endif -#if defined(__GNUC__) +#if defined(__GLIBC__) #include #include void segfault_handler(int signo) { @@ -182,7 +186,12 @@ void segfault_handler(int signo) { free(fname); free(list); } - + exit(1); +} +#else +/* musl doesn't have execinfo */ +void segfault_handler(int signo) { + fprintf(stderr, "Error: caught signal %d:\n", signo); exit(1); } #endif