link.lds 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
  2. OUTPUT_ARCH(arm)
  3. ENTRY(_boot)
  4. SECTIONS
  5. {
  6. . = 0x80080000;
  7. .text :
  8. {
  9. *(.boot)
  10. . = ALIGN(64);
  11. *(.vectors)
  12. *(.text)
  13. *(.text.*)
  14. /* section information for utest */
  15. . = ALIGN(4);
  16. __rt_utest_tc_tab_start = .;
  17. KEEP(*(UtestTcTab))
  18. __rt_utest_tc_tab_end = .;
  19. /* section information for finsh shell */
  20. . = ALIGN(4);
  21. __fsymtab_start = .;
  22. KEEP(*(FSymTab))
  23. __fsymtab_end = .;
  24. . = ALIGN(4);
  25. __vsymtab_start = .;
  26. KEEP(*(VSymTab))
  27. __vsymtab_end = .;
  28. . = ALIGN(4);
  29. /* section information for modules */
  30. . = ALIGN(4);
  31. __rtmsymtab_start = .;
  32. KEEP(*(RTMSymTab))
  33. __rtmsymtab_end = .;
  34. /* section information for initialization */
  35. . = ALIGN(4);
  36. __rt_init_start = .;
  37. KEEP(*(SORT(.rti_fn*)))
  38. __rt_init_end = .;
  39. } =0
  40. __text_end = .;
  41. .ARM.exidx :
  42. {
  43. __exidx_start = .;
  44. *(.ARM.exidx* .gnu.linkonce.armexidx.*)
  45. __exidx_end = .;
  46. }
  47. __rodata_start = .;
  48. .rodata : { *(.rodata) *(.rodata.*) }
  49. __rodata_end = .;
  50. . = ALIGN(4);
  51. .ctors :
  52. {
  53. PROVIDE(__ctors_start__ = .);
  54. /* new GCC version uses .init_array */
  55. KEEP(*(SORT(.init_array.*)))
  56. KEEP(*(.init_array))
  57. PROVIDE(__ctors_end__ = .);
  58. }
  59. .dtors :
  60. {
  61. PROVIDE(__dtors_start__ = .);
  62. KEEP(*(SORT(.dtors.*)))
  63. KEEP(*(.dtors))
  64. PROVIDE(__dtors_end__ = .);
  65. }
  66. . = ALIGN(16 * 1024);
  67. .l1_page_table :
  68. {
  69. __l1_page_table_start = .;
  70. . += 16K;
  71. }
  72. . = ALIGN(8);
  73. __data_start = .;
  74. .data :
  75. {
  76. *(.data)
  77. *(.data.*)
  78. }
  79. __data_end = .;
  80. . = ALIGN(8);
  81. __bss_start = .;
  82. .bss :
  83. {
  84. *(.bss)
  85. *(.bss.*)
  86. *(COMMON)
  87. . = ALIGN(4);
  88. }
  89. . = ALIGN(4);
  90. __bss_end = .;
  91. .heap :
  92. {
  93. . = ALIGN(8);
  94. __end__ = .;
  95. PROVIDE(end = .);
  96. __HeapBase = .;
  97. . += 0x400;
  98. __HeapLimit = .;
  99. __heap_limit = .; /* Add for _sbrk */
  100. }
  101. /* Stabs debugging sections. */
  102. .stab 0 : { *(.stab) }
  103. .stabstr 0 : { *(.stabstr) }
  104. .stab.excl 0 : { *(.stab.excl) }
  105. .stab.exclstr 0 : { *(.stab.exclstr) }
  106. .stab.index 0 : { *(.stab.index) }
  107. .stab.indexstr 0 : { *(.stab.indexstr) }
  108. .comment 0 : { *(.comment) }
  109. _end = .;
  110. }