x86/vdso: Define BUILD_VDSO while building and emit .eh_frame in asm
authorAndy Lutomirski <luto@kernel.org>
Tue, 6 Oct 2015 00:47:58 +0000 (17:47 -0700)
committerIngo Molnar <mingo@kernel.org>
Fri, 9 Oct 2015 07:41:05 +0000 (09:41 +0200)
For the vDSO, user code wants runtime unwind info.  Make sure
that, if we use .cfi directives, we generate it.

Signed-off-by: Andy Lutomirski <luto@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Link: http://lkml.kernel.org/r/16e29ad8855e6508197000d8c41f56adb00d7580.1444091584.git.luto@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/entry/vdso/Makefile
arch/x86/include/asm/dwarf2.h

index 3bfb39e7b8b20e83a78e15924a00265782c8b6e7..265c0ed6811800e3b03550cfded0c0cc743794f0 100644 (file)
@@ -67,7 +67,7 @@ $(obj)/vdso-image-%.c: $(obj)/vdso%.so.dbg $(obj)/vdso%.so $(obj)/vdso2c FORCE
 CFL := $(PROFILING) -mcmodel=small -fPIC -O2 -fasynchronous-unwind-tables -m64 \
        $(filter -g%,$(KBUILD_CFLAGS)) $(call cc-option, -fno-stack-protector) \
        -fno-omit-frame-pointer -foptimize-sibling-calls \
-       -DDISABLE_BRANCH_PROFILING
+       -DDISABLE_BRANCH_PROFILING -DBUILD_VDSO
 
 $(vobjs): KBUILD_CFLAGS += $(CFL)
 
@@ -131,7 +131,7 @@ targets += vdso32/vdso32.lds
 targets += vdso32/note.o vdso32/vclock_gettime.o vdso32/system_call.o
 targets += vdso32/vclock_gettime.o
 
-KBUILD_AFLAGS_32 := $(filter-out -m64,$(KBUILD_AFLAGS))
+KBUILD_AFLAGS_32 := $(filter-out -m64,$(KBUILD_AFLAGS)) -DBUILD_VDSO
 $(obj)/vdso32.so.dbg: KBUILD_AFLAGS = $(KBUILD_AFLAGS_32)
 $(obj)/vdso32.so.dbg: asflags-$(CONFIG_X86_64) += -m32
 
index de1cdaf4d74346040667da81e767a5a32697c7c6..09133ba032b3dfa4ceed0275351b6a2d76c8a411 100644 (file)
 #endif
 
 #if defined(CONFIG_AS_CFI_SECTIONS) && defined(__ASSEMBLY__)
+#ifndef BUILD_VDSO
        /*
         * 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.
+        * useful to anyone.  Note we should not use this directive if
+        * vmlinux.lds.S gets changed so it doesn't discard .eh_frame.
         */
        .cfi_sections .debug_frame
+#else
+        /*
+         * For the vDSO, emit both runtime unwind information and debug
+         * symbols for the .dbg file.
+         */
+       .cfi_sections .eh_frame, .debug_frame
+#endif
 #endif
 
 #else