aboutsummaryrefslogtreecommitdiffstats
path: root/mail/thunderbird
diff options
context:
space:
mode:
authorjbeich <jbeich@FreeBSD.org>2017-01-31 05:03:46 +0800
committerjbeich <jbeich@FreeBSD.org>2017-01-31 05:03:46 +0800
commit24f93ce243b493f391238c7770fdac9c7d1635be (patch)
treebb9d949cd17a3f6576c9092377a66463e38d0575 /mail/thunderbird
parentb8e9f3037c57220f9748f35c3ed7f5ac5d38320d (diff)
downloadfreebsd-ports-gnome-24f93ce243b493f391238c7770fdac9c7d1635be.tar.gz
freebsd-ports-gnome-24f93ce243b493f391238c7770fdac9c7d1635be.tar.zst
freebsd-ports-gnome-24f93ce243b493f391238c7770fdac9c7d1635be.zip
gecko: unbreak with clang/libc++ 4.0
In file included from mozilla/ipc/contentproc/plugin-container.cpp:7: In file included from ../../dist/include/nsXPCOM.h:10: In file included from ../../dist/include/nscore.h:20: In file included from ../../dist/include/mozilla/mozalloc.h:16: In file included from objdir/dist/stl_wrappers/new:44: In file included from objdir/dist/system_wrappers/new:3: /usr/include/c++/v1/new:132:1: error: function declared '[[noreturn]]' after its first declaration _LIBCPP_NORETURN _LIBCPP_FUNC_VIS void __throw_bad_alloc(); // not in C++ spec ^ /usr/include/c++/v1/__config:273:30: note: expanded from macro '_LIBCPP_NORETURN' # define _LIBCPP_NORETURN [[noreturn]] ^ ../../dist/include/mozilla/throw_gcc.h:35:1: note: declaration missing '[[noreturn]]' attribute is here __throw_bad_alloc(void) ^ PR: 216186 Submitted by: dim Obtained from: upstream
Diffstat (limited to 'mail/thunderbird')
-rw-r--r--mail/thunderbird/files/patch-bug1329520146
1 files changed, 146 insertions, 0 deletions
diff --git a/mail/thunderbird/files/patch-bug1329520 b/mail/thunderbird/files/patch-bug1329520
new file mode 100644
index 000000000000..db539be29ef6
--- /dev/null
+++ b/mail/thunderbird/files/patch-bug1329520
@@ -0,0 +1,146 @@
+commit 8b0557b033b9
+Author: Dimitry Andric <dimitry>
+Date: Fri Jan 27 13:55:00 2017 +0100
+
+ Bug 1329520 - Fix "memory/mozalloc/throw_gcc.h:35:1: note: declaration missing '[[noreturn]]' (libc++ 4.0)" r=nfroyd
+---
+ memory/mozalloc/throw_gcc.h | 47 ++++++++++++++++++++++++++++++---------------
+ 1 file changed, 31 insertions(+), 16 deletions(-)
+
+diff --git memory/mozalloc/throw_gcc.h memory/mozalloc/throw_gcc.h
+index 18027e04a4a3..4264df63d493 100644
+--- mozilla/memory/mozalloc/throw_gcc.h
++++ mozilla/memory/mozalloc/throw_gcc.h
+@@ -19,97 +19,110 @@
+
+ #include "mozilla/mozalloc_abort.h"
+
++// libc++ 4.0.0 and higher use C++11 [[noreturn]] attributes for the functions
++// below, and since clang does not allow mixing __attribute__((noreturn)) and
++// [[noreturn]], we have to explicitly use the latter here. See bug 1329520.
++#if defined(__clang__)
++# if __has_feature(cxx_attributes) && \
++ defined(_LIBCPP_VERSION) && _LIBCPP_VERSION >= 4000
++# define MOZ_THROW_NORETURN [[noreturn]]
++# endif
++#endif
++#ifndef MOZ_THROW_NORETURN
++# define MOZ_THROW_NORETURN MOZ_NORETURN
++#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_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_bad_exception(void)
+ {
+ mozalloc_abort("fatal: STL threw bad_exception");
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_bad_alloc(void)
+ {
+ mozalloc_abort("fatal: STL threw bad_alloc");
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_bad_cast(void)
+ {
+ mozalloc_abort("fatal: STL threw bad_cast");
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_bad_typeid(void)
+ {
+ mozalloc_abort("fatal: STL threw bad_typeid");
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_logic_error(const char* msg)
+ {
+ mozalloc_abort(msg);
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_domain_error(const char* msg)
+ {
+ mozalloc_abort(msg);
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_invalid_argument(const char* msg)
+ {
+ mozalloc_abort(msg);
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_length_error(const char* msg)
+ {
+ mozalloc_abort(msg);
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_out_of_range(const char* msg)
+ {
+ mozalloc_abort(msg);
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_runtime_error(const char* msg)
+ {
+ mozalloc_abort(msg);
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_range_error(const char* msg)
+ {
+ mozalloc_abort(msg);
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_overflow_error(const char* msg)
+ {
+ mozalloc_abort(msg);
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_underflow_error(const char* msg)
+ {
+ mozalloc_abort(msg);
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_ios_failure(const char* msg)
+ {
+ mozalloc_abort(msg);
+ }
+
+-MOZ_NORETURN MOZ_ALWAYS_INLINE void
++MOZ_THROW_NORETURN MOZ_ALWAYS_INLINE void
+ __throw_system_error(int err)
+ {
+ char error[128];
+@@ -120,4 +133,6 @@ __throw_system_error(int err)
+
+ } // namespace std
+
++#undef MOZ_THROW_NORETURN
++
+ #endif // mozilla_throw_gcc_h