From f3fa56c32a240012c7b8c13be10d0b787d849ff3 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 12 Nov 2021 07:31:40 +0000 Subject: [PATCH] gcc10 LTO - Only specify adhlns assembler options at link time (#15115) * gcc10 LTO - Only specify adhlns assembler options at link time * Default adhlns off? --- tmk_core/rules.mk | 50 ++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 70ab0eb166..e657af3f43 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -81,7 +81,6 @@ endif # -f...: tuning, see GCC manual and avr-libc documentation # -Wall...: warning level # -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing ifeq ($(strip $(LTO_ENABLE)), yes) ifeq ($(PLATFORM),CHIBIOS) $(info Enabling LTO on ChibiOS-targeting boards is known to have a high likelihood of failure.) @@ -117,10 +116,6 @@ endif #CFLAGS += -Wundef #CFLAGS += -Wunreachable-code #CFLAGS += -Wsign-compare -GCC_VERSION := $(shell gcc --version 2>/dev/null) -ifeq ($(findstring clang, ${GCC_VERSION}),) -CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) -endif CFLAGS += $(CSTANDARD) # This fixes lots of keyboards linking errors but SHOULDN'T BE A FINAL SOLUTION @@ -133,7 +128,6 @@ CFLAGS += -fcommon # -f...: tuning, see GCC manual and avr-libc documentation # -Wall...: warning level # -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing ifeq ($(strip $(DEBUG_ENABLE)),yes) CXXFLAGS += -g$(DEBUG) endif @@ -152,28 +146,10 @@ endif #CXXFLAGS += -Wstrict-prototypes #CXXFLAGS += -Wunreachable-code #CXXFLAGS += -Wsign-compare -ifeq ($(findstring clang, ${GCC_VERSION}),) -CXXFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) -endif #CXXFLAGS += $(CSTANDARD) #---------------- Assembler Options ---------------- -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns: create listing -# -gstabs: have the assembler create line number information; note that -# for use in COFF files, additional information about filenames -# and function names needs to be present in the assembler source -# files -- see avr-libc docs [FIXME: not yet described there] -# -listing-cont-lines: Sets the maximum number of continuation lines of hex -# dump that will be displayed for a given single line of source input. ASFLAGS += $(ADEFS) -ifeq ($(findstring clang, ${GCC_VERSION}),) -ifeq ($(strip $(DEBUG_ENABLE)),yes) - ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 -else - ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100 -endif -endif ifeq ($(VERBOSE_AS_CMD),yes) ASFLAGS += -v endif @@ -230,6 +206,32 @@ LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) # You can give EXTRALDFLAGS at 'make' command line. LDFLAGS += $(EXTRALDFLAGS) +#---------------- Assembler Listings ---------------- +# -Wa,...: tell GCC to pass this to the assembler. +# -adhlns: create listing +# -gstabs: have the assembler create line number information; note that +# for use in COFF files, additional information about filenames +# and function names needs to be present in the assembler source +# files -- see avr-libc docs [FIXME: not yet described there] +# -listing-cont-lines: Sets the maximum number of continuation lines of hex +# dump that will be displayed for a given single line of source input. + +ADHLNS_ENABLE ?= no +ifeq ($(ADHLNS_ENABLE),yes) + # Avoid "Options to '-Xassembler' do not match" - only specify assembler options at LTO link time + ifeq ($(strip $(LTO_ENABLE)), yes) + LDFLAGS += -Wa,-adhlns=$(BUILD_DIR)/$(TARGET).lst + else + CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) + CXXFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) + ifeq ($(strip $(DEBUG_ENABLE)),yes) + ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 + else + ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100 + endif + endif +endif + # Define programs and commands. SHELL = sh REMOVE = rm -f