parent
3cddb21f27
commit
1e16eccb61
286
dont-guess-section-alignment.patch
Normal file
286
dont-guess-section-alignment.patch
Normal file
@ -0,0 +1,286 @@
|
|||||||
|
From: Sylvain Gault <sylvain.gault at gmail.com>
|
||||||
|
|
||||||
|
For the compression / decompression to succeed, the sections layout must
|
||||||
|
be the same between the virtual memory and load memory. The section
|
||||||
|
alignment was kept in sync by introducing aligment that should be
|
||||||
|
greater or equal to the actual section alignment.
|
||||||
|
|
||||||
|
This patch compute the load memory addresses of the sections so that
|
||||||
|
the layout is the same as the virtual memory addresses.
|
||||||
|
|
||||||
|
Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com>
|
||||||
|
---
|
||||||
|
core/i386/syslinux.ld | 63 ++++++++++---------------------------------------
|
||||||
|
core/x86_64/syslinux.ld | 63 ++++++++++---------------------------------------
|
||||||
|
2 files changed, 24 insertions(+), 102 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld
|
||||||
|
index 7390451..92b75b1 100644
|
||||||
|
--- a/core/i386/syslinux.ld
|
||||||
|
+++ b/core/i386/syslinux.ld
|
||||||
|
@@ -255,10 +255,9 @@ SECTIONS
|
||||||
|
. = 0x100000;
|
||||||
|
|
||||||
|
__pm_code_start = .;
|
||||||
|
+ __vma_to_lma = __pm_code_lma - __pm_code_start;
|
||||||
|
|
||||||
|
- __text_vma = .;
|
||||||
|
- __text_lma = __pm_code_lma;
|
||||||
|
- .text : AT(__text_lma) {
|
||||||
|
+ .text : AT(ADDR(.text) + __vma_to_lma) {
|
||||||
|
FILL(0x90909090)
|
||||||
|
__text_start = .;
|
||||||
|
*(.text)
|
||||||
|
@@ -266,106 +265,68 @@ SECTIONS
|
||||||
|
__text_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(32);
|
||||||
|
-
|
||||||
|
- __rodata_vma = .;
|
||||||
|
- __rodata_lma = __rodata_vma + __text_lma - __text_vma;
|
||||||
|
- .rodata : AT(__rodata_lma) {
|
||||||
|
+ .rodata : AT(ADDR(.rodata) + __vma_to_lma) {
|
||||||
|
__rodata_start = .;
|
||||||
|
*(.rodata)
|
||||||
|
*(.rodata.*)
|
||||||
|
__rodata_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __ctors_vma = .;
|
||||||
|
- __ctors_lma = __ctors_vma + __text_lma - __text_vma;
|
||||||
|
- .ctors : AT(__ctors_lma) {
|
||||||
|
+ .ctors : AT(ADDR(.ctors) + __vma_to_lma) {
|
||||||
|
__ctors_start = .;
|
||||||
|
KEEP (*(SORT(.ctors.*)))
|
||||||
|
KEEP (*(.ctors))
|
||||||
|
__ctors_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- __dtors_vma = .;
|
||||||
|
- __dtors_lma = __dtors_vma + __text_lma - __text_vma;
|
||||||
|
- .dtors : AT(__dtors_lma) {
|
||||||
|
+ .dtors : AT(ADDR(.dtors) + __vma_to_lma) {
|
||||||
|
__dtors_start = .;
|
||||||
|
KEEP (*(SORT(.dtors.*)))
|
||||||
|
KEEP (*(.dtors))
|
||||||
|
__dtors_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __dynsym_vma = .;
|
||||||
|
- __dynsym_lma = __dynsym_vma + __text_lma - __text_vma;
|
||||||
|
- .dynsym : AT(__dynsym_lma) {
|
||||||
|
+ .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) {
|
||||||
|
__dynsym_start = .;
|
||||||
|
*(.dynsym)
|
||||||
|
__dynsym_end = .;
|
||||||
|
}
|
||||||
|
__dynsym_len = __dynsym_end - __dynsym_start;
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __dynstr_vma = .;
|
||||||
|
- __dynstr_lma = __dynstr_vma + __text_lma - __text_vma;
|
||||||
|
- .dynstr : AT(__dynstr_lma) {
|
||||||
|
+ .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) {
|
||||||
|
__dynstr_start = .;
|
||||||
|
*(.dynstr)
|
||||||
|
__dynstr_end = .;
|
||||||
|
}
|
||||||
|
__dynstr_len = __dynstr_end - __dynstr_start;
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __gnu_hash_vma = .;
|
||||||
|
- __gnu_hash_lma = __gnu_hash_vma + __text_lma - __text_vma;
|
||||||
|
- .gnu.hash : AT(__gnu_hash_lma) {
|
||||||
|
+ .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) {
|
||||||
|
__gnu_hash_start = .;
|
||||||
|
*(.gnu.hash)
|
||||||
|
__gnu_hash_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __dynlink_vma = .;
|
||||||
|
- __dynlink_lma = __dynlink_vma + __text_lma - __text_vma;
|
||||||
|
- .dynlink : AT(__dynlink_lma) {
|
||||||
|
+ .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) {
|
||||||
|
__dynlink_start = .;
|
||||||
|
*(.dynlink)
|
||||||
|
__dynlink_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __got_vma = .;
|
||||||
|
- __got_lma = __got_vma + __text_lma - __text_vma;
|
||||||
|
- .got : AT(__got_lma) {
|
||||||
|
+ .got : AT(ADDR(.got) + __vma_to_lma) {
|
||||||
|
__got_start = .;
|
||||||
|
KEEP (*(.got.plt))
|
||||||
|
KEEP (*(.got))
|
||||||
|
__got_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __dynamic_vma = .;
|
||||||
|
- __dynamic_lma = __dynamic_vma + __text_lma - __text_vma;
|
||||||
|
- .dynamic : AT(__dynamic_lma) {
|
||||||
|
+ .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) {
|
||||||
|
__dynamic_start = .;
|
||||||
|
*(.dynamic)
|
||||||
|
__dynamic_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(32);
|
||||||
|
-
|
||||||
|
- __data_vma = .;
|
||||||
|
- __data_lma = __data_vma + __text_lma - __text_vma;
|
||||||
|
- .data : AT(__data_lma) {
|
||||||
|
+ .data : AT(ADDR(.data) + __vma_to_lma) {
|
||||||
|
__data_start = .;
|
||||||
|
*(.data)
|
||||||
|
*(.data.*)
|
||||||
|
diff --git a/core/x86_64/syslinux.ld b/core/x86_64/syslinux.ld
|
||||||
|
index bf815c4..70c6e00 100644
|
||||||
|
--- a/core/x86_64/syslinux.ld
|
||||||
|
+++ b/core/x86_64/syslinux.ld
|
||||||
|
@@ -255,10 +255,9 @@ SECTIONS
|
||||||
|
. = 0x100000;
|
||||||
|
|
||||||
|
__pm_code_start = .;
|
||||||
|
+ __vma_to_lma = __pm_code_lma - __pm_code_start;
|
||||||
|
|
||||||
|
- __text_vma = .;
|
||||||
|
- __text_lma = __pm_code_lma;
|
||||||
|
- .text : AT(__text_lma) {
|
||||||
|
+ .text : AT(ADDR(.text) + __vma_to_lma) {
|
||||||
|
FILL(0x90909090)
|
||||||
|
__text_start = .;
|
||||||
|
*(.text)
|
||||||
|
@@ -266,106 +265,68 @@ SECTIONS
|
||||||
|
__text_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(32);
|
||||||
|
-
|
||||||
|
- __rodata_vma = .;
|
||||||
|
- __rodata_lma = __rodata_vma + __text_lma - __text_vma;
|
||||||
|
- .rodata : AT(__rodata_lma) {
|
||||||
|
+ .rodata : AT(ADDR(.rodata) + __vma_to_lma) {
|
||||||
|
__rodata_start = .;
|
||||||
|
*(.rodata)
|
||||||
|
*(.rodata.*)
|
||||||
|
__rodata_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __ctors_vma = .;
|
||||||
|
- __ctors_lma = __ctors_vma + __text_lma - __text_vma;
|
||||||
|
- .ctors : AT(__ctors_lma) {
|
||||||
|
+ .ctors : AT(ADDR(.ctors) + __vma_to_lma) {
|
||||||
|
__ctors_start = .;
|
||||||
|
KEEP (*(SORT(.ctors.*)))
|
||||||
|
KEEP (*(.ctors))
|
||||||
|
__ctors_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- __dtors_vma = .;
|
||||||
|
- __dtors_lma = __dtors_vma + __text_lma - __text_vma;
|
||||||
|
- .dtors : AT(__dtors_lma) {
|
||||||
|
+ .dtors : AT(ADDR(.dtors) + __vma_to_lma) {
|
||||||
|
__dtors_start = .;
|
||||||
|
KEEP (*(SORT(.dtors.*)))
|
||||||
|
KEEP (*(.dtors))
|
||||||
|
__dtors_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __dynsym_vma = .;
|
||||||
|
- __dynsym_lma = __dynsym_vma + __text_lma - __text_vma;
|
||||||
|
- .dynsym : AT(__dynsym_lma) {
|
||||||
|
+ .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) {
|
||||||
|
__dynsym_start = .;
|
||||||
|
*(.dynsym)
|
||||||
|
__dynsym_end = .;
|
||||||
|
}
|
||||||
|
__dynsym_len = __dynsym_end - __dynsym_start;
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __dynstr_vma = .;
|
||||||
|
- __dynstr_lma = __dynstr_vma + __text_lma - __text_vma;
|
||||||
|
- .dynstr : AT(__dynstr_lma) {
|
||||||
|
+ .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) {
|
||||||
|
__dynstr_start = .;
|
||||||
|
*(.dynstr)
|
||||||
|
__dynstr_end = .;
|
||||||
|
}
|
||||||
|
__dynstr_len = __dynstr_end - __dynstr_start;
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __gnu_hash_vma = .;
|
||||||
|
- __gnu_hash_lma = __gnu_hash_vma + __text_lma - __text_vma;
|
||||||
|
- .gnu.hash : AT(__gnu_hash_lma) {
|
||||||
|
+ .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) {
|
||||||
|
__gnu_hash_start = .;
|
||||||
|
*(.gnu.hash)
|
||||||
|
__gnu_hash_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __dynlink_vma = .;
|
||||||
|
- __dynlink_lma = __dynlink_vma + __text_lma - __text_vma;
|
||||||
|
- .dynlink : AT(__dynlink_lma) {
|
||||||
|
+ .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) {
|
||||||
|
__dynlink_start = .;
|
||||||
|
*(.dynlink)
|
||||||
|
__dynlink_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __got_vma = .;
|
||||||
|
- __got_lma = __got_vma + __text_lma - __text_vma;
|
||||||
|
- .got : AT(__got_lma) {
|
||||||
|
+ .got : AT(ADDR(.got) + __vma_to_lma) {
|
||||||
|
__got_start = .;
|
||||||
|
KEEP (*(.got.plt))
|
||||||
|
KEEP (*(.got))
|
||||||
|
__got_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(4);
|
||||||
|
-
|
||||||
|
- __dynamic_vma = .;
|
||||||
|
- __dynamic_lma = __dynamic_vma + __text_lma - __text_vma;
|
||||||
|
- .dynamic : AT(__dynamic_lma) {
|
||||||
|
+ .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) {
|
||||||
|
__dynamic_start = .;
|
||||||
|
*(.dynamic)
|
||||||
|
__dynamic_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(32);
|
||||||
|
-
|
||||||
|
- __data_vma = .;
|
||||||
|
- __data_lma = __data_vma + __text_lma - __text_vma;
|
||||||
|
- .data : AT(__data_lma) {
|
||||||
|
+ .data : AT(ADDR(.data) + __vma_to_lma) {
|
||||||
|
__data_start = .;
|
||||||
|
*(.data)
|
||||||
|
*(.data.*)
|
||||||
|
--
|
||||||
|
2.5.3
|
75
fix-alignment-change-gcc-5.patch
Normal file
75
fix-alignment-change-gcc-5.patch
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
From: Sylvain Gault <sylvain.gault at gmail.com>
|
||||||
|
|
||||||
|
The section aligment specified in the ld scripts have to be greater or
|
||||||
|
equal to those in the .o files generated by gcc.
|
||||||
|
|
||||||
|
Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com>
|
||||||
|
---
|
||||||
|
core/i386/syslinux.ld | 6 +++---
|
||||||
|
core/x86_64/syslinux.ld | 6 +++---
|
||||||
|
2 files changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld
|
||||||
|
index 7b4e012..7390451 100644
|
||||||
|
--- a/core/i386/syslinux.ld
|
||||||
|
+++ b/core/i386/syslinux.ld
|
||||||
|
@@ -266,7 +266,7 @@ SECTIONS
|
||||||
|
__text_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(16);
|
||||||
|
+ . = ALIGN(32);
|
||||||
|
|
||||||
|
__rodata_vma = .;
|
||||||
|
__rodata_lma = __rodata_vma + __text_lma - __text_vma;
|
||||||
|
@@ -361,7 +361,7 @@ SECTIONS
|
||||||
|
__dynamic_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(16);
|
||||||
|
+ . = ALIGN(32);
|
||||||
|
|
||||||
|
__data_vma = .;
|
||||||
|
__data_lma = __data_vma + __text_lma - __text_vma;
|
||||||
|
@@ -377,7 +377,7 @@ SECTIONS
|
||||||
|
__pm_code_dwords = (__pm_code_len + 3) >> 2;
|
||||||
|
|
||||||
|
. = ALIGN(128);
|
||||||
|
-
|
||||||
|
+
|
||||||
|
__bss_vma = .;
|
||||||
|
__bss_lma = .; /* Dummy */
|
||||||
|
.bss (NOLOAD) : AT (__bss_lma) {
|
||||||
|
diff --git a/core/x86_64/syslinux.ld b/core/x86_64/syslinux.ld
|
||||||
|
index 1057112..bf815c4 100644
|
||||||
|
--- a/core/x86_64/syslinux.ld
|
||||||
|
+++ b/core/x86_64/syslinux.ld
|
||||||
|
@@ -266,7 +266,7 @@ SECTIONS
|
||||||
|
__text_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(16);
|
||||||
|
+ . = ALIGN(32);
|
||||||
|
|
||||||
|
__rodata_vma = .;
|
||||||
|
__rodata_lma = __rodata_vma + __text_lma - __text_vma;
|
||||||
|
@@ -361,7 +361,7 @@ SECTIONS
|
||||||
|
__dynamic_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
- . = ALIGN(16);
|
||||||
|
+ . = ALIGN(32);
|
||||||
|
|
||||||
|
__data_vma = .;
|
||||||
|
__data_lma = __data_vma + __text_lma - __text_vma;
|
||||||
|
@@ -377,7 +377,7 @@ SECTIONS
|
||||||
|
__pm_code_dwords = (__pm_code_len + 3) >> 2;
|
||||||
|
|
||||||
|
. = ALIGN(128);
|
||||||
|
-
|
||||||
|
+
|
||||||
|
__bss_vma = .;
|
||||||
|
__bss_lma = .; /* Dummy */
|
||||||
|
.bss (NOLOAD) : AT (__bss_lma) {
|
||||||
|
--
|
||||||
|
2.5.3
|
@ -2,7 +2,7 @@ Summary: Simple kernel loader which boots from a FAT filesystem
|
|||||||
Name: syslinux
|
Name: syslinux
|
||||||
Version: 6.03
|
Version: 6.03
|
||||||
%define tarball_version 6.03
|
%define tarball_version 6.03
|
||||||
Release: 5%{?dist}
|
Release: 6%{?dist}
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Group: Applications/System
|
Group: Applications/System
|
||||||
URL: http://syslinux.zytor.com/wiki/index.php/The_Syslinux_Project
|
URL: http://syslinux.zytor.com/wiki/index.php/The_Syslinux_Project
|
||||||
@ -10,6 +10,12 @@ Source0: http://www.kernel.org/pub/linux/utils/boot/syslinux/%{name}-%{tarball_v
|
|||||||
Patch0001: 0001-Add-install-all-target-to-top-side-of-HAVE_FIRMWARE.patch
|
Patch0001: 0001-Add-install-all-target-to-top-side-of-HAVE_FIRMWARE.patch
|
||||||
# Backport from upstream git master to fix RHBZ #1234653
|
# Backport from upstream git master to fix RHBZ #1234653
|
||||||
Patch0002: 0035-SYSAPPEND-Fix-space-stripping.patch
|
Patch0002: 0035-SYSAPPEND-Fix-space-stripping.patch
|
||||||
|
# From upstream ML, these should fix some GCC 5 issues, e.g. RHBZ #1263988
|
||||||
|
# http://www.syslinux.org/archives/2015-September/024317.html
|
||||||
|
# http://www.syslinux.org/archives/2015-September/024318.html
|
||||||
|
Patch0003: fix-alignment-change-gcc-5.patch
|
||||||
|
# http://www.syslinux.org/archives/2015-September/024319.html
|
||||||
|
Patch0004: dont-guess-section-alignment.patch
|
||||||
|
|
||||||
# this is to keep rpmbuild from thinking the .c32 / .com / .0 / memdisk files
|
# this is to keep rpmbuild from thinking the .c32 / .com / .0 / memdisk files
|
||||||
# in noarch packages are a reason to stop the build.
|
# in noarch packages are a reason to stop the build.
|
||||||
@ -259,6 +265,9 @@ elif [ -f /boot/extlinux.conf ]; then \
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Oct 15 2015 Adam Williamson <awilliam@redhat.com> - 6.03-6
|
||||||
|
- backport GCC 5 fixes from upstream ML: RHBZ #1263988, #1264012
|
||||||
|
|
||||||
* Fri Jul 03 2015 Adam Williamson <awilliam@redhat.com> - 6.03-5
|
* Fri Jul 03 2015 Adam Williamson <awilliam@redhat.com> - 6.03-5
|
||||||
- backport a commit from git master which appears to fix RHBZ #1234653
|
- backport a commit from git master which appears to fix RHBZ #1234653
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user