mirror of
https://github.com/beard7n/bsdports.git
synced 2026-04-10 18:41:17 +02:00
147 lines
3.7 KiB
Plaintext
147 lines
3.7 KiB
Plaintext
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
|