From: Shengdun Wang <uwgghhb...@gmail.com> __glibcxx_assert_fail is not defined when we disable the libstdcxx-verbose. This causes ABI break when a binary is compiled with verbose enabled.
libstdc++-v3/ChangeLog: * src/c++11/assert_fail.cc: --- libstdc++-v3/src/c++11/assert_fail.cc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libstdc++-v3/src/c++11/assert_fail.cc b/libstdc++-v3/src/c++11/assert_fail.cc index 6d99c7958f3..8842bf85cee 100644 --- a/libstdc++-v3/src/c++11/assert_fail.cc +++ b/libstdc++-v3/src/c++11/assert_fail.cc @@ -22,23 +22,28 @@ // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see // <http://www.gnu.org/licenses/>. +#include <bits/c++config.h> +#ifdef _GLIBCXX_VERBOSE_ASSERT #include <cstdio> // for std::fprintf, stderr +#endif #include <cstdlib> // for std::abort -#ifdef _GLIBCXX_VERBOSE_ASSERT namespace std { [[__noreturn__]] void - __glibcxx_assert_fail(const char* file, int line, - const char* function, const char* condition) noexcept + __glibcxx_assert_fail( [[maybe_unused]] const char*, + [[maybe_unused]] int line, + [[maybe_unused]] const char* function, + [[maybe_unused]] const char* condition) noexcept { +#ifdef _GLIBCXX_VERBOSE_ASSERT if (file && function && condition) fprintf(stderr, "%s:%d: %s: Assertion '%s' failed.\n", file, line, function, condition); else if (function) fprintf(stderr, "%s: Undefined behavior detected.\n", function); +#endif abort(); } } -#endif -- 2.45.2