From e4edea99d9ef9737e5e257dcec09c7f9e6cbeba7 Mon Sep 17 00:00:00 2001 From: Britney Fransen Date: Tue, 19 Jan 2016 16:33:12 +0000 Subject: binutils: update to 2.25.1 --- abs/core/binutils/PKGBUILD | 44 ++-- .../binutils-2.24-gold-testsuite-plugin.patch | 229 --------------------- .../binutils/binutils-2.24-lto-testsuite.patch | 78 ------- abs/core/binutils/binutils-2.24-shared-pie.patch | 99 --------- abs/core/binutils/binutils-e9c1bdad.patch | 78 +++++++ 5 files changed, 96 insertions(+), 432 deletions(-) delete mode 100644 abs/core/binutils/binutils-2.24-gold-testsuite-plugin.patch delete mode 100644 abs/core/binutils/binutils-2.24-lto-testsuite.patch delete mode 100644 abs/core/binutils/binutils-2.24-shared-pie.patch create mode 100644 abs/core/binutils/binutils-e9c1bdad.patch 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 + -- cgit v0.12