声明:本文由个人学习过程中整理而成,转载请注明出处。


链接器LD按照u-boot.lds链接脚本的规则,把所有.o文件链接在一起组成整体。


/*

 * (C) Copyright 2002

 * Gary Jennejohn, DENX Software Engineering, <gj@denx.de>

 *

 * 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

 */

 

/* 输出格式:32位ARM指令、小端模式、elf格式 */

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")

/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/


/* 平台:ARM */

OUTPUT_ARCH(arm)


/* 程序入口:_start */

ENTRY(_start)


 

SECTIONS

{

/* “.”代表当前地址 */

. = 0x00000000;


/* 4字节对齐 */

. = ALIGN(4);


/* 代码段,存放程序中的代码 */

.text      :

{

 cpu/s5pc11x/start.o(.text)

 cpu/s5pc11x/s5pc110/cpu_init.o(.text)

 board/samsung/x210/lowlevel_init.o(.text)

          cpu/s5pc11x/onenand_cp.o      (.text)                 

          cpu/s5pc11x/nand_cp.o (.text)                     

          cpu/s5pc11x/movi.o (.text) 

          common/secure_boot.o (.text) 

 common/ace_sha1.o (.text)

 cpu/s5pc11x/pmic.o (.text)

 *(.text)

}


. = ALIGN(4);

/* 只读数据段 */

.rodata : { *(.rodata) }


. = ALIGN(4);

/* 数据段,存放程序中初始化的全局变量 */

.data : { *(.data) }


. = ALIGN(4);

.got : { *(.got) }


__u_boot_cmd_start = .;

.u_boot_cmd : { *(.u_boot_cmd) }

__u_boot_cmd_end = .;


. = ALIGN(4);

.mmudata : { *(.mmudata) }


. = ALIGN(4);

/* bss段,存放程序中未初始化的全局变量 */

__bss_start = .;

.bss : { *(.bss) }

_end = .;

}