Message ID | 20230405213612.15942-17-imp@bsdimp.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | bsd-user 2023 Q2 first batch | expand |
On 4/5/23 14:36, Warner Losh wrote: > When a system call returns ENOSYS, send a SIGSYS to the process (to > generate a core dump). > > Signed-off-by: Warner Losh<imp@bsdimp.com> > --- > bsd-user/arm/target_arch_cpu.h | 8 ++++++++ > 1 file changed, 8 insertions(+) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/bsd-user/arm/target_arch_cpu.h b/bsd-user/arm/target_arch_cpu.h index 517d0087644..c4b21fef713 100644 --- a/bsd-user/arm/target_arch_cpu.h +++ b/bsd-user/arm/target_arch_cpu.h @@ -127,6 +127,14 @@ static inline void target_cpu_loop(CPUARMState *env) env->regs[15] -= env->thumb ? 2 : 4; break; } + /* + * Emulate BSD's sigsys behavior on unimplemented system calls. + * XXX may need to gate this somehow or arrange for sigsys to be + * masked in some use cases. + */ + if (ret == -TARGET_ENOSYS) { + force_sig_fault(TARGET_SIGSYS, SI_KERNEL, env->regs[15]); + } if ((unsigned int)ret >= (unsigned int)(-515)) { ret = -ret; cpsr_write(env, CPSR_C, CPSR_C, CPSRWriteByInstr);
When a system call returns ENOSYS, send a SIGSYS to the process (to generate a core dump). Signed-off-by: Warner Losh <imp@bsdimp.com> --- bsd-user/arm/target_arch_cpu.h | 8 ++++++++ 1 file changed, 8 insertions(+)