[CRIU] [PATCH] pie/build/!piegen-y: do not produce relocatable parasite object
Dmitry Safonov
dsafonov at virtuozzo.com
Thu Apr 21 07:48:16 PDT 2016
On 04/21/2016 05:39 PM, Cyrill Gorcunov wrote:
> On Thu, Apr 21, 2016 at 05:34:41PM +0300, Dmitry Safonov wrote:
>> 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
>>
>> Also link against native.lib.a
>>
>> Reported-by: alex vk <avankemp at gmail.com>
>> Reported-by: long.wanglong <long.wanglong at huawei.com>
>> Signed-off-by: Dmitry Safonov <dsafonov at virtuozzo.com>
> Wait. I don;t get it. -r option stands to generate relocatable
> file, why it doesn't work? Some arm specifics?
I'm not really sure, but with it ld on rpi2 doesn't do relocs here:
> [root at rpi2-jd criu]# objdump -dS criu/pie/parasite.built-in.bin.o |
> head -n 15
> criu/pie/parasite.built-in.bin.o: file format elf32-littlearm
> Disassembly of section .crblob:
> 00000000 <__export_parasite_head_start>:
> 0: e24f2008 sub r2, pc, #8
> 4: e28f0018 add r0, pc, #24
> 8: e5900000 ldr r0, [r0]
> c: e28f100c add r1, pc, #12
> 10: e5911000 ldr r1, [r1]
> 14: e0811002 add r1, r1, r2
> 18: ebfffffe bl 138c <parasite_service>
> 1c: e7f001f0 .word 0xe7f001f0
And without it all goes ok.
--
Regards,
Dmitry Safonov
More information about the CRIU
mailing list