Files
xen/tools/fuzz
Anthony PERARD 2d696fc3d0 tools/fuzz/x86_instruction_emulator: rework makefile
Rework dependencies of all objects. We don't need to add dependencies
for headers that $(CC) is capable of generating, we only need to
include $(DEPS_INCLUDE). Some dependencies are still needed so make
knows to generate symlinks for them.

We remove the use of "vpath" for cpuid.c. While it works fine for now,
when we will convert this makefile to subdirmk, vpath will not be
usable. Also, "-iquote" is now needed to build "cpuid.o".

Replace "-I." by "-iquote .", so it applies to double-quote includes
only.

Rather than checking if a symlink exist, always regenerate the
symlink. So if the source tree changed location, the symlink is
updated.

Since we are creating a new .gitignore for the symlink, also move the
entry to it.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
2022-08-15 08:55:16 +02:00
..
2022-07-12 08:36:37 +02:00
2017-07-28 17:47:42 +01:00
2017-01-25 10:04:31 +00:00

# OVERVIEW

This directory provides fuzzing targets to be run inside Google
oss-fuzz infrastructure.

See also https://github.com/google/oss-fuzz.

# HOW IT WORKS

We need to provide the source code and the rune to produce objects or
archives (artefacts) from source code. These items ideally should live
inside xen.git so that they can be kept up to date.

The artefacts contain all the code we wish to fuzz and a function
called LLVMFuzzerTestOneInput. LLVMFuzzerTestOneInput is the entry
point to the code we wish to fuzz. Note that we don't produce
executable programs because we don't have libFuzzEngine
locally. libFuzzEngine is maintained by oss-fuzz.

We also provide build script to oss-fuzz. The build script will
inherit the correct compiler settings and be run in a pre-setup
environment, which has libFuzzEngine installed. The build script is
responsible for calling the correct Xen build rune to produce the
artefacts, then link them against libFuzzEngine to produce
executables, which will run in oss-fuzz infrastructure.

Please refer to official oss-fuzz documents for the most up-to-date
descriptions for all moving parts.

# HOW TO IMPROVE THE FUZZING TARGETS

Feel free to modify each fuzzing targets at will. Make sure they build
by invoking make as you would build tools.

To actually test the new code, you would need to run the target in
standalone mode, please refer to oss-fuzz documents on how to do that.

It is highly recommended that you run the new target for a while to
weed out error in plumbing code to avoid false positives.