diff --git a/arch/arm/src/Makefile b/arch/arm/src/Makefile index 1a4b5c272f..4850080312 100644 --- a/arch/arm/src/Makefile +++ b/arch/arm/src/Makefile @@ -105,10 +105,18 @@ EXTRA_LIBS += $(wildcard $(APPDIR)$(DELIM)staging$(DELIM)*$(LIBEXT)) ifeq ($(CONFIG_ARM_TOOLCHAIN_ARMCLANG),) ifeq ($(LD),$(CC)) + ifeq ($(CONFIG_STACK_CANARIES),y) + # filter out ssp(Stack Smashing Protector) related flags: + # -fstack-protector + # -fstack-protector-all + # -fstack-protector-strong + # -fstack-protector-explicit + STRIPCFLAGS = $(filter -fstack-protector%,$(CFLAGS)) + endif LDSTARTGROUP ?= -Wl,--start-group LDENDGROUP ?= -Wl,--end-group LDFLAGS := $(addprefix -Xlinker ,$(LDFLAGS)) - LDFLAGS += $(CFLAGS) + LDFLAGS += $(filter-out $(STRIPCFLAGS),$(CFLAGS)) else LDSTARTGROUP ?= --start-group LDENDGROUP ?= --end-group diff --git a/arch/arm64/src/Makefile b/arch/arm64/src/Makefile index 35fa194f2e..cebecfe6af 100644 --- a/arch/arm64/src/Makefile +++ b/arch/arm64/src/Makefile @@ -87,10 +87,18 @@ EXTRA_LIBS += $(wildcard $(APPDIR)$(DELIM)staging$(DELIM)*$(LIBEXT)) # Override in Make.defs if linker is not 'ld' ifeq ($(LD),$(CC)) + ifeq ($(CONFIG_STACK_CANARIES),y) + # filter out ssp(Stack Smashing Protector) related flags: + # -fstack-protector + # -fstack-protector-all + # -fstack-protector-strong + # -fstack-protector-explicit + STRIPCFLAGS = $(filter -fstack-protector%,$(CFLAGS)) + endif LDSTARTGROUP ?= -Wl,--start-group LDENDGROUP ?= -Wl,--end-group LDFLAGS := $(addprefix -Xlinker ,$(LDFLAGS)) - LDFLAGS += $(CFLAGS) + LDFLAGS += $(filter-out $(STRIPCFLAGS),$(CFLAGS)) else LDSTARTGROUP ?= --start-group LDENDGROUP ?= --end-group diff --git a/arch/risc-v/src/Makefile b/arch/risc-v/src/Makefile index 4118775cf7..0b23888be0 100644 --- a/arch/risc-v/src/Makefile +++ b/arch/risc-v/src/Makefile @@ -99,10 +99,18 @@ ARCHSCRIPT := $(call CONVERT_PATH,$(ARCHSCRIPT)) LDFLAGS += $(addprefix -T,$(addsuffix .tmp,$(ARCHSCRIPT))) $(EXTRALINKCMDS) ifeq ($(LD),$(CC)) + ifeq ($(CONFIG_STACK_CANARIES),y) + # filter out ssp(Stack Smashing Protector) related flags: + # -fstack-protector + # -fstack-protector-all + # -fstack-protector-strong + # -fstack-protector-explicit + STRIPCFLAGS = $(filter -fstack-protector%,$(CFLAGS)) + endif LDSTARTGROUP ?= -Wl,--start-group LDENDGROUP ?= -Wl,--end-group LDFLAGS := $(addprefix -Xlinker ,$(LDFLAGS)) - LDFLAGS += $(CFLAGS) + LDFLAGS += $(filter-out $(STRIPCFLAGS),$(CFLAGS)) else LDSTARTGROUP ?= --start-group LDENDGROUP ?= --end-group diff --git a/arch/xtensa/src/Makefile b/arch/xtensa/src/Makefile index 132475b146..3ca6f2336d 100644 --- a/arch/xtensa/src/Makefile +++ b/arch/xtensa/src/Makefile @@ -98,10 +98,18 @@ EXTRA_LIBS := $(filter-out $(NAMEFULL_LIBS) $(NAMESPEC_LIBS),$(EXTRA_LIBS)) EXTRA_LIBS += $(wildcard $(APPDIR)$(DELIM)staging$(DELIM)*$(LIBEXT)) ifeq ($(LD),$(CC)) + ifeq ($(CONFIG_STACK_CANARIES),y) + # filter out ssp(Stack Smashing Protector) related flags: + # -fstack-protector + # -fstack-protector-all + # -fstack-protector-strong + # -fstack-protector-explicit + STRIPCFLAGS = $(filter -fstack-protector%,$(CFLAGS)) + endif LDSTARTGROUP ?= -Wl,--start-group LDENDGROUP ?= -Wl,--end-group LDFLAGS := $(addprefix -Xlinker ,$(LDFLAGS)) - LDFLAGS += $(CFLAGS) + LDFLAGS += $(filter-out $(STRIPCFLAGS),$(CFLAGS)) else LDSTARTGROUP ?= --start-group LDENDGROUP ?= --end-group diff --git a/libs/libc/assert/CMakeLists.txt b/libs/libc/assert/CMakeLists.txt index 790509c04f..09c4b50b22 100644 --- a/libs/libc/assert/CMakeLists.txt +++ b/libs/libc/assert/CMakeLists.txt @@ -24,4 +24,7 @@ if(CONFIG_STACK_CANARIES) list(APPEND SRCS lib_stackchk.c) endif() +set_source_files_properties(lib_assert.c PROPERTIES COMPILE_FLAGS -fno-lto) +set_source_files_properties(lib_stackchk.c PROPERTIES COMPILE_FLAGS -fno-lto) + target_sources(c PRIVATE ${SRCS}) diff --git a/libs/libc/assert/Make.defs b/libs/libc/assert/Make.defs index dfe45759d4..830a50c05f 100644 --- a/libs/libc/assert/Make.defs +++ b/libs/libc/assert/Make.defs @@ -24,6 +24,9 @@ ifeq ($(CONFIG_STACK_CANARIES),y) CSRCS += lib_stackchk.c endif +assert/lib_assert.c_CFLAGS += -fno-lto +assert/lib_stackchk.c_CFLAGS += -fno-lto + # Add the assert directory to the build DEPPATH += --dep-path assert