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_start = .; 23 *(.text*) 24 __text_end = .; 25 } 26 27 . = ALIGN(4); 28 .rodata : { 29 *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) 30 } 31 32 . = ALIGN(4); 33 .data : { 34 *(.data*) 35 } 36 37 . = .; 38 _gp = ALIGN(16) + 0x7ff0; 39 40 .got : { 41 *(.got) 42 } 43 44 num_got_entries = SIZEOF(.got) >> PTR_COUNT_SHIFT; 45 46 . = ALIGN(4); 47 .sdata : { 48 *(.sdata*) 49 } 50 51 . = ALIGN(4); 52 .u_boot_list : { 53 KEEP(*(SORT(.u_boot_list*))); 54 } 55 56 . = ALIGN(4); 57 __image_copy_end = .; 58 __init_end = .; 59 60 .rel.dyn : { 61 __rel_dyn_start = .; 62 *(.rel.dyn) 63 __rel_dyn_end = .; 64 } 65 66 .padding : { 67 /* 68 * Workaround for a binutils feature (or bug?). 69 * 70 * The GNU ld from binutils puts the dynamic relocation 71 * entries into the .rel.dyn section. Sometimes it 72 * allocates more dynamic relocation entries than it needs 73 * and the unused slots are set to R_MIPS_NONE entries. 74 * 75 * However the size of the .rel.dyn section in the ELF 76 * section header does not cover the unused entries, so 77 * objcopy removes those during stripping. 78 * 79 * Create a small section here to avoid that. 80 */ 81 LONG(0xFFFFFFFF) 82 } 83 84 _end = .; 85 86 .bss __rel_dyn_start (OVERLAY) : { 87 __bss_start = .; 88 *(.sbss.*) 89 *(.bss.*) 90 *(COMMON) 91 . = ALIGN(4); 92 __bss_end = .; 93 } 94 95 .dynsym _end : { 96 *(.dynsym) 97 } 98 99 .dynbss : { 100 *(.dynbss) 101 } 102 103 .dynstr : { 104 *(.dynstr) 105 } 106 107 .dynamic : { 108 *(.dynamic) 109 } 110 111 .plt : { 112 *(.plt) 113 } 114 115 .interp : { 116 *(.interp) 117 } 118 119 .gnu : { 120 *(.gnu*) 121 } 122 123 .MIPS.stubs : { 124 *(.MIPS.stubs) 125 } 126 127 .hash : { 128 *(.hash) 129 } 130} 131