]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
GCN, nvptx: Define '_Unwind_RaiseException', '_Unwind_Resume_or_Rethrow'
authorThomas Schwinge <tschwinge@baylibre.com>
Tue, 18 Mar 2025 09:10:30 +0000 (10:10 +0100)
committerThomas Schwinge <tschwinge@baylibre.com>
Thu, 17 Apr 2025 07:36:53 +0000 (09:36 +0200)
This resolves GCN:

    ld: error: undefined symbol: _Unwind_RaiseException
    >>> referenced by eh_throw.cc:93 ([...]/source-gcc/libstdc++-v3/libsupc++/eh_throw.cc:93)
    >>>               eh_throw.o:(__cxa_throw) in archive /srv/data/tschwinge/amd-instinct2/gcc/build/submit-light-target_gcn/build-gcc/amdgcn-amdhsa/gfx908/libstdc++-v3/src/.libs/libstdc++.a
    [...]
    collect2: error: ld returned 1 exit status

..., and/or:

    ld: error: undefined symbol: _Unwind_Resume_or_Rethrow
    >>> referenced by eh_throw.cc:129 ([...]/source-gcc/libstdc++-v3/libsupc++/eh_throw.cc:129)
    >>>               eh_throw.o:(__cxa_rethrow) in archive /srv/data/tschwinge/amd-instinct2/gcc/build/submit-light-target_gcn/build-gcc/amdgcn-amdhsa/gfx908/libstdc++-v3/src/.libs/libstdc++.a
    [...]
    collect2: error: ld returned 1 exit status

..., and nvptx:

    unresolved symbol _Unwind_RaiseException
    collect2: error: ld returned 1 exit status

..., or:

    unresolved symbol _Unwind_Resume_or_Rethrow
    collect2: error: ld returned 1 exit status

For both GCN, nvptx, this each progresses ~25 'check-gcc-c++',
and ~10 '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 some 'FAIL: [...] execution test' where these test cases now FAIL when
attempting to use these interfaces, or, if applicable, FAIL due to run-time
'GCC/nvptx: sorry, unimplemented: dynamic stack allocation not supported'.

libgcc/
* config/gcn/unwind-gcn.c (_Unwind_RaiseException)
(_Unwind_Resume_or_Rethrow): New.
* config/nvptx/unwind-nvptx.c (_Unwind_RaiseException)
(_Unwind_Resume_or_Rethrow): Likewise.

(cherry picked from commit 54ab0f6785c006ddff056dab9c0240cddae82020)

libgcc/ChangeLog.omp
libgcc/config/gcn/unwind-gcn.c
libgcc/config/nvptx/unwind-nvptx.c

index 2683de6b824920c15a416f4f9f97e2a1e3f1e510..c4efc083b53dba5b049f498ec91ba711e655f629 100644 (file)
@@ -3,6 +3,14 @@
        Backported from trunk:
        2025-04-08  Thomas Schwinge  <tschwinge@baylibre.com>
 
+       * config/gcn/unwind-gcn.c (_Unwind_RaiseException)
+       (_Unwind_Resume_or_Rethrow): New.
+       * config/nvptx/unwind-nvptx.c (_Unwind_RaiseException)
+       (_Unwind_Resume_or_Rethrow): Likewise.
+
+       Backported from trunk:
+       2025-04-08  Thomas Schwinge  <tschwinge@baylibre.com>
+
        * config/gcn/unwind-gcn.c (_Unwind_DeleteException): New.
        * config/nvptx/unwind-nvptx.c (_Unwind_DeleteException): Likewise.
 
index 2ee389b195335a1af7eb25fecad4805f0adaf480..d229417866fa41ada2adf596fb59512a551a399c 100644 (file)
 
 #include "unwind.h"
 
+_Unwind_Reason_Code
+_Unwind_RaiseException(struct _Unwind_Exception *exc __attribute__ ((__unused__)))
+{
+  __builtin_abort ();
+  return 0;
+}
+
 void
 _Unwind_DeleteException (struct _Unwind_Exception *exc)
 {
@@ -31,6 +38,13 @@ _Unwind_DeleteException (struct _Unwind_Exception *exc)
     (*exc->exception_cleanup) (_URC_FOREIGN_EXCEPTION_CAUGHT, exc);
 }
 
+_Unwind_Reason_Code
+_Unwind_Resume_or_Rethrow (struct _Unwind_Exception *exc __attribute__ ((__unused__)))
+{
+  __builtin_abort ();
+  return 0;
+}
+
 _Unwind_Reason_Code
 _Unwind_Backtrace(_Unwind_Trace_Fn trace, void * trace_argument)
 {
index 2ee389b195335a1af7eb25fecad4805f0adaf480..d229417866fa41ada2adf596fb59512a551a399c 100644 (file)
 
 #include "unwind.h"
 
+_Unwind_Reason_Code
+_Unwind_RaiseException(struct _Unwind_Exception *exc __attribute__ ((__unused__)))
+{
+  __builtin_abort ();
+  return 0;
+}
+
 void
 _Unwind_DeleteException (struct _Unwind_Exception *exc)
 {
@@ -31,6 +38,13 @@ _Unwind_DeleteException (struct _Unwind_Exception *exc)
     (*exc->exception_cleanup) (_URC_FOREIGN_EXCEPTION_CAUGHT, exc);
 }
 
+_Unwind_Reason_Code
+_Unwind_Resume_or_Rethrow (struct _Unwind_Exception *exc __attribute__ ((__unused__)))
+{
+  __builtin_abort ();
+  return 0;
+}
+
 _Unwind_Reason_Code
 _Unwind_Backtrace(_Unwind_Trace_Fn trace, void * trace_argument)
 {