summaryrefslogtreecommitdiffstats
path: root/abs/core/binutils
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/binutils')
-rw-r--r--abs/core/binutils/PKGBUILD44
-rw-r--r--abs/core/binutils/binutils-2.24-gold-testsuite-plugin.patch229
-rw-r--r--abs/core/binutils/binutils-2.24-lto-testsuite.patch78
-rw-r--r--abs/core/binutils/binutils-2.24-shared-pie.patch99
-rw-r--r--abs/core/binutils/binutils-e9c1bdad.patch78
5 files changed, 96 insertions, 432 deletions
diff --git a/abs/core/binutils/PKGBUILD b/abs/core/binutils/PKGBUILD
index 26ba4f9..ad4a71e 100644
--- a/abs/core/binutils/PKGBUILD
+++ b/abs/core/binutils/PKGBUILD
@@ -3,58 +3,51 @@
# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
+# build from head of release branch as bug fix releases are rare
+
pkgname=binutils
-pkgver=2.24
-pkgrel=7
+pkgver=2.25.1
+pkgrel=3
+_commit=2bd25930
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')
+depends=('glibc>=2.22' 'zlib')
+makedepends=('git')
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')
+source=(git://sourceware.org/git/binutils-gdb.git#commit=${_commit}
+ binutils-e9c1bdad.patch)
+md5sums=('SKIP'
+ 'eb3aceaab8ed26e06d505f82beb30f8f')
prepare() {
- cd ${srcdir}/binutils-${pkgver}
+ cd ${srcdir}/binutils-gdb
+
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=16992
+ patch -p1 -i ${srcdir}/binutils-e9c1bdad.patch
# 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 \
+ ${srcdir}/binutils-gdb/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
+ --enable-deterministic-archives \
+ --disable-werror --disable-gdb
# check the host environment and makes sure all the necessary tools are available
make configure-host
@@ -76,7 +69,6 @@ package() {
# 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
diff --git a/abs/core/binutils/binutils-2.24-gold-testsuite-plugin.patch b/abs/core/binutils/binutils-2.24-gold-testsuite-plugin.patch
deleted file mode 100644
index 9f5acad..0000000
--- a/abs/core/binutils/binutils-2.24-gold-testsuite-plugin.patch
+++ /dev/null
@@ -1,229 +0,0 @@
-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.
-+@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]]*//'`
diff --git a/abs/core/binutils/binutils-2.24-lto-testsuite.patch b/abs/core/binutils/binutils-2.24-lto-testsuite.patch
deleted file mode 100644
index 0f34726..0000000
--- a/abs/core/binutils/binutils-2.24-lto-testsuite.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-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
-
-
diff --git a/abs/core/binutils/binutils-2.24-shared-pie.patch b/abs/core/binutils/binutils-2.24-shared-pie.patch
deleted file mode 100644
index d40aa47..0000000
--- a/abs/core/binutils/binutils-2.24-shared-pie.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-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
-
diff --git a/abs/core/binutils/binutils-e9c1bdad.patch b/abs/core/binutils/binutils-e9c1bdad.patch
new file mode 100644
index 0000000..6ef9f52
--- /dev/null
+++ b/abs/core/binutils/binutils-e9c1bdad.patch
@@ -0,0 +1,78 @@
+diff --git a/gold/layout.cc b/gold/layout.cc
+index bcdaac8..7836640 100644
+--- a/gold/layout.cc
++++ b/gold/layout.cc
+@@ -4873,7 +4873,8 @@ Layout::finish_dynamic_section(const Input_objects* input_objects,
+ flags |= elfcpp::DF_STATIC_TLS;
+ if (parameters->options().origin())
+ flags |= elfcpp::DF_ORIGIN;
+- if (parameters->options().Bsymbolic())
++ if (parameters->options().Bsymbolic()
++ && !parameters->options().have_dynamic_list())
+ {
+ flags |= elfcpp::DF_SYMBOLIC;
+ // Add DT_SYMBOLIC for compatibility with older loaders.
+diff --git a/gold/options.cc b/gold/options.cc
+index 7eb8f27..7f1f69e 100644
+--- a/gold/options.cc
++++ b/gold/options.cc
+@@ -1200,13 +1200,6 @@ General_options::finalize()
+ // in the path, as appropriate.
+ this->add_sysroot();
+
+- // --dynamic-list overrides -Bsymbolic and -Bsymbolic-functions.
+- if (this->have_dynamic_list())
+- {
+- this->set_Bsymbolic(false);
+- this->set_Bsymbolic_functions(false);
+- }
+-
+ // Now that we've normalized the options, check for contradictory ones.
+ if (this->shared() && this->is_static())
+ gold_fatal(_("-shared and -static are incompatible"));
+diff --git a/gold/symtab.h b/gold/symtab.h
+index aa0cb68..9413360 100644
+--- a/gold/symtab.h
++++ b/gold/symtab.h
+@@ -604,10 +604,8 @@ class Symbol
+ if (parameters->options().in_dynamic_list(this->name()))
+ return true;
+
+- // If the user used -Bsymbolic or provided a --dynamic-list script,
+- // then nothing (else) is preemptible.
+- if (parameters->options().Bsymbolic()
+- || parameters->options().have_dynamic_list())
++ // If the user used -Bsymbolic, then nothing (else) is preemptible.
++ if (parameters->options().Bsymbolic())
+ return false;
+
+ // If the user used -Bsymbolic-functions, then functions are not
+diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
+index f767c21..7b73f9d 100644
+--- a/gold/testsuite/Makefile.am
++++ b/gold/testsuite/Makefile.am
+@@ -1518,7 +1518,7 @@ dynamic_list_lib1.o: dynamic_list_lib1.cc
+ $(CXXCOMPILE) -c -fpic -o $@ $<
+
+ dynamic_list_lib2.so: gcctestdir/ld dynamic_list_lib2.o $(srcdir)/dynamic_list_2.t
+- $(CXXLINK) -Bgcctestdir/ -shared -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
++ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-Bsymbolic-functions -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
+ dynamic_list_lib2.o: dynamic_list_lib2.cc
+ $(CXXCOMPILE) -c -fpic -o $@ $<
+
+diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
+index 217e472..b4ae3fd 100644
+--- a/gold/testsuite/Makefile.in
++++ b/gold/testsuite/Makefile.in
+@@ -5319,7 +5319,7 @@ uninstall-am:
+ @GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
+
+ @GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list_lib2.so: gcctestdir/ld dynamic_list_lib2.o $(srcdir)/dynamic_list_2.t
+-@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
++@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-Bsymbolic-functions -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
+ @GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list_lib2.o: dynamic_list_lib2.cc
+ @GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
+
+--
+1.9.4
+