meson: link emulators without Makefile.target
The binaries move to the root directory, e.g. qemu-system-i386 or qemu-arm. This requires changes to qtests, CI, etc. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
f556b4a10d
commit
64ed6f92ff
@ -265,9 +265,9 @@ build-tci:
|
|||||||
- make run-tcg-tests-x86_64-softmmu
|
- make run-tcg-tests-x86_64-softmmu
|
||||||
- make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
|
- make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
|
||||||
- for tg in $TARGETS ; do
|
- for tg in $TARGETS ; do
|
||||||
export QTEST_QEMU_BINARY="${tg}-softmmu/qemu-system-${tg}" ;
|
export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
|
||||||
./tests/qtest/boot-serial-test || exit 1 ;
|
./tests/qtest/boot-serial-test || exit 1 ;
|
||||||
./tests/qtest/cdrom-test || exit 1 ;
|
./tests/qtest/cdrom-test || exit 1 ;
|
||||||
done
|
done
|
||||||
- QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
|
- QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
|
||||||
- QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x" ./tests/qtest/pxe-test -m slow
|
- QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
|
||||||
|
35
Makefile
35
Makefile
@ -121,9 +121,6 @@ include $(SRC_PATH)/rules.mak
|
|||||||
# lor is defined in rules.mak
|
# lor is defined in rules.mak
|
||||||
CONFIG_BLOCK := $(call lor,$(CONFIG_SOFTMMU),$(CONFIG_TOOLS))
|
CONFIG_BLOCK := $(call lor,$(CONFIG_SOFTMMU),$(CONFIG_TOOLS))
|
||||||
|
|
||||||
generated-files-y += target/s390x/gen-features.h
|
|
||||||
target/s390x/gen-features.h: Makefile.ninja
|
|
||||||
|
|
||||||
generated-files-y += .git-submodule-status
|
generated-files-y += .git-submodule-status
|
||||||
|
|
||||||
# Don't try to regenerate Makefile or configure
|
# Don't try to regenerate Makefile or configure
|
||||||
@ -187,29 +184,6 @@ config-host.h-timestamp: config-host.mak
|
|||||||
|
|
||||||
TARGET_DIRS_RULES := $(foreach t, all fuzz clean install, $(addsuffix /$(t), $(TARGET_DIRS)))
|
TARGET_DIRS_RULES := $(foreach t, all fuzz clean install, $(addsuffix /$(t), $(TARGET_DIRS)))
|
||||||
|
|
||||||
SOFTMMU_ALL_RULES=$(filter %-softmmu/all, $(TARGET_DIRS_RULES))
|
|
||||||
$(SOFTMMU_ALL_RULES): $(authz-obj-y)
|
|
||||||
$(SOFTMMU_ALL_RULES): $(block-obj-y)
|
|
||||||
$(SOFTMMU_ALL_RULES): $(chardev-obj-y)
|
|
||||||
$(SOFTMMU_ALL_RULES): $(crypto-obj-y)
|
|
||||||
$(SOFTMMU_ALL_RULES): $(io-obj-y)
|
|
||||||
$(SOFTMMU_ALL_RULES): $(qom-obj-y)
|
|
||||||
$(SOFTMMU_ALL_RULES): config-all-devices.mak
|
|
||||||
|
|
||||||
SOFTMMU_FUZZ_RULES=$(filter %-softmmu/fuzz, $(TARGET_DIRS_RULES))
|
|
||||||
$(SOFTMMU_FUZZ_RULES): $(authz-obj-y)
|
|
||||||
$(SOFTMMU_FUZZ_RULES): $(block-obj-y)
|
|
||||||
$(SOFTMMU_FUZZ_RULES): $(chardev-obj-y)
|
|
||||||
$(SOFTMMU_FUZZ_RULES): $(crypto-obj-y)
|
|
||||||
$(SOFTMMU_FUZZ_RULES): $(io-obj-y)
|
|
||||||
$(SOFTMMU_FUZZ_RULES): config-all-devices.mak
|
|
||||||
$(SOFTMMU_FUZZ_RULES): $(edk2-decompressed)
|
|
||||||
|
|
||||||
# meson: this is sub-optimal but going away after conversion
|
|
||||||
TARGET_DEPS = $(patsubst %,%-config-target.h, $(TARGET_DIRS))
|
|
||||||
TARGET_DEPS += $(patsubst %,%-config-devices.h, $(filter %-softmmu,$(TARGET_DIRS)))
|
|
||||||
TARGET_DEPS += $(patsubst %,libqemu-%.fa, $(TARGET_DIRS))
|
|
||||||
|
|
||||||
.PHONY: $(TARGET_DIRS_RULES)
|
.PHONY: $(TARGET_DIRS_RULES)
|
||||||
# The $(TARGET_DIRS_RULES) are of the form SUBDIR/GOAL, so that
|
# The $(TARGET_DIRS_RULES) are of the form SUBDIR/GOAL, so that
|
||||||
# $(dir $@) yields the sub-directory, and $(notdir $@) yields the sub-goal
|
# $(dir $@) yields the sub-directory, and $(notdir $@) yields the sub-goal
|
||||||
@ -252,11 +226,7 @@ slirp/all: .git-submodule-status
|
|||||||
CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" \
|
CC="$(CC)" AR="$(AR)" LD="$(LD)" RANLIB="$(RANLIB)" \
|
||||||
CFLAGS="$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS="$(QEMU_LDFLAGS)")
|
CFLAGS="$(QEMU_CFLAGS) $(CFLAGS)" LDFLAGS="$(QEMU_LDFLAGS)")
|
||||||
|
|
||||||
$(filter %/all, $(TARGET_DIRS_RULES)): libqemuutil.a $(common-obj-y) \
|
$(filter %/all, $(TARGET_DIRS_RULES)):
|
||||||
$(qom-obj-y) block.syms qemu.syms
|
|
||||||
|
|
||||||
$(filter %/fuzz, $(TARGET_DIRS_RULES)): libqemuutil.a $(common-obj-y) \
|
|
||||||
$(qom-obj-y) $(crypto-user-obj-$(CONFIG_USER_ONLY))
|
|
||||||
|
|
||||||
ROM_DIRS = $(addprefix pc-bios/, $(ROMS))
|
ROM_DIRS = $(addprefix pc-bios/, $(ROMS))
|
||||||
ROM_DIRS_RULES=$(foreach t, all clean, $(addsuffix /$(t), $(ROM_DIRS)))
|
ROM_DIRS_RULES=$(foreach t, all clean, $(addsuffix /$(t), $(ROM_DIRS)))
|
||||||
@ -278,8 +248,6 @@ Makefile: $(version-obj-y)
|
|||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
COMMON_LDADDS = libqemuutil.a
|
|
||||||
|
|
||||||
clean: recurse-clean ninja-clean clean-ctlist
|
clean: recurse-clean ninja-clean clean-ctlist
|
||||||
-test -f ninjatool && ./ninjatool $(if $(V),-v,) -t clean
|
-test -f ninjatool && ./ninjatool $(if $(V),-v,) -t clean
|
||||||
# avoid old build problems by removing potentially incorrect old files
|
# avoid old build problems by removing potentially incorrect old files
|
||||||
@ -313,6 +281,7 @@ distclean: clean ninja-distclean
|
|||||||
rm -f po/*.mo tests/qemu-iotests/common.env
|
rm -f po/*.mo tests/qemu-iotests/common.env
|
||||||
rm -f roms/seabios/config.mak roms/vgabios/config.mak
|
rm -f roms/seabios/config.mak roms/vgabios/config.mak
|
||||||
rm -f qemu-plugins-ld.symbols qemu-plugins-ld64.symbols
|
rm -f qemu-plugins-ld.symbols qemu-plugins-ld64.symbols
|
||||||
|
rm -f *-config-target.h *-config-devices.mak *-config-devices.h
|
||||||
rm -rf meson-private meson-logs meson-info compile_commands.json
|
rm -rf meson-private meson-logs meson-info compile_commands.json
|
||||||
rm -f Makefile.ninja ninjatool ninjatool.stamp Makefile.mtest
|
rm -f Makefile.ninja ninjatool ninjatool.stamp Makefile.mtest
|
||||||
rm -f config.log
|
rm -f config.log
|
||||||
|
@ -33,38 +33,6 @@ io-obj-y = io/libio.fa
|
|||||||
|
|
||||||
endif # CONFIG_SOFTMMU or CONFIG_TOOLS
|
endif # CONFIG_SOFTMMU or CONFIG_TOOLS
|
||||||
|
|
||||||
######################################################################
|
|
||||||
# Target independent part of system emulation. The long term path is to
|
|
||||||
# suppress *all* target specific code in case of system emulation, i.e. a
|
|
||||||
# single QEMU executable should support all CPUs and machines.
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_SOFTMMU),y)
|
|
||||||
common-obj-y =
|
|
||||||
|
|
||||||
common-obj-$(CONFIG_AUDIO_ALSA) += audio-alsa$(DSOSUF)
|
|
||||||
common-obj-$(CONFIG_AUDIO_OSS) += audio-oss$(DSOSUF)
|
|
||||||
common-obj-$(CONFIG_AUDIO_PA) += audio-pa$(DSOSUF)
|
|
||||||
common-obj-$(CONFIG_AUDIO_SDL) += audio-sdl$(DSOSUF)
|
|
||||||
|
|
||||||
common-obj-$(if $(CONFIG_CURSES),m) += ui-curses$(DSOSUF)
|
|
||||||
common-obj-$(if $(CONFIG_GTK),m) += ui-gtk$(DSOSUF)
|
|
||||||
common-obj-$(if $(CONFIG_SDL),m) += ui-sdl$(DSOSUF)
|
|
||||||
common-obj-$(if $(CONFIG_SPICE),m) += ui-spice-app$(DSOSUF)
|
|
||||||
|
|
||||||
common-obj-$(if $(CONFIG_CURL),m) += block-curl$(DSOSUF)
|
|
||||||
common-obj-$(if $(CONFIG_GLUSTERFS),m) += block-gluster$(DSOSUF)
|
|
||||||
common-obj-$(if $(CONFIG_LIBISCSI),m) += block-iscsi$(DSOSUF)
|
|
||||||
common-obj-$(if $(CONFIG_LIBNFS),m) += block-nfs$(DSOSUF)
|
|
||||||
common-obj-$(if $(CONFIG_LIBSSH),m) += block-ssh$(DSOSUF)
|
|
||||||
common-obj-$(if $(CONFIG_RBD),m) += block-rbd$(DSOSUF)
|
|
||||||
|
|
||||||
common-obj-$(if $(CONFIG_LZFSE),m) += block-dmg-lzfse$(DSOSUF)
|
|
||||||
common-obj-$(if $(and $(CONFIG_BZIP2),$(CONFIG_DMG)),m) += block-dmg-bz2$(DSOSUF)
|
|
||||||
|
|
||||||
common-obj-y += libqmp.fa
|
|
||||||
|
|
||||||
endif # CONFIG_SOFTMMU
|
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
# Resource file for Windows executables
|
# Resource file for Windows executables
|
||||||
version-obj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.o
|
version-obj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.o
|
||||||
|
153
Makefile.target
153
Makefile.target
@ -6,43 +6,16 @@ include ../config-host.mak
|
|||||||
include config-target.mak
|
include config-target.mak
|
||||||
include $(SRC_PATH)/rules.mak
|
include $(SRC_PATH)/rules.mak
|
||||||
|
|
||||||
FULL_TARGET_NAME=$(TARGET_NAME)-$(if $(CONFIG_SOFTMMU),softmmu,linux-user)
|
|
||||||
|
|
||||||
ifdef CONFIG_SOFTMMU
|
|
||||||
include ../$(FULL_TARGET_NAME)-config-devices.mak
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(call set-vpath, $(SRC_PATH):$(BUILD_DIR))
|
$(call set-vpath, $(SRC_PATH):$(BUILD_DIR))
|
||||||
ifdef CONFIG_LINUX
|
|
||||||
QEMU_CFLAGS += -isystem ../linux-headers
|
|
||||||
endif
|
|
||||||
QEMU_CFLAGS += -iquote .. -iquote $(SRC_PATH)/target/$(TARGET_BASE_ARCH) -DNEED_CPU_H
|
|
||||||
|
|
||||||
QEMU_CFLAGS+=-iquote $(SRC_PATH)/include
|
|
||||||
|
|
||||||
QEMU_CFLAGS += -DCONFIG_TARGET=\"../$(FULL_TARGET_NAME)-config-target.h\"
|
|
||||||
QEMU_CFLAGS += -DCONFIG_DEVICES=\"../$(FULL_TARGET_NAME)-config-devices.h\"
|
|
||||||
|
|
||||||
ifdef CONFIG_USER_ONLY
|
ifdef CONFIG_USER_ONLY
|
||||||
# user emulator name
|
# user emulator name
|
||||||
QEMU_PROG=qemu-$(TARGET_NAME)
|
QEMU_PROG=qemu-$(TARGET_NAME)
|
||||||
QEMU_PROG_BUILD = $(QEMU_PROG)
|
|
||||||
else
|
else
|
||||||
# system emulator name
|
# system emulator name
|
||||||
QEMU_PROG=qemu-system-$(TARGET_NAME)$(EXESUF)
|
QEMU_PROG=qemu-system-$(TARGET_NAME)$(EXESUF)
|
||||||
ifneq (,$(findstring -mwindows,$(SDL_LIBS)))
|
|
||||||
# Terminate program name with a 'w' because the linker builds a windows executable.
|
|
||||||
QEMU_PROGW=qemu-system-$(TARGET_NAME)w$(EXESUF)
|
|
||||||
$(QEMU_PROG): $(QEMU_PROGW)
|
|
||||||
$(call quiet-command,$(OBJCOPY) --subsystem console $(QEMU_PROGW) $(QEMU_PROG),"GEN","$(TARGET_DIR)$(QEMU_PROG)")
|
|
||||||
QEMU_PROG_BUILD = $(QEMU_PROGW)
|
|
||||||
else
|
|
||||||
QEMU_PROG_BUILD = $(QEMU_PROG)
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LIBQEMU = ../libqemu-$(FULL_TARGET_NAME).fa
|
|
||||||
PROGS=$(QEMU_PROG) $(QEMU_PROGW)
|
|
||||||
STPFILES=
|
STPFILES=
|
||||||
|
|
||||||
ifdef CONFIG_TRACE_SYSTEMTAP
|
ifdef CONFIG_TRACE_SYSTEMTAP
|
||||||
@ -98,109 +71,10 @@ stap:
|
|||||||
endif
|
endif
|
||||||
.PHONY: stap
|
.PHONY: stap
|
||||||
|
|
||||||
all: $(PROGS) stap
|
all: stap
|
||||||
|
|
||||||
# Dummy command so that make thinks it has done something
|
clean:
|
||||||
@true
|
rm -f *.a *~
|
||||||
|
|
||||||
obj-y += $(LIBQEMU)
|
|
||||||
|
|
||||||
obj-y += trace/
|
|
||||||
|
|
||||||
#########################################################
|
|
||||||
LIBS := $(libs_cpu) $(LIBS)
|
|
||||||
|
|
||||||
#########################################################
|
|
||||||
# Linux user emulator target
|
|
||||||
|
|
||||||
ifdef CONFIG_LINUX_USER
|
|
||||||
|
|
||||||
QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) \
|
|
||||||
-I$(SRC_PATH)/linux-user/host/$(ARCH) \
|
|
||||||
-I$(SRC_PATH)/linux-user \
|
|
||||||
-Ilinux-user/$(TARGET_ABI_DIR)
|
|
||||||
|
|
||||||
endif #CONFIG_LINUX_USER
|
|
||||||
|
|
||||||
#########################################################
|
|
||||||
# BSD user emulator target
|
|
||||||
|
|
||||||
ifdef CONFIG_BSD_USER
|
|
||||||
|
|
||||||
QEMU_CFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ABI_DIR) \
|
|
||||||
-I$(SRC_PATH)/bsd-user/$(HOST_VARIANT_DIR)
|
|
||||||
|
|
||||||
endif #CONFIG_BSD_USER
|
|
||||||
|
|
||||||
#########################################################
|
|
||||||
# System emulator target
|
|
||||||
ifdef CONFIG_SOFTMMU
|
|
||||||
obj-y += softmmu/
|
|
||||||
obj-y += gdbstub.o
|
|
||||||
LIBS := $(libs_softmmu) $(LIBS)
|
|
||||||
|
|
||||||
# Temporary until emulators are linked by Meson
|
|
||||||
LIBS := $(LIBS) @../block.syms @../qemu.syms
|
|
||||||
ifneq ($(CONFIG_MODULES),y)
|
|
||||||
LIBS := $(LIBS) $(ALSA_LIBS) $(OSS_LIBS) $(PULSE_LIBS) $(SDL_LIBS)
|
|
||||||
LIBS := $(LIBS) $(GTK_LIBS) $(VTE_LIBS) $(X11_LIBS) $(CURSES_LIBS) $(ICONV_LIBS) $(GIO_LIBS)
|
|
||||||
endif
|
|
||||||
LIBS := $(LIBS) $(BRLAPI_LIBS) $(SDL_LIBS) $(SPICE_LIBS) $(OPENGL_LIBS) $(SECCOMP_LIBS)
|
|
||||||
LIBS := $(LIBS) $(COREAUDIO_LIBS) $(DSOUND_LIBS)
|
|
||||||
LIBS := $(LIBS) $(VDE_LIBS) $(SLIRP_LIBS)
|
|
||||||
LIBS := $(LIBS) $(LIBUSB_LIBS) $(SMARTCARD_LIBS) $(USB_REDIR_LIBS)
|
|
||||||
LIBS := $(LIBS) $(VIRGL_LIBS) $(CURSES_LIBS)
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_PLUGIN),y)
|
|
||||||
ifdef CONFIG_HAS_LD_DYNAMIC_LIST
|
|
||||||
LIBS += -Wl,--dynamic-list=$(BUILD_DIR)/qemu-plugins-ld.symbols
|
|
||||||
else
|
|
||||||
ifdef CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST
|
|
||||||
LIBS += -Wl,-exported_symbols_list,$(BUILD_DIR)/qemu-plugins-ld64.symbols
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
generated-files-y += hmp-commands.h hmp-commands-info.h
|
|
||||||
|
|
||||||
endif # CONFIG_SOFTMMU
|
|
||||||
|
|
||||||
dummy := $(call unnest-vars,,obj-y)
|
|
||||||
all-obj-y := $(obj-y)
|
|
||||||
|
|
||||||
include $(SRC_PATH)/Makefile.objs
|
|
||||||
dummy := $(call fix-paths,../,, \
|
|
||||||
authz-obj-y \
|
|
||||||
block-obj-y \
|
|
||||||
chardev-obj-y \
|
|
||||||
crypto-obj-y \
|
|
||||||
io-obj-y \
|
|
||||||
qom-obj-y)
|
|
||||||
dummy := $(call unnest-vars,..,common-obj-y)
|
|
||||||
|
|
||||||
all-obj-y += $(common-obj-y)
|
|
||||||
all-obj-y += $(qom-obj-y)
|
|
||||||
all-obj-$(CONFIG_SOFTMMU) += $(authz-obj-y)
|
|
||||||
all-obj-$(CONFIG_SOFTMMU) += $(block-obj-y) $(chardev-obj-y)
|
|
||||||
all-obj-$(CONFIG_SOFTMMU) += $(crypto-obj-y)
|
|
||||||
all-obj-$(CONFIG_SOFTMMU) += $(io-obj-y)
|
|
||||||
|
|
||||||
ifdef CONFIG_SOFTMMU
|
|
||||||
$(QEMU_PROG_BUILD): ../$(FULL_TARGET_NAME)-config-devices.mak
|
|
||||||
endif
|
|
||||||
|
|
||||||
COMMON_LDADDS = ../libqemuutil.a
|
|
||||||
|
|
||||||
# build either PROG or PROGW
|
|
||||||
$(QEMU_PROG_BUILD): $(all-obj-y) $(COMMON_LDADDS) $(softmmu-main-y)
|
|
||||||
$(call LINK, $(filter-out %.mak, $^))
|
|
||||||
ifdef CONFIG_DARWIN
|
|
||||||
$(call quiet-command,Rez -append $(SRC_PATH)/pc-bios/qemu.rsrc -o $@,"REZ","$(TARGET_DIR)$@")
|
|
||||||
$(call quiet-command,SetFile -a C $@,"SETFILE","$(TARGET_DIR)$@")
|
|
||||||
endif
|
|
||||||
|
|
||||||
clean: clean-target
|
|
||||||
rm -f *.a *~ $(PROGS)
|
|
||||||
rm -f $(shell find . -name '*.[od]')
|
rm -f $(shell find . -name '*.[od]')
|
||||||
rm -f hmp-commands.h gdbstub-xml.c
|
rm -f hmp-commands.h gdbstub-xml.c
|
||||||
rm -f trace/generated-helpers.c trace/generated-helpers.c-timestamp
|
rm -f trace/generated-helpers.c trace/generated-helpers.c-timestamp
|
||||||
@ -208,26 +82,7 @@ ifdef CONFIG_TRACE_SYSTEMTAP
|
|||||||
rm -f *.stp
|
rm -f *.stp
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_FUZZ
|
|
||||||
include $(SRC_PATH)/tests/qtest/fuzz/Makefile.include
|
|
||||||
include $(SRC_PATH)/tests/qtest/Makefile.include
|
|
||||||
|
|
||||||
fuzz: fuzz-vars
|
|
||||||
fuzz-vars: QEMU_CFLAGS := $(FUZZ_CFLAGS) $(QEMU_CFLAGS)
|
|
||||||
fuzz-vars: QEMU_LDFLAGS := $(FUZZ_LDFLAGS) $(QEMU_LDFLAGS)
|
|
||||||
fuzz-vars: $(QEMU_PROG_FUZZ)
|
|
||||||
dummy := $(call unnest-vars,, fuzz-obj-y)
|
|
||||||
|
|
||||||
|
|
||||||
$(QEMU_PROG_FUZZ): config-devices.mak $(all-obj-y) $(COMMON_LDADDS) $(fuzz-obj-y)
|
|
||||||
$(call LINK, $(filter-out %.mak, $^))
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
ifneq ($(PROGS),)
|
|
||||||
$(call install-prog,$(PROGS),$(DESTDIR)$(bindir))
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_TRACE_SYSTEMTAP
|
ifdef CONFIG_TRACE_SYSTEMTAP
|
||||||
$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/../systemtap/tapset"
|
$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/../systemtap/tapset"
|
||||||
$(INSTALL_DATA) $(QEMU_PROG).stp-installed "$(DESTDIR)$(qemu_datadir)/../systemtap/tapset/$(QEMU_PROG).stp"
|
$(INSTALL_DATA) $(QEMU_PROG).stp-installed "$(DESTDIR)$(qemu_datadir)/../systemtap/tapset/$(QEMU_PROG).stp"
|
||||||
@ -235,4 +90,4 @@ ifdef CONFIG_TRACE_SYSTEMTAP
|
|||||||
$(INSTALL_DATA) $(QEMU_PROG)-log.stp "$(DESTDIR)$(qemu_datadir)/../systemtap/tapset/$(QEMU_PROG)-log.stp"
|
$(INSTALL_DATA) $(QEMU_PROG)-log.stp "$(DESTDIR)$(qemu_datadir)/../systemtap/tapset/$(QEMU_PROG)-log.stp"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
Makefile: $(generated-files-y)
|
.PHONY: all clean install
|
||||||
|
43
configure
vendored
43
configure
vendored
@ -362,7 +362,6 @@ audio_drv_list=""
|
|||||||
block_drv_rw_whitelist=""
|
block_drv_rw_whitelist=""
|
||||||
block_drv_ro_whitelist=""
|
block_drv_ro_whitelist=""
|
||||||
host_cc="cc"
|
host_cc="cc"
|
||||||
libs_cpu=""
|
|
||||||
libs_softmmu=""
|
libs_softmmu=""
|
||||||
libs_tools=""
|
libs_tools=""
|
||||||
audio_win_int=""
|
audio_win_int=""
|
||||||
@ -5477,7 +5476,6 @@ case "$capstone" in
|
|||||||
else
|
else
|
||||||
LIBCAPSTONE=libcapstone.a
|
LIBCAPSTONE=libcapstone.a
|
||||||
fi
|
fi
|
||||||
libs_cpu="-L$PWD/capstone -lcapstone $libs_cpu"
|
|
||||||
capstone_libs="-L$PWD/capstone -lcapstone"
|
capstone_libs="-L$PWD/capstone -lcapstone"
|
||||||
capstone_cflags="-I${source_path}/capstone/include"
|
capstone_cflags="-I${source_path}/capstone/include"
|
||||||
;;
|
;;
|
||||||
@ -5486,7 +5484,6 @@ case "$capstone" in
|
|||||||
capstone_libs="$($pkg_config --libs capstone)"
|
capstone_libs="$($pkg_config --libs capstone)"
|
||||||
capstone_cflags="$($pkg_config --cflags capstone)"
|
capstone_cflags="$($pkg_config --cflags capstone)"
|
||||||
QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
|
QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
|
||||||
libs_cpu="$($pkg_config --libs capstone) $libs_cpu"
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
no)
|
no)
|
||||||
@ -6403,7 +6400,10 @@ fi
|
|||||||
if test "$fuzzing" = "yes" ; then
|
if test "$fuzzing" = "yes" ; then
|
||||||
write_c_fuzzer_skeleton
|
write_c_fuzzer_skeleton
|
||||||
if compile_prog "$CPU_CFLAGS -Werror -fsanitize=fuzzer" ""; then
|
if compile_prog "$CPU_CFLAGS -Werror -fsanitize=fuzzer" ""; then
|
||||||
have_fuzzer=yes
|
have_fuzzer=yes
|
||||||
|
else
|
||||||
|
error_exit "Your compiler doesn't support -fsanitize=fuzzer"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -6915,7 +6915,6 @@ echo "qemu_helperdir=$libexecdir" >> $config_host_mak
|
|||||||
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
|
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
|
||||||
echo "qemu_icondir=$qemu_icondir" >> $config_host_mak
|
echo "qemu_icondir=$qemu_icondir" >> $config_host_mak
|
||||||
echo "qemu_desktopdir=$qemu_desktopdir" >> $config_host_mak
|
echo "qemu_desktopdir=$qemu_desktopdir" >> $config_host_mak
|
||||||
echo "libs_cpu=$libs_cpu" >> $config_host_mak
|
|
||||||
echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
|
echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
|
||||||
echo "GIT=$git" >> $config_host_mak
|
echo "GIT=$git" >> $config_host_mak
|
||||||
echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
|
echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
|
||||||
@ -7780,14 +7779,7 @@ if test "$have_mlockall" = "yes" ; then
|
|||||||
echo "HAVE_MLOCKALL=y" >> $config_host_mak
|
echo "HAVE_MLOCKALL=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$fuzzing" = "yes" ; then
|
if test "$fuzzing" = "yes" ; then
|
||||||
if test "$have_fuzzer" = "yes"; then
|
QEMU_CFLAGS="$QEMU_CFLAGS -fsanitize=fuzzer-no-link"
|
||||||
FUZZ_LDFLAGS=" -fsanitize=fuzzer"
|
|
||||||
FUZZ_CFLAGS=" -fsanitize=fuzzer"
|
|
||||||
QEMU_CFLAGS="$QEMU_CFLAGS -fsanitize=fuzzer-no-link"
|
|
||||||
else
|
|
||||||
error_exit "Your compiler doesn't support -fsanitize=fuzzer"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$plugins" = "yes" ; then
|
if test "$plugins" = "yes" ; then
|
||||||
@ -7902,8 +7894,6 @@ if test "$libudev" != "no"; then
|
|||||||
fi
|
fi
|
||||||
if test "$fuzzing" != "no"; then
|
if test "$fuzzing" != "no"; then
|
||||||
echo "CONFIG_FUZZ=y" >> $config_host_mak
|
echo "CONFIG_FUZZ=y" >> $config_host_mak
|
||||||
echo "FUZZ_CFLAGS=$FUZZ_CFLAGS" >> $config_host_mak
|
|
||||||
echo "FUZZ_LDFLAGS=$FUZZ_LDFLAGS" >> $config_host_mak
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$edk2_blobs" = "yes" ; then
|
if test "$edk2_blobs" = "yes" ; then
|
||||||
@ -8176,8 +8166,6 @@ if [ "$TARGET_SYSTBL_ABI" != "" ] && [ "$TARGET_SYSTBL" = "" ]; then
|
|||||||
TARGET_SYSTBL=syscall.tbl
|
TARGET_SYSTBL=syscall.tbl
|
||||||
fi
|
fi
|
||||||
|
|
||||||
symlink "$source_path/Makefile.target" "$target_dir/Makefile"
|
|
||||||
|
|
||||||
upper() {
|
upper() {
|
||||||
echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
|
echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
|
||||||
}
|
}
|
||||||
@ -8253,9 +8241,6 @@ fi
|
|||||||
|
|
||||||
# generate QEMU_CFLAGS/QEMU_LDFLAGS for targets
|
# generate QEMU_CFLAGS/QEMU_LDFLAGS for targets
|
||||||
|
|
||||||
cflags=""
|
|
||||||
ldflags=""
|
|
||||||
|
|
||||||
disas_config() {
|
disas_config() {
|
||||||
echo "CONFIG_${1}_DIS=y" >> $config_target_mak
|
echo "CONFIG_${1}_DIS=y" >> $config_target_mak
|
||||||
echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
|
echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
|
||||||
@ -8340,24 +8325,6 @@ if test "$tcg_interpreter" = "yes" ; then
|
|||||||
disas_config "TCI"
|
disas_config "TCI"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Newer kernels on s390 check for an S390_PGSTE program header and
|
|
||||||
# enable the pgste page table extensions in that case. This makes
|
|
||||||
# the vm.allocate_pgste sysctl unnecessary. We enable this program
|
|
||||||
# header if
|
|
||||||
# - we build on s390x
|
|
||||||
# - we build the system emulation for s390x (qemu-system-s390x)
|
|
||||||
# - KVM is enabled
|
|
||||||
# - the linker supports --s390-pgste
|
|
||||||
if test "$TARGET_ARCH" = "s390x" && test "$target_softmmu" = "yes" && \
|
|
||||||
test "$ARCH" = "s390x" && test "$kvm" = "yes"; then
|
|
||||||
if ld_has --s390-pgste ; then
|
|
||||||
ldflags="-Wl,--s390-pgste $ldflags"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "QEMU_LDFLAGS+=$ldflags" >> $config_target_mak
|
|
||||||
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
|
|
||||||
|
|
||||||
done # for target in $targets
|
done # for target in $targets
|
||||||
|
|
||||||
echo "PIXMAN_CFLAGS=$pixman_cflags" >> $config_host_mak
|
echo "PIXMAN_CFLAGS=$pixman_cflags" >> $config_host_mak
|
||||||
|
@ -62,8 +62,8 @@ A more realistic scenario is verifying the installation of a guest OS:
|
|||||||
|
|
||||||
$ ./qemu-img create raw.img 16G
|
$ ./qemu-img create raw.img 16G
|
||||||
$ ./qemu-img create -f qcow2 test.qcow2 16G
|
$ ./qemu-img create -f qcow2 test.qcow2 16G
|
||||||
$ x86_64-softmmu/qemu-system-x86_64 -cdrom debian.iso \
|
$ ./qemu-system-x86_64 -cdrom debian.iso \
|
||||||
-drive file=blkverify:raw.img:test.qcow2
|
-drive file=blkverify:raw.img:test.qcow2
|
||||||
|
|
||||||
If the installation is aborted when blkverify detects corruption, use qemu-io
|
If the installation is aborted when blkverify detects corruption, use qemu-io
|
||||||
to explore the contents of the disk image at the sector in question.
|
to explore the contents of the disk image at the sector in question.
|
||||||
|
@ -819,7 +819,7 @@ the following approaches:
|
|||||||
1) Set ``qemu_bin``, and use the given binary
|
1) Set ``qemu_bin``, and use the given binary
|
||||||
|
|
||||||
2) Do not set ``qemu_bin``, and use a QEMU binary named like
|
2) Do not set ``qemu_bin``, and use a QEMU binary named like
|
||||||
"${arch}-softmmu/qemu-system-${arch}", either in the current
|
"qemu-system-${arch}", either in the current
|
||||||
working directory, or in the current source tree.
|
working directory, or in the current source tree.
|
||||||
|
|
||||||
The resulting ``qemu_bin`` value will be preserved in the
|
The resulting ``qemu_bin`` value will be preserved in the
|
||||||
@ -886,7 +886,7 @@ like the following:
|
|||||||
|
|
||||||
.. code::
|
.. code::
|
||||||
|
|
||||||
PARAMS (key=qemu_bin, path=*, default=x86_64-softmmu/qemu-system-x86_64) => 'x86_64-softmmu/qemu-system-x86_64
|
PARAMS (key=qemu_bin, path=*, default=./qemu-system-x86_64) => './qemu-system-x86_64
|
||||||
|
|
||||||
arch
|
arch
|
||||||
~~~~
|
~~~~
|
||||||
|
@ -129,7 +129,7 @@ To show some example invocations of command-line, we will use the
|
|||||||
following invocation of QEMU, with a QMP server running over UNIX
|
following invocation of QEMU, with a QMP server running over UNIX
|
||||||
socket::
|
socket::
|
||||||
|
|
||||||
$ ./x86_64-softmmu/qemu-system-x86_64 -display none -no-user-config \
|
$ ./qemu-system-x86_64 -display none -no-user-config \
|
||||||
-M q35 -nodefaults -m 512 \
|
-M q35 -nodefaults -m 512 \
|
||||||
-blockdev node-name=node-A,driver=qcow2,file.driver=file,file.node-name=file,file.filename=./a.qcow2 \
|
-blockdev node-name=node-A,driver=qcow2,file.driver=file,file.node-name=file,file.filename=./a.qcow2 \
|
||||||
-device virtio-blk,drive=node-A,id=virtio0 \
|
-device virtio-blk,drive=node-A,id=virtio0 \
|
||||||
@ -694,7 +694,7 @@ instance, with the following invocation. (As noted earlier, for
|
|||||||
simplicity's sake, the destination QEMU is started on the same host, but
|
simplicity's sake, the destination QEMU is started on the same host, but
|
||||||
it could be located elsewhere)::
|
it could be located elsewhere)::
|
||||||
|
|
||||||
$ ./x86_64-softmmu/qemu-system-x86_64 -display none -no-user-config \
|
$ ./qemu-system-x86_64 -display none -no-user-config \
|
||||||
-M q35 -nodefaults -m 512 \
|
-M q35 -nodefaults -m 512 \
|
||||||
-blockdev node-name=node-TargetDisk,driver=qcow2,file.driver=file,file.node-name=file,file.filename=./target-disk.qcow2 \
|
-blockdev node-name=node-TargetDisk,driver=qcow2,file.driver=file,file.node-name=file,file.filename=./target-disk.qcow2 \
|
||||||
-device virtio-blk,drive=node-TargetDisk,id=virtio0 \
|
-device virtio-blk,drive=node-TargetDisk,id=virtio0 \
|
||||||
|
73
meson.build
73
meson.build
@ -215,10 +215,12 @@ brlapi = not_found
|
|||||||
if 'CONFIG_BRLAPI' in config_host
|
if 'CONFIG_BRLAPI' in config_host
|
||||||
brlapi = declare_dependency(link_args: config_host['BRLAPI_LIBS'].split())
|
brlapi = declare_dependency(link_args: config_host['BRLAPI_LIBS'].split())
|
||||||
endif
|
endif
|
||||||
|
sdlwindows = false
|
||||||
sdl = not_found
|
sdl = not_found
|
||||||
if 'CONFIG_SDL' in config_host
|
if 'CONFIG_SDL' in config_host
|
||||||
sdl = declare_dependency(compile_args: config_host['SDL_CFLAGS'].split(),
|
sdl = declare_dependency(compile_args: config_host['SDL_CFLAGS'].split(),
|
||||||
link_args: config_host['SDL_LIBS'].split())
|
link_args: config_host['SDL_LIBS'].split())
|
||||||
|
sdlwindows = config_host['SDL_LIBS'].contains('-mwindows')
|
||||||
endif
|
endif
|
||||||
rbd = not_found
|
rbd = not_found
|
||||||
if 'CONFIG_RBD' in config_host
|
if 'CONFIG_RBD' in config_host
|
||||||
@ -529,6 +531,7 @@ user_ss = ss.source_set()
|
|||||||
bsd_user_ss = ss.source_set()
|
bsd_user_ss = ss.source_set()
|
||||||
linux_user_ss = ss.source_set()
|
linux_user_ss = ss.source_set()
|
||||||
specific_ss = ss.source_set()
|
specific_ss = ss.source_set()
|
||||||
|
specific_fuzz_ss = ss.source_set()
|
||||||
|
|
||||||
modules = {}
|
modules = {}
|
||||||
hw_arch = {}
|
hw_arch = {}
|
||||||
@ -743,6 +746,7 @@ specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true: linux_user_ss)
|
|||||||
|
|
||||||
# needed for fuzzing binaries
|
# needed for fuzzing binaries
|
||||||
subdir('tests/qtest/libqos')
|
subdir('tests/qtest/libqos')
|
||||||
|
subdir('tests/qtest/fuzz')
|
||||||
|
|
||||||
block_mods = []
|
block_mods = []
|
||||||
softmmu_mods = []
|
softmmu_mods = []
|
||||||
@ -805,7 +809,10 @@ foreach m : block_mods + softmmu_mods
|
|||||||
install_dir: config_host['qemu_moddir'])
|
install_dir: config_host['qemu_moddir'])
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
common_ss.add_all(when: 'CONFIG_SOFTMMU', if_true: softmmu_ss)
|
softmmu_ss.add(authz, block, chardev, crypto, io, qmp)
|
||||||
|
common_ss.add(qom, qemuutil)
|
||||||
|
|
||||||
|
common_ss.add_all(when: 'CONFIG_SOFTMMU', if_true: [softmmu_ss])
|
||||||
common_ss.add_all(when: 'CONFIG_USER_ONLY', if_true: user_ss)
|
common_ss.add_all(when: 'CONFIG_USER_ONLY', if_true: user_ss)
|
||||||
|
|
||||||
common_all = common_ss.apply(config_all, strict: false)
|
common_all = common_ss.apply(config_all, strict: false)
|
||||||
@ -817,11 +824,17 @@ common_all = static_library('common',
|
|||||||
|
|
||||||
feature_to_c = find_program('scripts/feature_to_c.sh')
|
feature_to_c = find_program('scripts/feature_to_c.sh')
|
||||||
|
|
||||||
|
emulators = []
|
||||||
foreach target : target_dirs
|
foreach target : target_dirs
|
||||||
config_target = config_target_mak[target]
|
config_target = config_target_mak[target]
|
||||||
target_name = config_target['TARGET_NAME']
|
target_name = config_target['TARGET_NAME']
|
||||||
arch = config_target['TARGET_BASE_ARCH']
|
arch = config_target['TARGET_BASE_ARCH']
|
||||||
arch_srcs = []
|
arch_srcs = []
|
||||||
|
arch_deps = []
|
||||||
|
c_args = ['-DNEED_CPU_H',
|
||||||
|
'-DCONFIG_TARGET="@0@-config-target.h"'.format(target),
|
||||||
|
'-DCONFIG_DEVICES="@0@-config-devices.h"'.format(target)]
|
||||||
|
link_args = []
|
||||||
|
|
||||||
target_inc = [include_directories('target' / config_target['TARGET_BASE_ARCH'])]
|
target_inc = [include_directories('target' / config_target['TARGET_BASE_ARCH'])]
|
||||||
if targetos == 'linux'
|
if targetos == 'linux'
|
||||||
@ -832,12 +845,15 @@ foreach target : target_dirs
|
|||||||
target_type='system'
|
target_type='system'
|
||||||
t = target_softmmu_arch[arch].apply(config_target, strict: false)
|
t = target_softmmu_arch[arch].apply(config_target, strict: false)
|
||||||
arch_srcs += t.sources()
|
arch_srcs += t.sources()
|
||||||
|
arch_deps += t.dependencies()
|
||||||
|
|
||||||
hw_dir = target_name == 'sparc64' ? 'sparc64' : arch
|
hw_dir = target_name == 'sparc64' ? 'sparc64' : arch
|
||||||
hw = hw_arch[hw_dir].apply(config_target, strict: false)
|
hw = hw_arch[hw_dir].apply(config_target, strict: false)
|
||||||
arch_srcs += hw.sources()
|
arch_srcs += hw.sources()
|
||||||
|
arch_deps += hw.dependencies()
|
||||||
|
|
||||||
arch_srcs += config_devices_h[target]
|
arch_srcs += config_devices_h[target]
|
||||||
|
link_args += ['@block.syms', '@qemu.syms']
|
||||||
else
|
else
|
||||||
abi = config_target['TARGET_ABI_DIR']
|
abi = config_target['TARGET_ABI_DIR']
|
||||||
target_type='user'
|
target_type='user'
|
||||||
@ -874,9 +890,11 @@ foreach target : target_dirs
|
|||||||
|
|
||||||
t = target_arch[arch].apply(config_target, strict: false)
|
t = target_arch[arch].apply(config_target, strict: false)
|
||||||
arch_srcs += t.sources()
|
arch_srcs += t.sources()
|
||||||
|
arch_deps += t.dependencies()
|
||||||
|
|
||||||
target_common = common_ss.apply(config_target, strict: false)
|
target_common = common_ss.apply(config_target, strict: false)
|
||||||
objects = common_all.extract_objects(target_common.sources())
|
objects = common_all.extract_objects(target_common.sources())
|
||||||
|
deps = target_common.dependencies()
|
||||||
|
|
||||||
# TODO: Change to generator once obj-y goes away
|
# TODO: Change to generator once obj-y goes away
|
||||||
config_target_h = custom_target(target + '-config-target.h',
|
config_target_h = custom_target(target + '-config-target.h',
|
||||||
@ -887,15 +905,60 @@ foreach target : target_dirs
|
|||||||
|
|
||||||
target_specific = specific_ss.apply(config_target, strict: false)
|
target_specific = specific_ss.apply(config_target, strict: false)
|
||||||
arch_srcs += target_specific.sources()
|
arch_srcs += target_specific.sources()
|
||||||
|
arch_deps += target_specific.dependencies()
|
||||||
|
|
||||||
static_library('qemu-' + target,
|
lib = static_library('qemu-' + target,
|
||||||
sources: arch_srcs + [config_target_h] + genh,
|
sources: arch_srcs + [config_target_h] + genh,
|
||||||
objects: objects,
|
objects: objects,
|
||||||
include_directories: target_inc,
|
include_directories: target_inc,
|
||||||
c_args: ['-DNEED_CPU_H',
|
c_args: c_args,
|
||||||
'-DCONFIG_TARGET="@0@-config-target.h"'.format(target),
|
build_by_default: false,
|
||||||
'-DCONFIG_DEVICES="@0@-config-devices.h"'.format(target)],
|
|
||||||
name_suffix: 'fa')
|
name_suffix: 'fa')
|
||||||
|
|
||||||
|
if target.endswith('-softmmu')
|
||||||
|
execs = [{
|
||||||
|
'name': 'qemu-system-' + target_name,
|
||||||
|
'gui': false,
|
||||||
|
'sources': files('softmmu/main.c'),
|
||||||
|
'dependencies': []
|
||||||
|
}]
|
||||||
|
if sdlwindows
|
||||||
|
execs += [{
|
||||||
|
'name': 'qemu-system-' + target_name + 'w',
|
||||||
|
'gui': true,
|
||||||
|
'sources': files('softmmu/main.c'),
|
||||||
|
'dependencies': []
|
||||||
|
}]
|
||||||
|
endif
|
||||||
|
if config_host.has_key('CONFIG_FUZZ')
|
||||||
|
specific_fuzz = specific_fuzz_ss.apply(config_target, strict: false)
|
||||||
|
execs += [{
|
||||||
|
'name': 'qemu-fuzz-' + target_name,
|
||||||
|
'gui': false,
|
||||||
|
'sources': specific_fuzz.sources(),
|
||||||
|
'dependencies': specific_fuzz.dependencies(),
|
||||||
|
'link_depends': [files('tests/qtest/fuzz/fork_fuzz.ld')],
|
||||||
|
}]
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
execs = [{
|
||||||
|
'name': 'qemu-' + target_name,
|
||||||
|
'gui': false,
|
||||||
|
'sources': [],
|
||||||
|
'dependencies': []
|
||||||
|
}]
|
||||||
|
endif
|
||||||
|
foreach exe: execs
|
||||||
|
emulators += executable(exe['name'], exe['sources'],
|
||||||
|
install: true,
|
||||||
|
c_args: c_args,
|
||||||
|
dependencies: arch_deps + deps + exe['dependencies'],
|
||||||
|
objects: lib.extract_all_objects(recursive: true),
|
||||||
|
link_language: link_language,
|
||||||
|
link_depends: [block_syms, qemu_syms] + exe.get('link_depends', []),
|
||||||
|
link_args: link_args,
|
||||||
|
gui_app: exe['gui'])
|
||||||
|
endforeach
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
# Other build targets
|
# Other build targets
|
||||||
|
@ -82,7 +82,7 @@ void os_setup_signal_handling(void)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Find a likely location for support files using the location of the binary.
|
* Find a likely location for support files using the location of the binary.
|
||||||
* When running from the build tree this will be "$bindir/../pc-bios".
|
* When running from the build tree this will be "$bindir/pc-bios".
|
||||||
* Otherwise, this is CONFIG_QEMU_DATADIR.
|
* Otherwise, this is CONFIG_QEMU_DATADIR.
|
||||||
*
|
*
|
||||||
* The caller must use g_free() to free the returned data when it is
|
* The caller must use g_free() to free the returned data when it is
|
||||||
@ -96,7 +96,7 @@ char *os_find_datadir(void)
|
|||||||
exec_dir = qemu_get_exec_dir();
|
exec_dir = qemu_get_exec_dir();
|
||||||
g_return_val_if_fail(exec_dir != NULL, NULL);
|
g_return_val_if_fail(exec_dir != NULL, NULL);
|
||||||
|
|
||||||
dir = g_build_filename(exec_dir, "..", "pc-bios", NULL);
|
dir = g_build_filename(exec_dir, "pc-bios", NULL);
|
||||||
if (g_file_test(dir, G_FILE_TEST_IS_DIR)) {
|
if (g_file_test(dir, G_FILE_TEST_IS_DIR)) {
|
||||||
return g_steal_pointer(&dir);
|
return g_steal_pointer(&dir);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,13 @@
|
|||||||
|
if 'CONFIG_HAS_LD_DYNAMIC_LIST' in config_host
|
||||||
|
plugin_ldflags = ['-Wl,--dynamic-list=' + (meson.build_root() / 'qemu-plugins-ld.symbols')]
|
||||||
|
elif 'CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST' in config_host
|
||||||
|
plugin_ldflags = ['-Wl,-exported_symbols_list,' + (meson.build_root() / 'qemu-plugins-ld64.symbols')]
|
||||||
|
else
|
||||||
|
plugin_ldflags = []
|
||||||
|
endif
|
||||||
|
|
||||||
specific_ss.add(when: 'CONFIG_PLUGIN', if_true: [files(
|
specific_ss.add(when: 'CONFIG_PLUGIN', if_true: [files(
|
||||||
'loader.c',
|
'loader.c',
|
||||||
'core.c',
|
'core.c',
|
||||||
'api.c',
|
'api.c',
|
||||||
)])
|
), declare_dependency(link_args: plugin_ldflags)])
|
||||||
|
@ -21,7 +21,6 @@ MAKEFLAGS += -rR
|
|||||||
%.cpp:
|
%.cpp:
|
||||||
%.m:
|
%.m:
|
||||||
%.mak:
|
%.mak:
|
||||||
clean-target:
|
|
||||||
|
|
||||||
# Flags for dependency generation
|
# Flags for dependency generation
|
||||||
QEMU_DGFLAGS += -MMD -MP -MT $@ -MF $(@D)/$(*F).d
|
QEMU_DGFLAGS += -MMD -MP -MT $@ -MF $(@D)/$(*F).d
|
||||||
|
@ -383,7 +383,7 @@ def binariesToTest(args, testcase):
|
|||||||
if args.qemu:
|
if args.qemu:
|
||||||
r = args.qemu
|
r = args.qemu
|
||||||
else:
|
else:
|
||||||
r = glob.glob('./*-softmmu/qemu-system-*')
|
r = glob.glob('./qemu-system-*')
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
|
||||||
|
@ -64,24 +64,26 @@ mkdir -p "$DEST_DIR/lib/" # Copy the shared libraries here
|
|||||||
|
|
||||||
# Build once to get the list of dynamic lib paths, and copy them over
|
# Build once to get the list of dynamic lib paths, and copy them over
|
||||||
../configure --disable-werror --cc="$CC" --cxx="$CXX" --enable-fuzzing \
|
../configure --disable-werror --cc="$CC" --cxx="$CXX" --enable-fuzzing \
|
||||||
|
--prefix="$DEST_DIR" --bindir="$DEST_DIR" --datadir="$DEST_DIR/data/" \
|
||||||
--extra-cflags="$EXTRA_CFLAGS" --target-list="i386-softmmu"
|
--extra-cflags="$EXTRA_CFLAGS" --target-list="i386-softmmu"
|
||||||
|
|
||||||
if ! make "-j$(nproc)" i386-softmmu/fuzz; then
|
if ! make "-j$(nproc)" qemu-fuzz-i386; then
|
||||||
fatal "Build failed. Please specify a compiler with fuzzing support"\
|
fatal "Build failed. Please specify a compiler with fuzzing support"\
|
||||||
"using the \$CC and \$CXX environemnt variables"\
|
"using the \$CC and \$CXX environemnt variables"\
|
||||||
"\nFor example: CC=clang CXX=clang++ $0"
|
"\nFor example: CC=clang CXX=clang++ $0"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for i in $(ldd ./i386-softmmu/qemu-fuzz-i386 | cut -f3 -d' '); do
|
for i in $(ldd ./qemu-fuzz-i386 | cut -f3 -d' '); do
|
||||||
cp "$i" "$DEST_DIR/lib/"
|
cp "$i" "$DEST_DIR/lib/"
|
||||||
done
|
done
|
||||||
rm ./i386-softmmu/qemu-fuzz-i386
|
rm qemu-fuzz-i386
|
||||||
|
|
||||||
# Build a second time to build the final binary with correct rpath
|
# Build a second time to build the final binary with correct rpath
|
||||||
../configure --bindir="$DEST_DIR" --datadir="$DEST_DIR/data/" --disable-werror \
|
../configure --disable-werror --cc="$CC" --cxx="$CXX" --enable-fuzzing \
|
||||||
--cc="$CC" --cxx="$CXX" --extra-cflags="$EXTRA_CFLAGS" \
|
--prefix="$DEST_DIR" --bindir="$DEST_DIR" --datadir="$DEST_DIR/data/" \
|
||||||
--extra-ldflags="-Wl,-rpath,'\$\$ORIGIN/lib'"
|
--extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="-Wl,-rpath,'\$\$ORIGIN/lib'" \
|
||||||
make "-j$(nproc)" i386-softmmu/fuzz
|
--target-list="i386-softmmu"
|
||||||
|
make "-j$(nproc)" qemu-fuzz-i386 V=1
|
||||||
|
|
||||||
# Copy over the datadir
|
# Copy over the datadir
|
||||||
cp -r ../pc-bios/ "$DEST_DIR/pc-bios"
|
cp -r ../pc-bios/ "$DEST_DIR/pc-bios"
|
||||||
@ -90,9 +92,9 @@ cp -r ../pc-bios/ "$DEST_DIR/pc-bios"
|
|||||||
# of available fuzz-targets. Copy over the qemu-fuzz-i386, naming it according
|
# 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
|
# to each available fuzz target (See 05509c8e6d fuzz: select fuzz target using
|
||||||
# executable name)
|
# executable name)
|
||||||
for target in $(./i386-softmmu/qemu-fuzz-i386 | awk '$1 ~ /\*/ {print $2}');
|
for target in $(./qemu-fuzz-i386 | awk '$1 ~ /\*/ {print $2}');
|
||||||
do
|
do
|
||||||
cp ./i386-softmmu/qemu-fuzz-i386 "$DEST_DIR/qemu-fuzz-i386-target-$target"
|
cp qemu-fuzz-i386 "$DEST_DIR/qemu-fuzz-i386-target-$target"
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "Done. The fuzzers are located in $DEST_DIR"
|
echo "Done. The fuzzers are located in $DEST_DIR"
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
softmmu-main-y = softmmu/main.o
|
|
||||||
main.o-cflags := $(SDL_CFLAGS)
|
|
@ -45,5 +45,18 @@ s390x_softmmu_ss.add(files(
|
|||||||
'sigp.c',
|
'sigp.c',
|
||||||
))
|
))
|
||||||
|
|
||||||
|
# Newer kernels on s390 check for an S390_PGSTE program header and
|
||||||
|
# enable the pgste page table extensions in that case. This makes
|
||||||
|
# the vm.allocate_pgste sysctl unnecessary. We enable this program
|
||||||
|
# header if
|
||||||
|
# - we build on s390x
|
||||||
|
# - we build the system emulation for s390x (qemu-system-s390x)
|
||||||
|
# - KVM is enabled
|
||||||
|
# - the linker supports --s390-pgste
|
||||||
|
if host_machine.cpu_family() == 's390x' and cc.has_link_argument('-Wl,--s390-pgste')
|
||||||
|
s390x_softmmu_ss.add(when: 'CONFIG_KVM',
|
||||||
|
if_true: declare_dependency(link_args: ['-Wl,--s390-pgste']))
|
||||||
|
endif
|
||||||
|
|
||||||
target_arch += {'s390x': s390x_ss}
|
target_arch += {'s390x': s390x_ss}
|
||||||
target_softmmu_arch += {'s390x': s390x_softmmu_ss}
|
target_softmmu_arch += {'s390x': s390x_softmmu_ss}
|
||||||
|
@ -457,7 +457,7 @@ build-tcg-tests-%: $(if $(CONFIG_PLUGIN),plugins)
|
|||||||
V="$(V)" TARGET="$*" guest-tests, \
|
V="$(V)" TARGET="$*" guest-tests, \
|
||||||
"BUILD", "TCG tests for $*")
|
"BUILD", "TCG tests for $*")
|
||||||
|
|
||||||
run-tcg-tests-%: build-tcg-tests-% %/all
|
run-tcg-tests-%: build-tcg-tests-% all
|
||||||
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
|
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
|
||||||
-f $(SRC_PATH)/tests/tcg/Makefile.qemu \
|
-f $(SRC_PATH)/tests/tcg/Makefile.qemu \
|
||||||
SRC_PATH=$(SRC_PATH) SPEED="$(SPEED)" \
|
SRC_PATH=$(SRC_PATH) SPEED="$(SPEED)" \
|
||||||
@ -485,7 +485,7 @@ QEMU_IOTESTS_HELPERS-$(call land,$(CONFIG_SOFTMMU),$(CONFIG_LINUX)) = tests/qemu
|
|||||||
.PHONY: check-tests/check-block.sh
|
.PHONY: check-tests/check-block.sh
|
||||||
check-tests/check-block.sh: tests/check-block.sh qemu-img$(EXESUF) \
|
check-tests/check-block.sh: tests/check-block.sh qemu-img$(EXESUF) \
|
||||||
qemu-io$(EXESUF) qemu-nbd$(EXESUF) $(QEMU_IOTESTS_HELPERS-y) \
|
qemu-io$(EXESUF) qemu-nbd$(EXESUF) $(QEMU_IOTESTS_HELPERS-y) \
|
||||||
$(patsubst %,%/all,$(filter %-softmmu,$(TARGET_DIRS)))
|
$(patsubst %-softmmu,qemu-system-%,$(filter %-softmmu,$(TARGET_DIRS)))
|
||||||
@$<
|
@$<
|
||||||
|
|
||||||
# Python venv for running tests
|
# Python venv for running tests
|
||||||
|
@ -57,8 +57,7 @@ def pick_default_qemu_bin(arch=None):
|
|||||||
# qemu binary path does not match arch for powerpc, handle it
|
# qemu binary path does not match arch for powerpc, handle it
|
||||||
if 'ppc64le' in arch:
|
if 'ppc64le' in arch:
|
||||||
arch = 'ppc64'
|
arch = 'ppc64'
|
||||||
qemu_bin_relative_path = os.path.join("%s-softmmu" % arch,
|
qemu_bin_relative_path = "./qemu-system-%s" % arch
|
||||||
"qemu-system-%s" % arch)
|
|
||||||
if is_readable_executable_file(qemu_bin_relative_path):
|
if is_readable_executable_file(qemu_bin_relative_path):
|
||||||
return qemu_bin_relative_path
|
return qemu_bin_relative_path
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
# This work is licensed under the terms of the GNU GPLv2.
|
# This work is licensed under the terms of the GNU GPLv2.
|
||||||
# See the COPYING.LIB file in the top-level directory.
|
# See the COPYING.LIB file in the top-level directory.
|
||||||
|
|
||||||
qemu_bins="x86_64-softmmu/qemu-system-x86_64 aarch64-softmmu/qemu-system-aarch64"
|
qemu_bins="./qemu-system-x86_64 ./qemu-system-aarch64"
|
||||||
|
|
||||||
if [ ! -e "tests/qtest/bios-tables-test" ]; then
|
if [ ! -e "tests/qtest/bios-tables-test" ]; then
|
||||||
echo "Test: bios-tables-test is required! Run make check before this script."
|
echo "Test: bios-tables-test is required! Run make check before this script."
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
# THE SOFTWARE.
|
# THE SOFTWARE.
|
||||||
|
|
||||||
QEMU=${QEMU:-"../../x86_64-softmmu/qemu-system-x86_64"}
|
QEMU=${QEMU:-"../../qemu-system-x86_64"}
|
||||||
|
|
||||||
run_qemu() {
|
run_qemu() {
|
||||||
local kernel=$1
|
local kernel=$1
|
||||||
|
@ -577,11 +577,11 @@ if [ -z "$QEMU_PROG" ]
|
|||||||
then
|
then
|
||||||
if [ -x "$build_iotests/qemu" ]; then
|
if [ -x "$build_iotests/qemu" ]; then
|
||||||
export QEMU_PROG="$build_iotests/qemu"
|
export QEMU_PROG="$build_iotests/qemu"
|
||||||
elif [ -x "$build_root/${qemu_arch}-softmmu/qemu-system-${qemu_arch}" ]; then
|
elif [ -x "$build_root/qemu-system-${qemu_arch}" ]; then
|
||||||
export QEMU_PROG="$build_root/${qemu_arch}-softmmu/qemu-system-${qemu_arch}"
|
export QEMU_PROG="$build_root/qemu-system-${qemu_arch}"
|
||||||
else
|
else
|
||||||
pushd "$build_root" > /dev/null
|
pushd "$build_root" > /dev/null
|
||||||
for binary in *-softmmu/qemu-system-*
|
for binary in qemu-system-*
|
||||||
do
|
do
|
||||||
if [ -x "$binary" ]
|
if [ -x "$binary" ]
|
||||||
then
|
then
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
QEMU_PROG_FUZZ=qemu-fuzz-$(TARGET_NAME)$(EXESUF)
|
|
||||||
|
|
||||||
fuzz-obj-y += tests/qtest/libqtest.o
|
|
||||||
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
|
|
||||||
fuzz-obj-$(CONFIG_VIRTIO_NET) += tests/qtest/fuzz/virtio_net_fuzz.o
|
|
||||||
fuzz-obj-$(CONFIG_SCSI) += tests/qtest/fuzz/virtio_scsi_fuzz.o
|
|
||||||
|
|
||||||
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
|
|
@ -17,8 +17,8 @@
|
|||||||
#include "tests/qtest/libqos/pci.h"
|
#include "tests/qtest/libqos/pci.h"
|
||||||
#include "tests/qtest/libqos/pci-pc.h"
|
#include "tests/qtest/libqos/pci-pc.h"
|
||||||
#include "fuzz.h"
|
#include "fuzz.h"
|
||||||
#include "fuzz/qos_fuzz.h"
|
#include "qos_fuzz.h"
|
||||||
#include "fuzz/fork_fuzz.h"
|
#include "fork_fuzz.h"
|
||||||
|
|
||||||
|
|
||||||
#define I440FX_PCI_HOST_BRIDGE_CFG 0xcf8
|
#define I440FX_PCI_HOST_BRIDGE_CFG 0xcf8
|
||||||
|
35
tests/qtest/fuzz/meson.build
Normal file
35
tests/qtest/fuzz/meson.build
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
specific_fuzz_ss.add(files('fuzz.c', 'fork_fuzz.c', 'qos_fuzz.c',
|
||||||
|
'qtest_wrappers.c'), qos)
|
||||||
|
|
||||||
|
# Targets
|
||||||
|
specific_fuzz_ss.add(when: 'CONFIG_I440FX', if_true: files('i440fx_fuzz.c'))
|
||||||
|
specific_fuzz_ss.add(when: 'CONFIG_VIRTIO_NET', if_true: files('virtio_net_fuzz.c'))
|
||||||
|
specific_fuzz_ss.add(when: 'CONFIG_VIRTIO_SCSI', if_true: files('virtio_scsi_fuzz.c'))
|
||||||
|
|
||||||
|
# unfortunately declare_dependency does not support link_depends, so
|
||||||
|
# this will be duplicated in meson.build
|
||||||
|
fork_fuzz = declare_dependency(
|
||||||
|
link_args: ['-fsanitize=fuzzer',
|
||||||
|
'-Wl,-T,' + (meson.current_source_dir() / 'fork_fuzz.ld'),
|
||||||
|
'-Wl,-wrap,qtest_inb',
|
||||||
|
'-Wl,-wrap,qtest_inw',
|
||||||
|
'-Wl,-wrap,qtest_inl',
|
||||||
|
'-Wl,-wrap,qtest_outb',
|
||||||
|
'-Wl,-wrap,qtest_outw',
|
||||||
|
'-Wl,-wrap,qtest_outl',
|
||||||
|
'-Wl,-wrap,qtest_readb',
|
||||||
|
'-Wl,-wrap,qtest_readw',
|
||||||
|
'-Wl,-wrap,qtest_readl',
|
||||||
|
'-Wl,-wrap,qtest_readq',
|
||||||
|
'-Wl,-wrap,qtest_writeb',
|
||||||
|
'-Wl,-wrap,qtest_writew',
|
||||||
|
'-Wl,-wrap,qtest_writel',
|
||||||
|
'-Wl,-wrap,qtest_writeq',
|
||||||
|
'-Wl,-wrap,qtest_memread',
|
||||||
|
'-Wl,-wrap,qtest_bufread',
|
||||||
|
'-Wl,-wrap,qtest_memwrite',
|
||||||
|
'-Wl,-wrap,qtest_bufwrite',
|
||||||
|
'-Wl,-wrap,qtest_memset']
|
||||||
|
)
|
||||||
|
|
||||||
|
specific_fuzz_ss.add(fork_fuzz)
|
@ -12,7 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
#include "cpu.h"
|
#include "hw/core/cpu.h"
|
||||||
#include "exec/ioport.h"
|
#include "exec/ioport.h"
|
||||||
|
|
||||||
#include "fuzz.h"
|
#include "fuzz.h"
|
||||||
|
@ -61,7 +61,8 @@ static void virtio_net_fuzz_multi(QTestState *s,
|
|||||||
* backend. Otherwise, always place the input on a virtqueue.
|
* backend. Otherwise, always place the input on a virtqueue.
|
||||||
*/
|
*/
|
||||||
if (vqa.rx && sockfds_initialized) {
|
if (vqa.rx && sockfds_initialized) {
|
||||||
write(sockfds[0], Data, vqa.length);
|
int ignored = write(sockfds[0], Data, vqa.length);
|
||||||
|
(void) ignored;
|
||||||
} else {
|
} else {
|
||||||
vqa.rx = 0;
|
vqa.rx = 0;
|
||||||
uint64_t req_addr = guest_alloc(t_alloc, vqa.length);
|
uint64_t req_addr = guest_alloc(t_alloc, vqa.length);
|
||||||
|
@ -12,10 +12,10 @@
|
|||||||
|
|
||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
|
|
||||||
#include "tests/qtest/libqtest.h"
|
#include "tests/qtest/libqos/libqtest.h"
|
||||||
#include "libqos/virtio-scsi.h"
|
#include "tests/qtest/libqos/virtio-scsi.h"
|
||||||
#include "libqos/virtio.h"
|
#include "tests/qtest/libqos/virtio.h"
|
||||||
#include "libqos/virtio-pci.h"
|
#include "tests/qtest/libqos/virtio-pci.h"
|
||||||
#include "standard-headers/linux/virtio_ids.h"
|
#include "standard-headers/linux/virtio_ids.h"
|
||||||
#include "standard-headers/linux/virtio_pci.h"
|
#include "standard-headers/linux/virtio_pci.h"
|
||||||
#include "standard-headers/linux/virtio_scsi.h"
|
#include "standard-headers/linux/virtio_scsi.h"
|
||||||
|
@ -226,7 +226,7 @@ typedef void *(*QOSBeforeTest) (GString *cmd_line, void *arg);
|
|||||||
* my_test <--consumed_by-- my_interface <--produces--+
|
* my_test <--consumed_by-- my_interface <--produces--+
|
||||||
*
|
*
|
||||||
* Assuming there the binary is
|
* Assuming there the binary is
|
||||||
* QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64
|
* QTEST_QEMU_BINARY=./qemu-system-x86_64
|
||||||
* a valid test path will be:
|
* a valid test path will be:
|
||||||
* "/x86_64/pc/other_node/my_driver/my_interface/my_test".
|
* "/x86_64/pc/other_node/my_driver/my_interface/my_test".
|
||||||
*
|
*
|
||||||
|
@ -234,7 +234,7 @@ foreach dir : target_dirs
|
|||||||
qtest_env = environment()
|
qtest_env = environment()
|
||||||
qtest_env.set('QTEST_QEMU_IMG', './qemu-img')
|
qtest_env.set('QTEST_QEMU_IMG', './qemu-img')
|
||||||
qtest_env.set('G_TEST_DBUS_DAEMON', meson.source_root() / 'tests/dbus-vmstate-daemon.sh')
|
qtest_env.set('G_TEST_DBUS_DAEMON', meson.source_root() / 'tests/dbus-vmstate-daemon.sh')
|
||||||
qtest_env.set('QTEST_QEMU_BINARY', '@0@-softmmu/qemu-system-@0@'.format(target_base))
|
qtest_env.set('QTEST_QEMU_BINARY', './qemu-system-' + target_base)
|
||||||
|
|
||||||
foreach test : qtests
|
foreach test : qtests
|
||||||
# Executables are shared across targets, declare them only the first time we
|
# Executables are shared across targets, declare them only the first time we
|
||||||
|
@ -31,7 +31,7 @@ int main(int argc, char *argv[])
|
|||||||
g_test_init(&argc, &argv, NULL);
|
g_test_init(&argc, &argv, NULL);
|
||||||
|
|
||||||
if (strcmp(arch, "ppc64")) {
|
if (strcmp(arch, "ppc64")) {
|
||||||
g_printerr("RTAS requires ppc64-softmmu/qemu-system-ppc64\n");
|
g_printerr("RTAS requires qemu-system-ppc64\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
qtest_add_func("rtas/get-time-of-day", test_rtas_get_time_of_day);
|
qtest_add_func("rtas/get-time-of-day", test_rtas_get_time_of_day);
|
||||||
|
@ -193,11 +193,11 @@ for target in $target_list; do
|
|||||||
case $target in
|
case $target in
|
||||||
*-linux-user | *-bsd-user)
|
*-linux-user | *-bsd-user)
|
||||||
echo "CONFIG_USER_ONLY=y" >> $config_target_mak
|
echo "CONFIG_USER_ONLY=y" >> $config_target_mak
|
||||||
echo "QEMU=\$(BUILD_DIR)/$target/qemu-$arch" >> $config_target_mak
|
echo "QEMU=\$(BUILD_DIR)/qemu-$arch" >> $config_target_mak
|
||||||
;;
|
;;
|
||||||
*-softmmu)
|
*-softmmu)
|
||||||
echo "CONFIG_SOFTMMU=y" >> $config_target_mak
|
echo "CONFIG_SOFTMMU=y" >> $config_target_mak
|
||||||
echo "QEMU=\$(BUILD_DIR)/$target/qemu-system-$arch" >> $config_target_mak
|
echo "QEMU=\$(BUILD_DIR)/qemu-system-$arch" >> $config_target_mak
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
@ -205,7 +205,6 @@ bool module_load_one(const char *prefix, const char *lib_name)
|
|||||||
dirs[n_dirs++] = g_strdup_printf("%s", search_dir);
|
dirs[n_dirs++] = g_strdup_printf("%s", search_dir);
|
||||||
}
|
}
|
||||||
dirs[n_dirs++] = g_strdup_printf("%s", CONFIG_QEMU_MODDIR);
|
dirs[n_dirs++] = g_strdup_printf("%s", CONFIG_QEMU_MODDIR);
|
||||||
dirs[n_dirs++] = g_strdup_printf("%s/..", exec_dir ? : "");
|
|
||||||
dirs[n_dirs++] = g_strdup_printf("%s", exec_dir ? : "");
|
dirs[n_dirs++] = g_strdup_printf("%s", exec_dir ? : "");
|
||||||
|
|
||||||
#ifdef CONFIG_MODULE_UPGRADES
|
#ifdef CONFIG_MODULE_UPGRADES
|
||||||
|
Loading…
Reference in New Issue
Block a user