diff options
-rw-r--r-- | libre/syslinux/PKGBUILD | 10 | ||||
-rw-r--r-- | libre/syslinux/handle-ctors-dtors-via-init_array-and-fini_array.patch | 66 | ||||
-rw-r--r-- | libre/syslinux/rePKGBUILD | 5 |
3 files changed, 74 insertions, 7 deletions
diff --git a/libre/syslinux/PKGBUILD b/libre/syslinux/PKGBUILD index 6269ae93c..608316be1 100644 --- a/libre/syslinux/PKGBUILD +++ b/libre/syslinux/PKGBUILD @@ -4,7 +4,7 @@ pkgname=syslinux pkgver=4.05 -pkgrel=5 +pkgrel=6 arch=('i686' 'x86_64') pkgdesc="Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE (Parabola rebranded)" url="http://syslinux.zytor.com/" @@ -13,7 +13,8 @@ depends=('perl' 'glibc') optdepends=('perl-passwd-md5: For md5pass' 'perl-digest-sha1: For sha1pass' 'mtools: For mkdiskimage and syslinux support' - 'gptfdisk: For GPT support') + 'gptfdisk: For GPT support' + 'util-linux: For isohybrid') makedepends=('nasm') backup=('boot/syslinux/syslinux.cfg' 'boot/syslinux/splash.png') @@ -23,6 +24,7 @@ source=(http://www.kernel.org/pub/linux/utils/boot/syslinux/$pkgname-${pkgver}.t syslinux.cfg syslinux-install_update avoid-using-ext2_fs.patch + handle-ctors-dtors-via-init_array-and-fini_array.patch splash.png) build() { @@ -33,6 +35,8 @@ build() { patch -p1 -i "$srcdir"/syslinux-dont-build-dos-windows-targets.patch # fix #30084 patch -Np1 -i "$srcdir"/avoid-using-ext2_fs.patch + # fix #31065 (booting breaks with gcc 4.7) + patch -Np1 -i "$srcdir"/handle-ctors-dtors-via-init_array-and-fini_array.patch # Fix FHS manpage path sed 's|/usr/man|/usr/share/man|g' -i mk/syslinux.mk make @@ -51,10 +55,12 @@ package() { install -D -m755 "$srcdir"/syslinux-install_update "$pkgdir"/usr/sbin/syslinux-install_update # move extlinux binary to /usr/sbin mv "$pkgdir"/sbin/extlinux "$pkgdir"/usr/sbin/extlinux + rmdir "$pkgdir"/sbin } md5sums=('82299242418385da1274c9479a778cb2' '1528c376e43f0eaccaa80d8ad1bc13b4' '8dc2afca3739667e892faf04eb97e7b1' '680750f73dc2e587ac567d057d485813' '2e2c674a71c0c0bf265d96cfc19ce985' + '12a2dbd3fe59230df2f470600dd62dac' '0035b6cac6756a384b861eda8d33e4f7') diff --git a/libre/syslinux/handle-ctors-dtors-via-init_array-and-fini_array.patch b/libre/syslinux/handle-ctors-dtors-via-init_array-and-fini_array.patch new file mode 100644 index 000000000..99e0d4777 --- /dev/null +++ b/libre/syslinux/handle-ctors-dtors-via-init_array-and-fini_array.patch @@ -0,0 +1,66 @@ +From b6be466444740a34bacd140dccbe57f6629b15bc Mon Sep 17 00:00:00 2001 +From: "H. Peter Anvin" <hpa@zytor.com> +Date: Mon, 28 May 2012 21:28:52 -0700 +Subject: [PATCH 1/1] com32.ld: handle .init_array and .fini_array + +Handle constructors/destructors via .init_array and .fini_array, as +generated by newer gccs. + +Signed-off-by: H. Peter Anvin <hpa@zytor.com> +--- + com32/lib/com32.ld | 33 ++++++++++----------------------- + 1 files changed, 10 insertions(+), 23 deletions(-) + +diff --git a/com32/lib/com32.ld b/com32/lib/com32.ld +index 37ee46c..008e4ce 100644 +--- a/com32/lib/com32.ld ++++ b/com32/lib/com32.ld +@@ -36,36 +36,23 @@ SECTIONS + .rodata1 : { *(.rodata1) } + __rodata_end = .; + +- /* Ensure the __preinit_array_start label is properly aligned. We +- could instead move the label definition inside the section, but +- the linker would then create the section even if it turns out to +- be empty, which isn't pretty. */ ++ /* ++ * The difference betwee .ctors/.dtors and .init_array/.fini_array ++ * is the ordering, but we don't use prioritization for libcom32, so ++ * just lump them all together and hope that's okay. ++ */ + . = ALIGN(4); +- .preinit_array : { +- PROVIDE (__preinit_array_start = .); +- *(.preinit_array) +- PROVIDE (__preinit_array_end = .); +- } +- .init_array : { +- PROVIDE (__init_array_start = .); +- *(.init_array) +- PROVIDE (__init_array_end = .); +- } +- .fini_array : { +- PROVIDE (__fini_array_start = .); +- *(.fini_array) +- PROVIDE (__fini_array_end = .); +- } + .ctors : { + PROVIDE (__ctors_start = .); +- KEEP (*(SORT(.ctors.*))) +- KEEP (*(.ctors)) ++ KEEP (*(SORT(.preinit_array*))) ++ KEEP (*(SORT(.init_array*))) ++ KEEP (*(SORT(.ctors*))) + PROVIDE (__ctors_end = .); + } + .dtors : { + PROVIDE (__dtors_start = .); +- KEEP (*(SORT(.dtors.*))) +- KEEP (*(.dtors)) ++ KEEP (*(SORT(.fini_array*))) ++ KEEP (*(SORT(.dtors*))) + PROVIDE (__dtors_end = .); + } + +-- +1.7.6.5
\ No newline at end of file diff --git a/libre/syslinux/rePKGBUILD b/libre/syslinux/rePKGBUILD index 85ab6074e..33a96d1a1 100644 --- a/libre/syslinux/rePKGBUILD +++ b/libre/syslinux/rePKGBUILD @@ -27,13 +27,8 @@ build() { package_syslinux() { pkgdesc="Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE (Parabola rebranded)" - install=syslinux.install backup=('boot/syslinux/syslinux.cfg' 'boot/syslinux/splash.png') - optdepends=('perl-passwd-md5: For md5pass' - 'perl-digest-sha1: For sha1pass' - 'mtools: For mkdiskimage and syslinux support' - 'gptfdisk: For GPT support') # Install the default configuration install -D -m644 "$srcdir"/syslinux.cfg "$pkgdir"/boot/syslinux/syslinux.cfg # Install Parabola splash |