0018-single-load-segment.patch 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. From: Lukas Schwaighofer <lukas@schwaighofer.name>
  2. Date: Sat, 18 Aug 2018 16:56:35 +0200
  3. Subject: Force the linker to put all sections into a single PT_LOAD segment
  4. This is required when using binutils >= 2.31 which writes two PT_LOAD segments
  5. by default. This is not supported by the wrapper.c script used to convert the
  6. shared object into an elf binary.
  7. Forwarded: https://www.syslinux.org/archives/2018-August/026167.html
  8. [yann.morin.1998@free.fr:
  9. - grab from the Debian package
  10. - https://salsa.debian.org/images-team/syslinux/-/blob/fa1349f1f8e5f5d6307e589f02c0a679031d1c7f/debian/patches/0017-single-load-segment.patch
  11. ]
  12. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
  13. Upstream: reported https://www.syslinux.org/archives/2018-August/026167.html
  14. Upstream: acknowledged https://wiki.syslinux.org/wiki/index.php?title=Building
  15. ---
  16. efi/i386/syslinux.ld | 37 +++++++++++++++++++++----------------
  17. efi/x86_64/syslinux.ld | 37 +++++++++++++++++++++----------------
  18. 2 files changed, 42 insertions(+), 32 deletions(-)
  19. diff --git a/efi/i386/syslinux.ld b/efi/i386/syslinux.ld
  20. index bab3fc7..19c1647 100644
  21. --- a/efi/i386/syslinux.ld
  22. +++ b/efi/i386/syslinux.ld
  23. @@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
  24. OUTPUT_ARCH(i386)
  25. ENTRY(_start)
  26. +PHDRS
  27. +{
  28. + all PT_LOAD ;
  29. +}
  30. +
  31. SECTIONS
  32. {
  33. . = 0;
  34. @@ -31,7 +36,7 @@ SECTIONS
  35. *(.text)
  36. *(.text.*)
  37. __text_end = .;
  38. - }
  39. + } :all
  40. . = ALIGN(16);
  41. @@ -40,7 +45,7 @@ SECTIONS
  42. *(.rodata)
  43. *(.rodata.*)
  44. __rodata_end = .;
  45. - }
  46. + } :all
  47. . = ALIGN(4);
  48. @@ -49,14 +54,14 @@ SECTIONS
  49. KEEP (*(SORT(.ctors.*)))
  50. KEEP (*(.ctors))
  51. __ctors_end = .;
  52. - }
  53. + } :all
  54. .dtors : {
  55. __dtors_start = .;
  56. KEEP (*(SORT(.dtors.*)))
  57. KEEP (*(.dtors))
  58. __dtors_end = .;
  59. - }
  60. + } :all
  61. . = ALIGN(4096);
  62. .rel : {
  63. @@ -64,7 +69,7 @@ SECTIONS
  64. *(.rel.data)
  65. *(.rel.data.*)
  66. *(.rel.ctors)
  67. - }
  68. + } :all
  69. . = ALIGN(4);
  70. @@ -72,14 +77,14 @@ SECTIONS
  71. __gnu_hash_start = .;
  72. *(.gnu.hash)
  73. __gnu_hash_end = .;
  74. - }
  75. + } :all
  76. .dynsym : {
  77. __dynsym_start = .;
  78. *(.dynsym)
  79. __dynsym_end = .;
  80. - }
  81. + } :all
  82. . = ALIGN(4);
  83. @@ -87,7 +92,7 @@ SECTIONS
  84. __dynstr_start = .;
  85. *(.dynstr)
  86. __dynstr_end = .;
  87. - }
  88. + } :all
  89. . = ALIGN(4);
  90. @@ -104,7 +109,7 @@ SECTIONS
  91. KEEP (*(.got.plt))
  92. KEEP (*(.got))
  93. __got_end = .;
  94. - }
  95. + } :all
  96. . = ALIGN(4);
  97. @@ -112,7 +117,7 @@ SECTIONS
  98. __dynamic_start = .;
  99. *(.dynamic)
  100. __dynamic_end = .;
  101. - }
  102. + } :all
  103. . = ALIGN(16);
  104. @@ -122,19 +127,19 @@ SECTIONS
  105. *(.data.*)
  106. *(.lowmem)
  107. __data_end = .;
  108. - }
  109. + } :all
  110. .reloc : {
  111. *(.reloc)
  112. - }
  113. + } :all
  114. .symtab : {
  115. *(.symtab)
  116. - }
  117. + } :all
  118. .strtab : {
  119. *(.strtab)
  120. - }
  121. + } :all
  122. .bss (NOLOAD) : {
  123. /* the EFI loader doesn't seem to like a .bss section,
  124. @@ -148,7 +153,7 @@ SECTIONS
  125. __bss_end = .;
  126. *(.sbss)
  127. *(.scommon)
  128. - }
  129. + } :all
  130. __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
  131. __bss_dwords = (__bss_len + 3) >> 2;
  132. @@ -161,7 +166,7 @@ SECTIONS
  133. *(.hugebss)
  134. *(.hugebss.*)
  135. __hugebss_end = .;
  136. - }
  137. + } :all
  138. _end = .;
  139. diff --git a/efi/x86_64/syslinux.ld b/efi/x86_64/syslinux.ld
  140. index 450641c..a2c124f 100644
  141. --- a/efi/x86_64/syslinux.ld
  142. +++ b/efi/x86_64/syslinux.ld
  143. @@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
  144. OUTPUT_ARCH(i386:x86-64)
  145. ENTRY(_start)
  146. +PHDRS
  147. +{
  148. + all PT_LOAD ;
  149. +}
  150. +
  151. SECTIONS
  152. {
  153. . = 0;
  154. @@ -31,7 +36,7 @@ SECTIONS
  155. *(.text)
  156. *(.text.*)
  157. __text_end = .;
  158. - }
  159. + } :all
  160. . = ALIGN(16);
  161. @@ -40,7 +45,7 @@ SECTIONS
  162. *(.rodata)
  163. *(.rodata.*)
  164. __rodata_end = .;
  165. - }
  166. + } :all
  167. . = ALIGN(4);
  168. @@ -49,14 +54,14 @@ SECTIONS
  169. KEEP (*(SORT(.ctors.*)))
  170. KEEP (*(.ctors))
  171. __ctors_end = .;
  172. - }
  173. + } :all
  174. .dtors : {
  175. __dtors_start = .;
  176. KEEP (*(SORT(.dtors.*)))
  177. KEEP (*(.dtors))
  178. __dtors_end = .;
  179. - }
  180. + } :all
  181. . = ALIGN(4096);
  182. .rel : {
  183. @@ -64,7 +69,7 @@ SECTIONS
  184. *(.rel.data)
  185. *(.rel.data.*)
  186. *(.rel.ctors)
  187. - }
  188. + } :all
  189. . = ALIGN(4);
  190. @@ -72,14 +77,14 @@ SECTIONS
  191. __gnu_hash_start = .;
  192. *(.gnu.hash)
  193. __gnu_hash_end = .;
  194. - }
  195. + } :all
  196. .dynsym : {
  197. __dynsym_start = .;
  198. *(.dynsym)
  199. __dynsym_end = .;
  200. - }
  201. + } :all
  202. . = ALIGN(4);
  203. @@ -87,7 +92,7 @@ SECTIONS
  204. __dynstr_start = .;
  205. *(.dynstr)
  206. __dynstr_end = .;
  207. - }
  208. + } :all
  209. . = ALIGN(4);
  210. @@ -104,7 +109,7 @@ SECTIONS
  211. KEEP (*(.got.plt))
  212. KEEP (*(.got))
  213. __got_end = .;
  214. - }
  215. + } :all
  216. . = ALIGN(4);
  217. @@ -112,7 +117,7 @@ SECTIONS
  218. __dynamic_start = .;
  219. *(.dynamic)
  220. __dynamic_end = .;
  221. - }
  222. + } :all
  223. . = ALIGN(16);
  224. @@ -122,19 +127,19 @@ SECTIONS
  225. *(.data.*)
  226. *(.lowmem)
  227. __data_end = .;
  228. - }
  229. + } :all
  230. .reloc : {
  231. *(.reloc)
  232. - }
  233. + } :all
  234. .symtab : {
  235. *(.symtab)
  236. - }
  237. + } :all
  238. .strtab : {
  239. *(.strtab)
  240. - }
  241. + } :all
  242. .bss (NOLOAD) : {
  243. /* the EFI loader doesn't seem to like a .bss section,
  244. @@ -148,7 +153,7 @@ SECTIONS
  245. __bss_end = .;
  246. *(.sbss)
  247. *(.scommon)
  248. - }
  249. + } :all
  250. __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
  251. __bss_dwords = (__bss_len + 3) >> 2;
  252. @@ -161,7 +166,7 @@ SECTIONS
  253. *(.hugebss)
  254. *(.hugebss.*)
  255. __hugebss_end = .;
  256. - }
  257. + } :all
  258. _end = .;