Skip to content

Commit 997ef29

Browse files
committed
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>
2 parents f13b978 + 7f45276 commit 997ef29

30 files changed

+196
-289
lines changed

.gitlab-ci.d/buildtest.yml

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ build-user:
256256
variables:
257257
IMAGE: debian-all-test-cross
258258
CONFIGURE_ARGS: --disable-tools --disable-system
259+
--target-list-exclude=alpha-linux-user,sh4-linux-user
259260
MAKE_CHECK_ARGS: check-tcg
260261

261262
build-user-static:
@@ -265,6 +266,18 @@ build-user-static:
265266
variables:
266267
IMAGE: debian-all-test-cross
267268
CONFIGURE_ARGS: --disable-tools --disable-system --static
269+
--target-list-exclude=alpha-linux-user,sh4-linux-user
270+
MAKE_CHECK_ARGS: check-tcg
271+
272+
# targets stuck on older compilers
273+
build-legacy:
274+
extends: .native_build_job_template
275+
needs:
276+
job: amd64-debian-legacy-cross-container
277+
variables:
278+
IMAGE: debian-legacy-test-cross
279+
TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user
280+
CONFIGURE_ARGS: --disable-tools
268281
MAKE_CHECK_ARGS: check-tcg
269282

270283
build-user-hexagon:
@@ -277,15 +290,28 @@ build-user-hexagon:
277290
CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
278291
MAKE_CHECK_ARGS: check-tcg
279292

280-
# Only build the softmmu targets we have check-tcg tests for
293+
# Build the softmmu targets we have check-tcg tests and compilers in
294+
# our omnibus all-test-cross container. Those targets that haven't got
295+
# Debian cross compiler support need to use special containers.
281296
build-some-softmmu:
282297
extends: .native_build_job_template
283298
needs:
284299
job: amd64-debian-user-cross-container
285300
variables:
286301
IMAGE: debian-all-test-cross
287302
CONFIGURE_ARGS: --disable-tools --enable-debug
288-
TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
303+
TARGETS: arm-softmmu aarch64-softmmu i386-softmmu riscv64-softmmu
304+
s390x-softmmu x86_64-softmmu
305+
MAKE_CHECK_ARGS: check-tcg
306+
307+
build-loongarch64:
308+
extends: .native_build_job_template
309+
needs:
310+
job: loongarch-debian-cross-container
311+
variables:
312+
IMAGE: debian-loongarch-cross
313+
CONFIGURE_ARGS: --disable-tools --enable-debug
314+
TARGETS: loongarch64-linux-user loongarch64-softmmu
289315
MAKE_CHECK_ARGS: check-tcg
290316

291317
# We build tricore in a very minimal tricore only container
@@ -318,7 +344,7 @@ clang-user:
318344
variables:
319345
IMAGE: debian-all-test-cross
320346
CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
321-
--target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
347+
--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
322348
--extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
323349
MAKE_CHECK_ARGS: check-unit check-tcg
324350

@@ -505,7 +531,7 @@ build-tci:
505531
variables:
506532
IMAGE: debian-all-test-cross
507533
script:
508-
- TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
534+
- TARGETS="aarch64 arm hppa m68k microblaze ppc64 s390x x86_64"
509535
- mkdir build
510536
- cd build
511537
- ../configure --enable-tcg-interpreter --disable-docs --disable-gtk --disable-vnc

.gitlab-ci.d/container-cross.yml

Lines changed: 8 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
alpha-debian-cross-container:
2-
extends: .container_job_template
3-
stage: containers
4-
variables:
5-
NAME: debian-alpha-cross
6-
71
amd64-debian-cross-container:
82
extends: .container_job_template
93
stage: containers
@@ -16,6 +10,12 @@ amd64-debian-user-cross-container:
1610
variables:
1711
NAME: debian-all-test-cross
1812

13+
amd64-debian-legacy-cross-container:
14+
extends: .container_job_template
15+
stage: containers
16+
variables:
17+
NAME: debian-legacy-test-cross
18+
1919
arm64-debian-cross-container:
2020
extends: .container_job_template
2121
stage: containers
@@ -40,48 +40,24 @@ hexagon-cross-container:
4040
variables:
4141
NAME: debian-hexagon-cross
4242

