summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2011-07-30 00:34:59 +0200
committerHarald Welte <laforge@gnumonks.org>2011-07-30 00:34:59 +0200
commitdda0896d875ec2d33b6de94df818a2f94526272b (patch)
tree502d58e1b72d77ca260efdf5513fbd1c51af3fba
parenta1e7c0c5efba4eebdb1ed178b5e3604226a1421a (diff)
use gcc/ld flags -ffunction-sections and --gc-sections
This will discard unused functions from the resulting binary
-rw-r--r--firmware/Makefile4
-rw-r--r--firmware/link/AT91SAM7S128-ROM-sam7dfu-app.ld10
-rw-r--r--firmware/link/AT91SAM7S256-ROM-sam7dfu-app.ld10
-rw-r--r--firmware/link/AT91SAM7S64-ROM-sam7dfu-app.ld10
4 files changed, 17 insertions, 17 deletions
diff --git a/firmware/Makefile b/firmware/Makefile
index 9a95d44..b085c33 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -249,7 +249,7 @@ CFLAGS += -Wredundant-decls -Wreturn-type -Wshadow
CFLAGS += -Wbad-function-cast -Wsign-compare -Waggregate-return
CFLAGS += -Wa,-adhlns=$(subst $(suffix $<),.lst,$<)
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
-#CFLAGS += -ffunction-sections -fdata-sections
+CFLAGS += -ffunction-sections -fdata-sections
# flags only for C
CONLYFLAGS += -Wnested-externs
@@ -315,7 +315,7 @@ LDFLAGS += -lc -lgcc
LDFLAGS += $(CPLUSPLUS_LIB)
LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS))
LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS))
-#LDFLAGS += --gc-sections
+LDFLAGS += -Wl,--gc-sections -Wl,--entry=_startup
# Set Linker-Script Depending On Selected Memory and Controller
ifeq ($(RUN_MODE),RUN_FROM_RAM)
diff --git a/firmware/link/AT91SAM7S128-ROM-sam7dfu-app.ld b/firmware/link/AT91SAM7S128-ROM-sam7dfu-app.ld
index ebac6d4..7db540e 100644
--- a/firmware/link/AT91SAM7S128-ROM-sam7dfu-app.ld
+++ b/firmware/link/AT91SAM7S128-ROM-sam7dfu-app.ld
@@ -16,8 +16,8 @@ SECTIONS
. = 0x00000000;
/* first section is .text which is used for code */
.text 0x00104000: AT ( 0x00000000 ) {
- src/start/Cstartup_app.o (.text)
- * (.text)
+ src/start/Cstartup_app.o (.text*)
+ * (.text*)
* (.rodata*)
. = ALIGN(4);
} >FLASH
@@ -28,8 +28,8 @@ SECTIONS
/* 0x00200000 ... */
.data 0x00200028: AT ( ADDR(.text) + SIZEOF(.text) - ADDR(.text) ) {
_data = . ;
- * (.fastrun)
- * (.data)
+ * (.fastrun*)
+ * (.data*)
. = ALIGN(4);
} >DATA
@@ -40,7 +40,7 @@ SECTIONS
.bss : {
__bss_start = . ;
__bss_start__ = . ;
- *(.bss)
+ *(.bss*)
*(COMMON)
} >DATA
diff --git a/firmware/link/AT91SAM7S256-ROM-sam7dfu-app.ld b/firmware/link/AT91SAM7S256-ROM-sam7dfu-app.ld
index 85bf7b8..7ec2089 100644
--- a/firmware/link/AT91SAM7S256-ROM-sam7dfu-app.ld
+++ b/firmware/link/AT91SAM7S256-ROM-sam7dfu-app.ld
@@ -16,8 +16,8 @@ SECTIONS
. = 0x00000000;
/* first section is .text which is used for code */
.text 0x00104000: AT ( 0x00000000 ) {
- src/start/Cstartup_app.o (.text)
- * (.text)
+ src/start/Cstartup_app.o (.text*)
+ * (.text*)
* (.rodata*)
. = ALIGN(4);
} >FLASH
@@ -28,8 +28,8 @@ SECTIONS
/* 0x00200000 ... */
.data 0x00200028: AT ( ADDR(.text) + SIZEOF(.text) - ADDR(.text) ) {
_data = . ;
- * (.fastrun)
- * (.data)
+ * (.fastrun*)
+ * (.data*)
. = ALIGN(4);
} >DATA
@@ -40,7 +40,7 @@ SECTIONS
.bss : {
__bss_start = . ;
__bss_start__ = . ;
- *(.bss)
+ *(.bss*)
*(COMMON)
} >DATA
diff --git a/firmware/link/AT91SAM7S64-ROM-sam7dfu-app.ld b/firmware/link/AT91SAM7S64-ROM-sam7dfu-app.ld
index de24dd8..d45f691 100644
--- a/firmware/link/AT91SAM7S64-ROM-sam7dfu-app.ld
+++ b/firmware/link/AT91SAM7S64-ROM-sam7dfu-app.ld
@@ -16,8 +16,8 @@ SECTIONS
. = 0x00000000;
/* first section is .text which is used for code */
.text 0x00104000: AT ( 0x00000000 ) {
- src/start/Cstartup_app.o (.text)
- * (.text)
+ src/start/Cstartup_app.o (.text*)
+ * (.text*)
* (.rodata*)
. = ALIGN(4);
} >FLASH
@@ -28,8 +28,8 @@ SECTIONS
/* 0x00200000 ... */
.data 0x00200028: AT ( ADDR(.text) + SIZEOF(.text) - ADDR(.text) ) {
_data = . ;
- * (.fastrun)
- * (.data)
+ * (.fastrun*)
+ * (.data*)
. = ALIGN(4);
} >DATA
@@ -40,7 +40,7 @@ SECTIONS
.bss : {
__bss_start = . ;
__bss_start__ = . ;
- *(.bss)
+ *(.bss*)
*(COMMON)
} >DATA
personal git repositories of Harald Welte. Your mileage may vary