[libc] Fix accidental inclusion of system libc headers.

Summary:
I found that because `--system-headers` flag was not included when running clang-tidy, errors produced from compiler provided headers were being suppressed. After passing this flag I realized that by including headers like stdint.h we were indirectly including headers from the system libc. To prevent this we pass `-ffreestanding`.
We don't want to pass `--system-headers` for all checks just the `llvmlibc-restrict-system-libc-headers` therefore we do a separate invocation of clang-tidy for this check.

Reviewers: abrachet, sivachandra

Reviewed By: sivachandra

Subscribers: mgorny, aheejin, tschuett, ecnelises, libc-commits

Tags: #libc-project

Differential Revision: https://reviews.llvm.org/D80178
This commit is contained in:
Paula Toth 2020-05-21 01:21:07 -07:00
parent dedcefe09d
commit b2a485e37e
2 changed files with 11 additions and 3 deletions

View File

@ -144,7 +144,7 @@ function(add_entrypoint_object target_name)
${objects_target_name}
BEFORE
PRIVATE
-fpie ${LLVM_CXX_STD_default}
-fpie ${LLVM_CXX_STD_default} -ffreestanding
)
target_include_directories(
${objects_target_name}
@ -217,10 +217,18 @@ function(add_entrypoint_object target_name)
# X warnings generated.
# Until this is fixed upstream, we use -fno-caret-diagnostics to surpress
# these.
COMMAND $<TARGET_FILE:clang-tidy> "--extra-arg=-fno-caret-diagnostics" --quiet
COMMAND $<TARGET_FILE:clang-tidy>
"--extra-arg=-fno-caret-diagnostics" --quiet
# Path to directory containing compile_commands.json
-p ${PROJECT_BINARY_DIR}
${ADD_ENTRYPOINT_OBJ_SRCS}
# We run restrict-system-libc-headers with --system-headers to prevent
# transitive inclusion through compler provided headers.
COMMAND $<TARGET_FILE:clang-tidy> --system-headers
--checks="-*,llvmlibc-restrict-system-libc-headers"
--quiet
-p ${PROJECT_BINARY_DIR}
${ADD_ENTRYPOINT_OBJ_SRCS}
# We have two options for running commands, add_custom_command and
# add_custom_target. We don't want to run the linter unless source files
# have changed. add_custom_target explicitly runs everytime therefore we

View File

@ -3,4 +3,4 @@ HeaderFilterRegex: '.*'
WarningsAsErrors: 'llvmlibc-*'
CheckOptions:
- key: llvmlibc-restrict-system-libc-headers.Includes
value: '-*, linux/*, asm/unistd.h'
value: '-*, linux/*, asm/*.h, asm-generic/*.h'