diff --git a/libc/docs/fuzzing.rst b/libc/docs/fuzzing.rst --- a/libc/docs/fuzzing.rst +++ b/libc/docs/fuzzing.rst @@ -1,15 +1,18 @@ -Fuzzing for LLVM-libc ---------------------- +Fuzzing for LLVM-libc functions +=============================== -Fuzzing tests are used to ensure quality and security of LLVM-libc -implementations. +Fuzz tests are used to ensure quality and security of LLVM-libc implementations. +All fuzz tests live under the directory named ``fuzzing``. Within this +directory, the fuzz test for a libc function lives in the same nested directory +as its implementation in the toplevel ``src`` directory. The build target +``libc-fuzzer`` builds all of the enabled fuzz tests (but does not run them). -Each fuzzing test lives under the fuzzing directory in a subdirectory -corresponding with the src layout. +Types of fuzz tests +=================== -Currently we use system libc for functions that have yet to be implemented, -however as they are implemented the fuzzers will be changed to use our -implementation to increase coverage for testing. - -Fuzzers will be run on `oss-fuzz `_ and the -check-libc target will ensure that they build correctly. +As of this writing, there are two different kinds of fuzz tests. One kind are +the traditional fuzz tests which test one function at a time and only that +particular function. The other kind of tests are what we call as the +differential fuzz tests. These tests compare the behavior of LLVM libc +implementations with the behavior of the corresponding functions from the system +libc.