[arch-commits] Commit in binutils/repos (12 files)

Allan McRae allan at archlinux.org
Mon Sep 8 12:02:20 UTC 2014


    Date: Monday, September 8, 2014 @ 14:02:20
  Author: allan
Revision: 221152

archrelease: copy trunk to staging-i686, staging-x86_64

Added:
  binutils/repos/staging-i686/
  binutils/repos/staging-i686/PKGBUILD
    (from rev 221149, binutils/trunk/PKGBUILD)
  binutils/repos/staging-i686/binutils-2.24-gold-testsuite-plugin.patch
    (from rev 221149, binutils/trunk/binutils-2.24-gold-testsuite-plugin.patch)
  binutils/repos/staging-i686/binutils-2.24-lto-testsuite.patch
    (from rev 221150, binutils/trunk/binutils-2.24-lto-testsuite.patch)
  binutils/repos/staging-i686/binutils-2.24-shared-pie.patch
    (from rev 221150, binutils/trunk/binutils-2.24-shared-pie.patch)
  binutils/repos/staging-i686/binutils.install
    (from rev 221150, binutils/trunk/binutils.install)
  binutils/repos/staging-x86_64/
  binutils/repos/staging-x86_64/PKGBUILD
    (from rev 221150, binutils/trunk/PKGBUILD)
  binutils/repos/staging-x86_64/binutils-2.24-gold-testsuite-plugin.patch
    (from rev 221150, binutils/trunk/binutils-2.24-gold-testsuite-plugin.patch)
  binutils/repos/staging-x86_64/binutils-2.24-lto-testsuite.patch
    (from rev 221150, binutils/trunk/binutils-2.24-lto-testsuite.patch)
  binutils/repos/staging-x86_64/binutils-2.24-shared-pie.patch
    (from rev 221150, binutils/trunk/binutils-2.24-shared-pie.patch)
  binutils/repos/staging-x86_64/binutils.install
    (from rev 221150, binutils/trunk/binutils.install)

----------------------------------------------------------+
 staging-i686/PKGBUILD                                    |   83 ++++
 staging-i686/binutils-2.24-gold-testsuite-plugin.patch   |  229 +++++++++++++
 staging-i686/binutils-2.24-lto-testsuite.patch           |   78 ++++
 staging-i686/binutils-2.24-shared-pie.patch              |   99 +++++
 staging-i686/binutils.install                            |   17 
 staging-x86_64/PKGBUILD                                  |   83 ++++
 staging-x86_64/binutils-2.24-gold-testsuite-plugin.patch |  229 +++++++++++++
 staging-x86_64/binutils-2.24-lto-testsuite.patch         |   78 ++++
 staging-x86_64/binutils-2.24-shared-pie.patch            |   99 +++++
 staging-x86_64/binutils.install                          |   17 
 10 files changed, 1012 insertions(+)

Copied: binutils/repos/staging-i686/PKGBUILD (from rev 221149, binutils/trunk/PKGBUILD)
===================================================================
--- staging-i686/PKGBUILD	                        (rev 0)
+++ staging-i686/PKGBUILD	2014-09-08 12:02:20 UTC (rev 221152)
@@ -0,0 +1,83 @@
+# $Id$
+# Maintainer: Allan McRae <allan at archlinux.org>
+
+# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
+
+pkgname=binutils
+pkgver=2.24
+pkgrel=7
+pkgdesc="A set of programs to assemble and manipulate binary and object files"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/binutils/"
+license=('GPL')
+groups=('base-devel')
+depends=('glibc>=2.20' 'zlib')
+checkdepends=('dejagnu' 'bc')
+conflicts=('binutils-multilib')
+replaces=('binutils-multilib')
+options=('staticlibs' '!distcc' '!ccache')
+install=binutils.install
+source=(ftp://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.bz2{,.sig}
+        binutils-2.24-lto-testsuite.patch
+        binutils-2.24-gold-testsuite-plugin.patch
+        binutils-2.24-shared-pie.patch)
+md5sums=('e0f71a7b2ddab0f8612336ac81d9636b'
+         'SKIP'
+         'e68a1f221545f082baa5bd417cd077af'
+         'e46bbb03abaa5db58c12247644dc4857'
+         'ec59461c4febab9cfe1c1ef33326bc50')
+validpgpkeys=('EAF1C276A747E9ED86210CBAC3126D3B4AE55E93')
+
+prepare() {
+  cd ${srcdir}/binutils-${pkgver}
+
+  # hack! - libiberty configure tests for header files using "$CPP $CPPFLAGS"
+  sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure
+
+  # fix lto testsuite with gcc-4.9 - commits b35d44f1 and 37a6ac44
+  patch -p1 -i $srcdir/binutils-2.24-lto-testsuite.patch
+
+  # fix gold testsuite with gcc-4.9 - commit ae447ddd
+  patch -p1 -i $srcdir/binutils-2.24-gold-testsuite-plugin.patch
+
+  # fix issues with -static -fPIE -pie - commit 4199e3b8
+  patch -p1 -i $srcdir/binutils-2.24-shared-pie.patch
+
+  mkdir ${srcdir}/binutils-build
+}
+
+build() {
+  cd ${srcdir}/binutils-build
+
+  ${srcdir}/binutils-${pkgver}/configure --prefix=/usr \
+    --with-lib-path=/usr/lib:/usr/local/lib \
+    --with-bugurl=https://bugs.archlinux.org/ \
+    --enable-threads --enable-shared --with-pic \
+    --enable-ld=default --enable-gold --enable-plugins \
+    --disable-werror
+
+  # check the host environment and makes sure all the necessary tools are available
+  make configure-host
+
+  make tooldir=/usr
+}
+
+check() {
+  cd ${srcdir}/binutils-build
+  
+  # unset LDFLAGS as testsuite makes assumptions about which ones are active
+  # ignore failures in gold testsuite...
+  make -k LDFLAGS="" check
+}
+
+package() {
+  cd ${srcdir}/binutils-build
+  make prefix=${pkgdir}/usr tooldir=${pkgdir}/usr install
+
+  # Remove unwanted files
+  rm ${pkgdir}/usr/share/man/man1/{dlltool,nlmconv,windres,windmc}*
+  rm ${pkgdir}/usr/share/info/{configure,standards}.info
+
+  # No shared linking to these files outside binutils
+  rm ${pkgdir}/usr/lib/lib{bfd,opcodes}.so
+}

