* Latest fuzzer patches from Alexander

* Fixes for the qtest bios-tables-test
 * LGPL information cleanup in qtest code
 * sh4 acceptance test
 * Improved submodule handling for the s390x CI test
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAl7oexoRHHRodXRoQHJl
 ZGhhdC5jb20ACgkQLtnXdP5wLbVF/A//U2l79c2xM+9u95treESERb8XH7DXq8z0
 uB5/3hEorGhF3XcnJoxHjzKlGtwKYdcn+h8fYba3efroT8QRh84D+y+7at5Ag9r9
 jDB7MKIIn4pw0Zti4/s26xwccSlL1Sr24dzeJfGMfAXzve7wP4QZkAU9jwOu6TFW
 5o5zd8DnPT9IpXnqJZgX0K+A1dLvnkyxqiWAFAok/8PHyhdLx7UPkGG+hIyOezSi
 j0vadrihUSUO88zChgq1Lfbr2r82YaIUIve9PYCMwMW9gYARH0fDFXKv55wHAmzJ
 NuO3DNy3FtobrZFPfJ9/x5P9ri806uATLI9ioF7U7tGD0xmsoypORxo8ueFfL1hD
 V31k052mSOpfYZKMdltMhlBMHxVjNZt7lHu2MEilC1j+cDbBE4JWgipbEkvrKnKR
 jCO6ur0f1UTrNt93S5xhCH2muGtGoAwv4i96e2/XhRoP4t8x7KyNUwzNbV3Y0Uvf
 HXBFz8S/J743Pd+j0aSp12ma+z5awtC5L1C0X5DaIu5jR1dQ9VK+G13x7tAjNdT8
 wCHoOXwtveYLxWJ235Rx6pzdvk625plDlCYXmhRjyBNbW+XWuLAVwbNBwZSfKcLr
 Dj+vbHGpWiNpXnPTtnTZS4Lec9w4dCZdNGXq54nypIxDYukTjjPldTc20bbz6JoM
 4OcE3na8bMA=
 =Pdab
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2020-06-16' into staging

* Latest fuzzer patches from Alexander
* Fixes for the qtest bios-tables-test
* LGPL information cleanup in qtest code
* sh4 acceptance test
* Improved submodule handling for the s390x CI test

# gpg: Signature made Tue 16 Jun 2020 08:56:10 BST
# gpg:                using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5
# gpg:                issuer "thuth@redhat.com"
# gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full]
# gpg:                 aka "Thomas Huth <thuth@redhat.com>" [full]
# gpg:                 aka "Thomas Huth <huth@tuxfamily.org>" [full]
# gpg:                 aka "Thomas Huth <th.huth@posteo.de>" [unknown]
# Primary key fingerprint: 27B8 8847 EEE0 2501 18F3  EAB9 2ED9 D774 FE70 2DB5

* remotes/huth-gitlab/tags/pull-request-2020-06-16:
  configure: Let SLOF be initialized by ./scripts/git-submodule.sh
  tests/acceptance: Add boot tests for sh4 QEMU advent calendar image
  tests/qtest: Fix LGPL information in the file headers
  fuzz: add oss-fuzz build-script
  fuzz: Add support for logging QTest commands
  fuzz: skip QTest serialization
  bios-tables-test: Fix "-tpmdev: invalid option"

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2020-06-16 10:06:57 +01:00
commit 72fc7d7f79
46 changed files with 458 additions and 41 deletions

View File

