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_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
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue