1cb5dbca8SGabor Juhos/* 2cb5dbca8SGabor Juhos * (C) Copyright 2003 3cb5dbca8SGabor Juhos * Wolfgang Denk Engineering, <wd@denx.de> 4cb5dbca8SGabor Juhos * 5cb5dbca8SGabor Juhos * See file CREDITS for list of people who contributed to this 6cb5dbca8SGabor Juhos * project. 7cb5dbca8SGabor Juhos * 8cb5dbca8SGabor Juhos * This program is free software; you can redistribute it and/or 9cb5dbca8SGabor Juhos * modify it under the terms of the GNU General Public License as 10cb5dbca8SGabor Juhos * published by the Free Software Foundation; either version 2 of 11cb5dbca8SGabor Juhos * the License, or (at your option) any later version. 12cb5dbca8SGabor Juhos * 13cb5dbca8SGabor Juhos * This program is distributed in the hope that it will be useful, 14cb5dbca8SGabor Juhos * but WITHOUT ANY WARRANTY; without even the implied warranty of 15cb5dbca8SGabor Juhos * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16cb5dbca8SGabor Juhos * GNU General Public License for more details. 17cb5dbca8SGabor Juhos * 18cb5dbca8SGabor Juhos * You should have received a copy of the GNU General Public License 19cb5dbca8SGabor Juhos * along with this program; if not, write to the Free Software 20cb5dbca8SGabor Juhos * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21cb5dbca8SGabor Juhos * MA 02111-1307 USA 22cb5dbca8SGabor Juhos */ 23cb5dbca8SGabor Juhos 24cb5dbca8SGabor Juhos#if defined(CONFIG_64BIT) 25cb5dbca8SGabor Juhos#define PTR_COUNT_SHIFT 3 26cb5dbca8SGabor Juhos#else 27cb5dbca8SGabor Juhos#define PTR_COUNT_SHIFT 2 28cb5dbca8SGabor Juhos#endif 29cb5dbca8SGabor Juhos 30cb5dbca8SGabor JuhosOUTPUT_ARCH(mips) 31cb5dbca8SGabor JuhosENTRY(_start) 32cb5dbca8SGabor JuhosSECTIONS 33cb5dbca8SGabor Juhos{ 34cb5dbca8SGabor Juhos . = 0x00000000; 35cb5dbca8SGabor Juhos 36cb5dbca8SGabor Juhos . = ALIGN(4); 37cb5dbca8SGabor Juhos .text : { 38cb5dbca8SGabor Juhos *(.text*) 39cb5dbca8SGabor Juhos } 40cb5dbca8SGabor Juhos 41cb5dbca8SGabor Juhos . = ALIGN(4); 42cb5dbca8SGabor Juhos .rodata : { 43cb5dbca8SGabor Juhos *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) 44cb5dbca8SGabor Juhos } 45cb5dbca8SGabor Juhos 46cb5dbca8SGabor Juhos . = ALIGN(4); 47cb5dbca8SGabor Juhos .data : { 48cb5dbca8SGabor Juhos *(.data*) 49cb5dbca8SGabor Juhos } 50cb5dbca8SGabor Juhos 51cb5dbca8SGabor Juhos . = .; 52cb5dbca8SGabor Juhos _gp = ALIGN(16) + 0x7ff0; 53cb5dbca8SGabor Juhos 54cb5dbca8SGabor Juhos .got : { 55cb5dbca8SGabor Juhos *(.got) 56cb5dbca8SGabor Juhos } 57cb5dbca8SGabor Juhos 5845397816SGabor Juhos num_got_entries = SIZEOF(.got) >> PTR_COUNT_SHIFT; 5945397816SGabor Juhos 60cb5dbca8SGabor Juhos . = ALIGN(4); 61cb5dbca8SGabor Juhos .sdata : { 62cb5dbca8SGabor Juhos *(.sdata*) 63cb5dbca8SGabor Juhos } 64cb5dbca8SGabor Juhos 65cb5dbca8SGabor Juhos . = ALIGN(4); 66cb5dbca8SGabor Juhos .u_boot_list : { 67cb5dbca8SGabor Juhos #include <u-boot.lst> 68cb5dbca8SGabor Juhos } 69cb5dbca8SGabor Juhos 70cb5dbca8SGabor Juhos . = ALIGN(4); 713420bf1cSDaniel Schwierzeck __image_copy_end = .; 723420bf1cSDaniel Schwierzeck 73*0ba8926eSGabor Juhos .rel.dyn : { 74*0ba8926eSGabor Juhos __rel_dyn_start = .; 75*0ba8926eSGabor Juhos *(.rel.dyn) 76*0ba8926eSGabor Juhos __rel_dyn_end = .; 77*0ba8926eSGabor Juhos } 78*0ba8926eSGabor Juhos 79*0ba8926eSGabor Juhos .deadcode : { 80*0ba8926eSGabor Juhos /* 81*0ba8926eSGabor Juhos * Workaround for a binutils feature (or bug?). 82*0ba8926eSGabor Juhos * 83*0ba8926eSGabor Juhos * The GNU ld from binutils puts the dynamic relocation 84*0ba8926eSGabor Juhos * entries into the .rel.dyn section. Sometimes it 85*0ba8926eSGabor Juhos * allocates more dynamic relocation entries than it needs 86*0ba8926eSGabor Juhos * and the unused slots are set to R_MIPS_NONE entries. 87*0ba8926eSGabor Juhos * 88*0ba8926eSGabor Juhos * However the size of the .rel.dyn section in the ELF 89*0ba8926eSGabor Juhos * section header does not cover the unused entries, so 90*0ba8926eSGabor Juhos * objcopy removes those during stripping. 91*0ba8926eSGabor Juhos * 92*0ba8926eSGabor Juhos * Create a small section here to avoid that. 93*0ba8926eSGabor Juhos */ 94*0ba8926eSGabor Juhos LONG(0xffffffff); 95*0ba8926eSGabor Juhos } 96*0ba8926eSGabor Juhos 97*0ba8926eSGabor Juhos .dynsym : { 98*0ba8926eSGabor Juhos *(.dynsym) 99*0ba8926eSGabor Juhos } 100*0ba8926eSGabor Juhos 101*0ba8926eSGabor Juhos .bss __rel_dyn_start (OVERLAY) : { 102a52852c5SDaniel Schwierzeck __bss_start = .; 103a52852c5SDaniel Schwierzeck *(.sbss.*) 104a52852c5SDaniel Schwierzeck *(.bss.*) 105a52852c5SDaniel Schwierzeck *(COMMON) 106a52852c5SDaniel Schwierzeck . = ALIGN(4); 107a52852c5SDaniel Schwierzeck __bss_end = .; 108cb5dbca8SGabor Juhos } 109*0ba8926eSGabor Juhos 110*0ba8926eSGabor Juhos /DISCARD/ : { 111*0ba8926eSGabor Juhos *(.dynbss) 112*0ba8926eSGabor Juhos *(.dynstr) 113*0ba8926eSGabor Juhos *(.dynamic) 114*0ba8926eSGabor Juhos *(.interp) 115*0ba8926eSGabor Juhos *(.hash) 116*0ba8926eSGabor Juhos *(.gnu.*) 117*0ba8926eSGabor Juhos *(.plt) 118*0ba8926eSGabor Juhos *(.got.plt) 119*0ba8926eSGabor Juhos *(.rel.plt) 120*0ba8926eSGabor Juhos } 121cb5dbca8SGabor Juhos} 122