Browse Source

Use --gc-sections during link

All common functions are being built into all binary images,
whether or not they are actually used. This change enables the
use of -ffunction-sections, -fdata-sections and --gc-sections
in the compiler and linker to remove unused code and data from
the images.

Change-Id: Ia9f78c01054ac4fa15d145af38b88a0d6fb7d409
pull/36/head
Andrew Thoelke 11 years ago
parent
commit
dccc537a72
  1. 2
      Makefile
  2. 8
      bl1/bl1.ld.S
  3. 8
      bl2/bl2.ld.S
  4. 12
      bl31/bl31.ld.S
  5. 8
      bl32/tsp/tsp.ld.S

2
Makefile

@ -150,8 +150,10 @@ ASFLAGS += -nostdinc -ffreestanding -Wa,--fatal-warnings \
CFLAGS := -nostdinc -pedantic -ffreestanding -Wall \
-Werror -mgeneral-regs-only -std=c99 -c -Os \
-DDEBUG=${DEBUG} ${INCLUDES} ${CFLAGS}
CFLAGS += -ffunction-sections -fdata-sections
LDFLAGS += --fatal-warnings -O1
LDFLAGS += --gc-sections
vpath %.ld.S bl1:bl2:bl31

8
bl1/bl1.ld.S

@ -43,8 +43,8 @@ SECTIONS
{
ro : {
__RO_START__ = .;
*bl1_entrypoint.o(.text)
*(.text)
*bl1_entrypoint.o(.text*)
*(.text*)
*(.rodata*)
*(.vectors)
__RO_END__ = .;
@ -57,7 +57,7 @@ SECTIONS
. = NEXT(16); /* Align LMA */
.data : ALIGN(16) { /* Align VMA */
__DATA_RAM_START__ = .;
*(.data)
*(.data*)
__DATA_RAM_END__ = .;
} >RAM AT>ROM
@ -73,7 +73,7 @@ SECTIONS
*/
.bss : ALIGN(16) {
__BSS_START__ = .;
*(.bss)
*(.bss*)
*(COMMON)
__BSS_END__ = .;
} >RAM

8
bl2/bl2.ld.S

@ -47,8 +47,8 @@ SECTIONS
ro . : {
__RO_START__ = .;
*bl2_entrypoint.o(.text)
*(.text)
*bl2_entrypoint.o(.text*)
*(.text*)
*(.rodata*)
*(.vectors)
__RO_END_UNALIGNED__ = .;
@ -63,7 +63,7 @@ SECTIONS
.data . : {
__DATA_START__ = .;
*(.data)
*(.data*)
__DATA_END__ = .;
} >RAM
@ -79,7 +79,7 @@ SECTIONS
*/
.bss : ALIGN(16) {
__BSS_START__ = .;
*(SORT_BY_ALIGNMENT(.bss))
*(SORT_BY_ALIGNMENT(.bss*))
*(COMMON)
__BSS_END__ = .;
} >RAM

12
bl31/bl31.ld.S

@ -48,14 +48,14 @@ SECTIONS
ro . : {
__RO_START__ = .;
*bl31_entrypoint.o(.text)
*(.text)
*bl31_entrypoint.o(.text*)
*(.text*)
*(.rodata*)
/* Ensure 8-byte alignment for descriptors */
/* Ensure 8-byte alignment for descriptors and ensure inclusion */
. = ALIGN(8);
__RT_SVC_DESCS_START__ = .;
*(rt_svc_descs)
KEEP(*(rt_svc_descs))
__RT_SVC_DESCS_END__ = .;
*(.vectors)
@ -71,7 +71,7 @@ SECTIONS
.data . : {
__DATA_START__ = .;
*(.data)
*(.data*)
__DATA_END__ = .;
} >RAM
@ -87,7 +87,7 @@ SECTIONS
*/
.bss : ALIGN(16) {
__BSS_START__ = .;
*(.bss)
*(.bss*)
*(COMMON)
__BSS_END__ = .;
} >RAM

8
bl32/tsp/tsp.ld.S

@ -48,8 +48,8 @@ SECTIONS
ro . : {
__RO_START__ = .;
*tsp_entrypoint.o(.text)
*(.text)
*tsp_entrypoint.o(.text*)
*(.text*)
*(.rodata*)
*(.vectors)
__RO_END_UNALIGNED__ = .;
@ -64,7 +64,7 @@ SECTIONS
.data . : {
__DATA_START__ = .;
*(.data)
*(.data*)
__DATA_END__ = .;
} >RAM
@ -80,7 +80,7 @@ SECTIONS
*/
.bss : ALIGN(16) {
__BSS_START__ = .;
*(SORT_BY_ALIGNMENT(.bss))
*(SORT_BY_ALIGNMENT(.bss*))
*(COMMON)
__BSS_END__ = .;
} >RAM

Loading…
Cancel
Save