ladybird/Kernel/Devices
Patrick Meyer 83f88df757 Kernel: Add option to build with coverage instrumentation and KCOV
GCC and Clang allow us to inject a call to a function named
__sanitizer_cov_trace_pc on every edge. This function has to be defined
by us. By noting down the caller in that function we can trace the code
we have encountered during execution. Such information is used by
coverage guided fuzzers like AFL and LibFuzzer to determine if a new
input resulted in a new code path. This makes fuzzing much more
effective.

Additionally this adds a basic KCOV implementation. KCOV is an API that
allows user space to request the kernel to start collecting coverage
information for a given user space thread. Furthermore KCOV then exposes
the collected program counters to user space via a BlockDevice which can
be mmaped from user space.

This work is required to add effective support for fuzzing SerenityOS to
the Syzkaller syscall fuzzer. :^) :^)
2021-07-26 17:40:28 +02:00
..
HID Kernel: Optionally dump scheduler state with stack traces 2021-07-15 23:46:37 +02:00
AsyncDeviceRequest.cpp Everywhere: Use "the SerenityOS developers." in copyright headers 2021-04-29 00:59:26 +02:00
AsyncDeviceRequest.h Kernel: Make UserOrKernelBuffer R/W helpers return KResultOr<size_t> 2021-05-13 23:28:40 +02:00
BlockDevice.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
BlockDevice.h Kernel: Mark AsyncBlockDeviceRequest + AnonymousVMObject as final 2021-05-03 16:03:17 +02:00
CharacterDevice.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
CharacterDevice.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Device.cpp Kernel: Remove unused header includes in Devices subtree 2021-07-11 21:37:38 +02:00
Device.h Kernel: Rename Lock to Mutex 2021-07-17 21:10:32 +02:00
FullDevice.cpp Kernel: Standardize the header include style to 'include <Kernel/...>' 2021-07-11 21:37:38 +02:00
FullDevice.h Kernel: Standardize the header include style to 'include <Kernel/...>' 2021-07-11 21:37:38 +02:00
KCOVDevice.cpp Kernel: Add option to build with coverage instrumentation and KCOV 2021-07-26 17:40:28 +02:00
KCOVDevice.h Kernel: Add option to build with coverage instrumentation and KCOV 2021-07-26 17:40:28 +02:00
KCOVInstance.cpp Kernel: Add option to build with coverage instrumentation and KCOV 2021-07-26 17:40:28 +02:00
KCOVInstance.h Kernel: Add option to build with coverage instrumentation and KCOV 2021-07-26 17:40:28 +02:00
MemoryDevice.cpp Kernel: Standardize the header include style to 'include <Kernel/...>' 2021-07-11 21:37:38 +02:00
MemoryDevice.h Kernel: Make various T::class_name() and similar return StringView 2021-07-11 01:46:59 +02:00
NullDevice.cpp Kernel: Remove unused header includes in Devices subtree 2021-07-11 21:37:38 +02:00
NullDevice.h Kernel: Standardize the header include style to 'include <Kernel/...>' 2021-07-11 21:37:38 +02:00
PCISerialDevice.cpp Kernel: Move special sections into Sections.h 2021-06-24 00:38:23 +02:00
PCISerialDevice.h Kernel: Clarify and make it easy to not use raw numbers 2021-07-03 16:28:49 +02:00
PCSpeaker.cpp Kernel: Move special sections into Sections.h 2021-06-24 00:38:23 +02:00
PCSpeaker.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
RandomDevice.cpp Kernel: Remove unused header includes in Devices subtree 2021-07-11 21:37:38 +02:00
RandomDevice.h Kernel: Standardize the header include style to 'include <Kernel/...>' 2021-07-11 21:37:38 +02:00
SB16.cpp Kernel: Consolidate API for creating AnonymousVMObject with given pages 2021-07-22 09:17:02 +02:00
SB16.h Kernel: Make various T::class_name() and similar return StringView 2021-07-11 01:46:59 +02:00
SerialDevice.cpp Kernel: Remove unused header includes in Devices subtree 2021-07-11 21:37:38 +02:00
SerialDevice.h Kernel: Make various T::class_name() and similar return StringView 2021-07-11 01:46:59 +02:00
VMWareBackdoor.cpp Kernel: Move special sections into Sections.h 2021-06-24 00:38:23 +02:00
VMWareBackdoor.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
ZeroDevice.cpp Kernel: Remove unused header includes in Devices subtree 2021-07-11 21:37:38 +02:00
ZeroDevice.h Kernel: Standardize the header include style to 'include <Kernel/...>' 2021-07-11 21:37:38 +02:00