summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2019-05-03 20:15:30 +0200
committerMax Kellermann <max@musicpd.org>2019-05-03 20:15:50 +0200
commit36dec47bf70421733ac50c53f75a342752b777ff (patch)
treeee026b6a28d6a334d829f19811f0c41c54f61bfd
parent478cedcadf4b45c325d9ed54481a13f13023c0b5 (diff)
android/build.py: link ARMv7 binary with libunwind
Fixes nullptr dereference when an exception gets thrown because there is no ".eh_frame" section for unwinding. Closes https://github.com/MusicPlayerDaemon/MPD/issues/543
-rw-r--r--NEWS2
-rwxr-xr-xandroid/build.py6
2 files changed, 8 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index c8c510924..e3e2a882b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,6 @@
ver 0.21.9 (not yet released)
+* Android
+ - fix crash on ARMv7
ver 0.21.8 (2019/04/23)
* input
diff --git a/android/build.py b/android/build.py
index 842784d49..23ec9f256 100755
--- a/android/build.py
+++ b/android/build.py
@@ -138,6 +138,12 @@ class AndroidNdkToolchain:
libstdcxx_ldflags = libstdcxx_flags + ' -L' + libcxx_libs_path
libstdcxx_libs = '-lc++_static -lc++abi'
+ if self.is_armv7:
+ # On 32 bit ARM, clang generates no ".eh_frame" section;
+ # instead, the LLVM unwinder library is used for unwinding
+ # the stack after a C++ exception was thrown
+ libstdcxx_libs += ' -lunwind'
+
if use_cxx:
self.cxxflags += ' ' + libstdcxx_cxxflags
self.ldflags += ' ' + libstdcxx_ldflags