build failure with gcc 4.6.0 "array subscript is above array bounds"

Ian Campbell Ian.Campbell at citrix.com
Thu Aug 18 18:27:12 EST 2011


I noticed this with a defconfig build:
      CC      arch/powerpc/kernel/ptrace.o
    arch/powerpc/kernel/ptrace.c: In function 'arch_ptrace':
    arch/powerpc/kernel/ptrace.c:1502:5: error: array subscript is above array bounds [-Werror=array-bounds]
    arch/powerpc/kernel/ptrace.c:1530:5: error: array subscript is above array bounds [-Werror=array-bounds]

That corresponds to:
	tmp = ((unsigned long *)child->thread.fpr)
		[TS_FPRWIDTH * (index - PT_FPR0)];

child->thread.fpr is "double fpr[32][TS_FPRWIDTH]".

index has already been bounds checked so we know it is <= PT_FPSCR.

I tried to fix but I don't really know enough about PPC to figure out
the correct fix is. PT_FPSCR is "PT_FPR0 + 32" on ppc64, which seems
consistent with the fpr definition.

On ppc32 PT_FPSCR is "PT_FPR0 + 2*32 + 1", I tried replacing the 32 with
"PT_FPSCR - PT_FPR0" (+ 1) but that got me into the BUILD_BUG_ONs at
line 346 and 374. At this point I'm afraid gave up trying to fix things,
I hope the report is useful anyway...

Ian.



More information about the Linuxppc-dev mailing list