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);