[PATCH] nvptx: In offloading execution, map '_exit' to 'abort' [GCC PR85463]

Thomas Schwinge <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
This is still not properly resolving <https://gcc.gnu.org/PR85463>
'[nvptx] "exit" in offloaded region doesn't terminate process', but is
one step into that direction, and allows for simplifying some GCC code.
---
 newlib/libc/machine/nvptx/_exit.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/newlib/libc/machine/nvptx/_exit.c b/newlib/libc/machine/nvptx/_exit.c
index ae434c930..f2253df66 100644
--- a/newlib/libc/machine/nvptx/_exit.c
+++ b/newlib/libc/machine/nvptx/_exit.c
@@ -14,6 +14,7 @@
  */

 #include <unistd.h>
+#include <stdlib.h>

 /* Sadly, PTX doesn't support weak declarations, only weak
    definitions.  Weakly define it here in case we're not using crt0
@@ -26,7 +27,15 @@ void __attribute__((noreturn))
 _exit (int status)
 {
   if (__exitval_ptr)
-    *__exitval_ptr = status;
-  for (;;)
-    asm ("exit;" ::: "memory");
+    {
+      *__exitval_ptr = status;
+      for (;;)
+       asm ("exit;" ::: "memory");
+    }
+  else /* offloading */
+    {
+      /* Map to 'abort'; see <https://gcc.gnu.org/PR85463>
+        '[nvptx] "exit" in offloaded region doesn't terminate process'.  */
+      abort ();
+    }
 }
--
2.25.1

-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.