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