MIPS: always keep all sections in u-boot ELF binary.

Always keep all sections in u-boot ELF binary. Move all unneeded
sections after _end to avoid allocating space in the final binary.
Also remove .deadcode section which is now obsolete.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
This commit is contained in:
Daniel Schwierzeck 2013-10-11 17:46:59 +02:00
parent b149c4c399
commit 79fd7e649e
2 changed files with 33 additions and 28 deletions

View File

@ -52,4 +52,5 @@ PLATFORM_CPPFLAGS += -msoft-float
PLATFORM_LDFLAGS += -G 0 -static -n -nostdlib $(ENDIANNESS) PLATFORM_LDFLAGS += -G 0 -static -n -nostdlib $(ENDIANNESS)
PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
LDFLAGS_FINAL += --gc-sections -pie LDFLAGS_FINAL += --gc-sections -pie
OBJCOPYFLAGS += --remove-section=.dynsym OBJCOPYFLAGS += -j .text -j .rodata -j .data -j .got
OBJCOPYFLAGS += -j .u_boot_list -j .rel.dyn

View File

@ -60,27 +60,7 @@ SECTIONS
__rel_dyn_end = .; __rel_dyn_end = .;
} }
.deadcode : { _end = .;
/*
* 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);
}
.dynsym : {
*(.dynsym)
}
.bss __rel_dyn_start (OVERLAY) : { .bss __rel_dyn_start (OVERLAY) : {
__bss_start = .; __bss_start = .;
@ -91,15 +71,39 @@ SECTIONS
__bss_end = .; __bss_end = .;
} }
/DISCARD/ : { .dynsym _end : {
*(.dynsym)
}
.dynbss : {
*(.dynbss) *(.dynbss)
}
.dynstr : {
*(.dynstr) *(.dynstr)
}
.dynamic : {
*(.dynamic) *(.dynamic)
*(.interp) }
*(.hash)
*(.gnu.*) .plt : {
*(.plt) *(.plt)
*(.got.plt) }
*(.rel.plt)
.interp : {
*(.interp)
}
.gnu : {
*(.gnu*)
}
.MIPS.stubs : {
*(.MIPS.stubs)
}
.hash : {
*(.hash)
} }
} }