diff mbox

[COMMITTED] Fix array bounds warnings in elf_get_dyanmic_info() on sparc with gcc-4.6

Message ID 20141219.164347.263036710636056318.davem@davemloft.net
State New
Headers show

Commit Message

David Miller Dec. 19, 2014, 9:43 p.m. UTC
Thanks to Carlos for showing me how to handle this kind of issue
properly.

	* get-dynamic-info.h (elf_get_dynamic_info): Ignore -Warray-bounds for a
	link_map->l_info array access.
---
 ChangeLog              |  5 +++++
 elf/get-dynamic-info.h | 11 ++++++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/ChangeLog b/ChangeLog
index e15a3cf..f983898 100644
--- 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>
 
 	* math/atest-exp.c (TIMEOUT): Increase timeout to 10 sec.
diff --git a/elf/get-dynamic-info.h b/elf/get-dynamic-info.h
index 20ccf30..3f12e2e 100644
--- a/elf/get-dynamic-info.h
+++ b/elf/get-dynamic-info.h
@@ -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)