Re: Fwd: 'Illegal Instruction' on L4Linux

ba_f <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
Thanks,

indeed VFP wasn't enabled in CONFIG.
I thought ARMv6 doesn't support VFP, and my L4Linux is built for ARMv6.
Anyway...



ba_f

Am 2016-02-01 20:29, schrieb Alexander Tarasikov:
> Forwarding here just in case someone stumbles on this thread. Forgot
> to reply-all :(
> 
> 
> ---------- Forwarded message ----------
> From: Alexander Tarasikov <[email protected]>
> Date: Mon, Feb 1, 2016 at 10:28 PM
> Subject: Re: 'Illegal Instruction' on L4Linux
> To: ba_f <[email protected]>
> 
> 
> On Mon, Feb 1, 2016 at 8:53 PM, ba_f
> <[email protected]> wrote:
>> Hello,
>> 
>> 
>> i have an issue with apps running on L4Linux.
>> 
>> /usr/bin # ./helloWorld
>> Illegal instruction
>> 
>> Actually, on the current l4re-snapshot-2015123115 my apps run without
>> problem.
>> But, on l4re-snapshot-2014022818 or l4re-snapshot-2014092821 the same 
>> app
>> don't works.
>> All apps say 'Illegal instruction'.
>> 
>> I've built for Zynq.
>> 
>> 
>> Any idea what's wrong?
> 
> You have not provided enough information. For example, how you compile
> Fiasco, L4Re and L4Linux.
> My experience with L4Re tells me you probably forgot to enable
> VFP/NEON in configuration options - check the menuconfig for Fiasco,
> L4Re and L4Linux. Most likely what happened is that the newer
> toolchain is by default using the "hardfloat" ABI and the compiler
> generates VFP/NEON instructions.
> 
> If that fails, I suggest that you try debugging it yourself
> Therefore, there are several places you should look at:
> 
> 1) First, you could try running the app under gdb. It will then print
> the stack trace and point to the offending instruction.
> 
> 2) You could also install a SIGILL handler in your app and see what's
> the actual instruction causing the fault. I have an example code here
> - 
> https://gist.github.com/astarasikov/9369538#file-arm-sigill-example-L71.
> It's actually a complicated example that patches the code at runtime.
> What you need to look at is at the following lines in "my_sh":
> # ucontext_t *uc = (ucontext_t*)data;
> # struct sigcontext *ctx = &(((ucontext_t*)uc)->uc_mcontext);
> # ctx->arm_pc; //this is the address of the instruction. You can
> printf it (as an unsigned integer) and decode the instruction.
> 
> 3) If that fails, you could patch the invalid opcode handler in kernel
> to print the instruction. You should grep "arch/arm" and "arch/l4" for
> "SIGILL". Then, you can add the code to the trap handler.
> Alternatively, if you build kernel with CONFIG_DEBUG and
> CONFIG_DEBUG_USER, you will be able to see the stack trace and the hex
> dump of the instruction in the "dmesg" (or on the serial port
> console).
> 
>> 
>> (My project is stable on the old snapshots, that's why i try to avoid
>> migrating to current snapshot.)
>> 
>> 
>> 
>> thanks,
>> ba_f
>> 
>> _______________________________________________
>> l4-hackers mailing list
>> [email protected]
>> http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
> 
> 
> 
> --
> Regards, Alexander
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.