ARC: dw2 unwind: Ignore CIE version !=1 gracefully instead of bailing
authorVineet Gupta <vgupta@synopsys.com>
Wed, 16 Dec 2015 11:47:00 +0000 (17:17 +0530)
committerVineet Gupta <vgupta@synopsys.com>
Thu, 17 Dec 2015 05:40:23 +0000 (11:10 +0530)
commit323f41f9e7d0cb5b1d1586aded6682855f1e646d
tree66abe4590d32cab22d76d1ac365034c009354068
parentbc79c9a7216562a2035d2f64f73626613c1300d0
ARC: dw2 unwind: Ignore CIE version !=1 gracefully instead of bailing

ARC dwarf unwinder only supports CIE version == 1
The boot time dwarf sanitizer (part of binary lookup table constructor)
would simply bail if it saw CIE version == 3, rendering unwinder with a
NULL lookup table.

It seems libgcc linked with kernel does have such entries.

With fallback linear search removed, and a NULL binary lookup table,
unwinder fails to generate any stack trace.

So allow graceful ignoring of unsupported CIE entries.

This problem was initially seen in Alexey's setup (and not mine) as he
was using buildroot built toolchain (libgcc) which doesn't get built with
CFLAGS_FOR_TARGET="-gdwarf-2 which is my default

Fixes STAR 9000985048: "kernel unwinder broken with stock tools"

Fixes: 2e22502c080f ARC: dw2 unwind: Remove falllback linear search thru FDE entries
Reported-by Alexey Brodkin <abrodkin@synopsys.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/kernel/unwind.c