1
0
Fork 0
mirror of https://gitlab.alpinelinux.org/alpine/aports.git synced 2025-07-26 04:35:39 +03:00
aports/testing/flightgear/musl-fixes.patch

86 lines
2.7 KiB
Diff

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 <malloc.h>
-#if !defined(SOLARIS)
+#if !defined(SOLARIS) && defined(__GLIBC__)
#include <error.h>
#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 <execinfo.h>
#include <cxxabi.h>
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