]> git.ipfire.org Git - thirdparty/qemu.git/log
thirdparty/qemu.git
6 weeks agolinux-user/microblaze: Create target_ptrace.h
Richard Henderson [Thu, 28 Aug 2025 05:22:14 +0000 (15:22 +1000)] 
linux-user/microblaze: Create target_ptrace.h

Move the target_pt_regs structure from target_syscall.h.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/m68k: Expand target_elf_gregset_t
Richard Henderson [Thu, 28 Aug 2025 01:44:40 +0000 (11:44 +1000)] 
linux-user/m68k: Expand target_elf_gregset_t

Make use of the fact that target_elf_gregset_t is a proper structure.
Drop ELF_NREG, target_elf_greg_t, and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/loongarch64: Expand target_elf_gregset_t
Richard Henderson [Thu, 28 Aug 2025 01:37:08 +0000 (11:37 +1000)] 
linux-user/loongarch64: Expand target_elf_gregset_t

Make use of the fact that target_elf_gregset_t is a proper structure.
Note that the kernel's uses an array, and then it has a bunch of defines
to create symbolic offsets.  Modulo some reserved fields, which we do
not implement here, this is the same layout as struct user_pt_regs.

Drop ELF_NREG, target_elf_greg_t, and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/loongarch64: Create target_ptrace.h
Richard Henderson [Thu, 28 Aug 2025 05:03:40 +0000 (15:03 +1000)] 
linux-user/loongarch64: Create target_ptrace.h

Remove the target_pt_regs structure from target_syscall.h.
Add target_user_pt_regs to target_ptrace.h, which matches
what is actually used on loongarch64.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/arm: Expand target_elf_gregset_t
Richard Henderson [Thu, 28 Aug 2025 01:30:59 +0000 (11:30 +1000)] 
linux-user/arm: Expand target_elf_gregset_t

Make use of the fact that target_elf_gregset_t is a proper structure.
Drop ELF_NREG, target_elf_greg_t, and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/arm: Create target_ptrace.h
Richard Henderson [Thu, 28 Aug 2025 04:56:57 +0000 (14:56 +1000)] 
linux-user/arm: Create target_ptrace.h

Move the target_pt_regs structure from target_syscall.h.
Replace the array with proper structure fields.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/aarch64: Expand target_elf_gregset_t
Richard Henderson [Thu, 28 Aug 2025 01:24:05 +0000 (11:24 +1000)] 
linux-user/aarch64: Expand target_elf_gregset_t

Make use of the fact that target_elf_gregset_t is a
proper structure by using target_user_pt_regs.

Drop ELF_NREG, target_elf_greg_t, and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/aarch64: Create target_ptrace.h
Richard Henderson [Thu, 28 Aug 2025 04:50:33 +0000 (14:50 +1000)] 
linux-user/aarch64: Create target_ptrace.h

Move the target_pt_regs structure from target_syscall.h, and
rename to target_user_pt_regs, to match what's in ptrace.h.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/x86_64: Fix dump of fs_base, gs_base
Richard Henderson [Thu, 28 Aug 2025 04:50:12 +0000 (14:50 +1000)] 
linux-user/x86_64: Fix dump of fs_base, gs_base

We were storing the selector, not the base.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/x86_64: Expand target_elf_gregset_t
Richard Henderson [Thu, 28 Aug 2025 01:17:02 +0000 (11:17 +1000)] 
linux-user/x86_64: Expand target_elf_gregset_t

The comment re ELF_NREG is incorrect or out-of-date.
Make use of the fact that target_elf_gregset_t is a
proper structure by using target_user_regs_struct.

Drop target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/x86_64: Create target_ptrace.h
Richard Henderson [Thu, 28 Aug 2025 04:41:40 +0000 (14:41 +1000)] 
linux-user/x86_64: Create target_ptrace.h

Remove the target_pt_regs structure from target_syscall.h.
Add target_user_regs_struct to target_ptrace.h, which matches
what is actually used on x86_64.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/i386: Expand target_elf_gregset_t
Richard Henderson [Thu, 28 Aug 2025 01:09:03 +0000 (11:09 +1000)] 
linux-user/i386: Expand target_elf_gregset_t

The comment re ELF_NREG is incorrect or out-of-date.
Make use of the fact that target_elf_gregset_t is a
proper structure by using target_user_regs_struct.

Drop target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/i386: Create target_ptrace.h
Richard Henderson [Thu, 28 Aug 2025 04:19:04 +0000 (14:19 +1000)] 
linux-user/i386: Create target_ptrace.h

Remove the target_pt_regs structure from target_syscall.h.
Add target_user_regs_struct to target_ptrace.h, which is
what is actually used by ELF_CORE_COPY_REGS; the layout
of the two structure definitions is identical.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Remove target_elf_greg_t, tswapreg from elfload.c
Richard Henderson [Thu, 28 Aug 2025 00:53:13 +0000 (10:53 +1000)] 
linux-user: Remove target_elf_greg_t, tswapreg from elfload.c

