mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
b86366e34e
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.
42 lines
1.3 KiB
Makefile
42 lines
1.3 KiB
Makefile
CC = $(PREFIX)gcc
|
|
CXX = $(PREFIX)g++
|
|
CCAS ?= $(CC)
|
|
ifeq ($(LTO),1)
|
|
AR = $(PREFIX)gcc-ar
|
|
RANLIB = $(PREFIX)gcc-ranlib
|
|
else
|
|
AR = $(PREFIX)ar
|
|
RANLIB = $(PREFIX)ranlib
|
|
endif
|
|
AS = $(PREFIX)as
|
|
NM = $(PREFIX)nm
|
|
LINK = $(PREFIX)gcc
|
|
LINKXX = $(PREFIX)g++
|
|
SIZE = $(PREFIX)size
|
|
_OBJCOPY := $(shell command -v $(PREFIX)objcopy || command -v gobjcopy || command -v objcopy)
|
|
OBJCOPY ?= $(_OBJCOPY)
|
|
ifeq ($(OBJCOPY),)
|
|
$(warning objcopy not found. Hex file will not be created.)
|
|
OBJCOPY = true
|
|
endif
|
|
# Default to the native (g)objdump, helps when using toolchain from docker
|
|
_OBJDUMP := $(or $(shell command -v $(PREFIX)objdump || command -v gobjdump),objdump)
|
|
OBJDUMP ?= $(_OBJDUMP)
|
|
|
|
GCC_VERSION := $(shell command -v $(CC) > /dev/null && $(CC) -dumpversion | cut -d . -f 1)
|
|
|
|
# -fmacro-prefix-map requires GCC 8
|
|
ifneq (8, $(firstword $(shell echo 8 $(GCC_VERSION) | tr ' ' '\n' | sort -n)))
|
|
OPTIONAL_CFLAGS_BLACKLIST += -fmacro-prefix-map=$(RIOTBASE)/=
|
|
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
|