12e947
From efd5bc0715e5477318be95a76811cda0a89e8289 Mon Sep 17 00:00:00 2001
12e947
From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= <emilio@crisal.io>
12e947
Date: Fri, 4 Mar 2022 12:00:26 +0100
12e947
Subject: [PATCH] GLIBCXX fix for GCC 12?
12e947
12e947
---
12e947
 build/unix/stdc++compat/stdc++compat.cpp | 14 ++++++++++++++
12e947
 1 file changed, 14 insertions(+)
12e947
12e947
diff --git a/build/unix/stdc++compat/stdc++compat.cpp b/build/unix/stdc++compat/stdc++compat.cpp
12e947
index 0180f6bcfa998..8d7a542ff11f0 100644
12e947
--- a/build/unix/stdc++compat/stdc++compat.cpp
12e947
+++ b/build/unix/stdc++compat/stdc++compat.cpp
12e947
@@ -24,6 +24,7 @@
12e947
    GLIBCXX_3.4.27 is from gcc 10
12e947
    GLIBCXX_3.4.28 is from gcc 10
12e947
    GLIBCXX_3.4.29 is from gcc 11
12e947
+   GLIBCXX_3.4.30 is from gcc 12
12e947
 
12e947
 This file adds the necessary compatibility tricks to avoid symbols with
12e947
 version GLIBCXX_3.4.20 and bigger, keeping binary compatibility with
12e947
@@ -69,6 +70,19 @@ void __attribute__((weak)) __throw_bad_array_new_length() { MOZ_CRASH(); }
12e947
 }  // namespace std
12e947
 #endif
12e947
 
12e947
+#if _GLIBCXX_RELEASE >= 12
12e947
+namespace std {
12e947
+
12e947
+/* This avoids the GLIBCXX_3.4.30 symbol version. */
12e947
+void __attribute__((weak))
12e947
+__glibcxx_assert_fail(const char* __file, int __line, const char* __function,
12e947
+                      const char* __condition) {
12e947
+  MOZ_CRASH();
12e947
+}
12e947
+
12e947
+}  // namespace std
12e947
+#endif
12e947
+
12e947
 /* While we generally don't build with exceptions, we have some host tools
12e947
  * that do use them. libstdc++ from GCC 5.0 added exception constructors with
12e947
  * char const* argument. Older versions only have a constructor with
12e947
-- 
12e947
2.35.1
12e947