Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/2] boot/syslinux: renumber patches
@ 2017-08-15 22:45 Arnout Vandecappelle
  2017-08-15 22:45 ` [Buildroot] [PATCH 2/2] boot/syslinux: fix i386 bios build with recent binutils Arnout Vandecappelle
  2017-08-16 21:08 ` [Buildroot] [PATCH 1/2] boot/syslinux: renumber patches Thomas Petazzoni
  0 siblings, 2 replies; 3+ messages in thread
From: Arnout Vandecappelle @ 2017-08-15 22:45 UTC (permalink / raw)
  To: buildroot

Also the last two are regenerated, their context has changed due to
the patches that have been removed earlier.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
 ... => 0003-memdisk-Force-ld-output-format-to-32-bits.patch} |  0
 ...atch => 0004-utils-Use-the-host-toolchain-to-build.patch} |  0
 ...ch => 0005-lzo-Use-the-host-toolchain-for-prepcore.patch} |  0
 ...e-VPrint-definition-is-now-part-of-the-exports-of-.patch} |  0
 ...date-the-longjump-calls-to-fit-the-new-declaration.patch} | 12 ++++++------
 ... 0008-efi-wrapper-build-it-with-the-host-toolchain.patch} |  8 ++++----
 6 files changed, 10 insertions(+), 10 deletions(-)
 rename boot/syslinux/{0004-memdisk-Force-ld-output-format-to-32-bits.patch => 0003-memdisk-Force-ld-output-format-to-32-bits.patch} (100%)
 rename boot/syslinux/{0005-utils-Use-the-host-toolchain-to-build.patch => 0004-utils-Use-the-host-toolchain-to-build.patch} (100%)
 rename boot/syslinux/{0006-lzo-Use-the-host-toolchain-for-prepcore.patch => 0005-lzo-Use-the-host-toolchain-for-prepcore.patch} (100%)
 rename boot/syslinux/{0007-The-VPrint-definition-is-now-part-of-the-exports-of-.patch => 0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch} (100%)
 rename boot/syslinux/{0009-Update-the-longjump-calls-to-fit-the-new-declaration.patch => 0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch} (76%)
 rename boot/syslinux/{0010-efi-wrapper-build-it-with-the-host-toolchain.patch => 0008-efi-wrapper-build-it-with-the-host-toolchain.patch} (81%)

diff --git a/boot/syslinux/0004-memdisk-Force-ld-output-format-to-32-bits.patch b/boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch
similarity index 100%
rename from boot/syslinux/0004-memdisk-Force-ld-output-format-to-32-bits.patch
rename to boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch
diff --git a/boot/syslinux/0005-utils-Use-the-host-toolchain-to-build.patch b/boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch
similarity index 100%
rename from boot/syslinux/0005-utils-Use-the-host-toolchain-to-build.patch
rename to boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch
diff --git a/boot/syslinux/0006-lzo-Use-the-host-toolchain-for-prepcore.patch b/boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch
similarity index 100%
rename from boot/syslinux/0006-lzo-Use-the-host-toolchain-for-prepcore.patch
rename to boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch
diff --git a/boot/syslinux/0007-The-VPrint-definition-is-now-part-of-the-exports-of-.patch b/boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch
similarity index 100%
rename from boot/syslinux/0007-The-VPrint-definition-is-now-part-of-the-exports-of-.patch
rename to boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch
diff --git a/boot/syslinux/0009-Update-the-longjump-calls-to-fit-the-new-declaration.patch b/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch
similarity index 76%
rename from boot/syslinux/0009-Update-the-longjump-calls-to-fit-the-new-declaration.patch
rename to boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch
index cb369981a9..90d0b81f06 100644
--- a/boot/syslinux/0009-Update-the-longjump-calls-to-fit-the-new-declaration.patch
+++ b/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch
@@ -1,4 +1,4 @@
-From db49dbac8a0c563fb6d07c348873e8ae50fee2a6 Mon Sep 17 00:00:00 2001
+From 3bd5c2d951421a89f76b2423e5810862f53486c1 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Beno=C3=AEt=20Allard?= <benoit.allard@greenbone.net>
 Date: Fri, 9 Jun 2017 11:59:43 +0200
 Subject: [PATCH] Update the longjump calls to fit the new declaration
@@ -12,7 +12,7 @@ Signed-off-by: Beno?t Allard <benoit.allard@greenbone.net>
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 diff --git a/efi/main.c b/efi/main.c
-index fd95f5c..b5383cd 100644
+index 208fee4f..71d31a5c 100644
 --- a/efi/main.c
 +++ b/efi/main.c
 @@ -10,7 +10,6 @@
