1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

makefiles/toolchain: Fix incorrect assumptions on address space layout

GCC 12 gives out of bounds warnings when the resulting address is out
of bounds of what GCC assumes to be the valid address space. It seems
that by default the address 0x0 is not considered valid (which would
be a NULL pointer and typically not mapped in a userspace behind an MMU
scenario), but in fact is valid on bare metal hardware. At least on
AVR and MSP430 this needs to be set. On many Cortex M MCUs 0x0 is also
a valid address (e.g. often the flash is mapped there), but seemingly
for them `--param=min-pagesize=0` is already the default. In any case,
it won't hurt to set it explicit for them as well.
This commit is contained in:
Marian Buschsieweke 2023-04-21 08:57:30 +02:00
parent b123f1071a
commit b86366e34e
No known key found for this signature in database
GPG Key ID: CB8E3238CE715A94
2 changed files with 7 additions and 7 deletions

View File

@ -41,10 +41,3 @@ endif
OPTIONAL_CFLAGS_BLACKLIST += -Wformat-overflow
OPTIONAL_CFLAGS_BLACKLIST += -Wformat-truncation
OPTIONAL_CFLAGS_BLACKLIST += -gz
ifeq ($(TOOLCHAIN),gnu)
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105523
ifneq ($(findstring 12.,$(shell $(TARGET_ARCH)-gcc --version 2>/dev/null)),)
CFLAGS += --param=min-pagesize=0
endif
endif

View File

@ -32,3 +32,10 @@ endif
# We use GDB for debugging
include $(RIOTMAKE)/tools/gdb.inc.mk
# Data address spaces starts at zero for all supported architectures. This fixes
# compilation at least on MSP430 and AVR.
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105523
ifeq ($(GCC_VERSION),12)
CFLAGS += --param=min-pagesize=0
endif