diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping index 06f9e7ae..41c59562 100644 --- a/src/Makefile.housekeeping +++ b/src/Makefile.housekeeping @@ -450,14 +450,20 @@ endif # Enable per-item sections and section garbage collection. Note that # some older versions of gcc support -fdata-sections but treat it as -# implying -fno-common, which would break our build. +# implying -fno-common, which would break our build. Some other older +# versions issue a spurious and uninhibitable warning if +# -ffunction-sections is used with -g, which would also break our +# build since we use -Werror. # ifeq ($(CCTYPE),gcc) DS_TEST = $(ECHO) 'char x;' | \ $(CC) -fdata-sections -S -x c - -o - 2>/dev/null | \ grep -E '\.comm' > /dev/null DS_FLAGS := $(shell $(DS_TEST) && $(ECHO) '-fdata-sections') -CFLAGS += -ffunction-sections $(DS_FLAGS) +FS_TEST = $(CC) -ffunction-sections -g -c -x c /dev/null \ + -o /dev/null 2>/dev/null +FS_FLAGS := $(shell $(FS_TEST) && $(ECHO) '-ffunction-sections') +CFLAGS += $(FS_FLAGS) $(DS_FLAGS) endif LDFLAGS += --gc-sections