Bug 1569728 - manually instantiate some basic_string members for libstdc++ compat; r=glandium
☠☠ backed out by 8867e44d4979 ☠ ☠
authorNathan Froyd <froydnj@mozilla.com>
Sun, 25 Aug 2019 19:27:47 +0000
changeset 551558 aaae16f5f29d922bec1671617139642a0c0fe1ef
parent 551557 42ebd8a50978189a7247dc029de7d66d97e7bec9
child 551559 2f873da4b36e4404b7396bf4a1403d316b8ae450
push id11865
push userbtara@mozilla.com
push dateMon, 02 Sep 2019 08:54:37 +0000
treeherdermozilla-beta@37f59c4671b3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium
bugs1569728
milestone70.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1569728 - manually instantiate some basic_string members for libstdc++ compat; r=glandium Differential Revision: https://phabricator.services.mozilla.com/D41370
build/unix/stdc++compat/stdc++compat.cpp
--- a/build/unix/stdc++compat/stdc++compat.cpp
+++ b/build/unix/stdc++compat/stdc++compat.cpp
@@ -11,16 +11,17 @@
 
 /* GLIBCXX_3.4.16 is from gcc 4.6.1 (172240)
    GLIBCXX_3.4.17 is from gcc 4.7.0 (174383)
    GLIBCXX_3.4.18 is from gcc 4.8.0 (190787)
    GLIBCXX_3.4.19 is from gcc 4.8.1 (199309)
    GLIBCXX_3.4.20 is from gcc 4.9.0 (199307)
    GLIBCXX_3.4.21 is from gcc 5.0 (210290)
    GLIBCXX_3.4.22 is from gcc 6.0 (222482)
+   GLIBCXX_3.4.23 is from gcc 7.0
 
 This file adds the necessary compatibility tricks to avoid symbols with
 version GLIBCXX_3.4.17 and bigger, keeping binary compatibility with
 libstdc++ 4.7.
 
 WARNING: all symbols from this file must be defined weak when they
 overlap with libstdc++.
 */
@@ -139,8 +140,16 @@ struct StateWrapper : public thread::_Im
 
 #if MOZ_LIBSTDCXX_VERSION >= GLIBCXX_VERSION(3, 4, 21)
 namespace std {
 /* Instantiate this template to avoid GLIBCXX_3.4.21 symbol versions
  * depending on optimization level */
 template basic_ios<char, char_traits<char> >::operator bool() const;
 }  // namespace std
 #endif
+
+#if MOZ_LIBSTDCXX_VERSION >= GLIBCXX_VERSION(3, 4, 23)
+namespace std {
+/* Instantiate this template to avoid GLIBCXX_3.4.23 symbol versions
+ * depending on optimization level */
+template basic_string<char, char_traits<char>, allocator<char>>::basic_string(const basic_string&, size_t, const allocator<char>&);
+} // namespace std
+#endif