43-
hppa-debian-cross-container:
44-
extends: .container_job_template
45-
stage: containers
46-
variables:
47-
NAME: debian-hppa-cross
48-
49-
m68k-debian-cross-container:
43+
loongarch-debian-cross-container:
5044
extends: .container_job_template
5145
stage: containers
5246
variables:
53-
NAME: debian-m68k-cross
54-
55-
mips64-debian-cross-container:
56-
extends: .container_job_template
57-
stage: containers
58-
variables:
59-
NAME: debian-mips64-cross
47+
NAME: debian-loongarch-cross
6048

6149
mips64el-debian-cross-container:
6250
extends: .container_job_template
6351
stage: containers
6452
variables:
6553
NAME: debian-mips64el-cross
6654

67-
mips-debian-cross-container:
68-
extends: .container_job_template
69-
stage: containers
70-
variables:
71-
NAME: debian-mips-cross
72-
7355
mipsel-debian-cross-container:
7456
extends: .container_job_template
7557
stage: containers
7658
variables:
7759
NAME: debian-mipsel-cross
7860

79-
powerpc-test-cross-container:
80-
extends: .container_job_template
81-
stage: containers
82-
variables:
83-
NAME: debian-powerpc-test-cross
84-
8561
ppc64el-debian-cross-container:
8662
extends: .container_job_template
8763
stage: containers
@@ -97,31 +73,12 @@ riscv64-debian-cross-container:
9773
NAME: debian-riscv64-cross
9874
QEMU_JOB_OPTIONAL: 1
9975

100-
# we can however build TCG tests using a non-sid base
101-
riscv64-debian-test-cross-container:
102-
extends: .container_job_template
103-
stage: containers
104-
variables:
105-
NAME: debian-riscv64-test-cross
106-
10776
s390x-debian-cross-container:
10877
extends: .container_job_template
10978
stage: containers
11079
variables:
11180
NAME: debian-s390x-cross
11281

113-
sh4-debian-cross-container:
114-
extends: .container_job_template
115-
stage: containers
116-
variables:
117-
NAME: debian-sh4-cross
118-
119-
sparc64-debian-cross-container:
120-
extends: .container_job_template
121-
stage: containers
122-
variables:
123-
NAME: debian-sparc64-cross
124-
12582
tricore-debian-cross-container:
12683
extends: .container_job_template
12784
stage: containers

accel/tcg/plugin-gen.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -327,8 +327,7 @@ static TCGOp *copy_st_ptr(TCGOp **begin_op, TCGOp *op)
327327
return op;
328328
}
329329

