aboutsummaryrefslogtreecommitdiffstats
path: root/testing/flightgear/musl-fixes.patch
blob: 00ef78d3b78fd700e44b3aa3a9b03a034edbb0ff (plain)
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