From owner-svn-ports-all@freebsd.org Mon Jan 30 21:06:03 2017 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1DCF5CC8C90; Mon, 30 Jan 2017 21:06:03 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D9ADC1E59; Mon, 30 Jan 2017 21:06:02 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0UL62K3066828; Mon, 30 Jan 2017 21:06:02 GMT (envelope-from jbeich@FreeBSD.org) Received: (from jbeich@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0UL61Pa066823; Mon, 30 Jan 2017 21:06:01 GMT (envelope-from jbeich@FreeBSD.org) Message-Id: <201701302106.v0UL61Pa066823@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jbeich set sender to jbeich@FreeBSD.org using -f From: Jan Beich Date: Mon, 30 Jan 2017 21:06:01 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org Subject: svn commit: r432867 - in branches/2017Q1: mail/thunderbird/files www/firefox-esr/files www/firefox/files www/libxul/files www/seamonkey/files X-SVN-Group: ports-branches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 21:06:03 -0000 Author: jbeich Date: Mon Jan 30 21:06:01 2017 New Revision: 432867 URL: https://svnweb.freebsd.org/changeset/ports/432867 Log: MFH: r432865 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 Approved by: ports-secteam blanket Added: branches/2017Q1/mail/thunderbird/files/patch-bug1329520 - copied unchanged from r432865, head/mail/thunderbird/files/patch-bug1329520 branches/2017Q1/www/firefox-esr/files/patch-bug1329520 - copied unchanged from r432865, head/www/firefox-esr/files/patch-bug1329520 branches/2017Q1/www/firefox/files/patch-bug1329520 - copied unchanged from r432865, head/www/firefox/files/patch-bug1329520 branches/2017Q1/www/libxul/files/patch-bug1329520 - copied unchanged from r432865, head/www/libxul/files/patch-bug1329520 branches/2017Q1/www/seamonkey/files/patch-bug1329520 - copied unchanged from r432865, head/www/seamonkey/files/patch-bug1329520 Modified: Directory Properties: branches/2017Q1/ (props changed) Copied: branches/2017Q1/mail/thunderbird/files/patch-bug1329520 (from r432865, head/mail/thunderbird/files/patch-bug1329520) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2017Q1/mail/thunderbird/files/patch-bug1329520 Mon Jan 30 21:06:01 2017 (r432867, copy of r432865, head/mail/thunderbird/files/patch-bug1329520) @@ -0,0 +1,146 @@ +commit 8b0557b033b9 +Author: Dimitry Andric +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 Copied: branches/2017Q1/www/firefox-esr/files/patch-bug1329520 (from r432865, head/www/firefox-esr/files/patch-bug1329520) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2017Q1/www/firefox-esr/files/patch-bug1329520 Mon Jan 30 21:06:01 2017 (r432867, copy of r432865, head/www/firefox-esr/files/patch-bug1329520) @@ -0,0 +1,146 @@ +commit 8b0557b033b9 +Author: Dimitry Andric +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,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 Copied: branches/2017Q1/www/firefox/files/patch-bug1329520 (from r432865, head/www/firefox/files/patch-bug1329520) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2017Q1/www/firefox/files/patch-bug1329520 Mon Jan 30 21:06:01 2017 (r432867, copy of r432865, head/www/firefox/files/patch-bug1329520) @@ -0,0 +1,154 @@ +commit 8b0557b033b9 +Author: Dimitry Andric +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 +-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 Copied: branches/2017Q1/www/libxul/files/patch-bug1329520 (from r432865, head/www/libxul/files/patch-bug1329520) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2017Q1/www/libxul/files/patch-bug1329520 Mon Jan 30 21:06:01 2017 (r432867, copy of r432865, head/www/libxul/files/patch-bug1329520) @@ -0,0 +1,146 @@ +commit 8b0557b033b9 +Author: Dimitry Andric +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,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 Copied: branches/2017Q1/www/seamonkey/files/patch-bug1329520 (from r432865, head/www/seamonkey/files/patch-bug1329520) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2017Q1/www/seamonkey/files/patch-bug1329520 Mon Jan 30 21:06:01 2017 (r432867, copy of r432865, head/www/seamonkey/files/patch-bug1329520) @@ -0,0 +1,154 @@ +commit 8b0557b033b9 +Author: Dimitry Andric +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,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 +-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