Date: Thursday, August 9, 2012 @ 13:49:54 Author: thomas Revision: 165047
Fix FS#31065 Added: syslinux/trunk/handle-ctors-dtors-via-init_array-and-fini_array.patch Modified: syslinux/trunk/PKGBUILD --------------------------------------------------------+ PKGBUILD | 10 +- handle-ctors-dtors-via-init_array-and-fini_array.patch | 67 +++++++++++++++ 2 files changed, 74 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2012-08-09 16:35:44 UTC (rev 165046) +++ PKGBUILD 2012-08-09 17:49:54 UTC (rev 165047) @@ -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" url="http://syslinux.zytor.com/" @@ -21,7 +21,8 @@ syslinux-dont-build-dos-windows-targets.patch syslinux.cfg syslinux-install_update - avoid-using-ext2_fs.patch) + avoid-using-ext2_fs.patch + handle-ctors-dtors-via-init_array-and-fini_array.patch) build() { # Do not try to build syslinux with our default LDFLAGS, it will fail @@ -31,6 +32,8 @@ 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 @@ -52,4 +55,5 @@ '1528c376e43f0eaccaa80d8ad1bc13b4' '832595501944fbcabcdc1207f4724fe7' '680750f73dc2e587ac567d057d485813' - '2e2c674a71c0c0bf265d96cfc19ce985') + '2e2c674a71c0c0bf265d96cfc19ce985' + 'd016d03f15177b1bb534ce3753b2aa9b') Added: handle-ctors-dtors-via-init_array-and-fini_array.patch =================================================================== --- handle-ctors-dtors-via-init_array-and-fini_array.patch (rev 0) +++ handle-ctors-dtors-via-init_array-and-fini_array.patch 2012-08-09 17:49:54 UTC (rev 165047) @@ -0,0 +1,67 @@ +From b6be466444740a34bacd140dccbe57f6629b15bc Mon Sep 17 00:00:00 2001 +From: "H. Peter Anvin" <h...@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 <h...@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 +