forked from OSchip/llvm-project
[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:
parent
dedcefe09d
commit
b2a485e37e
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in New Issue