1/* 2 * (C) Copyright 2003 3 * Wolfgang Denk Engineering, <wd@denx.de> 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 8#if defined(CONFIG_64BIT) 9#define PTR_COUNT_SHIFT 3 10#else 11#define PTR_COUNT_SHIFT 2 12#endif 13 14OUTPUT_ARCH(mips) 15ENTRY(_start) 16SECTIONS 17{ 18 . = 0x00000000; 19 20 . = ALIGN(4); 21 .text : { 22 *(.text*) 23 } 24 25 . = ALIGN(4); 26 .rodata : { 27 *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) 28 } 29 30 . = ALIGN(4); 31 .data : { 32 *(.data*) 33 } 34 35 . = .; 36 _gp = ALIGN(16) + 0x7ff0; 37 38 .got : { 39 *(.got) 40 } 41 42 num_got_entries = SIZEOF(.got) >> PTR_COUNT_SHIFT; 43 44 . = ALIGN(4); 45 .sdata : { 46 *(.sdata*) 47 } 48 49 . = ALIGN(4); 50 .u_boot_list : { 51 KEEP(*(SORT(.u_boot_list*))); 52 } 53 54 . = ALIGN(4); 55 __image_copy_end = .; 56 57 .rel.dyn : { 58 __rel_dyn_start = .; 59 *(.rel.dyn) 60 __rel_dyn_end = .; 61 } 62 63 .deadcode : { 64 /* 65 * Workaround for a binutils feature (or bug?). 66 * 67 * The GNU ld from binutils puts the dynamic relocation 68 * entries into the .rel.dyn section. Sometimes it 69 * allocates more dynamic relocation entries than it needs 70 * and the unused slots are set to R_MIPS_NONE entries. 71 * 72 * However the size of the .rel.dyn section in the ELF 73 * section header does not cover the unused entries, so 74 * objcopy removes those during stripping. 75 * 76 * Create a small section here to avoid that. 77 */ 78 LONG(0xffffffff); 79 } 80 81 .dynsym : { 82 *(.dynsym) 83 } 84 85 .bss __rel_dyn_start (OVERLAY) : { 86 __bss_start = .; 87 *(.sbss.*) 88 *(.bss.*) 89 *(COMMON) 90 . = ALIGN(4); 91 __bss_end = .; 92 } 93 94 /DISCARD/ : { 95 *(.dynbss) 96 *(.dynstr) 97 *(.dynamic) 98 *(.interp) 99 *(.hash) 100 *(.gnu.*) 101 *(.plt) 102 *(.got.plt) 103 *(.rel.plt) 104 } 105} 106