]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix array bounds warnings in elf_get_dyanmic_info() on sparc with gcc-4.6
authorDavid S. Miller <davem@davemloft.net>
Fri, 19 Dec 2014 21:23:40 +0000 (13:23 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Dec 2014 21:45:28 +0000 (13:45 -0800)
* get-dynamic-info.h (elf_get_dynamic_info): Ignore -Warray-bounds for a
link_map->l_info array access.

ChangeLog
elf/get-dynamic-info.h

index 6bd8a385e171f8f81af184fe9d55212a768de3d1..a5f2888f03f3ea9b9dbcf6229dbdd6d05011ec5c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-19  David S. Miller  <davem@davemloft.net>
+
+       * get-dynamic-info.h (elf_get_dynamic_info): Ignore -Warray-bounds for a
+       link_map->l_info array access.
+
 2014-12-19  Chris Metcalf  <cmetcalf@ezchip.com>
 
        * iconvdata/tst-loading.c (TIMEOUT): Increase timeout 10 sec.
index 20ccf30b2ac0046f2c6a4b47046f6fac0cf300cb..3f12e2efa9494f6e8b2e39523beffff79302a1fe 100644 (file)
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <assert.h>
+#include <libc-internal.h>
 
 #ifndef RESOLVE_MAP
 static
@@ -47,7 +48,15 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
        info[dyn->d_tag] = dyn;
       else if (dyn->d_tag >= DT_LOPROC &&
               dyn->d_tag < DT_LOPROC + DT_THISPROCNUM)
-       info[dyn->d_tag - DT_LOPROC + DT_NUM] = dyn;
+       {
+         /* This does not violate the array bounds of l->l_info, but
+            gcc 4.6 on sparc somehow does not see this.  */
+         DIAG_PUSH_NEEDS_COMMENT;
+         DIAG_IGNORE_NEEDS_COMMENT (4.6,
+                                    "-Warray-bounds");
+         info[dyn->d_tag - DT_LOPROC + DT_NUM] = dyn;
+         DIAG_POP_NEEDS_COMMENT;
+       }
       else if ((d_tag_utype) DT_VERSIONTAGIDX (dyn->d_tag) < DT_VERSIONTAGNUM)
        info[VERSYMIDX (dyn->d_tag)] = dyn;
       else if ((d_tag_utype) DT_EXTRATAGIDX (dyn->d_tag) < DT_EXTRANUM)