Skip to content

Commit

Permalink
makefiles/toolchain: Fix incorrect assumptions on address space layout
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
maribu committed Apr 21, 2023
1 parent af2e36b commit 1e5d2b1
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
7 changes: 0 additions & 7 deletions makefiles/arch/avr8.inc.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
7 changes: 7 additions & 0 deletions makefiles/toolchain/gnu.inc.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 1e5d2b1

Please sign in to comment.