From 6e4bbdf7f4ad836833b294b6842db8f465356089 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 19 Dec 2014 21:53:50 +0000
Subject: syslinux: update to 6.03

---
 abs/extra/syslinux/PKGBUILD                        | 231 ++------
 .../syslinux/syslinux-6.02-fix-bios-isolinux.patch |  12 -
 .../syslinux/syslinux-6.02-fix-chainloading.patch  |  47 --
 .../syslinux/syslinux-6.02-fix-efi-ovmf.patch      | 621 ---------------------
 abs/extra/syslinux/syslinux-install_update         |   4 +-
 abs/extra/syslinux/syslinux.cfg                    |   4 +-
 abs/extra/syslinux/syslinux.install                |  43 +-
 7 files changed, 78 insertions(+), 884 deletions(-)
 delete mode 100644 abs/extra/syslinux/syslinux-6.02-fix-bios-isolinux.patch
 delete mode 100644 abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch
 delete mode 100644 abs/extra/syslinux/syslinux-6.02-fix-efi-ovmf.patch

diff --git a/abs/extra/syslinux/PKGBUILD b/abs/extra/syslinux/PKGBUILD
index e68cc11..4b81011 100644
--- a/abs/extra/syslinux/PKGBUILD
+++ b/abs/extra/syslinux/PKGBUILD
@@ -1,18 +1,26 @@
-# Maintainer : Tobias Powalowski <tpowa@archlinux.org>
-# Maintainer : Thomas Bächler <thomas@archlinux.org>
-# Contributor: Keshav Padram Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+# Maintainer: Anatol Pomozov <anatol.pomozov@gmail.com>
+# Contributor: Keshav Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
 
-pkgname="syslinux"
-pkgver="6.02"
-pkgrel="8"
-arch=('x86_64' 'i686')
-pkgdesc="Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE"
-url="http://syslinux.zytor.com/"
-license=('GPL2')
-options=('!makeflags' '!emptydirs')
-backup=('boot/syslinux/syslinux.cfg')
-makedepends=('python2' 'nasm' 'gnu-efi-libs')
-depends=('perl' 'glibc')
+pkgname=syslinux
+pkgver=6.03
+_tag=syslinux-$pkgver
+pkgrel=2
+pkgdesc='Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE'
+url='http://www.syslinux.org/'
+arch=(i686 x86_64)
+backup=(boot/syslinux/syslinux.cfg)
+install=syslinux.install
+license=(GPL2)
+# syslinux build system is a mess of submakes that does not work with -jN
+# efi32/com32 do not like Arch cflags/ldflags, though it would be nice to have the flags for userspace tools
+options=(!makeflags !buildflags)
+makedepends=(git python2 nasm upx asciidoc)
+if [[ "$CARCH" == x86_64 ]]; then
+  # efi32 needs it
+  makedepends+=(lib32-glibc)
+fi
 optdepends=('perl-passwd-md5:  For md5pass'
             'perl-digest-sha1: For sha1pass'
             'mtools:           For mkdiskimage and syslinux support'
@@ -20,174 +28,53 @@ optdepends=('perl-passwd-md5:  For md5pass'
             'util-linux:       For isohybrid'
             'efibootmgr:       For EFI support'
             'dosfstools:       For EFI support')
-install="${pkgname}.install"
-source=("https://www.kernel.org/pub/linux/utils/boot/syslinux/${pkgname}-${pkgver}.tar.xz"
-        'syslinux.cfg'
-        'syslinux-install_update'
-        'syslinux-6.02-fix-chainloading.patch'
-        'syslinux-6.02-fix-bios-isolinux.patch'
-        'syslinux-6.02-fix-efi-ovmf.patch')
-prepare() {
-    
-    cd "${srcdir}/${pkgname}-${pkgver}/"
-    
-    ## Do not try to build the Windows or DOS installers and DIAG files
-    sed 's|diag libinstaller dos win32 win64 dosutil txt|libinstaller txt|g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
-    sed 's|win32/syslinux.exe win64/syslinux64.exe||g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
-    sed 's|dosutil/*.com dosutil/*.sys||g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
-    sed 's|dos/syslinux.com||g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
-    sed 's|INSTALLSUBDIRS = com32 utils dosutil|INSTALLSUBDIRS = com32 utils|g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
-    sed 's|install -m 644 -c $(INSTALL_DIAG) $(INSTALLROOT)$(DIAGDIR)|# install -m 644 -c $(INSTALL_DIAG) $(INSTALLROOT)$(DIAGDIR)|g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
-    
-    ## Fix FHS manpage path
-    sed 's|/usr/man|/usr/share/man|g' -i "${srcdir}/${pkgname}-${pkgver}/mk/syslinux.mk" || true
-    
-    # fix chainloading
-    # http://bugzilla.syslinux.org/show_bug.cgi?id=31
-    # http://www.syslinux.org/archives/2013-October/020971.html
-    patch -Np1 -i "${srcdir}/syslinux-6.02-fix-chainloading.patch"
-    
-    # fix bios booting from isohybrid
-    # http://www.syslinux.org/archives/2013-November/021189.html
-    patch -Np1 -i "${srcdir}/syslinux-6.02-fix-bios-isolinux.patch"
 
-    # fix efi booting in qemu/ovmf
-    # http://bugzilla.syslinux.org/show_bug.cgi?id=23
-    patch -Np1 -i  "${srcdir}/syslinux-6.02-fix-efi-ovmf.patch"
-    
-}
+# The syslinux-install_update script is maintained at https://gist.github.com/pyther/772138
+# Script not yet updated for syslinux-efi
+source=(git://git.kernel.org/pub/scm/boot/syslinux/syslinux.git#tag=$_tag
+        syslinux.cfg
+        syslinux-install_update)
+sha1sums=('SKIP'
+          '1145f454bd297d373ad123425f93620c3e92f585'
+          'd22e7e3fc544cf8a49f27ae9a25f17e65f575ea1')
 
-_build_syslinux_bios() {
-    
-    rm -rf "${srcdir}/${pkgname}-${pkgver}-bios/" || true
-    cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-bios"
-    cd "${srcdir}/${pkgname}-${pkgver}-bios/"
-    
-    ## Do not try to build syslinux with our default LDFLAGS, it will fail
-    unset LDFLAGS
-    make PYTHON="python2" bios
-    make PYTHON="python2" bios installer
-    
-}
+_targets='bios efi32'
+case "$CARCH" in
+  x86_64) _targets+=' efi64' ;;
+esac
 
