|
@@ -0,0 +1,46 @@
|
|
|
|
|
+From 23cd0de28cc7978130b770dd59b18ac143253351 Mon Sep 17 00:00:00 2001
|
|
|
|
|
+From: Vineet Gupta <[email protected]>
|
|
|
|
|
+Date: Tue, 28 Jun 2016 09:42:25 +0530
|
|
|
|
|
+Subject: [PATCH] ARC: unwind: ensure that .debug_frame is generated (vs.
|
|
|
|
|
+ .eh_frame)
|
|
|
|
|
+
|
|
|
|
|
+With recent binutils update to support dwarf CFI pseudo-ops in gas, we
|
|
|
|
|
+now get .eh_frame vs. .debug_frame. Although the call frame info is
|
|
|
|
|
+exactly the same in both, the CIE differs, which the current kernel
|
|
|
|
|
+unwinder can't cope with.
|
|
|
|
|
+
|
|
|
|
|
+This broke both the kernel unwinder as well as loadable modules (latter
|
|
|
|
|
+because of a new unhandled relo R_ARC_32_PCREL from .rela.eh_frame in
|
|
|
|
|
+the module loader)
|
|
|
|
|
+
|
|
|
|
|
+The ideal solution would be to switch unwinder to .eh_frame.
|
|
|
|
|
+For now however we can make do by just ensureing .debug_frame is
|
|
|
|
|
+generated by removing -fasynchronous-unwind-tables
|
|
|
|
|
+
|
|
|
|
|
+ .eh_frame generated with -gdwarf-2 -fasynchronous-unwind-tables
|
|
|
|
|
+ .debug_frame generated with -gdwarf-2
|
|
|
|
|
+
|
|
|
|
|
+Fixes STAR 9001058196
|
|
|
|
|
+
|
|
|
|
|
+Cc: [email protected]
|
|
|
|
|
+Signed-off-by: Vineet Gupta <[email protected]>
|
|
|
|
|
+---
|
|
|
|
|
+ arch/arc/Makefile | 2 --
|
|
|
|
|
+ 1 file changed, 2 deletions(-)
|
|
|
|
|
+
|
|
|
|
|
+diff --git a/arch/arc/Makefile b/arch/arc/Makefile
|
|
|
|
|
+index aeb1902..209d845 100644
|
|
|
|
|
+--- a/arch/arc/Makefile
|
|
|
|
|
++++ b/arch/arc/Makefile
|
|
|
|
|
+@@ -48,8 +48,6 @@ endif
|
|
|
|
|
+
|
|
|
|
|
+ endif
|
|
|
|
|
+
|
|
|
|
|
+-cflags-$(CONFIG_ARC_DW2_UNWIND) += -fasynchronous-unwind-tables
|
|
|
|
|
+-
|
|
|
|
|
+ # By default gcc 4.8 generates dwarf4 which kernel unwinder can't grok
|
|
|
|
|
+ ifeq ($(atleast_gcc48),y)
|
|
|
|
|
+ cflags-$(CONFIG_ARC_DW2_UNWIND) += -gdwarf-2
|
|
|
|
|
+--
|
|
|
|
|
+2.5.5
|
|
|
|
|
+
|