summaryrefslogtreecommitdiffstats
path: root/freed-ora/current/f13/linux-2.6-x86-cfi_sections.patch
diff options
context:
space:
mode:
Diffstat (limited to 'freed-ora/current/f13/linux-2.6-x86-cfi_sections.patch')
-rw-r--r--freed-ora/current/f13/linux-2.6-x86-cfi_sections.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/freed-ora/current/f13/linux-2.6-x86-cfi_sections.patch b/freed-ora/current/f13/linux-2.6-x86-cfi_sections.patch
new file mode 100644
index 000000000..646d4fea6
--- /dev/null
+++ b/freed-ora/current/f13/linux-2.6-x86-cfi_sections.patch
@@ -0,0 +1,60 @@
+From 9e565292270a2d55524be38835104c564ac8f795 Mon Sep 17 00:00:00 2001
+From: Roland McGrath <roland@redhat.com>
+Date: Thu, 13 May 2010 21:43:03 -0700
+Subject: [PATCH] x86: Use .cfi_sections for assembly code
+
+The newer assemblers support the .cfi_sections directive so we can put
+the CFI from .S files into the .debug_frame section that is preserved
+in unstripped vmlinux and in separate debuginfo, rather than the
+.eh_frame section that is now discarded by vmlinux.lds.S.
+
+Signed-off-by: Roland McGrath <roland@redhat.com>
+LKML-Reference: <20100514044303.A6FE7400BE@magilla.sf.frob.com>
+Signed-off-by: H. Peter Anvin <hpa@zytor.com>
+---
+ arch/x86/Makefile | 5 +++--
+ arch/x86/include/asm/dwarf2.h | 12 ++++++++++++
+ 2 files changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/Makefile b/arch/x86/Makefile
+index 0a43dc5..8aa1b59 100644
+--- a/arch/x86/Makefile
++++ b/arch/x86/Makefile
+@@ -95,8 +95,9 @@ sp-$(CONFIG_X86_64) := rsp
+ cfi := $(call as-instr,.cfi_startproc\n.cfi_rel_offset $(sp-y)$(comma)0\n.cfi_endproc,-DCONFIG_AS_CFI=1)
+ # is .cfi_signal_frame supported too?
+ cfi-sigframe := $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1)
+-KBUILD_AFLAGS += $(cfi) $(cfi-sigframe)
+-KBUILD_CFLAGS += $(cfi) $(cfi-sigframe)
++cfi-sections := $(call as-instr,.cfi_sections .debug_frame,-DCONFIG_AS_CFI_SECTIONS=1)
++KBUILD_AFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections)
++KBUILD_CFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections)
+
+ LDFLAGS := -m elf_$(UTS_MACHINE)
+
+diff --git a/arch/x86/include/asm/dwarf2.h b/arch/x86/include/asm/dwarf2.h
+index ae6253a..733f7e9 100644
+--- a/arch/x86/include/asm/dwarf2.h
++++ b/arch/x86/include/asm/dwarf2.h
+@@ -34,6 +34,18 @@
+ #define CFI_SIGNAL_FRAME
+ #endif
+
++#if defined(CONFIG_AS_CFI_SECTIONS) && defined(__ASSEMBLY__)
++ /*
++ * Emit CFI data in .debug_frame sections, not .eh_frame sections.
++ * The latter we currently just discard since we don't do DWARF
++ * unwinding at runtime. So only the offline DWARF information is
++ * useful to anyone. Note we should not use this directive if this
++ * file is used in the vDSO assembly, or if vmlinux.lds.S gets
++ * changed so it doesn't discard .eh_frame.
++ */
++ .cfi_sections .debug_frame
++#endif
++
+ #else
+
+ /*
+--
+1.7.0.1
+
OpenPOWER on IntegriCloud