Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9463896
  • 博文数量: 1750
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 20091
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1750)

文章存档

2024年(26)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: Android平台

2013-09-22 16:49:21

参考 http://blog.csdn.net/luciferful/article/details/9371891

  1. OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")  //指定输出可执行文件是elf格式,32ARM指令,小端
  2. OUTPUT_ARCH(arm)  //指定输出可执行文件的平台为ARM
  3. ENTRY(_start)  //指定函数入口点为_startcpu/arm920t/start.S中定义
  4. SECTIONS
  5. {
  6.     . = 0x00000000; //指定可执行image文件的全局入口点,通常这个地址都放在ROM(flash)0x0位置。必须使编译器知道这个地址,通常都是修改此处来完成

  7.     . = ALIGN(4); //代码以4字节对齐
  8.     .text :  //代码段 
  9.     {
  10.         *(.__image_copy_start)  // 在 System.map 中  00000000 T __image_copy_start   00000000 T _start, 可见 __image_copy_start 等同于 _start
  11.         CPUDIR/start.o (.text*)  //代码段的第一个代码部分
  12.         *(.text*)        //其它代码部分
  13.     }

  14.     . = ALIGN(4);
  15.     .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }  //指定只读数据段

  16.     . = ALIGN(4);
  17.     .data : {         //指定读/写数据段
  18.         *(.data*)
  19.     }

  20.     . = ALIGN(4);

  21.     . = .;

  22.     . = ALIGN(4);
  23.     .u_boot_list : {  //对应原来的 U_BOOT_CMD 对于那个的段.
  24.         KEEP(*(SORT(.u_boot_list*)));
  25.     }

  26.     . = ALIGN(4);
/*
* 在 System.map 中 
    0006f52c D _u_boot_list_2_env_clbk_2_flags
    0006f534 D _u_boot_list_2_env_clbk_2_loadaddr
    0006f53c B __bss_base
    0006f53c B __bss_start
    0006f53c B monitor_flash_len
    0006f53c D __image_copy_end
    0006f53c D __rel_dyn_start
*/
  1.     .image_copy_end :  
  2.     {
  3.         *(.__image_copy_end)
  4.     }

  5.     .rel_dyn_start :  //0006f53c D __rel_dyn_start
  6.     {
  7.         *(.__rel_dyn_start)
  8.     }

  9.     .rel.dyn : {
  10.         *(.rel*)  //.rel段落保存了相对跳转的地址和相对跳转的类型
  11.     }

  12.     .rel_dyn_end : //00078874 R __rel_dyn_end
  13.     {
  14.         *(.__rel_dyn_end)
  15.     }

  16.     _end = .;  //00078874 A _end

  17.     /*
  18.      * Deprecated: this MMU section is used by pxa at present but
  19.      * should not be used by new boards/CPUs.
  20.      */
  21.     . = ALIGN(4096);
  22.     .mmutable : {
  23.         *(.mmutable)
  24.     }

  25. /*
  26.  * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c
  27.  * __bss_base and __bss_limit are for linker only (overlay ordering)
  28.  */
  29.     //保存了未初始化的全局变量的内容
  30.     .bss_start __rel_dyn_start (OVERLAY) : {  //0006f53c B __bss_start   0006f53c D __rel_dyn_start  0006f53c D __image_copy_end
  31.         KEEP(*(.__bss_start));
  32.         __bss_base = .;
  33.     }

  34.     .bss __bss_base (OVERLAY) : {  //0006f53c B __bss_base
  35.         *(.bss*)
  36.          . = ALIGN(4);
  37.          __bss_limit = .;  //000bd6a0 B __bss_limi
  38.     }

  39.     .bss_end __bss_limit (OVERLAY) : {
  40.         KEEP(*(.__bss_end));  //000bd6a0 B __bss_end
  41.     }

  42.     /DISCARD/ : { *(.dynsym) }
  43.     /DISCARD/ : { *(.dynstr*) }
  44.     /DISCARD/ : { *(.dynamic*) }
  45.     /DISCARD/ : { *(.plt*) }
  46.     /DISCARD/ : { *(.interp*) }
  47.     /DISCARD/ : { *(.gnu*) }
  48. }

阅读(4342) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~