diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 381a5e27c66..686c29e8023 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,10 @@ +2014-03-10 Uros Bizjak + + PR libgcc/60472 + * crtstuff.c (frame_dummy): Use void **jcr_list temporary + variable to avoid array subscript is above array bounds warnings. + Use __builtin_expect when checking *jcr_list for NULL. + 2014-03-06 Rainer Orth PR libgcc/59339 @@ -420,7 +427,7 @@ 2013-12-26 Ganesh Gopalasubramanian - * config/i386/cpuinfo.c (processor_types): Rename AMD cpu names + * config/i386/cpuinfo.c (processor_types): Rename AMD cpu names AMD_BOBCAT to AMD_BTVER1 and AMD_JAGUAR to AMD_BTVER2. (get_amd_cpu): Likewise. diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c index bc0398d9a56..12bed4b351d 100644 --- a/libgcc/crtstuff.c +++ b/libgcc/crtstuff.c @@ -460,12 +460,14 @@ frame_dummy (void) #endif /* USE_EH_FRAME_REGISTRY */ #ifdef JCR_SECTION_NAME - if (__JCR_LIST__[0]) + void **jcr_list; + __asm ("" : "=g" (jcr_list) : "0" (__JCR_LIST__)); + if (__builtin_expect (*jcr_list != NULL, 0)) { void (*register_classes) (void *) = _Jv_RegisterClasses; __asm ("" : "+r" (register_classes)); if (register_classes) - register_classes (__JCR_LIST__); + register_classes (jcr_list); } #endif /* JCR_SECTION_NAME */ @@ -565,12 +567,14 @@ __do_global_ctors_1(void) #endif #ifdef JCR_SECTION_NAME - if (__JCR_LIST__[0]) + void **jcr_list + __asm ("" : "=g" (jcr_list) : "0" (__JCR_LIST__)); + if (__builtin_expect (*jcr_list != NULL, 0)) { void (*register_classes) (void *) = _Jv_RegisterClasses; __asm ("" : "+r" (register_classes)); if (register_classes) - register_classes (__JCR_LIST__); + register_classes (jcr_list); } #endif