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