* Fixes for cross-compiling with MinGW / compiling with MSYS2
* Enable cross-compiler builds in the Gitlab CI * Improvements / fixes for the crypto tests in the Gitlab CI * Fix for the "make check-acceptance" microblaze failure (required to get the Gitlab CI green again) -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAl9WIZMRHHRodXRoQHJl ZGhhdC5jb20ACgkQLtnXdP5wLbUaFg//T5/yuRz8TitZBJ7som5DgyhUHaFnOgA+ uFeI3aDbqooRroAmElEMSzjas5oFVNaNUuk0OduYbXB8ZnQyZwD0ePfGvCHtNq1M YIYidNZQhf4D0m0r2WsjdnP2Yq1/J44WqyS2DmGWNgGp/80Ns4OVsm1sEgWowIsS 3RmQi/u7G3KulNkuCD9f1raAXodYPqYuhnxK6wBeaf0QnScsoGSoYkirrgu3Vjp9 mO78x5j6DrkCwwh2p3BP7rtORX3pZzjkBcqrL3buwLcuDiYMVtZbEf41uThlwLzd AyrQa1FoNJnQWafk6tZda52QhmVAUvoOhrxamzupWNPJeg2fkjKA3hfBSp+ic7yV 5+1MmWaXlULNFjHSeSmsCZBhSh+i0Q3Lij7bLRQ5iuJcP/+pNWUIv7Csn07OBrg1 aodc6APg510I6af3sf1VXRh20pqN2gBXEsYOODv/yuCmUR9k0dI9xecxSQEEntKk utY7HZGL1lQMU5kagR+VtZmRoBhloI3ie33wCaE0FzjLEdNDWMEr/xm3x/mB1eSn 8qeqssdpvUT3cdxWGHWMpKUiE7bVsjsxEE4Ozx3rTLnzHHUMrgTAaBCpJHb7uzwi 1XP5Scd0wPJmsoyFSfswIKQoeMdXqlGvUYTihk5Iin63lkDtlEP9wY8CVUrzYp4v 3+y8hjkxWCg= =fpyA -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2020-09-07' into staging * Fixes for cross-compiling with MinGW / compiling with MSYS2 * Enable cross-compiler builds in the Gitlab CI * Improvements / fixes for the crypto tests in the Gitlab CI * Fix for the "make check-acceptance" microblaze failure (required to get the Gitlab CI green again) # gpg: Signature made Mon 07 Sep 2020 13:03:31 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-09-07: target/microblaze: Collected fixes for env->iflags tests/qtest: do not list ahci-test twice gitlab: expand test coverage for crypto builds crypto: fix build with gcrypt enabled gitlab-ci: Add cross-compiling build tests stubs: Move qemu_fd_register stub to util/main-loop.c stubs: Move qemu_timer_notify_cb() and remove qemu_notify_event() stub configure: Allow automatic WHPX detection dockerfiles/debian-win64-cross: Download WHPX MinGW headers tests/Makefile: test-image-locking needs CONFIG_POSIX tests: Fixes building test-util-filemonitor.c on msys2/mingw tests: fixes test-vmstate.c compile error on msys2 tests: handling signal on win32 properly tests/docker: add python3-setuptools the docker images Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
e11bd71f89
|
@ -0,0 +1,113 @@
|
||||||
|
|
||||||
|
.cross_system_build_job_template: &cross_system_build_job_definition
|
||||||
|
stage: build
|
||||||
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||||
|
script:
|
||||||
|
- mkdir build
|
||||||
|
- cd build
|
||||||
|
- PKG_CONFIG_PATH=$PKG_CONFIG_PATH
|
||||||
|
../configure --enable-werror $QEMU_CONFIGURE_OPTS --disable-user
|
||||||
|
--target-list-exclude="aarch64-softmmu i386-softmmu microblaze-softmmu
|
||||||
|
mips-softmmu mipsel-softmmu mips64-softmmu ppc64-softmmu sh4-softmmu
|
||||||
|
xtensa-softmmu"
|
||||||
|
- make -j$(expr $(nproc) + 1) all check-build
|
||||||
|
|
||||||
|
.cross_user_build_job_template: &cross_user_build_job_definition
|
||||||
|
stage: build
|
||||||
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||||
|
script:
|
||||||
|
- mkdir build
|
||||||
|
- cd build
|
||||||
|
- PKG_CONFIG_PATH=$PKG_CONFIG_PATH
|
||||||
|
../configure --enable-werror $QEMU_CONFIGURE_OPTS --disable-system
|
||||||
|
- make -j$(expr $(nproc) + 1) all check-build
|
||||||
|
|
||||||
|
cross-armel-system:
|
||||||
|
<<: *cross_system_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-armel-cross
|
||||||
|
|
||||||
|
cross-armel-user:
|
||||||
|
<<: *cross_user_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-armel-cross
|
||||||
|
|
||||||
|
cross-armhf-system:
|
||||||
|
<<: *cross_system_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-armhf-cross
|
||||||
|
|
||||||
|
cross-armhf-user:
|
||||||
|
<<: *cross_user_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-armhf-cross
|
||||||
|
|
||||||
|
cross-arm64-system:
|
||||||
|
<<: *cross_system_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-arm64-cross
|
||||||
|
|
||||||
|
cross-arm64-user:
|
||||||
|
<<: *cross_user_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-arm64-cross
|
||||||
|
|
||||||
|
cross-mips-system:
|
||||||
|
<<: *cross_system_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-mips-cross
|
||||||
|
|
||||||
|
cross-mips-user:
|
||||||
|
<<: *cross_user_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-mips-cross
|
||||||
|
|
||||||
|
cross-mipsel-system:
|
||||||
|
<<: *cross_system_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-mipsel-cross
|
||||||
|
|
||||||
|
cross-mipsel-user:
|
||||||
|
<<: *cross_user_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-mipsel-cross
|
||||||
|
|
||||||
|
cross-mips64el-system:
|
||||||
|
<<: *cross_system_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-mips64el-cross
|
||||||
|
|
||||||
|
cross-mips64el-user:
|
||||||
|
<<: *cross_user_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-mips64el-cross
|
||||||
|
|
||||||
|
cross-ppc64el-system:
|
||||||
|
<<: *cross_system_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-ppc64el-cross
|
||||||
|
|
||||||
|
cross-ppc64el-user:
|
||||||
|
<<: *cross_user_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-ppc64el-cross
|
||||||
|
|
||||||
|
cross-s390x-system:
|
||||||
|
<<: *cross_system_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-s390x-cross
|
||||||
|
|
||||||
|
cross-s390x-user:
|
||||||
|
<<: *cross_user_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-s390x-cross
|
||||||
|
|
||||||
|
cross-win32-system:
|
||||||
|
<<: *cross_system_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-win32-cross
|
||||||
|
|
||||||
|
cross-win64-system:
|
||||||
|
<<: *cross_system_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: debian-win64-cross
|
|
@ -18,6 +18,7 @@ include:
|
||||||
- local: '/.gitlab-ci.d/edk2.yml'
|
- local: '/.gitlab-ci.d/edk2.yml'
|
||||||
- local: '/.gitlab-ci.d/opensbi.yml'
|
- local: '/.gitlab-ci.d/opensbi.yml'
|
||||||
- local: '/.gitlab-ci.d/containers.yml'
|
- local: '/.gitlab-ci.d/containers.yml'
|
||||||
|
- local: '/.gitlab-ci.d/crossbuilds.yml'
|
||||||
|
|
||||||
.native_build_job_template: &native_build_job_definition
|
.native_build_job_template: &native_build_job_definition
|
||||||
stage: build
|
stage: build
|
||||||
|
@ -132,6 +133,7 @@ build-system-fedora:
|
||||||
<<: *native_build_job_definition
|
<<: *native_build_job_definition
|
||||||
variables:
|
variables:
|
||||||
IMAGE: fedora
|
IMAGE: fedora
|
||||||
|
CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
|
||||||
TARGETS: tricore-softmmu unicore32-softmmu microblaze-softmmu mips-softmmu
|
TARGETS: tricore-softmmu unicore32-softmmu microblaze-softmmu mips-softmmu
|
||||||
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
|
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
|
@ -163,6 +165,7 @@ build-system-centos:
|
||||||
<<: *native_build_job_definition
|
<<: *native_build_job_definition
|
||||||
variables:
|
variables:
|
||||||
IMAGE: centos8
|
IMAGE: centos8
|
||||||
|
CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
|
||||||
TARGETS: ppc64-softmmu lm32-softmmu or1k-softmmu s390x-softmmu
|
TARGETS: ppc64-softmmu lm32-softmmu or1k-softmmu s390x-softmmu
|
||||||
x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
|
x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
|
@ -289,3 +292,69 @@ build-tci:
|
||||||
done
|
done
|
||||||
- QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
|
- QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
|
||||||
- QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
|
- QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
|
||||||
|
|
||||||
|
# Most jobs test latest gcrypt or nettle builds
|
||||||
|
#
|
||||||
|
# These jobs test old gcrypt and nettle from RHEL7
|
||||||
|
# which had some API differences.
|
||||||
|
build-crypto-old-nettle:
|
||||||
|
<<: *native_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: centos7
|
||||||
|
TARGETS: x86_64-softmmu x86_64-linux-user
|
||||||
|
CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
|
||||||
|
MAKE_CHECK_ARGS: check-build
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- build
|
||||||
|
|
||||||
|
check-crypto-old-nettle:
|
||||||
|
<<: *native_test_job_definition
|
||||||
|
needs:
|
||||||
|
- job: build-crypto-old-nettle
|
||||||
|
artifacts: true
|
||||||
|
variables:
|
||||||
|
IMAGE: centos7
|
||||||
|
MAKE_CHECK_ARGS: check
|
||||||
|
|
||||||
|
|
||||||
|
build-crypto-old-gcrypt:
|
||||||
|
<<: *native_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: centos7
|
||||||
|
TARGETS: x86_64-softmmu x86_64-linux-user
|
||||||
|
CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
|
||||||
|
MAKE_CHECK_ARGS: check-build
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- build
|
||||||
|
|
||||||
|
check-crypto-old-gcrypt:
|
||||||
|
<<: *native_test_job_definition
|
||||||
|
needs:
|
||||||
|
- job: build-crypto-old-gcrypt
|
||||||
|
artifacts: true
|
||||||
|
variables:
|
||||||
|
IMAGE: centos7
|
||||||
|
MAKE_CHECK_ARGS: check
|
||||||
|
|
||||||
|
|
||||||
|
build-crypto-only-gnutls:
|
||||||
|
<<: *native_build_job_definition
|
||||||
|
variables:
|
||||||
|
IMAGE: centos7
|
||||||
|
TARGETS: x86_64-softmmu x86_64-linux-user
|
||||||
|
CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
|
||||||
|
MAKE_CHECK_ARGS: check-build
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- build
|
||||||
|
|
||||||
|
check-crypto-only-gnutls:
|
||||||
|
<<: *native_test_job_definition
|
||||||
|
needs:
|
||||||
|
- job: build-crypto-only-gnutls
|
||||||
|
artifacts: true
|
||||||
|
variables:
|
||||||
|
IMAGE: centos7
|
||||||
|
MAKE_CHECK_ARGS: check
|
||||||
|
|
|
@ -3071,6 +3071,7 @@ M: Alex Bennée <alex.bennee@linaro.org>
|
||||||
R: Wainer dos Santos Moschetta <wainersm@redhat.com>
|
R: Wainer dos Santos Moschetta <wainersm@redhat.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: .gitlab-ci.yml
|
F: .gitlab-ci.yml
|
||||||
|
F: .gitlab-ci.d/crossbuilds.yml
|
||||||
|
|
||||||
Guest Test Compilation Support
|
Guest Test Compilation Support
|
||||||
M: Alex Bennée <alex.bennee@linaro.org>
|
M: Alex Bennée <alex.bennee@linaro.org>
|
||||||
|
|
|
@ -849,6 +849,7 @@ case $targetos in
|
||||||
MINGW32*)
|
MINGW32*)
|
||||||
mingw32="yes"
|
mingw32="yes"
|
||||||
hax="yes"
|
hax="yes"
|
||||||
|
whpx=""
|
||||||
vhost_user="no"
|
vhost_user="no"
|
||||||
audio_possible_drivers="dsound sdl"
|
audio_possible_drivers="dsound sdl"
|
||||||
if check_include dsound.h; then
|
if check_include dsound.h; then
|
||||||
|
@ -6962,6 +6963,8 @@ if test "$gcrypt" = "yes" ; then
|
||||||
if test "$gcrypt_hmac" = "yes" ; then
|
if test "$gcrypt_hmac" = "yes" ; then
|
||||||
echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
|
echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
|
echo "GCRYPT_CFLAGS=$gcrypt_cflags" >> $config_host_mak
|
||||||
|
echo "GCRYPT_LIBS=$gcrypt_libs" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$nettle" = "yes" ; then
|
if test "$nettle" = "yes" ; then
|
||||||
echo "CONFIG_NETTLE=y" >> $config_host_mak
|
echo "CONFIG_NETTLE=y" >> $config_host_mak
|
||||||
|
|
|
@ -23,24 +23,35 @@ crypto_ss.add(files(
|
||||||
'tlssession.c',
|
'tlssession.c',
|
||||||
))
|
))
|
||||||
|
|
||||||
if 'CONFIG_GCRYPT' in config_host
|
if 'CONFIG_NETTLE' in config_host
|
||||||
wo_nettle = files('hash-gcrypt.c', 'pbkdf-gcrypt.c')
|
crypto_ss.add(files('hash-nettle.c', 'hmac-nettle.c', 'pbkdf-nettle.c'))
|
||||||
|
elif 'CONFIG_GCRYPT' in config_host
|
||||||
|
crypto_ss.add(files('hash-gcrypt.c', 'pbkdf-gcrypt.c'))
|
||||||
|
if 'CONFIG_GCRYPT_HMAC' in config_host
|
||||||
|
crypto_ss.add(files('hmac-gcrypt.c'))
|
||||||
|
else
|
||||||
|
crypto_ss.add(files('hmac-glib.c'))
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
wo_nettle = files('hash-glib.c', 'pbkdf-stub.c')
|
crypto_ss.add(files('hash-glib.c', 'hmac-glib.c', 'pbkdf-stub.c'))
|
||||||
endif
|
endif
|
||||||
if 'CONFIG_GCRYPT_HMAC' not in config_host
|
|
||||||
wo_nettle += files('hmac-glib.c')
|
|
||||||
endif
|
|
||||||
crypto_ss.add(when: [nettle, 'CONFIG_NETTLE'],
|
|
||||||
if_true: files('hash-nettle.c', 'hmac-nettle.c', 'pbkdf-nettle.c'),
|
|
||||||
if_false: wo_nettle)
|
|
||||||
|
|
||||||
crypto_ss.add(when: 'CONFIG_SECRET_KEYRING', if_true: files('secret_keyring.c'))
|
crypto_ss.add(when: 'CONFIG_SECRET_KEYRING', if_true: files('secret_keyring.c'))
|
||||||
crypto_ss.add(when: 'CONFIG_QEMU_PRIVATE_XTS', if_true: files('xts.c'))
|
crypto_ss.add(when: 'CONFIG_QEMU_PRIVATE_XTS', if_true: files('xts.c'))
|
||||||
crypto_ss.add(when: 'CONFIG_GCRYPT_HMAC', if_true: files('hmac-gcrypt.c'))
|
|
||||||
crypto_ss.add(when: 'CONFIG_AF_ALG', if_true: files('afalg.c', 'cipher-afalg.c', 'hash-afalg.c'))
|
crypto_ss.add(when: 'CONFIG_AF_ALG', if_true: files('afalg.c', 'cipher-afalg.c', 'hash-afalg.c'))
|
||||||
crypto_ss.add(when: 'CONFIG_GNUTLS', if_true: files('tls-cipher-suites.c'))
|
crypto_ss.add(when: 'CONFIG_GNUTLS', if_true: files('tls-cipher-suites.c'))
|
||||||
|
|
||||||
|
if 'CONFIG_NETTLE' in config_host
|
||||||
|
crypto_ss.add(nettle)
|
||||||
|
elif 'CONFIG_GCRYPT' in config_host
|
||||||
|
crypto_ss.add(gcrypt)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if 'CONFIG_GNUTLS' in config_host
|
||||||
|
crypto_ss.add(gnutls)
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
crypto_ss = crypto_ss.apply(config_host, strict: false)
|
crypto_ss = crypto_ss.apply(config_host, strict: false)
|
||||||
libcrypto = static_library('crypto', crypto_ss.sources() + genh,
|
libcrypto = static_library('crypto', crypto_ss.sources() + genh,
|
||||||
dependencies: [crypto_ss.dependencies()],
|
dependencies: [crypto_ss.dependencies()],
|
||||||
|
@ -52,12 +63,21 @@ crypto = declare_dependency(link_whole: libcrypto,
|
||||||
|
|
||||||
util_ss.add(files('aes.c'))
|
util_ss.add(files('aes.c'))
|
||||||
util_ss.add(files('init.c'))
|
util_ss.add(files('init.c'))
|
||||||
|
|
||||||
if 'CONFIG_GCRYPT' in config_host
|
if 'CONFIG_GCRYPT' in config_host
|
||||||
util_ss.add(files('random-gcrypt.c'))
|
util_ss.add(files('random-gcrypt.c'))
|
||||||
elif 'CONFIG_GNUTLS' in config_host
|
elif 'CONFIG_GNUTLS' in config_host
|
||||||
util_ss.add(files('random-gnutls.c'), gnutls)
|
util_ss.add(files('random-gnutls.c'))
|
||||||
elif 'CONFIG_RNG_NONE' in config_host
|
elif 'CONFIG_RNG_NONE' in config_host
|
||||||
util_ss.add(files('random-none.c'))
|
util_ss.add(files('random-none.c'))
|
||||||
else
|
else
|
||||||
util_ss.add(files('random-platform.c'))
|
util_ss.add(files('random-platform.c'))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if 'CONFIG_GCRYPT' in config_host
|
||||||
|
util_ss.add(gcrypt)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if 'CONFIG_GNUTLS' in config_host
|
||||||
|
util_ss.add(gnutls)
|
||||||
|
endif
|
||||||
|
|
|
@ -116,6 +116,11 @@ urcubp = not_found
|
||||||
if 'CONFIG_TRACE_UST' in config_host
|
if 'CONFIG_TRACE_UST' in config_host
|
||||||
urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split())
|
urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split())
|
||||||
endif
|
endif
|
||||||
|
gcrypt = not_found
|
||||||
|
if 'CONFIG_GCRYPT' in config_host
|
||||||
|
gcrypt = declare_dependency(compile_args: config_host['GCRYPT_CFLAGS'].split(),
|
||||||
|
link_args: config_host['GCRYPT_LIBS'].split())
|
||||||
|
endif
|
||||||
nettle = not_found
|
nettle = not_found
|
||||||
if 'CONFIG_NETTLE' in config_host
|
if 'CONFIG_NETTLE' in config_host
|
||||||
nettle = declare_dependency(compile_args: config_host['NETTLE_CFLAGS'].split(),
|
nettle = declare_dependency(compile_args: config_host['NETTLE_CFLAGS'].split(),
|
||||||
|
|
|
@ -14,8 +14,3 @@ int64_t cpu_get_icount_raw(void)
|
||||||
{
|
{
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
void qemu_timer_notify_cb(void *opaque, QEMUClockType type)
|
|
||||||
{
|
|
||||||
qemu_notify_event();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
#include "qemu/osdep.h"
|
|
||||||
#include "qemu/main-loop.h"
|
|
||||||
|
|
||||||
void qemu_fd_register(int fd)
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -9,7 +9,6 @@ stub_ss.add(files('cpu-get-clock.c'))
|
||||||
stub_ss.add(files('cpu-get-icount.c'))
|
stub_ss.add(files('cpu-get-icount.c'))
|
||||||
stub_ss.add(files('dump.c'))
|
stub_ss.add(files('dump.c'))
|
||||||
stub_ss.add(files('error-printf.c'))
|
stub_ss.add(files('error-printf.c'))
|
||||||
stub_ss.add(files('fd-register.c'))
|
|
||||||
stub_ss.add(files('fdset.c'))
|
stub_ss.add(files('fdset.c'))
|
||||||
stub_ss.add(files('fw_cfg.c'))
|
stub_ss.add(files('fw_cfg.c'))
|
||||||
stub_ss.add(files('gdbstub.c'))
|
stub_ss.add(files('gdbstub.c'))
|
||||||
|
@ -24,9 +23,9 @@ stub_ss.add(files('machine-init-done.c'))
|
||||||
stub_ss.add(files('migr-blocker.c'))
|
stub_ss.add(files('migr-blocker.c'))
|
||||||
stub_ss.add(files('monitor.c'))
|
stub_ss.add(files('monitor.c'))
|
||||||
stub_ss.add(files('monitor-core.c'))
|
stub_ss.add(files('monitor-core.c'))
|
||||||
stub_ss.add(files('notify-event.c'))
|
|
||||||
stub_ss.add(files('pci-bus.c'))
|
stub_ss.add(files('pci-bus.c'))
|
||||||
stub_ss.add(files('pci-host-piix.c'))
|
stub_ss.add(files('pci-host-piix.c'))
|
||||||
|
stub_ss.add(files('qemu-timer-notify-cb.c'))
|
||||||
stub_ss.add(files('qmp_memory_device.c'))
|
stub_ss.add(files('qmp_memory_device.c'))
|
||||||
stub_ss.add(files('qtest.c'))
|
stub_ss.add(files('qtest.c'))
|
||||||
stub_ss.add(files('ram-block.c'))
|
stub_ss.add(files('ram-block.c'))
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
#include "qemu/osdep.h"
|
|
||||||
#include "qemu/main-loop.h"
|
|
||||||
|
|
||||||
void qemu_notify_event(void)
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include "qemu/osdep.h"
|
||||||
|
#include "sysemu/cpus.h"
|
||||||
|
#include "qemu/main-loop.h"
|
||||||
|
|
||||||
|
void qemu_timer_notify_cb(void *opaque, QEMUClockType type)
|
||||||
|
{
|
||||||
|
qemu_notify_event();
|
||||||
|
}
|
|
@ -80,6 +80,16 @@ static void mb_cpu_set_pc(CPUState *cs, vaddr value)
|
||||||
MicroBlazeCPU *cpu = MICROBLAZE_CPU(cs);
|
MicroBlazeCPU *cpu = MICROBLAZE_CPU(cs);
|
||||||
|
|
||||||
cpu->env.pc = value;
|
cpu->env.pc = value;
|
||||||
|
/* Ensure D_FLAG and IMM_FLAG are clear for the new PC */
|
||||||
|
cpu->env.iflags = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mb_cpu_synchronize_from_tb(CPUState *cs, TranslationBlock *tb)
|
||||||
|
{
|
||||||
|
MicroBlazeCPU *cpu = MICROBLAZE_CPU(cs);
|
||||||
|
|
||||||
|
cpu->env.pc = tb->pc;
|
||||||
|
cpu->env.iflags = tb->flags & IFLAGS_TB_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool mb_cpu_has_work(CPUState *cs)
|
static bool mb_cpu_has_work(CPUState *cs)
|
||||||
|
@ -321,6 +331,7 @@ static void mb_cpu_class_init(ObjectClass *oc, void *data)
|
||||||
cc->cpu_exec_interrupt = mb_cpu_exec_interrupt;
|
cc->cpu_exec_interrupt = mb_cpu_exec_interrupt;
|
||||||
cc->dump_state = mb_cpu_dump_state;
|
cc->dump_state = mb_cpu_dump_state;
|
||||||
cc->set_pc = mb_cpu_set_pc;
|
cc->set_pc = mb_cpu_set_pc;
|
||||||
|
cc->synchronize_from_tb = mb_cpu_synchronize_from_tb;
|
||||||
cc->gdb_read_register = mb_cpu_gdb_read_register;
|
cc->gdb_read_register = mb_cpu_gdb_read_register;
|
||||||
cc->gdb_write_register = mb_cpu_gdb_write_register;
|
cc->gdb_write_register = mb_cpu_gdb_write_register;
|
||||||
cc->tlb_fill = mb_cpu_tlb_fill;
|
cc->tlb_fill = mb_cpu_tlb_fill;
|
||||||
|
|
|
@ -270,7 +270,8 @@ struct CPUMBState {
|
||||||
#define D_FLAG (1 << 19) /* Bit in ESR. */
|
#define D_FLAG (1 << 19) /* Bit in ESR. */
|
||||||
|
|
||||||
/* TB dependent CPUMBState. */
|
/* TB dependent CPUMBState. */
|
||||||
#define IFLAGS_TB_MASK (D_FLAG | IMM_FLAG | DRTI_FLAG | DRTE_FLAG | DRTB_FLAG)
|
#define IFLAGS_TB_MASK (D_FLAG | BIMM_FLAG | IMM_FLAG | \
|
||||||
|
DRTI_FLAG | DRTE_FLAG | DRTB_FLAG)
|
||||||
#define MSR_TB_MASK (MSR_UM | MSR_VM | MSR_EE)
|
#define MSR_TB_MASK (MSR_UM | MSR_VM | MSR_EE)
|
||||||
|
|
||||||
uint32_t iflags;
|
uint32_t iflags;
|
||||||
|
|
|
@ -113,7 +113,10 @@ void mb_cpu_do_interrupt(CPUState *cs)
|
||||||
uint32_t t, msr = mb_cpu_read_msr(env);
|
uint32_t t, msr = mb_cpu_read_msr(env);
|
||||||
|
|
||||||
/* IMM flag cannot propagate across a branch and into the dslot. */
|
/* IMM flag cannot propagate across a branch and into the dslot. */
|
||||||
assert(!((env->iflags & D_FLAG) && (env->iflags & IMM_FLAG)));
|
assert((env->iflags & (D_FLAG | IMM_FLAG)) != (D_FLAG | IMM_FLAG));
|
||||||
|
/* BIMM flag cannot be set without D_FLAG. */
|
||||||
|
assert((env->iflags & (D_FLAG | BIMM_FLAG)) != BIMM_FLAG);
|
||||||
|
/* RTI flags are private to translate. */
|
||||||
assert(!(env->iflags & (DRTI_FLAG | DRTE_FLAG | DRTB_FLAG)));
|
assert(!(env->iflags & (DRTI_FLAG | DRTE_FLAG | DRTB_FLAG)));
|
||||||
env->res_addr = RES_ADDR_NONE;
|
env->res_addr = RES_ADDR_NONE;
|
||||||
switch (cs->exception_index) {
|
switch (cs->exception_index) {
|
||||||
|
@ -146,7 +149,7 @@ void mb_cpu_do_interrupt(CPUState *cs)
|
||||||
env->pc, env->ear,
|
env->pc, env->ear,
|
||||||
env->esr, env->iflags);
|
env->esr, env->iflags);
|
||||||
log_cpu_state_mask(CPU_LOG_INT, cs, 0);
|
log_cpu_state_mask(CPU_LOG_INT, cs, 0);
|
||||||
env->iflags &= ~(IMM_FLAG | D_FLAG);
|
env->iflags = 0;
|
||||||
env->pc = cpu->cfg.base_vectors + 0x20;
|
env->pc = cpu->cfg.base_vectors + 0x20;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -186,14 +189,14 @@ void mb_cpu_do_interrupt(CPUState *cs)
|
||||||
"exception at pc=%x ear=%" PRIx64 " iflags=%x\n",
|
"exception at pc=%x ear=%" PRIx64 " iflags=%x\n",
|
||||||
env->pc, env->ear, env->iflags);
|
env->pc, env->ear, env->iflags);
|
||||||
log_cpu_state_mask(CPU_LOG_INT, cs, 0);
|
log_cpu_state_mask(CPU_LOG_INT, cs, 0);
|
||||||
env->iflags &= ~(IMM_FLAG | D_FLAG);
|
env->iflags = 0;
|
||||||
env->pc = cpu->cfg.base_vectors + 0x20;
|
env->pc = cpu->cfg.base_vectors + 0x20;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXCP_IRQ:
|
case EXCP_IRQ:
|
||||||
assert(!(msr & (MSR_EIP | MSR_BIP)));
|
assert(!(msr & (MSR_EIP | MSR_BIP)));
|
||||||
assert(msr & MSR_IE);
|
assert(msr & MSR_IE);
|
||||||
assert(!(env->iflags & D_FLAG));
|
assert(!(env->iflags & (D_FLAG | IMM_FLAG)));
|
||||||
|
|
||||||
t = (msr & (MSR_VM | MSR_UM)) << 1;
|
t = (msr & (MSR_VM | MSR_UM)) << 1;
|
||||||
|
|
||||||
|
@ -226,13 +229,14 @@ void mb_cpu_do_interrupt(CPUState *cs)
|
||||||
mb_cpu_write_msr(env, msr);
|
mb_cpu_write_msr(env, msr);
|
||||||
|
|
||||||
env->regs[14] = env->pc;
|
env->regs[14] = env->pc;
|
||||||
|
env->iflags = 0;
|
||||||
env->pc = cpu->cfg.base_vectors + 0x10;
|
env->pc = cpu->cfg.base_vectors + 0x10;
|
||||||
//log_cpu_state_mask(CPU_LOG_INT, cs, 0);
|
//log_cpu_state_mask(CPU_LOG_INT, cs, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXCP_HW_BREAK:
|
case EXCP_HW_BREAK:
|
||||||
assert(!(env->iflags & IMM_FLAG));
|
assert(!(env->iflags & (D_FLAG | IMM_FLAG)));
|
||||||
assert(!(env->iflags & D_FLAG));
|
|
||||||
t = (msr & (MSR_VM | MSR_UM)) << 1;
|
t = (msr & (MSR_VM | MSR_UM)) << 1;
|
||||||
qemu_log_mask(CPU_LOG_INT,
|
qemu_log_mask(CPU_LOG_INT,
|
||||||
"break at pc=%x msr=%x %x iflags=%x\n",
|
"break at pc=%x msr=%x %x iflags=%x\n",
|
||||||
|
@ -242,6 +246,7 @@ void mb_cpu_do_interrupt(CPUState *cs)
|
||||||
msr |= t;
|
msr |= t;
|
||||||
msr |= MSR_BIP;
|
msr |= MSR_BIP;
|
||||||
env->regs[16] = env->pc;
|
env->regs[16] = env->pc;
|
||||||
|
env->iflags = 0;
|
||||||
env->pc = cpu->cfg.base_vectors + 0x18;
|
env->pc = cpu->cfg.base_vectors + 0x18;
|
||||||
mb_cpu_write_msr(env, msr);
|
mb_cpu_write_msr(env, msr);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -91,8 +91,8 @@ static int typeb_imm(DisasContext *dc, int x)
|
||||||
static void t_sync_flags(DisasContext *dc)
|
static void t_sync_flags(DisasContext *dc)
|
||||||
{
|
{
|
||||||
/* Synch the tb dependent flags between translator and runtime. */
|
/* Synch the tb dependent flags between translator and runtime. */
|
||||||
if ((dc->tb_flags ^ dc->base.tb->flags) & ~MSR_TB_MASK) {
|
if ((dc->tb_flags ^ dc->base.tb->flags) & IFLAGS_TB_MASK) {
|
||||||
tcg_gen_movi_i32(cpu_iflags, dc->tb_flags & ~MSR_TB_MASK);
|
tcg_gen_movi_i32(cpu_iflags, dc->tb_flags & IFLAGS_TB_MASK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,9 @@ check-unit-$(CONFIG_BLOCK) += tests/test-blockjob$(EXESUF)
|
||||||
check-unit-$(CONFIG_BLOCK) += tests/test-blockjob-txn$(EXESUF)
|
check-unit-$(CONFIG_BLOCK) += tests/test-blockjob-txn$(EXESUF)
|
||||||
check-unit-$(CONFIG_BLOCK) += tests/test-block-backend$(EXESUF)
|
check-unit-$(CONFIG_BLOCK) += tests/test-block-backend$(EXESUF)
|
||||||
check-unit-$(CONFIG_BLOCK) += tests/test-block-iothread$(EXESUF)
|
check-unit-$(CONFIG_BLOCK) += tests/test-block-iothread$(EXESUF)
|
||||||
|
ifeq ($(CONFIG_POSIX),y)
|
||||||
check-unit-$(CONFIG_BLOCK) += tests/test-image-locking$(EXESUF)
|
check-unit-$(CONFIG_BLOCK) += tests/test-image-locking$(EXESUF)
|
||||||
|
endif
|
||||||
check-unit-y += tests/test-x86-cpuid$(EXESUF)
|
check-unit-y += tests/test-x86-cpuid$(EXESUF)
|
||||||
# all code tested by test-x86-cpuid is inside topology.h
|
# all code tested by test-x86-cpuid is inside topology.h
|
||||||
ifeq ($(CONFIG_SOFTMMU),y)
|
ifeq ($(CONFIG_SOFTMMU),y)
|
||||||
|
|
|
@ -15,9 +15,11 @@ ENV PACKAGES \
|
||||||
gettext \
|
gettext \
|
||||||
git \
|
git \
|
||||||
glib2-devel \
|
glib2-devel \
|
||||||
|
gnutls-devel \
|
||||||
libaio-devel \
|
libaio-devel \
|
||||||
libepoxy-devel \
|
libepoxy-devel \
|
||||||
libfdt-devel \
|
libfdt-devel \
|
||||||
|
libgcrypt-devel \
|
||||||
librdmacm-devel \
|
librdmacm-devel \
|
||||||
libzstd-devel \
|
libzstd-devel \
|
||||||
lzo-devel \
|
lzo-devel \
|
||||||
|
|
|
@ -13,6 +13,7 @@ ENV PACKAGES \
|
||||||
glib2-devel \
|
glib2-devel \
|
||||||
libaio-devel \
|
libaio-devel \
|
||||||
libepoxy-devel \
|
libepoxy-devel \
|
||||||
|
libgcrypt-devel \
|
||||||
lzo-devel \
|
lzo-devel \
|
||||||
make \
|
make \
|
||||||
mesa-libEGL-devel \
|
mesa-libEGL-devel \
|
||||||
|
|
|
@ -32,7 +32,14 @@ RUN apt-get update && \
|
||||||
mxe-$TARGET-w64-mingw32.shared-sdl2 \
|
mxe-$TARGET-w64-mingw32.shared-sdl2 \
|
||||||
mxe-$TARGET-w64-mingw32.shared-sdl2-mixer \
|
mxe-$TARGET-w64-mingw32.shared-sdl2-mixer \
|
||||||
mxe-$TARGET-w64-mingw32.shared-sdl2-gfx \
|
mxe-$TARGET-w64-mingw32.shared-sdl2-gfx \
|
||||||
mxe-$TARGET-w64-mingw32.shared-zlib
|
mxe-$TARGET-w64-mingw32.shared-zlib \
|
||||||
|
curl && \
|
||||||
|
curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvEmulation.h \
|
||||||
|
"https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvemulation.h?format=raw" && \
|
||||||
|
curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvPlatform.h \
|
||||||
|
"https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatform.h?format=raw" && \
|
||||||
|
curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/winhvplatformdefs.h \
|
||||||
|
"https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatformdefs.h?format=raw"
|
||||||
|
|
||||||
# Specify the cross prefix for this image (see tests/docker/common.rc)
|
# Specify the cross prefix for this image (see tests/docker/common.rc)
|
||||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32.shared-
|
ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32.shared-
|
||||||
|
|
|
@ -29,6 +29,7 @@ RUN apt update && \
|
||||||
pkg-config \
|
pkg-config \
|
||||||
psmisc \
|
psmisc \
|
||||||
python3 \
|
python3 \
|
||||||
|
python3-setuptools \
|
||||||
python3-sphinx \
|
python3-sphinx \
|
||||||
texinfo \
|
texinfo \
|
||||||
$(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2)
|
$(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2)
|
||||||
|
|
|
@ -28,4 +28,5 @@ RUN apt update && \
|
||||||
pkg-config \
|
pkg-config \
|
||||||
psmisc \
|
psmisc \
|
||||||
python3 \
|
python3 \
|
||||||
|
python3-setuptools \
|
||||||
$(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2)
|
$(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2)
|
||||||
|
|
|
@ -49,7 +49,6 @@ qtests_i386 = \
|
||||||
qtests_pci + \
|
qtests_pci + \
|
||||||
['fdc-test',
|
['fdc-test',
|
||||||
'ide-test',
|
'ide-test',
|
||||||
'ahci-test',
|
|
||||||
'hd-geo-test',
|
'hd-geo-test',
|
||||||
'boot-order-test',
|
'boot-order-test',
|
||||||
'bios-tables-test',
|
'bios-tables-test',
|
||||||
|
|
|
@ -554,6 +554,9 @@ static void sigabrt_handler(int signo)
|
||||||
|
|
||||||
static void setup_sigabrt_handler(void)
|
static void setup_sigabrt_handler(void)
|
||||||
{
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
signal(SIGABRT, sigabrt_handler);
|
||||||
|
#else
|
||||||
struct sigaction sigact;
|
struct sigaction sigact;
|
||||||
|
|
||||||
sigact = (struct sigaction) {
|
sigact = (struct sigaction) {
|
||||||
|
@ -562,6 +565,7 @@ static void setup_sigabrt_handler(void)
|
||||||
};
|
};
|
||||||
sigemptyset(&sigact.sa_mask);
|
sigemptyset(&sigact.sa_mask);
|
||||||
sigaction(SIGABRT, &sigact, NULL);
|
sigaction(SIGABRT, &sigact, NULL);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "qemu/filemonitor.h"
|
#include "qemu/filemonitor.h"
|
||||||
|
|
||||||
|
#include <glib/gstdio.h>
|
||||||
|
|
||||||
#include <utime.h>
|
#include <utime.h>
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -617,7 +619,7 @@ test_file_monitor_events(void)
|
||||||
if (debug) {
|
if (debug) {
|
||||||
g_printerr("Mkdir %s\n", pathsrc);
|
g_printerr("Mkdir %s\n", pathsrc);
|
||||||
}
|
}
|
||||||
if (mkdir(pathsrc, 0700) < 0) {
|
if (g_mkdir_with_parents(pathsrc, 0700) < 0) {
|
||||||
g_printerr("Unable to mkdir %s: %s",
|
g_printerr("Unable to mkdir %s: %s",
|
||||||
pathsrc, strerror(errno));
|
pathsrc, strerror(errno));
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
|
@ -881,8 +881,8 @@ static gint interval_cmp(gconstpointer a, gconstpointer b, gpointer user_data)
|
||||||
/* ID comparison function */
|
/* ID comparison function */
|
||||||
static gint int_cmp(gconstpointer a, gconstpointer b, gpointer user_data)
|
static gint int_cmp(gconstpointer a, gconstpointer b, gpointer user_data)
|
||||||
{
|
{
|
||||||
uint ua = GPOINTER_TO_UINT(a);
|
guint ua = GPOINTER_TO_UINT(a);
|
||||||
uint ub = GPOINTER_TO_UINT(b);
|
guint ub = GPOINTER_TO_UINT(b);
|
||||||
return (ua > ub) - (ua < ub);
|
return (ua > ub) - (ua < ub);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -179,6 +179,10 @@ static int max_priority;
|
||||||
static int glib_pollfds_idx;
|
static int glib_pollfds_idx;
|
||||||
static int glib_n_poll_fds;
|
static int glib_n_poll_fds;
|
||||||
|
|
||||||
|
void qemu_fd_register(int fd)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
static void glib_pollfds_fill(int64_t *cur_timeout)
|
static void glib_pollfds_fill(int64_t *cur_timeout)
|
||||||
{
|
{
|
||||||
GMainContext *context = g_main_context_default();
|
GMainContext *context = g_main_context_default();
|
||||||
|
|
Loading…
Reference in New Issue