forked from OSchip/llvm-project
36 lines
1.4 KiB
ReStructuredText
36 lines
1.4 KiB
ReStructuredText
.. title:: clang-tidy - llvmlibc-restrict-system-libc-headers
|
|
|
|
llvmlibc-restrict-system-libc-headers
|
|
=====================================
|
|
|
|
Finds includes of system libc headers not provided by the compiler within
|
|
llvm-libc implementations.
|
|
|
|
.. code-block:: c++
|
|
|
|
#include <stdio.h> // Not allowed because it is part of system libc.
|
|
#include <stddef.h> // Allowed because it is provided by the compiler.
|
|
#include "internal/stdio.h" // Allowed because it is NOT part of system libc.
|
|
|
|
|
|
This check is necessary because accidentally including system libc headers can
|
|
lead to subtle and hard to detect bugs. For example consider a system libc
|
|
whose ``dirent`` struct has slightly different field ordering than llvm-libc.
|
|
While this will compile successfully, this can cause issues during runtime
|
|
because they are ABI incompatible.
|
|
|
|
Options
|
|
-------
|
|
|
|
.. option:: Includes
|
|
|
|
A string containing a comma separated glob list of allowed include
|
|
filenames. Similar to the -checks glob list for running clang-tidy itself,
|
|
the two wildcard characters are `*` and `-`, to include and exclude globs,
|
|
respectively. The default is `-*`, which disallows all includes.
|
|
|
|
This can be used to allow known safe includes such as Linux development
|
|
headers. See :doc:`portability-restrict-system-includes
|
|
<portability-restrict-system-includes>` for more
|
|
details.
|