add support for Linaro binutils 2.23.2-2013.06

Signed-off-by: Imre Kaloz <kaloz@openwrt.org>

SVN-Revision: 37944
This commit is contained in:
Imre Kaloz 2013-09-11 13:18:23 +00:00
parent 2dad4ed357
commit 348c3af966
8 changed files with 152 additions and 11 deletions

View File

@ -19,6 +19,10 @@ choice
depends on !avr32 || (avr32 && BROKEN) depends on !avr32 || (avr32 && BROKEN)
bool "binutils 2.23.1" bool "binutils 2.23.1"
config BINUTILS_VERSION_LINARO
depends on !avr32 || (avr32 && BROKEN)
bool "Linaro binutils 2.23.2"
endchoice endchoice
config EXTRA_BINUTILS_CONFIG_OPTIONS config EXTRA_BINUTILS_CONFIG_OPTIONS
@ -34,5 +38,6 @@ config BINUTILS_VERSION
default "2.20.1" if BINUTILS_VERSION_2_20_1 default "2.20.1" if BINUTILS_VERSION_2_20_1
default "2.22" if BINUTILS_VERSION_2_22 default "2.22" if BINUTILS_VERSION_2_22
default "2.23.1" if BINUTILS_VERSION_2_23_1 default "2.23.1" if BINUTILS_VERSION_2_23_1
default "linaro" if BINUTILS_VERSION_LINARO
default "2.20.1" if avr32 default "2.20.1" if avr32
default "2.22" default "2.22"

View File

@ -1,5 +1,5 @@
# #
# Copyright (C) 2006-2012 OpenWrt.org # Copyright (C) 2006-2013 OpenWrt.org
# #
# This is free software, licensed under the GNU General Public License v2. # This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information. # See /LICENSE for more information.
@ -10,17 +10,26 @@ PKG_NAME:=binutils
PKG_VERSION:=$(call qstrip,$(CONFIG_BINUTILS_VERSION)) PKG_VERSION:=$(call qstrip,$(CONFIG_BINUTILS_VERSION))
BIN_VERSION:=$(PKG_VERSION) BIN_VERSION:=$(PKG_VERSION)
PKG_SOURCE_URL:=@GNU/binutils/ ifeq ($(findstring linaro, $(CONFIG_BINUTILS_VERSION)),linaro)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=https://releases.linaro.org/13.06/components/toolchain/binutils-linaro/
PKG_REV:=2.23.2-2013.06
PKG_SOURCE:=$(PKG_NAME)-linaro-$(PKG_REV).tar.bz2
PKG_MD5SUM:=73ad2a91f17b7e4fd41d49db5a541d2d
BINUTILS_DIR:=$(PKG_NAME)-2.23.2
HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(BINUTILS_DIR)
else
PKG_SOURCE_URL:=@GNU/binutils/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
ifeq ($(PKG_VERSION),2.20.1) ifeq ($(PKG_VERSION),2.20.1)
PKG_MD5SUM:=9cdfb9d6ec0578c166d3beae5e15c4e5 PKG_MD5SUM:=9cdfb9d6ec0578c166d3beae5e15c4e5
endif endif
ifeq ($(PKG_VERSION),2.22) ifeq ($(PKG_VERSION),2.22)
PKG_MD5SUM:=ee0f10756c84979622b992a4a61ea3f5 PKG_MD5SUM:=ee0f10756c84979622b992a4a61ea3f5
endif endif
ifeq ($(PKG_VERSION),2.23.1) ifeq ($(PKG_VERSION),2.23.1)
PKG_MD5SUM:=33adb18c3048d057ac58d07a3f1adb38 PKG_MD5SUM:=33adb18c3048d057ac58d07a3f1adb38
endif
endif endif
HOST_BUILD_PARALLEL:=1 HOST_BUILD_PARALLEL:=1

View File