These are no longer used within the generic file.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to xtensa/elfload.c
Richard Henderson [Tue, 29 Jul 2025 16:17:52 +0000 (06:17 -1000)] 
linux-user: Move elf_core_copy_regs to xtensa/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to s390x/elfload.c
Richard Henderson [Tue, 29 Jul 2025 16:16:07 +0000 (06:16 -1000)] 
linux-user: Move elf_core_copy_regs to s390x/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to m68k/elfload.c
Richard Henderson [Tue, 29 Jul 2025 16:14:26 +0000 (06:14 -1000)] 
linux-user: Move elf_core_copy_regs to m68k/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to sh4/elfload.c
Richard Henderson [Tue, 29 Jul 2025 16:12:27 +0000 (06:12 -1000)] 
linux-user: Move elf_core_copy_regs to sh4/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to openrisc/elfload.c
Richard Henderson [Tue, 29 Jul 2025 16:12:01 +0000 (06:12 -1000)] 
linux-user: Move elf_core_copy_regs to openrisc/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to microblaze/elfload.c
Richard Henderson [Tue, 29 Jul 2025 16:06:03 +0000 (06:06 -1000)] 
linux-user: Move elf_core_copy_regs to microblaze/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to mips/elfload.c
Richard Henderson [Tue, 29 Jul 2025 16:03:38 +0000 (06:03 -1000)] 
linux-user: Move elf_core_copy_regs to mips/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to loongarch64/elfload.c
Richard Henderson [Tue, 29 Jul 2025 15:58:48 +0000 (05:58 -1000)] 
linux-user: Move elf_core_copy_regs to loongarch64/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to ppc/elfload.c
Richard Henderson [Tue, 29 Jul 2025 15:55:56 +0000 (05:55 -1000)] 
linux-user: Move elf_core_copy_regs to ppc/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to aarch64/elfload.c
Richard Henderson [Tue, 29 Jul 2025 15:53:29 +0000 (05:53 -1000)] 
linux-user: Move elf_core_copy_regs to aarch64/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to arm/elfload.c
Richard Henderson [Tue, 29 Jul 2025 15:51:30 +0000 (05:51 -1000)] 
linux-user: Move elf_core_copy_regs to arm/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move elf_core_copy_regs to {i386,x86_64}/elfload.c
Richard Henderson [Wed, 27 Aug 2025 23:48:07 +0000 (09:48 +1000)] 
linux-user: Move elf_core_copy_regs to {i386,x86_64}/elfload.c

Move elf_core_copy_regs to elfload.c.
Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h.
For now, duplicate the definitions of target_elf_greg_t and tswapreg.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Rename USE_ELF_CORE_DUMP to HAVE_ELF_CORE_DUMP
Richard Henderson [Wed, 27 Aug 2025 23:46:08 +0000 (09:46 +1000)] 
linux-user: Rename USE_ELF_CORE_DUMP to HAVE_ELF_CORE_DUMP

The other knobs in target_elf.h are all HAVE_*.
Rename this USE_ELF_CORE_DUMP to match.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Declare elf_core_copy_regs in loader.h
Richard Henderson [Sat, 2 Aug 2025 09:38:28 +0000 (19:38 +1000)] 
linux-user: Declare elf_core_copy_regs in loader.h

Drop the static from all implementations.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Update comment for target_elf_gregset_t
Richard Henderson [Wed, 27 Aug 2025 22:37:17 +0000 (08:37 +1000)] 
linux-user: Update comment for target_elf_gregset_t

The only thing now used by generic core dump code is
target_elf_gregset_t; ELF_NREG and target_elf_greg_t
are now private to the implementation.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/xtensa: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 22:32:11 +0000 (08:32 +1000)] 
linux-user/xtensa: Convert target_elf_gregset_t to a struct

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/s390x: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 22:30:25 +0000 (08:30 +1000)] 
linux-user/s390x: Convert target_elf_gregset_t to a struct

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/m68k: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 22:19:30 +0000 (08:19 +1000)] 
linux-user/m68k: Convert target_elf_gregset_t to a struct

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/sh4: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 22:17:40 +0000 (08:17 +1000)] 
linux-user/sh4: Convert target_elf_gregset_t to a struct

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/openrisc: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 22:15:44 +0000 (08:15 +1000)] 
linux-user/openrisc: Convert target_elf_gregset_t to a struct

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/microblaze: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 22:13:46 +0000 (08:13 +1000)] 
linux-user/microblaze: Convert target_elf_gregset_t to a struct

While we're at it, drop "pos++" and simply open-code indexes.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/mips: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 22:10:05 +0000 (08:10 +1000)] 
linux-user/mips: Convert target_elf_gregset_t to a struct

