Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit af7e6a74 authored by Roland McGrath's avatar Roland McGrath Committed by Thomas Gleixner
Browse files

x86_64: install unstripped copies of compat vdso on disk



This keeps an unstripped copy of the vDSO images built before they are
stripped and embedded in the kernel.  The unstripped copies get installed
in $(MODLIB)/vdso/ by "make install" (or you can explicitly use the
subtarget "make vdso_install").  These files can be useful when they
contain source-level debugging information.

[ tglx: arch/x86 adaptation ]

Signed-off-by: default avatarRoland McGrath <roland@redhat.com>
Signed-off-by: default avatarAndi Kleen <ak@suse.de>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 8957ecab
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
@@ -18,18 +18,35 @@ $(obj)/syscall32_syscall.o: \
	$(foreach F,sysenter syscall,$(obj)/vsyscall-$F.so)

# Teach kbuild about targets
targets := $(foreach F,sysenter syscall,vsyscall-$F.o vsyscall-$F.so)
targets := $(foreach F,$(addprefix vsyscall-,sysenter syscall),\
		     $F.o $F.so $F.so.dbg)

# The DSO images are built using a special linker script
quiet_cmd_syscall = SYSCALL $@
      cmd_syscall = $(CC) -m32 -nostdlib -shared -s \
      cmd_syscall = $(CC) -m32 -nostdlib -shared \
			  $(call ld-option, -Wl$(comma)--hash-style=sysv) \
			   -Wl,-soname=linux-gate.so.1 -o $@ \
			   -Wl,-T,$(filter-out FORCE,$^)

$(obj)/vsyscall-sysenter.so $(obj)/vsyscall-syscall.so: \
$(obj)/vsyscall-%.so: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE
$(obj)/%.so: OBJCOPYFLAGS := -S
$(obj)/%.so: $(obj)/%.so.dbg FORCE
	$(call if_changed,objcopy)

$(obj)/vsyscall-sysenter.so.dbg $(obj)/vsyscall-syscall.so.dbg: \
$(obj)/vsyscall-%.so.dbg: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE
	$(call if_changed,syscall)

AFLAGS_vsyscall-sysenter.o = -m32 -Wa,-32
AFLAGS_vsyscall-syscall.o = -m32 -Wa,-32

vdsos := vdso32-sysenter.so vdso32-syscall.so

quiet_cmd_vdso_install = INSTALL $@
      cmd_vdso_install = cp $(@:vdso32-%.so=$(obj)/vsyscall-%.so.dbg) \
			    $(MODLIB)/vdso/$@

$(vdsos):
	@mkdir -p $(MODLIB)/vdso
	$(call cmd,vdso_install)

vdso_install: $(vdsos)
+6 −1
Original line number Diff line number Diff line
@@ -110,9 +110,14 @@ bzdisk: vmlinux
fdimage fdimage144 fdimage288 isoimage: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) $@

install:
install: vdso_install
	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) $@ 

vdso_install:
ifeq ($(CONFIG_IA32_EMULATION),y)
	$(Q)$(MAKE) $(build)=arch/x86/ia32 $@
endif

archclean:
	$(Q)rm -rf $(objtree)/arch/x86_64/boot
	$(Q)$(MAKE) $(clean)=$(boot)