1*4bdff4beSrobert //===----------------------------------------------------------------------===// 246035553Spatrick // 346035553Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 446035553Spatrick // See https://llvm.org/LICENSE.txt for license information. 546035553Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 646035553Spatrick // 746035553Spatrick //===----------------------------------------------------------------------===// 846035553Spatrick 946035553Spatrick #ifndef _LIBCPP_CONFIG_ELAST 1046035553Spatrick #define _LIBCPP_CONFIG_ELAST 1146035553Spatrick 1246035553Spatrick #include <__config> 1346035553Spatrick 1446035553Spatrick #if defined(_LIBCPP_MSVCRT_LIKE) 1546035553Spatrick #include <stdlib.h> 1646035553Spatrick #else 1746035553Spatrick #include <errno.h> 1846035553Spatrick #endif 1946035553Spatrick 2076d0caaeSpatrick // Note: _LIBCPP_ELAST needs to be defined only on platforms 2176d0caaeSpatrick // where strerror/strerror_r can't handle out-of-range errno values. 2246035553Spatrick #if defined(ELAST) 2346035553Spatrick #define _LIBCPP_ELAST ELAST 2446035553Spatrick #elif defined(_NEWLIB_VERSION) 2546035553Spatrick #define _LIBCPP_ELAST __ELASTERROR 2676d0caaeSpatrick #elif defined(__NuttX__) 2776d0caaeSpatrick // No _LIBCPP_ELAST needed on NuttX 2846035553Spatrick #elif defined(__Fuchsia__) 2946035553Spatrick // No _LIBCPP_ELAST needed on Fuchsia 3046035553Spatrick #elif defined(__wasi__) 3146035553Spatrick // No _LIBCPP_ELAST needed on WASI 32*4bdff4beSrobert #elif defined(__EMSCRIPTEN__) 33*4bdff4beSrobert // No _LIBCPP_ELAST needed on Emscripten 3446035553Spatrick #elif defined(__linux__) || defined(_LIBCPP_HAS_MUSL_LIBC) 3546035553Spatrick #define _LIBCPP_ELAST 4095 3646035553Spatrick #elif defined(__APPLE__) 3746035553Spatrick // No _LIBCPP_ELAST needed on Apple 3846035553Spatrick #elif defined(__sun__) 3946035553Spatrick #define _LIBCPP_ELAST ESTALE 4076d0caaeSpatrick #elif defined(__MVS__) 4176d0caaeSpatrick #define _LIBCPP_ELAST 1160 4246035553Spatrick #elif defined(_LIBCPP_MSVCRT_LIKE) 4346035553Spatrick #define _LIBCPP_ELAST (_sys_nerr - 1) 4476d0caaeSpatrick #elif defined(_AIX) 4576d0caaeSpatrick #define _LIBCPP_ELAST 127 4646035553Spatrick #else 4746035553Spatrick // Warn here so that the person doing the libcxx port has an easier time: 4846035553Spatrick #warning ELAST for this platform not yet implemented 4946035553Spatrick #endif 5046035553Spatrick 5146035553Spatrick #endif // _LIBCPP_CONFIG_ELAST 52