[llvm] [Tools] Add fuzzer for assembly parsing (PR #77751)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 11 02:50:15 PST 2024
https://github.com/DavidKorczynski created https://github.com/llvm/llvm-project/pull/77751
The goal is to have this fuzzer running as part of the LLVM OSS-Fuzz integration (https://github.com/google/oss-fuzz/tree/master/projects/llvm)
>From 5d79fe6c50e58fb9fa2189e67d05b7ab71a0cd79 Mon Sep 17 00:00:00 2001
From: David Korczynski <david at adalogics.com>
Date: Thu, 11 Jan 2024 02:49:57 -0800
Subject: [PATCH] [Tools] Add fuzzer for assembly parsing
Signed-off-by: David Korczynski <david at adalogics.com>
---
.../llvm-parse-assembly-fuzzer/CMakeLists.txt | 6 +++++
.../llvm-parse-assembly-fuzzer.cpp | 23 +++++++++++++++++++
2 files changed, 29 insertions(+)
create mode 100644 llvm/tools/llvm-parse-assembly-fuzzer/CMakeLists.txt
create mode 100644 llvm/tools/llvm-parse-assembly-fuzzer/llvm-parse-assembly-fuzzer.cpp
diff --git a/llvm/tools/llvm-parse-assembly-fuzzer/CMakeLists.txt b/llvm/tools/llvm-parse-assembly-fuzzer/CMakeLists.txt
new file mode 100644
index 00000000000000..c3b531e134e5bc
--- /dev/null
+++ b/llvm/tools/llvm-parse-assembly-fuzzer/CMakeLists.txt
@@ -0,0 +1,6 @@
+set(LLVM_LINK_COMPONENTS
+ AsmParser
+)
+add_llvm_fuzzer(llvm-parse-assembly-fuzzer
+ llvm-parse-assembly-fuzzer.cpp
+)
diff --git a/llvm/tools/llvm-parse-assembly-fuzzer/llvm-parse-assembly-fuzzer.cpp b/llvm/tools/llvm-parse-assembly-fuzzer/llvm-parse-assembly-fuzzer.cpp
new file mode 100644
index 00000000000000..cca428916acd11
--- /dev/null
+++ b/llvm/tools/llvm-parse-assembly-fuzzer/llvm-parse-assembly-fuzzer.cpp
@@ -0,0 +1,23 @@
+//===-- llvm-parse-assembly-fuzzer.cpp - Fuzz ASM parsing with lib/Fuzzer ===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Analysis/VectorUtils.h"
+#include "llvm/AsmParser/Parser.h"
+
+using namespace llvm;
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
+ LLVMContext Ctx;
+ SMDiagnostic Err;
+
+ std::string FuzzInput(reinterpret_cast<const char *>(Data), Size);
+ const std::unique_ptr<Module> M =
+ parseAssemblyString(FuzzInput.c_str(), Err, Ctx);
+
+ return 0;
+}
More information about the llvm-commits
mailing list