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:
parent
b149c4c399
commit
79fd7e649e
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue