[CRIU] [PATCH] make: fix "make criu" after arch-specific vdso broke it

Cyrill Gorcunov gorcunov at gmail.com
Wed Jun 25 14:46:54 PDT 2014


On Wed, Jun 25, 2014 at 02:05:17PM -0700, Filipe Brandenburger wrote:
> Building criu with "make criu" on a clean tree was not working, failing on:
> 
>   make[1]: *** No rule to make target `arch/x86/vdso-pie.o'.  Stop.
>   make: *** [arch/x86/vdso-pie.o] Error 2
> 
> git bisect traced the regression to commit c473461d24fd (vdso: Make it arch
> specific) which apparently dropped the rule to build $(ARCH_DIR)/vdso-pie.o
> using the pie rule.  Restore the dependency for "make criu" to work again from
> a clean tree.
> 
> Tested:
> $ git clean -fdx
> $ make criu
> 
> Fixes: c473461d24fdfcd25542b427829a37fd2f0facb5
> 
> Signed-off-by: Filipe Brandenburger <filbranden at google.com>
> ---

It's rather a strange fix. $(ARCH_DIR)/vdso-pie.o comes to
both -- pie code and a regular PROGRAM-BUILTINS, which in
run means we rather lack a rule

ifeq ($(VDSO),y)
pie: $(ARCH_DIR)/vdso-pie.o
endif

don't we? I suspect you were running make with -j because
on plain make it doesn't trigger even after git clean -fdx

>  Makefile | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/Makefile b/Makefile
> index f1c87841821a..a42261470d32 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -172,8 +172,11 @@ lib: $(VERSION_HEADER) config built-in.o
>  	$(Q) $(MAKE) $(build)=lib all
>  
>  ifeq ($(VDSO),y)
> +$(ARCH_DIR)/vdso-pie.o: pie
> +	$(Q) $(MAKE) $(build)=pie $(ARCH_DIR)/vdso-pie.o
>  PROGRAM-BUILTINS	+= $(ARCH_DIR)/vdso-pie.o
>  endif
> +
>  PROGRAM-BUILTINS	+= pie/util-fd.o
>  PROGRAM-BUILTINS	+= pie/util.o
>  PROGRAM-BUILTINS	+= protobuf/built-in.o
> -- 
> 1.9.3
> 

	Cyrill


More information about the CRIU mailing list