Richard Henderson and David Gibson
6086c751c3
target/ppc: Replace POWERPC_EXCP_BRANCH with DISAS_NORETURN
...
The translation of branch instructions always results in exit from
the TB. Remove the synthetic "exception" after no more uses.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210517205025.3777947-4-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:29 +10:00
Richard Henderson and David Gibson
d736de8ff6
target/ppc: Replace POWERPC_EXCP_STOP with DISAS_EXIT_UPDATE
...
Remove the synthetic "exception" after no more uses.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20210517205025.3777947-3-matheus.ferst@eldorado.org.br >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-19 10:30:29 +10:00
Ilya Leoshkevich and Laurent Vivier
4a1e8931ec
linux-user/elfload: add s390x core dumping support
...
Provide the following definitions required by the common code:
* ELF_NREG: with the value of sizeof(s390_regs) / sizeof(long).
* target_elf_gregset_t: define it like all the other arches do.
* elf_core_copy_regs(): similar to kernel's s390_regs_get().
* USE_ELF_CORE_DUMP.
* ELF_EXEC_PAGESIZE.
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com >
Message-Id: <20210413205608.22587-1-iii@linux.ibm.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:10:46 +02:00
Ilya Leoshkevich and Laurent Vivier
5f779a3a26
linux-user/elfload: fix filling psinfo->pr_psargs
...
The current code dumps the memory between arg_start and arg_end,
which contains the argv pointers. This results in the
Core was generated by `<garbage>`
message when opening the core file in GDB. This is because the code is
supposed to dump the actual arg strings. Fix by using arg_strings and
env_strings instead of arg_start and arg_end.
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com >
Message-Id: <20210413205814.22821-1-iii@linux.ibm.com >
[lv: add missing braces]
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:10:46 +02:00
Richard Henderson and Laurent Vivier
fb80439b1e
linux-user: Tidy TARGET_NR_rt_sigaction
...
Initialize variables instead of elses.
Use an else instead of a goto.
Add braces.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20210422230227.314751-8-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:10:46 +02:00
Richard Henderson and Laurent Vivier
02d0de101c
linux-user/alpha: Share code for TARGET_NR_sigaction
...
There's no longer a difference between the alpha code and
the generic code.
There is a type difference in target_old_sigaction.sa_flags,
which can be resolved with a very much smaller ifdef, which
allows us to finish sharing the target_sigaction definition.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Message-Id: <20210422230227.314751-7-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:10:46 +02:00
Richard Henderson and Laurent Vivier
0f6f99032e
linux-user/alpha: Define TARGET_ARCH_HAS_KA_RESTORER
...
This means that we can share the TARGET_NR_rt_sigaction code,
and the target_rt_sigaction structure is unused. Untangling
the ifdefs so that target_sigaction can be shared will wait
until the next patch.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Message-Id: <20210422230227.314751-6-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:10:45 +02:00
Richard Henderson and Laurent Vivier
ca192277db
linux-user: Honor TARGET_ARCH_HAS_SA_RESTORER in do_syscall
...
Do not access a field that may not be present. This will
become an issue when sharing more code in the next patch.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20210422230227.314751-5-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:10:45 +02:00
Richard Henderson and Laurent Vivier
02fb28e8ef
linux-user: Pass ka_restorer to do_sigaction
...
The value of ka_restorer needs to be saved in sigact_table.
At the moment, the attempt to save it in do_syscall is
improperly clobbering user memory.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Message-Id: <20210422230227.314751-4-richard.henderson@linaro.org >
[lv: remove tab]
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:10:32 +02:00
Richard Henderson and Laurent Vivier
f20a9ca6d0
linux-user/alpha: Rename the sigaction restorer field
...
Use ka_restorer, in line with TARGET_ARCH_HAS_KA_RESTORER
vs TARGET_ARCH_HAS_SA_RESTORER, since Alpha passes this
field as a syscall argument.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Message-Id: <20210422230227.314751-3-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:09:58 +02:00
Richard Henderson and Laurent Vivier
8f5141a9e1
linux-user/alpha: Fix rt sigframe return
...
We incorrectly used the offset of the non-rt sigframe.
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Message-Id: <20210422230227.314751-2-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:09:58 +02:00
Daniel P. Berrangé and Laurent Vivier
68af19ad72
linux-user: use GDateTime for formatting timestamp for core file
...
The GDateTime APIs provided by GLib avoid portability pitfalls, such
as some platforms where 'struct timeval.tv_sec' field is still 'long'
instead of 'time_t'. When combined with automatic cleanup, GDateTime
often results in simpler code too.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20210505103702.521457-7-berrange@redhat.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:09:58 +02:00
Giuseppe Musacchio and Laurent Vivier
0fa259dd79
linux-user: Fix erroneous conversion in copy_file_range
...
The implicit cast from abi_long to size_t may introduce an intermediate
unwanted sign-extension of the value for 32bit targets running on 64bit
hosts.
Signed-off-by: Giuseppe Musacchio <thatlemon@gmail.com >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20210503174159.54302-3-thatlemon@gmail.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:09:58 +02:00
Giuseppe Musacchio and Laurent Vivier
db3221454d
linux-user: Add copy_file_range to strace.list
...
Signed-off-by: Giuseppe Musacchio <thatlemon@gmail.com >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20210503174159.54302-2-thatlemon@gmail.com >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:09:58 +02:00
Richard Henderson and Laurent Vivier
0b16f04c1f
linux-user/s390x: Handle vector regs in signal stack
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210428193408.233706-16-richard.henderson@linaro.org >
[lv: fix indentation]
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-18 07:09:36 +02:00
Richard Henderson and Laurent Vivier
79d6f2baa4
linux-user/s390x: Clean up signal.c
...
Reorder the function bodies to correspond to the kernel source.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210428193408.233706-15-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:44:38 +02:00
Richard Henderson and Laurent Vivier
9e0fb648b2
linux-user/s390x: Add build asserts for sigset sizes
...
At point of usage, it's not immediately obvious that
we don't need a loop to copy these arrays.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210428193408.233706-14-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:44:38 +02:00
Richard Henderson and Laurent Vivier
ac1a92ec8f
linux-user/s390x: Fix frame_addr corruption in setup_frame
...
The original value of frame_addr is still required for
its use in the call to unlock_user_struct below.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210428193408.233706-13-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:44:38 +02:00
Richard Henderson and Laurent Vivier
6c18757dc5
linux-user/s390x: Add stub sigframe argument for last_break
...
In order to properly present these arguments, we need to add
code to target/s390x to record LowCore parameters for user-only.
But in the meantime, at least zero the missing last_break
argument, and fixup the comment style in the vicinity.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210428193408.233706-12-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:44:38 +02:00
Richard Henderson and Laurent Vivier
7e5355578e
linux-user/s390x: Set psw.mask properly for the signal handler
...
Note that PSW_ADDR_{64,32} are called PSW_MASK_{EA,BA}
in the kernel source.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210428193408.233706-11-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:44:38 +02:00
Richard Henderson and Laurent Vivier
2080734880
linux-user/s390x: Clean up single-use gotos in signal.c
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210428193408.233706-10-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:44:38 +02:00
Richard Henderson and Laurent Vivier
82839490e4
linux-user/s390x: Tidy save_sigregs
...
The "save" routines copied from the kernel, which are currently
commented out, are unnecessary in qemu. We can copy from env
where the kernel needs special instructions. Fix comment style.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210428193408.233706-9-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:44:38 +02:00
Richard Henderson and Laurent Vivier
bb17fc5b47
linux-user/s390x: Use tswap_sigset in setup_rt_frame
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210428193408.233706-8-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:44:38 +02:00
Richard Henderson and Laurent Vivier
4e4a08200b
linux-user/s390x: Fix sigcontext sregs value
...
Using the host address of &frame->sregs is incorrect.
We need the guest address.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210428193408.233706-7-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:44:38 +02:00
Richard Henderson and Laurent Vivier
bd45be9f5f
linux-user/s390x: Fix trace in restore_regs
...
Directly reading sc->regs.psw.addr misses the bswap
that may be performed by __get_user.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: David Hildenbrand <david@redhat.com >
Message-Id: <20210428193408.233706-6-richard.henderson@linaro.org >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2021-05-15 21:44:38 +02:00