X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=arch%2Fmips%2Fcpu%2Fu-boot.lds;h=7d71c11ae4c6cfa5ff1aa22df51a20d4ceb16bc0;hb=878cd63e02f63f245182a101807186b44e20f116;hp=37c9d2364aab9a21fd7d8f8f673814ca5576021b;hpb=951c6baaf44c7fd4335b75fb92840d4e42c94927;p=oweals%2Fu-boot.git diff --git a/arch/mips/cpu/u-boot.lds b/arch/mips/cpu/u-boot.lds index 37c9d2364a..7d71c11ae4 100644 --- a/arch/mips/cpu/u-boot.lds +++ b/arch/mips/cpu/u-boot.lds @@ -2,23 +2,7 @@ * (C) Copyright 2003 * Wolfgang Denk Engineering, * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA + * SPDX-License-Identifier: GPL-2.0+ */ #if defined(CONFIG_64BIT) @@ -52,11 +36,11 @@ SECTIONS _gp = ALIGN(16) + 0x7ff0; .got : { - __got_start = .; *(.got) - __got_end = .; } + num_got_entries = SIZEOF(.got) >> PTR_COUNT_SHIFT; + . = ALIGN(4); .sdata : { *(.sdata*) @@ -64,21 +48,81 @@ SECTIONS . = ALIGN(4); .u_boot_list : { - #include + KEEP(*(SORT(.u_boot_list*))); } - uboot_end_data = .; + . = ALIGN(4); + __image_copy_end = .; + __init_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*) + .padding : { + /* + * 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*) + _end = .; + + .bss __rel_dyn_start (OVERLAY) : { + __bss_start = .; + *(.sbss.*) + *(.bss.*) + *(COMMON) . = ALIGN(4); + __bss_end = .; + } + + .dynsym _end : { + *(.dynsym) + } + + .dynbss : { + *(.dynbss) + } + + .dynstr : { + *(.dynstr) + } + + .dynamic : { + *(.dynamic) + } + + .plt : { + *(.plt) + } + + .interp : { + *(.interp) + } + + .gnu : { + *(.gnu*) + } + + .MIPS.stubs : { + *(.MIPS.stubs) + } + + .hash : { + *(.hash) } - uboot_end = .; }