On Mon, Dec 15, 2014 at 06:25:04PM +0100, Uros Bizjak wrote:
> Hello!
> 
> Attached patch fixes PR 68323, where code tries to access what
> compiler think is out of bounds element.
> 
> 2014-12-15  Uros Bizjak  <ubiz...@gmail.com>
> 
>     PR libgcc/63832
>     * crtstuff.c (__do_global_dtors_aux) [HIDDEN_DTOR_LIST_END]: Use
>     func_ptr *dtor_list temporary variable to avoid "array subscript
>     is above array bounds" warnings.
> 
> Bootstrapped and regression tested on x86_64-linux-gnu {,m32} CentOS 5.11.
> 
> OK for mainline?

Ok, thanks.

> Index: crtstuff.c
> ===================================================================
> --- crtstuff.c        (revision 218733)
> +++ crtstuff.c        (working copy)
> @@ -393,13 +393,11 @@ __do_global_dtors_aux (void)
>      extern func_ptr __DTOR_END__[] __attribute__((visibility ("hidden")));
>      static size_t dtor_idx;
>      const size_t max_idx = __DTOR_END__ - __DTOR_LIST__ - 1;
> -    func_ptr f;
> +    func_ptr *dtor_list;
>  
> +    __asm ("" : "=g" (dtor_list) : "0" (__DTOR_LIST__));
>      while (dtor_idx < max_idx)
> -      {
> -     f = __DTOR_LIST__[++dtor_idx];
> -     f ();
> -      }
> +      dtor_list[++dtor_idx] ();
>    }
>  #else /* !defined (FINI_ARRAY_SECTION_ASM_OP) */
>    {


        Jakub

Reply via email to