While we're at it, merge the store of TARGET_EF_R0 into the
loop over all R0 registers.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/loongarch64: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 22:07:32 +0000 (08:07 +1000)] 
linux-user/loongarch64: Convert target_elf_gregset_t to a struct

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/ppc: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 22:05:47 +0000 (08:05 +1000)] 
linux-user/ppc: Convert target_elf_gregset_t to a struct

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/aarch64: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 22:03:45 +0000 (08:03 +1000)] 
linux-user/aarch64: Convert target_elf_gregset_t to a struct

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/arm: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 22:02:18 +0000 (08:02 +1000)] 
linux-user/arm: Convert target_elf_gregset_t to a struct

While we're at it, loop over the general registers
rather than open-code them.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/i386: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 21:57:31 +0000 (07:57 +1000)] 
linux-user/i386: Convert target_elf_gregset_t to a struct

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/x86_64: Convert target_elf_gregset_t to a struct
Richard Henderson [Wed, 27 Aug 2025 21:55:10 +0000 (07:55 +1000)] 
linux-user/x86_64: Convert target_elf_gregset_t to a struct

A structure typedef may be abstract, while an array typedef cannot.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Drop deprecated -p option
Peter Maydell [Thu, 28 Aug 2025 16:20:12 +0000 (17:20 +0100)] 
linux-user: Drop deprecated -p option

The user-mode '-p' option has been deprecated since 9.0 and
doesn't do anything except emit a warning. We are well past
our minimum deprecation period, so drop the option.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250828162012.3307647-1-peter.maydell@linaro.org>

6 weeks agolinux-user: Tidy print_socket_protocol
Richard Henderson [Wed, 27 Aug 2025 21:36:25 +0000 (07:36 +1000)] 
linux-user: Tidy print_socket_protocol

Sink all of the qemu_log calls to the end, collecting only
a string for the name, if identified.  Merge separate if
blocks into one switch.

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agohw/core: Use qemu_log_trylock/unlock in cpu_common_reset_exit
Richard Henderson [Wed, 27 Aug 2025 05:34:35 +0000 (15:34 +1000)] 
hw/core: Use qemu_log_trylock/unlock in cpu_common_reset_exit

Ensure that the "CPU Reset" message won't be separated
from the cpu_dump_state output.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agohw/core: Dump cpu_reset in the reset.exit phase
Richard Henderson [Wed, 27 Aug 2025 05:27:50 +0000 (15:27 +1000)] 
hw/core: Dump cpu_reset in the reset.exit phase

During reset.hold, the cpu is in an inconsistent state,
where the leaf class has not had a chance to initialize
state at all.

This is visible as a SIGSEGV in "qemu-system-sparc64 -d cpu_reset".

Move the dump to the exit phase, where all initialization
is certain to be complete.

Reported-by: Henk van der Laak <henk@laaksoft.nl>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agoMerge tag 'pull-lu-20250828' of https://gitlab.com/rth7680/qemu into staging
Richard Henderson [Wed, 27 Aug 2025 23:24:36 +0000 (09:24 +1000)] 
Merge tag 'pull-lu-20250828' of https://gitlab.com/rth7680/qemu into staging

linux-user: do not print IP socket options by default
linux-user: Add strace for rseq
linux-user: Move get_elf_cpu_model to target/elfload.c
linux-user: Move get_elf_hwcap to target/elfload.c
linux-user: Move get_elf_hwcap2 to target/elfload.c
linux-user: Move get_elf_platform to target/elfload.c
linux-user: Move get_elf_base_platform to target/elfload.c
linux-user: Create init_main_thread in target/cpu_loop.c
semihosting: Retrieve stack top from image_info
semihosting: Initialize heap once per process

# -----BEGIN PGP SIGNATURE-----
#
# iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmive68dHHJpY2hhcmQu
# aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV+LwwgAsjSjc5Bjal0mc+UI
# Qmb7qbNM7YDhJ4o9eJoT7AfEo3AlR8vhA01/ayfBEKMxYStl4tkZU1jthb7LLTyS
# TfPBsZEBF/ZuTYLV56dfQ/6AJZ2g5OhqJbeVeD8Ef93JK60qgBerCK/D5SfphSfh
# TQtOG0LU2BXzGt8K3WghFxsFQeYcTrNeT5JdtIXYrmGQmDnPh3dOnQrFcO1leFLa
# khUfj7l7bE1Rgqo5h5pveaee4AD3VndYe10zvSVKHKjBL4Zd3hxf3MypNRpDFC0v
# ua9xt4qXtWgEYSkKPj/mipcd9fsb+RKs6kPA3oojwb8DCkFAZ0UogIwmd9/7lz8u
# FMp+iQ==
# =Nu63
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu 28 Aug 2025 07:42:07 AM AEST
# gpg:                using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg:                issuer "richard.henderson@linaro.org"
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [ultimate]

