/* Copyright (C) 2015-2022 Free Software Foundation, Inc. Contributed by Alexander Monakov This file is part of the GNU Offloading and Multi Processing Library (libgomp). Libgomp is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* This file contains routines used to signal errors. On NVPTX, we have one default output stream (stdout), so redirect everything there. */ #include "libgomp.h" #include #include #include /* No 'FILE *stream's, just basic 'vprintf' etc. */ #undef vfprintf #define vfprintf(stream, fmt, list) vprintf (fmt, list) #undef fputs #define fputs(s, stream) printf ("%s", s) #undef fputc #define fputc(c, stream) printf ("%c", c) #undef fwrite #if 0 # define fwrite(ptr, size, nmemb, stream) \ printf ("%.*s", (int) (size * nmemb), (int) (size * nmemb), ptr) /* ... prints literal '%.*s'. */ #else # define fwrite(ptr, size, nmemb, stream) \ do { \ /* Yuck! */ \ for (size_t i = 0; i < size * nmemb; ++i) \ printf ("%c", ptr[i]); \ } while (0) #endif /* The 'exit (EXIT_FAILURE);' of an Fortran (only, huh?) OpenMP 'error' directive with 'severity (fatal)' causes a hang, so 'abort' instead of 'exit'. */ #undef exit #define exit(status) abort () #include "../../error.c"