diff options
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/config.mk | 4 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/u-boot.lds | 52 | 
2 files changed, 14 insertions, 42 deletions
| diff --git a/arch/powerpc/cpu/mpc85xx/config.mk b/arch/powerpc/cpu/mpc85xx/config.mk index f07d9209a..ce4376b10 100644 --- a/arch/powerpc/cpu/mpc85xx/config.mk +++ b/arch/powerpc/cpu/mpc85xx/config.mk @@ -25,6 +25,10 @@ PLATFORM_RELFLAGS += -fPIC -meabi  PLATFORM_CPPFLAGS += -ffixed-r2 -Wa,-me500 -msoft-float -mno-string +# Enable gc-sections to enable generation of smaller images. +PLATFORM_LDFLAGS += --gc-sections +PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections +  # -mspe=yes is needed to have -mno-spe accepted by a buggy GCC;  # see "[PATCH,rs6000] make -mno-spe work as expected" on  # http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00311.html diff --git a/arch/powerpc/cpu/mpc85xx/u-boot.lds b/arch/powerpc/cpu/mpc85xx/u-boot.lds index c88b1f35b..85042c525 100644 --- a/arch/powerpc/cpu/mpc85xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc85xx/u-boot.lds @@ -25,8 +25,7 @@  #endif  OUTPUT_ARCH(powerpc) -/* Do we need any of these for elf? -   __DYNAMIC = 0;    */ +  PHDRS  {    text PT_LOAD; @@ -38,42 +37,16 @@ SECTIONS    /* Read-only sections, merged into text segment: */    . = + SIZEOF_HEADERS;    .interp : { *(.interp) } -  .hash          : { *(.hash)		} -  .dynsym        : { *(.dynsym)		} -  .dynstr        : { *(.dynstr)		} -  .rel.text      : { *(.rel.text)		} -  .rela.text     : { *(.rela.text)	} -  .rel.data      : { *(.rel.data)		} -  .rela.data     : { *(.rela.data)	} -  .rel.rodata    : { *(.rel.rodata)	} -  .rela.rodata   : { *(.rela.rodata)	} -  .rel.got       : { *(.rel.got)		} -  .rela.got      : { *(.rela.got)		} -  .rel.ctors     : { *(.rel.ctors)	} -  .rela.ctors    : { *(.rela.ctors)	} -  .rel.dtors     : { *(.rel.dtors)	} -  .rela.dtors    : { *(.rela.dtors)	} -  .rel.bss       : { *(.rel.bss)		} -  .rela.bss      : { *(.rela.bss)		} -  .rel.plt       : { *(.rel.plt)		} -  .rela.plt      : { *(.rela.plt)		} -  .init          : { *(.init)	} -  .plt : { *(.plt) }    .text      :    { -    *(.text) -    *(.got1) +    *(.text*)     } :text      _etext = .;      PROVIDE (etext = .);      .rodata    :     { -    *(.eh_frame)      *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))    } :text -  .fini      : { *(.fini)    } =0 -  .ctors     : { *(.ctors)   } -  .dtors     : { *(.dtors)   }    /* Read-write section, merged into data segment: */    . = (. + 0x00FF) & 0xFFFFFF00; @@ -81,23 +54,19 @@ SECTIONS    PROVIDE (erotext = .);    .reloc   :    { -    *(.got) +    KEEP(*(.got))      _GOT2_TABLE_ = .; -    *(.got2) +    KEEP(*(.got2))      _FIXUP_TABLE_ = .; -    *(.fixup) +    KEEP(*(.fixup))    }    __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;    __fixup_entries = (. - _FIXUP_TABLE_) >> 2;    .data    :    { -    *(.data) -    *(.data1) -    *(.sdata) -    *(.sdata2) -    *(.dynamic) -    CONSTRUCTORS +    *(.data*) +    *(.sdata*)    }    _edata  =  .;    PROVIDE (edata = .); @@ -126,7 +95,7 @@ SECTIONS    .resetvec RESET_VECTOR_ADDRESS :    { -    *(.resetvec) +    KEEP(*(.resetvec))    } :text = 0xffff    . = RESET_VECTOR_ADDRESS + 0x4; @@ -145,9 +114,8 @@ SECTIONS    __bss_start = .;    .bss (NOLOAD)       :    { -   *(.sbss) *(.scommon) -   *(.dynbss) -   *(.bss) +   *(.sbss*) +   *(.bss*)     *(COMMON)    } :bss |