330-
static TCGOp *copy_call(TCGOp **begin_op, TCGOp *op, void *empty_func,
331-
void *func, int *cb_idx)
330+
static TCGOp *copy_call(TCGOp **begin_op, TCGOp *op, void *func, int *cb_idx)
332331
{
333332
TCGOp *old_op;
334333
int func_idx;
@@ -372,8 +371,7 @@ static TCGOp *append_udata_cb(const struct qemu_plugin_dyn_cb *cb,
372371
}
373372

374373
/* call */
375-
op = copy_call(&begin_op, op, HELPER(plugin_vcpu_udata_cb),
376-
cb->f.vcpu_udata, cb_idx);
374+
op = copy_call(&begin_op, op, cb->f.vcpu_udata, cb_idx);
377375

378376
return op;
379377
}
@@ -420,8 +418,7 @@ static TCGOp *append_mem_cb(const struct qemu_plugin_dyn_cb *cb,
420418

421419
if (type == PLUGIN_GEN_CB_MEM) {
422420
/* call */
423-
op = copy_call(&begin_op, op, HELPER(plugin_vcpu_mem_cb),
424-
cb->f.vcpu_udata, cb_idx);
421+
op = copy_call(&begin_op, op, cb->f.vcpu_udata, cb_idx);
425422
}
426423

427424
return op;

configure

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1281,6 +1281,11 @@ probe_target_compiler() {
12811281
container_cross_prefix=aarch64-linux-gnu-
12821282
container_cross_cc=${container_cross_prefix}gcc
12831283
;;
1284+
alpha)
1285+
container_image=debian-legacy-test-cross
1286+
container_cross_prefix=alpha-linux-gnu-
1287+
container_cross_cc=${container_cross_prefix}gcc
1288+
;;
12841289
arm)
12851290
# We don't have any bigendian build tools so we only use this for ARM
12861291
container_image=debian-armhf-cross
@@ -1295,6 +1300,11 @@ probe_target_compiler() {
12951300
container_cross_prefix=hexagon-unknown-linux-musl-
12961301
container_cross_cc=${container_cross_prefix}clang
12971302
;;
1303+
hppa)
1304+
container_image=debian-all-test-cross
1305+
container_cross_prefix=hppa-linux-gnu-
1306+
container_cross_cc=${container_cross_prefix}gcc
1307+
;;
12981308
i386)
12991309
container_image=fedora-i386-cross
13001310
container_cross_prefix=
@@ -1303,6 +1313,11 @@ probe_target_compiler() {
13031313
container_image=debian-loongarch-cross
13041314
container_cross_prefix=loongarch64-unknown-linux-gnu-
13051315
;;
1316+
m68k)
1317+
container_image=debian-all-test-cross
1318+
container_cross_prefix=m68k-linux-gnu-
1319+
container_cross_cc=${container_cross_prefix}gcc
1320+
;;
13061321
microblaze)
13071322
container_image=debian-microblaze-cross
13081323
container_cross_prefix=microblaze-linux-musl-
@@ -1312,22 +1327,37 @@ probe_target_compiler() {
13121327
container_cross_prefix=mips64el-linux-gnuabi64-
13131328
;;
13141329
mips64)
1315-
container_image=debian-mips64-cross
1330+
container_image=debian-all-test-cross
13161331
container_cross_prefix=mips64-linux-gnuabi64-
13171332
;;
1333+
mips)
1334+
container_image=debian-all-test-cross
1335+
container_cross_prefix=mips-linux-gnu-
1336+
;;
13181337
nios2)
13191338
container_image=debian-nios2-cross
13201339
container_cross_prefix=nios2-linux-gnu-
13211340
;;
13221341
ppc)
1323-
container_image=debian-powerpc-test-cross
1342+
container_image=debian-all-test-cross
13241343
container_cross_prefix=powerpc-linux-gnu-
13251344
container_cross_cc=${container_cross_prefix}gcc
13261345
;;
13271346
ppc64|ppc64le)
1328-
container_image=debian-powerpc-test-cross
1347+
container_image=debian-all-test-cross
13291348
container_cross_prefix=powerpc${target_arch#ppc}-linux-gnu-
1330-
container_cross_cc=${container_cross_prefix}gcc-10
1349+
;;
1350+
riscv64)
1351+
container_image=debian-all-test-cross
1352+
container_cross_prefix=riscv64-linux-gnu-
1353+
;;
1354+
sh4)
1355+
container_image=debian-legacy-test-cross
1356+
container_cross_prefix=sh4-linux-gnu-
1357+
;;
1358+
sparc64)
1359+
container_image=debian-all-test-cross
1360+
container_cross_prefix=sparc64-linux-gnu-
13311361
;;
13321362
tricore)
13331363
container_image=debian-tricore-cross

contrib/plugins/lockstep.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ static bool setup_socket(const char *path)
257257
sockaddr.sun_family = AF_UNIX;
258258
if (g_strlcpy(sockaddr.sun_path, path, pathlen) >= pathlen) {
259259
perror("bad path");
260+
close(fd);
260261
return false;
261262
}
262263

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

