[compiler-rt] Use -nostdinc++ in clang_rt.profile to avoid including C++ headers
authorLouis Dionne <ldionne@apple.com>
Mon, 20 Jul 2020 17:13:38 +0000 (13:13 -0400)
committerLouis Dionne <ldionne@apple.com>
Tue, 21 Jul 2020 13:14:33 +0000 (09:14 -0400)
commit14c4de13e920c497c5275f81f74c453da2b3c957
treeec8f698fd70c0163f025e23f045d9b840b545d74
parent5a8779169ebc6a5bb839b46c6201e9217b7e3561
[compiler-rt] Use -nostdinc++ in clang_rt.profile to avoid including C++ headers

Most of the code in compiler_rt is C code. However, clang_rt.profile
contains the InstrProfilingRuntime.cpp file, which builds as C++. This
means that including e.g. <stdint.h> will actually include libc++'s
<stdint.h> and then #include_next the system's <stdint.h>. However, if
the target we're building compiler-rt for isn't supported by libc++,
this will lead to a failure since libc++'s <stdint.h> includes <__config>,
which performs various checks.

Since the goal seems to *not* be including any header from the C++ Standard
Library in clang_rt.profile, using -nostdinc++ to ensure that doesn't
happen unknowingly seems to make sense.

rdar://65852694

Differential Revision: https://reviews.llvm.org/D84205
compiler-rt/cmake/config-ix.cmake
compiler-rt/lib/profile/CMakeLists.txt