Maintainer updates for testing, gitlab, gdbstub and plugins:

- add dtc package to openbsd VMs
   - use -fno-stack-protector for non-stdlib tests
   - split alpha and sh4 compilers into legacy image
   - harmonise other compilers into debian-all-test-cross
   - fix NULL check in gdb_regs
   - fix memleak in semihosting
   - remove unused parameter in plugin code
   - fix fd leak in lockstep plugin
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmVBCvQACgkQ+9DbCVqe
 KkR8jAgAjFC3BE6fu80zYT0Dmeu8zh20QY/wgKQebaFfGEmPL4Bqkl2D/Rx7PhQA
 EH8fR/LAH/iXAO07+LYOB6QiyMb9PWiXS52iHyE3q11mOaM8iKkkj7a59NW8DfGC
 biSrj9o3wpz9gGkJjzTCcHC8DOMbrAuE12XnmhW7uTqqkrcTMC393dSEeyL+nrP9
 lKS5XzFyn3FOT4YIL8hAC02ObKH4LpWIO3gdWeDAo56yg24fLir9a2wYSXMaxQtN
 kDf6UtL97CIIhbNi6qrUPBB13MV8MlXno3wnb9+E4Cn5sGntGSnTyh7j6XrGqYj9
 p/Vio6ye8xP1IjlavKiBM0nnozcAhw==
 =ZOMS
 -----END PGP SIGNATURE-----

Merge tag 'pull-halloween-omnibus-311023-2' of https://gitlab.com/stsquad/qemu into staging

Maintainer updates for testing, gitlab, gdbstub and plugins:

  - add dtc package to openbsd VMs
  - use -fno-stack-protector for non-stdlib tests
  - split alpha and sh4 compilers into legacy image
  - harmonise other compilers into debian-all-test-cross
  - fix NULL check in gdb_regs
  - fix memleak in semihosting
  - remove unused parameter in plugin code
  - fix fd leak in lockstep plugin

# -----BEGIN PGP SIGNATURE-----
#
# iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmVBCvQACgkQ+9DbCVqe
# KkR8jAgAjFC3BE6fu80zYT0Dmeu8zh20QY/wgKQebaFfGEmPL4Bqkl2D/Rx7PhQA
# EH8fR/LAH/iXAO07+LYOB6QiyMb9PWiXS52iHyE3q11mOaM8iKkkj7a59NW8DfGC
# biSrj9o3wpz9gGkJjzTCcHC8DOMbrAuE12XnmhW7uTqqkrcTMC393dSEeyL+nrP9
# lKS5XzFyn3FOT4YIL8hAC02ObKH4LpWIO3gdWeDAo56yg24fLir9a2wYSXMaxQtN
# kDf6UtL97CIIhbNi6qrUPBB13MV8MlXno3wnb9+E4Cn5sGntGSnTyh7j6XrGqYj9
# p/Vio6ye8xP1IjlavKiBM0nnozcAhw==
# =ZOMS
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 31 Oct 2023 23:11:00 JST
# gpg:                using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44
# gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [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: 6685 AE99 E751 67BC AFC8  DF35 FBD0 DB09 5A9E 2A44

* tag 'pull-halloween-omnibus-311023-2' of https://gitlab.com/stsquad/qemu:
  contrib/plugins: Close file descriptor on error return
  plugins: Remove an extra parameter
  semihosting: fix memleak at semihosting_arg_fallback
  gdbstub: Check if gdb_regs is NULL
  tests/docker: upgrade debian-all-test-cross to bookworm
  tests/docker: use debian-all-test-cross for sparc64
  tests/docker: use debian-all-test-cross for riscv64
  tests/docker: use debian-all-test-cross for mips
  tests/docker: use debian-all-test-cross for mips64
  tests/docker: use debian-all-test-cross for m68k
  tests/docker: use debian-all-test-cross for hppa
  tests/docker: use debian-all-test-cross for power
  tests/docker: move sh4 to use debian-legacy-test-cross
  tests/docker: use debian-legacy-test-cross for alpha
  gitlab: add build-loongarch to matrix
  gitlab: clean-up build-soft-softmmu job
  gitlab: split alpha testing into a legacy container
  tests/tcg: Add -fno-stack-protector
  tests/vm/openbsd: Use the system dtc package

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2023-11-01 06:57:29 +09:00
commit 997ef293d2
30 changed files with 196 additions and 289 deletions

View file

