xref: /llvm-project/libc/docs/dev/fuzzing.rst (revision 54faf22f7b947464a070669711100211e87f3ea8)
1*54faf22fSSiva Chandra ReddyFuzzing for LLVM-libc functions
2*54faf22fSSiva Chandra Reddy===============================
3*54faf22fSSiva Chandra Reddy
4*54faf22fSSiva Chandra ReddyFuzz tests are used to ensure quality and security of LLVM-libc implementations.
5*54faf22fSSiva Chandra ReddyAll fuzz tests live under the directory named ``fuzzing``. Within this
6*54faf22fSSiva Chandra Reddydirectory, the fuzz test for a libc function lives in the same nested directory
7*54faf22fSSiva Chandra Reddyas its implementation in the toplevel ``src`` directory. The build target
8*54faf22fSSiva Chandra Reddy``libc-fuzzer`` builds all of the enabled fuzz tests (but does not run them).
9*54faf22fSSiva Chandra Reddy
10*54faf22fSSiva Chandra ReddyTypes of fuzz tests
11*54faf22fSSiva Chandra Reddy===================
12*54faf22fSSiva Chandra Reddy
13*54faf22fSSiva Chandra ReddyAs of this writing, there are two different kinds of fuzz tests. One kind are
14*54faf22fSSiva Chandra Reddythe traditional fuzz tests which test one function at a time and only that
15*54faf22fSSiva Chandra Reddyparticular function. The other kind of tests are what we call as the
16*54faf22fSSiva Chandra Reddydifferential fuzz tests. These tests compare the behavior of LLVM libc
17*54faf22fSSiva Chandra Reddyimplementations with the behavior of the corresponding functions from the system
18*54faf22fSSiva Chandra Reddylibc.
19