@ -0,0 +1,35 @@
Source: Khem Raj <raj.khem@gmail.com>
Disposition: submit upstream.
Description:
We do not need to have the libtool patch anymore for binutils after
libtool has been updated upstream it include support for it. However
for building gas natively on uclibc systems we have to link it with
-lm so that it picks up missing symbols.
/local/build_area/BUILD/arm_v5t_le_uclibc/binutils-2.17.50/objdir/libiberty/pic/libiberty.a(floatformat.o): In function `floatformat_from_double':
floatformat.c:(.text+0x1ec): undefined reference to `frexp'
floatformat.c:(.text+0x2f8): undefined reference to `ldexp'
/local/build_area/BUILD/arm_v5t_le_uclibc/binutils-2.17.50/objdir/libiberty/pic/libiberty.a(floatformat.o): In function `floatformat_to_double':
floatformat.c:(.text+0x38a): undefined reference to `ldexp'
floatformat.c:(.text+0x3d2): undefined reference to `ldexp'
floatformat.c:(.text+0x43e): undefined reference to `ldexp' floatformat.c:(.text+0x4e2): undefined reference to `ldexp'
collect2: ld returned 1 exit status
make[4]: *** [as-new] Error 1
--- a/gas/configure.tgt
+++ b/gas/configure.tgt
@@ -450,6 +450,12 @@ case ${generic_target} in
*-*-netware) fmt=elf em=netware ;;
esac
+case ${generic_target} in
+ arm-*-*uclibc*)
+ need_libm=yes
+ ;;
+esac
+
case ${cpu_type} in
aarch64 | alpha | arm | i386 | ia64 | microblaze | mips | ns32k | pdp11 | ppc | sparc | z80 | z8k)
bfd_gas=yes

View File

@ -0,0 +1,22 @@
--- a/configure
+++ b/configure
@@ -3595,7 +3595,7 @@ case "${target}" in
mips*-*-*)
noconfigdirs="$noconfigdirs gprof"
;;
- sh-*-* | sh64-*-*)
+ sh*-*-* | sh64-*-*)
case "${target}" in
sh*-*-elf)
;;
--- a/configure.ac
+++ b/configure.ac
@@ -1021,7 +1021,7 @@ case "${target}" in
mips*-*-*)
noconfigdirs="$noconfigdirs gprof"
;;
- sh-*-* | sh64-*-*)
+ sh*-*-* | sh64-*-*)
case "${target}" in
sh*-*-elf)
;;

View File

@ -0,0 +1,10 @@
--- a/config.sub
+++ b/config.sub
@@ -125,6 +125,7 @@ esac
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-musl* | \
linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \

View File

@ -0,0 +1,22 @@
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -37,7 +37,7 @@ endif
# 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@
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -367,7 +367,7 @@ AM_CFLAGS = $(WARN_CFLAGS)
# 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

View File

@ -0,0 +1,20 @@
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -1278,6 +1278,8 @@ fragment <<EOF
&& 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;
@@ -1505,6 +1507,8 @@ gld${EMULATION_NAME}_before_allocation (
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");
+ if ((rpath) && (strlen (rpath) == 0))
+ rpath = NULL;
for (abfd = link_info.input_bfds; abfd; abfd = abfd->link_next)
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)

View File

@ -0,0 +1,18 @@
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -7331,6 +7331,7 @@ _bfd_mips_elf_create_dynamic_sections (b
name = SGI_COMPAT (abfd) ? "_DYNAMIC_LINK" : "_DYNAMIC_LINKING";
bh = NULL;
+ if (0) {
if (!(_bfd_generic_link_add_one_symbol
(info, abfd, name, BSF_GLOBAL, bfd_abs_section_ptr, 0,
NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh)))
@@ -7343,6 +7344,7 @@ _bfd_mips_elf_create_dynamic_sections (b
if (! bfd_elf_link_record_dynamic_symbol (info, h))
return FALSE;
+ }
if (! mips_elf_hash_table (info)->use_rld_obj_head)
{