@ -256,6 +256,7 @@ build-user:
variables: variables:
IMAGE: debian-all-test-cross IMAGE: debian-all-test-cross
CONFIGURE_ARGS: --disable-tools --disable-system CONFIGURE_ARGS: --disable-tools --disable-system
--target-list-exclude=alpha-linux-user,sh4-linux-user
MAKE_CHECK_ARGS: check-tcg MAKE_CHECK_ARGS: check-tcg
build-user-static: build-user-static:
@ -265,6 +266,18 @@ build-user-static:
variables: variables:
IMAGE: debian-all-test-cross IMAGE: debian-all-test-cross
CONFIGURE_ARGS: --disable-tools --disable-system --static CONFIGURE_ARGS: --disable-tools --disable-system --static
--target-list-exclude=alpha-linux-user,sh4-linux-user
MAKE_CHECK_ARGS: check-tcg
# targets stuck on older compilers
build-legacy:
extends: .native_build_job_template
needs:
job: amd64-debian-legacy-cross-container
variables:
IMAGE: debian-legacy-test-cross
TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user
CONFIGURE_ARGS: --disable-tools
MAKE_CHECK_ARGS: check-tcg MAKE_CHECK_ARGS: check-tcg
build-user-hexagon: build-user-hexagon:
@ -277,7 +290,9 @@ build-user-hexagon:
CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
MAKE_CHECK_ARGS: check-tcg MAKE_CHECK_ARGS: check-tcg
# Only build the softmmu targets we have check-tcg tests for # Build the softmmu targets we have check-tcg tests and compilers in
# our omnibus all-test-cross container. Those targets that haven't got
# Debian cross compiler support need to use special containers.
build-some-softmmu: build-some-softmmu:
extends: .native_build_job_template extends: .native_build_job_template
needs: needs:
@ -285,7 +300,18 @@ build-some-softmmu:
variables: variables:
IMAGE: debian-all-test-cross IMAGE: debian-all-test-cross
CONFIGURE_ARGS: --disable-tools --enable-debug CONFIGURE_ARGS: --disable-tools --enable-debug
TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu TARGETS: arm-softmmu aarch64-softmmu i386-softmmu riscv64-softmmu
s390x-softmmu x86_64-softmmu
MAKE_CHECK_ARGS: check-tcg
build-loongarch64:
extends: .native_build_job_template
needs:
job: loongarch-debian-cross-container
variables:
IMAGE: debian-loongarch-cross
CONFIGURE_ARGS: --disable-tools --enable-debug
TARGETS: loongarch64-linux-user loongarch64-softmmu
MAKE_CHECK_ARGS: check-tcg MAKE_CHECK_ARGS: check-tcg
# We build tricore in a very minimal tricore only container # We build tricore in a very minimal tricore only container
@ -318,7 +344,7 @@ clang-user:
variables: variables:
IMAGE: debian-all-test-cross IMAGE: debian-all-test-cross
CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
--target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user --target-list-exclude=alpha-linux-user,microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
--extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
MAKE_CHECK_ARGS: check-unit check-tcg MAKE_CHECK_ARGS: check-unit check-tcg
@ -505,7 +531,7 @@ build-tci:
variables: variables:
IMAGE: debian-all-test-cross IMAGE: debian-all-test-cross
script: script:
- TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64" - TARGETS="aarch64 arm hppa m68k microblaze ppc64 s390x x86_64"
- mkdir build - mkdir build
- cd build - cd build
- ../configure --enable-tcg-interpreter --disable-docs --disable-gtk --disable-vnc - ../configure --enable-tcg-interpreter --disable-docs --disable-gtk --disable-vnc

View file

