Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

efi.lds 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. /* -*- sh -*- */
  2. /*
  3. * Linker script for EFI images
  4. *
  5. */
  6. EXTERN ( efi_entry )
  7. SECTIONS {
  8. /* The file starts at a virtual address of zero, and sections are
  9. * contiguous. Each section is aligned to at least _max_align,
  10. * which defaults to 32. Load addresses are equal to virtual
  11. * addresses.
  12. */
  13. . = 0;
  14. PROVIDE ( _max_align = 32 );
  15. /*
  16. * The prefix
  17. *
  18. */
  19. .prefix : {
  20. _prefix = .;
  21. *(.prefix)
  22. *(.prefix.*)
  23. _mprefix = .;
  24. } .prefix_bss (NOLOAD) : {
  25. _eprefix = .;
  26. }
  27. _prefix_filesz = ABSOLUTE ( _mprefix - _prefix );
  28. _prefix_memsz = ABSOLUTE ( _eprefix - _prefix );
  29. /*
  30. * The text section
  31. *
  32. */
  33. . = ALIGN ( _max_align );
  34. .text : {
  35. _text = .;
  36. *(.text)
  37. *(.text.*)
  38. _mtext = .;
  39. } .text_bss (NOLOAD) : {
  40. _etext = .;
  41. }
  42. _text_filesz = ABSOLUTE ( _mtext - _text );
  43. _text_memsz = ABSOLUTE ( _etext - _text );
  44. /*
  45. * The rodata section
  46. *
  47. */
  48. . = ALIGN ( _max_align );
  49. .rodata : {
  50. _rodata = .;
  51. *(.rodata)
  52. *(.rodata.*)
  53. _mrodata = .;
  54. } .rodata_bss (NOLOAD) : {
  55. _erodata = .;
  56. }
  57. _rodata_filesz = ABSOLUTE ( _mrodata - _rodata );
  58. _rodata_memsz = ABSOLUTE ( _erodata - _rodata );
  59. /*
  60. * The data section
  61. *
  62. */
  63. . = ALIGN ( _max_align );
  64. .data : {
  65. _data = .;
  66. *(.data)
  67. *(.data.*)
  68. *(SORT(.tbl.*)) /* Various tables. See include/tables.h */
  69. /* EFI seems to not support proper bss sections */
  70. *(.bss)
  71. *(.bss.*)
  72. *(COMMON)
  73. *(.stack)
  74. *(.stack.*)
  75. _mdata = .;
  76. } .data_bss (NOLOAD) : {
  77. _edata = .;
  78. }
  79. _data_filesz = ABSOLUTE ( _mdata - _data );
  80. _data_memsz = ABSOLUTE ( _edata - _data );
  81. /*
  82. * The bss section
  83. *
  84. */
  85. . = ALIGN ( _max_align );
  86. .bss : {
  87. _bss = .;
  88. /* EFI seems to not support proper bss sections */
  89. _mbss = .;
  90. } .bss_bss (NOLOAD) : {
  91. _ebss = .;
  92. }
  93. _bss_filesz = ABSOLUTE ( _mbss - _bss );
  94. _bss_memsz = ABSOLUTE ( _ebss - _bss );
  95. /*
  96. * The reloc section
  97. *
  98. */
  99. . = ALIGN ( _max_align );
  100. .reloc : {
  101. _reloc = .;
  102. /* Provide some dummy contents to force ld to include this
  103. * section. It will be created by the efilink utility.
  104. */
  105. . += 1;
  106. _mreloc = .;
  107. } .reloc_bss (NOLOAD) : {
  108. _ereloc = .;
  109. }
  110. _reloc_filesz = ABSOLUTE ( _mreloc - _reloc );
  111. _reloc_memsz = ABSOLUTE ( _ereloc - _reloc );
  112. _filesz = ABSOLUTE ( . );
  113. /*
  114. * Weak symbols that need zero values if not otherwise defined
  115. *
  116. */
  117. .weak 0x0 : {
  118. _weak = .;
  119. *(.weak)
  120. _eweak = .;
  121. }
  122. _assert = ASSERT ( ( _weak == _eweak ), ".weak is non-zero length" );
  123. /*
  124. * Dispose of the comment and note sections to make the link map
  125. * easier to read
  126. *
  127. */
  128. /DISCARD/ : {
  129. *(.comment)
  130. *(.note)
  131. }
  132. /*
  133. * Load address calculations.
  134. *
  135. */
  136. _prefix_lma = ABSOLUTE ( _prefix );
  137. _text_lma = ABSOLUTE ( _text );
  138. _rodata_lma = ABSOLUTE ( _rodata );
  139. _data_lma = ABSOLUTE ( _data );
  140. _bss_lma = ABSOLUTE ( _bss );
  141. _reloc_lma = ABSOLUTE ( _reloc );
  142. /*
  143. * Load addresses required by the prefix
  144. *
  145. */
  146. efi_entry_lma = ABSOLUTE ( efi_entry );
  147. debugdir_lma = ABSOLUTE ( debugdir );
  148. codeview_rsds_lma = ABSOLUTE ( codeview_rsds );
  149. }