Login
Log in using an SSO provider:
Fedora Account System
Red Hat Associate
Red Hat Customer
Login using a Red Hat Bugzilla account
Forgot Password
Create an Account
Red Hat Bugzilla – Attachment 1126936 Details for
Bug 1308298
CLI - EFI64 - the GNU linker
Home
New
Search
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh90 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
[?]
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
CLI, EFI64 and binutils(ld)
0001-CLI-EFI64-binutils-ld.patch (text/plain), 46.79 KB, created by
poma
on 2016-02-14 04:30:51 UTC
(
hide
)
Description:
CLI, EFI64 and binutils(ld)
Filename:
MIME Type:
Creator:
poma
Created:
2016-02-14 04:30:51 UTC
Size:
46.79 KB
patch
obsolete
>From 10b2b2304703a3642bf8eeca5badd3f713971967 Mon Sep 17 00:00:00 2001 >From: poma <pomidorabelisima@gmail.com> >Date: Sun, 14 Feb 2016 04:58:28 +0100 >Subject: [PATCH] CLI, EFI64, binutils(ld) > >--- > 0002-SYSAPPEND-Fix-space-stripping.patch | 58 ++ > ...-ldlinux-Fix-return-pointer-to-local-data.patch | 35 ++ > 0004-bios-Fix-alignment-change-with-gcc-5.patch | 81 +++ > ...Don-t-try-to-guess-the-sections-alignment.patch | 292 ++++++++++ > 0006-core-Clean-up-the-i386-bios-build.patch | 607 +++++++++++++++++++++ > 0035-SYSAPPEND-Fix-space-stripping.patch | 58 -- > dont-guess-section-alignment.patch | 286 ---------- > fix-alignment-change-gcc-5.patch | 75 --- > syslinux.spec | 38 +- > 9 files changed, 1094 insertions(+), 436 deletions(-) > create mode 100644 0002-SYSAPPEND-Fix-space-stripping.patch > create mode 100644 0003-ldlinux-Fix-return-pointer-to-local-data.patch > create mode 100644 0004-bios-Fix-alignment-change-with-gcc-5.patch > create mode 100644 0005-bios-Don-t-try-to-guess-the-sections-alignment.patch > create mode 100644 0006-core-Clean-up-the-i386-bios-build.patch > delete mode 100644 0035-SYSAPPEND-Fix-space-stripping.patch > delete mode 100644 dont-guess-section-alignment.patch > delete mode 100644 fix-alignment-change-gcc-5.patch > >diff --git a/0002-SYSAPPEND-Fix-space-stripping.patch b/0002-SYSAPPEND-Fix-space-stripping.patch >new file mode 100644 >index 0000000..313243c >--- /dev/null >+++ b/0002-SYSAPPEND-Fix-space-stripping.patch >@@ -0,0 +1,58 @@ >+From 3106dcd19061b4443c5beba4f0e09412e8d37fbe Mon Sep 17 00:00:00 2001 >+From: Dany St-Amant <dany.ephemeral.2014@icloud.com> >+Date: Fri, 28 Nov 2014 13:48:32 -0500 >+Subject: [PATCH] SYSAPPEND: Fix space stripping >+ >+The description of SYSAPPEND for the DMI information states that the spaces >+are replaced by underscores, but this replacement does not occur in 6.03. >+ >+Signed-off-by: Dany St-Amant <dany.ephemeral.2014@icloud.com> >+Signed-off-by: Gene Cumm <gene.cumm@gmail.com> >+--- >+ com32/elflink/ldlinux/readconfig.c | 2 +- >+ com32/menu/readconfig.c | 2 +- >+ core/sysappend.c | 2 +- >+ 3 files changed, 3 insertions(+), 3 deletions(-) >+ >+diff --git a/com32/elflink/ldlinux/readconfig.c b/com32/elflink/ldlinux/readconfig.c >+index 347f826..24f1cc9 100644 >+--- a/com32/elflink/ldlinux/readconfig.c >++++ b/com32/elflink/ldlinux/readconfig.c >+@@ -330,7 +330,7 @@ static char *copy_sysappend_string(char *dst, const char *src) >+ char c; >+ >+ while ((c = *src++)) { >+- if (c <= ' ' && c == '\x7f') { >++ if (c <= ' ' || c == '\x7f') { >+ if (!was_space) >+ *dst++ = '_'; >+ was_space = true; >+diff --git a/com32/menu/readconfig.c b/com32/menu/readconfig.c >+index b7814be..257b042 100644 >+--- a/com32/menu/readconfig.c >++++ b/com32/menu/readconfig.c >+@@ -299,7 +299,7 @@ static char *copy_sysappend_string(char *dst, const char *src) >+ char c; >+ >+ while ((c = *src++)) { >+- if (c <= ' ' && c == '\x7f') { >++ if (c <= ' ' || c == '\x7f') { >+ if (!was_space) >+ *dst++ = '_'; >+ was_space = true; >+diff --git a/core/sysappend.c b/core/sysappend.c >+index 5c3f650..758703e 100644 >+--- a/core/sysappend.c >++++ b/core/sysappend.c >+@@ -35,7 +35,7 @@ static char *copy_and_mangle(char *dst, const char *src) >+ char c; >+ >+ while ((c = *src++)) { >+- if (c <= ' ' && c == '\x7f') { >++ if (c <= ' ' || c == '\x7f') { >+ if (!was_space) >+ *dst++ = '_'; >+ was_space = true; >+-- >+2.7.1 >+ >diff --git a/0003-ldlinux-Fix-return-pointer-to-local-data.patch b/0003-ldlinux-Fix-return-pointer-to-local-data.patch >new file mode 100644 >index 0000000..51d14d5 >--- /dev/null >+++ b/0003-ldlinux-Fix-return-pointer-to-local-data.patch >@@ -0,0 +1,35 @@ >+From 8dc6d758b564a1ccc44c3ae11f265d43628219ce Mon Sep 17 00:00:00 2001 >+From: Sylvain Gault <sylvain.gault@gmail.com> >+Date: Tue, 13 Oct 2015 06:18:07 +0200 >+Subject: [PATCH] ldlinux: Fix return pointer to local data >+ >+The command-line parsing used to return a pointer to a local array. The >+code used to work by chance, but now, gcc 5 is able to detect it and >+return a NULL pointer instead. >+ >+The buffer is now marked static. This shouldn't be a problem as only one >+command line can be read at a time. >+ >+Signed-off-by: Sylvain Gault <sylvain.gault@gmail.com> >+Tested-by: poma <pomidorabelisima at gmail.com> >+Signed-off-by: Paulo Alcantara <pcacjr@zytor.com> >+--- >+ com32/elflink/ldlinux/cli.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) >+ >+diff --git a/com32/elflink/ldlinux/cli.c b/com32/elflink/ldlinux/cli.c >+index 6ff30c6..3119b11 100644 >+--- a/com32/elflink/ldlinux/cli.c >++++ b/com32/elflink/ldlinux/cli.c >+@@ -125,7 +125,7 @@ const char *edit_cmdline(const char *input, int top /*, int width */ , >+ int (*pDraw_Menu) (int, int, int), >+ void (*show_fkey) (int), bool *timedout) >+ { >+- char cmdline[MAX_CMDLINE_LEN] = { }; >++ static char cmdline[MAX_CMDLINE_LEN] = { }; >+ int key, len, prev_len, cursor; >+ int redraw = 0; >+ int x, y; >+-- >+2.7.1 >+ >diff --git a/0004-bios-Fix-alignment-change-with-gcc-5.patch b/0004-bios-Fix-alignment-change-with-gcc-5.patch >new file mode 100644 >index 0000000..75709f2 >--- /dev/null >+++ b/0004-bios-Fix-alignment-change-with-gcc-5.patch >@@ -0,0 +1,81 @@ >+From e5f2b577ded109291c9632dacb6eaa621d8a59fe Mon Sep 17 00:00:00 2001 >+From: Sylvain Gault <sylvain.gault@gmail.com> >+Date: Tue, 29 Sep 2015 02:38:25 +0200 >+Subject: [PATCH] bios: Fix alignment change with gcc 5 >+ >+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@gmail.com> >+Tested-by: poma <pomidorabelisima@gmail.com> >+Signed-off-by: Paulo Alcantara <pcacjr@zytor.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.7.1 >+ >diff --git a/0005-bios-Don-t-try-to-guess-the-sections-alignment.patch b/0005-bios-Don-t-try-to-guess-the-sections-alignment.patch >new file mode 100644 >index 0000000..25b481c >--- /dev/null >+++ b/0005-bios-Don-t-try-to-guess-the-sections-alignment.patch >@@ -0,0 +1,292 @@ >+From 0cc9a99e560a2f52bcf052fd85b1efae35ee812f Mon Sep 17 00:00:00 2001 >+From: Sylvain Gault <sylvain.gault@gmail.com> >+Date: Tue, 29 Sep 2015 04:45:09 +0200 >+Subject: [PATCH] bios: Don't try to guess the sections alignment >+ >+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@gmail.com> >+Tested-by: poma <pomidorabelisima@gmail.com> >+Signed-off-by: Paulo Alcantara <pcacjr@zytor.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.7.1 >+ >diff --git a/0006-core-Clean-up-the-i386-bios-build.patch b/0006-core-Clean-up-the-i386-bios-build.patch >new file mode 100644 >index 0000000..c2b9680 >--- /dev/null >+++ b/0006-core-Clean-up-the-i386-bios-build.patch >@@ -0,0 +1,607 @@ >+From ff859050fa4e6535cae098dc35d88a265466448d Mon Sep 17 00:00:00 2001 >+From: "H. Peter Anvin" <hpa@zytor.com> >+Date: Tue, 9 Feb 2016 18:15:50 -0800 >+Subject: [PATCH] core: Clean up the i386-bios build >+ >+Remove symbols and data structures not used in the i386-bios build, >+and clean up the linker script so that most internal symbols are >+HIDDEN. >+ >+Signed-off-by: H. Peter Anvin <hpa@zytor.com> >+--- >+ core/extern.inc | 17 +-- >+ core/i386/syslinux.ld | 287 +++++++++++++++++++++++++------------------------- >+ core/layout.inc | 11 -- >+ 3 files changed, 143 insertions(+), 172 deletions(-) >+ >+diff --git a/core/extern.inc b/core/extern.inc >+index af8eb04..ce4abfa 100644 >+--- a/core/extern.inc >++++ b/core/extern.inc >+@@ -12,27 +12,17 @@ >+ ; hello.c >+ extern hello >+ >+- ;abort.c >+- extern abort_load_new >+- >+ ; elflink/load_env32.c >+ extern load_env32, pm_env32_run >+ >+- ; memscan.c >+- extern highmem_init >+- >+- extern linux_kernel >+- >+ extern mp1, mp2, mp3, mp4, mp5 >+ >+- extern hexdump, mydump >++ extern hexdump >+ >+ extern mem_init >+ >+ ; fs.c >+- extern pm_fs_init, pm_searchdir, getfssec, getfsbytes >+- extern pm_mangle_name, pm_load_config >+- extern pm_open_file, pm_close_file >++ extern pm_fs_init >+ extern SectorSize, SectorShift >+ >+ ; chdir.c >+@@ -41,9 +31,6 @@ >+ ; readdir.c >+ extern opendir, readdir, closedir >+ >+- ; newconfig.c >+- extern pm_is_config_file >+- >+ ; idle.c >+ extern __idle >+ >+diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld >+index 92b75b1..39198d7 100644 >+--- a/core/i386/syslinux.ld >++++ b/core/i386/syslinux.ld >+@@ -1,7 +1,7 @@ >+ /* ----------------------------------------------------------------------- >+ * >+ * Copyright 2008-2009 H. Peter Anvin - All Rights Reserved >+- * Copyright 2009 Intel Corporation; author: H. Peter Anvin >++ * Copyright 2009-2016 Intel Corporation; author: H. Peter Anvin >+ * >+ * This program is free software; you can redistribute it and/or modify >+ * it under the terms of the GNU General Public License as published by >+@@ -12,7 +12,7 @@ >+ * ----------------------------------------------------------------------- */ >+ >+ /* >+- * Linker script for the SYSLINUX core >++ * Linker script for the SYSLINUX core when built for i386-bios >+ */ >+ >+ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") >+@@ -26,7 +26,7 @@ SECTIONS >+ { >+ /* Prefix structure for the compression program */ >+ . = 0; >+- __module_start = .; >++ HIDDEN(__module_start = ABSOLUTE(.)); >+ .prefix : { >+ *(.prefix) >+ } >+@@ -35,81 +35,82 @@ SECTIONS >+ . = 0x1000; >+ >+ .earlybss (NOLOAD) : { >+- __earlybss_start = .; >++ HIDDEN(__earlybss_start = .); >+ *(.earlybss) >+- __earlybss_end = .; >++ HIDDEN(__earlybss_end = .); >+ } >+- __earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start); >+- __earlybss_dwords = (__earlybss_len + 3) >> 2; >++ HIDDEN(__earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start)); >++ HIDDEN(__earlybss_dwords = (__earlybss_len + 3) >> 2); >+ >+ . = ALIGN(4); >+ .bss16 (NOLOAD) : { >+- __bss16_start = .; >++ HIDDEN(__bss16_start = .); >+ *(.bss16) >+- __bss16_end = .; >++ HIDDEN(__bss16_end = .); >+ } >+- __bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start); >+- __bss16_dwords = (__bss16_len + 3) >> 2; >++ HIDDEN(__bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start)); >++ HIDDEN(__bss16_dwords = (__bss16_len + 3) >> 2); >+ >+ . = ALIGN(4); >+ .config : AT (__config_lma) { >+- __config_start = .; >++ HIDDEN(__config_start = .); >+ *(.config) >+- __config_end = .; >++ HIDDEN(__config_end = .); >+ } >+- __config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start); >+- __config_dwords = (__config_len + 3) >> 2; >++ HIDDEN(__config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start)); >++ HIDDEN(__config_dwords = (__config_len + 3) >> 2); >+ >+ /* Generated and/or copied code */ >+ >+ . = ALIGN(128); /* Minimum separation from mutable data */ >+ .replacestub : AT (__replacestub_lma) { >+- __replacestub_start = .; >++ HIDDEN(__replacestub_start = .); >+ *(.replacestub) >+- __replacestub_end = .; >++ HIDDEN(__replacestub_end = .); >+ } >+- __replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start); >+- __replacestub_dwords = (__replacestub_len + 3) >> 2; >++ HIDDEN(__replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start)); >++ HIDDEN(__replacestub_dwords = (__replacestub_len + 3) >> 2); >+ >+ . = ALIGN(16); >+- __gentextnr_lma = .; >++ HIDDEN(__gentextnr_lma = .); >+ .gentextnr : AT(__gentextnr_lma) { >+- __gentextnr_start = .; >++ HIDDEN(__gentextnr_start = .); >+ *(.gentextnr) >+- __gentextnr_end = .; >++ HIDDEN(__gentextnr_end = .); >+ } >+- __gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start); >+- __gentextnr_dwords = (__gentextnr_len + 3) >> 2; >++ HIDDEN(__gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start)); >++ HIDDEN(__gentextnr_dwords = (__gentextnr_len + 3) >> 2); >+ >+ . = STACK_BASE; >+ .stack16 : AT(STACK_BASE) { >+- __stack16_start = .; >++ HIDDEN(__stack16_start = .); >+ . += STACK_LEN; >+- __stack16_end = .; >++ HIDDEN(__stack16_end = .); >+ } >+- __stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start); >+- __stack16_dwords = (__stack16_len + 3) >> 2; >++ HIDDEN(__stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start)); >++ HIDDEN(__stack16_dwords = (__stack16_len + 3) >> 2); >+ >+ /* Initialized sections */ >+ >+ . = 0x7c00; >+ .init : { >+ FILL(0x90909090) >+- __init_start = .; >++ HIDDEN(__init_start = .); >+ *(.init) >+- __init_end = .; >++ HIDDEN(__init_end = .); >+ } >+- __init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start); >+- __init_dwords = (__init_len + 3) >> 2; >++ HIDDEN(__init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start)); >++ HIDDEN(__init_dwords = (__init_len + 3) >> 2); >+ >++ . = ALIGN(4); >+ .text16 : { >+ FILL(0x90909090) >+- __text16_start = .; >++ HIDDEN(__text16_start = .); >+ *(.text16) >+- __text16_end = .; >++ HIDDEN(__text16_end = .); >+ } >+- __text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start); >+- __text16_dwords = (__text16_len + 3) >> 2; >++ HIDDEN(__text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start)); >++ HIDDEN(__text16_dwords = (__text16_len + 3) >> 2); >+ >+ /* >+ * .textnr is used for 32-bit code that is used on the code >+@@ -118,99 +119,92 @@ SECTIONS >+ . = ALIGN(16); >+ .textnr : { >+ FILL(0x90909090) >+- __textnr_start = .; >++ HIDDEN(__textnr_start = .); >+ *(.textnr) >+- __textnr_end = .; >++ HIDDEN(__textnr_end = .); >+ } >+- __textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start); >+- __textnr_dwords = (__textnr_len + 3) >> 2; >++ HIDDEN(__textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start)); >++ HIDDEN(__textnr_dwords = (__textnr_len + 3) >> 2); >+ >+ . = ALIGN(16); >+- __bcopyxx_start = .; >++ HIDDEN(__bcopyxx_start = .); >+ >+ .bcopyxx.text : { >+ FILL(0x90909090) >+- __bcopyxx_text_start = .; >++ HIDDEN(__bcopyxx_text_start = .); >+ *(.bcopyxx.text) >+- __bcopyxx_text_end = .; >++ HIDDEN(__bcopyxx_text_end = .); >+ } >+- __bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start); >+- __bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2; >++ HIDDEN(__bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start)); >++ HIDDEN(__bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2); >+ >+ .bcopyxx.data : { >+- __bcopyxx_data_start = .; >++ HIDDEN(__bcopyxx_data_start = .); >+ *(.bcopyxx.text) >+- __bcopyxx_data_end = .; >++ HIDDEN(__bcopyxx_data_end = .); >+ } >+- __bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start); >+- __bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2; >++ HIDDEN(__bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start)); >++ HIDDEN(__bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2); >+ >+- __bcopyxx_end = .; >+- __bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start); >+- __bcopyxx_dwords = (__bcopyxx_len + 3) >> 2; >++ HIDDEN(__bcopyxx_end = .); >++ HIDDEN(__bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start)); >++ HIDDEN(__bcopyxx_dwords = (__bcopyxx_len + 3) >> 2); >+ >+ . = ALIGN(4); >+ .data16 : { >+- __data16_start = .; >++ HIDDEN(__data16_start = .); >+ *(.data16) >+- __data16_end = .; >++ HIDDEN(__data16_end = .); >+ } >+- __data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start); >+- __data16_dwords = (__data16_len + 3) >> 2; >++ HIDDEN(__data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start)); >++ HIDDEN(__data16_dwords = (__data16_len + 3) >> 2); >+ >+ . = ALIGN(4); >+- __config_lma = .; >++ HIDDEN(__config_lma = ABSOLUTE(.)); >+ . += SIZEOF(.config); >+ >+ . = ALIGN(4); >+- __replacestub_lma = .; >++ HIDDEN(__replacestub_lma = ABSOLUTE(.)); >+ . += SIZEOF(.replacestub); >+ >+ /* The 32-bit code loads above the non-progbits sections */ >+ >+ . = ALIGN(16); >+- __pm_code_lma = .; >++ HIDDEN(__pm_code_lma = ABSOLUTE(.)); >+ >+- __high_clear_start = .; >++ HIDDEN(__high_clear_start = .); >+ >+ . = ALIGN(512); >+ .adv (NOLOAD) : { >+- __adv_start = .; >++ HIDDEN(__adv_start = .); >+ *(.adv) >+- __adv_end = .; >++ HIDDEN(__adv_end = .); >+ } >+- __adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start); >+- __adv_dwords = (__adv_len + 3) >> 2; >++ HIDDEN(__adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start)); >++ HIDDEN(__adv_dwords = (__adv_len + 3) >> 2); >+ >+ /* Late uninitialized sections */ >+ >+ . = ALIGN(4); >+ .uibss (NOLOAD) : { >+- __uibss_start = .; >++ HIDDEN(__uibss_start = .); >+ *(.uibss) >+- __uibss_end = .; >++ HIDDEN(__uibss_end = .); >+ } >+- __uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start); >+- __uibss_dwords = (__uibss_len + 3) >> 2; >++ HIDDEN(__uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start)); >++ HIDDEN(__uibss_dwords = (__uibss_len + 3) >> 2); >+ >+- _end16 = .; >+- __assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow"); >++ HIDDEN(_end16 = .); >++ HIDDEN(__assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow")); >+ >+ /* >+ * Special 16-bit segments >+ */ >+- >+- . = ALIGN(65536); >+- .real_mode (NOLOAD) : { >+- *(.real_mode) >+- } >+- real_mode_seg = core_real_mode >> 4; >+- >+ . = ALIGN(65536); >+ .xfer_buf (NOLOAD) : { >+ *(.xfer_buf) >+ } >+- xfer_buf_seg = core_xfer_buf >> 4; >++ HIDDEN(xfer_buf_seg = core_xfer_buf >> 4); >+ >+ /* >+ * The auxilliary data segment is used by the 16-bit code >+@@ -219,33 +213,33 @@ SECTIONS >+ >+ . = ALIGN(16); >+ .auxseg (NOLOAD) : { >+- __auxseg_start = .; >++ HIDDEN(__auxseg_start = .); >+ *(.auxseg) >+- __auxseg_end = .; >++ HIDDEN(__auxseg_end = .); >+ } >+- __auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start); >+- __auxseg_dwords = (__auxseg_len + 3) >> 2; >+- aux_seg = __auxseg_start >> 4; >++ HIDDEN(__auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start)); >++ HIDDEN(__auxseg_dwords = (__auxseg_len + 3) >> 2); >++ HIDDEN(aux_seg = __auxseg_start >> 4); >+ >+ /* >+ * Used to allocate lowmem buffers from 32-bit code >+ */ >+ .lowmem (NOLOAD) : { >+- __lowmem_start = .; >++ HIDDEN(__lowmem_start = .); >+ *(.lowmem) >+- __lowmem_end = .; >++ HIDDEN(__lowmem_end = .); >+ } >+- __lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start); >+- __lowmem_dwords = (__lowmem_len + 3) >> 2; >++ HIDDEN(__lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start)); >++ HIDDEN(__lowmem_dwords = (__lowmem_len + 3) >> 2); >+ >+- __high_clear_end = .; >++ HIDDEN(__high_clear_end = .); >+ >+- __high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start); >+- __high_clear_dwords = (__high_clear_len + 3) >> 2; >++ HIDDEN(__high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start)); >++ HIDDEN(__high_clear_dwords = (__high_clear_len + 3) >> 2); >+ >+ /* Start of the lowmem heap */ >+ . = ALIGN(16); >+- __lowmem_heap = .; >++ HIDDEN(__lowmem_heap = .); >+ >+ /* >+ * 32-bit code. This is a hack for the moment due to the >+@@ -254,136 +248,137 @@ SECTIONS >+ >+ . = 0x100000; >+ >+- __pm_code_start = .; >+- __vma_to_lma = __pm_code_lma - __pm_code_start; >++ HIDDEN(__pm_code_start = .); >++ HIDDEN(__vma_to_lma = ABSOLUTE(__pm_code_lma - __pm_code_start)); >+ >+ .text : AT(ADDR(.text) + __vma_to_lma) { >+ FILL(0x90909090) >+- __text_start = .; >++ HIDDEN(__text_start = .); >+ *(.text) >+ *(.text.*) >+- __text_end = .; >++ HIDDEN(__text_end = .); >+ } >+ >+ .rodata : AT(ADDR(.rodata) + __vma_to_lma) { >+- __rodata_start = .; >++ HIDDEN(__rodata_start = .); >+ *(.rodata) >+ *(.rodata.*) >+- __rodata_end = .; >++ HIDDEN(__rodata_end = .); >+ } >+ >+ .ctors : AT(ADDR(.ctors) + __vma_to_lma) { >+- __ctors_start = .; >++ HIDDEN(__ctors_start = .); >+ KEEP (*(SORT(.ctors.*))) >+ KEEP (*(.ctors)) >+- __ctors_end = .; >++ HIDDEN(__ctors_end = .); >+ } >+ >+ .dtors : AT(ADDR(.dtors) + __vma_to_lma) { >+- __dtors_start = .; >++ HIDDEN(__dtors_start = .); >+ KEEP (*(SORT(.dtors.*))) >+ KEEP (*(.dtors)) >+- __dtors_end = .; >++ HIDDEN(__dtors_end = .); >+ } >+ >+ .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { >+- __dynsym_start = .; >+- *(.dynsym) >+- __dynsym_end = .; >++ HIDDEN(__dynsym_start = .); >++ KEEP (*(.dynsym)) >++ HIDDEN(__dynsym_end = .); >+ } >+- __dynsym_len = __dynsym_end - __dynsym_start; >++ HIDDEN(__dynsym_len = __dynsym_end - __dynsym_start); >+ >+ .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { >+- __dynstr_start = .; >+- *(.dynstr) >+- __dynstr_end = .; >++ HIDDEN(__dynstr_start = .); >++ KEEP (*(.dynstr)) >++ HIDDEN(__dynstr_end = .); >+ } >+- __dynstr_len = __dynstr_end - __dynstr_start; >++ HIDDEN(__dynstr_len = __dynstr_end - __dynstr_start); >+ >+ .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { >+- __gnu_hash_start = .; >+- *(.gnu.hash) >+- __gnu_hash_end = .; >++ HIDDEN(__gnu_hash_start = .); >++ KEEP (*(.gnu.hash)) >++ HIDDEN(__gnu_hash_end = .); >+ } >+ >+ >+ .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { >+- __dynlink_start = .; >+- *(.dynlink) >+- __dynlink_end = .; >++ HIDDEN(__dynlink_start = .); >++ KEEP (*(.dynlink)) >++ HIDDEN(__dynlink_end = .); >+ } >+ >+ .got : AT(ADDR(.got) + __vma_to_lma) { >+- __got_start = .; >+- KEEP (*(.got.plt)) >++ HIDDEN(__got_start = .); >+ KEEP (*(.got)) >+- __got_end = .; >++ KEEP (*(.got.plt)) >++ HIDDEN(__got_end = .); >+ } >+ >+ .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { >+- __dynamic_start = .; >+- *(.dynamic) >+- __dynamic_end = .; >++ HIDDEN(__dynamic_start = .); >++ KEEP (*(.dynamic)) >++ HIDDEN(__dynamic_end = .); >+ } >+ >+ .data : AT(ADDR(.data) + __vma_to_lma) { >+- __data_start = .; >++ HIDDEN(__data_start = .); >+ *(.data) >+ *(.data.*) >+- __data_end = .; >++ HIDDEN(__data_end = .); >+ } >+ >+- __pm_code_end = .; >+- __pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start); >+- __pm_code_dwords = (__pm_code_len + 3) >> 2; >++ HIDDEN(__pm_code_end = .); >++ HIDDEN(__pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start)); >++ HIDDEN(__pm_code_dwords = (__pm_code_len + 3) >> 2); >+ >+ . = ALIGN(128); >+ >+- __bss_vma = .; >+- __bss_lma = .; /* Dummy */ >++ HIDDEN(__bss_vma = .); >++ HIDDEN(__bss_lma = ABSOLUTE(.)); /* Dummy */ >+ .bss (NOLOAD) : AT (__bss_lma) { >+- __bss_start = .; >++ HIDDEN(__bss_start = .); >+ *(.bss) >+ *(.bss.*) >+ *(COMMON) >+- __bss_end = .; >++ HIDDEN(__bss_end = .); >+ } >+- __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start); >+- __bss_dwords = (__bss_len + 3) >> 2; >++ HIDDEN(__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start)); >++ HIDDEN(__bss_dwords = (__bss_len + 3) >> 2); >+ >+ /* Very large objects which don't need to be zeroed */ >+ >+- __hugebss_vma = .; >+- __hugebss_lma = .; /* Dummy */ >++ HIDDEN(__hugebss_vma = .); >++ HIDDEN(__hugebss_lma = ABSOLUTE(.)); /* Dummy */ >+ .hugebss (NOLOAD) : AT (__hugebss_lma) { >+- __hugebss_start = .; >++ HIDDEN(__hugebss_start = .); >+ *(.hugebss) >+ *(.hugebss.*) >+- __hugebss_end = .; >++ HIDDEN(__hugebss_end = .); >+ } >+- __hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start); >+- __hugebss_dwords = (__hugebss_len + 3) >> 2; >++ HIDDEN(__hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start)); >++ HIDDEN(__hugebss_dwords = (__hugebss_len + 3) >> 2); >+ >+ >+ /* XXX: This stack should be unified with the COM32 stack */ >+- __stack_vma = .; >+- __stack_lma = .; /* Dummy */ >++ HIDDEN(__stack_vma = .); >++ HIDDEN(__stack_lma = ABSOLUTE(.)); /* Dummy */ >+ .stack (NOLOAD) : AT(__stack_lma) { >+- __stack_start = .; >++ HIDDEN(__stack_start = .); >+ *(.stack) >+- __stack_end = .; >++ HIDDEN(__stack_end = .); >+ } >+- __stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start); >+- __stack_dwords = (__stack_len + 3) >> 2; >++ HIDDEN(__stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start)); >++ HIDDEN(__stack_dwords = (__stack_len + 3) >> 2); >+ >+- _end = .; >++ HIDDEN(_end = .); >+ >+ /* COM32R and kernels are loaded after our own PM code */ >+ . = ALIGN(65536); >+- free_high_memory = .; >++ HIDDEN(free_high_memory = .); >+ >+ /* Stuff we don't need... */ >+ /DISCARD/ : { >+ *(.eh_frame) >++ *(.interp) >+ } >+ } >+diff --git a/core/layout.inc b/core/layout.inc >+index 53ca783..635df53 100644 >+--- a/core/layout.inc >++++ b/core/layout.inc >+@@ -139,17 +139,6 @@ serial_buf_size equ 4096 ; Should be a power of 2 >+ core_xfer_buf resb 65536 >+ >+ ; >+-; Segment for the real mode code (needed as long as we have a in-kernel >+-; loader and/or COM16 support. >+-; One symbol for the segment number, one for the absolute address >+-; >+- extern real_mode_seg >+- section .real_mode write nobits align=65536 >+- global core_real_mode:data hidden >+-core_real_mode resb 65536 >+-comboot_seg equ real_mode_seg ; COMBOOT image loading zone >+- >+-; >+ ; At the very end, the lowmem heap >+ ; >+ extern __lowmem_heap >+-- >+2.7.1 >+ >diff --git a/0035-SYSAPPEND-Fix-space-stripping.patch b/0035-SYSAPPEND-Fix-space-stripping.patch >deleted file mode 100644 >index 6ff4306..0000000 >--- a/0035-SYSAPPEND-Fix-space-stripping.patch >+++ /dev/null >@@ -1,58 +0,0 @@ >-From 3106dcd19061b4443c5beba4f0e09412e8d37fbe Mon Sep 17 00:00:00 2001 >-From: Dany St-Amant <dany.ephemeral.2014@icloud.com> >-Date: Fri, 28 Nov 2014 13:48:32 -0500 >-Subject: [PATCH 35/74] SYSAPPEND: Fix space stripping >- >-The description of SYSAPPEND for the DMI information states that the spaces >-are replaced by underscores, but this replacement does not occur in 6.03. >- >-Signed-off-by: Dany St-Amant <dany.ephemeral.2014@icloud.com> >-Signed-off-by: Gene Cumm <gene.cumm@gmail.com> >---- >- com32/elflink/ldlinux/readconfig.c | 2 +- >- com32/menu/readconfig.c | 2 +- >- core/sysappend.c | 2 +- >- 3 files changed, 3 insertions(+), 3 deletions(-) >- >-diff --git a/com32/elflink/ldlinux/readconfig.c b/com32/elflink/ldlinux/readconfig.c >-index 347f826..24f1cc9 100644 >---- a/com32/elflink/ldlinux/readconfig.c >-+++ b/com32/elflink/ldlinux/readconfig.c >-@@ -330,7 +330,7 @@ static char *copy_sysappend_string(char *dst, const char *src) >- char c; >- >- while ((c = *src++)) { >-- if (c <= ' ' && c == '\x7f') { >-+ if (c <= ' ' || c == '\x7f') { >- if (!was_space) >- *dst++ = '_'; >- was_space = true; >-diff --git a/com32/menu/readconfig.c b/com32/menu/readconfig.c >-index b7814be..257b042 100644 >---- a/com32/menu/readconfig.c >-+++ b/com32/menu/readconfig.c >-@@ -299,7 +299,7 @@ static char *copy_sysappend_string(char *dst, const char *src) >- char c; >- >- while ((c = *src++)) { >-- if (c <= ' ' && c == '\x7f') { >-+ if (c <= ' ' || c == '\x7f') { >- if (!was_space) >- *dst++ = '_'; >- was_space = true; >-diff --git a/core/sysappend.c b/core/sysappend.c >-index 5c3f650..758703e 100644 >---- a/core/sysappend.c >-+++ b/core/sysappend.c >-@@ -35,7 +35,7 @@ static char *copy_and_mangle(char *dst, const char *src) >- char c; >- >- while ((c = *src++)) { >-- if (c <= ' ' && c == '\x7f') { >-+ if (c <= ' ' || c == '\x7f') { >- if (!was_space) >- *dst++ = '_'; >- was_space = true; >--- >-2.4.5 >- >diff --git a/dont-guess-section-alignment.patch b/dont-guess-section-alignment.patch >deleted file mode 100644 >index 7d2e36b..0000000 >--- a/dont-guess-section-alignment.patch >+++ /dev/null >@@ -1,286 +0,0 @@ >-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 >diff --git a/fix-alignment-change-gcc-5.patch b/fix-alignment-change-gcc-5.patch >deleted file mode 100644 >index f7bf488..0000000 >--- a/fix-alignment-change-gcc-5.patch >+++ /dev/null >@@ -1,75 +0,0 @@ >-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 >diff --git a/syslinux.spec b/syslinux.spec >index 090e28b..5cb76c8 100644 >--- a/syslinux.spec >+++ b/syslinux.spec >@@ -2,20 +2,21 @@ Summary: Simple kernel loader which boots from a FAT filesystem > Name: syslinux > Version: 6.03 > %define tarball_version 6.03 >-Release: 7%{?dist} >+Release: 8%{?dist} > License: GPLv2+ > Group: Applications/System > URL: http://syslinux.zytor.com/wiki/index.php/The_Syslinux_Project > Source0: http://www.kernel.org/pub/linux/utils/boot/syslinux/%{name}-%{tarball_version}.tar.xz > Patch0001: 0001-Add-install-all-target-to-top-side-of-HAVE_FIRMWARE.patch >-# Backport from upstream git master to fix RHBZ #1234653 >-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 >+# Fix "fail to boot" #1234653 >+Patch0002: 0002-SYSAPPEND-Fix-space-stripping.patch >+# Fix command line interface #1292236, it also makes complete GCC 5 related patches >+Patch0003: 0003-ldlinux-Fix-return-pointer-to-local-data.patch >+# Fix build with GCC 5 #1243117 #1263988 >+Patch0004: 0004-bios-Fix-alignment-change-with-gcc-5.patch >+Patch0005: 0005-bios-Don-t-try-to-guess-the-sections-alignment.patch >+# Fix build with the latest release(2.26) of GNU binutils(ld) #1308171 >+Patch0006: 0006-core-Clean-up-the-i386-bios-build.patch > > # this is to keep rpmbuild from thinking the .c32 / .com / .0 / memdisk files > # in noarch packages are a reason to stop the build. >@@ -107,7 +108,7 @@ linux host. It also includes a tool, MEMDISK, which loads legacy operating > systems from media. > %endif > >-%ifarch %{x86_64} >+%ifarch x86_64 > %package efi64 > Summary: SYSLINUX binaries and modules for 64-bit UEFI systems > Group: System/Boot >@@ -127,7 +128,7 @@ git am %{patches} </dev/null > > %build > make bios clean all >-%ifarch %{x86_64} >+%ifarch x86_64 > make efi64 clean all > %endif > >@@ -144,13 +145,13 @@ make bios install-all \ > MANDIR=%{_mandir} INCDIR=%{_includedir} \ > TFTPBOOT=/tftpboot EXTLINUXDIR=/boot/extlinux \ > LDLINUX=ldlinux.c32 >-%ifarch %{x86_64} >+%ifarch x86_64 > make efi64 install netinstall \ > INSTALLROOT=%{buildroot} BINDIR=%{_bindir} SBINDIR=%{_sbindir} \ > LIBDIR=%{_prefix}/lib DATADIR=%{_datadir} \ > MANDIR=%{_mandir} INCDIR=%{_includedir} \ > TFTPBOOT=/tftpboot EXTLINUXDIR=/boot/extlinux \ >- LDLINUX=ldlinux.c32 >+ LDLINUX=ldlinux.e64 > %endif > > mkdir -p %{buildroot}/%{_docdir}/%{name}/sample >@@ -162,9 +163,6 @@ mkdir -p %{buildroot}/etc > rm -f %{buildroot}%{_prefix}/lib/libsyslinux* > rm -f %{buildroot}%{_includedir}/syslinux.h > >-%clean >-rm -rf %{buildroot} >- > %files > %defattr(-,root,root) > %{!?_licensedir:%global license %%doc} >@@ -245,7 +243,7 @@ rm -rf %{buildroot} > %exclude /tftpboot > %endif > >-%ifarch %{x86_64} >+%ifarch x86_64 > %files efi64 > %{!?_licensedir:%global license %%doc} > %license COPYING >@@ -265,6 +263,12 @@ elif [ -f /boot/extlinux.conf ]; then \ > fi > > %changelog >+* Sun Feb 14 2016 poma <poma@gmail.com> - 6.03-8 >+- Enable EFI64 build #1291423 >+- Fix build with the latest release(2.26) of GNU binutils(ld) #1308171 >+- Fix command line interface #1292236, it also makes complete GCC 5 related patches >+- Freshen patches >+ > * Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 6.03-7 > - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild > >-- >2.7.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1308298
: 1126936