From 0a41ba39e26b08d9a000a917eeccd948e9da12a7 Mon Sep 17 00:00:00 2001 From: "\"Steven J. Hill\"" Date: Mon, 7 May 2007 03:57:09 +0000 Subject: [PATCH] Add older version of binutils. --- .../2.17.50.0.12/100-uclibc-conf.patch | 139 ++++++++++++++++++ .../2.17.50.0.12/110-arm-eabi-conf.patch | 24 +++ .../300-001_ld_makefile_patch.patch | 50 +++++++ .../300-012_check_ldrunpath_length.patch | 47 ++++++ .../320-mips-elf-reloc-regression.patch | 68 +++++++++ toolchain/binutils/Config.in | 5 + 6 files changed, 333 insertions(+) create mode 100644 toolchain/binutils/2.17.50.0.12/100-uclibc-conf.patch create mode 100644 toolchain/binutils/2.17.50.0.12/110-arm-eabi-conf.patch create mode 100644 toolchain/binutils/2.17.50.0.12/300-001_ld_makefile_patch.patch create mode 100644 toolchain/binutils/2.17.50.0.12/300-012_check_ldrunpath_length.patch create mode 100644 toolchain/binutils/2.17.50.0.12/320-mips-elf-reloc-regression.patch diff --git a/toolchain/binutils/2.17.50.0.12/100-uclibc-conf.patch b/toolchain/binutils/2.17.50.0.12/100-uclibc-conf.patch new file mode 100644 index 0000000000..25222e5df2 --- /dev/null +++ b/toolchain/binutils/2.17.50.0.12/100-uclibc-conf.patch @@ -0,0 +1,139 @@ +--- binutils-2.16.91.0.7/bfd/configure ++++ binutils-2.16.91.0.7/bfd/configure +@@ -3576,7 +3576,7 @@ + ;; + + # This must be Linux ELF. +-linux-gnu*) ++linux-gnu*|linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + ;; + +--- binutils-2.16.91.0.7/binutils/configure ++++ binutils-2.16.91.0.7/binutils/configure +@@ -3411,7 +3411,7 @@ + ;; + + # This must be Linux ELF. +-linux-gnu*) ++linux-gnu*|linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + ;; + +--- binutils-2.16.91.0.7/configure ++++ binutils-2.16.91.0.7/configure +@@ -1270,7 +1270,7 @@ + am33_2.0-*-linux*) + noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" + ;; +- sh-*-linux*) ++ sh*-*-linux*) + noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" + ;; + sh*-*-pe|mips*-*-pe|*arm-wince-pe) +@@ -1578,7 +1578,7 @@ + romp-*-*) + noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}" + ;; +- sh-*-* | sh64-*-*) ++ sh*-*-* | sh64-*-*) + case "${host}" in + i[3456789]86-*-vsta) ;; # don't add gprof back in + i[3456789]86-*-go32*) ;; # don't add gprof back in +--- binutils-2.16.91.0.7/configure.in ++++ binutils-2.16.91.0.7/configure.in +@@ -468,7 +468,7 @@ + am33_2.0-*-linux*) + noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" + ;; +- sh-*-linux*) ++ sh*-*-linux*) + noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" + ;; + sh*-*-pe|mips*-*-pe|*arm-wince-pe) +@@ -776,7 +776,7 @@ + romp-*-*) + noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}" + ;; +- sh-*-* | sh64-*-*) ++ sh*-*-* | sh64-*-*) + case "${host}" in + i[[3456789]]86-*-vsta) ;; # don't add gprof back in + i[[3456789]]86-*-go32*) ;; # don't add gprof back in +--- binutils-2.16.91.0.7/gas/configure ++++ binutils-2.16.91.0.7/gas/configure +@@ -3411,7 +3411,7 @@ + ;; + + # This must be Linux ELF. +-linux-gnu*) ++linux-gnu*|linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + ;; + +--- binutils-2.16.91.0.7/gprof/configure ++++ binutils-2.16.91.0.7/gprof/configure +@@ -3419,6 +3419,11 @@ + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + ++linux-uclibc*) ++ lt_cv_deplibs_check_method=pass_all ++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` ++ ;; ++ + netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' +--- binutils-2.16.91.0.7/ld/configure ++++ binutils-2.16.91.0.7/ld/configure +@@ -3413,7 +3413,7 @@ + ;; + + # This must be Linux ELF. +-linux-gnu*) ++linux-gnu*|linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + ;; + +--- binutils-2.16.91.0.7/libtool.m4 ++++ binutils-2.16.91.0.7/libtool.m4 +@@ -739,7 +739,7 @@ + ;; + + # This must be Linux ELF. +-linux-gnu*) ++linux-gnu*|linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + ;; + +--- binutils-2.16.91.0.7/ltconfig ++++ binutils-2.16.91.0.7/ltconfig +@@ -602,6 +602,7 @@ + + # Transform linux* to *-*-linux-gnu*, to support old configure scripts. + case $host_os in ++linux-uclibc*) ;; + linux-gnu*) ;; + linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` + esac +@@ -1247,7 +1248,7 @@ + ;; + + # This must be Linux ELF. +-linux-gnu*) ++linux-gnu*|linux-uclibc*) + version_type=linux + need_lib_prefix=no + need_version=no +--- binutils-2.16.91.0.7/opcodes/configure ++++ binutils-2.16.91.0.7/opcodes/configure +@@ -3579,7 +3579,7 @@ + ;; + + # This must be Linux ELF. +-linux-gnu*) ++linux-gnu*|linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + ;; + diff --git a/toolchain/binutils/2.17.50.0.12/110-arm-eabi-conf.patch b/toolchain/binutils/2.17.50.0.12/110-arm-eabi-conf.patch new file mode 100644 index 0000000000..be85ceb109 --- /dev/null +++ b/toolchain/binutils/2.17.50.0.12/110-arm-eabi-conf.patch @@ -0,0 +1,24 @@ +diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure +--- binutils-2.16.91.0.7.orig/configure 2006-05-31 14:54:24.000000000 +0300 ++++ binutils-2.16.91.0.7/configure 2006-05-31 14:55:53.000000000 +0300 +@@ -1299,7 +1299,7 @@ + arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* ) + noconfigdirs="$noconfigdirs target-libffi target-qthreads" + ;; +- arm*-*-linux-gnueabi) ++ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi) + noconfigdirs="$noconfigdirs target-libffi target-qthreads" + noconfigdirs="$noconfigdirs target-libjava target-libobjc" + ;; +diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in +--- binutils-2.16.91.0.7.orig/configure.in 2006-05-31 14:54:24.000000000 +0300 ++++ binutils-2.16.91.0.7/configure.in 2006-05-31 14:55:53.000000000 +0300 +@@ -497,7 +497,7 @@ + arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* ) + noconfigdirs="$noconfigdirs target-libffi target-qthreads" + ;; +- arm*-*-linux-gnueabi) ++ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi) + noconfigdirs="$noconfigdirs target-libffi target-qthreads" + noconfigdirs="$noconfigdirs target-libjava target-libobjc" + ;; diff --git a/toolchain/binutils/2.17.50.0.12/300-001_ld_makefile_patch.patch b/toolchain/binutils/2.17.50.0.12/300-001_ld_makefile_patch.patch new file mode 100644 index 0000000000..04a7e61e25 --- /dev/null +++ b/toolchain/binutils/2.17.50.0.12/300-001_ld_makefile_patch.patch @@ -0,0 +1,50 @@ +#!/bin/sh -e +## 001_ld_makefile_patch.dpatch +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Description: correct where ld scripts are installed +## DP: Author: Chris Chimelis +## DP: Upstream status: N/A +## DP: Date: ?? + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch}" + +case "$1" in + -patch) patch $patch_opts -p1 < $0;; + -unpatch) patch $patch_opts -p1 -R < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +@DPATCH@ +--- binutils-2.16.91.0.1/ld/Makefile.am ++++ binutils-2.16.91.0.1/ld/Makefile.am +@@ -20,7 +20,7 @@ + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + + EMUL = @EMUL@ + EMULATION_OFILES = @EMULATION_OFILES@ +--- binutils-2.16.91.0.1/ld/Makefile.in ++++ binutils-2.16.91.0.1/ld/Makefile.in +@@ -268,7 +268,7 @@ + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + BASEDIR = $(srcdir)/.. + BFDDIR = $(BASEDIR)/bfd + INCDIR = $(BASEDIR)/include diff --git a/toolchain/binutils/2.17.50.0.12/300-012_check_ldrunpath_length.patch b/toolchain/binutils/2.17.50.0.12/300-012_check_ldrunpath_length.patch new file mode 100644 index 0000000000..498651a90c --- /dev/null +++ b/toolchain/binutils/2.17.50.0.12/300-012_check_ldrunpath_length.patch @@ -0,0 +1,47 @@ +#!/bin/sh -e +## 012_check_ldrunpath_length.dpatch by Chris Chimelis +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for +## DP: cases where -rpath isn't specified. (#151024) + +if [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch}" + +case "$1" in + -patch) patch $patch_opts -p1 < $0;; + -unpatch) patch $patch_opts -p1 -R < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em +--- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:58.000000000 +0100 ++++ binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:59.000000000 +0100 +@@ -692,6 +692,8 @@ + && command_line.rpath == NULL) + { + lib_path = (const char *) getenv ("LD_RUN_PATH"); ++ if ((lib_path) && (strlen (lib_path) == 0)) ++ lib_path = NULL; + if (gld${EMULATION_NAME}_search_needed (lib_path, &n, + force)) + break; +@@ -871,6 +873,8 @@ + rpath = command_line.rpath; + if (rpath == NULL) + rpath = (const char *) getenv ("LD_RUN_PATH"); ++ if ((rpath) && (strlen (rpath) == 0)) ++ rpath = NULL; + if (! (bfd_elf_size_dynamic_sections + (output_bfd, command_line.soname, rpath, + command_line.filter_shlib, diff --git a/toolchain/binutils/2.17.50.0.12/320-mips-elf-reloc-regression.patch b/toolchain/binutils/2.17.50.0.12/320-mips-elf-reloc-regression.patch new file mode 100644 index 0000000000..902bb8836e --- /dev/null +++ b/toolchain/binutils/2.17.50.0.12/320-mips-elf-reloc-regression.patch @@ -0,0 +1,68 @@ +diff -ur binutils-2.17.50.0.12/bfd/elfxx-mips.c binutils-2.17.50.0.12-patched/bfd/elfxx-mips.c +--- binutils-2.17.50.0.12/bfd/elfxx-mips.c 2006-11-27 16:21:04.000000000 -0600 ++++ binutils-2.17.50.0.12-patched/bfd/elfxx-mips.c 2007-03-20 15:25:42.000000000 -0500 +@@ -3615,7 +3615,6 @@ + } + + /* We didn't find it. */ +- bfd_set_error (bfd_error_bad_value); + return NULL; + } + +@@ -7849,32 +7848,36 @@ + several relocations for the same address. In + that case, the R_MIPS_LO16 relocation may occur + as one of these. We permit a similar extension +- in general, as that is useful for GCC. */ ++ in general, as that is useful for GCC. ++ ++ In some cases GCC dead code elimination removes ++ the LO16 but keeps the corresponding HI16. */ + lo16_relocation = mips_elf_next_relocation (input_bfd, + lo16_type, + rel, relend); +- if (lo16_relocation == NULL) +- return FALSE; +- +- lo16_location = contents + lo16_relocation->r_offset; ++ if (lo16_relocation != NULL) ++ { ++ lo16_location = contents + lo16_relocation->r_offset; + +- /* Obtain the addend kept there. */ +- lo16_howto = MIPS_ELF_RTYPE_TO_HOWTO (input_bfd, +- lo16_type, FALSE); +- _bfd_mips16_elf_reloc_unshuffle (input_bfd, lo16_type, FALSE, +- lo16_location); +- l = mips_elf_obtain_contents (lo16_howto, lo16_relocation, +- input_bfd, contents); +- _bfd_mips16_elf_reloc_shuffle (input_bfd, lo16_type, FALSE, +- lo16_location); +- l &= lo16_howto->src_mask; +- l <<= lo16_howto->rightshift; +- l = _bfd_mips_elf_sign_extend (l, 16); ++ /* Obtain the addend kept there. */ ++ lo16_howto = MIPS_ELF_RTYPE_TO_HOWTO (input_bfd, ++ lo16_type, FALSE); ++ _bfd_mips16_elf_reloc_unshuffle (input_bfd, lo16_type, ++ FALSE, lo16_location); ++ l = mips_elf_obtain_contents (lo16_howto, ++ lo16_relocation, ++ input_bfd, contents); ++ _bfd_mips16_elf_reloc_shuffle (input_bfd, lo16_type, ++ FALSE, lo16_location); ++ l &= lo16_howto->src_mask; ++ l <<= lo16_howto->rightshift; ++ l = _bfd_mips_elf_sign_extend (l, 16); + +- addend <<= 16; ++ addend <<= 16; + +- /* Compute the combined addend. */ +- addend += l; ++ /* Compute the combined addend. */ ++ addend += l; ++ } + } + else + addend <<= howto->rightshift; diff --git a/toolchain/binutils/Config.in b/toolchain/binutils/Config.in index 4a0192b7f6..c80b3839b2 100644 --- a/toolchain/binutils/Config.in +++ b/toolchain/binutils/Config.in @@ -80,6 +80,10 @@ choice depends !BR2_nios2 bool "binutils 2.17.50.0.10" + config BR2_BINUTILS_VERSION_2_17_50_0_12 + depends !BR2_nios2 + bool "binutils 2.17.50.0.12" + config BR2_BINUTILS_VERSION_2_17_50_0_14 depends !BR2_nios2 bool "binutils 2.17.50.0.14" @@ -105,6 +109,7 @@ config BR2_BINUTILS_VERSION default "2.17.50.0.8" if BR2_BINUTILS_VERSION_2_17_50_0_8 default "2.17.50.0.9" if BR2_BINUTILS_VERSION_2_17_50_0_9 default "2.17.50.0.10" if BR2_BINUTILS_VERSION_2_17_50_0_10 + default "2.17.50.0.12" if BR2_BINUTILS_VERSION_2_17_50_0_12 default "2.17.50.0.14" if BR2_BINUTILS_VERSION_2_17_50_0_14 config BR2_EXTRA_BINUTILS_CONFIG_OPTIONS -- 2.30.2