[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] coverage: fix on ARM



On Fri, 2013-02-22 at 10:57 +0000, Ian Campbell wrote:
> Use a list of pointers to simplify the handling of 32- vs 64-bit.
> 
> Also on ARM the section name is ".init_array" and not ".ctors".

Any comments/ack/nacks?

> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> Cc: Frediano Ziglio <frediano.ziglio@xxxxxxxxxx>
> Cc: keir@xxxxxxx
> ---
> This applies independently of my 64-bit ARM series.
> ---
>  xen/arch/arm/xen.lds.S |   10 ++++------
>  xen/arch/x86/xen.lds.S |    6 ++----
>  xen/common/lib.c       |   13 +++++--------
>  3 files changed, 11 insertions(+), 18 deletions(-)
> 
> diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
> index 9043994..fd755d7 100644
> --- a/xen/arch/arm/xen.lds.S
> +++ b/xen/arch/arm/xen.lds.S
> @@ -91,12 +91,10 @@ SECTIONS
>         *(.init.data.rel)
>         *(.init.data.rel.*)
>  
> -       . = ALIGN(4);
> -       __CTOR_LIST__ = .;
> -       LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
> -       *(.ctors)
> -       LONG(0)
> -       __CTOR_END__ = .;
> +       . = ALIGN(8);
> +       __ctors_start = .;
> +       *(.init_array)
> +       __ctors_end = .;
>    } :text
>    . = ALIGN(32);
>    .init.setup : {
> diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
> index 5570389..d959941 100644
> --- a/xen/arch/x86/xen.lds.S
> +++ b/xen/arch/x86/xen.lds.S
> @@ -110,11 +110,9 @@ SECTIONS
>         __trampoline_seg_stop = .;
>  
>         . = ALIGN(8);
> -       __CTOR_LIST__ = .;
> -       QUAD((__CTOR_END__ - __CTOR_LIST__) / 8 - 2)
> +       __ctors_start = .;
>         *(.ctors)
> -       QUAD(0)
> -       __CTOR_END__ = .;
> +       __ctors_end = .;
>    } :text
>    . = ALIGN(32);
>    .init.setup : {
> diff --git a/xen/common/lib.c b/xen/common/lib.c
> index e0c65cf..6b80601 100644
> --- a/xen/common/lib.c
> +++ b/xen/common/lib.c
> @@ -479,17 +479,14 @@ unsigned long long parse_size_and_unit(const char *s, 
> const char **ps)
>      return ret;
>  }
>  
> -extern const struct
> -{
> -    unsigned long count;
> -    void (*funcs[1])(void);
> -} __CTOR_LIST__;
> +typedef void (*ctor_func_t)(void);
> +extern const ctor_func_t __ctors_start[], __ctors_end[];
>  
>  void __init init_constructors(void)
>  {
> -    unsigned long n;
> -    for ( n = 0; n < __CTOR_LIST__.count; ++n )
> -        __CTOR_LIST__.funcs[n]();
> +    const ctor_func_t *f;
> +    for (f = __ctors_start; f < __ctors_end; ++f )
> +        (*f)();
>  }
>  
>  /*



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.