@ -293,7 +293,7 @@ jobs:
- name: "GCC check-acceptance"
dist: bionic
env:
- CONFIG="--enable-tools --target-list=aarch64-softmmu,alpha-softmmu,arm-softmmu,m68k-softmmu,microblaze-softmmu,mips-softmmu,mips64el-softmmu,nios2-softmmu,or1k-softmmu,ppc-softmmu,ppc64-softmmu,s390x-softmmu,sparc-softmmu,x86_64-softmmu,xtensa-softmmu"
- CONFIG="--enable-tools --target-list=aarch64-softmmu,alpha-softmmu,arm-softmmu,m68k-softmmu,microblaze-softmmu,mips-softmmu,mips64el-softmmu,nios2-softmmu,or1k-softmmu,ppc-softmmu,ppc64-softmmu,s390x-softmmu,sh4-softmmu,sparc-softmmu,x86_64-softmmu,xtensa-softmmu"
- TEST_CMD="make check-acceptance"
- CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-acceptance"
after_script:
@ -496,7 +496,6 @@ jobs:
- CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user"
- UNRELIABLE=true
script:
- ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
- BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
- |
if [ "$BUILD_RC" -eq 0 ] ; then

View File

@ -2339,6 +2339,7 @@ R: Bandan Das <bsd@redhat.com>
R: Stefan Hajnoczi <stefanha@redhat.com>
S: Maintained
F: tests/qtest/fuzz/
F: scripts/oss-fuzz/
Register API
M: Alistair Francis <alistair@alistair23.me>

5
configure vendored
View File

@ -6600,6 +6600,11 @@ if test "$cpu" = "s390x" ; then
write_c_skeleton
if compile_prog "-march=z900" ""; then
roms="$roms s390-ccw"
# SLOF is required for building the s390-ccw firmware on s390x,
# since it is using the libnet code from SLOF for network booting.
if test -e "${source_path}/.git" ; then
git_submodules="${git_submodules} roms/SLOF"
fi
fi
fi

105
scripts/oss-fuzz/build.sh Executable file
View File

@ -0,0 +1,105 @@
#!/bin/sh -e
#
# OSS-Fuzz build script. See:
# https://google.github.io/oss-fuzz/getting-started/new-project-guide/#buildsh
#
# The file is consumed by:
# https://github.com/google/oss-fuzz/blob/master/projects/qemu/Dockerfiles
#
# This code is licensed under the GPL version 2 or later. See
# the COPYING file in the top-level directory.
#
# build project
# e.g.
# ./autogen.sh
# ./configure
# make -j$(nproc) all
# build fuzzers
# e.g.
# $CXX $CXXFLAGS -std=c++11 -Iinclude \
# /path/to/name_of_fuzzer.cc -o $OUT/name_of_fuzzer \
# $LIB_FUZZING_ENGINE /path/to/library.a
fatal () {
echo "Error : ${*}, exiting."
exit 1
}
OSS_FUZZ_BUILD_DIR="./build-oss-fuzz/"
# There seems to be a bug in clang-11 (used for builds on oss-fuzz) :
# accel/tcg/cputlb.o: In function `load_memop':
# accel/tcg/cputlb.c:1505: undefined reference to `qemu_build_not_reached'
#
# When building with optimization, the compiler is expected to prove that the
# statement cannot be reached, and remove it. For some reason clang-11 doesn't
# remove it, resulting in an unresolved reference to qemu_build_not_reached
# Undefine the __OPTIMIZE__ macro which compiler.h relies on to choose whether
# to " #define qemu_build_not_reached() g_assert_not_reached() "
EXTRA_CFLAGS="$CFLAGS -U __OPTIMIZE__"
if ! { [ -e "./COPYING" ] &&
[ -e "./MAINTAINERS" ] &&
[ -e "./Makefile" ] &&
[ -e "./docs" ] &&
[ -e "./VERSION" ] &&
[ -e "./linux-user" ] &&
[ -e "./softmmu" ];} ; then
fatal "Please run the script from the top of the QEMU tree"
fi
mkdir -p $OSS_FUZZ_BUILD_DIR || fatal "mkdir $OSS_FUZZ_BUILD_DIR failed"
cd $OSS_FUZZ_BUILD_DIR || fatal "cd $OSS_FUZZ_BUILD_DIR failed"
if [ -z ${LIB_FUZZING_ENGINE+x} ]; then
LIB_FUZZING_ENGINE="-fsanitize=fuzzer"
fi
if [ -z ${OUT+x} ]; then
DEST_DIR=$(realpath "./DEST_DIR")
else
DEST_DIR=$OUT
fi
mkdir -p "$DEST_DIR/lib/" # Copy the shared libraries here
# Build once to get the list of dynamic lib paths, and copy them over
../configure --disable-werror --cc="$CC" --cxx="$CXX" \
--extra-cflags="$EXTRA_CFLAGS"
if ! make CONFIG_FUZZ=y CFLAGS="$LIB_FUZZING_ENGINE" "-j$(nproc)" \
i386-softmmu/fuzz; then
fatal "Build failed. Please specify a compiler with fuzzing support"\
"using the \$CC and \$CXX environemnt variables, or specify a"\
"\$LIB_FUZZING_ENGINE compatible with your compiler"\
"\nFor example: CC=clang CXX=clang++ $0"
fi
for i in $(ldd ./i386-softmmu/qemu-fuzz-i386 | cut -f3 -d' '); do
cp "$i" "$DEST_DIR/lib/"
done
rm ./i386-softmmu/qemu-fuzz-i386
# Build a second time to build the final binary with correct rpath
../configure --bindir="$DEST_DIR" --datadir="$DEST_DIR/data/" --disable-werror \
--cc="$CC" --cxx="$CXX" --extra-cflags="$EXTRA_CFLAGS" \
--extra-ldflags="-Wl,-rpath,'\$\$ORIGIN/lib'"
make CONFIG_FUZZ=y CFLAGS="$LIB_FUZZING_ENGINE" "-j$(nproc)" i386-softmmu/fuzz
# Copy over the datadir
cp -r ../pc-bios/ "$DEST_DIR/pc-bios"
# 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 $(./i386-softmmu/qemu-fuzz-i386 | awk '$1 ~ /\*/ {print $2}');
do
cp ./i386-softmmu/qemu-fuzz-i386 "$DEST_DIR/qemu-fuzz-i386-target-$target"
done
echo "Done. The fuzzers are located in $DEST_DIR"
exit 0

