[CRIU] Re: [PATCH 04/13] make: Generate offsets from linked files only

Pavel Emelyanov xemul at parallels.com
Wed Apr 18 06:42:24 EDT 2012


On 04/18/2012 01:34 PM, Cyrill Gorcunov wrote:
> On Wed, Apr 18, 2012 at 12:18:34PM +0400, Pavel Emelyanov wrote:
>> On 04/18/2012 01:55 AM, Cyrill Gorcunov wrote:
>>> Instead of generating offsets from early compiled
>>> object files (one day the offsets obtained from
>>> there might be changed during linkage stage) better
>>> to get them from a final stage where all object
>>> files involved are linked into complete binary blob.
>>>
>>> That happened that at early stage we indeed were using
>>> only single file per parasite and restorer but at present
>>> there a couple of file involved (and will be more in
>>> future) so we need a safe approach.
>>>
>>> Also note the symbols being exported are prefixed as
>>> "__export_". This is easier approach for now. Putting
>>> such symbols into separate section requires a way
>>> more efforts to handle.
>>>
>>> Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
>>> ---
>>>  Makefile           |    6 ++++--
>>>  cr-restore.c       |    4 ++--
>>>  gen-offsets.sh     |    4 ++--
>>>  include/parasite.h |    6 +++---
>>>  include/restorer.h |    4 ++--
>>>  parasite.c         |   16 ++++++++--------
>>>  pie.lds.S          |    3 ---
>>>  restorer.c         |    4 ++--
>>>  8 files changed, 23 insertions(+), 24 deletions(-)
>>>
>>> diff --git a/Makefile b/Makefile
>>> index aa2f801..0a6df29 100644
>>> --- a/Makefile
>>> +++ b/Makefile
>>> @@ -89,7 +89,8 @@ parasite-util-net.o: util-net.c
>>>  
>>>  $(HEAD-BIN): $(PIE-LDS) $(OBJS-BLOB) parasite-util-net.o
>>>  	$(E) "  GEN     " $@
>>> -	$(Q) $(LD) -T $(PIE-LDS) $(OBJS-BLOB) parasite-util-net.o -o $@
>>> +	$(Q) $(LD) --oformat=binary -T $(PIE-LDS) $(OBJS-BLOB) parasite-util-net.o -o $@
>>> +	$(Q) $(LD) --oformat=elf64-x86-64 -T $(PIE-LDS) $(OBJS-BLOB) parasite-util-net.o -o $@.o
>>
>> Why do we need the .bin file then? AFAIS the .bin.o is only used next, what do I miss?
> 
> .bin.o will also have Elf headers, thus to find offsets of functions in object
> file we will need to parse Elf headers itself (since `nm "symbol" x.o' will
> show us virtual address but not real offset in object file).

Брр... Давай два списка: 1. зачем нужен xxx.bin файл    2. зачем нужен xxx.bin.o файл

> 	Cyrill
> .
> 




More information about the CRIU mailing list