@ -1,9 +1,3 @@
alpha-debian-cross-container:
extends: .container_job_template
stage: containers
variables:
NAME: debian-alpha-cross
amd64-debian-cross-container: amd64-debian-cross-container:
extends: .container_job_template extends: .container_job_template
stage: containers stage: containers
@ -16,6 +10,12 @@ amd64-debian-user-cross-container:
variables: variables:
NAME: debian-all-test-cross NAME: debian-all-test-cross
amd64-debian-legacy-cross-container:
extends: .container_job_template
stage: containers
variables:
NAME: debian-legacy-test-cross
arm64-debian-cross-container: arm64-debian-cross-container:
extends: .container_job_template extends: .container_job_template
stage: containers stage: containers
@ -40,23 +40,11 @@ hexagon-cross-container:
variables: variables:
NAME: debian-hexagon-cross NAME: debian-hexagon-cross
hppa-debian-cross-container: loongarch-debian-cross-container:
extends: .container_job_template extends: .container_job_template
stage: containers stage: containers
variables: variables:
NAME: debian-hppa-cross NAME: debian-loongarch-cross
m68k-debian-cross-container:
extends: .container_job_template
stage: containers
variables:
NAME: debian-m68k-cross
mips64-debian-cross-container:
extends: .container_job_template
stage: containers
variables:
NAME: debian-mips64-cross
mips64el-debian-cross-container: mips64el-debian-cross-container:
extends: .container_job_template extends: .container_job_template
@ -64,24 +52,12 @@ mips64el-debian-cross-container:
variables: variables:
NAME: debian-mips64el-cross NAME: debian-mips64el-cross
mips-debian-cross-container:
extends: .container_job_template
stage: containers
variables:
NAME: debian-mips-cross
mipsel-debian-cross-container: mipsel-debian-cross-container:
extends: .container_job_template extends: .container_job_template
stage: containers stage: containers
variables: variables:
NAME: debian-mipsel-cross NAME: debian-mipsel-cross
powerpc-test-cross-container:
extends: .container_job_template
stage: containers
variables:
NAME: debian-powerpc-test-cross
ppc64el-debian-cross-container: ppc64el-debian-cross-container:
extends: .container_job_template extends: .container_job_template
stage: containers stage: containers
@ -97,31 +73,12 @@ riscv64-debian-cross-container:
NAME: debian-riscv64-cross NAME: debian-riscv64-cross
QEMU_JOB_OPTIONAL: 1 QEMU_JOB_OPTIONAL: 1
# we can however build TCG tests using a non-sid base
riscv64-debian-test-cross-container:
extends: .container_job_template
stage: containers
variables:
NAME: debian-riscv64-test-cross
s390x-debian-cross-container: s390x-debian-cross-container:
extends: .container_job_template extends: .container_job_template
stage: containers stage: containers
variables: variables:
NAME: debian-s390x-cross NAME: debian-s390x-cross
sh4-debian-cross-container:
extends: .container_job_template
stage: containers
variables:
NAME: debian-sh4-cross
sparc64-debian-cross-container:
extends: .container_job_template
stage: containers
variables:
NAME: debian-sparc64-cross
tricore-debian-cross-container: tricore-debian-cross-container:
extends: .container_job_template extends: .container_job_template
stage: containers stage: containers

View file

@ -327,8 +327,7 @@ static TCGOp *copy_st_ptr(TCGOp **begin_op, TCGOp *op)
return op; return op;
} }
static TCGOp *copy_call(TCGOp **begin_op, TCGOp *op, void *empty_func, static TCGOp *copy_call(TCGOp **begin_op, TCGOp *op, void *func, int *cb_idx)
void *func, int *cb_idx)
{ {
TCGOp *old_op; TCGOp *old_op;
int func_idx; int func_idx;
@ -372,8 +371,7 @@ static TCGOp *append_udata_cb(const struct qemu_plugin_dyn_cb *cb,
} }
/* call */ /* call */
op = copy_call(&begin_op, op, HELPER(plugin_vcpu_udata_cb), op = copy_call(&begin_op, op, cb->f.vcpu_udata, cb_idx);
cb->f.vcpu_udata, cb_idx);
return op; return op;
} }
@ -420,8 +418,7 @@ static TCGOp *append_mem_cb(const struct qemu_plugin_dyn_cb *cb,
if (type == PLUGIN_GEN_CB_MEM) { if (type == PLUGIN_GEN_CB_MEM) {
/* call */ /* call */
op = copy_call(&begin_op, op, HELPER(plugin_vcpu_mem_cb), op = copy_call(&begin_op, op, cb->f.vcpu_udata, cb_idx);
cb->f.vcpu_udata, cb_idx);
} }
return op; return op;

38
configure vendored
View file

@ -1281,6 +1281,11 @@ probe_target_compiler() {
container_cross_prefix=aarch64-linux-gnu- container_cross_prefix=aarch64-linux-gnu-
container_cross_cc=${container_cross_prefix}gcc container_cross_cc=${container_cross_prefix}gcc
;; ;;
alpha)
container_image=debian-legacy-test-cross
container_cross_prefix=alpha-linux-gnu-
container_cross_cc=${container_cross_prefix}gcc
;;
arm) arm)
# We don't have any bigendian build tools so we only use this for ARM # We don't have any bigendian build tools so we only use this for ARM
container_image=debian-armhf-cross container_image=debian-armhf-cross
@ -1295,6 +1300,11 @@ probe_target_compiler() {
container_cross_prefix=hexagon-unknown-linux-musl- container_cross_prefix=hexagon-unknown-linux-musl-
container_cross_cc=${container_cross_prefix}clang container_cross_cc=${container_cross_prefix}clang
;; ;;
hppa)
container_image=debian-all-test-cross
container_cross_prefix=hppa-linux-gnu-
container_cross_cc=${container_cross_prefix}gcc
;;
i386) i386)
container_image=fedora-i386-cross container_image=fedora-i386-cross
container_cross_prefix= container_cross_prefix=
@ -1303,6 +1313,11 @@ probe_target_compiler() {
container_image=debian-loongarch-cross container_image=debian-loongarch-cross
container_cross_prefix=loongarch64-unknown-linux-gnu- container_cross_prefix=loongarch64-unknown-linux-gnu-
;; ;;
m68k)
container_image=debian-all-test-cross
container_cross_prefix=m68k-linux-gnu-
container_cross_cc=${container_cross_prefix}gcc
;;
microblaze) microblaze)
container_image=debian-microblaze-cross container_image=debian-microblaze-cross
container_cross_prefix=microblaze-linux-musl- container_cross_prefix=microblaze-linux-musl-
@ -1312,22 +1327,37 @@ probe_target_compiler() {
container_cross_prefix=mips64el-linux-gnuabi64- container_cross_prefix=mips64el-linux-gnuabi64-
;; ;;
mips64) mips64)
container_image=debian-mips64-cross container_image=debian-all-test-cross
container_cross_prefix=mips64-linux-gnuabi64- container_cross_prefix=mips64-linux-gnuabi64-
;; ;;
mips)
container_image=debian-all-test-cross
container_cross_prefix=mips-linux-gnu-
;;
nios2) nios2)
container_image=debian-nios2-cross container_image=debian-nios2-cross
container_cross_prefix=nios2-linux-gnu- container_cross_prefix=nios2-linux-gnu-
;; ;;
ppc) ppc)
container_image=debian-powerpc-test-cross container_image=debian-all-test-cross
container_cross_prefix=powerpc-linux-gnu- container_cross_prefix=powerpc-linux-gnu-
container_cross_cc=${container_cross_prefix}gcc container_cross_cc=${container_cross_prefix}gcc
;; ;;
ppc64|ppc64le) ppc64|ppc64le)
container_image=debian-powerpc-test-cross container_image=debian-all-test-cross
container_cross_prefix=powerpc${target_arch#ppc}-linux-gnu- container_cross_prefix=powerpc${target_arch#ppc}-linux-gnu-
container_cross_cc=${container_cross_prefix}gcc-10 ;;
riscv64)
container_image=debian-all-test-cross
container_cross_prefix=riscv64-linux-gnu-
;;
sh4)
container_image=debian-legacy-test-cross
container_cross_prefix=sh4-linux-gnu-
;;
sparc64)
container_image=debian-all-test-cross
container_cross_prefix=sparc64-linux-gnu-
;; ;;
tricore) tricore)
container_image=debian-tricore-cross container_image=debian-tricore-cross

