]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commit52e8167b16038e621a290b23d4366ccd84dd3d78
tree66abe4590d32cab22d76d1ac365034c009354068
parent41ccced03569cfb247dedd86ca86be86c854adb5
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: 491994c0bd2a 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