diff options
author | Nils Andreas Svee <me@lochnair.net> | 2017-10-19 17:12:47 +0200 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2017-10-20 05:29:46 +0000 |
commit | 30e67c63dba1de11cfe9a7af61304af3e00a3eff (patch) | |
tree | 15883824ba0b779f4cd089e8a7f14e9366ae6c81 /main/binutils | |
parent | b8cb7160e1384279174210f4c590c75cd43b4058 (diff) | |
download | aports-30e67c63dba1de11cfe9a7af61304af3e00a3eff.tar.bz2 aports-30e67c63dba1de11cfe9a7af61304af3e00a3eff.tar.xz |
main/binutils: add mips support
* Remove hash-style-gnu.patch in favor of the patch adding a configure flag for it from upstream
* Add gold-mips.patch from Debian, which makes gold configure correctly for MIPS64 targets
* Use CTARGET_ARCH instead of CARCH to correctly determine whether to enable the x86_64-pep target or not
Diffstat (limited to 'main/binutils')
-rw-r--r-- | main/binutils/APKBUILD | 18 | ||||
-rw-r--r-- | main/binutils/gold-mips.patch | 39 | ||||
-rw-r--r-- | main/binutils/hash-style-configure-flag.patch | 348 | ||||
-rw-r--r-- | main/binutils/hash-style-gnu.patch | 31 |
4 files changed, 400 insertions, 36 deletions
diff --git a/main/binutils/APKBUILD b/main/binutils/APKBUILD index ab4c5259c7..c37df17080 100644 --- a/main/binutils/APKBUILD +++ b/main/binutils/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=binutils pkgver=2.28 -pkgrel=2 +pkgrel=3 pkgdesc="Tools necessary to build programs" url="http://www.gnu.org/software/binutils/" depends="" @@ -13,8 +13,9 @@ license="GPL2 GPL3+ LGPL2 BSD" subpackages="$pkgname-dev $pkgname-doc $pkgname-libs $pkgname-gold" source="http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.bz2 binutils-ld-fix-static-linking.patch - hash-style-gnu.patch + hash-style-configure-flag.patch CVE-2017-7614.patch + gold-mips.patch " builddir="$srcdir/$pkgname-$pkgver" @@ -38,10 +39,15 @@ build() { _cross_configure="--disable-install-libiberty" fi - if [ "$CARCH" = "x86_64" ]; then + if [ "$CTARGET_ARCH" = "x86_64" ]; then _arch_configure="--enable-targets=x86_64-pep" fi + case "$CTARGET_ARCH" in + mips*) _hash_style_configure="--enable-default-hash-style=sysv" ;; + *) _hash_style_configure="--enable-default-hash-style=gnu" ;; + esac + cd "$builddir" ./configure \ --build=$CBUILD \ @@ -62,6 +68,7 @@ build() { --enable-deterministic-archives \ $_cross_configure \ $_arch_configure \ + $_hash_style_configure \ --disable-werror \ --disable-nls \ --with-system-zlib \ @@ -104,5 +111,6 @@ gold() { sha512sums="ede2e4e59a800260eea8c14eafbaee94e30abadafd5c419a3370f9f62213cf027d6400a1d4970b6958bd4d220e675dcd483a708107016e7abd5c99d7392ba8fd binutils-2.28.tar.bz2 ecee33b0e435aa704af1c334e560f201638ff79e199aa11ed78a72f7c9b46f85fbb227af5748e735fd681d1965fcc42ac81b0c8824e540430ce0c706c81e8b49 binutils-ld-fix-static-linking.patch -24e853bf4b58621a77921087e599da2ace47ba3079e2d50fb5d08ae399be5f060c5fdd7f65257bcc0526aebc66e68b98aafd45d714c035da8ea2bdc3d8d4e375 hash-style-gnu.patch -03e2329a216eaaaebc00a2b487a8ffa57657845ea3428f24a1029eabaca2103cb00f39cb4824fe6b70ce9c124e0f850c893746fcf203a6a69288d19df624c60a CVE-2017-7614.patch" +404a483adc8bf8112d953c53a853d21588745752687ee3ca57def539201b9e87844b23ba3c666d7c9648911cdeb55144382c3726ae3845e12b232c3f001c1bfe hash-style-configure-flag.patch +03e2329a216eaaaebc00a2b487a8ffa57657845ea3428f24a1029eabaca2103cb00f39cb4824fe6b70ce9c124e0f850c893746fcf203a6a69288d19df624c60a CVE-2017-7614.patch +f55cf2e0bf82f97583a1abe10710e4013ecf7d64f1da2ef8659a44a06d0dd8beaf58dab98a183488ea137f03e32d62efc878d95f018f836f8cec870bc448556f gold-mips.patch" diff --git a/main/binutils/gold-mips.patch b/main/binutils/gold-mips.patch new file mode 100644 index 0000000000..291a2aae6a --- /dev/null +++ b/main/binutils/gold-mips.patch @@ -0,0 +1,39 @@ +# DP: Fix gold on mips64 targets. + +gold/ + +2016-08-09 Aurelien Jarno <aurelien@aurel32.net> + + * configure.tgt: Add mips64el*-*-*|mips64le*-*-* and mips64*-*-*. + + +--- a/gold/configure.tgt ++++ b/gold/configure.tgt +@@ -153,6 +153,13 @@ aarch64*-*) + targ_big_endian=false + targ_extra_big_endian=true + ;; ++mips*64*el*-*-*|mips*64*le*-*-*) ++ targ_obj=mips ++ targ_machine=EM_MIPS_RS3_LE ++ targ_size=64 ++ targ_big_endian=false ++ targ_extra_big_endian=true ++ ;; + mips*el*-*-*|mips*le*-*-*) + targ_obj=mips + targ_machine=EM_MIPS_RS3_LE +@@ -160,6 +167,13 @@ mips*el*-*-*|mips*le*-*-*) + targ_big_endian=false + targ_extra_big_endian=true + ;; ++mips*64*-*-*) ++ targ_obj=mips ++ targ_machine=EM_MIPS ++ targ_size=64 ++ targ_big_endian=true ++ targ_extra_big_endian=false ++ ;; + mips*-*-*) + targ_obj=mips + targ_machine=EM_MIPS diff --git a/main/binutils/hash-style-configure-flag.patch b/main/binutils/hash-style-configure-flag.patch new file mode 100644 index 0000000000..6d4db4bcad --- /dev/null +++ b/main/binutils/hash-style-configure-flag.patch @@ -0,0 +1,348 @@ +From 2760f24c4942853eac7b921e4b8843d57a602654 Mon Sep 17 00:00:00 2001 +From: Romain Geissler <romain.geissler@gmail.com> +Date: Tue, 8 Aug 2017 07:25:39 +0930 +Subject: [PATCH] Add configure flag to enable gnu hash style by default. + +ld/ + * configure.ac: Add --enable-default-hash-style option. + * ldmain.c (main): Set link_info.emit_hash to DEFAULT_EMIT_SYSV_HASH. + Set link_info.emit_gnu_hash to DEFAULT_EMIT_GNU_HASH. + * configure: Regenerate. + * config.in: Regenerate. + +gold/ + * configure.ac: Add --enable-default-hash-style option. + * options.h (hash_style): Use DEFAULT_HASH_STYLE as default value. + * configure: Regenerate. + * config.in: Regenerate. +--- + gold/ChangeLog | 8 ++++++++ + gold/config.in | 3 +++ + gold/configure | 27 +++++++++++++++++++++++++++ + gold/configure.ac | 20 ++++++++++++++++++++ + gold/options.h | 2 +- + ld/ChangeLog | 9 +++++++++ + ld/config.in | 6 ++++++ + ld/configure | 42 ++++++++++++++++++++++++++++++++++++++---- + ld/configure.ac | 34 ++++++++++++++++++++++++++++++++++ + ld/ldmain.c | 3 ++- + 10 files changed, 148 insertions(+), 6 deletions(-) + +diff --git a/gold/ChangeLog b/gold/ChangeLog +index d598386..93836dd 100644 +--- a/gold/ChangeLog ++++ b/gold/ChangeLog +@@ -1,3 +1,11 @@ ++2017-08-08 Romain Geissler <romain.geissler@gmail.com> ++ Alan Modra <amodra@gmail.com> ++ ++ * configure.ac: Add --enable-default-hash-style option. ++ * options.h (hash_style): Use DEFAULT_HASH_STYLE as default value. ++ * configure: Regenerate. ++ * config.in: Regenerate. ++ + 2017-02-22 Alan Modra <amodra@gmail.com> + + * powerpc.cc (Target_powerpc::make_iplt_section): Check that +diff --git a/gold/config.in b/gold/config.in +index d9f7b76..5855fca 100644 +--- a/gold/config.in ++++ b/gold/config.in +@@ -10,6 +10,9 @@ + /* Define if building universal (internal helper macro) */ + #undef AC_APPLE_UNIVERSAL_BUILD + ++/* Set the default --hash-style value */ ++#undef DEFAULT_HASH_STYLE ++ + /* Define to 1 if you want to enable -z relro in ELF linker by default. */ + #undef DEFAULT_LD_Z_RELRO + +diff --git a/gold/configure b/gold/configure +index cb020be..90a706d 100755 +--- a/gold/configure ++++ b/gold/configure +@@ -797,6 +797,7 @@ enable_threads + enable_plugins + enable_relro + enable_targets ++enable_default_hash_style + with_lib_path + enable_dependency_tracking + enable_nls +@@ -1447,6 +1448,8 @@ Optional Features: + --enable-plugins linker plugins + --enable-relro enable -z relro in ELF linker by default + --enable-targets alternative target configurations ++ --enable-default-hash-style={sysv,gnu,both} ++ use this default hash style + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --disable-nls do not use Native Language Support +@@ -3410,6 +3413,30 @@ if test -n "$enable_targets"; then + done + fi + ++# Decide which "--hash-style" to use by default ++# Provide a configure time option to override our default. ++# Check whether --enable-default-hash-style was given. ++if test "${enable_default_hash_style+set}" = set; then : ++ enableval=$enable_default_hash_style; case "${enable_default_hash_style}" in ++ sysv | gnu | both) ;; ++ *) as_fn_error "bad value ${enable_default_hash_style} for enable-default-hash-style option" "$LINENO" 5 ;; ++esac ++else ++ case "${target}" in ++ # Enable gnu hash only on GNU targets, but not mips ++ mips*-*-*) enable_default_hash_style=sysv ;; ++ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;; ++ *) enable_default_hash_style=sysv ;; ++esac ++fi ++ ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define DEFAULT_HASH_STYLE "${enable_default_hash_style}" ++_ACEOF ++ ++ + # See which specific instantiations we need. + targetobjs= + all_targets= +diff --git a/gold/configure.ac b/gold/configure.ac +index cbe3380..d7fa1f8 100644 +--- a/gold/configure.ac ++++ b/gold/configure.ac +@@ -161,6 +161,26 @@ if test -n "$enable_targets"; then + done + fi + ++# Decide which "--hash-style" to use by default ++# Provide a configure time option to override our default. ++AC_ARG_ENABLE([default-hash-style], ++AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}], ++ [use this default hash style]), ++[case "${enable_default_hash_style}" in ++ sysv | gnu | both) ;; ++ *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;; ++esac], ++[case "${target}" in ++ # Enable gnu hash only on GNU targets, but not mips ++ mips*-*-*) enable_default_hash_style=sysv ;; ++ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;; ++ *) enable_default_hash_style=sysv ;; ++esac]) ++ ++AC_DEFINE_UNQUOTED([DEFAULT_HASH_STYLE], ++ ["${enable_default_hash_style}"], ++ [Set the default --hash-style value]) ++ + # See which specific instantiations we need. + targetobjs= + all_targets= +diff --git a/gold/options.h b/gold/options.h +index a8b1d46..ce21a42 100644 +--- a/gold/options.h ++++ b/gold/options.h +@@ -921,7 +921,7 @@ class General_options + N_("Min fraction of empty buckets in dynamic hash"), + N_("FRACTION")); + +- DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "sysv", ++ DEFINE_enum(hash_style, options::TWO_DASHES, '\0', DEFAULT_HASH_STYLE, + N_("Dynamic hash style"), N_("[sysv,gnu,both]"), + {"sysv", "gnu", "both"}); + +diff --git a/ld/ChangeLog b/ld/ChangeLog +index ba7d1d4..cf91d55 100644 +--- a/ld/ChangeLog ++++ b/ld/ChangeLog +@@ -1,3 +1,12 @@ ++2017-08-08 Romain Geissler <romain.geissler@gmail.com> ++ Alan Modra <amodra@gmail.com> ++ ++ * configure.ac: Add --enable-default-hash-style option. ++ * ldmain.c (main): Set link_info.emit_hash to DEFAULT_EMIT_SYSV_HASH. ++ Set link_info.emit_gnu_hash to DEFAULT_EMIT_GNU_HASH. ++ * configure: Regenerate. ++ * config.in: Regenerate. ++ + 2017-03-02 Tristan Gingold <gingold@adacore.com> + + * configure: Regenerate. +diff --git a/ld/config.in b/ld/config.in +index 2c6d698..b2318e1 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -7,6 +7,12 @@ + #endif + #define __CONFIG_H__ 1 + ++/* Define to 1 if you want to emit gnu hash in the ELF linker by default. */ ++#undef DEFAULT_EMIT_GNU_HASH ++ ++/* Define to 1 if you want to emit sysv hash in the ELF linker by default. */ ++#undef DEFAULT_EMIT_SYSV_HASH ++ + /* Define if you want compressed debug sections by default. */ + #undef DEFAULT_FLAG_COMPRESS_DEBUG + +diff --git a/ld/configure b/ld/configure +index 36af969..40c67fd 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -793,6 +793,7 @@ enable_gold + enable_got + enable_compressed_debug_sections + enable_relro ++enable_default_hash_style + enable_werror + enable_build_warnings + enable_nls +@@ -1452,6 +1453,8 @@ Optional Features: + --enable-compressed-debug-sections={all,ld,none} + compress debug sections by default] + --enable-relro enable -z relro in ELF linker by default ++ --enable-default-hash-style={sysv,gnu,both} ++ use this default hash style + --enable-werror treat compile warnings as errors + --enable-build-warnings enable build-time compiler warnings + --disable-nls do not use Native Language Support +@@ -11724,7 +11727,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11727 "configure" ++#line 11730 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11830,7 +11833,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11833 "configure" ++#line 11836 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -15555,6 +15558,33 @@ if test "${enable_relro+set}" = set; then : + esac + fi + ++# Decide which "--hash-style" to use by default ++# Provide a configure time option to override our default. ++# Check whether --enable-default-hash-style was given. ++if test "${enable_default_hash_style+set}" = set; then : ++ enableval=$enable_default_hash_style; case "${enable_default_hash_style}" in ++ sysv | gnu | both) ;; ++ *) as_fn_error "bad value ${enable_default_hash_style} for enable-default-hash-style option" "$LINENO" 5 ;; ++esac ++else ++ case "${target}" in ++ # Enable gnu hash only on GNU targets, but not mips ++ mips*-*-*) enable_default_hash_style=sysv ;; ++ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;; ++ *) enable_default_hash_style=sysv ;; ++esac ++fi ++ ++ ++case "${enable_default_hash_style}" in ++ sysv | both) ac_default_emit_sysv_hash=1 ;; ++ *) ac_default_emit_sysv_hash=0 ;; ++esac ++ ++case "${enable_default_hash_style}" in ++ gnu | both) ac_default_emit_gnu_hash=1 ;; ++ *) ac_default_emit_gnu_hash=0 ;; ++esac + + # Set the 'development' global. + . $srcdir/../bfd/development.sh +@@ -17212,9 +17242,13 @@ cat >>confdefs.h <<_ACEOF + #define DEFAULT_LD_Z_RELRO $ac_default_ld_z_relro + _ACEOF + ++cat >>confdefs.h <<_ACEOF ++#define DEFAULT_EMIT_SYSV_HASH $ac_default_emit_sysv_hash ++_ACEOF + +- +- ++cat >>confdefs.h <<_ACEOF ++#define DEFAULT_EMIT_GNU_HASH $ac_default_emit_gnu_hash ++_ACEOF + + + +diff --git a/ld/configure.ac b/ld/configure.ac +index 36a9f50..1876ad7 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -166,6 +166,32 @@ AC_ARG_ENABLE(relro, + no) ac_default_ld_z_relro=0 ;; + esac])dnl + ++# Decide which "--hash-style" to use by default ++# Provide a configure time option to override our default. ++AC_ARG_ENABLE([default-hash-style], ++AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}], ++ [use this default hash style]), ++[case "${enable_default_hash_style}" in ++ sysv | gnu | both) ;; ++ *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;; ++esac], ++[case "${target}" in ++ # Enable gnu hash only on GNU targets, but not mips ++ mips*-*-*) enable_default_hash_style=sysv ;; ++ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;; ++ *) enable_default_hash_style=sysv ;; ++esac]) ++ ++case "${enable_default_hash_style}" in ++ sysv | both) ac_default_emit_sysv_hash=1 ;; ++ *) ac_default_emit_sysv_hash=0 ;; ++esac ++ ++case "${enable_default_hash_style}" in ++ gnu | both) ac_default_emit_gnu_hash=1 ;; ++ *) ac_default_emit_gnu_hash=0 ;; ++esac ++ + AM_BINUTILS_WARNINGS + + AM_LC_MESSAGES +@@ -394,6 +420,14 @@ AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO, + $ac_default_ld_z_relro, + [Define to 1 if you want to enable -z relro in ELF linker by default.]) + ++AC_DEFINE_UNQUOTED([DEFAULT_EMIT_SYSV_HASH], ++ [$ac_default_emit_sysv_hash], ++ [Define to 1 if you want to emit sysv hash in the ELF linker by default.]) ++ ++AC_DEFINE_UNQUOTED([DEFAULT_EMIT_GNU_HASH], ++ [$ac_default_emit_gnu_hash], ++ [Define to 1 if you want to emit gnu hash in the ELF linker by default.]) ++ + AC_SUBST(elf_list_options) + AC_SUBST(elf_shlib_list_options) + AC_SUBST(elf_plt_unwind_list_options) +diff --git a/ld/ldmain.c b/ld/ldmain.c +index 1e48b1a..579d961 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -282,7 +282,8 @@ main (int argc, char **argv) + link_info.keep_memory = TRUE; + link_info.combreloc = TRUE; + link_info.strip_discarded = TRUE; +- link_info.emit_hash = TRUE; ++ link_info.emit_hash = DEFAULT_EMIT_SYSV_HASH; ++ link_info.emit_gnu_hash = DEFAULT_EMIT_GNU_HASH; + link_info.callbacks = &link_callbacks; + link_info.input_bfds_tail = &link_info.input_bfds; + /* SVR4 linkers seem to set DT_INIT and DT_FINI based on magic _init +-- +2.14.2 + diff --git a/main/binutils/hash-style-gnu.patch b/main/binutils/hash-style-gnu.patch deleted file mode 100644 index 2e6c01972e..0000000000 --- a/main/binutils/hash-style-gnu.patch +++ /dev/null @@ -1,31 +0,0 @@ -# DP: Default to --hash-style=gnu in ld.bfd and ld.gold. - ---- a/ld/ldmain.c -+++ b/ld/ldmain.c -@@ -287,6 +288,15 @@ - emulation = get_emulation (argc, argv); - ldemul_choose_mode (emulation); - default_target = ldemul_choose_target (argc, argv); -+ -+ /* Default to --hash-style=gnu */ -+ if (strcmp (default_target, "elf32-tradbigmips") != 0 -+ && strcmp (default_target, "elf32-tradlittlemips") != 0) -+ { -+ link_info.emit_gnu_hash = TRUE; -+ link_info.emit_hash = FALSE; -+ } -+ - config.maxpagesize = bfd_emul_get_maxpagesize (default_target); - config.commonpagesize = bfd_emul_get_commonpagesize (default_target); - lang_init (); ---- a/gold/options.h -+++ b/gold/options.h -@@ -794,7 +794,7 @@ - N_("Min fraction of empty buckets in dynamic hash"), - N_("FRACTION")); - -- DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "sysv", -+ DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "gnu", - N_("Dynamic hash style"), N_("[sysv,gnu,both]"), - {"sysv", "gnu", "both"}); - |