@@ -23,15 +23,15 @@ index fd95f5c..b5383cd 100644
  
  #include "efi.h"
  #include "fio.h"
-@@ -31,7 +30,7 @@ uint32_t timer_irq;
+@@ -30,7 +29,7 @@ uint32_t timer_irq;
  __export uint8_t KbdMap[256];
  char aux_seg[256];
  
 -static jmp_buf load_error_buf;
 +static jmp_buf *load_error_buf;
  
- EFI_HANDLE image_handle, image_device_handle, mnpsb_handle;
- 
+ static inline EFI_STATUS
+ efi_close_protocol(EFI_HANDLE handle, EFI_GUID *guid, EFI_HANDLE agent,
 -- 
-2.1.4
+2.13.3
 
diff --git a/boot/syslinux/0010-efi-wrapper-build-it-with-the-host-toolchain.patch b/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch
similarity index 81%
rename from boot/syslinux/0010-efi-wrapper-build-it-with-the-host-toolchain.patch
rename to boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch
index c8ff9ebe34..9ec12a1791 100644
--- a/boot/syslinux/0010-efi-wrapper-build-it-with-the-host-toolchain.patch
+++ b/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch
@@ -1,4 +1,4 @@
-From 755c947e9166366bd1a78efb1e0c7d6e6e2daa07 Mon Sep 17 00:00:00 2001
+From ca8aaded0c7c3900397029bd9520132b62629308 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Beno=C3=AEt=20Allard?= <benoit.allard@greenbone.net>
 Date: Mon, 12 Jun 2017 14:59:16 +0200
 Subject: [PATCH] efi/wrapper: build it with the host toolchain.
@@ -15,10 +15,10 @@ Signed-off-by: Beno?t Allard <benoit.allard@greenbone.net>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/efi/Makefile b/efi/Makefile
-index d3788d9..a17258a 100644
+index d5443bd5..d24d16db 100644
 --- a/efi/Makefile
 +++ b/efi/Makefile
-@@ -78,7 +78,7 @@ syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS)
+@@ -79,7 +79,7 @@ syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS)
  #	cp $^ $@
  
  wrapper: wrapper.c
@@ -28,5 +28,5 @@ index d3788d9..a17258a 100644
  #
  # Build the wrapper app and wrap our .so to produce a .efi
 -- 
-2.1.4
+2.13.3
 
-- 
2.13.3

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [Buildroot] [PATCH 2/2] boot/syslinux: fix i386 bios build with recent binutils
  2017-08-15 22:45 [Buildroot] [PATCH 1/2] boot/syslinux: renumber patches Arnout Vandecappelle
@ 2017-08-15 22:45 ` Arnout Vandecappelle
  2017-08-16 21:08 ` [Buildroot] [PATCH 1/2] boot/syslinux: renumber patches Thomas Petazzoni
  1 sibling, 0 replies; 3+ messages in thread
From: Arnout Vandecappelle @ 2017-08-15 22:45 UTC (permalink / raw)
  To: buildroot

When we use the cross-compiler to build syslinux with a recent binutils
version, it fails with:

/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld  -Bsymbolic -pie -E --hash-style=gnu -T
/builds/arnout/buildroot/output/build/syslinux-6.03/core/i386/syslinux.ld -M -o ldlinux.elf ldlinux.o \
	--start-group libcom32.a --whole-archive /builds/arnout/buildroot/output/build/syslinux-6.03/bios/com32/lib/libcom32core.a libldlinux.a --end-group -N
--no-omagic \
	> ldlinux.map
/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: ldlinux.elf: Not enough room for program headers, try linking with -N
/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: final link failed: Bad value
/builds/arnout/buildroot/output/build/syslinux-6.03/core/Makefile:167: recipe for target 'ldlinux.elf' failed

Backport an upstream patch that reorganises the i386 bios build by
removing some symbols and making others hidden. To simplify the
backport, an additional patch that also touches the link script is
also included - it anyway looks like that patch could be relevant as
well.

Partially fixes: https://gitlab.com/arnout/buildroot/-/jobs/28979377

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
The failing ts5x00_defconfig also requires a kernel bump
---
 ...Don-t-try-to-guess-the-sections-alignment.patch | 295 ++++++++++
 .../0010-core-Clean-up-the-i386-bios-build.patch   | 622 +++++++++++++++++++++
 2 files changed, 917 insertions(+)
 create mode 100644 boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch
 create mode 100644 boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch

