diff options
author | Tom Rini <trini@ti.com> | 2013-02-12 19:03:59 -0500 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-02-12 19:03:59 -0500 |
commit | 9c748e02d99476e6a08d55eadfd8776edffe1e2e (patch) | |
tree | 74018fa9cefe7428a49b398355885b840687cf32 /arch/mips/cpu/u-boot.lds | |
parent | 1634e969189ea428bc5fb9cf7d70bb314c98fc4f (diff) | |
parent | 04380c651a2ff0d1495822321d2b7668dcd02537 (diff) | |
download | u-boot-imx-9c748e02d99476e6a08d55eadfd8776edffe1e2e.zip u-boot-imx-9c748e02d99476e6a08d55eadfd8776edffe1e2e.tar.gz u-boot-imx-9c748e02d99476e6a08d55eadfd8776edffe1e2e.tar.bz2 |
Merge branch 'next' of git://git.denx.de/u-boot-mips
Diffstat (limited to 'arch/mips/cpu/u-boot.lds')
-rw-r--r-- | arch/mips/cpu/u-boot.lds | 57 |
1 files changed, 47 insertions, 10 deletions
diff --git a/arch/mips/cpu/u-boot.lds b/arch/mips/cpu/u-boot.lds index 37c9d23..10513ab 100644 --- a/arch/mips/cpu/u-boot.lds +++ b/arch/mips/cpu/u-boot.lds @@ -52,11 +52,11 @@ SECTIONS _gp = ALIGN(16) + 0x7ff0; .got : { - __got_start = .; *(.got) - __got_end = .; } + num_got_entries = SIZEOF(.got) >> PTR_COUNT_SHIFT; + . = ALIGN(4); .sdata : { *(.sdata*) @@ -67,18 +67,55 @@ SECTIONS #include <u-boot.lst> } - uboot_end_data = .; + . = ALIGN(4); + __image_copy_end = .; - num_got_entries = (__got_end - __got_start) >> PTR_COUNT_SHIFT; + .rel.dyn : { + __rel_dyn_start = .; + *(.rel.dyn) + __rel_dyn_end = .; + } - . = ALIGN(4); - .sbss : { - *(.sbss*) + .deadcode : { + /* + * Workaround for a binutils feature (or bug?). + * + * The GNU ld from binutils puts the dynamic relocation + * entries into the .rel.dyn section. Sometimes it + * allocates more dynamic relocation entries than it needs + * and the unused slots are set to R_MIPS_NONE entries. + * + * However the size of the .rel.dyn section in the ELF + * section header does not cover the unused entries, so + * objcopy removes those during stripping. + * + * Create a small section here to avoid that. + */ + LONG(0xffffffff); } - .bss : { - *(.bss*) + .dynsym : { + *(.dynsym) + } + + .bss __rel_dyn_start (OVERLAY) : { + __bss_start = .; + *(.sbss.*) + *(.bss.*) + *(COMMON) . = ALIGN(4); + __bss_end = .; + } + + /DISCARD/ : { + *(.dynbss) + *(.dynstr) + *(.dynamic) + *(.interp) + *(.hash) + *(.gnu.*) + *(.plt) + *(.got.plt) + *(.rel.plt) } - uboot_end = .; } |