1*4d6fc14bSjoerg //===----------------------- config_elast.h -------------------------------===// 2*4d6fc14bSjoerg // 3*4d6fc14bSjoerg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*4d6fc14bSjoerg // See https://llvm.org/LICENSE.txt for license information. 5*4d6fc14bSjoerg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*4d6fc14bSjoerg // 7*4d6fc14bSjoerg //===----------------------------------------------------------------------===// 8*4d6fc14bSjoerg 9*4d6fc14bSjoerg #ifndef _LIBCPP_CONFIG_ELAST 10*4d6fc14bSjoerg #define _LIBCPP_CONFIG_ELAST 11*4d6fc14bSjoerg 12*4d6fc14bSjoerg #include <__config> 13*4d6fc14bSjoerg 14*4d6fc14bSjoerg #if defined(_LIBCPP_MSVCRT_LIKE) 15*4d6fc14bSjoerg #include <stdlib.h> 16*4d6fc14bSjoerg #else 17*4d6fc14bSjoerg #include <errno.h> 18*4d6fc14bSjoerg #endif 19*4d6fc14bSjoerg 20*4d6fc14bSjoerg // Note: _LIBCPP_ELAST needs to be defined only on platforms 21*4d6fc14bSjoerg // where strerror/strerror_r can't handle out-of-range errno values. 22*4d6fc14bSjoerg #if defined(ELAST) 23*4d6fc14bSjoerg #define _LIBCPP_ELAST ELAST 24*4d6fc14bSjoerg #elif defined(_NEWLIB_VERSION) 25*4d6fc14bSjoerg #define _LIBCPP_ELAST __ELASTERROR 26*4d6fc14bSjoerg #elif defined(__NuttX__) 27*4d6fc14bSjoerg // No _LIBCPP_ELAST needed on NuttX 28*4d6fc14bSjoerg #elif defined(__Fuchsia__) 29*4d6fc14bSjoerg // No _LIBCPP_ELAST needed on Fuchsia 30*4d6fc14bSjoerg #elif defined(__wasi__) 31*4d6fc14bSjoerg // No _LIBCPP_ELAST needed on WASI 32*4d6fc14bSjoerg #elif defined(__linux__) || defined(_LIBCPP_HAS_MUSL_LIBC) 33*4d6fc14bSjoerg #define _LIBCPP_ELAST 4095 34*4d6fc14bSjoerg #elif defined(__APPLE__) 35*4d6fc14bSjoerg // No _LIBCPP_ELAST needed on Apple 36*4d6fc14bSjoerg #elif defined(__sun__) 37*4d6fc14bSjoerg #define _LIBCPP_ELAST ESTALE 38*4d6fc14bSjoerg #elif defined(__MVS__) 39*4d6fc14bSjoerg #define _LIBCPP_ELAST 1160 40*4d6fc14bSjoerg #elif defined(_LIBCPP_MSVCRT_LIKE) 41*4d6fc14bSjoerg #define _LIBCPP_ELAST (_sys_nerr - 1) 42*4d6fc14bSjoerg #elif defined(_AIX) 43*4d6fc14bSjoerg #define _LIBCPP_ELAST 127 44*4d6fc14bSjoerg #else 45*4d6fc14bSjoerg // Warn here so that the person doing the libcxx port has an easier time: 46*4d6fc14bSjoerg #warning ELAST for this platform not yet implemented 47*4d6fc14bSjoerg #endif 48*4d6fc14bSjoerg 49*4d6fc14bSjoerg #endif // _LIBCPP_CONFIG_ELAST 50