gdbstub/gdbstub.c

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -385,12 +385,14 @@ static const char *get_feature_xml(const char *p, const char **newp,
385385
xml,
386386
g_markup_printf_escaped("<xi:include href=\"%s\"/>",
387387
cc->gdb_core_xml_file));
388-
for (guint i = 0; i < cpu->gdb_regs->len; i++) {
389-
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
390-
g_ptr_array_add(
391-
xml,
392-
g_markup_printf_escaped("<xi:include href=\"%s\"/>",
393-
r->xml));
388+
if (cpu->gdb_regs) {
389+
for (guint i = 0; i < cpu->gdb_regs->len; i++) {
390+
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
391+
g_ptr_array_add(
392+
xml,
393+
g_markup_printf_escaped("<xi:include href=\"%s\"/>",
394+
r->xml));
395+
}
394396
}
395397
g_ptr_array_add(xml, g_strdup("</target>"));
396398
g_ptr_array_add(xml, NULL);
@@ -430,10 +432,12 @@ static int gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
430432
return cc->gdb_read_register(cpu, buf, reg);
431433
}
432434

433-
for (guint i = 0; i < cpu->gdb_regs->len; i++) {
434-
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
435-
if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) {
436-
return r->get_reg(env, buf, reg - r->base_reg);
435+
if (cpu->gdb_regs) {
436+
for (guint i = 0; i < cpu->gdb_regs->len; i++) {
437+
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
438+
if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) {
439+
return r->get_reg(env, buf, reg - r->base_reg);
440+
}
437441
}
438442
}
439443
return 0;
@@ -449,10 +453,12 @@ static int gdb_write_register(CPUState *cpu, uint8_t *mem_buf, int reg)
449453
return cc->gdb_write_register(cpu, mem_buf, reg);
450454
}
451455

452-
for (guint i = 0; i < cpu->gdb_regs->len; i++) {
453-
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
454-
if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) {
455-
return r->set_reg(env, mem_buf, reg - r->base_reg);
456+
if (cpu->gdb_regs) {
457+
for (guint i = 0; i < cpu->gdb_regs->len; i++) {
458+
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
459+
if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) {
460+
return r->set_reg(env, mem_buf, reg - r->base_reg);
461+
}
456462
}
457463
}
458464
return 0;

semihosting/config.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,13 @@ static int add_semihosting_arg(void *opaque,
113113
void semihosting_arg_fallback(const char *file, const char *cmd)
114114
{
115115
char *cmd_token;
116+
g_autofree char *cmd_dup = g_strdup(cmd);
116117

117118
/* argv[0] */
118119
add_semihosting_arg(&semihosting, "arg", file, NULL);
119120

120121
/* split -append and initialize argv[1..n] */
121-
cmd_token = strtok(g_strdup(cmd), " ");
122+
cmd_token = strtok(cmd_dup, " ");
122123
while (cmd_token) {
123124
add_semihosting_arg(&semihosting, "arg", cmd_token, NULL);
124125
cmd_token = strtok(NULL, " ");

tests/docker/Makefile.include

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -122,16 +122,8 @@ docker-image-debian-nios2-cross: $(DOCKER_FILES_DIR)/debian-toolchain.docker \
122122
$(call debian-toolchain, $@)
123123

124124
# These images may be good enough for building tests but not for test builds
125-
DOCKER_PARTIAL_IMAGES += debian-alpha-cross
126-
DOCKER_PARTIAL_IMAGES += debian-powerpc-test-cross
127-
DOCKER_PARTIAL_IMAGES += debian-hppa-cross
128-
DOCKER_PARTIAL_IMAGES += debian-loongarch-cross
129-
DOCKER_PARTIAL_IMAGES += debian-m68k-cross debian-mips64-cross
130125
DOCKER_PARTIAL_IMAGES += debian-microblaze-cross
131-
DOCKER_PARTIAL_IMAGES += debian-mips-cross
132126
DOCKER_PARTIAL_IMAGES += debian-nios2-cross
133-
DOCKER_PARTIAL_IMAGES += debian-riscv64-test-cross
134-
DOCKER_PARTIAL_IMAGES += debian-sh4-cross debian-sparc64-cross
135127
DOCKER_PARTIAL_IMAGES += debian-xtensa-cross
136128
DOCKER_PARTIAL_IMAGES += fedora-cris-cross
137129

0 commit comments

Comments
 (0)