link_descriptor.ld 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. OUTPUT_ARCH(arm)
  2. ENTRY(_start)
  3. romBase = 0x00201000;
  4. bss1Base = 0x00102000;
  5. bss2Base = 0x00108C00;
  6. stackBase = 0x00200000;
  7. MEMORY {
  8. bss1 : ORIGIN = 0x00102000, LENGTH = 0x6C00
  9. rom : ORIGIN = 0x00201000, LENGTH = 0x3A000
  10. bss2 : ORIGIN = 0x00108C00, LENGTH = 0x5000
  11. stack : ORIGIN = 0x00200000, LENGTH = 0xC00
  12. }
  13. SECTIONS {
  14. /* rom region */
  15. . = romBase;
  16. .start ALIGN(4) : {
  17. *(.text.start)
  18. }
  19. . = romBase + 0x01FC;
  20. .rom_info ALIGN(4) : {
  21. *(.data.rom_info)
  22. }
  23. .text ALIGN(4) : {
  24. *(.text)
  25. *(.text.*)
  26. }
  27. .rodata ALIGN(4) : {
  28. *(.rodata)
  29. *(.rodata.*)
  30. }
  31. .data ALIGN(4) : {
  32. *(.data)
  33. *(.data.*)
  34. }
  35. .got ALIGN(4) : {
  36. *(.got)
  37. *(.got.*)
  38. }
  39. __boot_end = .;
  40. /* bss1 region */
  41. . = bss1Base;
  42. .bss1 ALIGN(16) : {
  43. _bss1_start = .;
  44. *print.o (.bss.log_sram_buf)
  45. *efi.o (.bss.gpt_sram_buf)
  46. *efi.o (.bss.gpt_sram_crc32_table)
  47. *efi.o (.bss.gpt_sram_part_info)
  48. *efi.o (.bss.gpt_sram_part_meta_info)
  49. *dramc_*.o (.bss .bss.* COMMON)
  50. /* make _bss1_end as 4 bytes alignment */
  51. . = ALIGN(4);
  52. _bss1_end = .;
  53. }
  54. ASSERT((SIZEOF(.bss1) < LENGTH(bss1)), "Error: .bss1 over size!")
  55. /* stack */
  56. . = stackBase;
  57. .stack ALIGN(4) : {
  58. _stack_start = .;
  59. *(.bss.sys_stack)
  60. _stack_end = .;
  61. }
  62. /* bss2 region */
  63. . = bss2Base;
  64. .bss2 ALIGN(16) : {
  65. _bss2_start = .;
  66. *(.bss)
  67. *(.bss.*)
  68. *(COMMON)
  69. /* make _bss2_end as 4 bytes alignment */
  70. . = ALIGN(4);
  71. _bss2_end = .;
  72. }
  73. ASSERT((SIZEOF(.bss2) < LENGTH(bss2)), "Error: .bss2 over size!")
  74. /* Clang needs .ARM.exidx, but we do not use it for debug. */
  75. /DISCARD/ : {
  76. *(.ARM.exidx* .gnu.linkonce.armexidx.*)
  77. }
  78. }