[CRIU] Re: [PATCH 4/6] parasite: Bind parasite data to own data section

Pavel Emelyanov xemul at parallels.com
Tue Feb 14 09:19:09 EST 2012


On 02/14/2012 05:41 PM, Cyrill Gorcunov wrote:
> To eliminate binding to .bss section (we don't have own
> section loader, so that data variables must not be shrinked).

What problem do we solve here? I thought Andrey did it so that
the parasite is a single .o file compiled out of several other .o
ones and that's it.

> Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
> ---
>  include/parasite.h |    1 +
>  parasite.c         |   23 +++++++++++++----------
>  2 files changed, 14 insertions(+), 10 deletions(-)
> 
> diff --git a/include/parasite.h b/include/parasite.h
> index 96b78c1..befcafd 100644
> --- a/include/parasite.h
> +++ b/include/parasite.h
> @@ -10,6 +10,7 @@
>  #include "image.h"
>  
>  #define __parasite_head		__used __section(.parasite.head.text)
> +#define __parasite_data		__section(.parasite.data)
>  
>  #define PARASITE_STACK_SIZE	2048
>  #define PARASITE_ARG_SIZE	8196
> diff --git a/parasite.c b/parasite.c
> index a77a94f..edda844 100644
> --- a/parasite.c
> +++ b/parasite.c
> @@ -21,12 +21,17 @@
>  
>  #ifdef CONFIG_X86_64
>  
> -static void *brk_start, *brk_end, *brk_tail;
> +static void __parasite_data *brk_start;
> +static void __parasite_data *brk_end;
> +static void __parasite_data *brk_tail;
>  
> -static struct page_entry page;
> -static struct vma_entry vma;
> -static int logfd = -1;
> -static int tsock = -1;
> +static struct page_entry __parasite_data page;
> +static struct vma_entry __parasite_data vma;
> +static int __parasite_data logfd = -1;
> +static int __parasite_data tsock = -1;
> +
> +static unsigned char __parasite_data hex[] = "0123456789abcdef";
> +static unsigned char __parasite_data hexbuf[32];
>  
>  static void brk_init(void *brk)
>  {
> @@ -58,11 +63,9 @@ static unsigned long builtin_strlen(char *str)
>  	return len;
>  }
>  
> -static const unsigned char hex[] = "0123456789abcdef";
> -static char *long2hex(unsigned long v)
> +static unsigned char *long2hex(unsigned long v)
>  {
> -	static char buf[32];
> -	char *p = buf;
> +	unsigned char *p = hexbuf;
>  	int i;
>  
>  	for (i = sizeof(long) - 1; i >= 0; i--) {
> @@ -71,7 +74,7 @@ static char *long2hex(unsigned long v)
>  	}
>  	*p = 0;
>  
> -	return buf;
> +	return hexbuf;
>  }
>  
>  static void sys_write_msg(const char *msg)



More information about the CRIU mailing list