1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
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
|