[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