Copied: binutils/repos/staging-i686/binutils-2.24-gold-testsuite-plugin.patch (from rev 221149, binutils/trunk/binutils-2.24-gold-testsuite-plugin.patch)
===================================================================
--- staging-i686/binutils-2.24-gold-testsuite-plugin.patch	                        (rev 0)
+++ staging-i686/binutils-2.24-gold-testsuite-plugin.patch	2014-09-08 12:02:20 UTC (rev 221152)
@@ -0,0 +1,229 @@
+diff --git a/gold/configure b/gold/configure
+index 2257324..f61307b 100755
+--- a/gold/configure
++++ b/gold/configure
+@@ -594,10 +594,12 @@ LTLIBOBJS
+ MAINT
+ MAINTAINER_MODE_FALSE
+ MAINTAINER_MODE_TRUE
+-HAVE_PUBNAMES_FALSE
+-HAVE_PUBNAMES_TRUE
+ DLOPEN_LIBS
+ CXXCPP
++HAVE_NO_USE_LINKER_PLUGIN_FALSE
++HAVE_NO_USE_LINKER_PLUGIN_TRUE
++HAVE_PUBNAMES_FALSE
++HAVE_PUBNAMES_TRUE
+ HAVE_ZLIB_FALSE
+ HAVE_ZLIB_TRUE
+ LIBOBJS
+@@ -6991,6 +6993,50 @@ cat >>confdefs.h <<_ACEOF
+ _ACEOF
+ 
+ 
++save_CFLAGS="$CFLAGS"
++CFLAGS="$CFLAGS -Werror -gpubnames"
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++int i;
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  have_pubnames=yes
++else
++  have_pubnames=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++CFLAGS="$save_CFLAGS"
++ if test "$have_pubnames" = "yes"; then
++  HAVE_PUBNAMES_TRUE=
++  HAVE_PUBNAMES_FALSE='#'
++else
++  HAVE_PUBNAMES_TRUE='#'
++  HAVE_PUBNAMES_FALSE=
++fi
++
++
++save_CFLAGS="$CFLAGS"
++CFLAGS="$CFLAGS -Werror -fno-use-linker-plugin"
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++int i;
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  have_no_use_linker_plugin=yes
++else
++  have_no_use_linker_plugin=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++CFLAGS="$save_CFLAGS"
++ if test "$have_no_use_linker_plugin" = "yes"; then
++  HAVE_NO_USE_LINKER_PLUGIN_TRUE=
++  HAVE_NO_USE_LINKER_PLUGIN_FALSE='#'
++else
++  HAVE_NO_USE_LINKER_PLUGIN_TRUE='#'
++  HAVE_NO_USE_LINKER_PLUGIN_FALSE=
++fi
++
++
+ ac_ext=cpp
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -7515,28 +7561,6 @@ $as_echo "#define HAVE_STAT_ST_MTIM 1" >>confdefs.h
+ 
+ fi
+ 
+-save_CXXFLAGS="$CXXFLAGS"
+-CXXFLAGS="$CXXFLAGS -Werror -gpubnames"
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h.  */
+-int i;
+-_ACEOF
+-if ac_fn_cxx_try_compile "$LINENO"; then :
+-  have_pubnames=yes
+-else
+-  have_pubnames=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-CXXFLAGS="$save_CXXFLAGS"
+- if test "$have_pubnames" = "yes"; then
+-  HAVE_PUBNAMES_TRUE=
+-  HAVE_PUBNAMES_FALSE='#'
+-else
+-  HAVE_PUBNAMES_TRUE='#'
+-  HAVE_PUBNAMES_FALSE=
+-fi
+-
+-
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -7837,6 +7861,10 @@ if test -z "${HAVE_PUBNAMES_TRUE}" && test -z "${HAVE_PUBNAMES_FALSE}"; then
+   as_fn_error "conditional \"HAVE_PUBNAMES\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ fi
++if test -z "${HAVE_NO_USE_LINKER_PLUGIN_TRUE}" && test -z "${HAVE_NO_USE_LINKER_PLUGIN_FALSE}"; then
++  as_fn_error "conditional \"HAVE_NO_USE_LINKER_PLUGIN\" was never defined.
++Usually this means the macro was only invoked conditionally." "$LINENO" 5
++fi
+ if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+   as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+diff --git a/gold/configure.ac b/gold/configure.ac
+index 803cf46..7ad7302 100644
+--- a/gold/configure.ac
++++ b/gold/configure.ac
+@@ -520,6 +520,25 @@ dnl multiple declarations of functions like basename when compiling
+ dnl with C++.
+ AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
+ 
++dnl Check if gcc supports the -gpubnames option.
++dnl Use -Werror in case of compilers that make unknown -g options warnings.
++dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
++dnl gets set later by default Autoconf magic to include -Werror.  (We are
++dnl assuming here that there is no compiler that groks -gpubnames
++dnl but does not grok -Werror.)
++save_CFLAGS="$CFLAGS"
++CFLAGS="$CFLAGS -Werror -gpubnames"
++AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no])
++CFLAGS="$save_CFLAGS"
++AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
++
++dnl Check if gcc supports the -fno-use-linker-plugin option.
++save_CFLAGS="$CFLAGS"
++CFLAGS="$CFLAGS -Werror -fno-use-linker-plugin"
++AC_COMPILE_IFELSE([int i;], [have_no_use_linker_plugin=yes], [have_no_use_linker_plugin=no])
++CFLAGS="$save_CFLAGS"
++AM_CONDITIONAL(HAVE_NO_USE_LINKER_PLUGIN, test "$have_no_use_linker_plugin" = "yes")
++
+ AC_LANG_PUSH(C++)
+ 
+ AC_CHECK_HEADERS(unordered_set unordered_map)
+@@ -601,18 +620,6 @@ if test "$gold_cv_stat_st_mtim" = "yes"; then
+ 	    [Define if struct stat has a field st_mtim with timespec for mtime])
+ fi
+ 
+-dnl Check if gcc supports the -gpubnames option.
+-dnl Use -Werror in case of compilers that make unknown -g options warnings.
+-dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
+-dnl gets set later by default Autoconf magic to include -Werror.  (We are
+-dnl assuming here that there is no compiler that groks -gpubnames
+-dnl but does not grok -Werror.)
+-save_CXXFLAGS="$CXXFLAGS"
+-CXXFLAGS="$CXXFLAGS -Werror -gpubnames"
+-AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no])
+-CXXFLAGS="$save_CXXFLAGS"
+-AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
+-
+ AC_LANG_POP(C++)
+ 
+ AC_CHECK_HEADERS(locale.h)
+diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
+index aa41290..52cc05e 100644
+--- a/gold/testsuite/Makefile.am
++++ b/gold/testsuite/Makefile.am
+@@ -19,18 +19,25 @@ AM_CPPFLAGS = \
+ 	-DLOCALEDIR="\"$(datadir)/locale\"" \
+ 	@INCINTL@
+ 
++# Some versions of GCC now automatically enable linker plugins,
++# but we want to run our tests without GCC's plugins.
++if HAVE_NO_USE_LINKER_PLUGIN
++OPT_NO_PLUGINS = -fno-use-linker-plugin
++endif
++
+ # COMPILE1, LINK1, CXXCOMPILE1, CXXLINK1 are renamed from COMPILE, LINK,
+ # CXXCOMPILE and CXXLINK generated by automake 1.11.1.  FIXME: they should
+ # be updated if they are different from automake used by gold.
+ COMPILE1 = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LINK1 = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++LINK1 = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(OPT_NO_PLUGINS) \
++	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+ CXXCOMPILE1 = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+-CXXLINK1 = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+-	-o $@
++CXXLINK1 = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(OPT_NO_PLUGINS) \
++	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+ 
+-# Strip out -Wp,-D_FORTIFY_SOURCE=, which is rrelevant for the gold
++# Strip out -Wp,-D_FORTIFY_SOURCE=, which is irrelevant for the gold
+ # testsuite and incompatible with -O0 used in gold tests, from
+ # COMPILE, LINK, CXXCOMPILE and CXXLINK.
+ COMPILE = `echo $(COMPILE1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9[0-9]]*//'`
+diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
+index 60c2c10..da0a338 100644
+--- a/gold/testsuite/Makefile.in
++++ b/gold/testsuite/Makefile.in
+@@ -2096,21 +2096,27 @@ AM_CPPFLAGS = \
+ 	@INCINTL@
+ 
+ 
++# Some versions of GCC now automatically enable linker plugins,
++# but we want to run our tests without GCC's plugins.
++ at HAVE_NO_USE_LINKER_PLUGIN_TRUE@OPT_NO_PLUGINS = -fno-use-linker-plugin
++
+ # COMPILE1, LINK1, CXXCOMPILE1, CXXLINK1 are renamed from COMPILE, LINK,
+ # CXXCOMPILE and CXXLINK generated by automake 1.11.1.  FIXME: they should
+ # be updated if they are different from automake used by gold.
+ COMPILE1 = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ 
+-LINK1 = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++LINK1 = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(OPT_NO_PLUGINS) \
++	$(AM_LDFLAGS) $(LDFLAGS) -o $@
++
+ CXXCOMPILE1 = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+ 
+-CXXLINK1 = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+-	-o $@
++CXXLINK1 = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(OPT_NO_PLUGINS) \
++	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+ 
+ 
+-# Strip out -Wp,-D_FORTIFY_SOURCE=, which is rrelevant for the gold
++# Strip out -Wp,-D_FORTIFY_SOURCE=, which is irrelevant for the gold
+ # testsuite and incompatible with -O0 used in gold tests, from
+ # COMPILE, LINK, CXXCOMPILE and CXXLINK.
+ COMPILE = `echo $(COMPILE1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9[0-9]]*//'`

