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 <m...@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 <m...@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 <sch...@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