https://gcc.gnu.org/g:9eed92a0b47ebc25932ced9b5db86b66b59f7857
commit 9eed92a0b47ebc25932ced9b5db86b66b59f7857 Author: Thomas Schwinge <tschwi...@baylibre.com> Date: Tue Mar 18 10:10:30 2025 +0100 GCN, nvptx: Define '_Unwind_DeleteException' This resolves GCN: ld: error: undefined symbol: _Unwind_DeleteException >>> referenced by eh_catch.cc:109 ([...]/source-gcc/libstdc++-v3/libsupc++/eh_catch.cc:109) >>> eh_catch.o:(__cxa_end_catch) in archive [...]/build-gcc/amdgcn-amdhsa/libstdc++-v3/src/.libs/libstdc++.a [...] collect2: error: ld returned 1 exit status ..., and nvptx: unresolved symbol _Unwind_DeleteException collect2: error: ld returned 1 exit status For both GCN, nvptx, this each progresses ~100 'check-gcc-c++', and ~500 'check-target-libstdc++-v3' test cases: [-FAIL:-]{+PASS:+} [...] (test for excess errors) ..., with (if applicable, for most of them): [-UNRESOLVED:-]{+PASS:+} [...] [-compilation failed to produce executable-]{+execution test+} ..., or just a few 'FAIL: [...] execution test' where these test cases now FAIL for unrelated reasons, or, if applicable, FAIL due to run-time 'GCC/nvptx: sorry, unimplemented: dynamic stack allocation not supported'. libgcc/ * config/gcn/unwind-gcn.c (_Unwind_DeleteException): New. * config/nvptx/unwind-nvptx.c (_Unwind_DeleteException): Likewise. (cherry picked from commit 815abd68353751d53ed9299e218f8ca1cc108d5f) Diff: --- libgcc/ChangeLog.omp | 6 ++++++ libgcc/config/gcn/unwind-gcn.c | 7 +++++++ libgcc/config/nvptx/unwind-nvptx.c | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/libgcc/ChangeLog.omp b/libgcc/ChangeLog.omp index a03e92b34aed..2683de6b8249 100644 --- a/libgcc/ChangeLog.omp +++ b/libgcc/ChangeLog.omp @@ -1,5 +1,11 @@ 2025-04-17 Thomas Schwinge <tschwi...@baylibre.com> + Backported from trunk: + 2025-04-08 Thomas Schwinge <tschwi...@baylibre.com> + + * config/gcn/unwind-gcn.c (_Unwind_DeleteException): New. + * config/nvptx/unwind-nvptx.c (_Unwind_DeleteException): Likewise. + Backported from trunk: 2025-04-07 Thomas Schwinge <tschwi...@baylibre.com> diff --git a/libgcc/config/gcn/unwind-gcn.c b/libgcc/config/gcn/unwind-gcn.c index d08ba266be10..2ee389b19533 100644 --- a/libgcc/config/gcn/unwind-gcn.c +++ b/libgcc/config/gcn/unwind-gcn.c @@ -24,6 +24,13 @@ #include "unwind.h" +void +_Unwind_DeleteException (struct _Unwind_Exception *exc) +{ + if (exc->exception_cleanup) + (*exc->exception_cleanup) (_URC_FOREIGN_EXCEPTION_CAUGHT, exc); +} + _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn trace, void * trace_argument) { diff --git a/libgcc/config/nvptx/unwind-nvptx.c b/libgcc/config/nvptx/unwind-nvptx.c index d08ba266be10..2ee389b19533 100644 --- a/libgcc/config/nvptx/unwind-nvptx.c +++ b/libgcc/config/nvptx/unwind-nvptx.c @@ -24,6 +24,13 @@ #include "unwind.h" +void +_Unwind_DeleteException (struct _Unwind_Exception *exc) +{ + if (exc->exception_cleanup) + (*exc->exception_cleanup) (_URC_FOREIGN_EXCEPTION_CAUGHT, exc); +} + _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn trace, void * trace_argument) {