View file

@ -257,6 +257,7 @@ static bool setup_socket(const char *path)
sockaddr.sun_family = AF_UNIX; sockaddr.sun_family = AF_UNIX;
if (g_strlcpy(sockaddr.sun_path, path, pathlen) >= pathlen) { if (g_strlcpy(sockaddr.sun_path, path, pathlen) >= pathlen) {
perror("bad path"); perror("bad path");
close(fd);
return false; return false;
} }
@ -303,6 +304,7 @@ static bool connect_socket(const char *path)
sockaddr.sun_family = AF_UNIX; sockaddr.sun_family = AF_UNIX;
if (g_strlcpy(sockaddr.sun_path, path, pathlen) >= pathlen) { if (g_strlcpy(sockaddr.sun_path, path, pathlen) >= pathlen) {
perror("bad path"); perror("bad path");
close(fd);
return false; return false;
} }

View file

@ -385,12 +385,14 @@ static const char *get_feature_xml(const char *p, const char **newp,
xml, xml,
g_markup_printf_escaped("<xi:include href=\"%s\"/>", g_markup_printf_escaped("<xi:include href=\"%s\"/>",
cc->gdb_core_xml_file)); cc->gdb_core_xml_file));
for (guint i = 0; i < cpu->gdb_regs->len; i++) { if (cpu->gdb_regs) {
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i); for (guint i = 0; i < cpu->gdb_regs->len; i++) {
g_ptr_array_add( r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
xml, g_ptr_array_add(
g_markup_printf_escaped("<xi:include href=\"%s\"/>", xml,
r->xml)); g_markup_printf_escaped("<xi:include href=\"%s\"/>",
r->xml));
}
} }
g_ptr_array_add(xml, g_strdup("</target>")); g_ptr_array_add(xml, g_strdup("</target>"));
g_ptr_array_add(xml, NULL); g_ptr_array_add(xml, NULL);
@ -430,10 +432,12 @@ static int gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
return cc->gdb_read_register(cpu, buf, reg); return cc->gdb_read_register(cpu, buf, reg);
} }
for (guint i = 0; i < cpu->gdb_regs->len; i++) { if (cpu->gdb_regs) {
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i); for (guint i = 0; i < cpu->gdb_regs->len; i++) {
if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) { r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
return r->get_reg(env, buf, reg - r->base_reg); if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) {
return r->get_reg(env, buf, reg - r->base_reg);
}
} }
} }
return 0; return 0;
@ -449,10 +453,12 @@ static int gdb_write_register(CPUState *cpu, uint8_t *mem_buf, int reg)
return cc->gdb_write_register(cpu, mem_buf, reg); return cc->gdb_write_register(cpu, mem_buf, reg);
} }
for (guint i = 0; i < cpu->gdb_regs->len; i++) { if (cpu->gdb_regs) {
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i); for (guint i = 0; i < cpu->gdb_regs->len; i++) {
if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) { r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
return r->set_reg(env, mem_buf, reg - r->base_reg); if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) {
return r->set_reg(env, mem_buf, reg - r->base_reg);
}
} }
} }
return 0; return 0;

