From d9486bd720f6ad9bfe75824c478adb878a0e7404 Mon Sep 17 00:00:00 2001 From: Dmitry Safonov Date: Tue, 17 Jan 2017 19:48:37 +0300 Subject: [PATCH] arm/pie/build: do not produce relocatable parasite object With `-r` option relocation to parasite_service was not made on ARM: 0x76dbc018: bl 0x76dbc018 0xebfffffe (You may saw it with objdump also). This leaded to hang at "Putting tsock" message: (01.368297) ---------------------------------------- (01.368321) (01.368339) Collecting fds (pid: 13503) (01.368360) ---------------------------------------- (01.368535) Found 3 file descriptors (01.368564) ---------------------------------------- (01.368648) Dump private signals of 13503 (01.368708) Dump shared signals of 13503 (01.368761) Parasite syscall_ip at 0x10000 (01.369605) Set up parasite blob using memfd (01.369641) Putting parasite blob into 0x76cc5000->0x76e1f000 (01.369755) Dumping GP/FPU registers for 13503 (01.369818) Putting tsock into pid 13503 Link against lib.a which also fixes build for aarm64. Reported-by: alex vk Reported-by: long.wanglong Cc: Cyrill Gorcunov Cc: Christopher Covington Signed-off-by: Dmitry Safonov Reviewed-by: Christopher Covington Reviewed-by: Cyrill Gorcunov Signed-off-by: Pavel Emelyanov Backported-from-criu-dev-by: Dmitry Safonov --- criu/pie/Makefile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/criu/pie/Makefile b/criu/pie/Makefile index 859680aa3..655cae1bc 100644 --- a/criu/pie/Makefile +++ b/criu/pie/Makefile @@ -85,9 +85,14 @@ $(obj)/$(PIELDS): $(obj)/$(PIELDS).in $(Q) $(SH) -c "echo 'OUTPUT_ARCH($(LDARCH))' > $(obj)/$(PIELDS)" $(Q) $(SH) -c "cat $(obj)/$(PIELDS).in >> $(obj)/$(PIELDS)" -$(obj)/%.built-in.bin.o: $(obj)/%.built-in.o $(obj)/$(PIELDS) +# ld on arm doesn't like -pie and -r options together +ifeq ($(filter arm aarch64,$(ARCH)),) + LD_R := -r +endif + +$(obj)/%.built-in.bin.o: $(obj)/%.built-in.o $(obj)/$(PIELDS) $(obj)/lib.a $(call msg-gen, $@) - $(Q) $(LD) -r -T $(obj)/$(PIELDS) -o $@ $< + $(Q) $(LD) $(LD_R) -T $(obj)/$(PIELDS) -o $@ $< $(obj)/lib.a $(obj)/%.built-in.bin: $(obj)/%.built-in.bin.o $(call msg-gen, $@)