* tag 'pull-lu-20250828' of https://gitlab.com/rth7680/qemu: (46 commits)
  linux-user: do not print IP socket options by default
  linux-user: Add strace for rseq
  linux-user: Remove do_init_main_thread
  linux-user/hexagon: Create init_main_thread
  linux-user/xtensa: Create init_main_thread
  linux-user/hppa: Create init_main_thread
  linux-user/riscv: Create init_main_thread
  linux-user/s390x: Create init_main_thread
  linux-user/alpha: Create init_main_thread
  linux-user/m68k: Create init_main_thread
  linux-user/sh4: Create init_main_thread
  linux-user/openrisc: Create init_main_thread
  linux-user/microblaze: Create init_main_thread
  linux-user/mips: Create init_main_thread
  linux-user/loongarch64: Create init_main_thread
  linux-user/ppc: Create init_main_thread
  linux-user/sparc: Create init_main_thread
  linux-user/aarch64: Create init_main_thread
  linux-user/arm: Remove a.out startup remenents
  linux-user/arm: Create init_main_thread
  ...

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: do not print IP socket options by default
Łukasz Stelmach [Wed, 27 Aug 2025 09:54:12 +0000 (11:54 +0200)] 
linux-user: do not print IP socket options by default

IP protocols should not be printed unless the socket is an IPv4 or
IPv6 one. Current arrangement erroneously prints IPPROTO_IP for Unix
domain sockets.

Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250827095412.2348821-1-l.stelmach@samsung.com>

6 weeks agolinux-user: Add strace for rseq
Joel Stanley [Tue, 26 Aug 2025 06:03:40 +0000 (15:33 +0930)] 
linux-user: Add strace for rseq

 build/qemu-riscv64 -cpu rv64,v=on -d strace  build/tests/tcg/riscv64-linux-user/test-vstart-overflow
 1118081 riscv_hwprobe(0xffffbc038200,1,0,0,0,0) = 0
 1118081 brk(NULL) = 0x0000000000085000
 1118081 brk(0x0000000000085b00) = 0x0000000000085b00
 1118081 set_tid_address(0x850f0) = 1118081
 1118081 set_robust_list(0x85100,24) = -1 errno=38 (Function not implemented)
 1118081 rseq(0x857c0,32,0,0xf1401073) = -1 errno=38 (Function not implemented)

Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250826060341.1118670-1-joel@jms.id.au>

6 weeks agolinux-user: Remove do_init_main_thread
Richard Henderson [Tue, 29 Jul 2025 08:24:19 +0000 (22:24 -1000)] 
linux-user: Remove do_init_main_thread

All targets have been converted, so we can call init_main_thread
directly.  Remove do_init_main_thread and HAVE_INIT_MAIN_THREAD.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/hexagon: Create init_main_thread
Richard Henderson [Tue, 29 Jul 2025 08:19:49 +0000 (22:19 -1000)] 
linux-user/hexagon: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/xtensa: Create init_main_thread
Richard Henderson [Tue, 29 Jul 2025 08:16:22 +0000 (22:16 -1000)] 
linux-user/xtensa: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/hppa: Create init_main_thread
Richard Henderson [Tue, 29 Jul 2025 08:09:19 +0000 (22:09 -1000)] 
linux-user/hppa: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/riscv: Create init_main_thread
Richard Henderson [Tue, 29 Jul 2025 08:06:12 +0000 (22:06 -1000)] 
linux-user/riscv: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/s390x: Create init_main_thread
Richard Henderson [Tue, 29 Jul 2025 08:03:03 +0000 (22:03 -1000)] 
linux-user/s390x: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/alpha: Create init_main_thread
Richard Henderson [Tue, 29 Jul 2025 07:59:47 +0000 (21:59 -1000)] 
linux-user/alpha: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Note that init_thread had set ps in target_pt_regs, but
target_cpu_copy_regs did not copy to env.  This turns out to be
ok because alpha_cpu_initfn initializes flags properly.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/m68k: Create init_main_thread
Richard Henderson [Tue, 29 Jul 2025 07:53:30 +0000 (21:53 -1000)] 
linux-user/m68k: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/sh4: Create init_main_thread
Richard Henderson [Tue, 29 Jul 2025 07:51:02 +0000 (21:51 -1000)] 
linux-user/sh4: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/openrisc: Create init_main_thread
Richard Henderson [Tue, 29 Jul 2025 07:48:48 +0000 (21:48 -1000)] 
linux-user/openrisc: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/microblaze: Create init_main_thread
Richard Henderson [Tue, 29 Jul 2025 07:44:06 +0000 (21:44 -1000)] 
linux-user/microblaze: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/mips: Create init_main_thread
Richard Henderson [Mon, 28 Jul 2025 23:33:18 +0000 (13:33 -1000)] 
linux-user/mips: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Note that init_thread had set cp0_status in target_pt_regs, but
target_cpu_copy_regs did not copy to env.  This turns out to be
ok because mips_cpu_reset_hold initializes CP0_Status properly.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/loongarch64: Create init_main_thread
Richard Henderson [Mon, 28 Jul 2025 23:22:48 +0000 (13:22 -1000)] 
linux-user/loongarch64: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Note that init_thread had set crmd in target_pt_regs, but
target_cpu_copy_regs did not copy to env.  This turns out to be
ok because loongarch_cpu_reset_hold initializes CRMD properly.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/ppc: Create init_main_thread
Richard Henderson [Mon, 28 Jul 2025 23:09:29 +0000 (13:09 -1000)] 
linux-user/ppc: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/sparc: Create init_main_thread
Richard Henderson [Mon, 28 Jul 2025 22:29:11 +0000 (12:29 -1000)] 
linux-user/sparc: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/aarch64: Create init_main_thread
Richard Henderson [Mon, 28 Jul 2025 21:04:34 +0000 (11:04 -1000)] 
linux-user/aarch64: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/arm: Remove a.out startup remenents
Richard Henderson [Sat, 2 Aug 2025 21:51:51 +0000 (07:51 +1000)] 
linux-user/arm: Remove a.out startup remenents