View File

@ -858,12 +858,12 @@ class BootLinuxConsole(LinuxKernelTest):
console_pattern = 'No filesystem could mount root'
self.wait_for_console_pattern(console_pattern)
def do_test_advcal_2018(self, day, tar_hash, kernel_name):
def do_test_advcal_2018(self, day, tar_hash, kernel_name, console=0):
tar_url = ('https://www.qemu-advent-calendar.org'
'/2018/download/day' + day + '.tar.xz')
file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
archive.extract(file_path, self.workdir)
self.vm.set_console()
self.vm.set_console(console_index=console)
self.vm.add_args('-kernel',
self.workdir + '/day' + day + '/' + kernel_name)
self.vm.launch()
@ -937,6 +937,15 @@ class BootLinuxConsole(LinuxKernelTest):
self.vm.add_args('-M', 'graphics=off')
self.do_test_advcal_2018('15', tar_hash, 'invaders.elf')
def test_sh4_r2d(self):
"""
:avocado: tags=arch:sh4
:avocado: tags=machine:r2d
"""
tar_hash = 'fe06a4fd8ccbf2e27928d64472939d47829d4c7e'
self.vm.add_args('-append', 'console=ttySC1')
self.do_test_advcal_2018('09', tar_hash, 'zImage', console=1)
def test_sparc_ss20(self):
"""
:avocado: tags=arch:sparc

View File

@ -882,6 +882,7 @@ uint64_t tpm_tis_base_addr;
static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
uint64_t base)
{
#ifdef CONFIG_TPM
gchar *tmp_dir_name = g_strdup_printf("qemu-test_acpi_%s_tcg_%s.XXXXXX",
machine, tpm_if);
char *tmp_path = g_dir_make_tmp(tmp_dir_name, NULL);
@ -924,6 +925,9 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
g_free(tmp_path);
g_free(tmp_dir_name);
free_test_data(&data);
#else
g_test_skip("TPM disabled");
#endif
}
static void test_acpi_q35_tcg_tpm_tis(void)

View File

@ -12,7 +12,7 @@
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,6 +5,7 @@ fuzz-obj-y += $(libqos-obj-y)
fuzz-obj-y += tests/qtest/fuzz/fuzz.o # Fuzzer skeleton
fuzz-obj-y += tests/qtest/fuzz/fork_fuzz.o
fuzz-obj-y += tests/qtest/fuzz/qos_fuzz.o
fuzz-obj-y += tests/qtest/fuzz/qtest_wrappers.o
# Targets
fuzz-obj-$(CONFIG_PCI_I440FX) += tests/qtest/fuzz/i440fx_fuzz.o
@ -16,3 +17,23 @@ FUZZ_CFLAGS += -I$(SRC_PATH)/tests -I$(SRC_PATH)/tests/qtest
# Linker Script to force coverage-counters into known regions which we can mark
# shared
FUZZ_LDFLAGS += -Xlinker -T$(SRC_PATH)/tests/qtest/fuzz/fork_fuzz.ld
FUZZ_LDFLAGS += -Wl,-wrap,qtest_inb
FUZZ_LDFLAGS += -Wl,-wrap,qtest_inw
FUZZ_LDFLAGS += -Wl,-wrap,qtest_inl
FUZZ_LDFLAGS += -Wl,-wrap,qtest_outb
FUZZ_LDFLAGS += -Wl,-wrap,qtest_outw
FUZZ_LDFLAGS += -Wl,-wrap,qtest_outl
FUZZ_LDFLAGS += -Wl,-wrap,qtest_readb
FUZZ_LDFLAGS += -Wl,-wrap,qtest_readw
FUZZ_LDFLAGS += -Wl,-wrap,qtest_readl
FUZZ_LDFLAGS += -Wl,-wrap,qtest_readq
FUZZ_LDFLAGS += -Wl,-wrap,qtest_writeb
FUZZ_LDFLAGS += -Wl,-wrap,qtest_writew
FUZZ_LDFLAGS += -Wl,-wrap,qtest_writel
FUZZ_LDFLAGS += -Wl,-wrap,qtest_writeq
FUZZ_LDFLAGS += -Wl,-wrap,qtest_memread
FUZZ_LDFLAGS += -Wl,-wrap,qtest_bufread
FUZZ_LDFLAGS += -Wl,-wrap,qtest_memwrite
FUZZ_LDFLAGS += -Wl,-wrap,qtest_bufwrite
FUZZ_LDFLAGS += -Wl,-wrap,qtest_memset

View File

@ -91,7 +91,12 @@ static void usage(char *path)
printf(" * %s : %s\n", tmp->target->name,
tmp->target->description);
}
printf("Alternatively, add -target-FUZZ_TARGET to the executable name\n");
printf("Alternatively, add -target-FUZZ_TARGET to the executable name\n\n"
"Set the environment variable FUZZ_SERIALIZE_QTEST=1 to serialize\n"
"QTest commands into an ASCII protocol. Useful for building crash\n"
"reproducers, but slows down execution.\n\n"
"Set the environment variable QTEST_LOG=1 to log all qtest commands"
"\n");
exit(0);
}
@ -138,6 +143,7 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)
char *target_name;
char *dir;
bool serialize = false;
/* Initialize qgraph and modules */
qos_graph_init();
@ -172,6 +178,13 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)
usage(**argv);
}
/* Should we always serialize qtest commands? */
if (getenv("FUZZ_SERIALIZE_QTEST")) {
serialize = true;
}
fuzz_qtest_set_serialize(serialize);
/* Identify the fuzz target */
fuzz_target = fuzz_get_target(target_name);
if (!fuzz_target) {
@ -186,6 +199,11 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)
/* Run QEMU's softmmu main with the fuzz-target dependent arguments */
const char *init_cmdline = fuzz_target->get_init_cmdline(fuzz_target);
init_cmdline = g_strdup_printf("%s -qtest /dev/null -qtest-log %s",
init_cmdline,
getenv("QTEST_LOG") ? "/dev/fd/2"
: "/dev/null");
/* Split the runcmd into an argv and argc */
wordexp_t result;

View File

@ -82,6 +82,9 @@ typedef struct FuzzTarget {
void flush_events(QTestState *);
void reboot(QTestState *);
/* Use the QTest ASCII protocol or call address_space API directly?*/
void fuzz_qtest_set_serialize(bool option);
/*
* makes a copy of *target and adds it to the target-list.
* i.e. fine to set up target on the caller's stack

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -0,0 +1,252 @@
/*
* qtest function wrappers
*
* Copyright Red Hat Inc., 2019
*
* Authors:
* Alexander Bulekov <alxndr@bu.edu>
*
* This work is licensed under the terms of the GNU GPL, version 2 or later.
* See the COPYING file in the top-level directory.
*
*/
#include "qemu/osdep.h"
#include "cpu.h"
#include "exec/ioport.h"
#include "fuzz.h"
static bool serialize = true;
#define WRAP(RET_TYPE, NAME_AND_ARGS)\
RET_TYPE __wrap_##NAME_AND_ARGS;\
RET_TYPE __real_##NAME_AND_ARGS;
WRAP(uint8_t , qtest_inb(QTestState *s, uint16_t addr))
WRAP(uint16_t , qtest_inw(QTestState *s, uint16_t addr))
WRAP(uint32_t , qtest_inl(QTestState *s, uint16_t addr))
WRAP(void , qtest_outb(QTestState *s, uint16_t addr, uint8_t value))
WRAP(void , qtest_outw(QTestState *s, uint16_t addr, uint16_t value))
WRAP(void , qtest_outl(QTestState *s, uint16_t addr, uint32_t value))
WRAP(uint8_t , qtest_readb(QTestState *s, uint64_t addr))
WRAP(uint16_t , qtest_readw(QTestState *s, uint64_t addr))
WRAP(uint32_t , qtest_readl(QTestState *s, uint64_t addr))
WRAP(uint64_t , qtest_readq(QTestState *s, uint64_t addr))
WRAP(void , qtest_writeb(QTestState *s, uint64_t addr, uint8_t value))
WRAP(void , qtest_writew(QTestState *s, uint64_t addr, uint16_t value))
WRAP(void , qtest_writel(QTestState *s, uint64_t addr, uint32_t value))
WRAP(void , qtest_writeq(QTestState *s, uint64_t addr, uint64_t value))
WRAP(void , qtest_memread(QTestState *s, uint64_t addr,
void *data, size_t size))
WRAP(void , qtest_bufread(QTestState *s, uint64_t addr, void *data,
size_t size))
WRAP(void , qtest_memwrite(QTestState *s, uint64_t addr, const void *data,
size_t size))
WRAP(void, qtest_bufwrite(QTestState *s, uint64_t addr,
const void *data, size_t size))
WRAP(void, qtest_memset(QTestState *s, uint64_t addr,
uint8_t patt, size_t size))
uint8_t __wrap_qtest_inb(QTestState *s, uint16_t addr)
{
if (!serialize) {
return cpu_inb(addr);
} else {
return __real_qtest_inb(s, addr);
}
}
uint16_t __wrap_qtest_inw(QTestState *s, uint16_t addr)
{
if (!serialize) {
return cpu_inw(addr);
} else {
return __real_qtest_inw(s, addr);
}
}
uint32_t __wrap_qtest_inl(QTestState *s, uint16_t addr)
{
if (!serialize) {
return cpu_inl(addr);
} else {
return __real_qtest_inl(s, addr);
}
}
void __wrap_qtest_outb(QTestState *s, uint16_t addr, uint8_t value)
{
if (!serialize) {
cpu_outb(addr, value);
} else {
__real_qtest_outb(s, addr, value);
}
}
void __wrap_qtest_outw(QTestState *s, uint16_t addr, uint16_t value)
{
if (!serialize) {
cpu_outw(addr, value);
} else {
__real_qtest_outw(s, addr, value);
}
}
void __wrap_qtest_outl(QTestState *s, uint16_t addr, uint32_t value)
{
if (!serialize) {
cpu_outl(addr, value);
} else {
__real_qtest_outl(s, addr, value);
}
}
uint8_t __wrap_qtest_readb(QTestState *s, uint64_t addr)
{
uint8_t value;
if (!serialize) {
address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
&value, 1);
return value;
} else {
return __real_qtest_readb(s, addr);
}
}
uint16_t __wrap_qtest_readw(QTestState *s, uint64_t addr)
{
uint16_t value;
if (!serialize) {
address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
&value, 2);
return value;
} else {
return __real_qtest_readw(s, addr);
}
}
uint32_t __wrap_qtest_readl(QTestState *s, uint64_t addr)
{
uint32_t value;
if (!serialize) {
address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
&value, 4);
return value;
} else {
return __real_qtest_readl(s, addr);
}
}
uint64_t __wrap_qtest_readq(QTestState *s, uint64_t addr)
{
uint64_t value;
if (!serialize) {
address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
&value, 8);
return value;
} else {
return __real_qtest_readq(s, addr);
}
}
void __wrap_qtest_writeb(QTestState *s, uint64_t addr, uint8_t value)
{
if (!serialize) {
address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
&value, 1);
} else {
__real_qtest_writeb(s, addr, value);
}
}
void __wrap_qtest_writew(QTestState *s, uint64_t addr, uint16_t value)
{
if (!serialize) {
address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
&value, 2);
} else {
__real_qtest_writew(s, addr, value);
}
}
void __wrap_qtest_writel(QTestState *s, uint64_t addr, uint32_t value)
{
if (!serialize) {
address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
&value, 4);
} else {
__real_qtest_writel(s, addr, value);
}
}
void __wrap_qtest_writeq(QTestState *s, uint64_t addr, uint64_t value)
{
if (!serialize) {
address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
&value, 8);
} else {
__real_qtest_writeq(s, addr, value);
}
}
void __wrap_qtest_memread(QTestState *s, uint64_t addr, void *data, size_t size)
{
if (!serialize) {
address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED, data,
size);
} else {
__real_qtest_memread(s, addr, data, size);
}
}
void __wrap_qtest_bufread(QTestState *s, uint64_t addr, void *data, size_t size)
{
if (!serialize) {
address_space_read(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED, data,
size);
} else {
__real_qtest_bufread(s, addr, data, size);
}
}
void __wrap_qtest_memwrite(QTestState *s, uint64_t addr, const void *data,
size_t size)
{
if (!serialize) {
address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
data, size);
} else {
__real_qtest_memwrite(s, addr, data, size);
}
}
void __wrap_qtest_bufwrite(QTestState *s, uint64_t addr,
const void *data, size_t size)
{
if (!serialize) {
address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
data, size);
} else {
__real_qtest_bufwrite(s, addr, data, size);
}
}
void __wrap_qtest_memset(QTestState *s, uint64_t addr,
uint8_t patt, size_t size)
{
void *data;
if (!serialize) {
data = malloc(size);
memset(data, patt, size);
address_space_write(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
data, size);
} else {
__real_qtest_memset(s, addr, patt, size);
}
}
void fuzz_qtest_set_serialize(bool option)
{
serialize = option;
}

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -7,7 +7,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -7,7 +7,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@ -5,7 +5,7 @@
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2 as published by the Free Software Foundation.
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of