Module Name:    src
Committed By:   mrg
Date:           Thu Aug  3 08:16:31 UTC 2023

Modified Files:
        src/sys/arch/evbarm/gumstix: gumstix_machdep.c
        src/sys/arch/evbarm/ixm1200: ixm1200_machdep.c
        src/sys/arch/hpcarm/hpcarm: pxa2x0_hpc_machdep.c sa11x0_hpc_machdep.c
        src/sys/arch/hppa/stand: Makefile.buildboot
        src/sys/arch/m68k/m68k: regdump.c
        src/sys/arch/macppc/macppc: cpu.c

Log Message:
ignore "-Warray-bounds" for various low level platform code that knows
how something is setup but technically is undefined behaviour.  the
most common here is "extern int end;" and then using offsets of "&end"
that are outside the bounds of this 4-byte integer.

these uses are almost certainly all OK in reality.

found by GCC 12.


To generate a diff of this commit:
cvs rdiff -u -r1.73 -r1.74 src/sys/arch/evbarm/gumstix/gumstix_machdep.c
cvs rdiff -u -r1.67 -r1.68 src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/hppa/stand/Makefile.buildboot
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/m68k/m68k/regdump.c
cvs rdiff -u -r1.72 -r1.73 src/sys/arch/macppc/macppc/cpu.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/evbarm/gumstix/gumstix_machdep.c
diff -u src/sys/arch/evbarm/gumstix/gumstix_machdep.c:1.73 src/sys/arch/evbarm/gumstix/gumstix_machdep.c:1.74
--- src/sys/arch/evbarm/gumstix/gumstix_machdep.c:1.73	Thu Apr 20 08:28:04 2023
+++ src/sys/arch/evbarm/gumstix/gumstix_machdep.c	Thu Aug  3 08:16:30 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: gumstix_machdep.c,v 1.73 2023/04/20 08:28:04 skrll Exp $ */
+/*	$NetBSD: gumstix_machdep.c,v 1.74 2023/08/03 08:16:30 mrg Exp $ */
 /*
  * Copyright (C) 2005, 2006, 2007  WIDE Project and SOUM Corporation.
  * All rights reserved.
@@ -467,6 +467,13 @@ read_system_serial(void)
 	char system_serial[GUMSTIX_SYSTEM_SERIAL_SIZE], *src;
 	char x;
 
+/*
+ * XXXGCC12.
+ * This accesses beyond what "char *src" is known to supply.
+ */
+#pragma GCC push_options
+#pragma GCC diagnostic ignored "-Warray-bounds"
+
 	src = (char *)(FLASH_OFFSET_USER_PROTECTION * 2 /*word*/);
 	*(volatile uint16_t *)0 = FLASH_CMD_READ_ID;
 	memcpy(system_serial,
@@ -487,6 +494,7 @@ read_system_serial(void)
 		 * gumstix_serial_hash(system_serial);
 		 */
 	}
+#pragma GCC pop_options
 	system_serial_high = system_serial[0] << 24 | system_serial[1] << 16 |
 	    system_serial[2] << 8 | system_serial[3];
 	system_serial_low = system_serial[4] << 24 | system_serial[5] << 16 |

Index: src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c
diff -u src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c:1.67 src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c:1.68
--- src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c:1.67	Thu Apr 20 08:28:05 2023
+++ src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c	Thu Aug  3 08:16:31 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: ixm1200_machdep.c,v 1.67 2023/04/20 08:28:05 skrll Exp $ */
+/*	$NetBSD: ixm1200_machdep.c,v 1.68 2023/08/03 08:16:31 mrg Exp $ */
 
 /*
  * Copyright (c) 2002, 2003
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ixm1200_machdep.c,v 1.67 2023/04/20 08:28:05 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ixm1200_machdep.c,v 1.68 2023/08/03 08:16:31 mrg Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_console.h"
@@ -344,7 +344,14 @@ initarm(void *arg)
 
 #if NKSYMS || defined(DDB) || defined(MODULAR)
         if (! memcmp(&end, "\177ELF", 4)) {
+/*
+ * XXXGCC12.
+ * This accesses beyond what "int end" technically supplies.
+ */
+#pragma GCC push_options
+#pragma GCC diagnostic ignored "-Warray-bounds"
                 sh = (Elf_Shdr *)((char *)&end + ((Elf_Ehdr *)&end)->e_shoff);
