aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/vdso
diff options
context:
space:
mode:
authorAndy Lutomirski <luto@amacapital.net>2014-06-20 15:20:44 -0400
committerH. Peter Anvin <hpa@linux.intel.com>2014-06-20 16:18:49 -0400
commitdda1e95cee38b416b23f751cac65421d781e3c10 (patch)
tree650ca543485cfdcfcb6331982c281c255887456e /arch/x86/vdso
parent0e3727a8839c988a3c56170bc8da76d55a16acad (diff)
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. If ld does not support --build-id, then the symlinks will not be created. Note that kernel packagers that use vdso_install may need to adjust their packaging scripts to accomdate this change. For example, Fedora's scripts create build-id symlinks themselves in a different location, so the spec should probably be updated to remove the symlinks created by make vdso_install. Signed-off-by: Andy Lutomirski <luto@amacapital.net> Link: http://lkml.kernel.org/r/a424b189ce3ced85fe1e82d032a20e765e0fe0d3.1403291930.git.luto@amacapital.net Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/vdso')
-rw-r--r--arch/x86/vdso/Makefile16
1 files changed, 13 insertions, 3 deletions
diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile
index 2c1ca98eb612..68a15c4dd6e4 100644
--- a/arch/x86/vdso/Makefile
+++ b/arch/x86/vdso/Makefile
@@ -169,14 +169,24 @@ quiet_cmd_vdso = VDSO $@
169 sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@' 169 sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@'
170 170
171VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) \ 171VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) \
172 -Wl,-Bsymbolic $(LTO_CFLAGS) 172 $(call cc-ldoption, -Wl$(comma)--build-id) -Wl,-Bsymbolic $(LTO_CFLAGS)
173GCOV_PROFILE := n 173GCOV_PROFILE := n
174 174
175# 175#
176# Install the unstripped copies of vdso*.so. 176# Install the unstripped copies of vdso*.so. If our toolchain supports
177# build-id, install .build-id links as well.
177# 178#
178quiet_cmd_vdso_install = INSTALL $(@:install_%=%) 179quiet_cmd_vdso_install = INSTALL $(@:install_%=%)
179 cmd_vdso_install = cp $< $(MODLIB)/vdso/$(@:install_%=%) 180define cmd_vdso_install
181 cp $< "$(MODLIB)/vdso/$(@:install_%=%)"; \
182 if readelf -n $< |grep -q 'Build ID'; then \
183 buildid=`readelf -n $< |grep 'Build ID' |sed -e 's/^.*Build ID: \(.*\)$$/\1/'`; \
184 first=`echo $$buildid | cut -b-2`; \
185 last=`echo $$buildid | cut -b3-`; \
186 mkdir -p "$(MODLIB)/vdso/.build-id/$$first"; \
187 ln -sf "../../$(@:install_%=%)" "$(MODLIB)/vdso/.build-id/$$first/$$last.debug"; \
188 fi
189endef
180 190
181vdso_img_insttargets := $(vdso_img_sodbg:%.dbg=install_%) 191vdso_img_insttargets := $(vdso_img_sodbg:%.dbg=install_%)
182 192