Message ID | SA1PR11MB71305D480B48400426C253D9B2CA2@SA1PR11MB7130.namprd11.prod.outlook.com |
---|---|
State | New |
Headers | show |
Series | libstdc++: Fix --disable-libstdcxx-verbose abi break [PR115585] | expand |
Please read https://gcc.gnu.org/contribute.html#patches and ensure you've included everything, for example ... On 22/06/24 17:11 -0400, Shengdun Wang wrote: >__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: This is missing a description of the change. The PR number should be in the summary line, and the ChangeLog entry. Patches for libstdc++ should be CC'd to the libstdc++ list: https://gcc.gnu.org/lists.html No DCO sign-off: https://gcc.gnu.org/contribute.html#legal >--- > 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..930cabd5ee6 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* file, >+ [[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
diff --git a/libstdc++-v3/src/c++11/assert_fail.cc b/libstdc++-v3/src/c++11/assert_fail.cc index 6d99c7958f3..930cabd5ee6 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* file, + [[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