From 2c340b75d5545c45caf09f8d9f0bebf8048da96e Mon Sep 17 00:00:00 2001 From: Simon Gaiser Date: Tue, 13 Aug 2019 23:32:02 +0200 Subject: [PATCH] [Makefile] Check vdso.so only when it has been built --- LibOS/shim/src/Makefile | 24 +++++++++++------------- LibOS/shim/src/vdso/.gitignore | 3 ++- Makefile.rules | 2 +- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/LibOS/shim/src/Makefile b/LibOS/shim/src/Makefile index 3d76d31b..008ef2b7 100644 --- a/LibOS/shim/src/Makefile +++ b/LibOS/shim/src/Makefile @@ -127,28 +127,26 @@ LDFLAGS-vdso/vdso.so.dbg = -nostdlib -shared \ -z max-page-size=4096 -z common-page-size=4096 \ -T vdso/vdso.lds -soname linux-vdso.so.1 vdso/vdso.so.dbg: LDFLAGS = -vdso/vdso.so.dbg: vdso/vdso.lds vdso/vdso.o vdso/vdso-note.o | vdso-check-no-reloc +vdso/vdso.so.dbg: vdso/vdso.lds vdso/vdso.o vdso/vdso-note.o | vdso/.vdso-no-reloc-checked $(call cmd,ld) -# -# vdso.so is required to have no relocations. -# this rule checks it. -# -vdso-check-no-reloc: vdso/.vdso.so +# vdso.so is required to have no relocations. This rule checks it. +# Use default linker script to retain relocations if exist. +LDFLAGS-vdso/.vdso-linked-for-reloc-check.so = -nostdlib -shared -Bsymbolic +vdso/.vdso-linked-for-reloc-check.so: LDFLAGS = +vdso/.vdso-linked-for-reloc-check.so: vdso/vdso.o + $(call cmd,ld) + +vdso/.vdso-no-reloc-checked: vdso/.vdso-linked-for-reloc-check.so $(call cmd,check_no_reloc) - -# use default linker script to retain relocations if exist. -LDFLAGS-vdso/.vdso.so = -nostdlib -shared -Bsymbolic -vdso/.vdso.so: LDFLAGS = -vdso/.vdso.so: vdso/vdso.o - $(call cmd,ld) + $Q touch $@ OBJCOPYFLAGS-vdso/vdso.so = -S vdso/vdso.so: vdso/vdso.so.dbg $(call cmd,objcopy) vdso/vdso-data.o: vdso/vdso.so -CLEAN_FILES += vdso/vdso.so.dbg vdso/vdso.so vdso/.vdso.so +CLEAN_FILES += vdso/vdso.so.dbg vdso/vdso.so vdso/.vdso-linked-for-reloc-check.so vdso/.vdso-no-reloc-checked clean: rm -rf $(addsuffix .o,$(all_objs)) $(addsuffix .d,$(all_objs)) \ diff --git a/LibOS/shim/src/vdso/.gitignore b/LibOS/shim/src/vdso/.gitignore index 2176882f..c77bc7b6 100644 --- a/LibOS/shim/src/vdso/.gitignore +++ b/LibOS/shim/src/vdso/.gitignore @@ -1,3 +1,4 @@ -/.vdso.so +/.vdso-linked-for-reloc-check.so +/.vdso-no-reloc-checked /vdso-data.c /vdso.so.dbg diff --git a/Makefile.rules b/Makefile.rules index 498d49ef..53ad59a0 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -112,5 +112,5 @@ quiet_cmd_objcopy = [ $@ ] # check_no_reloc # This depends on the output of readelf command. -quiet_cmd_check_no_reloc = [ $@ ] +quiet_cmd_check_no_reloc = [ check_no_reloc $^ ] cmd_check_no_reloc = LC_ALL=C readelf -r $^ | grep -q 'There are no relocations in this file.'