mirror of https://github.com/xemu-project/xemu.git
* configure and meson cleanups and fixes
* remove unnecessary #ifdef * SCSI and i386 fixes -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmG9sTYUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroMqAQf/bXVDN0gFTki4kPcycgTxnW8gDzMX dKFqh/mH+wnl9g/XBqP8t6+IOJQYFxCAIAzILX+kIDo0hW9RGkTtchGMk4k54IO5 HEK/vtZZHdkcmIbJBpoDRb78O7LvgB5bhI0XCdQb0fsuI43SnEsC0xhkL8b7Uhic lbVKRqEG15XLOsGeSaft+41AvARtjJ1Cd6UAZsXbHmSIP+G2865oeM+omrnvGeCk K/UHn5vLlQJzqs3/37UGnSgdWSxrmYp1HvPESErhReIWGblUZ+FEuzlZaE3qhFcL cyxaV1d4m/CmMVOirTNh63Khusfx7VXdxl4MGvvWeMoiH3auvBkCmhj1gw== =8LxX -----END PGP SIGNATURE----- Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging * configure and meson cleanups and fixes * remove unnecessary #ifdef * SCSI and i386 fixes # gpg: Signature made Sat 18 Dec 2021 02:00:22 AM PST # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [unknown] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: hw/i386/vmmouse: Require 'i8042' property to be set tests/qtest/fuzz-megasas-test: Add test for GitLab issue #521 hw/scsi/megasas: Fails command if SGL buffer overflows hw/scsi: Fix scsi_bus_init_named() docstring meson: add "check" argument to run_command cpu: remove unnecessary #ifdef CONFIG_TCG meson: reenable test-fdmon-epoll configure: remove DIRS configure: remove unnecessary symlinks configure, meson: move ARCH to meson.build meson: rename "arch" variable configure: unify x86_64 and x32 configure: unify ppc64 and ppc64le configure: unify two case statements on $cpu configure: move target detection before CPU detection configure: make $targetos lowercase, use windows instead of MINGW32 Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
212a33d3b0
|
@ -501,42 +501,93 @@ EOF
|
|||
}
|
||||
|
||||
if check_define __linux__ ; then
|
||||
targetos="Linux"
|
||||
targetos=linux
|
||||
elif check_define _WIN32 ; then
|
||||
targetos='MINGW32'
|
||||
targetos=windows
|
||||
elif check_define __OpenBSD__ ; then
|
||||
targetos='OpenBSD'
|
||||
targetos=openbsd
|
||||
elif check_define __sun__ ; then
|
||||
targetos='SunOS'
|
||||
targetos=sunos
|
||||
elif check_define __HAIKU__ ; then
|
||||
targetos='Haiku'
|
||||
targetos=haiku
|
||||
elif check_define __FreeBSD__ ; then
|
||||
targetos='FreeBSD'
|
||||
targetos=freebsd
|
||||
elif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then
|
||||
targetos='GNU/kFreeBSD'
|
||||
targetos=gnu/kfreebsd
|
||||
elif check_define __DragonFly__ ; then
|
||||
targetos='DragonFly'
|
||||
targetos=dragonfly
|
||||
elif check_define __NetBSD__; then
|
||||
targetos='NetBSD'
|
||||
targetos=netbsd
|
||||
elif check_define __APPLE__; then
|
||||
targetos='Darwin'
|
||||
targetos=darwin
|
||||
else
|
||||
# This is a fatal error, but don't report it yet, because we
|
||||
# might be going to just print the --help text, or it might
|
||||
# be the result of a missing compiler.
|
||||
targetos='bogus'
|
||||
targetos=bogus
|
||||
fi
|
||||
|
||||
# Some host OSes need non-standard checks for which CPU to use.
|
||||
# Note that these checks are broken for cross-compilation: if you're
|
||||
# cross-compiling to one of these OSes then you'll need to specify
|
||||
# the correct CPU with the --cpu option.
|
||||
# OS specific
|
||||
|
||||
case $targetos in
|
||||
SunOS)
|
||||
windows)
|
||||
mingw32="yes"
|
||||
plugins="no"
|
||||
pie="no"
|
||||
;;
|
||||
gnu/kfreebsd)
|
||||
bsd="yes"
|
||||
;;
|
||||
freebsd)
|
||||
bsd="yes"
|
||||
bsd_user="yes"
|
||||
make="${MAKE-gmake}"
|
||||
# needed for kinfo_getvmmap(3) in libutil.h
|
||||
;;
|
||||
dragonfly)
|
||||
bsd="yes"
|
||||
make="${MAKE-gmake}"
|
||||
;;
|
||||
netbsd)
|
||||
bsd="yes"
|
||||
make="${MAKE-gmake}"
|
||||
;;
|
||||
openbsd)
|
||||
bsd="yes"
|
||||
make="${MAKE-gmake}"
|
||||
;;
|
||||
darwin)
|
||||
bsd="yes"
|
||||
darwin="yes"
|
||||
# Disable attempts to use ObjectiveC features in os/object.h since they
|
||||
# won't work when we're compiling with gcc as a C compiler.
|
||||
QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
|
||||
;;
|
||||
sunos)
|
||||
solaris="yes"
|
||||
make="${MAKE-gmake}"
|
||||
smbd="${SMBD-/usr/sfw/sbin/smbd}"
|
||||
# needed for CMSG_ macros in sys/socket.h
|
||||
QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
|
||||
# needed for TIOCWIN* defines in termios.h
|
||||
QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
|
||||
# $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
|
||||
# Note that this check is broken for cross-compilation: if you're
|
||||
# cross-compiling to one of these OSes then you'll need to specify
|
||||
# the correct CPU with the --cpu option.
|
||||
if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
|
||||
cpu="x86_64"
|
||||
fi
|
||||
;;
|
||||
haiku)
|
||||
pie="no"
|
||||
QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -D_BSD_SOURCE -fPIC $QEMU_CFLAGS"
|
||||
;;
|
||||
linux)
|
||||
linux="yes"
|
||||
linux_user="yes"
|
||||
vhost_user=${default_feature:-yes}
|
||||
;;
|
||||
esac
|
||||
|
||||
if test ! -z "$cpu" ; then
|
||||
|
@ -584,96 +635,46 @@ else
|
|||
cpu=$(uname -m)
|
||||
fi
|
||||
|
||||
ARCH=
|
||||
# Normalise host CPU name and set ARCH.
|
||||
# Normalise host CPU name, set multilib cflags
|
||||
# Note that this case should only have supported host CPUs, not guests.
|
||||
case "$cpu" in
|
||||
ppc|ppc64|s390x|sparc64|x32|riscv)
|
||||
;;
|
||||
ppc64le)
|
||||
ARCH="ppc64"
|
||||
;;
|
||||
armv*b|armv*l|arm)
|
||||
cpu="arm" ;;
|
||||
|
||||
i386|i486|i586|i686|i86pc|BePC)
|
||||
cpu="i386"
|
||||
;;
|
||||
CPU_CFLAGS="-m32" ;;
|
||||
x32)
|
||||
cpu="x86_64"
|
||||
CPU_CFLAGS="-mx32" ;;
|
||||
x86_64|amd64)
|
||||
cpu="x86_64"
|
||||
;;
|
||||
armv*b|armv*l|arm)
|
||||
cpu="arm"
|
||||
;;
|
||||
aarch64)
|
||||
cpu="aarch64"
|
||||
;;
|
||||
# ??? Only extremely old AMD cpus do not have cmpxchg16b.
|
||||
# If we truly care, we should simply detect this case at
|
||||
# runtime and generate the fallback to serial emulation.
|
||||
CPU_CFLAGS="-m64 -mcx16" ;;
|
||||
|
||||
mips*)
|
||||
cpu="mips"
|
||||
;;
|
||||
cpu="mips" ;;
|
||||
|
||||
ppc)
|
||||
CPU_CFLAGS="-m32" ;;
|
||||
ppc64)
|
||||
CPU_CFLAGS="-m64 -mbig" ;;
|
||||
ppc64le)
|
||||
cpu="ppc64"
|
||||
CPU_CFLAGS="-m64 -mlittle" ;;
|
||||
|
||||
s390)
|
||||
CPU_CFLAGS="-m31" ;;
|
||||
s390x)
|
||||
CPU_CFLAGS="-m64" ;;
|
||||
|
||||
sparc|sun4[cdmuv])
|
||||
cpu="sparc"
|
||||
;;
|
||||
*)
|
||||
# This will result in either an error or falling back to TCI later
|
||||
ARCH=unknown
|
||||
;;
|
||||
esac
|
||||
if test -z "$ARCH"; then
|
||||
ARCH="$cpu"
|
||||
fi
|
||||
|
||||
# OS specific
|
||||
|
||||
case $targetos in
|
||||
MINGW32*)
|
||||
mingw32="yes"
|
||||
plugins="no"
|
||||
pie="no"
|
||||
;;
|
||||
GNU/kFreeBSD)
|
||||
bsd="yes"
|
||||
;;
|
||||
FreeBSD)
|
||||
bsd="yes"
|
||||
bsd_user="yes"
|
||||
make="${MAKE-gmake}"
|
||||
# needed for kinfo_getvmmap(3) in libutil.h
|
||||
;;
|
||||
DragonFly)
|
||||
bsd="yes"
|
||||
make="${MAKE-gmake}"
|
||||
;;
|
||||
NetBSD)
|
||||
bsd="yes"
|
||||
make="${MAKE-gmake}"
|
||||
;;
|
||||
OpenBSD)
|
||||
bsd="yes"
|
||||
make="${MAKE-gmake}"
|
||||
;;
|
||||
Darwin)
|
||||
bsd="yes"
|
||||
darwin="yes"
|
||||
# Disable attempts to use ObjectiveC features in os/object.h since they
|
||||
# won't work when we're compiling with gcc as a C compiler.
|
||||
QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
|
||||
;;
|
||||
SunOS)
|
||||
solaris="yes"
|
||||
make="${MAKE-gmake}"
|
||||
smbd="${SMBD-/usr/sfw/sbin/smbd}"
|
||||
# needed for CMSG_ macros in sys/socket.h
|
||||
QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
|
||||
# needed for TIOCWIN* defines in termios.h
|
||||
QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
|
||||
;;
|
||||
Haiku)
|
||||
pie="no"
|
||||
QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -D_BSD_SOURCE -fPIC $QEMU_CFLAGS"
|
||||
;;
|
||||
Linux)
|
||||
linux="yes"
|
||||
linux_user="yes"
|
||||
vhost_user=${default_feature:-yes}
|
||||
;;
|
||||
CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc" ;;
|
||||
sparc64)
|
||||
CPU_CFLAGS="-m64 -mcpu=ultrasparc" ;;
|
||||
esac
|
||||
|
||||
: ${make=${MAKE-make}}
|
||||
|
@ -1257,24 +1258,6 @@ local_statedir="${local_statedir:-$prefix/var}"
|
|||
firmwarepath="${firmwarepath:-$datadir/qemu-firmware}"
|
||||
localedir="${localedir:-$datadir/locale}"
|
||||
|
||||
case "$cpu" in
|
||||
ppc) CPU_CFLAGS="-m32" ;;
|
||||
ppc64) CPU_CFLAGS="-m64" ;;
|
||||
sparc) CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc" ;;
|
||||
sparc64) CPU_CFLAGS="-m64 -mcpu=ultrasparc" ;;
|
||||
s390) CPU_CFLAGS="-m31" ;;
|
||||
s390x) CPU_CFLAGS="-m64" ;;
|
||||
i386) CPU_CFLAGS="-m32" ;;
|
||||
x32) CPU_CFLAGS="-mx32" ;;
|
||||
|
||||
# ??? Only extremely old AMD cpus do not have cmpxchg16b.
|
||||
# If we truly care, we should simply detect this case at
|
||||
# runtime and generate the fallback to serial emulation.
|
||||
x86_64) CPU_CFLAGS="-m64 -mcx16" ;;
|
||||
|
||||
# No special flags required for other host CPUs
|
||||
esac
|
||||
|
||||
if eval test -z "\${cross_cc_$cpu}"; then
|
||||
eval "cross_cc_${cpu}=\$cc"
|
||||
cross_cc_vars="$cross_cc_vars cross_cc_${cpu}"
|
||||
|
@ -3334,8 +3317,8 @@ QEMU_GA_MSI_MINGW_DLL_PATH="$($pkg_config --variable=prefix glib-2.0)/bin"
|
|||
# Mac OS X ships with a broken assembler
|
||||
roms=
|
||||
if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
|
||||
test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \
|
||||
test "$targetos" != "Haiku" && test "$softmmu" = yes ; then
|
||||
test "$targetos" != "darwin" && test "$targetos" != "sunos" && \
|
||||
test "$targetos" != "haiku" && test "$softmmu" = yes ; then
|
||||
# Different host OS linkers have different ideas about the name of the ELF
|
||||
# emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
|
||||
# variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
|
||||
|
@ -3412,8 +3395,6 @@ echo "GIT=$git" >> $config_host_mak
|
|||
echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
|
||||
echo "GIT_SUBMODULES_ACTION=$git_submodules_action" >> $config_host_mak
|
||||
|
||||
echo "ARCH=$ARCH" >> $config_host_mak
|
||||
|
||||
if test "$debug_tcg" = "yes" ; then
|
||||
echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
|
||||
fi
|
||||
|
@ -3726,10 +3707,10 @@ fi
|
|||
if test "$linux" = "yes" ; then
|
||||
mkdir -p linux-headers
|
||||
case "$cpu" in
|
||||
i386|x86_64|x32)
|
||||
i386|x86_64)
|
||||
linux_arch=x86
|
||||
;;
|
||||
ppc|ppc64|ppc64le)
|
||||
ppc|ppc64)
|
||||
linux_arch=powerpc
|
||||
;;
|
||||
s390x)
|
||||
|
@ -3781,7 +3762,6 @@ if test "$safe_stack" = "yes"; then
|
|||
fi
|
||||
|
||||
# If we're using a separate build tree, set it up now.
|
||||
# DIRS are directories which we simply mkdir in the build tree;
|
||||
# LINKS are things to symlink back into the source tree
|
||||
# (these can be both files and directories).
|
||||
# Caution: do not add files or directories here using wildcards. This
|
||||
|
@ -3793,12 +3773,6 @@ fi
|
|||
# UNLINK is used to remove symlinks from older development versions
|
||||
# that might get into the way when doing "git update" without doing
|
||||
# a "make distclean" in between.
|
||||
DIRS="tests tests/tcg tests/qapi-schema tests/qtest/libqos"
|
||||
DIRS="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph"
|
||||
DIRS="$DIRS docs docs/interop fsdev scsi"
|
||||
DIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
|
||||
DIRS="$DIRS roms/seabios"
|
||||
DIRS="$DIRS contrib/plugins/"
|
||||
LINKS="Makefile"
|
||||
LINKS="$LINKS tests/tcg/Makefile.target"
|
||||
LINKS="$LINKS pc-bios/optionrom/Makefile"
|
||||
|
@ -3820,16 +3794,15 @@ for bios_file in \
|
|||
$source_path/pc-bios/*.img \
|
||||
$source_path/pc-bios/openbios-* \
|
||||
$source_path/pc-bios/u-boot.* \
|
||||
$source_path/pc-bios/edk2-*.fd.bz2 \
|
||||
$source_path/pc-bios/palcode-* \
|
||||
$source_path/pc-bios/qemu_vga.ndrv
|
||||
|
||||
do
|
||||
LINKS="$LINKS pc-bios/$(basename $bios_file)"
|
||||
done
|
||||
mkdir -p $DIRS
|
||||
for f in $LINKS ; do
|
||||
if [ -e "$source_path/$f" ]; then
|
||||
mkdir -p `dirname ./$f`
|
||||
symlink "$source_path/$f" "$f"
|
||||
fi
|
||||
done
|
||||
|
@ -3903,27 +3876,13 @@ if test "$skip_meson" = no; then
|
|||
if test "$cross_compile" = "yes"; then
|
||||
cross_arg="--cross-file config-meson.cross"
|
||||
echo "[host_machine]" >> $cross
|
||||
if test "$mingw32" = "yes" ; then
|
||||
echo "system = 'windows'" >> $cross
|
||||
fi
|
||||
if test "$linux" = "yes" ; then
|
||||
echo "system = 'linux'" >> $cross
|
||||
fi
|
||||
if test "$darwin" = "yes" ; then
|
||||
echo "system = 'darwin'" >> $cross
|
||||
fi
|
||||
case "$ARCH" in
|
||||
echo "system = '$targetos'" >> $cross
|
||||
case "$cpu" in
|
||||
i386)
|
||||
echo "cpu_family = 'x86'" >> $cross
|
||||
;;
|
||||
x86_64|x32)
|
||||
echo "cpu_family = 'x86_64'" >> $cross
|
||||
;;
|
||||
ppc64le)
|
||||
echo "cpu_family = 'ppc64'" >> $cross
|
||||
;;
|
||||
*)
|
||||
echo "cpu_family = '$ARCH'" >> $cross
|
||||
echo "cpu_family = '$cpu'" >> $cross
|
||||
;;
|
||||
esac
|
||||
echo "cpu = '$cpu'" >> $cross
|
||||
|
|
5
cpu.c
5
cpu.c
|
@ -137,12 +137,10 @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp)
|
|||
if (!accel_cpu_realizefn(cpu, errp)) {
|
||||
return;
|
||||
}
|
||||
#ifdef CONFIG_TCG
|
||||
/* NB: errp parameter is unused currently */
|
||||
if (tcg_enabled()) {
|
||||
tcg_exec_realizefn(cpu, errp);
|
||||
}
|
||||
#endif /* CONFIG_TCG */
|
||||
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
assert(qdev_get_vmsd(DEVICE(cpu)) == NULL ||
|
||||
|
@ -169,12 +167,9 @@ void cpu_exec_unrealizefn(CPUState *cpu)
|
|||
vmstate_unregister(NULL, &vmstate_cpu_common, cpu);
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_TCG
|
||||
/* NB: errp parameter is unused currently */
|
||||
if (tcg_enabled()) {
|
||||
tcg_exec_unrealizefn(cpu);
|
||||
}
|
||||
#endif /* CONFIG_TCG */
|
||||
|
||||
cpu_list_remove(cpu);
|
||||
}
|
||||
|
|
|
@ -18,12 +18,12 @@ if sphinx_build.found()
|
|||
# This is a bit awkward but works: create a trivial document and
|
||||
# try to run it with our configuration file (which enforces a
|
||||
# version requirement). This will fail if sphinx-build is too old.
|
||||
run_command('mkdir', ['-p', tmpdir / 'sphinx'])
|
||||
run_command('touch', [tmpdir / 'sphinx/index.rst'])
|
||||
run_command('mkdir', ['-p', tmpdir / 'sphinx'], check: true)
|
||||
run_command('touch', [tmpdir / 'sphinx/index.rst'], check: true)
|
||||
sphinx_build_test_out = run_command(SPHINX_ARGS + [
|
||||
'-c', meson.current_source_dir(),
|
||||
'-b', 'html', tmpdir / 'sphinx',
|
||||
tmpdir / 'sphinx/out'])
|
||||
tmpdir / 'sphinx/out'], check: false)
|
||||
build_docs = (sphinx_build_test_out.returncode() == 0)
|
||||
|
||||
if not build_docs
|
||||
|
|
|
@ -286,6 +286,10 @@ static void vmmouse_realizefn(DeviceState *dev, Error **errp)
|
|||
|
||||
DPRINTF("vmmouse_init\n");
|
||||
|
||||
if (!s->i8042) {
|
||||
error_setg(errp, "'i8042' link is not set");
|
||||
return;
|
||||
}
|
||||
if (!object_resolve_path_type("", TYPE_VMPORT, NULL)) {
|
||||
error_setg(errp, "vmmouse needs a machine with vmport");
|
||||
return;
|
||||
|
|
|
@ -303,6 +303,7 @@ static int megasas_map_sgl(MegasasState *s, MegasasCmd *cmd, union mfi_sgl *sgl)
|
|||
}
|
||||
if (cmd->iov_size > iov_size) {
|
||||
trace_megasas_iovec_overflow(cmd->index, iov_size, cmd->iov_size);
|
||||
goto unmap;
|
||||
} else if (cmd->iov_size < iov_size) {
|
||||
trace_megasas_iovec_underflow(cmd->index, iov_size, cmd->iov_size);
|
||||
}
|
||||
|
|
|
@ -437,12 +437,10 @@ void dump_opcount_info(GString *buf);
|
|||
|
||||
#endif /* !CONFIG_USER_ONLY */
|
||||
|
||||
#ifdef CONFIG_TCG
|
||||
/* accel/tcg/cpu-exec.c */
|
||||
int cpu_exec(CPUState *cpu);
|
||||
void tcg_exec_realizefn(CPUState *cpu, Error **errp);
|
||||
void tcg_exec_unrealizefn(CPUState *cpu);
|
||||
#endif /* CONFIG_TCG */
|
||||
|
||||
/* Returns: 0 on success, -1 on error */
|
||||
int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
|
||||
|
|
|
@ -158,7 +158,7 @@ struct SCSIBus {
|
|||
* provided by the caller. It is the caller's responsibility to make
|
||||
* sure that name does not clash with the name of any other bus in the
|
||||
* system. Unless you need the new bus to have a specific name, you
|
||||
* should use scsi_bus_new() instead.
|
||||
* should use scsi_bus_init() instead.
|
||||
*/
|
||||
void scsi_bus_init_named(SCSIBus *bus, size_t bus_size, DeviceState *host,
|
||||
const SCSIBusInfo *info, const char *bus_name);
|
||||
|
|
39
meson.build
39
meson.build
|
@ -67,6 +67,14 @@ endif
|
|||
|
||||
targetos = host_machine.system()
|
||||
|
||||
if cpu not in supported_cpus
|
||||
host_arch = 'unknown'
|
||||
elif cpu == 'x86'
|
||||
host_arch = 'i386'
|
||||
else
|
||||
host_arch = cpu
|
||||
endif
|
||||
|
||||
if cpu in ['x86', 'x86_64']
|
||||
kvm_targets = ['i386-softmmu', 'x86_64-softmmu']
|
||||
elif cpu == 'aarch64'
|
||||
|
@ -335,9 +343,9 @@ if targetos == 'netbsd'
|
|||
endif
|
||||
endif
|
||||
|
||||
tcg_arch = config_host['ARCH']
|
||||
tcg_arch = host_arch
|
||||
if not get_option('tcg').disabled()
|
||||
if cpu not in supported_cpus
|
||||
if host_arch == 'unknown'
|
||||
if get_option('tcg_interpreter')
|
||||
warning('Unsupported CPU @0@, will use TCG with TCI (slow)'.format(cpu))
|
||||
else
|
||||
|
@ -353,11 +361,11 @@ if not get_option('tcg').disabled()
|
|||
endif
|
||||
if get_option('tcg_interpreter')
|
||||
tcg_arch = 'tci'
|
||||
elif config_host['ARCH'] == 'sparc64'
|
||||
elif host_arch == 'sparc64'
|
||||
tcg_arch = 'sparc'
|
||||
elif config_host['ARCH'] in ['x86_64', 'x32']
|
||||
elif host_arch == 'x86_64'
|
||||
tcg_arch = 'i386'
|
||||
elif config_host['ARCH'] == 'ppc64'
|
||||
elif host_arch == 'ppc64'
|
||||
tcg_arch = 'ppc'
|
||||
endif
|
||||
add_project_arguments('-iquote', meson.current_source_dir() / 'tcg' / tcg_arch,
|
||||
|
@ -1426,6 +1434,8 @@ config_host_data.set_quoted('CONFIG_QEMU_LOCALSTATEDIR', get_option('prefix') /
|
|||
config_host_data.set_quoted('CONFIG_QEMU_MODDIR', get_option('prefix') / qemu_moddir)
|
||||
config_host_data.set_quoted('CONFIG_SYSCONFDIR', get_option('prefix') / get_option('sysconfdir'))
|
||||
|
||||
config_host_data.set('HOST_' + host_arch.to_upper(), 1)
|
||||
|
||||
config_host_data.set('CONFIG_ATTR', libattr.found())
|
||||
config_host_data.set('CONFIG_BRLAPI', brlapi.found())
|
||||
config_host_data.set('CONFIG_COCOA', cocoa.found())
|
||||
|
@ -1775,8 +1785,6 @@ foreach k, v: config_host
|
|||
v = '"' + '", "'.join(v.split()) + '", '
|
||||
endif
|
||||
config_host_data.set(k, v)
|
||||
elif k == 'ARCH'
|
||||
config_host_data.set('HOST_' + v.to_upper(), 1)
|
||||
elif strings.contains(k)
|
||||
config_host_data.set_quoted(k, v)
|
||||
elif k.startswith('CONFIG_')
|
||||
|
@ -1806,7 +1814,6 @@ disassemblers = {
|
|||
'hppa' : ['CONFIG_HPPA_DIS'],
|
||||
'i386' : ['CONFIG_I386_DIS'],
|
||||
'x86_64' : ['CONFIG_I386_DIS'],
|
||||
'x32' : ['CONFIG_I386_DIS'],
|
||||
'm68k' : ['CONFIG_M68K_DIS'],
|
||||
'microblaze' : ['CONFIG_MICROBLAZE_DIS'],
|
||||
'mips' : ['CONFIG_MIPS_DIS'],
|
||||
|
@ -1920,7 +1927,7 @@ foreach target : target_dirs
|
|||
endif
|
||||
|
||||
foreach k, v: disassemblers
|
||||
if config_host['ARCH'].startswith(k) or config_target['TARGET_BASE_ARCH'].startswith(k)
|
||||
if host_arch.startswith(k) or config_target['TARGET_BASE_ARCH'].startswith(k)
|
||||
foreach sym: v
|
||||
config_target += { sym: 'y' }
|
||||
config_all_disas += { sym: 'y' }
|
||||
|
@ -2851,7 +2858,7 @@ emulators = {}
|
|||
foreach target : target_dirs
|
||||
config_target = config_target_mak[target]
|
||||
target_name = config_target['TARGET_NAME']
|
||||
arch = config_target['TARGET_BASE_ARCH']
|
||||
target_base_arch = config_target['TARGET_BASE_ARCH']
|
||||
arch_srcs = [config_target_h[target]]
|
||||
arch_deps = []
|
||||
c_args = ['-DNEED_CPU_H',
|
||||
|
@ -2867,11 +2874,11 @@ foreach target : target_dirs
|
|||
if target.endswith('-softmmu')
|
||||
qemu_target_name = 'qemu-system-' + target_name
|
||||
target_type='system'
|
||||
t = target_softmmu_arch[arch].apply(config_target, strict: false)
|
||||
t = target_softmmu_arch[target_base_arch].apply(config_target, strict: false)
|
||||
arch_srcs += t.sources()
|
||||
arch_deps += t.dependencies()
|
||||
|
||||
hw_dir = target_name == 'sparc64' ? 'sparc64' : arch
|
||||
hw_dir = target_name == 'sparc64' ? 'sparc64' : target_base_arch
|
||||
hw = hw_arch[hw_dir].apply(config_target, strict: false)
|
||||
arch_srcs += hw.sources()
|
||||
arch_deps += hw.dependencies()
|
||||
|
@ -2882,14 +2889,14 @@ foreach target : target_dirs
|
|||
abi = config_target['TARGET_ABI_DIR']
|
||||
target_type='user'
|
||||
qemu_target_name = 'qemu-' + target_name
|
||||
if arch in target_user_arch
|
||||
t = target_user_arch[arch].apply(config_target, strict: false)
|
||||
if target_base_arch in target_user_arch
|
||||
t = target_user_arch[target_base_arch].apply(config_target, strict: false)
|
||||
arch_srcs += t.sources()
|
||||
arch_deps += t.dependencies()
|
||||
endif
|
||||
if 'CONFIG_LINUX_USER' in config_target
|
||||
base_dir = 'linux-user'
|
||||
target_inc += include_directories('linux-user/host/' / config_host['ARCH'])
|
||||
target_inc += include_directories('linux-user/host/' / host_arch)
|
||||
endif
|
||||
if 'CONFIG_BSD_USER' in config_target
|
||||
base_dir = 'bsd-user'
|
||||
|
@ -2921,7 +2928,7 @@ foreach target : target_dirs
|
|||
arch_srcs += gdbstub_xml
|
||||
endif
|
||||
|
||||
t = target_arch[arch].apply(config_target, strict: false)
|
||||
t = target_arch[target_base_arch].apply(config_target, strict: false)
|
||||
arch_srcs += t.sources()
|
||||
arch_deps += t.dependencies()
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ if unpack_edk2_blobs
|
|||
roms += custom_target(f,
|
||||
build_by_default: have_system,
|
||||
output: f,
|
||||
input: '@0@.bz2'.format(f),
|
||||
input: files('@0@.bz2'.format(f)),
|
||||
capture: true,
|
||||
install: get_option('install_blobs'),
|
||||
install_dir: qemu_datadir,
|
||||
|
|
|
@ -34,6 +34,34 @@ static void test_lp1878263_megasas_zero_iov_cnt(void)
|
|||
qtest_quit(s);
|
||||
}
|
||||
|
||||
/*
|
||||
* Overflow SGL buffer.
|
||||
* https://gitlab.com/qemu-project/qemu/-/issues/521
|
||||
*/
|
||||
static void test_gitlab_issue521_megasas_sgl_ovf(void)
|
||||
{
|
||||
QTestState *s = qtest_init("-display none -m 32M -machine q35 "
|
||||
"-nodefaults -device megasas "
|
||||
"-device scsi-cd,drive=null0 "
|
||||
"-blockdev "
|
||||
"driver=null-co,read-zeroes=on,node-name=null0");
|
||||
qtest_outl(s, 0xcf8, 0x80000818);
|
||||
qtest_outl(s, 0xcfc, 0xc000);
|
||||
qtest_outl(s, 0xcf8, 0x80000804);
|
||||
qtest_outw(s, 0xcfc, 0x05);
|
||||
qtest_bufwrite(s, 0x0, "\x01", 0x1);
|
||||
qtest_bufwrite(s, 0x7, "\x01", 0x1);
|
||||
qtest_bufwrite(s, 0x10, "\x02", 0x1);
|
||||
qtest_bufwrite(s, 0x16, "\x01", 0x1);
|
||||
qtest_bufwrite(s, 0x28, "\x01", 0x1);
|
||||
qtest_bufwrite(s, 0x33, "\x01", 0x1);
|
||||
qtest_outb(s, 0xc040, 0x0);
|
||||
qtest_outb(s, 0xc040, 0x20);
|
||||
qtest_outl(s, 0xc040, 0x20000000);
|
||||
qtest_outb(s, 0xc040, 0x20);
|
||||
qtest_quit(s);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const char *arch = qtest_get_arch();
|
||||
|
@ -43,6 +71,8 @@ int main(int argc, char **argv)
|
|||
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
|
||||
qtest_add_func("fuzz/test_lp1878263_megasas_zero_iov_cnt",
|
||||
test_lp1878263_megasas_zero_iov_cnt);
|
||||
qtest_add_func("fuzz/gitlab_issue521_megasas_sgl_ovf",
|
||||
test_gitlab_issue521_megasas_sgl_ovf);
|
||||
}
|
||||
|
||||
return g_test_run();
|
||||
|
|
|
@ -64,7 +64,9 @@ fi
|
|||
: ${cross_cc_ppc="powerpc-linux-gnu-gcc"}
|
||||
: ${cross_cc_cflags_ppc="-m32"}
|
||||
: ${cross_cc_ppc64="powerpc64-linux-gnu-gcc"}
|
||||
: ${cross_cc_ppc64le="powerpc64le-linux-gnu-gcc"}
|
||||
: ${cross_cc_cflags_ppc64="-m64 -mbig"}
|
||||
: ${cross_cc_ppc64le="$cross_cc_ppc64"}
|
||||
: ${cross_cc_cflags_ppc64le="-m64 -mlittle"}
|
||||
: ${cross_cc_riscv64="riscv64-linux-gnu-gcc"}
|
||||
: ${cross_cc_s390x="s390x-linux-gnu-gcc"}
|
||||
: ${cross_cc_sh4="sh4-linux-gnu-gcc"}
|
||||
|
|
|
@ -112,7 +112,7 @@ if have_block
|
|||
if nettle.found() or gcrypt.found()
|
||||
tests += {'test-crypto-pbkdf': [io]}
|
||||
endif
|
||||
if 'CONFIG_EPOLL_CREATE1' in config_host
|
||||
if config_host_data.get('CONFIG_EPOLL_CREATE1')
|
||||
tests += {'test-fdmon-epoll': [testblock]}
|
||||
endif
|
||||
endif
|
||||
|
|
Loading…
Reference in New Issue