-_build_syslinux_efi64() {
-    
-    rm -rf "${srcdir}/${pkgname}-${pkgver}-efi64/" || true
-    cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-efi64"
-    cd "${srcdir}/${pkgname}-${pkgver}-efi64/"
-    
-    ## Unset all compiler FLAGS for efi64 build
-    unset CFLAGS
-    unset CPPFLAGS
-    unset CXXFLAGS
-    unset LDFLAGS
-    unset MAKEFLAGS
-    
-    make PYTHON="python2" efi64
-    make PYTHON="python2" efi64 installer
-    
-}
+prepare() {
+  cd syslinux
 
-_build_syslinux_efi32() {
-    
-    rm -rf "${srcdir}/${pkgname}-${pkgver}-efi32/" || true
-    cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-efi32"
-    cd "${srcdir}/${pkgname}-${pkgver}-efi32/"
-    
-    ## Unset all compiler FLAGS for efi32 build
-    unset CFLAGS
-    unset CPPFLAGS
-    unset CXXFLAGS
-    unset LDFLAGS
-    unset MAKEFLAGS
-    
-    make PYTHON="python2" efi32
-    make PYTHON="python2" efi32 installer
-    
-}
+  # do not swallow efi compilation output to make debugging easier
+  sed 's|> /dev/null 2>&1||' -i efi/check-gnu-efi.sh
 
-build() {
-    
-    cd "${srcdir}/${pkgname}-${pkgver}/"
-    
-    ## Build syslinux-efi
-    if [[ "${CARCH}" == "x86_64" ]]; then
-        _build_syslinux_efi64
-    fi
-    
-    if [[ "${CARCH}" == "i686" ]]; then
-        _build_syslinux_efi32
-    fi
-    
-    ## Build syslinux-bios
-    _build_syslinux_bios
-    
+  # disable debug and development flags to reduce bootloader size
+  truncate --size 0 mk/devel.mk
 }
 
-_package_syslinux_bios() {
-    
-    cd "${srcdir}/${pkgname}-${pkgver}-bios/"
-    
-    ## Install Syslinux bios
-    make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/bios/" bios install
-    
-    ## Remove syslinux.exe,syslinux64.exe,syslinux.com and dosutil dir
-    rm "${pkgdir}/usr/lib/syslinux/bios"/syslinux.{com,exe} || true
-    rm "${pkgdir}/usr/lib/syslinux/bios/syslinux64.exe" || true
-    rm -rf "${pkgdir}/usr/lib/syslinux/bios/dosutil/" || true
-    
-    ## Remove com32 and diag dirs
-    rm -rf "${pkgdir}/usr/lib/syslinux/bios/diag/" || true
-    rm -rf "${pkgdir}/usr/lib/syslinux/bios/com32/" || true
-    
-    ## Move extlinux binary to /usr/bin
-    install -d "${pkgdir}/usr/bin"
-    mv "${pkgdir}/sbin/extlinux" "${pkgdir}/usr/bin/extlinux"
-    rm -rf "${pkgdir}/sbin/"
-    
-    ## Install docs
-    install -d "${pkgdir}/usr/share/doc"
-    cp -ar "${srcdir}/${pkgname}-${pkgver}/doc" "${pkgdir}/usr/share/doc/syslinux"
-    
-    ## Install the default configuration
-    install -D -m0644 "${srcdir}/syslinux.cfg" "${pkgdir}/boot/syslinux/syslinux.cfg"
-    
-    ## Install the installation and update script
-    ## This script is maintained at git://gist.github.com/772138.git
-    ## Script not yet updated for syslinux-efi
-    install -D -m0755 "${srcdir}/syslinux-install_update" "${pkgdir}/usr/bin/syslinux-install_update"
-    
+build() {
+  cd syslinux
+  make PYTHON=python2 $_targets
 }
 
-_package_syslinux_efi() {
-    
-    cd "${srcdir}/${pkgname}-${pkgver}/"
-    
-    if [[ "${CARCH}" == "x86_64" ]]; then
-        cd "${srcdir}/${pkgname}-${pkgver}-efi64/"
-        make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/" efi64 install
-    fi
-    
-    if [[ "${CARCH}" == "i686" ]]; then
-        cd "${srcdir}/${pkgname}-${pkgver}-efi32/"
-        make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/" efi32 install
-    fi
-    
+check() {
+  cd syslinux
+  make unittest
 }
 
 package() {
-    
-    cd "${srcdir}/${pkgname}-${pkgver}/"
-    
-    _package_syslinux_efi
-    
-    _package_syslinux_bios
-    
-}
+  cd syslinux
+  make $_targets install INSTALLROOT="$pkgdir" SBINDIR=/usr/bin MANDIR=/usr/share/man AUXDIR=/usr/lib/syslinux
 
-md5sums=('6f275813a1b08cf852e55c0a3f8fbc78'
-         '46ca150f53322ff8f1597d9a342f7e40'
-         '9376f18fa3e42fc36cffa4cff0a84c09'
-         '9dbede6b71a4de9e46aac4aad65334d7'
-         'adf71eceb4fccecd9a7efe1ab3d54918'
-         '62d22b101ef2ef53e25b4f86d9f41cb5')
+  rm -r "$pkgdir"/usr/lib/syslinux/{com32,dosutil,syslinux.com}
+  install -D -m644 COPYING "$pkgdir"/usr/share/licenses/syslinux/COPYING
+  install -d "$pkgdir"/usr/share/doc
+  cp -ar doc "$pkgdir"/usr/share/doc/syslinux
+
+  install -d "$pkgdir"/usr/lib/syslinux/bios
+  mv "$pkgdir"/usr/lib/syslinux/{*.bin,*.c32,*.0,memdisk} "$pkgdir"/usr/lib/syslinux/bios 
+
+  install -D -m0644 ../syslinux.cfg "$pkgdir"/boot/syslinux/syslinux.cfg
+  install -D -m0755 ../syslinux-install_update "$pkgdir"/usr/bin/syslinux-install_update
+}
diff --git a/abs/extra/syslinux/syslinux-6.02-fix-bios-isolinux.patch b/abs/extra/syslinux/syslinux-6.02-fix-bios-isolinux.patch
deleted file mode 100644
index 48df46f..0000000
--- a/abs/extra/syslinux/syslinux-6.02-fix-bios-isolinux.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/core/isolinux.asm b/core/isolinux.asm
-index bd4e9556922d..c4db4133e274 100644
---- a/core/isolinux.asm
-+++ b/core/isolinux.asm
-@@ -420,7 +420,7 @@ MaxLMA		equ 384*1024		; Reasonable limit (384K)
- 		call getlinsec
- 		pop eax
- 		pop cx
--		mov dx,cx
-+		movzx edx,cx
- 		pop bp
- 		pop bx
diff --git a/abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch b/abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch
deleted file mode 100644
index 6fd7ef4..0000000
--- a/abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Reported-by: Dark Raven <drdarkraven at gmail.com>
-Signed-off-by: Raphael S. Carvalho <raphael.scarv at gmail.com>
----
- com32/lib/syslinux/disk.c |   22 ++++++++++++++--------
- 1 files changed, 14 insertions(+), 8 deletions(-)
-
-diff --git a/com32/lib/syslinux/disk.c b/com32/lib/syslinux/disk.c
-index 0b0c737..47ecb52 100644
---- a/com32/lib/syslinux/disk.c
-+++ b/com32/lib/syslinux/disk.c
-@@ -171,22 +171,28 @@ out:
- static void *ebios_setup(const struct disk_info *const diskinfo, com32sys_t *inreg,
- 			 uint64_t lba, uint8_t count, uint8_t op_code)
- {
--    static __lowmem struct disk_ebios_dapa dapa;
-+    static struct disk_ebios_dapa *dapa = NULL;
-     void *buf;
-
-+    if (!dapa) {
-+	dapa = lmalloc(sizeof *dapa);
-+	if (!dapa)
-+	    return NULL;
-+    }
-+
-     buf = lmalloc(count * diskinfo->bps);
-     if (!buf)
- 	return NULL;
-
--    dapa.len = sizeof(dapa);
--    dapa.count = count;
--    dapa.off = OFFS(buf);
--    dapa.seg = SEG(buf);
--    dapa.lba = lba;
-+    dapa->len = sizeof(*dapa);
-+    dapa->count = count;
-+    dapa->off = OFFS(buf);
-+    dapa->seg = SEG(buf);
-+    dapa->lba = lba;
-
-     inreg->eax.b[1] = op_code;
--    inreg->esi.w[0] = OFFS(&dapa);
--    inreg->ds = SEG(&dapa);
-+    inreg->esi.w[0] = OFFS(dapa);
-+    inreg->ds = SEG(dapa);
-     inreg->edx.b[0] = diskinfo->disk;
-
-     return buf;
diff --git a/abs/extra/syslinux/syslinux-6.02-fix-efi-ovmf.patch b/abs/extra/syslinux/syslinux-6.02-fix-efi-ovmf.patch
deleted file mode 100644
index f33f4c1..0000000
--- a/abs/extra/syslinux/syslinux-6.02-fix-efi-ovmf.patch
+++ /dev/null
@@ -1,621 +0,0 @@
-The value of the field rva_and_sizes_nr is used by OVMF to check the
-consistency of the PE file with respect to the field optional_hdr_sz. It
-now have the right value.
-
-Signed-off-by: Celelibi <celelibi at gmail.com>
----
- efi/wrapper.c |  6 +++---
- efi/wrapper.h | 28 ++++++++++++++++------------
- 2 files changed, 19 insertions(+), 15 deletions(-)
-
-diff --git a/efi/wrapper.c b/efi/wrapper.c
-index 04c895f..ec77271 100644
---- a/efi/wrapper.c
-+++ b/efi/wrapper.c
-@@ -102,7 +102,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 		e_hdr.image_sz = total_sz;
- 		e_hdr.headers_sz = 512;
- 		e_hdr.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
--		e_hdr.rva_and_sizes_nr = 1;
-+		e_hdr.rva_and_sizes_nr = sizeof(e_hdr.data_directory) / sizeof(__uint64_t);
- 		fwrite(&e_hdr, sizeof(e_hdr), 1, f);
- 	}
- 	else if (class == ELFCLASS64) {
-@@ -130,7 +130,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 		e_hdr_pe32p.image_sz = total_sz;
- 		e_hdr_pe32p.headers_sz = 512;
- 		e_hdr_pe32p.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
--		e_hdr_pe32p.rva_and_sizes_nr = 1;
-+		e_hdr_pe32p.rva_and_sizes_nr = sizeof(e_hdr_pe32p.data_directory) / sizeof(__uint64_t);
- 		fwrite(&e_hdr_pe32p, sizeof(e_hdr_pe32p), 1, f);
- 	}
- 
-@@ -237,7 +237,7 @@ int main(int argc, char **argv)
- 		fprintf(stderr, "Unsupported architecture\n");
- 		exit(EXIT_FAILURE);
- 	}
--		
-+
- 	if (id[EI_MAG0] != ELFMAG0 ||
- 	    id[EI_MAG1] != ELFMAG1 ||
- 	    id[EI_MAG2] != ELFMAG2 ||
-diff --git a/efi/wrapper.h b/efi/wrapper.h
-index 4f76991..0e6b38e 100644
---- a/efi/wrapper.h
-+++ b/efi/wrapper.h
-@@ -102,12 +102,14 @@ struct extra_hdr {
- 	__uint32_t heap_commit_sz;
- 	__uint32_t loader_flags;
- 	__uint32_t rva_and_sizes_nr;
--	__uint64_t export_table;
--	__uint64_t import_table;
--	__uint64_t resource_table;
--	__uint64_t exception_table;
--	__uint64_t certification_table;
--	__uint64_t base_relocation_table;
-+	struct {
-+		__uint64_t export_table;
-+		__uint64_t import_table;
-+		__uint64_t resource_table;
-+		__uint64_t exception_table;
-+		__uint64_t certification_table;
-+		__uint64_t base_relocation_table;
-+	} data_directory;
- } __packed;
- 
- /* Extra header for PE32+ format 
-@@ -136,12 +138,14 @@ struct extra_hdr_pe32p {
- 	__uint64_t heap_commit_sz;
- 	__uint32_t loader_flags;
- 	__uint32_t rva_and_sizes_nr;
--	__uint64_t export_table;
--	__uint64_t import_table;
--	__uint64_t resource_table;
--	__uint64_t exception_table;
--	__uint64_t certification_table;
--	__uint64_t base_relocation_table;
-+	struct {
-+		__uint64_t export_table;
-+		__uint64_t import_table;
-+		__uint64_t resource_table;
-+		__uint64_t exception_table;
-+		__uint64_t certification_table;
-+		__uint64_t base_relocation_table;
-+	} data_directory;
- } __packed;
- 
- struct section {
-In the generated PE file, the section header for the .text section used
-to address more than the whole file. Starting at offset 0 (before the
-end of the headers) is illegal and is rejected by OVMF. Giving a size
-greater than the actual file size is also illegal and rejected.
-
-Moreover, the actual data inside the PE file have to be aligned to at
-least 512 bytes. Hence, .text need to be aligned as well.
-
-Signed-off-by: Celelibi <celelibi at gmail.com>
----
- efi/wrapper.c | 44 +++++++++++++++++++++++++-------------------
- 1 file changed, 25 insertions(+), 19 deletions(-)
-
-diff --git a/efi/wrapper.c b/efi/wrapper.c
-index ec77271..bd2c175 100644
---- a/efi/wrapper.c
-+++ b/efi/wrapper.c
-@@ -54,11 +54,15 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 	struct coff_hdr c_hdr;
- 	struct header hdr;
- 	struct coff_reloc c_rel;
--	__uint32_t total_sz = so_size;
-+	__uint32_t total_sz = data_size;
- 	__uint32_t dummy = 0;
- 	__uint32_t hdr_sz;
- 	__uint32_t reloc_start, reloc_end;
- 
-+	hdr_sz = 512;
-+	total_sz += hdr_sz;
-+	entry += hdr_sz;
-+
- 	memset(&hdr, 0, sizeof(hdr));
- 	hdr.msdos_signature = MSDOS_SIGNATURE;
- 
-@@ -77,11 +81,6 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 	c_hdr.nr_sections = 2;
- 	c_hdr.nr_syms = 1;
- 	if (class == ELFCLASS32) {
--		hdr_sz = sizeof(o_hdr) + sizeof(t_sec) + sizeof(e_hdr) +
--				sizeof(r_sec) + sizeof(c_hdr) + sizeof(hdr) + sizeof(c_rel)
--				+ sizeof(dummy);
--		total_sz += hdr_sz;
--		entry += hdr_sz;
- 		c_hdr.arch = IMAGE_FILE_MACHINE_I386;
- 		c_hdr.characteristics = IMAGE_FILE_32BIT_MACHINE |
- 			IMAGE_FILE_DEBUG_STRIPPED | IMAGE_FILE_EXECUTABLE_IMAGE |
-@@ -92,25 +91,20 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 		o_hdr.format = PE32_FORMAT;
- 		o_hdr.major_linker_version = 0x02;
- 		o_hdr.minor_linker_version = 0x14;
--		o_hdr.code_sz = total_sz;
-+		o_hdr.code_sz = data_size;
- 		o_hdr.entry_point = entry;
- 		o_hdr.initialized_data_sz = data_size;
- 		fwrite(&o_hdr, sizeof(o_hdr), 1, f);
- 		memset(&e_hdr, 0, sizeof(e_hdr));
- 		e_hdr.section_align = 4096;
- 		e_hdr.file_align = 512;
--		e_hdr.image_sz = total_sz;
--		e_hdr.headers_sz = 512;
-+		e_hdr.image_sz = hdr_sz + so_size;
-+		e_hdr.headers_sz = hdr_sz;
- 		e_hdr.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
- 		e_hdr.rva_and_sizes_nr = sizeof(e_hdr.data_directory) / sizeof(__uint64_t);
- 		fwrite(&e_hdr, sizeof(e_hdr), 1, f);
- 	}
- 	else if (class == ELFCLASS64) {
--		hdr_sz = sizeof(o_hdr_pe32p) + sizeof(t_sec) + sizeof(e_hdr_pe32p) +
--				sizeof(r_sec) + sizeof(c_hdr) + sizeof(hdr) + sizeof(c_rel)
--				+ sizeof(dummy);
--		total_sz += hdr_sz;
--		entry += hdr_sz;
- 		c_hdr.arch = IMAGE_FILE_MACHINE_X86_64;
- 		c_hdr.characteristics = IMAGE_FILE_DEBUG_STRIPPED | IMAGE_FILE_EXECUTABLE_IMAGE |
- 			IMAGE_FILE_LINE_NUMBERS_STRIPPED;
-@@ -120,15 +114,15 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 		o_hdr_pe32p.format = PE32P_FORMAT;
- 		o_hdr_pe32p.major_linker_version = 0x02;
- 		o_hdr_pe32p.minor_linker_version = 0x14;
--		o_hdr_pe32p.code_sz = total_sz;
-+		o_hdr_pe32p.code_sz = data_size;
- 		o_hdr_pe32p.entry_point = entry;
- 		o_hdr.initialized_data_sz = data_size;
- 		fwrite(&o_hdr_pe32p, sizeof(o_hdr_pe32p), 1, f);
- 		memset(&e_hdr_pe32p, 0, sizeof(e_hdr));
- 		e_hdr_pe32p.section_align = 4096;
- 		e_hdr_pe32p.file_align = 512;
--		e_hdr_pe32p.image_sz = total_sz;
--		e_hdr_pe32p.headers_sz = 512;
-+		e_hdr_pe32p.image_sz = hdr_sz + so_size;
-+		e_hdr_pe32p.headers_sz = hdr_sz;
- 		e_hdr_pe32p.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
- 		e_hdr_pe32p.rva_and_sizes_nr = sizeof(e_hdr_pe32p.data_directory) / sizeof(__uint64_t);
- 		fwrite(&e_hdr_pe32p, sizeof(e_hdr_pe32p), 1, f);
-@@ -136,8 +130,10 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 
- 	memset(&t_sec, 0, sizeof(t_sec));
- 	strcpy((char *)t_sec.name, ".text");
--	t_sec.virtual_sz = total_sz;
--	t_sec.raw_data_sz = total_sz;
-+	t_sec.virtual_sz = data_size;
-+	t_sec.virtual_address = hdr_sz;
-+	t_sec.raw_data_sz = t_sec.virtual_sz;
-+	t_sec.raw_data = t_sec.virtual_address;
- 	t_sec.characteristics = IMAGE_SCN_CNT_CODE |
- 		IMAGE_SCN_ALIGN_16BYTES | IMAGE_SCN_MEM_EXECUTE |
- 		IMAGE_SCN_MEM_READ;
-@@ -163,6 +159,16 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 	fwrite(&c_rel, sizeof(c_rel), 1, f);
- 	fwrite(&dummy, sizeof(dummy), 1, f);
- 
-+	/*
-+	 * Add some padding to align the ELF as needed
-+	 */
-+	if (ftell(f) > t_sec.virtual_address) {
-+		// A fseek that rewind would be a bug hard to track
-+		fprintf(stderr, "PE+ headers are too large.\n");
-+		exit(EXIT_FAILURE);
-+	}
-+
-+	fseek(f, t_sec.virtual_address, SEEK_SET);
- }
- 
- static void usage(char *progname)
-There is no need to have a relocation section that nothing points at.
-The image is still seen as relocatable as long as the Characteristics of
-the FileHeader do not say otherwise.
-
-Moreover, the field base_relocation_table wasn't initialized properly
-leading to unpredictable bugs.
-
-Signed-off-by: Celelibi <celelibi at gmail.com>
----
-
-I'm not 100% positive about the uselessness of the relocation section. However:
-1) it works on my real hardware;
-2) OVMF doesn't check the section headers at all;
-3) all the docs I could find say that the section names are arbitrary;
-4) the only way to make the relocation actually happen is by setting the
-base_relocation_table field of the extra headers to point to this section;
-5) The right way to indicate the image is not relocatable would be by setting
-the characteristics IMAGE_FILE_RELOCS_STRIPPED in the coff header.
-
-Moreover, the relocation entry cannot be inserted before the end of the headers
-(512 bytes), this mean we would have to push everything a few bytes further.
-And I think it's better if it can be avoided. :)
-
- efi/wrapper.c | 28 +++-------------------------
- 1 file changed, 3 insertions(+), 25 deletions(-)
-
-diff --git a/efi/wrapper.c b/efi/wrapper.c
-index bd2c175..9652368 100644
---- a/efi/wrapper.c
-+++ b/efi/wrapper.c
-@@ -48,14 +48,12 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- {
- 	struct optional_hdr o_hdr;
- 	struct optional_hdr_pe32p o_hdr_pe32p;
--	struct section t_sec, r_sec;
-+	struct section t_sec;
- 	struct extra_hdr e_hdr;
- 	struct extra_hdr_pe32p e_hdr_pe32p;
- 	struct coff_hdr c_hdr;
- 	struct header hdr;
--	struct coff_reloc c_rel;
- 	__uint32_t total_sz = data_size;
--	__uint32_t dummy = 0;
- 	__uint32_t hdr_sz;
- 	__uint32_t reloc_start, reloc_end;
- 
-@@ -78,7 +76,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 	fwrite(&hdr, sizeof(hdr), 1, f);
- 
- 	memset(&c_hdr, 0, sizeof(c_hdr));
--	c_hdr.nr_sections = 2;
-+	c_hdr.nr_sections = 1;
- 	c_hdr.nr_syms = 1;
- 	if (class == ELFCLASS32) {
- 		c_hdr.arch = IMAGE_FILE_MACHINE_I386;
-@@ -118,7 +116,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 		o_hdr_pe32p.entry_point = entry;
- 		o_hdr.initialized_data_sz = data_size;
- 		fwrite(&o_hdr_pe32p, sizeof(o_hdr_pe32p), 1, f);
--		memset(&e_hdr_pe32p, 0, sizeof(e_hdr));
-+		memset(&e_hdr_pe32p, 0, sizeof(e_hdr_pe32p));
- 		e_hdr_pe32p.section_align = 4096;
- 		e_hdr_pe32p.file_align = 512;
- 		e_hdr_pe32p.image_sz = hdr_sz + so_size;
-@@ -140,26 +138,6 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 	fwrite(&t_sec, sizeof(t_sec), 1, f);
- 
- 	/*
--	 * Write our dummy relocation and reloc section.
--	 */
--	memset(&r_sec, 0, sizeof(r_sec));
--	strcpy((char *)r_sec.name, ".reloc");
--	r_sec.virtual_sz = sizeof(c_rel);
--	r_sec.virtual_address = ftell(f) + sizeof(r_sec);
--	r_sec.raw_data_sz = r_sec.virtual_sz;
--	r_sec.raw_data = r_sec.virtual_address;
--	r_sec.characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA |
--		IMAGE_SCN_ALIGN_1BYTES | IMAGE_SCN_MEM_DISCARDABLE |
--		IMAGE_SCN_MEM_READ;
--	fwrite(&r_sec, sizeof(r_sec), 1, f);
--
--	memset(&c_rel, 0, sizeof(c_rel));
--	c_rel.virtual_address = ftell(f) + sizeof(c_rel);
--	c_rel.symtab_index = 10;
--	fwrite(&c_rel, sizeof(c_rel), 1, f);
--	fwrite(&dummy, sizeof(dummy), 1, f);
--
--	/*
- 	 * Add some padding to align the ELF as needed
- 	 */
- 	if (ftell(f) > t_sec.virtual_address) {
-PE headers code_sz and image_sz indicate more or less, the size of the
-file and the size of the in-memory image. They are now given the right
-value.
-
-In the ELF format, only the program headers are reliable to determine
-the actually needed part of the file and the in-memory size.
-
-The .bss section should always be marked as NOLOAD for ld since its
-content shouldn't be included into the binary file.
-
-Signed-off-by: Celelibi <celelibi at gmail.com>
----
-
-Again, I'm not 100% positive about the semantics of NOLOAD in a linker script.
-However I found this make things work better.
-Actually the file core/fs/fs.o have a .bss16 section that is not empty. If I
-understood correctly, only .bss can be empty in a .o. Thus ld generates the
-zeros that belong to that section in the .o. Then, when merging the section
-.bss16 into the .bss of syslinux.so, ld is forced to generate ALL the zeros
-that belong to the .bss section. Marking this section as NOLOAD make ld to
-ignore its content but still produce a PT_LOAD program header with the right
-memory size, as needed for the bss.
-
- efi/i386/syslinux.ld   |   4 +-
- efi/wrapper.c          | 138 +++++++++++++++----------------------------------
- efi/x86_64/syslinux.ld |   4 +-
- 3 files changed, 45 insertions(+), 101 deletions(-)
-
-diff --git a/efi/i386/syslinux.ld b/efi/i386/syslinux.ld
-index 523a9b9..bab3fc7 100644
---- a/efi/i386/syslinux.ld
-+++ b/efi/i386/syslinux.ld
-@@ -136,7 +136,7 @@ SECTIONS
- 		*(.strtab)
- 	}
- 
--	.bss : {
-+	.bss (NOLOAD) : {
- 		/* the EFI loader doesn't seem to like a .bss section,
- 		   so we stick it all into .data: */
- 		__bss_start = .;
-@@ -153,7 +153,7 @@ SECTIONS
- 	__bss_dwords = (__bss_len + 3) >> 2;
- 
- 	. = ALIGN(128);
--	
-+
- 	/* Very large objects which don't need to be zeroed */
- 
- 	.hugebss : {
-diff --git a/efi/wrapper.c b/efi/wrapper.c
-index 9652368..a5247ae 100644
---- a/efi/wrapper.c
-+++ b/efi/wrapper.c
-@@ -35,7 +35,7 @@ typedef Elf64_Addr Elf_Addr;
- #endif
- 
- /*
-- * 'so_size' is the file size of the ELF shared object.
-+ * 'so_memsz' is the size of the ELF shared object once loaded.
-  * 'data_size' is the size of initialised data in the shared object.
-  *  'class' dictates how the header is written
-  * 	For 32bit machines (class == ELFCLASS32), the optional
-@@ -44,7 +44,7 @@ typedef Elf64_Addr Elf_Addr;
-  * 	header includes PE32+header fields
-  */
- static void write_header(FILE *f, __uint32_t entry, size_t data_size,
--			 __uint32_t so_size, __uint8_t class)
-+			 __uint32_t so_memsz, __uint8_t class)
- {
- 	struct optional_hdr o_hdr;
- 	struct optional_hdr_pe32p o_hdr_pe32p;
-@@ -96,7 +96,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 		memset(&e_hdr, 0, sizeof(e_hdr));
- 		e_hdr.section_align = 4096;
- 		e_hdr.file_align = 512;
--		e_hdr.image_sz = hdr_sz + so_size;
-+		e_hdr.image_sz = hdr_sz + so_memsz;
- 		e_hdr.headers_sz = hdr_sz;
- 		e_hdr.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
- 		e_hdr.rva_and_sizes_nr = sizeof(e_hdr.data_directory) / sizeof(__uint64_t);
-@@ -119,7 +119,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- 		memset(&e_hdr_pe32p, 0, sizeof(e_hdr_pe32p));
- 		e_hdr_pe32p.section_align = 4096;
- 		e_hdr_pe32p.file_align = 512;
--		e_hdr_pe32p.image_sz = hdr_sz + so_size;
-+		e_hdr_pe32p.image_sz = hdr_sz + so_memsz;
- 		e_hdr_pe32p.headers_sz = hdr_sz;
- 		e_hdr_pe32p.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
- 		e_hdr_pe32p.rva_and_sizes_nr = sizeof(e_hdr_pe32p.data_directory) / sizeof(__uint64_t);
-@@ -157,17 +157,16 @@ static void usage(char *progname)
- 
- int main(int argc, char **argv)
- {
--	struct stat st;
- 	Elf32_Ehdr e32_hdr;
- 	Elf64_Ehdr e64_hdr;
- 	__uint32_t entry;
- 	__uint8_t class;
--	__uint64_t shoff;
--	__uint16_t shnum, shentsize, shstrndx;
-+	__uint64_t phoff = 0;
-+	__uint16_t phnum = 0, phentsize = 0;
- 	unsigned char *id;
- 	FILE *f_in, *f_out;
- 	void *buf;
--	size_t datasz, rv;
-+	size_t datasz, memsz, rv;
- 
- 	if (argc < 3) {
- 		usage(argv[0]);
-@@ -180,11 +179,6 @@ int main(int argc, char **argv)
- 		exit(EXIT_FAILURE);
- 	}
- 
--	if (stat(argv[1], &st) != 0) {
--		perror("stat");
--		exit(EXIT_FAILURE);
--	}
--
- 	f_out = fopen(argv[2], "w");
- 	if (!f_out) {
- 		perror("fopen");
-@@ -194,15 +188,14 @@ int main(int argc, char **argv)
- 	/*
- 	 * Parse the ELF header and find the entry point.
- 	 */
-- 	fread((void *)&e32_hdr, sizeof(e32_hdr), 1, f_in);
-+	fread((void *)&e32_hdr, sizeof(e32_hdr), 1, f_in);
- 	if (e32_hdr.e_ident[EI_CLASS] == ELFCLASS32) {
- 		id = e32_hdr.e_ident;
- 		class = ELFCLASS32;
- 		entry = e32_hdr.e_entry;
--		shoff = e32_hdr.e_shoff;
--		shnum = e32_hdr.e_shnum;
--		shstrndx = e32_hdr.e_shstrndx;
--		shentsize = e32_hdr.e_shentsize;
-+		phoff = e32_hdr.e_phoff;
-+		phnum = e32_hdr.e_phnum;
-+		phentsize = e32_hdr.e_phentsize;
- 	}
- 	else if (e32_hdr.e_ident[EI_CLASS] == ELFCLASS64) {
- 		/* read the header again for x86_64 
-@@ -213,10 +206,9 @@ int main(int argc, char **argv)
- 		fread((void *)&e64_hdr, sizeof(e64_hdr), 1, f_in);
- 		id = e64_hdr.e_ident;
- 		entry = e64_hdr.e_entry;
--		shoff = e64_hdr.e_shoff;
--		shnum = e64_hdr.e_shnum;
--		shstrndx = e64_hdr.e_shstrndx;
--		shentsize = e64_hdr.e_shentsize;
-+		phoff = e64_hdr.e_phoff;
-+		phnum = e64_hdr.e_phnum;
-+		phentsize = e64_hdr.e_phentsize;
- 	} else {
- 		fprintf(stderr, "Unsupported architecture\n");
- 		exit(EXIT_FAILURE);
-@@ -230,98 +222,47 @@ int main(int argc, char **argv)
- 		exit(EXIT_FAILURE);
- 	}
- 
--	if (!shoff || !shnum || (shstrndx == SHN_UNDEF)) {
--		fprintf(stderr, "Cannot find section table\n");
-+	if (!phoff || !phnum) {
-+		fprintf(stderr, "Cannot find segment table\n");
- 		exit(EXIT_FAILURE);
- 	}
- 
- 	/*
--	 * Find the beginning of the .bss section. Everything preceding
--	 * it is copied verbatim to the output file.
-+	 * Find the LOAD program header. Everything in this segment
-+	 * is copied verbatim to the output file.
-+	 * Although there may be several LOAD program headers, only
-+	 * one is currently copied.
- 	 */
- 	if (e32_hdr.e_ident[EI_CLASS] == ELFCLASS32) {
--		const char *shstrtab, *name;
--		Elf32_Shdr shdr;
-+		Elf32_Phdr phdr;
- 		int i;
--		void *strtab;
--
--		fseek(f_in, shoff, SEEK_SET);
--
--		/* First find the strtab section */
--		fseek(f_in, shstrndx * shentsize, SEEK_CUR);
--		fread(&shdr, sizeof(shdr), 1, f_in);
- 
--		strtab = malloc(shdr.sh_size);
--		if (!strtab) {
--			fprintf(stderr, "Failed to malloc strtab\n");
--			exit(EXIT_FAILURE);
--		}
--
--		fseek(f_in, shdr.sh_offset, SEEK_SET);
--		fread(strtab, shdr.sh_size, 1, f_in);
--
--		/* Now search for the .bss section */
--		fseek(f_in, shoff, SEEK_SET);
--		for (i = 0; i < shnum; i++) {
--			rv = fread(&shdr, sizeof(shdr), 1, f_in);
--			if (!rv) {
--				fprintf(stderr, "Failed to read section table\n");
--				exit(EXIT_FAILURE);
--			}
-+		/* Find the first LOAD program header */
-+		for (i = 0; i < phnum; i++) {
-+			fseek(f_in, phoff + i * phentsize, SEEK_SET);
-+			fread(&phdr, sizeof(phdr), 1, f_in);
- 
--			name = strtab + shdr.sh_name;
--			if (!strcmp(name, ".bss"))
-+			if (phdr.p_type == PT_LOAD)
- 				break;
- 		}
- 
--		if (i == shnum) {
--			fprintf(stderr, "Failed to find .bss section\n");
--			exit(EXIT_FAILURE);
--		}
--
--		datasz = shdr.sh_offset;
--	}
--	else if (e32_hdr.e_ident[EI_CLASS] == ELFCLASS64) {
--		const char *shstrtab, *name;
--		Elf64_Shdr shdr;
-+		datasz = phdr.p_filesz;
-+		memsz = phdr.p_memsz;
-+	} else if (e32_hdr.e_ident[EI_CLASS] == ELFCLASS64) {
-+		Elf64_Phdr phdr;
- 		int i;
--		void *strtab;
--
--		fseek(f_in, shoff, SEEK_SET);
- 
--		/* First find the strtab section */
--		fseek(f_in, shstrndx * shentsize, SEEK_CUR);
--		fread(&shdr, sizeof(shdr), 1, f_in);
--
--		strtab = malloc(shdr.sh_size);
--		if (!strtab) {
--			fprintf(stderr, "Failed to malloc strtab\n");
--			exit(EXIT_FAILURE);
--		}
-+		/* Find the first LOAD program header */
-+		for (i = 0; i < phnum; i++) {
-+			fseek(f_in, phoff + i * phentsize, SEEK_SET);
-+			fread(&phdr, sizeof(phdr), 1, f_in);
- 
--		fseek(f_in, shdr.sh_offset, SEEK_SET);
--		fread(strtab, shdr.sh_size, 1, f_in);
--
--		/* Now search for the .bss section */
--		fseek(f_in, shoff, SEEK_SET);
--		for (i = 0; i < shnum; i++) {
--			rv = fread(&shdr, sizeof(shdr), 1, f_in);
--			if (!rv) {
--				fprintf(stderr, "Failed to read section table\n");
--				exit(EXIT_FAILURE);
--			}
--
--			name = strtab + shdr.sh_name;
--			if (!strcmp(name, ".bss"))
-+			if (phdr.p_type == PT_LOAD)
- 				break;
- 		}
- 
--		if (i == shnum) {
--			fprintf(stderr, "Failed to find .bss section\n");
--			exit(EXIT_FAILURE);
--		}
--
--		datasz = shdr.sh_offset;
-+		datasz = phdr.p_filesz;
-+		memsz = phdr.p_memsz;
- 	}
- 
- 	buf = malloc(datasz);
-@@ -330,7 +271,7 @@ int main(int argc, char **argv)
- 		exit(EXIT_FAILURE);
- 	}
- 
--	write_header(f_out, entry, datasz, st.st_size, class);
-+	write_header(f_out, entry, datasz, memsz, class);
- 
- 	/* Write out the entire ELF shared object */
- 	rewind(f_in);
-@@ -341,5 +282,8 @@ int main(int argc, char **argv)
- 	}
- 
- 	fwrite(buf, datasz, rv, f_out);
-+	free(buf);
-+	fclose(f_out);
-+	fclose(f_in);
- 	return 0;
- }
-diff --git a/efi/x86_64/syslinux.ld b/efi/x86_64/syslinux.ld
-index 95160bd..450641c 100644
---- a/efi/x86_64/syslinux.ld
-+++ b/efi/x86_64/syslinux.ld
-@@ -136,7 +136,7 @@ SECTIONS
- 		*(.strtab)
- 	}
- 
--	.bss : {
-+	.bss (NOLOAD) : {
- 		/* the EFI loader doesn't seem to like a .bss section,
- 		   so we stick it all into .data: */
- 		__bss_start = .;
-@@ -153,7 +153,7 @@ SECTIONS
- 	__bss_dwords = (__bss_len + 3) >> 2;
- 
- 	. = ALIGN(128);
--	
-+
- 	/* Very large objects which don't need to be zeroed */
- 
- 	.hugebss : {
diff --git a/abs/extra/syslinux/syslinux-install_update b/abs/extra/syslinux/syslinux-install_update
index 3843b5f..513d06b 100644
--- a/abs/extra/syslinux/syslinux-install_update
+++ b/abs/extra/syslinux/syslinux-install_update
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/usr/bin/bash
 #
 # Syslinux Installer / Updater Script (for BIOS only)
 # Copyright (C) 2011-2013  Matthew Gyurgyik <pyther@pyther.net>
@@ -449,5 +449,3 @@ if [[ $SET_ACTIVE ]] || [[ $MBR ]]; then
 fi
 
 exit 0
-
-# vim: set et sw=4:
diff --git a/abs/extra/syslinux/syslinux.cfg b/abs/extra/syslinux/syslinux.cfg
index 2b77038..d7f69c2 100644
--- a/abs/extra/syslinux/syslinux.cfg
+++ b/abs/extra/syslinux/syslinux.cfg
@@ -19,13 +19,13 @@
 # The wiki provides further configuration examples
 
 DEFAULT arch
-PROMPT 0        # Set to 1 if you always want to display the boot: prompt 
+PROMPT 0        # Set to 1 if you always want to display the boot: prompt
 TIMEOUT 50
 # You can create syslinux keymaps with the keytab-lilo tool
 #KBDMAP de.ktl
 
 # Menu Configuration
-# Either menu.c32 or vesamenu32.c32 must be copied to /boot/syslinux 
+# Either menu.c32 or vesamenu32.c32 must be copied to /boot/syslinux
 UI menu.c32
 #UI vesamenu.c32
 
diff --git a/abs/extra/syslinux/syslinux.install b/abs/extra/syslinux/syslinux.install
index 4bb7f85..cbc4e9e 100644
--- a/abs/extra/syslinux/syslinux.install
+++ b/abs/extra/syslinux/syslinux.install
@@ -1,43 +1,32 @@
-post_install() {
-  
+show_efi_msg() {
   cat << EOF
 
-==> For setting up Syslinux BIOS using the syslinux-install_update script follow 
-    https://wiki.archlinux.org/index.php/Syslinux#Automatic_Install
-EOF
-  
-  ## Message specific to Syslinux 4.xx (or 5.xx) to 6.xx upgrade
-  if [ "$(vercmp $2 6.00)" -lt 0 ]; then
-    
-    cat << EOF
+==> For setting up Syslinux EFI follow
+    https://wiki.archlinux.org/index.php/Syslinux#UEFI_Systems
 
-==> If you are upgrading from Syslinux 4.xx or 5.xx, please re-install
-    (not update) Syslinux BIOS manually (not using the install script) once
-    by following https://wiki.archlinux.org/index.php/Syslinux#Manual_install
+==> The syslinux-install_update script does not currently support EFI install
 
-==> The install script may not properly upgrade Syslinux to 6.xx version
 EOF
-    
-  fi
-  
+}
+
+show_bios_autoupdate_msg() {
   cat << EOF
 
-==> For setting up Syslinux EFI follow
-    https://wiki.archlinux.org/index.php/Syslinux#UEFI_Systems
+==> For setting up Syslinux BIOS using the syslinux-install_update script follow
+    https://wiki.archlinux.org/index.php/Syslinux#Automatic_Install
+EOF
+}
 
-==> The syslinux-install_update script does not currently support EFI install
+post_install() {
+  [ -f /boot/syslinux/SYSLINUX_AUTOUPDATE ] || show_bios_autoupdate_msg
+  [ -d /sys/firmware/efi ] && show_efi_msg
 
-EOF
-  
+  true
 }
 
 post_upgrade() {
-  
   ## auto-update syslinux if /boot/syslinux/SYSLINUX_AUTOUPDATE exists
   /usr/bin/syslinux-install_update -s
-  
+
   post_install
-  
 }
-
-# vim:set ts=2 sw=2 et:
-- 
cgit v0.12