From 36dec47bf70421733ac50c53f75a342752b777ff Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 3 May 2019 20:15:30 +0200 Subject: [PATCH] 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 --- NEWS | 2 ++ android/build.py | 6 ++++++ 2 files changed, 8 insertions(+) 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