mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge tag 'pull-10.0-testing-and-gdstub-updates-100225-1' of https://gitlab.com/stsquad/qemu into staging
testing and gdbstub updates: - add a check-rust test to docker builds - re-factor the qtest logic to be cleaner - fix tests to not clock_step when no timers enabled - roll-up log prefix into qtest_send - cleaner error reporting when qtest_clock_set fails - revert old deadlock fix now tests are updated - only run full set of migration tests under HW acceleration - support late attachment to user-mode gdbstubs # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmeqBSsACgkQ+9DbCVqe # KkQS/Af+K0hpdGc1msiuMsqmuESBvhoQniYZFLN1/pwe2KpG8i/+fq2fsCuxJhJ1 # 2TzPH7aj54p9MGCZf2k9JLhO22XldN+oezZMc1crhoWK0AtrWhnLs58I2oEPIsUo # NmGO6Zfm98ge89o2y8GCvd0QXAtUf+jduDKnW0mfnOnw+w/mky5KzWS7/1091VGW # 42LSY4KnqgdLSqLyuLBOrgADEjB1ChWS4/bSC+kEYSGrmNQB+n1KeIzzlJBGpOr0 # Z9yzmhMCm7TWdkFNPmnVfYH/7ZUNcpv6PtQSpkku4f6b/gybyvJBknHpM4i+Gpb5 # 87wSjljrCpdNm/9KFRjiJuUWdS/jCg== # =UF0n # -----END PGP SIGNATURE----- # gpg: Signature made Mon 10 Feb 2025 08:54:51 EST # 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-10.0-testing-and-gdstub-updates-100225-1' of https://gitlab.com/stsquad/qemu: tests/tcg: Add late gdbstub attach test docs/user: Document the %d placeholder and suspend=n QEMU_GDB features gdbstub: Allow late attachment osdep: Introduce qemu_kill_thread() user: Introduce host_interrupt_signal user: Introduce user/signal.h gdbstub: Try unlinking the unix socket before binding gdbstub: Allow the %d placeholder in the socket path tests/qtest/migration: Pick smoke tests tests/qtest/migration: Add --full option Revert "util/timer: avoid deadlock when shutting down" tests/qtest: tighten up the checks on clock_step tests/qtest: rename qtest_send_prefix and roll-up into qtest_send tests/qtest: simplify qtest_process_inbuf tests/qtest: don't step clock at start of npcm7xx periodic IRQ test tests/qtest: don't attempt to clock_step while waiting for virtio ISR tests/docker: replicate the check-rust-tools-nightly CI job Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
@@ -1024,7 +1024,6 @@ int main(int argc, char **argv, char **envp)
|
||||
|
||||
if (gdbstub) {
|
||||
gdbserver_start(gdbstub, &error_fatal);
|
||||
gdb_handlesig(cpu, 0, NULL, NULL, 0);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SEMIHOSTING
|
||||
|
||||
@@ -61,7 +61,6 @@ void queue_signal(CPUArchState *env, int sig, int si_type,
|
||||
target_siginfo_t *info);
|
||||
void host_to_target_siginfo(target_siginfo_t *tinfo, const siginfo_t *info);
|
||||
void target_to_host_siginfo(siginfo_t *info, const target_siginfo_t *tinfo);
|
||||
int target_to_host_signal(int sig);
|
||||
int host_to_target_signal(int sig);
|
||||
long do_sigreturn(CPUArchState *env);
|
||||
long do_rt_sigreturn(CPUArchState *env);
|
||||
|
||||
+21
-5
@@ -36,6 +36,7 @@
|
||||
#include "user/cpu_loop.h"
|
||||
#include "user/page-protection.h"
|
||||
#include "user/safe-syscall.h"
|
||||
#include "user/signal.h"
|
||||
#include "tcg/tcg.h"
|
||||
|
||||
/* target_siginfo_t must fit in gdbstub's siginfo save area. */
|
||||
@@ -516,6 +517,8 @@ static int core_dump_signal(int sig)
|
||||
}
|
||||
}
|
||||
|
||||
int host_interrupt_signal;
|
||||
|
||||
static void signal_table_init(const char *rtsig_map)
|
||||
{
|
||||
int hsig, tsig, count;
|
||||
@@ -579,10 +582,10 @@ static void signal_table_init(const char *rtsig_map)
|
||||
* Attempts for configure "missing" signals via sigaction will be
|
||||
* silently ignored.
|
||||
*
|
||||
* Reserve one signal for internal usage (see below).
|
||||
* Reserve two signals for internal usage (see below).
|
||||
*/
|
||||
|
||||
hsig = SIGRTMIN + 1;
|
||||
hsig = SIGRTMIN + 2;
|
||||
for (tsig = TARGET_SIGRTMIN;
|
||||
hsig <= SIGRTMAX && tsig <= TARGET_NSIG;
|
||||
hsig++, tsig++) {
|
||||
@@ -603,12 +606,17 @@ static void signal_table_init(const char *rtsig_map)
|
||||
host_to_target_signal_table[SIGABRT] = 0;
|
||||
for (hsig = SIGRTMIN; hsig <= SIGRTMAX; hsig++) {
|
||||
if (!host_to_target_signal_table[hsig]) {
|
||||
host_to_target_signal_table[hsig] = TARGET_SIGABRT;
|
||||
break;
|
||||
if (host_interrupt_signal) {
|
||||
host_to_target_signal_table[hsig] = TARGET_SIGABRT;
|
||||
break;
|
||||
} else {
|
||||
host_interrupt_signal = hsig;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (hsig > SIGRTMAX) {
|
||||
fprintf(stderr, "No rt signals left for SIGABRT mapping\n");
|
||||
fprintf(stderr,
|
||||
"No rt signals left for interrupt and SIGABRT mapping\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
@@ -688,6 +696,8 @@ void signal_init(const char *rtsig_map)
|
||||
}
|
||||
sigact_table[tsig - 1]._sa_handler = thand;
|
||||
}
|
||||
|
||||
sigaction(host_interrupt_signal, &act, NULL);
|
||||
}
|
||||
|
||||
/* Force a synchronously taken signal. The kernel force_sig() function
|
||||
@@ -1035,6 +1045,12 @@ static void host_signal_handler(int host_sig, siginfo_t *info, void *puc)
|
||||
bool sync_sig = false;
|
||||
void *sigmask;
|
||||
|
||||
if (host_sig == host_interrupt_signal) {
|
||||
ts->signal_pending = 1;
|
||||
cpu_exit(thread_cpu);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Non-spoofed SIGSEGV and SIGBUS are synchronous, and need special
|
||||
* handling wrt signal blocking and unwinding. Non-spoofed SIGILL,
|
||||
|
||||
@@ -138,6 +138,7 @@
|
||||
#include "user-mmap.h"
|
||||
#include "user/page-protection.h"
|
||||
#include "user/safe-syscall.h"
|
||||
#include "user/signal.h"
|
||||
#include "qemu/guest-random.h"
|
||||
#include "qemu/selfmap.h"
|
||||
#include "user/syscall-trace.h"
|
||||
|
||||
Reference in New Issue
Block a user