[COMMITTED] backends: ppc use define instead of const for size of dwarf_regs array.

Mark Wielaard mark@klomp.org
Sat Oct 20 11:24:00 GMT 2018


The size of the dwarf_regs is a constant, but when building without
optimizations the compiler doesn't see that and will warn that it
cannot proof the stack size is bounded. Use a define instead of a
const, so the compiler will use a constant expression everywhere.

Signed-off-by: Mark Wielaard <mark@klomp.org>
---
 backends/ChangeLog     | 5 +++++
 backends/ppc_initreg.c | 8 ++++----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/backends/ChangeLog b/backends/ChangeLog
index a7434dd..768c270 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,8 @@
+2018-10-20  Mark Wielaard  <mark@klomp.org>
+
+	* ppc_initreg.c (ppc_set_initial_registers_tid): Use define instead of
+	const for size of dwarf_regs array.
+
 2018-10-02  Andreas Schwab  <schwab@suse.de>
 
 	* riscv_symbol.c (riscv_reloc_simple_type): Add parameter addsub.
diff --git a/backends/ppc_initreg.c b/backends/ppc_initreg.c
index 3e4432f..0e0d359 100644
--- a/backends/ppc_initreg.c
+++ b/backends/ppc_initreg.c
@@ -93,11 +93,11 @@ ppc_set_initial_registers_tid (pid_t tid __attribute__ ((unused)),
       if (errno != 0)
 	return false;
     }
-  const size_t gprs = sizeof (user_regs.r.gpr) / sizeof (*user_regs.r.gpr);
-  Dwarf_Word dwarf_regs[gprs];
-  for (unsigned gpr = 0; gpr < gprs; gpr++)
+#define GPRS (sizeof (user_regs.r.gpr) / sizeof (*user_regs.r.gpr))
+  Dwarf_Word dwarf_regs[GPRS];
+  for (unsigned gpr = 0; gpr < GPRS; gpr++)
     dwarf_regs[gpr] = user_regs.r.gpr[gpr];
-  if (! setfunc (0, gprs, dwarf_regs, arg))
+  if (! setfunc (0, GPRS, dwarf_regs, arg))
     return false;
   dwarf_regs[0] = user_regs.r.link;
   // LR uses both 65 and 108 numbers, there is no consistency for it.
-- 
1.8.3.1



More information about the Elfutils-devel mailing list