Copied: binutils/repos/staging-i686/binutils-2.24-lto-testsuite.patch (from rev 221150, binutils/trunk/binutils-2.24-lto-testsuite.patch)
===================================================================
--- staging-i686/binutils-2.24-lto-testsuite.patch	                        (rev 0)
+++ staging-i686/binutils-2.24-lto-testsuite.patch	2014-09-08 12:02:20 UTC (rev 221152)
@@ -0,0 +1,78 @@
+index c5249f0..69946de 100644
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -57,7 +57,7 @@ set lto_link_tests {
+    "" "-O2"
+    {lto-3c.c} {} "libdummy.a"}
+   {"Build liblto-3.a"
+-   "" "-flto"
++   "" "-flto -ffat-lto-objects"
+    {lto-3b.c} {} "liblto-3.a"}
+   {"Build libdummy.a 5a"
+    "" "-flto"
+@@ -111,7 +111,7 @@ set lto_link_tests {
+    "" ""
+    {pr12758a.s} {} "libdummy.a"}
+   {"Build libpr12758.a"
+-   "" "-flto -O2"
++   "" "-flto -O2 -ffat-lto-objects"
+    {pr12758b.c} {} "libpr12758.a"}
+   {"PR ld/12758"
+    "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12758a.o -Wl,--start-group tmpdir/libpr12758.a -Wl,--end-group" ""
+@@ -120,13 +120,13 @@ set lto_link_tests {
+    "" ""
+    {pr12760a.c} {} "libdummy.a"}
+   {"Build libpr12760.a"
+-   "" "-flto -O2"
++   "" "-flto -O2 -ffat-lto-objects"
+    {pr12760b.c} {} "libpr12760.a"}
+   {"PR ld/12760"
+    "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12760a.o -Wl,--start-group tmpdir/libpr12760.a -Wl,--end-group" ""
+    {dummy.c} {} "pr12760.exe" "c" "warning: Bad bar"}
+   {"Build libpr13183.a"
+-   "-T" "-flto -O2"
++   "-T" "-flto -O2 -ffat-lto-objects"
+    {pr13183a.c} {} "libpr13183.a"}
+   {"Build libdummy.a PR ld/13183"
+    "" "-flto -O2"
+diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
+index 8df42ae..175449a 100644
+--- a/ld/testsuite/lib/ld-lib.exp
++++ b/ld/testsuite/lib/ld-lib.exp
+@@ -1643,7 +1643,7 @@ proc check_lto_available { } {
+ 	set f [open $src "w"]
+ 	puts $f ""
+ 	close $f
+-	set status [remote_exec host $CC "-shared -B[pwd]/tmpdir/ld/ -flto -fuse-linker-plugin $src -o $output"]
++	set status [remote_exec host $CC "-shared -B[pwd]/tmpdir/ld/ -flto -ffat-lto-objects -fuse-linker-plugin $src -o $output"]
+ 	if { [lindex $status 0] == 0 } {
+ 	    set lto_available_saved 1
+ 	} else {
+diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
+index b14f13c..765d85f 100644
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -324,7 +324,20 @@ if { [is_elf_format] && [check_lto_shared_available] } {
+ 
+ set testname "Build liblto-11.a"
+ remote_file host delete "tmpdir/liblto-11.a"
+-set catch_output [run_host_cmd "$ar" "rc tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
++set plugin_names {
++    liblto_plugin.so
++    liblto_plugin-0.dll
++    cyglto_plugin-0.dll
++}
++set plug_opt ""
++foreach plug $plugin_names {
++    set plug_so [run_host_cmd $CC "--print-prog-name $plug"]
++    if { $plug_so ne $plug } then {
++	set plug_opt "--plugin $plug_so"
++	break
++    }
++}
++set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
+ if {![string match "" $catch_output]} {
+     unresolved $testname
+     restore_notify
+
+

Copied: binutils/repos/staging-i686/binutils-2.24-shared-pie.patch (from rev 221150, binutils/trunk/binutils-2.24-shared-pie.patch)
===================================================================
--- staging-i686/binutils-2.24-shared-pie.patch	                        (rev 0)
+++ staging-i686/binutils-2.24-shared-pie.patch	2014-09-08 12:02:20 UTC (rev 221152)
@@ -0,0 +1,99 @@
+diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
+index 9a2fe89..13f86f0 100644
+--- a/ld/emultempl/elf32.em
++++ b/ld/emultempl/elf32.em
+@@ -1480,6 +1480,8 @@ gld${EMULATION_NAME}_before_allocation (void)
+   const char *rpath;
+   asection *sinterp;
+   bfd *abfd;
++  struct elf_link_hash_entry *ehdr_start = NULL;
++  struct bfd_link_hash_entry ehdr_start_save;
+ 
+   if (is_elf_hash_table (link_info.hash))
+     {
+@@ -1504,6 +1506,16 @@ gld${EMULATION_NAME}_before_allocation (void)
+              _bfd_elf_link_hash_hide_symbol (&link_info, h, TRUE);
+              if (ELF_ST_VISIBILITY (h->other) != STV_INTERNAL)
+                h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN;
++	     /* Don't leave the symbol undefined.  Undefined hidden
++		symbols typically won't have dynamic relocations, but
++		we most likely will need dynamic relocations for
++		__ehdr_start if we are building a PIE or shared
++		library.  */
++	     ehdr_start = h;
++	     ehdr_start_save = h->root;
++	     h->root.type = bfd_link_hash_defined;
++	     h->root.u.def.section = bfd_abs_section_ptr;
++	     h->root.u.def.value = 0;
+            }
+        }
+ 
+@@ -1620,6 +1632,14 @@ ${ELF_INTERPRETER_SET_DEFAULT}
+ 
+   if (!bfd_elf_size_dynsym_hash_dynstr (link_info.output_bfd, &link_info))
+     einfo ("%P%F: failed to set dynamic section sizes: %E\n");
++
++  if (ehdr_start != NULL)
++    {
++      /* If we twiddled __ehdr_start to defined earlier, put it back
++	 as it was.  */
++      ehdr_start->root.type = ehdr_start_save.type;
++      ehdr_start->root.u = ehdr_start_save.u;
++    }
+ }
+ 
+ EOF
+diff --git a/ld/testsuite/ld-elf/ehdr_start-shared.d b/ld/testsuite/ld-elf/ehdr_start-shared.d
+new file mode 100644
+index 0000000..c17516a
+--- /dev/null
++++ b/ld/testsuite/ld-elf/ehdr_start-shared.d
+@@ -0,0 +1,9 @@
++#source: ehdr_start.s
++#ld: -e _start -shared
++#nm: -n
++#target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: cris*-*-* frv-*-*
++
++#...
++[0-9a-f]*000 [Adrt] __ehdr_start
++#pass
+diff --git a/ld/testsuite/ld-elf/ehdr_start-userdef.d b/ld/testsuite/ld-elf/ehdr_start-userdef.d
+index 2a88e98..b58ae3f 100644
+--- a/ld/testsuite/ld-elf/ehdr_start-userdef.d
++++ b/ld/testsuite/ld-elf/ehdr_start-userdef.d
+@@ -2,6 +2,7 @@
+ #ld: -e _start -T ehdr_start-userdef.t
+ #readelf: -Ws
+ #target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: frv-*-*
+ 
+ #...
+ Symbol table '\.symtab' contains [0-9]+ entries:
+diff --git a/ld/testsuite/ld-elf/ehdr_start-weak.d b/ld/testsuite/ld-elf/ehdr_start-weak.d
+index 8bd9035..24ae34c 100644
+--- a/ld/testsuite/ld-elf/ehdr_start-weak.d
++++ b/ld/testsuite/ld-elf/ehdr_start-weak.d
+@@ -2,6 +2,7 @@
+ #ld: -e _start -T ehdr_start-missing.t
+ #nm: -n
+ #target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: frv-*-*
+ 
+ #...
+ \s+[wU] __ehdr_start
+diff --git a/ld/testsuite/ld-elf/ehdr_start.d b/ld/testsuite/ld-elf/ehdr_start.d
+index 52e5b54..d538b66 100644
+--- a/ld/testsuite/ld-elf/ehdr_start.d
++++ b/ld/testsuite/ld-elf/ehdr_start.d
+@@ -2,6 +2,7 @@
+ #ld: -e _start
+ #nm: -n
+ #target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: frv-*-*
+ 
+ #...
+ [0-9a-f]*000 [Adrt] __ehdr_start
+-- 
+1.7.1
+

Copied: binutils/repos/staging-i686/binutils.install (from rev 221150, binutils/trunk/binutils.install)
===================================================================
--- staging-i686/binutils.install	                        (rev 0)
+++ staging-i686/binutils.install	2014-09-08 12:02:20 UTC (rev 221152)
@@ -0,0 +1,17 @@
+infodir=usr/share/info
+filelist=(as.info bfd.info binutils.info gprof.info ld.info)
+
+post_upgrade() {
+  [ -x usr/bin/install-info ] || return 0
+  for file in ${filelist[@]}; do
+    install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+  done
+}
+
+pre_remove() {
+  [ -x usr/bin/install-info ] || return 0
+  for file in ${filelist[@]}; do
+    install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+  done
+}
+

Copied: binutils/repos/staging-x86_64/PKGBUILD (from rev 221150, binutils/trunk/PKGBUILD)
===================================================================
--- staging-x86_64/PKGBUILD	                        (rev 0)
+++ staging-x86_64/PKGBUILD	2014-09-08 12:02:20 UTC (rev 221152)
@@ -0,0 +1,83 @@
+# $Id$
+# Maintainer: Allan McRae <allan at archlinux.org>
+
+# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
+
+pkgname=binutils
+pkgver=2.24
+pkgrel=7
+pkgdesc="A set of programs to assemble and manipulate binary and object files"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/binutils/"
+license=('GPL')
+groups=('base-devel')
+depends=('glibc>=2.20' 'zlib')
+checkdepends=('dejagnu' 'bc')
+conflicts=('binutils-multilib')
+replaces=('binutils-multilib')
+options=('staticlibs' '!distcc' '!ccache')
+install=binutils.install
+source=(ftp://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.bz2{,.sig}
+        binutils-2.24-lto-testsuite.patch
+        binutils-2.24-gold-testsuite-plugin.patch
+        binutils-2.24-shared-pie.patch)
+md5sums=('e0f71a7b2ddab0f8612336ac81d9636b'
+         'SKIP'
+         'e68a1f221545f082baa5bd417cd077af'
+         'e46bbb03abaa5db58c12247644dc4857'
+         'ec59461c4febab9cfe1c1ef33326bc50')
+validpgpkeys=('EAF1C276A747E9ED86210CBAC3126D3B4AE55E93')
+
+prepare() {
+  cd ${srcdir}/binutils-${pkgver}
+
+  # hack! - libiberty configure tests for header files using "$CPP $CPPFLAGS"
+  sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure
+
+  # fix lto testsuite with gcc-4.9 - commits b35d44f1 and 37a6ac44
+  patch -p1 -i $srcdir/binutils-2.24-lto-testsuite.patch
+
+  # fix gold testsuite with gcc-4.9 - commit ae447ddd
+  patch -p1 -i $srcdir/binutils-2.24-gold-testsuite-plugin.patch
+
+  # fix issues with -static -fPIE -pie - commit 4199e3b8
+  patch -p1 -i $srcdir/binutils-2.24-shared-pie.patch
+
+  mkdir ${srcdir}/binutils-build
+}
+
+build() {
+  cd ${srcdir}/binutils-build
+
+  ${srcdir}/binutils-${pkgver}/configure --prefix=/usr \
+    --with-lib-path=/usr/lib:/usr/local/lib \
+    --with-bugurl=https://bugs.archlinux.org/ \
+    --enable-threads --enable-shared --with-pic \
+    --enable-ld=default --enable-gold --enable-plugins \
+    --disable-werror
+
+  # check the host environment and makes sure all the necessary tools are available
+  make configure-host
+
+  make tooldir=/usr
+}
+
+check() {
+  cd ${srcdir}/binutils-build
+  
+  # unset LDFLAGS as testsuite makes assumptions about which ones are active
+  # ignore failures in gold testsuite...
+  make -k LDFLAGS="" check
+}
+
+package() {
+  cd ${srcdir}/binutils-build
+  make prefix=${pkgdir}/usr tooldir=${pkgdir}/usr install
+
+  # Remove unwanted files
+  rm ${pkgdir}/usr/share/man/man1/{dlltool,nlmconv,windres,windmc}*
+  rm ${pkgdir}/usr/share/info/{configure,standards}.info
+
+  # No shared linking to these files outside binutils
+  rm ${pkgdir}/usr/lib/lib{bfd,opcodes}.so
+}

Copied: binutils/repos/staging-x86_64/binutils-2.24-gold-testsuite-plugin.patch (from rev 221150, binutils/trunk/binutils-2.24-gold-testsuite-plugin.patch)
===================================================================
--- staging-x86_64/binutils-2.24-gold-testsuite-plugin.patch	                        (rev 0)
+++ staging-x86_64/binutils-2.24-gold-testsuite-plugin.patch	2014-09-08 12:02:20 UTC (rev 221152)
@@ -0,0 +1,229 @@
+diff --git a/gold/configure b/gold/configure
+index 2257324..f61307b 100755
+--- a/gold/configure
++++ b/gold/configure
+@@ -594,10 +594,12 @@ LTLIBOBJS
+ MAINT
+ MAINTAINER_MODE_FALSE
+ MAINTAINER_MODE_TRUE
+-HAVE_PUBNAMES_FALSE
+-HAVE_PUBNAMES_TRUE
+ DLOPEN_LIBS
+ CXXCPP
++HAVE_NO_USE_LINKER_PLUGIN_FALSE
++HAVE_NO_USE_LINKER_PLUGIN_TRUE
++HAVE_PUBNAMES_FALSE
++HAVE_PUBNAMES_TRUE
+ HAVE_ZLIB_FALSE
+ HAVE_ZLIB_TRUE
+ LIBOBJS
+@@ -6991,6 +6993,50 @@ cat >>confdefs.h <<_ACEOF
+ _ACEOF
+ 
+ 
++save_CFLAGS="$CFLAGS"
++CFLAGS="$CFLAGS -Werror -gpubnames"
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++int i;
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  have_pubnames=yes
++else
++  have_pubnames=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++CFLAGS="$save_CFLAGS"
++ if test "$have_pubnames" = "yes"; then
++  HAVE_PUBNAMES_TRUE=
++  HAVE_PUBNAMES_FALSE='#'
++else
++  HAVE_PUBNAMES_TRUE='#'
++  HAVE_PUBNAMES_FALSE=
++fi
++
++
++save_CFLAGS="$CFLAGS"
++CFLAGS="$CFLAGS -Werror -fno-use-linker-plugin"
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++int i;
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  have_no_use_linker_plugin=yes
++else
++  have_no_use_linker_plugin=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++CFLAGS="$save_CFLAGS"
++ if test "$have_no_use_linker_plugin" = "yes"; then
++  HAVE_NO_USE_LINKER_PLUGIN_TRUE=
++  HAVE_NO_USE_LINKER_PLUGIN_FALSE='#'
++else
++  HAVE_NO_USE_LINKER_PLUGIN_TRUE='#'
++  HAVE_NO_USE_LINKER_PLUGIN_FALSE=
++fi
++
++
+ ac_ext=cpp
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -7515,28 +7561,6 @@ $as_echo "#define HAVE_STAT_ST_MTIM 1" >>confdefs.h
+ 
+ fi
+ 
+-save_CXXFLAGS="$CXXFLAGS"
+-CXXFLAGS="$CXXFLAGS -Werror -gpubnames"
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h.  */
+-int i;
+-_ACEOF
+-if ac_fn_cxx_try_compile "$LINENO"; then :
+-  have_pubnames=yes
+-else
+-  have_pubnames=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-CXXFLAGS="$save_CXXFLAGS"
+- if test "$have_pubnames" = "yes"; then
+-  HAVE_PUBNAMES_TRUE=
+-  HAVE_PUBNAMES_FALSE='#'
+-else
+-  HAVE_PUBNAMES_TRUE='#'
+-  HAVE_PUBNAMES_FALSE=
+-fi
+-
+-
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -7837,6 +7861,10 @@ if test -z "${HAVE_PUBNAMES_TRUE}" && test -z "${HAVE_PUBNAMES_FALSE}"; then
+   as_fn_error "conditional \"HAVE_PUBNAMES\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ fi
++if test -z "${HAVE_NO_USE_LINKER_PLUGIN_TRUE}" && test -z "${HAVE_NO_USE_LINKER_PLUGIN_FALSE}"; then
++  as_fn_error "conditional \"HAVE_NO_USE_LINKER_PLUGIN\" was never defined.
++Usually this means the macro was only invoked conditionally." "$LINENO" 5
++fi
+ if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+   as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+diff --git a/gold/configure.ac b/gold/configure.ac
+index 803cf46..7ad7302 100644
+--- a/gold/configure.ac
++++ b/gold/configure.ac
+@@ -520,6 +520,25 @@ dnl multiple declarations of functions like basename when compiling
+ dnl with C++.
+ AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp])
+ 
++dnl Check if gcc supports the -gpubnames option.
++dnl Use -Werror in case of compilers that make unknown -g options warnings.
++dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
++dnl gets set later by default Autoconf magic to include -Werror.  (We are
++dnl assuming here that there is no compiler that groks -gpubnames
++dnl but does not grok -Werror.)
++save_CFLAGS="$CFLAGS"
++CFLAGS="$CFLAGS -Werror -gpubnames"
++AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no])
++CFLAGS="$save_CFLAGS"
++AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
++
++dnl Check if gcc supports the -fno-use-linker-plugin option.
++save_CFLAGS="$CFLAGS"
++CFLAGS="$CFLAGS -Werror -fno-use-linker-plugin"
++AC_COMPILE_IFELSE([int i;], [have_no_use_linker_plugin=yes], [have_no_use_linker_plugin=no])
++CFLAGS="$save_CFLAGS"
++AM_CONDITIONAL(HAVE_NO_USE_LINKER_PLUGIN, test "$have_no_use_linker_plugin" = "yes")
++
+ AC_LANG_PUSH(C++)
+ 
+ AC_CHECK_HEADERS(unordered_set unordered_map)
+@@ -601,18 +620,6 @@ if test "$gold_cv_stat_st_mtim" = "yes"; then
+ 	    [Define if struct stat has a field st_mtim with timespec for mtime])
+ fi
+ 
+-dnl Check if gcc supports the -gpubnames option.
+-dnl Use -Werror in case of compilers that make unknown -g options warnings.
+-dnl They would pass the test here, but fail in actual use when $WARN_CFLAGS
+-dnl gets set later by default Autoconf magic to include -Werror.  (We are
+-dnl assuming here that there is no compiler that groks -gpubnames
+-dnl but does not grok -Werror.)
+-save_CXXFLAGS="$CXXFLAGS"
+-CXXFLAGS="$CXXFLAGS -Werror -gpubnames"
+-AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no])
+-CXXFLAGS="$save_CXXFLAGS"
+-AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes")
+-
+ AC_LANG_POP(C++)
+ 
+ AC_CHECK_HEADERS(locale.h)
+diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
+index aa41290..52cc05e 100644
+--- a/gold/testsuite/Makefile.am
++++ b/gold/testsuite/Makefile.am
+@@ -19,18 +19,25 @@ AM_CPPFLAGS = \
+ 	-DLOCALEDIR="\"$(datadir)/locale\"" \
+ 	@INCINTL@
+ 
++# Some versions of GCC now automatically enable linker plugins,
++# but we want to run our tests without GCC's plugins.
++if HAVE_NO_USE_LINKER_PLUGIN
++OPT_NO_PLUGINS = -fno-use-linker-plugin
++endif
++
+ # COMPILE1, LINK1, CXXCOMPILE1, CXXLINK1 are renamed from COMPILE, LINK,
+ # CXXCOMPILE and CXXLINK generated by automake 1.11.1.  FIXME: they should
+ # be updated if they are different from automake used by gold.
+ COMPILE1 = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LINK1 = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++LINK1 = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(OPT_NO_PLUGINS) \
++	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+ CXXCOMPILE1 = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+-CXXLINK1 = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+-	-o $@
++CXXLINK1 = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(OPT_NO_PLUGINS) \
++	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+ 
+-# Strip out -Wp,-D_FORTIFY_SOURCE=, which is rrelevant for the gold
++# Strip out -Wp,-D_FORTIFY_SOURCE=, which is irrelevant for the gold
+ # testsuite and incompatible with -O0 used in gold tests, from
+ # COMPILE, LINK, CXXCOMPILE and CXXLINK.
+ COMPILE = `echo $(COMPILE1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9[0-9]]*//'`
+diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
+index 60c2c10..da0a338 100644
+--- a/gold/testsuite/Makefile.in
++++ b/gold/testsuite/Makefile.in
+@@ -2096,21 +2096,27 @@ AM_CPPFLAGS = \
+ 	@INCINTL@
+ 
+ 
++# Some versions of GCC now automatically enable linker plugins,
++# but we want to run our tests without GCC's plugins.
++ at HAVE_NO_USE_LINKER_PLUGIN_TRUE@OPT_NO_PLUGINS = -fno-use-linker-plugin
++
+ # COMPILE1, LINK1, CXXCOMPILE1, CXXLINK1 are renamed from COMPILE, LINK,
+ # CXXCOMPILE and CXXLINK generated by automake 1.11.1.  FIXME: they should
+ # be updated if they are different from automake used by gold.
+ COMPILE1 = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ 
+-LINK1 = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++LINK1 = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(OPT_NO_PLUGINS) \
++	$(AM_LDFLAGS) $(LDFLAGS) -o $@
++
+ CXXCOMPILE1 = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+ 
+-CXXLINK1 = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+-	-o $@
++CXXLINK1 = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(OPT_NO_PLUGINS) \
++	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+ 
+ 
+-# Strip out -Wp,-D_FORTIFY_SOURCE=, which is rrelevant for the gold
++# Strip out -Wp,-D_FORTIFY_SOURCE=, which is irrelevant for the gold
+ # testsuite and incompatible with -O0 used in gold tests, from
+ # COMPILE, LINK, CXXCOMPILE and CXXLINK.
+ COMPILE = `echo $(COMPILE1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9[0-9]]*//'`