diff --git a/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch b/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch
new file mode 100644
index 0000000000..916012f619
--- /dev/null
+++ b/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch
@@ -0,0 +1,295 @@
+From 76946dd67bc856eaf4fe69d0826547a794176f78 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>
+
+Upstream: 0cc9a99e560a2f52bcf052fd85b1efae35ee812f
+Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
+---
+ 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 73904510..92b75b11 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 bf815c46..70c6e00a 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.13.3
+
diff --git a/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch b/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch
new file mode 100644
index 0000000000..8b6d52544b
--- /dev/null
+++ b/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch
@@ -0,0 +1,622 @@
+From a14b1b3d3e375d2e8af8804171ef5e52574dbb2a 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>
+
+Upstream: ff859050fa4e6535cae098dc35d88a265466448d
+
+This patch fixes the following build failure with i386 binutils 2.28.1:
+
+/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld  -Bsymbolic -pie -E --hash-style=gnu -T
+/builds/arnout/buildroot/output/build/syslinux-6.03/core/i386/syslinux.ld -M -o ldlinux.elf ldlinux.o \
+	--start-group libcom32.a --whole-archive /builds/arnout/buildroot/output/build/syslinux-6.03/bios/com32/lib/libcom32core.a libldlinux.a --end-group -N
+--no-omagic \
+	> ldlinux.map
+/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: ldlinux.elf: Not enough room for program headers, try linking with -N
+/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: final link failed: Bad value
+/builds/arnout/buildroot/output/build/syslinux-6.03/core/Makefile:167: recipe for target 'ldlinux.elf' failed
+
+Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
+---
+ 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 af8eb04c..ce4abfab 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 92b75b11..39198d75 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 53ca783d..635df537 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.13.3
+
-- 
2.13.3

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [Buildroot] [PATCH 1/2] boot/syslinux: renumber patches
  2017-08-15 22:45 [Buildroot] [PATCH 1/2] boot/syslinux: renumber patches Arnout Vandecappelle
  2017-08-15 22:45 ` [Buildroot] [PATCH 2/2] boot/syslinux: fix i386 bios build with recent binutils Arnout Vandecappelle
@ 2017-08-16 21:08 ` Thomas Petazzoni
  1 sibling, 0 replies; 3+ messages in thread
From: Thomas Petazzoni @ 2017-08-16 21:08 UTC (permalink / raw)
  To: buildroot

Hello,

On Wed, 16 Aug 2017 00:45:45 +0200, Arnout Vandecappelle
(Essensium/Mind) wrote:
> Also the last two are regenerated, their context has changed due to
> the patches that have been removed earlier.
> 
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> ---
>  ... => 0003-memdisk-Force-ld-output-format-to-32-bits.patch} |  0
>  ...atch => 0004-utils-Use-the-host-toolchain-to-build.patch} |  0
>  ...ch => 0005-lzo-Use-the-host-toolchain-for-prepcore.patch} |  0
>  ...e-VPrint-definition-is-now-part-of-the-exports-of-.patch} |  0
>  ...date-the-longjump-calls-to-fit-the-new-declaration.patch} | 12 ++++++------
>  ... 0008-efi-wrapper-build-it-with-the-host-toolchain.patch} |  8 ++++----
>  6 files changed, 10 insertions(+), 10 deletions(-)
>  rename boot/syslinux/{0004-memdisk-Force-ld-output-format-to-32-bits.patch => 0003-memdisk-Force-ld-output-format-to-32-bits.patch} (100%)
>  rename boot/syslinux/{0005-utils-Use-the-host-toolchain-to-build.patch => 0004-utils-Use-the-host-toolchain-to-build.patch} (100%)
>  rename boot/syslinux/{0006-lzo-Use-the-host-toolchain-for-prepcore.patch => 0005-lzo-Use-the-host-toolchain-for-prepcore.patch} (100%)
>  rename boot/syslinux/{0007-The-VPrint-definition-is-now-part-of-the-exports-of-.patch => 0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch} (100%)
>  rename boot/syslinux/{0009-Update-the-longjump-calls-to-fit-the-new-declaration.patch => 0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch} (76%)
>  rename boot/syslinux/{0010-efi-wrapper-build-it-with-the-host-toolchain.patch => 0008-efi-wrapper-build-it-with-the-host-toolchain.patch} (81%)

Both patches applied to master. I tested, and indeed before your
patches, building syslinux fails with binutils 2.29, while it works
after your patches.

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-08-16 21:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-15 22:45 [Buildroot] [PATCH 1/2] boot/syslinux: renumber patches Arnout Vandecappelle
2017-08-15 22:45 ` [Buildroot] [PATCH 2/2] boot/syslinux: fix i386 bios build with recent binutils Arnout Vandecappelle
2017-08-16 21:08 ` [Buildroot] [PATCH 1/2] boot/syslinux: renumber patches Thomas Petazzoni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox