https://gcc.gnu.org/g:815abd68353751d53ed9299e218f8ca1cc108d5f

commit r15-9310-g815abd68353751d53ed9299e218f8ca1cc108d5f
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.

Diff:
---
 libgcc/config/gcn/unwind-gcn.c     | 7 +++++++
 libgcc/config/nvptx/unwind-nvptx.c | 7 +++++++
 2 files changed, 14 insertions(+)

diff --git a/libgcc/config/gcn/unwind-gcn.c b/libgcc/config/gcn/unwind-gcn.c
index 44657ae992bd..e014cc08243c 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 44657ae992bd..e014cc08243c 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)
 {

Reply via email to