From: Lukas Schwaighofer <lukas@schwaighofer.name>
Date: Sat, 18 Aug 2018 16:56:35 +0200
Subject: Force the linker to put all sections into a single PT_LOAD segment

This is required when using binutils >= 2.31 which writes two PT_LOAD segments
by default. This is not supported by the wrapper.c script used to convert the
shared object into an elf binary.

Forwarded: https://www.syslinux.org/archives/2018-August/026167.html
[yann.morin.1998@free.fr:
  - grab from the Debian package
  - https://salsa.debian.org/images-team/syslinux/-/blob/fa1349f1f8e5f5d6307e589f02c0a679031d1c7f/debian/patches/0017-single-load-segment.patch
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Upstream: reported https://www.syslinux.org/archives/2018-August/026167.html
Upstream: acknowledged https://wiki.syslinux.org/wiki/index.php?title=Building
---
 efi/i386/syslinux.ld   | 37 +++++++++++++++++++++----------------
 efi/x86_64/syslinux.ld | 37 +++++++++++++++++++++----------------
 2 files changed, 42 insertions(+), 32 deletions(-)

diff --git a/efi/i386/syslinux.ld b/efi/i386/syslinux.ld
index bab3fc7..19c1647 100644
--- a/efi/i386/syslinux.ld
+++ b/efi/i386/syslinux.ld
@@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
 OUTPUT_ARCH(i386)
 ENTRY(_start)

+PHDRS
+{
+	all PT_LOAD ;
+}
+
 SECTIONS
 {
 	. = 0;
@@ -31,7 +36,7 @@ SECTIONS
 		*(.text)
 		*(.text.*)
 		__text_end = .;
-	}
+	} :all

 	. = ALIGN(16);

@@ -40,7 +45,7 @@ SECTIONS
 		*(.rodata)
 		*(.rodata.*)
 		__rodata_end = .;
-	}
+	} :all

 	. = ALIGN(4);

@@ -49,14 +54,14 @@ SECTIONS
 		KEEP (*(SORT(.ctors.*)))
 		KEEP (*(.ctors))
 		__ctors_end = .;
-	}
+	} :all

 	.dtors : {
 		__dtors_start = .;
 		KEEP (*(SORT(.dtors.*)))
 		KEEP (*(.dtors))
 		__dtors_end = .;
-	}
+	} :all

 	. = ALIGN(4096);
 	.rel : {
@@ -64,7 +69,7 @@ SECTIONS
 		*(.rel.data)
 		*(.rel.data.*)
 		*(.rel.ctors)
-	}
+	} :all

 	. = ALIGN(4);

@@ -72,14 +77,14 @@ SECTIONS
 		__gnu_hash_start = .;
 		*(.gnu.hash)
 		__gnu_hash_end = .;
-	}
+	} :all


 	.dynsym : {
 		__dynsym_start = .;
 		*(.dynsym)
 		__dynsym_end = .;
-	}
+	} :all

 	. = ALIGN(4);

@@ -87,7 +92,7 @@ SECTIONS
 		__dynstr_start = .;
 		*(.dynstr)
 		__dynstr_end = .;
-	}
+	} :all

 	. = ALIGN(4);

@@ -104,7 +109,7 @@ SECTIONS
 		KEEP (*(.got.plt))
 		KEEP (*(.got))
 		__got_end = .;
-	}
+	} :all

 	. = ALIGN(4);

@@ -112,7 +117,7 @@ SECTIONS
 		__dynamic_start = .;
 		*(.dynamic)
 		__dynamic_end = .;
-	}
+	} :all

 	. = ALIGN(16);

@@ -122,19 +127,19 @@ SECTIONS
 		*(.data.*)
 		*(.lowmem)
 		__data_end = .;