The setting of r1/r2 was removed in kernel commit acfdd4b1f7590d0
("ARM: 7791/1: a.out: remove partial a.out support"), and the
kernel commit message explains the history.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/arm: Create init_main_thread
Richard Henderson [Mon, 28 Jul 2025 20:43:26 +0000 (10:43 -1000)] 
linux-user/arm: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/i386: Create init_main_thread
Richard Henderson [Mon, 28 Jul 2025 20:17:44 +0000 (10:17 -1000)] 
linux-user/i386: Create init_main_thread

Merge init_thread and target_cpu_copy_regs.
There's no point going through a target_pt_regs intermediate.
Temporarily introduce HAVE_INIT_MAIN_THREAD during conversion.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Create do_init_main_thread
Richard Henderson [Mon, 28 Jul 2025 20:00:36 +0000 (10:00 -1000)] 
linux-user: Create do_init_main_thread

Provide a unified function to initialize the main thread.
Keep target_pt_regs isolated to this function.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move target_cpu_copy_regs decl to qemu.h
Richard Henderson [Mon, 28 Jul 2025 19:49:39 +0000 (09:49 -1000)] 
linux-user: Move target_cpu_copy_regs decl to qemu.h

The function is not used by bsd-user, so placement
within include/user/cpu_loop.h is not ideal.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move get_elf_base_platform to mips/elfload.c
Richard Henderson [Mon, 28 Jul 2025 19:24:31 +0000 (09:24 -1000)] 
linux-user: Move get_elf_base_platform to mips/elfload.c

Pass in CPUState; define HAVE_ELF_BASE_PLATFORM.
Since this was the only instance of ELF_BASE_PLATFORM, go ahead and
provide the stub definition for other platforms.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Remove ELF_PLATFORM
Richard Henderson [Mon, 28 Jul 2025 19:18:03 +0000 (09:18 -1000)] 
linux-user: Remove ELF_PLATFORM

All real definitions of ELF_PLATFORM are now identical, and the stub
definitions are NULL.  Use HAVE_ELF_PLATFORM and provide a stub as a
fallback definition of get_elf_platform.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/hppa: Create get_elf_platform
Richard Henderson [Mon, 28 Jul 2025 19:06:39 +0000 (09:06 -1000)] 
linux-user/hppa: Create get_elf_platform

Move the string literal to a new function.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/loongarch64: Create get_elf_platform
Richard Henderson [Mon, 28 Jul 2025 19:00:52 +0000 (09:00 -1000)] 
linux-user/loongarch64: Create get_elf_platform

Move the string literal to a new function.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move get_elf_platform to arm/elfload.c
Richard Henderson [Mon, 28 Jul 2025 18:47:57 +0000 (08:47 -1000)] 
linux-user: Move get_elf_platform to arm/elfload.c

Move the aarch32 get_elf_platform to arm/elfload.c; pass in CPUState.
Create a simple version in aarch64/elfload.c, which we must do at the
same time because of the ifdef dependency between TARGET_AARCH64
and TARGET_ARM.

Since all versions of get_elf_platform now have the same
signature, remove the ifdef from the declaration in loader.h.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user/i386: Return const data from get_elf_platform
Richard Henderson [Mon, 28 Jul 2025 18:43:35 +0000 (08:43 -1000)] 
linux-user/i386: Return const data from get_elf_platform

Rather than modify a static buffer, index into an array of const data.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move get_elf_platform to {i386,x86_64}/elfload.c
Richard Henderson [Mon, 28 Jul 2025 18:41:43 +0000 (08:41 -1000)] 
linux-user: Move get_elf_platform to {i386,x86_64}/elfload.c

