diff --git a/binutils/mingw-w64-symlinks/0200-remove-provide-qualifiers.patch b/binutils/mingw-w64-symlinks/0200-remove-provide-qualifiers.patch deleted file mode 100644 index 14c0e282..00000000 --- a/binutils/mingw-w64-symlinks/0200-remove-provide-qualifiers.patch +++ /dev/null @@ -1,146 +0,0 @@ -From a985e9b9deabd81e16754584f4397a638e9d3f36 Mon Sep 17 00:00:00 2001 -From: Nick Clifton -Date: Mon, 5 Feb 2018 09:12:42 +0000 -Subject: [PATCH] Import patch from mainline to remove PROVODE qualifiers - around definitions of __CTOR_LIST__ and __DTOR_LIST__ in PE linker scripts. - - PR 22762 - * scripttempl/pe.sc: Remove PROVIDE()s from __CTOR_LIST__ and - __DTOR_LIST__ symbols. Add a comment explaining why this is - necessary. - * scripttemp/pep.sc: Likewise. - * ld.texinfo (PROVIDE): Add a note about the effect of common - symbols. ---- - ld/ChangeLog | 14 ++++++++++++++ - ld/ld.texinfo | 6 ++++++ - ld/scripttempl/pe.sc | 24 ++++++++++++++++++++---- - ld/scripttempl/pep.sc | 24 ++++++++++++++++++++---- - 4 files changed, 60 insertions(+), 8 deletions(-) - -diff --git a/ld/ChangeLog b/ld/ChangeLog -index 0f00265..bf129a1 100644 ---- a/ld/ChangeLog -+++ b/ld/ChangeLog -@@ -1,3 +1,17 @@ -+2018-02-05 Nick Clifton -+ -+ Import from mainline: -+ -+ 2018-02-03 Nick Clifton -+ -+ PR 22762 -+ * scripttempl/pe.sc: Remove PROVIDE()s from __CTOR_LIST__ and -+ __DTOR_LIST__ symbols. Add a comment explaining why this is -+ necessary. -+ * scripttemp/pep.sc: Likewise. -+ * ld.texinfo (PROVIDE): Add a note about the effect of common -+ symbols. -+ - 2018-01-27 Nick Clifton - - Back to development. -diff --git a/ld/ld.texinfo b/ld/ld.texinfo -index c89915f..764c401 100644 ---- a/ld/ld.texinfo -+++ b/ld/ld.texinfo -@@ -4001,6 +4001,12 @@ underscore), the linker will silently use the definition in the program. - If the program references @samp{etext} but does not define it, the - linker will use the definition in the linker script. - -+Note - the @code{PROVIDE} directive considers a common symbol to be -+defined, even though such a symbol could be combined with the symbol -+that the @code{PROVIDE} would create. This is particularly important -+when considering constructor and destructor list symbols such as -+@samp{__CTOR_LIST__} as these are often defined as common symbols. -+ - @node PROVIDE_HIDDEN - @subsection PROVIDE_HIDDEN - @cindex PROVIDE_HIDDEN -diff --git a/ld/scripttempl/pe.sc b/ld/scripttempl/pe.sc -index c8a45ca..f56d783 100644 ---- a/ld/scripttempl/pe.sc -+++ b/ld/scripttempl/pe.sc -@@ -98,8 +98,22 @@ SECTIONS - ${RELOCATING+*(.glue_7t)} - ${RELOCATING+*(.glue_7)} - ${CONSTRUCTING+ -- PROVIDE(___CTOR_LIST__ = .); -- PROVIDE(__CTOR_LIST__ = .); -+ /* Note: we always define __CTOR_LIST__ and ___CTOR_LIST__ here, -+ we do not PROVIDE them. This is because the ctors.o startup -+ code in libgcc defines them as common symbols, with the -+ expectation that they will be overridden by the definitions -+ here. If we PROVIDE the symbols then they will not be -+ overridden and global constructors will not be run. -+ -+ This does mean that it is not possible for a user to define -+ their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that -+ ability is needed a custom linker script will have to be -+ used. (The custom script can just be a copy of this script -+ with the PROVIDE() qualifiers added). -+ -+ See PR 22762 for more details. */ -+ ___CTOR_LIST__ = .; -+ __CTOR_LIST__ = .; - LONG (-1); - KEEP(*(.ctors)); - KEEP(*(.ctor)); -@@ -107,8 +121,10 @@ SECTIONS - LONG (0); - } - ${CONSTRUCTING+ -- PROVIDE(___DTOR_LIST__ = .); -- PROVIDE(__DTOR_LIST__ = .); -+ /* See comment about __CTOR_LIST__ above. The same reasoning -+ applies here too. */ -+ ___DTOR_LIST__ = .; -+ __DTOR_LIST__ = .; - LONG (-1); - KEEP(*(.dtors)); - KEEP(*(.dtor)); -diff --git a/ld/scripttempl/pep.sc b/ld/scripttempl/pep.sc -index 8daacb2..3c6c84d 100644 ---- a/ld/scripttempl/pep.sc -+++ b/ld/scripttempl/pep.sc -@@ -99,8 +99,22 @@ SECTIONS - ${RELOCATING+*(.glue_7)} - ${CONSTRUCTING+. = ALIGN(8);} - ${CONSTRUCTING+ -- PROVIDE(___CTOR_LIST__ = .); -- PROVIDE(__CTOR_LIST__ = .); -+ /* Note: we always define __CTOR_LIST__ and ___CTOR_LIST__ here, -+ we do not PROVIDE them. This is because the ctors.o startup -+ code in libgcc defines them as common symbols, with the -+ expectation that they will be overridden by the definitions -+ here. If we PROVIDE the symbols then they will not be -+ overridden and global constructors will not be run. -+ -+ This does mean that it is not possible for a user to define -+ their own __CTOR_LIST__ and __DTOR_LIST__ symbols. If that -+ ability is needed a custom linker script will have to be -+ used. (The custom script can just be a copy of this script -+ with the PROVIDE() qualifiers added). -+ -+ See PR 22762 for more details. */ -+ ___CTOR_LIST__ = .; -+ __CTOR_LIST__ = .; - LONG (-1); LONG (-1); - KEEP (*(.ctors)); - KEEP (*(.ctor)); -@@ -108,8 +122,10 @@ SECTIONS - LONG (0); LONG (0); - } - ${CONSTRUCTING+ -- PROVIDE(___DTOR_LIST__ = .); -- PROVIDE(__DTOR_LIST__ = .); -+ /* See comment about __CTOR_LIST__ above. The same reasoning -+ applies here too. */ -+ ___DTOR_LIST__ = .; -+ __DTOR_LIST__ = .; - LONG (-1); LONG (-1); - KEEP (*(.dtors)); - KEEP (*(.dtor)); --- -2.9.3 - diff --git a/binutils/mingw-w64-symlinks/PKGBUILD b/binutils/mingw-w64-symlinks/PKGBUILD index 8db705d8..a6cd66b6 100644 --- a/binutils/mingw-w64-symlinks/PKGBUILD +++ b/binutils/mingw-w64-symlinks/PKGBUILD @@ -9,7 +9,7 @@ _targets="i686-w64-mingw32 x86_64-w64-mingw32" pkgname=mingw-w64-binutils-symlinks -pkgver=2.31 +pkgver=2.31.1 pkgrel=1 pkgdesc="Cross binutils for the MinGW-w64 cross-compiler (uses symlinks instead of hard links)" arch=('i686' 'x86_64') @@ -22,7 +22,7 @@ conflicts=('mingw-w64-binutils') options=('!libtool' '!emptydirs') validpgpkeys=('3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F') source=("https://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.gz"{,.sig}) -sha256sums=('5a9de9199f22ca7f35eac378f93c45ead636994fc59f3ac08f6b3569f73fcf6f' +sha256sums=('e88f8d36bd0a75d3765a4ad088d819e35f8d7ac6288049780e2fefcad18dde88' 'SKIP') prepare() {