diff options
author | Jan Beich <jbeich@FreeBSD.org> | 2017-01-31 05:03:46 +0800 |
---|---|---|
committer | Jan Beich <jbeich@FreeBSD.org> | 2017-01-31 05:03:46 +0800 |
commit | fd8f2d8717675137226fb3e02331a29968acc5ae (patch) | |
tree | bb9d949cd17a3f6576c9092377a66463e38d0575 /www/firefox | |
parent | 73a40b8cae8ff7aa2fa9540e8739c4882331e7d3 (diff) | |
download | freebsd-ports-gnome-fd8f2d8717675137226fb3e02331a29968acc5ae.tar.gz freebsd-ports-gnome-fd8f2d8717675137226fb3e02331a29968acc5ae.tar.zst freebsd-ports-gnome-fd8f2d8717675137226fb3e02331a29968acc5ae.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 'www/firefox')
-rw-r--r-- | www/firefox/files/patch-bug1329520 | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/www/firefox/files/patch-bug1329520 b/www/firefox/files/patch-bug1329520 new file mode 100644 index 000000000000..892a338dc8c3 --- /dev/null +++ b/www/firefox/files/patch-bug1329520 @@ -0,0 +1,154 @@ +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 +--- memory/mozalloc/throw_gcc.h ++++ memory/mozalloc/throw_gcc.h +@@ -19,104 +19,117 @@ + + #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_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_bad_exception(void) + { + mozalloc_abort("fatal: STL threw bad_exception"); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_bad_alloc(void) + { + mozalloc_abort("fatal: STL threw bad_alloc"); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_bad_cast(void) + { + mozalloc_abort("fatal: STL threw bad_cast"); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_bad_typeid(void) + { + mozalloc_abort("fatal: STL threw bad_typeid"); + } + + // used by <functional> +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT 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_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_logic_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_domain_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_invalid_argument(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_length_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_out_of_range(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_runtime_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_range_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_overflow_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_underflow_error(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_ios_failure(const char* msg) + { + mozalloc_abort(msg); + } + +-MOZ_EXPORT MOZ_NORETURN MOZ_ALWAYS_INLINE void ++MOZ_THROW_NORETURN MOZ_EXPORT MOZ_ALWAYS_INLINE void + __throw_system_error(int err) + { + char error[128]; +@@ -127,4 +140,6 @@ __throw_system_error(int err) + + } // namespace std + ++#undef MOZ_THROW_NORETURN ++ + #endif // mozilla_throw_gcc_h |