Copied: binutils/repos/staging-x86_64/binutils-2.24-lto-testsuite.patch (from rev 221150, binutils/trunk/binutils-2.24-lto-testsuite.patch)
===================================================================
--- staging-x86_64/binutils-2.24-lto-testsuite.patch	                        (rev 0)
+++ staging-x86_64/binutils-2.24-lto-testsuite.patch	2014-09-08 12:02:20 UTC (rev 221152)
@@ -0,0 +1,78 @@
+index c5249f0..69946de 100644
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -57,7 +57,7 @@ set lto_link_tests {
+    "" "-O2"
+    {lto-3c.c} {} "libdummy.a"}
+   {"Build liblto-3.a"
+-   "" "-flto"
++   "" "-flto -ffat-lto-objects"
+    {lto-3b.c} {} "liblto-3.a"}
+   {"Build libdummy.a 5a"
+    "" "-flto"
+@@ -111,7 +111,7 @@ set lto_link_tests {
+    "" ""
+    {pr12758a.s} {} "libdummy.a"}
+   {"Build libpr12758.a"
+-   "" "-flto -O2"
++   "" "-flto -O2 -ffat-lto-objects"
+    {pr12758b.c} {} "libpr12758.a"}
+   {"PR ld/12758"
+    "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12758a.o -Wl,--start-group tmpdir/libpr12758.a -Wl,--end-group" ""
+@@ -120,13 +120,13 @@ set lto_link_tests {
+    "" ""
+    {pr12760a.c} {} "libdummy.a"}
+   {"Build libpr12760.a"
+-   "" "-flto -O2"
++   "" "-flto -O2 -ffat-lto-objects"
+    {pr12760b.c} {} "libpr12760.a"}
+   {"PR ld/12760"
+    "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12760a.o -Wl,--start-group tmpdir/libpr12760.a -Wl,--end-group" ""
+    {dummy.c} {} "pr12760.exe" "c" "warning: Bad bar"}
+   {"Build libpr13183.a"
+-   "-T" "-flto -O2"
++   "-T" "-flto -O2 -ffat-lto-objects"
+    {pr13183a.c} {} "libpr13183.a"}
+   {"Build libdummy.a PR ld/13183"
+    "" "-flto -O2"
+diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
+index 8df42ae..175449a 100644
+--- a/ld/testsuite/lib/ld-lib.exp
++++ b/ld/testsuite/lib/ld-lib.exp
+@@ -1643,7 +1643,7 @@ proc check_lto_available { } {
+ 	set f [open $src "w"]
+ 	puts $f ""
+ 	close $f
+-	set status [remote_exec host $CC "-shared -B[pwd]/tmpdir/ld/ -flto -fuse-linker-plugin $src -o $output"]
++	set status [remote_exec host $CC "-shared -B[pwd]/tmpdir/ld/ -flto -ffat-lto-objects -fuse-linker-plugin $src -o $output"]
+ 	if { [lindex $status 0] == 0 } {
+ 	    set lto_available_saved 1
+ 	} else {
+diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
+index b14f13c..765d85f 100644
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -324,7 +324,20 @@ if { [is_elf_format] && [check_lto_shared_available] } {
+ 
+ set testname "Build liblto-11.a"
+ remote_file host delete "tmpdir/liblto-11.a"
+-set catch_output [run_host_cmd "$ar" "rc tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
++set plugin_names {
++    liblto_plugin.so
++    liblto_plugin-0.dll
++    cyglto_plugin-0.dll
++}
++set plug_opt ""
++foreach plug $plugin_names {
++    set plug_so [run_host_cmd $CC "--print-prog-name $plug"]
++    if { $plug_so ne $plug } then {
++	set plug_opt "--plugin $plug_so"
++	break
++    }
++}
++set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
+ if {![string match "" $catch_output]} {
+     unresolved $testname
+     restore_notify
+
+

Copied: binutils/repos/staging-x86_64/binutils-2.24-shared-pie.patch (from rev 221150, binutils/trunk/binutils-2.24-shared-pie.patch)
===================================================================
--- staging-x86_64/binutils-2.24-shared-pie.patch	                        (rev 0)
+++ staging-x86_64/binutils-2.24-shared-pie.patch	2014-09-08 12:02:20 UTC (rev 221152)
@@ -0,0 +1,99 @@
+diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
+index 9a2fe89..13f86f0 100644
+--- a/ld/emultempl/elf32.em
++++ b/ld/emultempl/elf32.em
+@@ -1480,6 +1480,8 @@ gld${EMULATION_NAME}_before_allocation (void)
+   const char *rpath;
+   asection *sinterp;
+   bfd *abfd;
++  struct elf_link_hash_entry *ehdr_start = NULL;
++  struct bfd_link_hash_entry ehdr_start_save;
+ 
+   if (is_elf_hash_table (link_info.hash))
+     {
+@@ -1504,6 +1506,16 @@ gld${EMULATION_NAME}_before_allocation (void)
+              _bfd_elf_link_hash_hide_symbol (&link_info, h, TRUE);
+              if (ELF_ST_VISIBILITY (h->other) != STV_INTERNAL)
+                h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN;
++	     /* Don't leave the symbol undefined.  Undefined hidden
++		symbols typically won't have dynamic relocations, but
++		we most likely will need dynamic relocations for
++		__ehdr_start if we are building a PIE or shared
++		library.  */
++	     ehdr_start = h;
++	     ehdr_start_save = h->root;
++	     h->root.type = bfd_link_hash_defined;
++	     h->root.u.def.section = bfd_abs_section_ptr;
++	     h->root.u.def.value = 0;
+            }
+        }
+ 
+@@ -1620,6 +1632,14 @@ ${ELF_INTERPRETER_SET_DEFAULT}
+ 
+   if (!bfd_elf_size_dynsym_hash_dynstr (link_info.output_bfd, &link_info))
+     einfo ("%P%F: failed to set dynamic section sizes: %E\n");
++
++  if (ehdr_start != NULL)
++    {
++      /* If we twiddled __ehdr_start to defined earlier, put it back
++	 as it was.  */
++      ehdr_start->root.type = ehdr_start_save.type;
++      ehdr_start->root.u = ehdr_start_save.u;
++    }
+ }
+ 
+ EOF
+diff --git a/ld/testsuite/ld-elf/ehdr_start-shared.d b/ld/testsuite/ld-elf/ehdr_start-shared.d
+new file mode 100644
+index 0000000..c17516a
+--- /dev/null
++++ b/ld/testsuite/ld-elf/ehdr_start-shared.d
+@@ -0,0 +1,9 @@
++#source: ehdr_start.s
++#ld: -e _start -shared
++#nm: -n
++#target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: cris*-*-* frv-*-*
++
++#...
++[0-9a-f]*000 [Adrt] __ehdr_start
++#pass
+diff --git a/ld/testsuite/ld-elf/ehdr_start-userdef.d b/ld/testsuite/ld-elf/ehdr_start-userdef.d
+index 2a88e98..b58ae3f 100644
+--- a/ld/testsuite/ld-elf/ehdr_start-userdef.d
++++ b/ld/testsuite/ld-elf/ehdr_start-userdef.d
+@@ -2,6 +2,7 @@
+ #ld: -e _start -T ehdr_start-userdef.t
+ #readelf: -Ws
+ #target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: frv-*-*
+ 
+ #...
+ Symbol table '\.symtab' contains [0-9]+ entries:
+diff --git a/ld/testsuite/ld-elf/ehdr_start-weak.d b/ld/testsuite/ld-elf/ehdr_start-weak.d
+index 8bd9035..24ae34c 100644
+--- a/ld/testsuite/ld-elf/ehdr_start-weak.d
++++ b/ld/testsuite/ld-elf/ehdr_start-weak.d
+@@ -2,6 +2,7 @@
+ #ld: -e _start -T ehdr_start-missing.t
+ #nm: -n
+ #target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: frv-*-*
+ 
+ #...
+ \s+[wU] __ehdr_start
+diff --git a/ld/testsuite/ld-elf/ehdr_start.d b/ld/testsuite/ld-elf/ehdr_start.d
+index 52e5b54..d538b66 100644
+--- a/ld/testsuite/ld-elf/ehdr_start.d
++++ b/ld/testsuite/ld-elf/ehdr_start.d
+@@ -2,6 +2,7 @@
+ #ld: -e _start
+ #nm: -n
+ #target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: frv-*-*
+ 
+ #...
+ [0-9a-f]*000 [Adrt] __ehdr_start
+-- 
+1.7.1
+

Copied: binutils/repos/staging-x86_64/binutils.install (from rev 221150, binutils/trunk/binutils.install)
===================================================================
--- staging-x86_64/binutils.install	                        (rev 0)
+++ staging-x86_64/binutils.install	2014-09-08 12:02:20 UTC (rev 221152)
@@ -0,0 +1,17 @@
+infodir=usr/share/info
+filelist=(as.info bfd.info binutils.info gprof.info ld.info)
+
+post_upgrade() {
+  [ -x usr/bin/install-info ] || return 0
+  for file in ${filelist[@]}; do
+    install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+  done
+}
+
+pre_remove() {
+  [ -x usr/bin/install-info ] || return 0
+  for file in ${filelist[@]}; do
+    install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+  done
+}
+




More information about the arch-commits mailing list