mirror of
https://git.busybox.net/buildroot.git
synced 2024-11-23 21:43:30 +08:00
boot/syslinux: carry fix for build failures with binutils 2.31+
From a report on the syslinux mailing list [0]: The GNU linker now writes two segments of type PT_LOAD into the program header. However, this is not supported by the wrapper script that converts the shared object to an .efi executable. As per comment in that file: (...) Although there may be several LOAD program headers, only one is currently copied. A simple workaround I've found to work is to ask the linker to put everything into one PT_LOAD program header. The issue is ackowledged in the syslinux wiki page about building syslinux [1]. This page refers to various resources, of which a Debian patch [2]. This information is also referenced in #11861. Fixes: #11861 [0] https://www.syslinux.org/archives/2018-August/026167.html [1] https://wiki.syslinux.org/wiki/index.php?title=Building [2] https://salsa.debian.org/images-team/syslinux/-/blob/debian/master/debian/patches/0017-single-load-segment.patch Reported-by: Sam Lancia <sam@gpsm.co.uk> Reported-by: Meliodas <meliodasren01@gmail.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
parent
52f3793d46
commit
e53a8593b4
313
boot/syslinux/0018-single-load-segment.patch
Normal file
313
boot/syslinux/0018-single-load-segment.patch
Normal file
@ -0,0 +1,313 @@
|
||||
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 = .;
|
||||
|
Loading…
Reference in New Issue
Block a user