[compiler-rt] Fix build of Sanitizer-Test_Nolibc after D80648
authorAlex Richardson <Alexander.Richardson@cl.cam.ac.uk>
Thu, 6 Aug 2020 07:56:46 +0000 (08:56 +0100)
committerAlex Richardson <Alexander.Richardson@cl.cam.ac.uk>
Thu, 6 Aug 2020 08:16:52 +0000 (09:16 +0100)
commit6148cca70888ead020a808279043fd013ca72a2a
tree417fbc0877e3e7b2cd70e1fc0c9bca7bba93274d
parent3b3cdcc7a557a7dbd53e9e8cc311247d6df46c5c
[compiler-rt] Fix build of Sanitizer-Test_Nolibc after D80648

Running ninja check-sanitizer fails for after that patch (commit
058f5f6fd813d1ee1480497394d6fd44e65ec62b) with the following error:

libRTSanitizerCommon.test.nolibc.x86_64.a(sanitizer_posix.cpp.o): In
function `__sanitizer::GetNamedMappingFd(char const*, unsigned long,
int*)':
..../llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_posix.cpp:358:
undefined reference to `fcntl'
clang-12: error: linker command failed with exit code 1 (use -v to see
invocation)

This patch works around the problem by only calling fcntl if O_CLOEXEC
is not defined.

Reviewed By: plopresti

Differential Revision: https://reviews.llvm.org/D85114
compiler-rt/lib/sanitizer_common/sanitizer_posix.cpp