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 __init_end = .; 57 58 .rel.dyn : { 59 __rel_dyn_start = .; 60 *(.rel.dyn) 61 __rel_dyn_end = .; 62 } 63 64 .padding : { 65 /* 66 * Workaround for a binutils feature (or bug?). 67 * 68 * The GNU ld from binutils puts the dynamic relocation 69 * entries into the .rel.dyn section. Sometimes it 70 * allocates more dynamic relocation entries than it needs 71 * and the unused slots are set to R_MIPS_NONE entries. 72 * 73 * However the size of the .rel.dyn section in the ELF 74 * section header does not cover the unused entries, so 75 * objcopy removes those during stripping. 76 * 77 * Create a small section here to avoid that. 78 */ 79 LONG(0xFFFFFFFF) 80 } 81 82 _end = .; 83 84 .bss __rel_dyn_start (OVERLAY) : { 85 __bss_start = .; 86 *(.sbss.*) 87 *(.bss.*) 88 *(COMMON) 89 . = ALIGN(4); 90 __bss_end = .; 91 } 92 93 .dynsym _end : { 94 *(.dynsym) 95 } 96 97 .dynbss : { 98 *(.dynbss) 99 } 100 101 .dynstr : { 102 *(.dynstr) 103 } 104 105 .dynamic : { 106 *(.dynamic) 107 } 108 109 .plt : { 110 *(.plt) 111 } 112 113 .interp : { 114 *(.interp) 115 } 116 117 .gnu : { 118 *(.gnu*) 119 } 120 121 .MIPS.stubs : { 122 *(.MIPS.stubs) 123 } 124 125 .hash : { 126 *(.hash) 127 } 128} 129