https://gcc.gnu.org/g:d92b508dd19daffedfc0fb02e5bfa710f2c397b0

commit r14-10274-gd92b508dd19daffedfc0fb02e5bfa710f2c397b0
Author: Rainer Orth <r...@cebitec.uni-bielefeld.de>
Date:   Wed May 29 10:08:07 2024 +0200

    libstdc++: Build libbacktrace and 19_diagnostics/stacktrace with 
-funwind-tables [PR111641]
    
    Several of the 19_diagnostics/stacktrace tests FAIL on Solaris/SPARC (32
    and 64-bit), Solaris/x86 (32-bit only), and several other targets:
    
    FAIL: 19_diagnostics/stacktrace/current.cc  -std=gnu++23 execution test
    FAIL: 19_diagnostics/stacktrace/current.cc  -std=gnu++26 execution test
    FAIL: 19_diagnostics/stacktrace/entry.cc  -std=gnu++23 execution test
    FAIL: 19_diagnostics/stacktrace/entry.cc  -std=gnu++26 execution test
    FAIL: 19_diagnostics/stacktrace/output.cc  -std=gnu++23 execution test
    FAIL: 19_diagnostics/stacktrace/output.cc  -std=gnu++26 execution test
    FAIL: 19_diagnostics/stacktrace/stacktrace.cc  -std=gnu++23 execution test
    FAIL: 19_diagnostics/stacktrace/stacktrace.cc  -std=gnu++26 execution test
    
    As it turns out, both the copy of libbacktrace in libstdc++ and the
    testcases proper need to compiled with -funwind-tables, as is done for
    libbacktrace itself.
    
    This isn't an issue on Linux/x86_64 and Solaris/amd64 since 64-bit x86
    always defaults to -funwind-tables.  32-bit x86 does, too, when
    -fomit-frame-pointer is enabled as on Linux/i686, but unlike
    Solaris/i386.
    
    So this patch always enables the option both for the libbacktrace copy
    and the testcases.
    
    Tested on i386-pc-solaris2.11, sparc-sun-solaris2.11, and
    x86_64-pc-linux-gnu.
    
    2024-05-23  Rainer Orth  <r...@cebitec.uni-bielefeld.de>
    
            libstdc++-v3:
            PR libstdc++/111641
            * src/libbacktrace/Makefile.am (AM_CFLAGS): Add -funwind-tables.
            * src/libbacktrace/Makefile.in: Regenerate.
    
            * testsuite/19_diagnostics/stacktrace/current.cc (dg-options): Add
            -funwind-tables.
            * testsuite/19_diagnostics/stacktrace/entry.cc: Likewise.
            * testsuite/19_diagnostics/stacktrace/hash.cc: Likewise.
            * testsuite/19_diagnostics/stacktrace/output.cc: Likewise.
            * testsuite/19_diagnostics/stacktrace/stacktrace.cc: Likewise.
    
    (cherry picked from commit a99ebb88f8f25e76ebed5afc22e64fa77a2f0d3f)

Diff:
---
 libstdc++-v3/src/libbacktrace/Makefile.am                      | 2 +-
 libstdc++-v3/src/libbacktrace/Makefile.in                      | 2 +-
 libstdc++-v3/testsuite/19_diagnostics/stacktrace/current.cc    | 2 +-
 libstdc++-v3/testsuite/19_diagnostics/stacktrace/entry.cc      | 2 +-
 libstdc++-v3/testsuite/19_diagnostics/stacktrace/hash.cc       | 2 +-
 libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc     | 2 +-
 libstdc++-v3/testsuite/19_diagnostics/stacktrace/stacktrace.cc | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/src/libbacktrace/Makefile.am 