+#pragma GCC pop_options
                 loop = ((Elf_Ehdr *)&end)->e_shnum;
                 for(; loop; loop--, sh++)
                         if (sh->sh_offset > 0 &&

Index: src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c
diff -u src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c:1.31 src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c:1.32
--- src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c:1.31	Thu Apr 20 08:28:06 2023
+++ src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c	Thu Aug  3 08:16:31 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: pxa2x0_hpc_machdep.c,v 1.31 2023/04/20 08:28:06 skrll Exp $	*/
+/*	$NetBSD: pxa2x0_hpc_machdep.c,v 1.32 2023/08/03 08:16:31 mrg Exp $	*/
 
 /*
  * Copyright (c) 1994-1998 Mark Brinicombe.
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pxa2x0_hpc_machdep.c,v 1.31 2023/04/20 08:28:06 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pxa2x0_hpc_machdep.c,v 1.32 2023/08/03 08:16:31 mrg Exp $");
 
 #include "opt_ddb.h"
 #include "opt_dram_pages.h"
@@ -267,8 +267,15 @@ init_pxa2x0(int argc, char **argv, struc
 	symbolsize = 0;
 #if NKSYMS || defined(DDB) || defined(MODULAR)
 	if (!memcmp(&end, "\177ELF", 4)) {
+/*
+ * XXXGCC12.
+ * This accesses beyond what "int end" technically supplies.
+ */
+#pragma GCC push_options
+#pragma GCC diagnostic ignored "-Warray-bounds"
 		sh = (Elf_Shdr *)((char *)&end + ((Elf_Ehdr *)&end)->e_shoff);
 		loop = ((Elf_Ehdr *)&end)->e_shnum;
+#pragma GCC pop_options
 		for (; loop; loop--, sh++)
 			if (sh->sh_offset > 0 &&
 			    (sh->sh_offset + sh->sh_size) > symbolsize)

Index: src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c
diff -u src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c:1.22 src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c:1.23
--- src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c:1.22	Thu Apr 20 08:28:06 2023
+++ src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c	Thu Aug  3 08:16:31 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: sa11x0_hpc_machdep.c,v 1.22 2023/04/20 08:28:06 skrll Exp $	*/
+/*	$NetBSD: sa11x0_hpc_machdep.c,v 1.23 2023/08/03 08:16:31 mrg Exp $	*/
 
 /*
  * Copyright (c) 1994-1998 Mark Brinicombe.
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sa11x0_hpc_machdep.c,v 1.22 2023/04/20 08:28:06 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sa11x0_hpc_machdep.c,v 1.23 2023/08/03 08:16:31 mrg Exp $");
 
 #include "opt_ddb.h"
 #include "opt_dram_pages.h"
@@ -206,7 +206,14 @@ init_sa11x0(int argc, char **argv, struc
 	symbolsize = 0;
 #if NKSYMS || defined(DDB) || defined(MODULAR)
 	if (!memcmp(&end, "\177ELF", 4)) {
+/*
+ * XXXGCC12.
+ * This accesses beyond what "int end" technically supplies.
+ */
+#pragma GCC push_options
+#pragma GCC diagnostic ignored "-Warray-bounds"
 		sh = (Elf_Shdr *)((char *)&end + ((Elf_Ehdr *)&end)->e_shoff);
+#pragma GCC pop_options
 		loop = ((Elf_Ehdr *)&end)->e_shnum;
 		for (; loop; loop--, sh++)
 			if (sh->sh_offset > 0 &&

Index: src/sys/arch/hppa/stand/Makefile.buildboot
diff -u src/sys/arch/hppa/stand/Makefile.buildboot:1.6 src/sys/arch/hppa/stand/Makefile.buildboot:1.7
--- src/sys/arch/hppa/stand/Makefile.buildboot:1.6	Tue Nov 13 21:22:37 2018
+++ src/sys/arch/hppa/stand/Makefile.buildboot	Thu Aug  3 08:16:31 2023
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.buildboot,v 1.6 2018/11/13 21:22:37 skrll Exp $
+#	$NetBSD: Makefile.buildboot,v 1.7 2023/08/03 08:16:31 mrg Exp $
 
 NOPIE=yes
 NOSSP=yes
@@ -70,5 +70,8 @@ ${PROG}: ${OBJS} ${LIBSA} ${LIBZ} ${LIBK
 	@${SIZE} ${PROG}
 	@echo ${PROG} total size should not exceed XXXX bytes
 
+# GCC 12 and newer thinks this is bad (accessing page 0?)
+COPTS.itecons.c+=	-Wno-array-bounds
+
 .include <bsd.prog.mk>
 .include <bsd.klinks.mk>

Index: src/sys/arch/m68k/m68k/regdump.c
diff -u src/sys/arch/m68k/m68k/regdump.c:1.14 src/sys/arch/m68k/m68k/regdump.c:1.15
--- src/sys/arch/m68k/m68k/regdump.c:1.14	Sat Apr  6 03:06:26 2019
+++ src/sys/arch/m68k/m68k/regdump.c	Thu Aug  3 08:16:31 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: regdump.c,v 1.14 2019/04/06 03:06:26 thorpej Exp $	*/
+/*	$NetBSD: regdump.c,v 1.15 2023/08/03 08:16:31 mrg Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: regdump.c,v 1.14 2019/04/06 03:06:26 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: regdump.c,v 1.15 2023/08/03 08:16:31 mrg Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -85,6 +85,12 @@ regdump(struct trapframe *tf, int sbytes
 	for (i = 0; i < 8; i++)
 		printf(" %s", hexstr(tf->tf_regs[i+8], 8));
 	if (sbytes > 0) {
+/*
+ * XXXGCC12.
+ * This accesses beyond what "trapframe *tf" technically supplies.
+ */
+#pragma GCC push_options
+#pragma GCC diagnostic ignored "-Warray-bounds"
 		if (tf->tf_sr & PSL_S) {
 			printf("\n\nKernel stack (%s):",
 			    hexstr((int)(((int *)(void *)&tf)-1), 8));
@@ -94,6 +100,7 @@ regdump(struct trapframe *tf, int sbytes
 			    hexstr(tf->tf_regs[SP], 8));
 			dumpmem((int *)tf->tf_regs[SP], sbytes, 1);
 		}
+#pragma GCC pop_options
 	}
 	doingdump = 0;
 	splx(s);

Index: src/sys/arch/macppc/macppc/cpu.c
diff -u src/sys/arch/macppc/macppc/cpu.c:1.72 src/sys/arch/macppc/macppc/cpu.c:1.73
--- src/sys/arch/macppc/macppc/cpu.c:1.72	Sat Feb 15 07:20:41 2020
+++ src/sys/arch/macppc/macppc/cpu.c	Thu Aug  3 08:16:31 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.c,v 1.72 2020/02/15 07:20:41 skrll Exp $	*/
+/*	$NetBSD: cpu.c,v 1.73 2023/08/03 08:16:31 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2001 Tsubai Masanari.
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.72 2020/02/15 07:20:41 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.73 2023/08/03 08:16:31 mrg Exp $");
 
 #include "opt_ppcparam.h"
 #include "opt_multiprocessor.h"
@@ -235,9 +235,17 @@ md_setup_trampoline(volatile struct cpu_
 		u_int node, off;
 		char cpupath[32];
 
+/*
+ * XXXGCC12 has:
+ * macppc/cpu.c:239:17: error: array subscript 0 is outside array bounds
+ *     of 'u_int[0]' {aka 'unsigned int[]'} [-Werror=array-bounds]
+ */
+#pragma GCC push_options
+#pragma GCC diagnostic ignored "-Warray-bounds"
 		/* construct an absolute branch instruction */
 		*(u_int *)EXC_RST =		/* ba cpu_spinup_trampoline */
 		    0x48000002 | (u_int)cpu_spinup_trampoline;
+#pragma GCC pop_options
 		__syncicache((void *)EXC_RST, 0x100);
 		h->hatch_running = -1;
 

Reply via email to