* [PULL 1/8] gitlab: aggressively avoid extra GIT data
2024-03-12 11:25 [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Alex Bennée
@ 2024-03-12 11:25 ` Alex Bennée
2024-03-12 11:25 ` [PULL 2/8] tests/vm: ensure we build everything by default Alex Bennée
` (7 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Alex Bennée @ 2024-03-12 11:25 UTC (permalink / raw)
To: qemu-devel
Cc: Alex Bennée, Philippe Mathieu-Daudé, Thomas Huth,
Wainer dos Santos Moschetta, Beraldo Leal, Yonggang Luo
This avoids fetching blobs and tree references for branches we are not
going to worry about. Also skip tag references which are similarly not
useful and keep the default --prune. This keeps the .git data to
around 100M rather than the ~400M even a shallow clone takes.
So we can check the savings we also run a quick du while setting up
the build.
We also have to have special settings of GIT_FETCH_EXTRA_FLAGS for the
Windows build (git too old?) and the migration legacy test where we
build an older QEMU alongside the main one.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
diff --git a/.gitlab-ci.d/base.yml b/.gitlab-ci.d/base.yml
index 2dd8a9b57c..bf3d8efab6 100644
--- a/.gitlab-ci.d/base.yml
+++ b/.gitlab-ci.d/base.yml
@@ -24,6 +24,10 @@ variables:
# Each script line from will be in a collapsible section in the job output
# and show the duration of each line.
FF_SCRIPT_SECTIONS: 1
+ # The project has a fairly fat GIT repo so we try and avoid bringing in things
+ # we don't need. The --filter options avoid blobs and tree references we aren't going to use
+ # and we also avoid fetching tags.
+ GIT_FETCH_EXTRA_FLAGS: --filter=blob:none --filter=tree:0 --no-tags --prune --quiet
interruptible: true
diff --git a/.gitlab-ci.d/buildtest-template.yml b/.gitlab-ci.d/buildtest-template.yml
index 4fbfeb6667..22045add80 100644
--- a/.gitlab-ci.d/buildtest-template.yml
+++ b/.gitlab-ci.d/buildtest-template.yml
@@ -14,6 +14,7 @@
- export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
- export CCACHE_MAXSIZE="500M"
- export PATH="$CCACHE_WRAPPERSDIR:$PATH"
+ - du -sh .git
- mkdir build
- cd build
- ccache --zero-stats
diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
index c7d92fc301..cfdff175c3 100644
--- a/.gitlab-ci.d/buildtest.yml
+++ b/.gitlab-ci.d/buildtest.yml
@@ -187,6 +187,8 @@ build-previous-qemu:
variables:
IMAGE: opensuse-leap
TARGETS: x86_64-softmmu aarch64-softmmu
+ # Override the default flags as we need more to grab the old version
+ GIT_FETCH_EXTRA_FLAGS: --prune --quiet
before_script:
- export QEMU_PREV_VERSION="$(sed 's/\([0-9.]*\)\.[0-9]*/v\1.0/' VERSION)"
- git remote add upstream https://gitlab.com/qemu-project/qemu
diff --git a/.gitlab-ci.d/windows.yml b/.gitlab-ci.d/windows.yml
index f116b8012d..94834269ec 100644
--- a/.gitlab-ci.d/windows.yml
+++ b/.gitlab-ci.d/windows.yml
@@ -28,6 +28,8 @@ msys2-64bit:
# qTests don't run successfully with "--without-default-devices",
# so let's exclude the qtests from CI for now.
TEST_ARGS: --no-suite qtest
+ # The Windows git is a bit older so override the default
+ GIT_FETCH_EXTRA_FLAGS: --no-tags --prune --quiet
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 7 days
--
2.39.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 2/8] tests/vm: ensure we build everything by default
2024-03-12 11:25 [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Alex Bennée
2024-03-12 11:25 ` [PULL 1/8] gitlab: aggressively avoid extra GIT data Alex Bennée
@ 2024-03-12 11:25 ` Alex Bennée
2024-03-12 11:25 ` [PULL 3/8] gdbstub: Rename back gdb_handlesig Alex Bennée
` (6 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Alex Bennée @ 2024-03-12 11:25 UTC (permalink / raw)
To: qemu-devel
Cc: Alex Bennée, Thomas Huth, Richard Henderson, Gustavo Romero,
Philippe Mathieu-Daudé, Wainer dos Santos Moschetta,
Beraldo Leal
The "check" target by itself is not enough to ensure we build the user
mode binaries. While we can't test them with check-tcg we can at least
include them in the build.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: Gustavo Romero <gustavo.romero@linaro.org>
diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py
index f8fd751eb1..4a1af04b9a 100644
--- a/tests/vm/basevm.py
+++ b/tests/vm/basevm.py
@@ -606,7 +606,7 @@ def get_default_jobs():
parser.add_argument("--build-qemu",
help="build QEMU from source in guest")
parser.add_argument("--build-target",
- help="QEMU build target", default="check")
+ help="QEMU build target", default="all check")
parser.add_argument("--build-path", default=None,
help="Path of build directory, "\
"for using build tree QEMU binary. ")
--
2.39.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 3/8] gdbstub: Rename back gdb_handlesig
2024-03-12 11:25 [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Alex Bennée
2024-03-12 11:25 ` [PULL 1/8] gitlab: aggressively avoid extra GIT data Alex Bennée
2024-03-12 11:25 ` [PULL 2/8] tests/vm: ensure we build everything by default Alex Bennée
@ 2024-03-12 11:25 ` Alex Bennée
2024-03-12 11:25 ` [PULL 4/8] linux-user: Move tswap_siginfo out of target code Alex Bennée
` (5 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Alex Bennée @ 2024-03-12 11:25 UTC (permalink / raw)
To: qemu-devel
Cc: Gustavo Romero, Alex Bennée, Richard Henderson,
Philippe Mathieu-Daudé, Laurent Vivier
From: Gustavo Romero <gustavo.romero@linaro.org>
Rename gdb_handlesig_reason back to gdb_handlesig. There is no need to
add a wrapper for gdb_handlesig and rename it when a new parameter is
added.
Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20240309030901.1726211-2-gustavo.romero@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
diff --git a/include/gdbstub/user.h b/include/gdbstub/user.h
index 4c4e5c4c58..4fc88f8a25 100644
--- a/include/gdbstub/user.h
+++ b/include/gdbstub/user.h
@@ -10,7 +10,7 @@
#define GDBSTUB_USER_H
/**
- * gdb_handlesig_reason() - yield control to gdb
+ * gdb_handlesig() - yield control to gdb
* @cpu: CPU
* @sig: if non-zero, the signal number which caused us to stop
* @reason: stop reason for stop reply packet or NULL
@@ -25,18 +25,7 @@
* or 0 if no signal should be delivered, ie the signal that caused
* us to stop should be ignored.
*/
-int gdb_handlesig_reason(CPUState *, int, const char *);
-
-/**
- * gdb_handlesig() - yield control to gdb
- * @cpu CPU
- * @sig: if non-zero, the signal number which caused us to stop
- * @see gdb_handlesig_reason()
- */
-static inline int gdb_handlesig(CPUState *cpu, int sig)
-{
- return gdb_handlesig_reason(cpu, sig, NULL);
-}
+int gdb_handlesig(CPUState *, int, const char *);
/**
* gdb_signalled() - inform remote gdb of sig exit
diff --git a/gdbstub/user.c b/gdbstub/user.c
index 7f9f19a124..520987fddc 100644
--- a/gdbstub/user.c
+++ b/gdbstub/user.c
@@ -190,7 +190,7 @@ void gdb_qemu_exit(int code)
exit(code);
}
-int gdb_handlesig_reason(CPUState *cpu, int sig, const char *reason)
+int gdb_handlesig(CPUState *cpu, int sig, const char *reason)
{
char buf[256];
int n;
@@ -746,7 +746,7 @@ void gdb_breakpoint_remove_all(CPUState *cs)
void gdb_syscall_handling(const char *syscall_packet)
{
gdb_put_packet(syscall_packet);
- gdb_handlesig(gdbserver_state.c_cpu, 0);
+ gdb_handlesig(gdbserver_state.c_cpu, 0, NULL);
}
static bool should_catch_syscall(int num)
@@ -764,7 +764,7 @@ void gdb_syscall_entry(CPUState *cs, int num)
{
if (should_catch_syscall(num)) {
g_autofree char *reason = g_strdup_printf("syscall_entry:%x;", num);
- gdb_handlesig_reason(cs, gdb_target_sigtrap(), reason);
+ gdb_handlesig(cs, gdb_target_sigtrap(), reason);
}
}
@@ -772,7 +772,7 @@ void gdb_syscall_return(CPUState *cs, int num)
{
if (should_catch_syscall(num)) {
g_autofree char *reason = g_strdup_printf("syscall_return:%x;", num);
- gdb_handlesig_reason(cs, gdb_target_sigtrap(), reason);
+ gdb_handlesig(cs, gdb_target_sigtrap(), reason);
}
}
diff --git a/linux-user/main.c b/linux-user/main.c
index 41caa77cb5..55aa11c9b4 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -1018,7 +1018,7 @@ int main(int argc, char **argv, char **envp)
gdbstub);
exit(EXIT_FAILURE);
}
- gdb_handlesig(cpu, 0);
+ gdb_handlesig(cpu, 0, NULL);
}
#ifdef CONFIG_SEMIHOSTING
diff --git a/linux-user/signal.c b/linux-user/signal.c
index cc7dd78e41..bca44c295d 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -1180,7 +1180,7 @@ static void handle_pending_signal(CPUArchState *cpu_env, int sig,
/* dequeue signal */
k->pending = 0;
- sig = gdb_handlesig(cpu, sig);
+ sig = gdb_handlesig(cpu, sig, NULL);
if (!sig) {
sa = NULL;
handler = TARGET_SIG_IGN;
--
2.39.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 4/8] linux-user: Move tswap_siginfo out of target code
2024-03-12 11:25 [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Alex Bennée
` (2 preceding siblings ...)
2024-03-12 11:25 ` [PULL 3/8] gdbstub: Rename back gdb_handlesig Alex Bennée
@ 2024-03-12 11:25 ` Alex Bennée
2024-03-12 11:25 ` [PULL 5/8] gdbstub: Save target's siginfo Alex Bennée
` (4 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Alex Bennée @ 2024-03-12 11:25 UTC (permalink / raw)
To: qemu-devel
Cc: Gustavo Romero, Richard Henderson, Alex Bennée,
Laurent Vivier, Brian Cain
From: Gustavo Romero <gustavo.romero@linaro.org>
Move tswap_siginfo from target code to handle_pending_signal. This will
allow some cleanups and having the siginfo ready to be used in gdbstub.
Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20240309030901.1726211-3-gustavo.romero@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
diff --git a/linux-user/signal-common.h b/linux-user/signal-common.h
index a7df12fc44..f4cbe6185e 100644
--- a/linux-user/signal-common.h
+++ b/linux-user/signal-common.h
@@ -43,8 +43,6 @@ void host_to_target_sigset_internal(target_sigset_t *d,
const sigset_t *s);
void target_to_host_sigset_internal(sigset_t *d,
const target_sigset_t *s);
-void tswap_siginfo(target_siginfo_t *tinfo,
- const target_siginfo_t *info);
void set_sigmask(const sigset_t *set);
void force_sig(int sig);
void force_sigsegv(int oldsig);
diff --git a/linux-user/aarch64/signal.c b/linux-user/aarch64/signal.c
index a1e22d526d..bc7a13800d 100644
--- a/linux-user/aarch64/signal.c
+++ b/linux-user/aarch64/signal.c
@@ -670,7 +670,7 @@ static void target_setup_frame(int usig, struct target_sigaction *ka,
aarch64_set_svcr(env, 0, R_SVCR_SM_MASK | R_SVCR_ZA_MASK);
if (info) {
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
env->xregs[1] = frame_addr + offsetof(struct target_rt_sigframe, info);
env->xregs[2] = frame_addr + offsetof(struct target_rt_sigframe, uc);
}
diff --git a/linux-user/alpha/signal.c b/linux-user/alpha/signal.c
index 4ec42994d4..896c2c148a 100644
--- a/linux-user/alpha/signal.c
+++ b/linux-user/alpha/signal.c
@@ -173,7 +173,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
goto give_sigsegv;
}
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
__put_user(0, &frame->uc.tuc_flags);
__put_user(0, &frame->uc.tuc_link);
diff --git a/linux-user/arm/signal.c b/linux-user/arm/signal.c
index 59806335f5..8db1c4b233 100644
--- a/linux-user/arm/signal.c
+++ b/linux-user/arm/signal.c
@@ -357,7 +357,7 @@ void setup_rt_frame(int usig, struct target_sigaction *ka,
info_addr = frame_addr + offsetof(struct rt_sigframe, info);
uc_addr = frame_addr + offsetof(struct rt_sigframe, sig.uc);
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
setup_sigframe(&frame->sig.uc, set, env);
diff --git a/linux-user/hexagon/signal.c b/linux-user/hexagon/signal.c
index 60fa7e1bce..492b51f155 100644
--- a/linux-user/hexagon/signal.c
+++ b/linux-user/hexagon/signal.c
@@ -162,7 +162,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
}
setup_ucontext(&frame->uc, env, set);
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
/*
* The on-stack signal trampoline is no longer executed;
* however, the libgcc signal frame unwinding code checks
diff --git a/linux-user/hppa/signal.c b/linux-user/hppa/signal.c
index c84557e906..682ba25922 100644
--- a/linux-user/hppa/signal.c
+++ b/linux-user/hppa/signal.c
@@ -127,7 +127,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
goto give_sigsegv;
}
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
frame->uc.tuc_flags = 0;
frame->uc.tuc_link = 0;
diff --git a/linux-user/i386/signal.c b/linux-user/i386/signal.c
index bc5d45302e..cfe70fc5cf 100644
--- a/linux-user/i386/signal.c
+++ b/linux-user/i386/signal.c
@@ -430,7 +430,7 @@ void setup_frame(int sig, struct target_sigaction *ka,
setup_sigcontext(&frame->sc, &frame->fpstate, env, set->sig[0],
frame_addr + offsetof(struct sigframe, fpstate));
- for(i = 1; i < TARGET_NSIG_WORDS; i++) {
+ for (i = 1; i < TARGET_NSIG_WORDS; i++) {
__put_user(set->sig[i], &frame->extramask[i - 1]);
}
@@ -490,7 +490,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
__put_user(addr, &frame->puc);
#endif
if (ka->sa_flags & TARGET_SA_SIGINFO) {
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
}
/* Create the ucontext. */
@@ -504,7 +504,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
setup_sigcontext(&frame->uc.tuc_mcontext, &frame->fpstate, env,
set->sig[0], frame_addr + offsetof(struct rt_sigframe, fpstate));
- for(i = 0; i < TARGET_NSIG_WORDS; i++) {
+ for (i = 0; i < TARGET_NSIG_WORDS; i++) {
__put_user(set->sig[i], &frame->uc.tuc_sigmask.sig[i]);
}
diff --git a/linux-user/loongarch64/signal.c b/linux-user/loongarch64/signal.c
index 39ea82c814..1a322f9697 100644
--- a/linux-user/loongarch64/signal.c
+++ b/linux-user/loongarch64/signal.c
@@ -376,7 +376,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
extctx.end.haddr = (void *)frame + (extctx.end.gaddr - frame_addr);
}
- tswap_siginfo(&frame->rs_info, info);
+ frame->rs_info = *info;
__put_user(0, &frame->rs_uc.tuc_flags);
__put_user(0, &frame->rs_uc.tuc_link);
diff --git a/linux-user/m68k/signal.c b/linux-user/m68k/signal.c
index 5f35354487..77555781aa 100644
--- a/linux-user/m68k/signal.c
+++ b/linux-user/m68k/signal.c
@@ -295,7 +295,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
uc_addr = frame_addr + offsetof(struct target_rt_sigframe, uc);
__put_user(uc_addr, &frame->puc);
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
/* Create the ucontext */
@@ -307,7 +307,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
if (err)
goto give_sigsegv;
- for(i = 0; i < TARGET_NSIG_WORDS; i++) {
+ for (i = 0; i < TARGET_NSIG_WORDS; i++) {
__put_user(set->sig[i], &frame->uc.tuc_sigmask.sig[i]);
}
diff --git a/linux-user/microblaze/signal.c b/linux-user/microblaze/signal.c
index 5188d74025..f6d47d76ff 100644
--- a/linux-user/microblaze/signal.c
+++ b/linux-user/microblaze/signal.c
@@ -147,7 +147,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
return;
}
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
__put_user(0, &frame->uc.tuc_flags);
__put_user(0, &frame->uc.tuc_link);
diff --git a/linux-user/mips/signal.c b/linux-user/mips/signal.c
index 58a9d7a8a3..d69a5d73dd 100644
--- a/linux-user/mips/signal.c
+++ b/linux-user/mips/signal.c
@@ -303,7 +303,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
goto give_sigsegv;
}
- tswap_siginfo(&frame->rs_info, info);
+ frame->rs_info = *info;
__put_user(0, &frame->rs_uc.tuc_flags);
__put_user(0, &frame->rs_uc.tuc_link);
@@ -311,7 +311,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
setup_sigcontext(env, &frame->rs_uc.tuc_mcontext);
- for(i = 0; i < TARGET_NSIG_WORDS; i++) {
+ for (i = 0; i < TARGET_NSIG_WORDS; i++) {
__put_user(set->sig[i], &frame->rs_uc.tuc_sigmask.sig[i]);
}
diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c
index 32b3dc99c6..64c345f409 100644
--- a/linux-user/nios2/signal.c
+++ b/linux-user/nios2/signal.c
@@ -157,7 +157,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
return;
}
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
/* Create the ucontext. */
__put_user(0, &frame->uc.tuc_flags);
diff --git a/linux-user/openrisc/signal.c b/linux-user/openrisc/signal.c
index be8b68784a..cb74a9fe5e 100644
--- a/linux-user/openrisc/signal.c
+++ b/linux-user/openrisc/signal.c
@@ -103,7 +103,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
}
if (ka->sa_flags & SA_SIGINFO) {
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
}
__put_user(0, &frame->uc.tuc_flags);
diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c
index c232424c1e..652038a53c 100644
--- a/linux-user/ppc/signal.c
+++ b/linux-user/ppc/signal.c
@@ -493,7 +493,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
if (!lock_user_struct(VERIFY_WRITE, rt_sf, rt_sf_addr, 1))
goto sigsegv;
- tswap_siginfo(&rt_sf->info, info);
+ rt_sf->info = *info;
__put_user(0, &rt_sf->uc.tuc_flags);
__put_user(0, &rt_sf->uc.tuc_link);
@@ -502,7 +502,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
__put_user(h2g (&rt_sf->uc.tuc_mcontext),
&rt_sf->uc.tuc_regs);
#endif
- for(i = 0; i < TARGET_NSIG_WORDS; i++) {
+ for (i = 0; i < TARGET_NSIG_WORDS; i++) {
__put_user(set->sig[i], &rt_sf->uc.tuc_sigmask.sig[i]);
}
diff --git a/linux-user/riscv/signal.c b/linux-user/riscv/signal.c
index 941eadce87..358fa1d82d 100644
--- a/linux-user/riscv/signal.c
+++ b/linux-user/riscv/signal.c
@@ -125,7 +125,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
}
setup_ucontext(&frame->uc, env, set);
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
env->pc = ka->_sa_handler;
env->gpr[xSP] = frame_addr;
diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c
index b40f738a70..df49c24708 100644
--- a/linux-user/s390x/signal.c
+++ b/linux-user/s390x/signal.c
@@ -267,7 +267,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
}
/* Create siginfo on the signal stack. */
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
/* Create ucontext on the signal stack. */
uc_flags = 0;
diff --git a/linux-user/sh4/signal.c b/linux-user/sh4/signal.c
index c16c2c2d57..9ecc026fae 100644
--- a/linux-user/sh4/signal.c
+++ b/linux-user/sh4/signal.c
@@ -233,7 +233,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
goto give_sigsegv;
}
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
/* Create the ucontext. */
__put_user(0, &frame->uc.tuc_flags);
diff --git a/linux-user/signal.c b/linux-user/signal.c
index bca44c295d..c769675e68 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -409,8 +409,8 @@ static inline void host_to_target_siginfo_noswap(target_siginfo_t *tinfo,
tinfo->si_code = deposit32(si_code, 16, 16, si_type);
}
-void tswap_siginfo(target_siginfo_t *tinfo,
- const target_siginfo_t *info)
+static void tswap_siginfo(target_siginfo_t *tinfo,
+ const target_siginfo_t *info)
{
int si_type = extract32(info->si_code, 16, 16);
int si_code = sextract32(info->si_code, 0, 16);
@@ -1180,6 +1180,12 @@ static void handle_pending_signal(CPUArchState *cpu_env, int sig,
/* dequeue signal */
k->pending = 0;
+ /*
+ * Writes out siginfo values byteswapped, accordingly to the target. It also
+ * cleans the si_type from si_code making it correct for the target.
+ */
+ tswap_siginfo(&k->info, &k->info);
+
sig = gdb_handlesig(cpu, sig, NULL);
if (!sig) {
sa = NULL;
diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c
index c2dc1000e2..f164b74032 100644
--- a/linux-user/sparc/signal.c
+++ b/linux-user/sparc/signal.c
@@ -333,7 +333,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
__put_user(0, &sf->rwin_save); /* TODO: save_rwin_state */
- tswap_siginfo(&sf->info, info);
+ sf->info = *info;
tswap_sigset(&sf->mask, set);
target_save_altstack(&sf->stack, env);
diff --git a/linux-user/xtensa/signal.c b/linux-user/xtensa/signal.c
index 003208a916..6514b8dd57 100644
--- a/linux-user/xtensa/signal.c
+++ b/linux-user/xtensa/signal.c
@@ -184,7 +184,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
}
if (ka->sa_flags & SA_SIGINFO) {
- tswap_siginfo(&frame->info, info);
+ frame->info = *info;
}
__put_user(0, &frame->uc.tuc_flags);
--
2.39.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 5/8] gdbstub: Save target's siginfo
2024-03-12 11:25 [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Alex Bennée
` (3 preceding siblings ...)
2024-03-12 11:25 ` [PULL 4/8] linux-user: Move tswap_siginfo out of target code Alex Bennée
@ 2024-03-12 11:25 ` Alex Bennée
2024-03-12 11:25 ` [PULL 6/8] gdbstub: Add Xfer:siginfo:read stub Alex Bennée
` (3 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Alex Bennée @ 2024-03-12 11:25 UTC (permalink / raw)
To: qemu-devel
Cc: Gustavo Romero, Richard Henderson, Alex Bennée, Warner Losh,
Kyle Evans, Philippe Mathieu-Daudé, Laurent Vivier
From: Gustavo Romero <gustavo.romero@linaro.org>
Save target's siginfo into gdbserver_state so it can be used later, for
example, in any stub that requires the target's si_signo and si_code.
This change affects only linux-user mode.
Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20240309030901.1726211-4-gustavo.romero@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
diff --git a/include/gdbstub/user.h b/include/gdbstub/user.h
index 4fc88f8a25..3b8358e3da 100644
--- a/include/gdbstub/user.h
+++ b/include/gdbstub/user.h
@@ -9,11 +9,15 @@
#ifndef GDBSTUB_USER_H
#define GDBSTUB_USER_H
+#define MAX_SIGINFO_LENGTH 128
+
/**
* gdb_handlesig() - yield control to gdb
* @cpu: CPU
* @sig: if non-zero, the signal number which caused us to stop
* @reason: stop reason for stop reply packet or NULL
+ * @siginfo: target-specific siginfo struct
+ * @siginfo_len: target-specific siginfo struct length
*
* This function yields control to gdb, when a user-mode-only target
* needs to stop execution. If @sig is non-zero, then we will send a
@@ -25,7 +29,7 @@
* or 0 if no signal should be delivered, ie the signal that caused
* us to stop should be ignored.
*/
-int gdb_handlesig(CPUState *, int, const char *);
+int gdb_handlesig(CPUState *, int, const char *, void *, int);
/**
* gdb_signalled() - inform remote gdb of sig exit
diff --git a/bsd-user/main.c b/bsd-user/main.c
index 3dc285e5b7..01b313756e 100644
--- a/bsd-user/main.c
+++ b/bsd-user/main.c
@@ -606,7 +606,7 @@ int main(int argc, char **argv)
if (gdbstub) {
gdbserver_start(gdbstub);
- gdb_handlesig(cpu, 0);
+ gdb_handlesig(cpu, 0, NULL, NULL, 0);
}
cpu_loop(env);
/* never exits */
diff --git a/bsd-user/signal.c b/bsd-user/signal.c
index e9f80a06d3..2936eeb7a8 100644
--- a/bsd-user/signal.c
+++ b/bsd-user/signal.c
@@ -27,6 +27,9 @@
#include "hw/core/tcg-cpu-ops.h"
#include "host-signal.h"
+/* target_siginfo_t must fit in gdbstub's siginfo save area. */
+QEMU_BUILD_BUG_ON(sizeof(target_siginfo_t) > MAX_SIGINFO_LENGTH);
+
static struct target_sigaction sigact_table[TARGET_NSIG];
static void host_signal_handler(int host_sig, siginfo_t *info, void *puc);
static void target_to_host_sigset_internal(sigset_t *d,
@@ -890,7 +893,7 @@ static void handle_pending_signal(CPUArchState *env, int sig,
k->pending = 0;
- sig = gdb_handlesig(cpu, sig);
+ sig = gdb_handlesig(cpu, sig, NULL, &k->info, sizeof(k->info));
if (!sig) {
sa = NULL;
handler = TARGET_SIG_IGN;
diff --git a/gdbstub/user.c b/gdbstub/user.c
index 520987fddc..cf693bfbc4 100644
--- a/gdbstub/user.c
+++ b/gdbstub/user.c
@@ -95,6 +95,8 @@ typedef struct {
enum GDBForkState fork_state;
int fork_sockets[2];
pid_t fork_peer_pid, fork_peer_tid;
+ uint8_t siginfo[MAX_SIGINFO_LENGTH];
+ unsigned long siginfo_len;
} GDBUserState;
static GDBUserState gdbserver_user_state;
@@ -190,7 +192,8 @@ void gdb_qemu_exit(int code)
exit(code);
}
-int gdb_handlesig(CPUState *cpu, int sig, const char *reason)
+int gdb_handlesig(CPUState *cpu, int sig, const char *reason, void *siginfo,
+ int siginfo_len)
{
char buf[256];
int n;
@@ -199,6 +202,18 @@ int gdb_handlesig(CPUState *cpu, int sig, const char *reason)
return sig;
}
+ if (siginfo) {
+ /*
+ * Save target-specific siginfo.
+ *
+ * siginfo size, i.e. siginfo_len, is asserted at compile-time to fit in
+ * gdbserver_user_state.siginfo, usually in the source file calling
+ * gdb_handlesig. See, for instance, {linux,bsd}-user/signal.c.
+ */
+ memcpy(gdbserver_user_state.siginfo, siginfo, siginfo_len);
+ gdbserver_user_state.siginfo_len = siginfo_len;
+ }
+
/* disable single step if it was enabled */
cpu_single_step(cpu, 0);
tb_flush(cpu);
@@ -746,7 +761,7 @@ void gdb_breakpoint_remove_all(CPUState *cs)
void gdb_syscall_handling(const char *syscall_packet)
{
gdb_put_packet(syscall_packet);
- gdb_handlesig(gdbserver_state.c_cpu, 0, NULL);
+ gdb_handlesig(gdbserver_state.c_cpu, 0, NULL, NULL, 0);
}
static bool should_catch_syscall(int num)
@@ -764,7 +779,7 @@ void gdb_syscall_entry(CPUState *cs, int num)
{
if (should_catch_syscall(num)) {
g_autofree char *reason = g_strdup_printf("syscall_entry:%x;", num);
- gdb_handlesig(cs, gdb_target_sigtrap(), reason);
+ gdb_handlesig(cs, gdb_target_sigtrap(), reason, NULL, 0);
}
}
@@ -772,7 +787,7 @@ void gdb_syscall_return(CPUState *cs, int num)
{
if (should_catch_syscall(num)) {
g_autofree char *reason = g_strdup_printf("syscall_return:%x;", num);
- gdb_handlesig(cs, gdb_target_sigtrap(), reason);
+ gdb_handlesig(cs, gdb_target_sigtrap(), reason, NULL, 0);
}
}
diff --git a/linux-user/main.c b/linux-user/main.c
index 55aa11c9b4..9277df2e9d 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -1018,7 +1018,7 @@ int main(int argc, char **argv, char **envp)
gdbstub);
exit(EXIT_FAILURE);
}
- gdb_handlesig(cpu, 0, NULL);
+ gdb_handlesig(cpu, 0, NULL, NULL, 0);
}
#ifdef CONFIG_SEMIHOSTING
diff --git a/linux-user/signal.c b/linux-user/signal.c
index c769675e68..8355105dd7 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -34,6 +34,9 @@
#include "user/safe-syscall.h"
#include "tcg/tcg.h"
+/* target_siginfo_t must fit in gdbstub's siginfo save area. */
+QEMU_BUILD_BUG_ON(sizeof(target_siginfo_t) > MAX_SIGINFO_LENGTH);
+
static struct target_sigaction sigact_table[TARGET_NSIG];
static void host_signal_handler(int host_signum, siginfo_t *info,
@@ -1186,7 +1189,7 @@ static void handle_pending_signal(CPUArchState *cpu_env, int sig,
*/
tswap_siginfo(&k->info, &k->info);
- sig = gdb_handlesig(cpu, sig, NULL);
+ sig = gdb_handlesig(cpu, sig, NULL, &k->info, sizeof(k->info));
if (!sig) {
sa = NULL;
handler = TARGET_SIG_IGN;
--
2.39.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 6/8] gdbstub: Add Xfer:siginfo:read stub
2024-03-12 11:25 [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Alex Bennée
` (4 preceding siblings ...)
2024-03-12 11:25 ` [PULL 5/8] gdbstub: Save target's siginfo Alex Bennée
@ 2024-03-12 11:25 ` Alex Bennée
2024-03-12 11:25 ` [PULL 7/8] tests/tcg: Add multiarch test for " Alex Bennée
` (2 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Alex Bennée @ 2024-03-12 11:25 UTC (permalink / raw)
To: qemu-devel
Cc: Gustavo Romero, Alex Bennée, Richard Henderson,
Philippe Mathieu-Daudé
From: Gustavo Romero <gustavo.romero@linaro.org>
Add stub to handle Xfer:siginfo:read packet query that requests the
machine's siginfo data.
This is used when GDB user executes 'print $_siginfo' and when the
machine stops due to a signal, for instance, on SIGSEGV. The information
in siginfo allows GDB to determiner further details on the signal, like
the fault address/insn when the SIGSEGV is caught.
Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
Message-Id: <20240309030901.1726211-5-gustavo.romero@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
diff --git a/gdbstub/internals.h b/gdbstub/internals.h
index b472459838..e83b179920 100644
--- a/gdbstub/internals.h
+++ b/gdbstub/internals.h
@@ -190,6 +190,7 @@ typedef union GdbCmdVariant {
void gdb_handle_query_rcmd(GArray *params, void *user_ctx); /* softmmu */
void gdb_handle_query_offsets(GArray *params, void *user_ctx); /* user */
void gdb_handle_query_xfer_auxv(GArray *params, void *user_ctx); /*user */
+void gdb_handle_query_xfer_siginfo(GArray *params, void *user_ctx); /*user */
void gdb_handle_v_file_open(GArray *params, void *user_ctx); /* user */
void gdb_handle_v_file_close(GArray *params, void *user_ctx); /* user */
void gdb_handle_v_file_pread(GArray *params, void *user_ctx); /* user */
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 17efcae0d0..9c23d44baf 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -1664,6 +1664,8 @@ static void handle_query_supported(GArray *params, void *user_ctx)
g_string_append(gdbserver_state.str_buf, ";qXfer:auxv:read+");
}
g_string_append(gdbserver_state.str_buf, ";QCatchSyscalls+");
+
+ g_string_append(gdbserver_state.str_buf, ";qXfer:siginfo:read+");
#endif
g_string_append(gdbserver_state.str_buf, ";qXfer:exec-file:read+");
#endif
@@ -1818,6 +1820,12 @@ static const GdbCmdParseEntry gdb_gen_query_table[] = {
.cmd_startswith = 1,
.schema = "l,l0"
},
+ {
+ .handler = gdb_handle_query_xfer_siginfo,
+ .cmd = "Xfer:siginfo:read::",
+ .cmd_startswith = 1,
+ .schema = "l,l0"
+ },
#endif
{
.handler = gdb_handle_query_xfer_exec_file,
diff --git a/gdbstub/user.c b/gdbstub/user.c
index cf693bfbc4..2005f3312b 100644
--- a/gdbstub/user.c
+++ b/gdbstub/user.c
@@ -852,3 +852,26 @@ void gdb_handle_set_catch_syscalls(GArray *params, void *user_ctx)
err:
gdb_put_packet("E00");
}
+
+void gdb_handle_query_xfer_siginfo(GArray *params, void *user_ctx)
+{
+ unsigned long offset, len;
+ uint8_t *siginfo_offset;
+
+ offset = get_param(params, 0)->val_ul;
+ len = get_param(params, 1)->val_ul;
+
+ if (offset + len > gdbserver_user_state.siginfo_len) {
+ /* Invalid offset and/or requested length. */
+ gdb_put_packet("E01");
+ return;
+ }
+
+ siginfo_offset = (uint8_t *)gdbserver_user_state.siginfo + offset;
+
+ /* Reply */
+ g_string_assign(gdbserver_state.str_buf, "l");
+ gdb_memtox(gdbserver_state.str_buf, (const char *)siginfo_offset, len);
+ gdb_put_packet_binary(gdbserver_state.str_buf->str,
+ gdbserver_state.str_buf->len, true);
+}
--
2.39.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 7/8] tests/tcg: Add multiarch test for Xfer:siginfo:read stub
2024-03-12 11:25 [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Alex Bennée
` (5 preceding siblings ...)
2024-03-12 11:25 ` [PULL 6/8] gdbstub: Add Xfer:siginfo:read stub Alex Bennée
@ 2024-03-12 11:25 ` Alex Bennée
2024-03-12 11:25 ` [PULL 8/8] gdbstub: Fix double close() of the follow-fork-mode socket Alex Bennée
2024-03-12 13:42 ` [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Peter Maydell
8 siblings, 0 replies; 12+ messages in thread
From: Alex Bennée @ 2024-03-12 11:25 UTC (permalink / raw)
To: qemu-devel
Cc: Gustavo Romero, Richard Henderson, Alex Bennée,
Philippe Mathieu-Daudé
From: Gustavo Romero <gustavo.romero@linaro.org>
Add multiarch test for testing if Xfer:siginfo:read query is properly
handled by gdbstub.
Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20240309030901.1726211-6-gustavo.romero@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
diff --git a/tests/tcg/multiarch/segfault.c b/tests/tcg/multiarch/segfault.c
new file mode 100644
index 0000000000..e6c8ff31ca
--- /dev/null
+++ b/tests/tcg/multiarch/segfault.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+#include <string.h>
+
+/* Cause a segfault for testing purposes. */
+
+int main(int argc, char *argv[])
+{
+ int *ptr = (void *)0xdeadbeef;
+
+ if (argc == 2 && strcmp(argv[1], "-s") == 0) {
+ /* Cause segfault. */
+ printf("%d\n", *ptr);
+ }
+}
diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Makefile.target
index 979a0dd1bc..5e3391ec9d 100644
--- a/tests/tcg/multiarch/Makefile.target
+++ b/tests/tcg/multiarch/Makefile.target
@@ -71,6 +71,13 @@ run-gdbstub-qxfer-auxv-read: sha1
--bin $< --test $(MULTIARCH_SRC)/gdbstub/test-qxfer-auxv-read.py, \
basic gdbstub qXfer:auxv:read support)
+run-gdbstub-qxfer-siginfo-read: segfault
+ $(call run-test, $@, $(GDB_SCRIPT) \
+ --gdb $(GDB) \
+ --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
+ --bin "$< -s" --test $(MULTIARCH_SRC)/gdbstub/test-qxfer-siginfo-read.py, \
+ basic gdbstub qXfer:siginfo:read support)
+
run-gdbstub-proc-mappings: sha1
$(call run-test, $@, $(GDB_SCRIPT) \
--gdb $(GDB) \
@@ -128,7 +135,8 @@ EXTRA_RUNS += run-gdbstub-sha1 run-gdbstub-qxfer-auxv-read \
run-gdbstub-proc-mappings run-gdbstub-thread-breakpoint \
run-gdbstub-registers run-gdbstub-prot-none \
run-gdbstub-catch-syscalls run-gdbstub-follow-fork-mode-child \
- run-gdbstub-follow-fork-mode-parent
+ run-gdbstub-follow-fork-mode-parent \
+ run-gdbstub-qxfer-siginfo-read
# ARM Compatible Semi Hosting Tests
#
diff --git a/tests/tcg/multiarch/gdbstub/test-qxfer-siginfo-read.py b/tests/tcg/multiarch/gdbstub/test-qxfer-siginfo-read.py
new file mode 100644
index 0000000000..862596b07a
--- /dev/null
+++ b/tests/tcg/multiarch/gdbstub/test-qxfer-siginfo-read.py
@@ -0,0 +1,26 @@
+from __future__ import print_function
+#
+# Test gdbstub Xfer:siginfo:read stub.
+#
+# The test runs a binary that causes a SIGSEGV and then looks for additional
+# info about the signal through printing GDB's '$_siginfo' special variable,
+# which sends a Xfer:siginfo:read query to the gdbstub.
+#
+# The binary causes a SIGSEGV at dereferencing a pointer with value 0xdeadbeef,
+# so the test looks for and checks if this address is correctly reported by the
+# gdbstub.
+#
+# This is launched via tests/guest-debug/run-test.py
+#
+
+import gdb
+from test_gdbstub import main, report
+
+def run_test():
+ "Run through the test"
+
+ gdb.execute("continue", False, True)
+ resp = gdb.execute("print/x $_siginfo", False, True)
+ report(resp.find("si_addr = 0xdeadbeef"), "Found fault address.")
+
+main(run_test)
--
2.39.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PULL 8/8] gdbstub: Fix double close() of the follow-fork-mode socket
2024-03-12 11:25 [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Alex Bennée
` (6 preceding siblings ...)
2024-03-12 11:25 ` [PULL 7/8] tests/tcg: Add multiarch test for " Alex Bennée
@ 2024-03-12 11:25 ` Alex Bennée
2024-03-12 13:42 ` [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Peter Maydell
8 siblings, 0 replies; 12+ messages in thread
From: Alex Bennée @ 2024-03-12 11:25 UTC (permalink / raw)
To: qemu-devel
Cc: Ilya Leoshkevich, Alex Bennée, Philippe Mathieu-Daudé
From: Ilya Leoshkevich <iii@linux.ibm.com>
When the terminal GDB_FORK_ENABLED state is reached, the coordination
socket is not needed anymore and is therefore closed. However, if there
is a communication error between QEMU gdbstub and GDB, the generic
error handling code attempts to close it again.
Fix by closing it later - before returning - instead.
Fixes: Coverity CID 1539966
Fixes: d547e711a8a5 ("gdbstub: Implement follow-fork-mode child")
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20240312001813.13720-1-iii@linux.ibm.com>
diff --git a/gdbstub/user.c b/gdbstub/user.c
index 2005f3312b..edeb72efeb 100644
--- a/gdbstub/user.c
+++ b/gdbstub/user.c
@@ -517,6 +517,7 @@ void gdbserver_fork_end(CPUState *cpu, pid_t pid)
switch (gdbserver_user_state.fork_state) {
case GDB_FORK_ENABLED:
if (gdbserver_user_state.running_state) {
+ close(fd);
return;
}
QEMU_FALLTHROUGH;
@@ -542,7 +543,6 @@ void gdbserver_fork_end(CPUState *cpu, pid_t pid)
gdbserver_user_state.fork_state = GDB_FORK_ACTIVE;
break;
case GDB_FORK_ENABLE:
- close(fd);
gdbserver_user_state.fork_state = GDB_FORK_ENABLED;
break;
case GDB_FORK_DISABLE:
@@ -557,7 +557,6 @@ void gdbserver_fork_end(CPUState *cpu, pid_t pid)
if (write(fd, &b, 1) != 1) {
goto fail;
}
- close(fd);
gdbserver_user_state.fork_state = GDB_FORK_ENABLED;
break;
case GDB_FORK_DISABLING:
--
2.39.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub)
2024-03-12 11:25 [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Alex Bennée
` (7 preceding siblings ...)
2024-03-12 11:25 ` [PULL 8/8] gdbstub: Fix double close() of the follow-fork-mode socket Alex Bennée
@ 2024-03-12 13:42 ` Peter Maydell
2024-03-12 15:01 ` Alex Bennée
8 siblings, 1 reply; 12+ messages in thread
From: Peter Maydell @ 2024-03-12 13:42 UTC (permalink / raw)
To: Alex Bennée; +Cc: qemu-devel
On Tue, 12 Mar 2024 at 11:26, Alex Bennée <alex.bennee@linaro.org> wrote:
>
> The following changes since commit 7489f7f3f81dcb776df8c1b9a9db281fc21bf05f:
>
> Merge tag 'hw-misc-20240309' of https://github.com/philmd/qemu into staging (2024-03-09 20:12:21 +0000)
>
> are available in the Git repository at:
>
> https://gitlab.com/stsquad/qemu.git tags/pull-maintainer-final-120324-1
>
> for you to fetch changes up to 0532045e8112c13a8a949e696576672e64c6fa14:
>
> gdbstub: Fix double close() of the follow-fork-mode socket (2024-03-12 10:48:35 +0000)
>
> ----------------------------------------------------------------
> final updates for 9.0 (testing, gdbstub):
>
> - avoid transferring pointless git data
> - fix the over rebuilding of test VMs
> - support Xfer:siginfo:read in gdbstub
> - fix double close() in gdbstub
>
This makes the s390 CI jobs fail:
https://gitlab.com/qemu-project/qemu/-/jobs/6374182015
https://gitlab.com/qemu-project/qemu/-/jobs/6374182020
fatal: --filter can only be used when extensions.partialClone is set
thanks
-- PMM
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub)
2024-03-12 13:42 ` [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub) Peter Maydell
@ 2024-03-12 15:01 ` Alex Bennée
2024-03-12 15:19 ` Peter Maydell
0 siblings, 1 reply; 12+ messages in thread
From: Alex Bennée @ 2024-03-12 15:01 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel
Peter Maydell <peter.maydell@linaro.org> writes:
> On Tue, 12 Mar 2024 at 11:26, Alex Bennée <alex.bennee@linaro.org> wrote:
>>
>> The following changes since commit 7489f7f3f81dcb776df8c1b9a9db281fc21bf05f:
>>
>> Merge tag 'hw-misc-20240309' of https://github.com/philmd/qemu into staging (2024-03-09 20:12:21 +0000)
>>
>> are available in the Git repository at:
>>
>> https://gitlab.com/stsquad/qemu.git tags/pull-maintainer-final-120324-1
>>
>> for you to fetch changes up to 0532045e8112c13a8a949e696576672e64c6fa14:
>>
>> gdbstub: Fix double close() of the follow-fork-mode socket (2024-03-12 10:48:35 +0000)
>>
>> ----------------------------------------------------------------
>> final updates for 9.0 (testing, gdbstub):
>>
>> - avoid transferring pointless git data
>> - fix the over rebuilding of test VMs
>> - support Xfer:siginfo:read in gdbstub
>> - fix double close() in gdbstub
>>
>
> This makes the s390 CI jobs fail:
>
> https://gitlab.com/qemu-project/qemu/-/jobs/6374182015
> https://gitlab.com/qemu-project/qemu/-/jobs/6374182020
>
> fatal: --filter can only be used when extensions.partialClone is set
That's annoying - I thought I had the s390 jobs in my matrix but it
seems they don't appear anymore. That said I see:
root@qemu01 ~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.6 LTS"
And as 24.04 is just round the corner maybe its time I update the system
to a more recent ubuntu (with I assume a more recent git)?
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PULL for 9.0 0/8] final maintainer updates (testing, gdbstub)
2024-03-12 15:01 ` Alex Bennée
@ 2024-03-12 15:19 ` Peter Maydell
0 siblings, 0 replies; 12+ messages in thread
From: Peter Maydell @ 2024-03-12 15:19 UTC (permalink / raw)
To: Alex Bennée; +Cc: qemu-devel
On Tue, 12 Mar 2024 at 15:01, Alex Bennée <alex.bennee@linaro.org> wrote:
> That's annoying - I thought I had the s390 jobs in my matrix but it
> seems they don't appear anymore. That said I see:
>
> root@qemu01 ~# cat /etc/lsb-release
> DISTRIB_ID=Ubuntu
> DISTRIB_RELEASE=20.04
> DISTRIB_CODENAME=focal
> DISTRIB_DESCRIPTION="Ubuntu 20.04.6 LTS"
>
> And as 24.04 is just round the corner maybe its time I update the system
> to a more recent ubuntu (with I assume a more recent git)?
Not until after we release 9.0, please.
thanks
-- PMM
^ permalink raw reply [flat|nested] 12+ messages in thread