-	}
+	} :all

 	.reloc : {
 		*(.reloc)
-	}
+	} :all

 	.symtab : {
 		*(.symtab)
-	}
+	} :all

 	.strtab : {
 		*(.strtab)
-	}
+	} :all

 	.bss (NOLOAD) : {
 		/* the EFI loader doesn't seem to like a .bss section,
@@ -148,7 +153,7 @@ SECTIONS
 		__bss_end = .;
 		*(.sbss)
 		*(.scommon)
-	}
+	} :all
 	__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
 	__bss_dwords = (__bss_len + 3) >> 2;

@@ -161,7 +166,7 @@ SECTIONS
 		*(.hugebss)
 		*(.hugebss.*)
 		__hugebss_end = .;
-	}
+	} :all

 	_end = .;

diff --git a/efi/x86_64/syslinux.ld b/efi/x86_64/syslinux.ld
index 450641c..a2c124f 100644
--- a/efi/x86_64/syslinux.ld
+++ b/efi/x86_64/syslinux.ld
@@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
 OUTPUT_ARCH(i386:x86-64)
 ENTRY(_start)

+PHDRS
+{
+	all PT_LOAD ;
+}
+
 SECTIONS
 {
 	. = 0;
@@ -31,7 +36,7 @@ SECTIONS
 		*(.text)
 		*(.text.*)
 		__text_end = .;
-	}
+	} :all

 	. = ALIGN(16);

@@ -40,7 +45,7 @@ SECTIONS
 		*(.rodata)
 		*(.rodata.*)
 		__rodata_end = .;
-	}
+	} :all

 	. = ALIGN(4);

@@ -49,14 +54,14 @@ SECTIONS
 		KEEP (*(SORT(.ctors.*)))
 		KEEP (*(.ctors))
 		__ctors_end = .;
-	}
+	} :all

 	.dtors : {
 		__dtors_start = .;
 		KEEP (*(SORT(.dtors.*)))
 		KEEP (*(.dtors))
 		__dtors_end = .;
-	}
+	} :all

 	. = ALIGN(4096);
 	.rel : {
@@ -64,7 +69,7 @@ SECTIONS
 		*(.rel.data)
 		*(.rel.data.*)
 		*(.rel.ctors)
-	}
+	} :all

 	. = ALIGN(4);

@@ -72,14 +77,14 @@ SECTIONS
 		__gnu_hash_start = .;
 		*(.gnu.hash)
 		__gnu_hash_end = .;
-	}
+	} :all


 	.dynsym : {
 		__dynsym_start = .;
 		*(.dynsym)
 		__dynsym_end = .;
-	}
+	} :all

 	. = ALIGN(4);

@@ -87,7 +92,7 @@ SECTIONS
 		__dynstr_start = .;
 		*(.dynstr)
 		__dynstr_end = .;
-	}
+	} :all

 	. = ALIGN(4);

@@ -104,7 +109,7 @@ SECTIONS
 		KEEP (*(.got.plt))
 		KEEP (*(.got))
 		__got_end = .;
-	}
+	} :all

 	. = ALIGN(4);

@@ -112,7 +117,7 @@ SECTIONS
 		__dynamic_start = .;
 		*(.dynamic)
 		__dynamic_end = .;
-	}
+	} :all

 	. = ALIGN(16);

@@ -122,19 +127,19 @@ SECTIONS
 		*(.data.*)
 		*(.lowmem)
 		__data_end = .;
-	}
+	} :all

 	.reloc : {
 		*(.reloc)
-	}
+	} :all

 	.symtab : {
 		*(.symtab)
-	}
+	} :all

 	.strtab : {
 		*(.strtab)
-	}
+	} :all

 	.bss (NOLOAD) : {
 		/* the EFI loader doesn't seem to like a .bss section,
@@ -148,7 +153,7 @@ SECTIONS
 		__bss_end = .;
 		*(.sbss)
 		*(.scommon)
-	}
+	} :all
 	__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
 	__bss_dwords = (__bss_len + 3) >> 2;

@@ -161,7 +166,7 @@ SECTIONS
 		*(.hugebss)
 		*(.hugebss.*)
 		__hugebss_end = .;
-	}
+	} :all

 	_end = .;

