61 lines
2.2 KiB
Diff
61 lines
2.2 KiB
Diff
|
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
|
||
|
|