linux-stable/scripts/Makefile.vdsoinst
Jens Remus 0e035cb818 s390/vdso: Create .build-id links for unstripped vdso files
[ Upstream commit fc2f5f10f9 ]

Citing Andy Lutomirski from commit dda1e95cee ("x86/vdso: Create
.build-id links for unstripped vdso files"):

"With this change, doing 'make vdso_install' and telling gdb:

set debug-file-directory /lib/modules/KVER/vdso

will enable vdso debugging with symbols.  This is useful for
testing, but kernel RPM builds will probably want to manually delete
these symlinks or otherwise do something sensible when they strip
the vdso/*.so files."

Fixes: 4bff8cb545 ("s390: convert to GENERIC_VDSO")
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-06-12 11:12:33 +02:00

45 lines
1.2 KiB
Makefile

# SPDX-License-Identifier: GPL-2.0-only
# ==========================================================================
# Install unstripped copies of vDSO
# ==========================================================================
PHONY := __default
__default:
@:
include $(srctree)/scripts/Kbuild.include
install-dir := $(MODLIB)/vdso
define gen_install_rules
src := $$(firstword $$(subst :,$(space),$(1)))
dest := $(install-dir)/$$(or $$(word 2,$$(subst :,$(space),$(1))),$$(patsubst %.dbg,%,$$(notdir $(1))))
__default: $$(dest)
$$(dest): $$(src) FORCE
$$(call cmd,install)
# Some architectures create .build-id symlinks
ifneq ($(filter arm s390 sparc x86, $(SRCARCH)),)
link := $(install-dir)/.build-id/$$(shell $(READELF) -n $$(src) | sed -n 's@^.*Build ID: \(..\)\(.*\)@\1/\2@p').debug
__default: $$(link)
$$(link): $$(dest) FORCE
$$(call cmd,symlink)
endif
endef
$(foreach x, $(sort $(INSTALL_FILES)), $(eval $(call gen_install_rules,$(x))))
quiet_cmd_install = INSTALL $@
cmd_install = mkdir -p $(dir $@); cp $< $@
quiet_cmd_symlink = SYMLINK $@
cmd_symlink = mkdir -p $(dir $@); ln -sf --relative $< $@
PHONY += FORCE
FORCE:
.PHONY: $(PHONY)