b/libstdc++-v3/src/libbacktrace/Makefile.am
index a2e78671259..82205db46de 100644
--- a/libstdc++-v3/src/libbacktrace/Makefile.am
+++ b/libstdc++-v3/src/libbacktrace/Makefile.am
@@ -51,7 +51,7 @@ C_WARN_FLAGS = $(WARN_FLAGS) -Wstrict-prototypes 
-Wmissing-prototypes -Wold-styl
 CXX_WARN_FLAGS = $(WARN_FLAGS) -Wno-unused-parameter
 AM_CFLAGS = \
        $(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \
-       $(C_WARN_FLAGS)
+       $(C_WARN_FLAGS) -funwind-tables
 AM_CFLAGS += $(EXTRA_CFLAGS)
 AM_CXXFLAGS = \
        $(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \
diff --git a/libstdc++-v3/src/libbacktrace/Makefile.in 
b/libstdc++-v3/src/libbacktrace/Makefile.in
index b5713b0c616..51c8092335a 100644
--- a/libstdc++-v3/src/libbacktrace/Makefile.in
+++ b/libstdc++-v3/src/libbacktrace/Makefile.in
@@ -473,7 +473,7 @@ libstdc___libbacktrace_la_CPPFLAGS = \
 C_WARN_FLAGS = $(WARN_FLAGS) -Wstrict-prototypes -Wmissing-prototypes 
-Wold-style-definition -Wno-unused-but-set-variable
 CXX_WARN_FLAGS = $(WARN_FLAGS) -Wno-unused-parameter
 AM_CFLAGS = $(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \
-       $(C_WARN_FLAGS) $(EXTRA_CFLAGS)
+       $(C_WARN_FLAGS) -funwind-tables $(EXTRA_CFLAGS)
 AM_CXXFLAGS = $(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \
        $(CXX_WARN_FLAGS) -fno-rtti -fno-exceptions $(EXTRA_CXXFLAGS)
 obj_prefix = std_stacktrace
diff --git a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/current.cc 
b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/current.cc
index b1af5f74fb2..cdebd5f1daa 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/current.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/current.cc
@@ -1,4 +1,4 @@
-// { dg-options "-lstdc++exp" }
+// { dg-options "-funwind-tables -lstdc++exp" }
 // { dg-do run { target c++23 } }
 // { dg-require-cpp-feature-test __cpp_lib_stacktrace }
 
diff --git a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/entry.cc 
b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/entry.cc
index bb348ebef8f..90671e68f8b 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/entry.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/entry.cc
@@ -1,4 +1,4 @@
-// { dg-options "-lstdc++exp" }
+// { dg-options "-funwind-tables -lstdc++exp" }
 // { dg-do run { target c++23 } }
 // { dg-require-cpp-feature-test __cpp_lib_stacktrace }
 
diff --git a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/hash.cc 
b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/hash.cc
index 2176596ae5c..3c296a6469f 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/hash.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/hash.cc
@@ -1,4 +1,4 @@
-// { dg-options "-lstdc++exp" }
+// { dg-options "-funwind-tables -lstdc++exp" }
 // { dg-do run { target c++23 } }
 // { dg-require-cpp-feature-test __cpp_lib_stacktrace }
 
diff --git a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc 
b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc
index e27aea1f508..ea9da7fa248 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc
@@ -1,4 +1,4 @@
-// { dg-options "-lstdc++exp" }
+// { dg-options "-funwind-tables -lstdc++exp" }
 // { dg-do run { target c++23 } }
 // { dg-require-cpp-feature-test __cpp_lib_stacktrace }
 // { dg-add-options no_pch }
diff --git a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/stacktrace.cc 
b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/stacktrace.cc
index a49cddfef26..6bb22eacd92 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/stacktrace.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/stacktrace.cc
@@ -1,4 +1,4 @@
-// { dg-options "-lstdc++exp" }
+// { dg-options "-funwind-tables -lstdc++exp" }
 // { dg-do run { target c++23 } }
 // { dg-require-cpp-feature-test __cpp_lib_stacktrace }

Reply via email to