Browse Source

[Makefile] Check vdso.so only when it has been built

Simon Gaiser 4 years ago
parent
commit
2c340b75d5
3 changed files with 14 additions and 15 deletions
  1. 11 13
      LibOS/shim/src/Makefile
  2. 2 1
      LibOS/shim/src/vdso/.gitignore
  3. 1 1
      Makefile.rules

+ 11 - 13
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
-	$(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
+# 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)
+	$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)) \

+ 2 - 1
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

+ 1 - 1
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.'