1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 02:37:42 +00:00
serenity/Userland/Libraries
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
..
LibArchive LibArchive: Move method implementations away from header 2021-05-17 18:14:05 +01:00
LibAudio LibAudio: Implement loaded_samples() in the FLAC Loader 2021-07-22 22:57:05 +02:00
LibC Kernel: Add option to build with coverage instrumentation and KCOV 2021-07-26 17:40:28 +02:00
LibCards LibGfx: Use "try_" prefix for static factory functions 2021-07-21 18:02:15 +02:00
LibChess LibChess: Compact the Defenitions of various chess related types 2021-06-22 23:09:42 +02:00
LibCompress LibCompress: Discard GZip NAME & COMMENT optional strings 2021-05-18 08:09:21 +02:00
LibCore LibCore: Add LockFile, a filesystem based mutex 2021-07-22 23:34:15 +02:00
LibCoreDump LibDebug: Implement symbolication for x86_64 2021-07-13 23:19:33 +02:00
LibCpp LibCpp: Don't store entire ASTNode vector in each parser state 2021-07-13 23:20:09 +02:00
LibCrypt Everywhere: Add a blank line after copyright header where missing 2021-05-15 00:27:09 +01:00
LibCrypto LibCrypto: Add operator<= and operator>= to SignedBigInteger 2021-07-19 09:11:20 +01:00
LibDebug LibELF+Utilities: Avoid truncating 64-bit values 2021-07-22 08:57:01 +02:00
LibDesktop LibDesktop: Add an optional "Description" field to .af files 2021-07-26 00:39:10 +02:00
LibDiff AK+Everywhere: Consolidate String::index_of() and String::find() 2021-05-24 11:59:18 +02:00
LibDl Toolchain+Userland: Enable TLS for x86_64 2021-07-04 01:07:28 +02:00
LibELF LibELF+Utilities: Avoid truncating 64-bit values 2021-07-22 08:57:01 +02:00
LibFileSystemAccessClient LibFileSystemAccessClient: Use WindowServer window stealing interface 2021-07-18 17:21:28 +02:00
LibGemini AK: Implement String::find_any_of() and StringView::find_any_of() 2021-07-02 21:54:21 +02:00
LibGfx Kernel: Make purgeable memory a VMObject level concept (again) 2021-07-25 17:28:05 +02:00
LibGL LibGfx: Use "try_" prefix for static factory functions 2021-07-21 18:02:15 +02:00
LibGUI TextDocument: Fix indentation duplicating spaces 2021-07-26 12:56:52 +04:30
LibHTTP LibHTTP: Finish the request up on TLS connection finish 2021-06-30 01:23:25 +04:30
LibImageDecoderClient Userland: Remove dummy IPC methods 2021-06-24 00:38:58 +02:00
LibIMAP LibIMAP: Parse (but ignore) OK [HIGHESTMODSEQ <mod-sequence-value>] 2021-07-24 22:22:41 +01:00
LibIPC LibIPC: Fix losing messages when connection is closed 2021-07-21 01:13:45 +02:00
LibJS LibJS: Implement Temporal.PlainDate.from 2021-07-26 16:15:31 +01:00
LibKeyboard LibKeyboard: Remove an unnecessary #include when building with KERNEL 2021-06-30 11:30:28 +02:00
LibLine LibLine: Correct spelling mistake in variable name 2021-07-21 14:15:24 +02:00
LibM AK: Introduce Math.h 2021-07-19 16:34:21 +04:30
LibMarkdown LibMarkdown: Wrap non-inline code blocks in <pre> 2021-06-09 18:06:54 +01:00
LibPCIDB Everywhere: "file name" => "filename" 2021-04-29 22:16:18 +02:00
LibPDF Everywhere: Use AK/Math.h if applicable 2021-07-19 16:34:21 +04:30
LibProtocol LibProtocol: Use URL class in RequestClient::start_request argument 2021-06-06 16:00:11 +02:00
LibPthread LibPthread+Kernel: Add pthread_kill() and the thread_kill syscall 2021-07-09 15:36:50 +02:00
LibRegex LibRegex: Make unclosed-at-eof brace quantifiers an error 2021-07-24 20:52:43 +04:30
LibSanitizer LibSantizer: Read $UBSAN_OPTIONS to set deadliness on first print 2021-06-29 07:17:34 +04:30
LibSQL LibSQL+SQLServer: Build SQLServer system service 2021-07-08 17:55:59 +04:30
LibSymbolication Userland: Use /proc/kernel_base to determine the kernel base address 2021-07-22 21:38:23 +02:00
LibSyntax LibWeb+LibSyntax: Implement nested syntax highlighters 2021-06-07 14:45:49 +04:30
LibSystem Kernel+LibSystem: Add a 4th syscall argument 2021-07-25 14:08:50 +02:00
LibTest Everywhere: Use AK/Math.h if applicable 2021-07-19 16:34:21 +04:30
LibTextCodec LibTextCodec: Add Turkish (aka ISO-8859-9, Windows-1254) encoding 2021-06-23 16:32:47 +01:00
LibThreading Revert "LibThreading: Fix BackgroundAction result use-after-free" 2021-07-12 11:29:37 +02:00
LibTLS LibCrypto: Replace from_base{2,8,10,16}() & to_base10 with from_base(N) 2021-06-29 16:55:54 +01:00
LibTTF LibGfx: Use "try_" prefix for static factory functions 2021-07-21 18:02:15 +02:00
LibUSBDB LibUSBDB: Fix vendor id decoding 2021-06-18 19:41:25 +04:30
LibVideo Everywhere: Use AK/Math.h if applicable 2021-07-19 16:34:21 +04:30
LibVT LibGfx: Use "try_" prefix for static factory functions 2021-07-21 18:02:15 +02:00
LibWasm Everywhere: Prefer using {:#x} over 0x{:x} 2021-07-22 08:57:01 +02:00
LibWeb LibWeb: Make functions and attributes in bindings writable 2021-07-26 15:56:15 +01:00
LibWebSocket AK+Everywhere: Disallow constructing Functions from incompatible types 2021-06-06 00:27:30 +04:30
LibX86 LibX86: Add missing MovD and MovQ instructions 2021-07-22 23:33:21 +02:00
CMakeLists.txt FileSystemAccessServer+TextEditor: Implement cross-process modal prompts 2021-07-18 17:21:28 +02:00