Move get_elf_platform to i386/elfload.c; pass in CPUState.
Create a simple get_elf_platform for x86_64.
Introduce HAVE_ELF_PLATFORM.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Remove ELF_HWCAP2
Richard Henderson [Fri, 1 Aug 2025 23:13:23 +0000 (09:13 +1000)] 
linux-user: Remove ELF_HWCAP2

All definitions of ELF_HWCAP2 are now identical.  Provide a
not-reached stub as a fallback definition of get_elf_hwcap2.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Remove ELF_HWCAP
Richard Henderson [Fri, 1 Aug 2025 23:05:41 +0000 (09:05 +1000)] 
linux-user: Remove ELF_HWCAP

All real definitions of ELF_HWCAP are now identical, and the stub
definitions are 0.  Provide zero stub as a fallback definition.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move get_elf_hwcap to riscv/elfload.c
Richard Henderson [Mon, 28 Jul 2025 07:44:02 +0000 (21:44 -1000)] 
linux-user: Move get_elf_hwcap to riscv/elfload.c

Change the return type to abi_ulong, and pass in the cpu.
As this is the last instance of get_elf_hwcap to be converted,
remove the ifdef around the declaration in loader.h.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move hwcap functions to s390x/elfload.c
Richard Henderson [Mon, 28 Jul 2025 07:39:23 +0000 (21:39 -1000)] 
linux-user: Move hwcap functions to s390x/elfload.c

For get_elf_hwcap, change the return type to abi_ulong
and pass in the cpu.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move get_elf_hwcap to sh4/elfload.c
Richard Henderson [Mon, 28 Jul 2025 07:28:05 +0000 (21:28 -1000)] 
linux-user: Move get_elf_hwcap to sh4/elfload.c

Change the return type to abi_ulong, and pass in the cpu.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move get_elf_hwcap to mips/elfload.c
Richard Henderson [Mon, 28 Jul 2025 07:23:05 +0000 (21:23 -1000)] 
linux-user: Move get_elf_hwcap to mips/elfload.c

Change the return type to abi_ulong, and pass in the cpu.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move get_elf_hwcap to loongarch64/elfload.c
Richard Henderson [Mon, 28 Jul 2025 07:17:08 +0000 (21:17 -1000)] 
linux-user: Move get_elf_hwcap to loongarch64/elfload.c

Change the return type to abi_ulong, and pass in the cpu.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move hwcap functions to ppc/elfload.c
Richard Henderson [Mon, 28 Jul 2025 07:12:54 +0000 (21:12 -1000)] 
linux-user: Move hwcap functions to ppc/elfload.c

Change the return type to abi_ulong, and pass in the cpu.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move get_elf_hwcap to sparc/elfload.c
Richard Henderson [Mon, 28 Jul 2025 07:03:12 +0000 (21:03 -1000)] 
linux-user: Move get_elf_hwcap to sparc/elfload.c

Change the return type to abi_ulong, and pass in the cpu.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move hwcap functions to {arm,aarch64}/elfload.c
Richard Henderson [Mon, 28 Jul 2025 06:52:01 +0000 (20:52 -1000)] 
linux-user: Move hwcap functions to {arm,aarch64}/elfload.c

For get_elf_hwcap and get_elf_hwcap2, change the return type to
abi_ulong, and pass in the cpu.  We must do these targets at the
same time because of the ifdef dependency between TARGET_AARCH64
and TARGET_ARM.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move get_elf_hwcap to {i386,x86_64}/elfload.c
Richard Henderson [Mon, 28 Jul 2025 06:34:19 +0000 (20:34 -1000)] 
linux-user: Move get_elf_hwcap to {i386,x86_64}/elfload.c

Change the return type to abi_ulong, and pass in the cpu.
Duplicate the one line function between i386 and x86_64,
as most other additions to elfload.c won't be common.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move get_elf_cpu_model to target/elfload.c
Richard Henderson [Tue, 29 Jul 2025 20:09:57 +0000 (10:09 -1000)] 
linux-user: Move get_elf_cpu_model to target/elfload.c

Rename from cpu_get_model to emphasize that this is an elf-specific
function.  Declare the function once in loader.h.

This frees up target_elf.h for other uses.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Move ppc uabi/asm/elf.h workaround to osdep.h
Richard Henderson [Tue, 29 Jul 2025 23:40:15 +0000 (13:40 -1000)] 
linux-user: Move ppc uabi/asm/elf.h workaround to osdep.h

Move the workaround out of linux-user/elfload.c, so that
we don't have to replicate it in many places.  Place it
immediately after the include of <signal.h>, which draws
in the relevant symbols.

Note that ARCH_DLINFO is not defined by the kernel header,
and so there's no need to undef it either.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agolinux-user: Create target/elfload.c files
Richard Henderson [Tue, 29 Jul 2025 18:03:41 +0000 (08:03 -1000)] 
linux-user: Create target/elfload.c files

