l4linux signals SIGSEGV instead of SIGILL and others
Martin Schröder
martin.schroeder at openlimit.com
Fri Jan 24 17:04:00 CET 2014
Hi,
I have a piece of code running fine on native Linux, but terminating
unexpected with SIGSEGV while running on l4linux on the same piece of
hardware.
The relevant code is in _armv7_neon_probe "vorr q15,q15,q15" (undefined
instruction on ARMv5) which normally would throw SIGILL and thus being
caught in the caller.
With CONFIG_L4_DEBUG_SEGFAULTS enabled, the exception is correctly
printed as
> CPSR: 6000010 Err: 00100000
> MyApp/171: Undefined instruction at 0007c7e0 with content f26ee1fe,
err 00100000
Unfortunately, when I look into l4linux/arch/l4/kernal/signal.c in
l4x_deliver_signal(), errcode is not used at all and so IGSEGV will
always be sent, regardless of the exceptions.
Martin
openssl/crypto/armv4cpuid.S:
> .global _armv7_neon_probe
> .type _armv7_neon_probe,%function
> _armv7_neon_probe:
> .word 0xf26ee1fe @ vorr q15,q15,q15
> .word 0xe12fff1e @ bx lr
> .size _armv7_neon_probe,.-_armv7_neon_probe
More information about the l4-hackers
mailing list