From 41e7283b76a113234f40b72ab3b92644c0f04613 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sat, 19 Oct 2019 10:59:23 +0000 Subject: Refine check for `_LIBCPP_C_HAS_NO_GETS` on FreeBSD Summary: In D67316 we added `_LIBCPP_C_HAS_NO_GETS` to signal that the C library does not provide `gets()`, and added a test for FreeBSD 13 or higher, using the compiler-defined `__FreeBSD__` macro. Unfortunately this did not work that well for FreeBSD's own CI process, since the gcc compilers used for some architectures define `__FreeBSD__` to match the build host, not the target. Instead, we should use the `__FreeBSD_version` macro from the userland header ``, which is more fine-grained. See also . Reviewers: EricWF, mclow.lists, emaste, ldionne Reviewed By: emaste, ldionne Subscribers: dexonsmith, bsdjhb, krytarowski, christof, ldionne, libcxx-commits Differential Revision: https://reviews.llvm.org/D69174 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@375340 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/__config | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/__config b/include/__config index 1ae2fdc7b..044cd0ceb 100644 --- a/include/__config +++ b/include/__config @@ -242,6 +242,7 @@ #ifdef __FreeBSD__ # include +# include # if _BYTE_ORDER == _LITTLE_ENDIAN # define _LIBCPP_LITTLE_ENDIAN # else // _BYTE_ORDER == _LITTLE_ENDIAN @@ -1178,7 +1179,8 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( // Some systems do not provide gets() in their C library, for security reasons. #ifndef _LIBCPP_C_HAS_NO_GETS -# if defined(_LIBCPP_MSVCRT) || (defined(__FreeBSD__) && __FreeBSD__ >= 13) +# if defined(_LIBCPP_MSVCRT) || \ + (defined(__FreeBSD_version) && __FreeBSD_version >= 1300043) # define _LIBCPP_C_HAS_NO_GETS # endif #endif -- cgit v1.2.3