l4linux signals SIGSEGV instead of SIGILL and others

Martin Schröder martin.schroeder at openlimit.com
Fri Jan 24 17:04:00 CET 2014


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 

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.


> .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