Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Jan 2017 21:06:01 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
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
Message-ID:  <201701302106.v0UL61Pa066823@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 <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

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 <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,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 <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

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 <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,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 <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,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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201701302106.v0UL61Pa066823>