Prepare to split the main linux-user/elfload.c.
Create empty files for each target, and add the common build rule.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agosemihosting: Initialize heap once per process
Richard Henderson [Sat, 2 Aug 2025 00:25:12 +0000 (10:25 +1000)] 
semihosting: Initialize heap once per process

While semihosting isn't really thread aware, the current
implementation allocates space for the heap per-thread.

Remove the heap_base and heap_limit fields from TaskState.
Replace with static variables within do_common_semihosting.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agosemihosting: Retrieve stack top from image_info
Richard Henderson [Sat, 2 Aug 2025 00:12:01 +0000 (10:12 +1000)] 
semihosting: Retrieve stack top from image_info

Remove the write-once field TaskState.stack_base, and use the
same value from struct image_info.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agoMerge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging
Richard Henderson [Wed, 27 Aug 2025 20:28:42 +0000 (06:28 +1000)] 
Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging

* rust: declare self as qemu_api for proc-macros
* rust/qemu-api-macros: make derive(Object) friendly when missing parent
* x86/loader: Don't update kernel header for CoCo VMs
* target/i386: Add support for save/load of exception error code
* i386/tcg/svm: fix incorrect canonicalization
* scripts/minikconf.py: small fixes

# -----BEGIN PGP SIGNATURE-----
#
# iQFIBAABCgAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmivPVYUHHBib256aW5p
# QHJlZGhhdC5jb20ACgkQv/vSX3jHroNi/wf/VvAfmXDNgiffoXl91cF8kx2zSs8L
# D+pd/ufVEkFYsU1EnHUsGJKK0XrjHp/beCGkWZr9nTP448n1t5MiTYgI9z5Lkult
# hwBQMZsxbOLw4BItbh9obWC5HrfHqgpy88hsfy+RfiSU31ae4drzottDm3/VbaFY
# 2d0x9ai8lvaTk+GqBV8EeeCT210tS/Cb/8HC22o+vC2O2/cztnuCj6wtD43ocDEk
# lhT00edP8jUX4EoPAx18Qkv/zzPL/p9jWVAFCcE/IZ/e4LSrgA61aUyoP9vvrjWh
# U+f8C4MV2o8oZ1lM9FC5hJ0LdQbeq1kxqqukQIKYlRiFXjD3LZ+3wJueHQ==
# =XEsN
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu 28 Aug 2025 03:16:06 AM AEST
# gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg:                issuer "pbonzini@redhat.com"
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [unknown]
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [unknown]
# gpg: WARNING: The key's User ID is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* tag 'for-upstream' of https://gitlab.com/bonzini/qemu:
  rust: move dependencies to rust/Cargo.toml
  rust: declare self as qemu_api for proc-macros
  rust/qemu-api-macros: make derive(Object) friendly when missing parent
  subprojects: update proc-macro2 and syn
  rust: qemu-api-macros: support matching more than one error
  rust: disable borrow_as_ptr warning
  kvm/kvm-all: make kvm_park/unpark_vcpu local to kvm-all.c
  i386/tcg/svm: fix incorrect canonicalization
  x86/loader: Don't update kernel header for CoCo VMs
  MAINTAINERS: add a few more files to "Top Level Makefile and configure"
  python: mkvenv: fix messages printed by mkvenv
  scripts/minikconf.py: s/Error/KconfigParserError
  scripts/minikconf.py: fix invalid attribute access
  target/i386: Add support for save/load of exception error code

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agoMerge tag 'pull-request-2025-08-27' of https://gitlab.com/thuth/qemu into staging
Richard Henderson [Wed, 27 Aug 2025 09:11:08 +0000 (19:11 +1000)] 
Merge tag 'pull-request-2025-08-27' of https://gitlab.com/thuth/qemu into staging

* Add v10.2 compat machines
* Move functional tests to target specific subfolders
* Fix some issues in functional tests

