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