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