# -----BEGIN PGP SIGNATURE-----
#
# iQJFBAABCgAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmiuuP0RHHRodXRoQHJl
# ZGhhdC5jb20ACgkQLtnXdP5wLbVMEA//egQiaWsMquQan7D8RWt7TkD2deY2L5Dx
# D/pkO3xGA1hxCzD37ptGfFw2NO6cVpH8cjOevrJYUwW1Yefbsf8HqUlC7PrqDjTw
# +ztyIPSl7ny3xQxif+1Oc2rmt6MCNCQTw9CLdB0k3D1jr7aY0Z20JrxFrQmExhOe
# oSqiILYwiZGfNI4jiQSBYtBVpKrqwCQ+gEs6HyqayQOczaYynHvt8Gqwyp/DpKpY
# bfBcqbREK8zYTMMRYl5d/qcJpWgVtCj5OeqDQyhLMSgNt9fGmdKMzjK5Wzgl18gX
# 8A9tFK8KreXXLu1UfJWe+/kFAHMWhEWMkOv81Z/gqB4Zmp/eMioKlGDwVBU//PPm
# VFigfAPtqBqvOiuJo673ze2AOWMGROtLyZ9nyfv8/MZcQqoYLtvfZMUa08/M74/w
# TRSsBMGKk3H2O/prrXjFHK8q0aRXB2Ld3to0TyZOwlB17rhaD5jq/P8ge2UgGRGb
# fSghUKGmBAHueZyUdlCer+TEzH8ySl5zmotfiDeQfIYkwQ6rWUQZfehLxoycuHvr
# Kl3ZU6RD7fD2kCzRbvUOsyg0H3pihVvzcCL5BMxbGQ1sqZ+WI1dWPoOaUrZ9EvOg
# lQtsNMiu2i7bVqaJ27zNR4V3nwU77f/f+6zJwyXtD+6Wb+bFcQu5aYfgjqOr/Tlv
# zEVoqp5pRU4=
# =pSMT
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed 27 Aug 2025 05:51:25 PM AEST
# gpg:                using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5
# gpg:                issuer "thuth@redhat.com"
# gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [unknown]
# gpg:                 aka "Thomas Huth <thuth@redhat.com>" [unknown]
# gpg:                 aka "Thomas Huth <th.huth@posteo.de>" [unknown]
# gpg:                 aka "Thomas Huth <huth@tuxfamily.org>" [unknown]
# gpg: WARNING: The key's User ID is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 27B8 8847 EEE0 2501 18F3  EAB9 2ED9 D774 FE70 2DB5

* tag 'pull-request-2025-08-27' of https://gitlab.com/thuth/qemu: (31 commits)
  tests/functional: Mark main in QemuBaseTest class as a static method
  MAINTAINERS: Adjust wildcards for the migration, multiprocess and replay tests
  tests/functional: Move the generic tests to a subfolder
  tests/functional: Move xtensa tests into target-specific folder
  tests/functional: Move x86_64 tests into target-specific folder
  tests/functional: Move sparc/sparc64 tests into target-specific folders
  tests/functional: Move sh4/sh4eb tests into target-specific folders
  tests/functional: Move s390x tests into target-specific folders
  tests/functional: Move rx test into target-specific folders
  tests/functional: Move riscv32/riscv64 tests into target-specific folders
  tests/functional: Move ppc/ppc64 tests into target-specific folders
  tests/functional: Move or1k tests into target-specific folders
  tests/functional: Move mips tests into target-specific folders
  tests/functional: Move microblaze tests into architecture specific folder
  tests/functional: Move m68k tests into architecture specific folder
  tests/functional: Move loongarch64 tests into architecture specific folder
  tests/functional: Move i386 tests into architecture specific folder
  tests/functional: Move hppa tests into architecture specific folder
  tests/functional: Move avr tests into architecture specific folder
  tests/functional: Move arm tests into architecture specific folder
  ...

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6 weeks agorust: move dependencies to rust/Cargo.toml
Paolo Bonzini [Fri, 22 Aug 2025 10:07:44 +0000 (12:07 +0200)] 
rust: move dependencies to rust/Cargo.toml

As more crates start using the same dependencies, it's better to not
repeat the versions and move the dependency declarations to the workspace.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
6 weeks agorust: declare self as qemu_api for proc-macros
Manos Pitsidianakis [Mon, 28 Jul 2025 11:48:23 +0000 (14:48 +0300)] 
rust: declare self as qemu_api for proc-macros

Fix an outstanding TODO.

Declaring `extern crate self as qemu_api` allows use of `qemu_api`
within the qemu_api crate; this allows the Wrapper derive macro and
future proc macros to be used interchangeably in the qemu_api crate and
other crates. This is not required currently and is only for
future-proofing.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Link: https://lore.kernel.org/r/20250728-self-as-qemu_api-v1-1-001c339cccc8@linaro.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
6 weeks agorust/qemu-api-macros: make derive(Object) friendly when missing parent
Marc-André Lureau [Tue, 26 Aug 2025 13:31:32 +0000 (17:31 +0400)] 
rust/qemu-api-macros: make derive(Object) friendly when missing parent

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Link: https://lore.kernel.org/r/20250826133132.4064478-5-marcandre.lureau@redhat.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
6 weeks agosubprojects: update proc-macro2 and syn
Paolo Bonzini [Thu, 17 Jul 2025 06:09:26 +0000 (08:09 +0200)] 
subprojects: update proc-macro2 and syn

syn 2.0.69 adds Punctuated::get().  The serde and attrs crate also need
a newer version.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
6 weeks agorust: qemu-api-macros: support matching more than one error
Paolo Bonzini [Wed, 16 Jul 2025 11:17:09 +0000 (13:17 +0200)] 
rust: qemu-api-macros: support matching more than one error

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>