x86/vdso: Define BUILD_VDSO while building and emit .eh_frame in asm
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>
This commit is contained in:
committed by
Ingo Molnar
parent
7b956f035a
commit
f24f910884
@@ -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 \
|
CFL := $(PROFILING) -mcmodel=small -fPIC -O2 -fasynchronous-unwind-tables -m64 \
|
||||||
$(filter -g%,$(KBUILD_CFLAGS)) $(call cc-option, -fno-stack-protector) \
|
$(filter -g%,$(KBUILD_CFLAGS)) $(call cc-option, -fno-stack-protector) \
|
||||||
-fno-omit-frame-pointer -foptimize-sibling-calls \
|
-fno-omit-frame-pointer -foptimize-sibling-calls \
|
||||||
-DDISABLE_BRANCH_PROFILING
|
-DDISABLE_BRANCH_PROFILING -DBUILD_VDSO
|
||||||
|
|
||||||
$(vobjs): KBUILD_CFLAGS += $(CFL)
|
$(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/note.o vdso32/vclock_gettime.o vdso32/system_call.o
|
||||||
targets += vdso32/vclock_gettime.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: KBUILD_AFLAGS = $(KBUILD_AFLAGS_32)
|
||||||
$(obj)/vdso32.so.dbg: asflags-$(CONFIG_X86_64) += -m32
|
$(obj)/vdso32.so.dbg: asflags-$(CONFIG_X86_64) += -m32
|
||||||
|
|
||||||
|
|||||||
@@ -36,15 +36,22 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_AS_CFI_SECTIONS) && defined(__ASSEMBLY__)
|
#if defined(CONFIG_AS_CFI_SECTIONS) && defined(__ASSEMBLY__)
|
||||||
|
#ifndef BUILD_VDSO
|
||||||
/*
|
/*
|
||||||
* Emit CFI data in .debug_frame sections, not .eh_frame sections.
|
* Emit CFI data in .debug_frame sections, not .eh_frame sections.
|
||||||
* The latter we currently just discard since we don't do DWARF
|
* The latter we currently just discard since we don't do DWARF
|
||||||
* unwinding at runtime. So only the offline DWARF information is
|
* unwinding at runtime. So only the offline DWARF information is
|
||||||
* useful to anyone. Note we should not use this directive if this
|
* useful to anyone. Note we should not use this directive if
|
||||||
* file is used in the vDSO assembly, or if vmlinux.lds.S gets
|
* vmlinux.lds.S gets changed so it doesn't discard .eh_frame.
|
||||||
* changed so it doesn't discard .eh_frame.
|
|
||||||
*/
|
*/
|
||||||
.cfi_sections .debug_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
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|||||||
Reference in New Issue
Block a user