From 1e6c445320a42acd0169e8546411c4b58b212b8e Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@musicpd.org>
Date: Mon, 29 Oct 2018 11:00:20 +0100
Subject: [PATCH] configure.ac: add `-funwind-tables` to work around clang bug

Replaces the workaround from commit
751fff07fb28720156d0d1dc833a2b6534959a0d which fixed only one of many
crash locations.

See:

 https://github.com/MusicPlayerDaemon/MPD/issues/373
 https://github.com/android-ndk/ndk/issues/831
 https://bugs.llvm.org/show_bug.cgi?id=32611
---
 configure.ac        | 5 +++++
 src/input/Error.hxx | 8 --------
 2 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/configure.ac b/configure.ac
index 2c75c3239..6ea941d7e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1354,6 +1354,11 @@ AX_APPEND_COMPILE_FLAGS([-fno-threadsafe-statics])
 AX_APPEND_COMPILE_FLAGS([-fmerge-all-constants])
 AX_APPEND_COMPILE_FLAGS([-ffast-math])
 AX_APPEND_COMPILE_FLAGS([-ftree-vectorize])
+
+dnl Workaround for clang bug
+dnl https://bugs.llvm.org/show_bug.cgi?id=32611
+AX_APPEND_COMPILE_FLAGS([-funwind-tables])
+
 AC_LANG_POP
 
 dnl ---------------------------------- debug ----------------------------------
diff --git a/src/input/Error.hxx b/src/input/Error.hxx
index 0811abc68..b52b9d06b 100644
--- a/src/input/Error.hxx
+++ b/src/input/Error.hxx
@@ -30,15 +30,7 @@
  * exist?  This function attempts to recognize exceptions thrown by
  * various input plugins.
  */
-#ifndef __clang__
-/* the "pure" attribute must be disabled because it triggers a clang
-   bug, wrongfully leading to std::terminate() even though the
-   function catches all exceptions thrown by std::rethrow_exception();
-   this can be reproduced with clang 7 from Android NDK r18b and on
-   clang 6 on FreeBSD
-   (https://github.com/MusicPlayerDaemon/MPD/issues/373) */
 gcc_pure
-#endif
 bool
 IsFileNotFound(std::exception_ptr e);