From aeb396798f4583aec85169170da159290f35190f Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Mon, 18 Dec 2017 11:29:04 +0300 Subject: [PATCH 1/4] Add maximum debugging info to ELF; doesn't affect binary size --- examples/rules.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/rules.mk b/examples/rules.mk index cd85001a..4f6a55dc 100644 --- a/examples/rules.mk +++ b/examples/rules.mk @@ -98,7 +98,7 @@ EXAMPLES_SCRIPT_DIR = $(OPENCM3_DIR)/../scripts ############################################################################### # C flags -TGT_CFLAGS += $(OPT) $(CSTD) -g +TGT_CFLAGS += $(OPT) $(CSTD) -ggdb3 TGT_CFLAGS += $(ARCH_FLAGS) TGT_CFLAGS += -Wextra -Wshadow -Wimplicit-function-declaration TGT_CFLAGS += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes @@ -107,7 +107,7 @@ TGT_CFLAGS += -fno-common -ffunction-sections -fdata-sections ############################################################################### # C++ flags -TGT_CXXFLAGS += $(OPT) $(CXXSTD) -g +TGT_CXXFLAGS += $(OPT) $(CXXSTD) -ggdb3 TGT_CXXFLAGS += $(ARCH_FLAGS) TGT_CXXFLAGS += -Wextra -Wshadow -Wredundant-decls -Weffc++ TGT_CXXFLAGS += -fno-common -ffunction-sections -fdata-sections From 5751bb202add9aba2a8acaf3cc52cda709795b5b Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Mon, 18 Dec 2017 11:32:32 +0300 Subject: [PATCH 2/4] Disable RTTI and exceptions by default --- examples/rules.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/rules.mk b/examples/rules.mk index 4f6a55dc..ddbaeaf6 100644 --- a/examples/rules.mk +++ b/examples/rules.mk @@ -111,6 +111,7 @@ TGT_CXXFLAGS += $(OPT) $(CXXSTD) -ggdb3 TGT_CXXFLAGS += $(ARCH_FLAGS) TGT_CXXFLAGS += -Wextra -Wshadow -Wredundant-decls -Weffc++ TGT_CXXFLAGS += -fno-common -ffunction-sections -fdata-sections +TGT_CXXFLAGS += -fno-exceptions -fno-rtti ############################################################################### # C & C++ preprocessor common flags From 403e22bc3da317b920a6471a0e03584c4f52f3c2 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Mon, 18 Dec 2017 11:33:33 +0300 Subject: [PATCH 3/4] Add cross-reference to the map file --- examples/rules.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/rules.mk b/examples/rules.mk index ddbaeaf6..9d5b62a2 100644 --- a/examples/rules.mk +++ b/examples/rules.mk @@ -126,7 +126,7 @@ TGT_CPPFLAGS += $(DEFS) TGT_LDFLAGS += --static -nostartfiles TGT_LDFLAGS += -T$(LDSCRIPT) TGT_LDFLAGS += $(ARCH_FLAGS) -TGT_LDFLAGS += -Wl,-Map=$(*).map +TGT_LDFLAGS += -Wl,-Map=$(*).map -Wl,--cref TGT_LDFLAGS += -Wl,--gc-sections ifeq ($(V),99) TGT_LDFLAGS += -Wl,--print-gc-sections From 5fbd6ba151e6178ff7acc52f86484e4fad659e63 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Mon, 18 Dec 2017 11:45:02 +0300 Subject: [PATCH 4/4] Optionally build with LTO --- examples/rules.mk | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/examples/rules.mk b/examples/rules.mk index 9d5b62a2..6ffdb347 100644 --- a/examples/rules.mk +++ b/examples/rules.mk @@ -43,7 +43,11 @@ STYLECHECK := /checkpatch.pl STYLECHECKFLAGS := --no-tree -f --terse --mailback STYLECHECKFILES := $(shell find . -name '*.[ch]') OPT := -Os +ifeq ($(LTO),1) +OPT += -flto +endif CSTD ?= -std=c99 +DEBUG := -ggdb3 ############################################################################### @@ -98,7 +102,7 @@ EXAMPLES_SCRIPT_DIR = $(OPENCM3_DIR)/../scripts ############################################################################### # C flags -TGT_CFLAGS += $(OPT) $(CSTD) -ggdb3 +TGT_CFLAGS += $(OPT) $(CSTD) $(DEBUG) TGT_CFLAGS += $(ARCH_FLAGS) TGT_CFLAGS += -Wextra -Wshadow -Wimplicit-function-declaration TGT_CFLAGS += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes @@ -107,7 +111,7 @@ TGT_CFLAGS += -fno-common -ffunction-sections -fdata-sections ############################################################################### # C++ flags -TGT_CXXFLAGS += $(OPT) $(CXXSTD) -ggdb3 +TGT_CXXFLAGS += $(OPT) $(CXXSTD) $(DEBUG) TGT_CXXFLAGS += $(ARCH_FLAGS) TGT_CXXFLAGS += -Wextra -Wshadow -Wredundant-decls -Weffc++ TGT_CXXFLAGS += -fno-common -ffunction-sections -fdata-sections @@ -125,7 +129,7 @@ TGT_CPPFLAGS += $(DEFS) TGT_LDFLAGS += --static -nostartfiles TGT_LDFLAGS += -T$(LDSCRIPT) -TGT_LDFLAGS += $(ARCH_FLAGS) +TGT_LDFLAGS += $(ARCH_FLAGS) $(DEBUG) TGT_LDFLAGS += -Wl,-Map=$(*).map -Wl,--cref TGT_LDFLAGS += -Wl,--gc-sections ifeq ($(V),99) @@ -194,7 +198,7 @@ print-%: %.elf %.map: $(OBJS) $(LDSCRIPT) @#printf " LD $(*).elf\n" - $(Q)$(LD) $(TGT_LDFLAGS) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(*).elf + $(Q)$(LD) $(OPT) $(TGT_LDFLAGS) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(*).elf %.o: %.c @#printf " CC $(*).c\n"