[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v7 16/17] scripts/oss-fuzz: use hardlinks instead of copying
From: |
Alexander Bulekov |
Subject: |
[PATCH v7 16/17] scripts/oss-fuzz: use hardlinks instead of copying |
Date: |
Fri, 23 Oct 2020 11:07:45 -0400 |
Prior to this, fuzzers in the output oss-fuzz directory were exactly
the same executable, with a different name to do argv[0]-based
fuzz-target selection. This is a waste of space, especially since these
binaries can weigh many MB.
Instead of copying, use hard links, to cut down on wasted space. We need
to place the primary copy of the executable into DEST_DIR, since this is
a separate file-system on oss-fuzz. We should not place it directly into
$DEST_DIR, since oss-fuzz will treat it as an independent fuzzer and try
to run it for fuzzing. Instead, we create a DEST_DIR/bin directory to
store the primary copy.
Suggested-by: Darren Kenny <darren.kenny@oracle.com>
Signed-off-by: Alexander Bulekov <alxndr@bu.edu>
---
scripts/oss-fuzz/build.sh | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/scripts/oss-fuzz/build.sh b/scripts/oss-fuzz/build.sh
index 0c3ca9e06f..0ce2867732 100755
--- a/scripts/oss-fuzz/build.sh
+++ b/scripts/oss-fuzz/build.sh
@@ -62,6 +62,9 @@ fi
mkdir -p "$DEST_DIR/lib/" # Copy the shared libraries here
+mkdir -p "$DEST_DIR/bin/" # Copy executables that shouldn't
+ # be treated as fuzzers by oss-fuzz here
+
# Build once to get the list of dynamic lib paths, and copy them over
../configure --disable-werror --cc="$CC" --cxx="$CXX" --enable-fuzzing \
--prefix="$DEST_DIR" --bindir="$DEST_DIR" --datadir="$DEST_DIR/data/" \
@@ -88,13 +91,16 @@ make "-j$(nproc)" qemu-fuzz-i386 V=1
# Copy over the datadir
cp -r ../pc-bios/ "$DEST_DIR/pc-bios"
+cp "./qemu-fuzz-i386" "$DEST_DIR/bin/"
+
# Run the fuzzer with no arguments, to print the help-string and get the list
# of available fuzz-targets. Copy over the qemu-fuzz-i386, naming it according
# to each available fuzz target (See 05509c8e6d fuzz: select fuzz target using
# executable name)
for target in $(./qemu-fuzz-i386 | awk '$1 ~ /\*/ {print $2}');
do
- cp qemu-fuzz-i386 "$DEST_DIR/qemu-fuzz-i386-target-$target"
+ ln "$DEST_DIR/bin/qemu-fuzz-i386" \
+ "$DEST_DIR/qemu-fuzz-i386-target-$target"
done
echo "Done. The fuzzers are located in $DEST_DIR"
--
2.28.0
- [PATCH v7 03/17] fuzz: Add PCI features to the generic fuzzer, (continued)
- [PATCH v7 03/17] fuzz: Add PCI features to the generic fuzzer, Alexander Bulekov, 2020/10/23
- [PATCH v7 10/17] scripts/oss-fuzz: Add script to reorder a generic-fuzzer trace, Alexander Bulekov, 2020/10/23
- [PATCH v7 04/17] fuzz: Add DMA support to the generic-fuzzer, Alexander Bulekov, 2020/10/23
- [PATCH v7 11/17] scripts/oss-fuzz: Add crash trace minimization script, Alexander Bulekov, 2020/10/23
- [PATCH v7 05/17] fuzz: Declare DMA Read callback function, Alexander Bulekov, 2020/10/23
- [PATCH v7 13/17] fuzz: add an "opaque" to the FuzzTarget struct, Alexander Bulekov, 2020/10/23
- [PATCH v7 12/17] fuzz: Add instructions for using generic-fuzz, Alexander Bulekov, 2020/10/23
- [PATCH v7 14/17] fuzz: add generic-fuzz configs for oss-fuzz, Alexander Bulekov, 2020/10/23
- [PATCH v7 15/17] fuzz: register predefined generic-fuzz configs, Alexander Bulekov, 2020/10/23
- [PATCH v7 16/17] scripts/oss-fuzz: use hardlinks instead of copying,
Alexander Bulekov <=
- [PATCH v7 17/17] scripts/oss-fuzz: ignore the generic-fuzz target, Alexander Bulekov, 2020/10/23