View file

@ -113,12 +113,13 @@ static int add_semihosting_arg(void *opaque,
void semihosting_arg_fallback(const char *file, const char *cmd) void semihosting_arg_fallback(const char *file, const char *cmd)
{ {
char *cmd_token; char *cmd_token;
g_autofree char *cmd_dup = g_strdup(cmd);
/* argv[0] */ /* argv[0] */
add_semihosting_arg(&semihosting, "arg", file, NULL); add_semihosting_arg(&semihosting, "arg", file, NULL);
/* split -append and initialize argv[1..n] */ /* split -append and initialize argv[1..n] */
cmd_token = strtok(g_strdup(cmd), " "); cmd_token = strtok(cmd_dup, " ");
while (cmd_token) { while (cmd_token) {
add_semihosting_arg(&semihosting, "arg", cmd_token, NULL); add_semihosting_arg(&semihosting, "arg", cmd_token, NULL);
cmd_token = strtok(NULL, " "); cmd_token = strtok(NULL, " ");

View file

@ -122,16 +122,8 @@ docker-image-debian-nios2-cross: $(DOCKER_FILES_DIR)/debian-toolchain.docker \
$(call debian-toolchain, $@) $(call debian-toolchain, $@)
# These images may be good enough for building tests but not for test builds # These images may be good enough for building tests but not for test builds
DOCKER_PARTIAL_IMAGES += debian-alpha-cross
DOCKER_PARTIAL_IMAGES += debian-powerpc-test-cross
DOCKER_PARTIAL_IMAGES += debian-hppa-cross
DOCKER_PARTIAL_IMAGES += debian-loongarch-cross
DOCKER_PARTIAL_IMAGES += debian-m68k-cross debian-mips64-cross
DOCKER_PARTIAL_IMAGES += debian-microblaze-cross DOCKER_PARTIAL_IMAGES += debian-microblaze-cross
DOCKER_PARTIAL_IMAGES += debian-mips-cross
DOCKER_PARTIAL_IMAGES += debian-nios2-cross DOCKER_PARTIAL_IMAGES += debian-nios2-cross
DOCKER_PARTIAL_IMAGES += debian-riscv64-test-cross
DOCKER_PARTIAL_IMAGES += debian-sh4-cross debian-sparc64-cross
DOCKER_PARTIAL_IMAGES += debian-xtensa-cross DOCKER_PARTIAL_IMAGES += debian-xtensa-cross
DOCKER_PARTIAL_IMAGES += fedora-cris-cross DOCKER_PARTIAL_IMAGES += fedora-cris-cross

View file

@ -6,10 +6,10 @@
# basic compilers for as many targets as possible. We shall use this # basic compilers for as many targets as possible. We shall use this
# to build and run linux-user tests on GitLab # to build and run linux-user tests on GitLab
# #
FROM docker.io/library/debian:11-slim FROM docker.io/library/debian:12-slim
# Duplicate deb line as deb-src # Duplicate deb line as deb-src
RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list RUN sed -in "s/Types: deb/Types: deb deb-src/g" /etc/apt/sources.list.d/debian.sources
RUN export DEBIAN_FRONTEND=noninteractive && \ RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \ apt-get update && \
@ -25,11 +25,18 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \
clang \ clang \
flex \ flex \
git \ git \
libclang-rt-dev \
ninja-build \ ninja-build \
python3-pip \
python3-setuptools \
python3-tomli \
python3-venv \
python3-wheel
RUN DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \
gcc-aarch64-linux-gnu \ gcc-aarch64-linux-gnu \
libc6-dev-arm64-cross \ libc6-dev-arm64-cross \
gcc-alpha-linux-gnu \
libc6.1-dev-alpha-cross \
gcc-arm-linux-gnueabihf \ gcc-arm-linux-gnueabihf \
libc6-dev-armhf-cross \ libc6-dev-armhf-cross \
gcc-hppa-linux-gnu \ gcc-hppa-linux-gnu \
@ -54,19 +61,12 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \
libc6-dev-riscv64-cross \ libc6-dev-riscv64-cross \
gcc-s390x-linux-gnu \ gcc-s390x-linux-gnu \
libc6-dev-s390x-cross \ libc6-dev-s390x-cross \
gcc-sh4-linux-gnu \
libc6-dev-sh4-cross \
gcc-sparc64-linux-gnu \ gcc-sparc64-linux-gnu \
libc6-dev-sparc64-cross \ libc6-dev-sparc64-cross
python3-pip \
python3-setuptools \
python3-venv \
python3-wheel
RUN /usr/bin/pip3 install tomli
ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools
ENV DEF_TARGET_LIST aarch64-linux-user,alpha-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sh4-linux-user,sparc64-linux-user ENV DEF_TARGET_LIST aarch64-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sparc64-linux-user
# As a final step configure the user (if env is defined) # As a final step configure the user (if env is defined)
ARG USER ARG USER
ARG UID ARG UID

View file

@ -1,19 +0,0 @@
#
# Docker cross-compiler target
#
# This docker target builds on the Debian Bullseye base image.
#
FROM docker.io/library/debian:11-slim
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \
gcc-alpha-linux-gnu \
libc6.1-dev-alpha-cross
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi

View file

@ -1,19 +0,0 @@
#
# Docker cross-compiler target
#
# This docker target builds on the Debian Bullseye base image.
#
FROM docker.io/library/debian:11-slim
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \
gcc-hppa-linux-gnu \
libc6-dev-hppa-cross
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi

View file

@ -0,0 +1,49 @@
# Docker legacy cross-compiler target (tests and minimal qemu)
#
# Compilers for some of our older targets which we cant currently
# upgrade. Currently:
#
# libc6.1-dev-alpha-cross: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1054412
# sh4-linux-user: binaries don't run with bookworm compiler
#
# As we are targeting check-tcg here we only need minimal qemu
# dependencies and the relevant cross compilers.
FROM docker.io/library/debian:11-slim
# Duplicate deb line as deb-src
RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
apt build-dep -yy qemu
# Add extra build tools and as many cross compilers as we can for testing
RUN DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \
bison \
ccache \
clang \
flex \
git \
ninja-build \
gcc-alpha-linux-gnu \
libc6.1-dev-alpha-cross \
gcc-sh4-linux-gnu \
libc6-dev-sh4-cross \
python3-pip \
python3-setuptools \
python3-venv \
python3-wheel
RUN /usr/bin/pip3 install tomli
ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools
ENV DEF_TARGET_LIST alpha-linux-user,sh4-linux-user
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi

View file

@ -9,22 +9,42 @@ FROM docker.io/library/debian:11-slim
# Duplicate deb line as deb-src # Duplicate deb line as deb-src
RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
apt build-dep -yy qemu
RUN apt-get update && \ RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \ DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \
DEBIAN_FRONTEND=noninteractive eatmydata \ DEBIAN_FRONTEND=noninteractive eatmydata \
apt-get install -y --no-install-recommends \ apt-get install -y --no-install-recommends \
build-essential \ build-essential \
bison \
ca-certificates \ ca-certificates \
ccache \
clang \
flex \
curl \ curl \
gettext \ gettext \
git \ git \
python3-minimal ninja-build \
python3-pip \
python3-setuptools \
python3-venv \
python3-wheel
RUN /usr/bin/pip3 install tomli
RUN curl -#SL https://github.com/loongson/build-tools/releases/download/2023.08.08/CLFS-loongarch64-8.1-x86_64-cross-tools-gcc-glibc.tar.xz \ RUN curl -#SL https://github.com/loongson/build-tools/releases/download/2023.08.08/CLFS-loongarch64-8.1-x86_64-cross-tools-gcc-glibc.tar.xz \
| tar -xJC /opt | tar -xJC /opt
ENV PATH $PATH:/opt/cross-tools/bin ENV PATH $PATH:/opt/cross-tools/bin
ENV LD_LIBRARY_PATH /opt/cross-tools/lib:/opt/cross-tools/loongarch64-unknown-linux-gnu/lib:$LD_LIBRARY_PATH ENV LD_LIBRARY_PATH /opt/cross-tools/lib:/opt/cross-tools/loongarch64-unknown-linux-gnu/lib:$LD_LIBRARY_PATH
ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools
ENV DEF_TARGET_LIST loongarch64-linux-user,loongarch-softmmu
# As a final step configure the user (if env is defined) # As a final step configure the user (if env is defined)
ARG USER ARG USER
ARG UID ARG UID

View file

@ -1,19 +0,0 @@
#
# Docker cross-compiler target
#
# This docker target builds on the Debian Bullseye base image.
#
FROM docker.io/library/debian:11-slim
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \
gcc-m68k-linux-gnu \
libc6-dev-m68k-cross
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi

View file

@ -1,19 +0,0 @@
#
# Docker mips cross-compiler target
#
# This docker target builds on the Debian Bullseye base image.
#
FROM docker.io/library/debian:11-slim
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \
gcc-mips-linux-gnu \
libc6-dev-mips-cross
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi

View file

@ -1,19 +0,0 @@
#
# Docker cross-compiler target
#
# This docker target builds on the Debian Bullseye base image.
#
FROM docker.io/library/debian:11-slim
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \
gcc-mips64-linux-gnuabi64 \
libc6-dev-mips64-cross
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi

View file

@ -1,23 +0,0 @@
#
# Docker powerpc/ppc64/ppc64le cross-compiler target
#
# This docker target builds on the Debian Bullseye base image.
#
FROM docker.io/library/debian:11-slim
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \
gcc-powerpc-linux-gnu \
libc6-dev-powerpc-cross \
gcc-10-powerpc64-linux-gnu \
libc6-dev-ppc64-cross \
gcc-10-powerpc64le-linux-gnu \
libc6-dev-ppc64el-cross
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi

View file

@ -1,19 +0,0 @@
#
# Docker cross-compiler target
#
# This docker target builds on the Debian Bullseye base image.
#
FROM docker.io/library/debian:11-slim
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \
gcc-riscv64-linux-gnu \
libc6-dev-riscv64-cross
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi

View file

@ -1,19 +0,0 @@
#
# Docker cross-compiler target
#
# This docker target builds on the Debian Bullseye base image.
#
FROM docker.io/library/debian:11-slim
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \
gcc-sh4-linux-gnu \
libc6-dev-sh4-cross
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi

View file

@ -1,19 +0,0 @@
#
# Docker cross-compiler target
#
# This docker target builds on the Debian Bullseye base image.
#
FROM docker.io/library/debian:11-slim
RUN export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y eatmydata && \
eatmydata apt-get dist-upgrade -y && \
eatmydata apt-get install --no-install-recommends -y \
gcc-sparc64-linux-gnu \
libc6-dev-sparc64-cross
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi

View file

@ -123,7 +123,7 @@ else
# For system targets we include a different Makefile fragment as the # For system targets we include a different Makefile fragment as the
# build options for bare programs are usually pretty different. They # build options for bare programs are usually pretty different. They
# are expected to provide their own build recipes. # are expected to provide their own build recipes.
EXTRA_CFLAGS += -ffreestanding EXTRA_CFLAGS += -ffreestanding -fno-stack-protector
-include $(SRC_PATH)/tests/tcg/minilib/Makefile.target -include $(SRC_PATH)/tests/tcg/minilib/Makefile.target
-include $(SRC_PATH)/tests/tcg/multiarch/system/Makefile.softmmu-target -include $(SRC_PATH)/tests/tcg/multiarch/system/Makefile.softmmu-target
-include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.softmmu-target -include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.softmmu-target

View file

@ -53,7 +53,7 @@ endif
# bti-1 tests the elf notes, so we require special compiler support. # bti-1 tests the elf notes, so we require special compiler support.
ifneq ($(CROSS_CC_HAS_ARMV8_BTI),) ifneq ($(CROSS_CC_HAS_ARMV8_BTI),)
AARCH64_TESTS += bti-1 bti-3 AARCH64_TESTS += bti-1 bti-3
bti-1 bti-3: CFLAGS += -mbranch-protection=standard bti-1 bti-3: CFLAGS += -fno-stack-protector -mbranch-protection=standard
bti-1 bti-3: LDFLAGS += -nostdlib bti-1 bti-3: LDFLAGS += -nostdlib
endif endif
# bti-2 tests PROT_BTI, so no special compiler support required. # bti-2 tests PROT_BTI, so no special compiler support required.

View file

@ -12,7 +12,7 @@ float_madds: CFLAGS+=-mfpu=neon-vfpv4
# Basic Hello World # Basic Hello World
ARM_TESTS = hello-arm ARM_TESTS = hello-arm
hello-arm: CFLAGS+=-marm -ffreestanding hello-arm: CFLAGS+=-marm -ffreestanding -fno-stack-protector
hello-arm: LDFLAGS+=-nostdlib hello-arm: LDFLAGS+=-nostdlib
# IWMXT floating point extensions # IWMXT floating point extensions

View file

@ -30,7 +30,7 @@ AS = $(CC) -x assembler-with-cpp
LD = $(CC) LD = $(CC)
# we rely on GCC inline:ing the stuff we tell it to in many places here. # we rely on GCC inline:ing the stuff we tell it to in many places here.
CFLAGS = -Winline -Wall -g -O2 -static CFLAGS = -Winline -Wall -g -O2 -static -fno-stack-protector
NOSTDFLAGS = -nostartfiles -nostdlib NOSTDFLAGS = -nostartfiles -nostdlib
ASFLAGS += -mcpu=v10 -g -Wa,-I,$(SRC_PATH)/tests/tcg/cris/bare ASFLAGS += -mcpu=v10 -g -Wa,-I,$(SRC_PATH)/tests/tcg/cris/bare
CRT_FILES = crt.o sys.o CRT_FILES = crt.o sys.o

View file

@ -19,7 +19,7 @@
EXTRA_RUNS = EXTRA_RUNS =
CFLAGS += -Wno-incompatible-pointer-types -Wno-undefined-internal CFLAGS += -Wno-incompatible-pointer-types -Wno-undefined-internal
CFLAGS += -fno-unroll-loops CFLAGS += -fno-unroll-loops -fno-stack-protector
HEX_SRC=$(SRC_PATH)/tests/tcg/hexagon HEX_SRC=$(SRC_PATH)/tests/tcg/hexagon
VPATH += $(HEX_SRC) VPATH += $(HEX_SRC)

View file

@ -35,7 +35,7 @@ run-test-aes: QEMU_OPTS += -cpu max
# #
# hello-i386 is a barebones app # hello-i386 is a barebones app
# #
hello-i386: CFLAGS+=-ffreestanding hello-i386: CFLAGS+=-ffreestanding -fno-stack-protector
hello-i386: LDFLAGS+=-nostdlib hello-i386: LDFLAGS+=-nostdlib
# test-386 includes a couple of additional objects that need to be # test-386 includes a couple of additional objects that need to be

View file

@ -12,7 +12,7 @@ SYSTEM_MINILIB_SRC=$(SRC_PATH)/tests/tcg/minilib
MINILIB_SRCS=$(wildcard $(SYSTEM_MINILIB_SRC)/*.c) MINILIB_SRCS=$(wildcard $(SYSTEM_MINILIB_SRC)/*.c)
MINILIB_OBJS=$(patsubst $(SYSTEM_MINILIB_SRC)/%.c, %.o, $(MINILIB_SRCS)) MINILIB_OBJS=$(patsubst $(SYSTEM_MINILIB_SRC)/%.c, %.o, $(MINILIB_SRCS))
MINILIB_CFLAGS+=-nostdlib -ggdb -O0 MINILIB_CFLAGS+=-nostdlib -fno-stack-protector -ggdb -O0
MINILIB_INC=-isystem $(SYSTEM_MINILIB_SRC) MINILIB_INC=-isystem $(SYSTEM_MINILIB_SRC)
.PRECIOUS: $(MINILIB_OBJS) .PRECIOUS: $(MINILIB_OBJS)

View file

@ -14,6 +14,6 @@ MIPS_TESTS=hello-mips
TESTS += $(MIPS_TESTS) TESTS += $(MIPS_TESTS)
hello-mips: CFLAGS+=-mno-abicalls -fno-PIC -mabi=32 hello-mips: CFLAGS+=-mno-abicalls -fno-PIC -fno-stack-protector -mabi=32
hello-mips: LDFLAGS+=-nostdlib hello-mips: LDFLAGS+=-nostdlib
endif endif

View file

@ -5,8 +5,8 @@
* http://www.linux-mips.org/wiki/MIPSABIHistory * http://www.linux-mips.org/wiki/MIPSABIHistory
* http://www.linux.com/howtos/Assembly-HOWTO/mips.shtml * http://www.linux.com/howtos/Assembly-HOWTO/mips.shtml
* *
* mipsel-linux-gcc -nostdlib -mno-abicalls -fno-PIC -mabi=32 \ * mipsel-linux-gcc -nostdlib -mno-abicalls -fno-PIC -fno-stack-protector \
* -O2 -static -o hello-mips hello-mips.c * -mabi=32 -O2 -static -o hello-mips hello-mips.c
* *
*/ */
#define __NR_SYSCALL_BASE 4000 #define __NR_SYSCALL_BASE 4000

View file

@ -27,6 +27,7 @@ class OpenBSDVM(basevm.BaseVM):
size = "20G" size = "20G"
pkgs = [ pkgs = [
# tools # tools
"dtc",
"git", "git",
"pkgconf", "pkgconf",
"bzip2", "xz", "bzip2", "xz",
@ -67,8 +68,9 @@ class OpenBSDVM(basevm.BaseVM):
cd $(mktemp -d /home/qemu/qemu-test.XXXXXX); cd $(mktemp -d /home/qemu/qemu-test.XXXXXX);
mkdir src build; cd src; mkdir src build; cd src;
tar -xf /dev/rsd1c; tar -xf /dev/rsd1c;
cd ../build cd ../build;
../src/configure --cc=cc --python=python3 {configure_opts}; ../src/configure --cc=cc --extra-cflags=-I/usr/local/include \
--extra-ldflags=-L/usr/local/lib {configure_opts};
gmake --output-sync -j{jobs} {target} {verbose}; gmake --output-sync -j{jobs} {target} {verbose};
""" """
poweroff = "halt -p" poweroff = "halt -p"