--- www/firefox/files/patch-memory_mozalloc_throw__gcc.h (nonexistent) +++ www/firefox/files/patch-memory_mozalloc_throw__gcc.h (working copy) @@ -0,0 +1,131 @@ +--- memory/mozalloc/throw_gcc.h.orig 2016-07-25 20:22:04 UTC ++++ memory/mozalloc/throw_gcc.h +@@ -19,104 +19,112 @@ + + #include "mozilla/mozalloc_abort.h" + ++#if defined(__clang__) && \ ++ defined(_LIBCPP_VERSION) && _LIBCPP_VERSION >= 4000 && \ ++ defined(__has_feature) && __has_feature(cxx_attributes) ++# define MOZ_NORETURN_CXX11 [[noreturn]] ++#else ++# define MOZ_NORETURN_CXX11 ++#endif ++ + namespace std { + + // NB: user code is not supposed to touch the std:: namespace. We're + // doing this after careful review because we want to define our own + // exception throwing semantics. Don't try this at home! + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_bad_exception(void) + { + mozalloc_abort("fatal: STL threw bad_exception"); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_bad_alloc(void) + { + mozalloc_abort("fatal: STL threw bad_alloc"); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_bad_cast(void) + { + mozalloc_abort("fatal: STL threw bad_cast"); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_bad_typeid(void) + { + mozalloc_abort("fatal: STL threw bad_typeid"); + } + + // used by +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_bad_function_call(void) + { + mozalloc_abort("fatal: STL threw bad_function_call"); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_logic_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_domain_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_invalid_argument(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_length_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_out_of_range(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_runtime_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_range_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_overflow_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_underflow_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_ios_failure(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_NORETURN_CXX11 MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void + __throw_system_error(int err) + { + char error[128];