2
0
forked from Ivasoft/openwrt

toolchain/arc: update to the most recent release arc-2016.09

arc-2016.09 is the most recent toolchain for ARC cores and
it is based on top of upstream Binutils 2.27 and GCC 6.2.1.

With updated major version of GCC we copied all GCC 6.x patches
for ARC as well as Bintils 2.27 patches.

Note that toochain sports ARCv4 ABI and so must be used
with 4.8+ Linux kernels. Even though it will build v4.4 kernel
perfectly fine on attempt to run user-space apps they won't
work with older kernel. That said previuosly sent RFC patches with
Linux kernel update are required:
 [1] https://patchwork.ozlabs.org/patch/726686/
 [2] https://patchwork.ozlabs.org/patch/726687/

Signed-off-by: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
This commit is contained in:
Alexey Brodkin
2017-02-27 21:27:50 +03:00
committed by Felix Fietkau
parent 2b27e62e74
commit 34e8393019
41 changed files with 573 additions and 523 deletions

View File

@@ -3,7 +3,7 @@
choice
prompt "Binutils Version" if TOOLCHAINOPTS
default BINUTILS_USE_VERSION_2_27 if !arc
default BINUTILS_USE_VERSION_2_26_ARC if arc
default BINUTILS_USE_VERSION_2_27_ARC if arc
help
Select the version of binutils you wish to use.
@@ -17,10 +17,10 @@ choice
bool "Binutils 2.28"
select BINUTILS_VERSION_2_28
config BINUTILS_USE_VERSION_2_26_ARC
config BINUTILS_USE_VERSION_2_27_ARC
depends on arc
bool "ARC binutils 2.26"
select BINUTILS_VERSION_2_26_ARC
bool "ARC binutils 2.27"
select BINUTILS_VERSION_2_27_ARC
endchoice

View File

@@ -5,7 +5,7 @@ config BINUTILS_VERSION_2_27
config BINUTILS_VERSION_2_28
bool
config BINUTILS_VERSION_2_26_ARC
config BINUTILS_VERSION_2_27_ARC
default y if (!TOOLCHAINOPTS && arc)
bool
@@ -13,5 +13,4 @@ config BINUTILS_VERSION
string
default "2.27" if BINUTILS_VERSION_2_27
default "2.28" if BINUTILS_VERSION_2_28
default "arc-2016.03" if BINUTILS_VERSION_2_26_ARC
default "arc-2016.09" if BINUTILS_VERSION_2_27_ARC

View File

@@ -21,12 +21,12 @@ ifeq ($(PKG_VERSION),2.28)
PKG_HASH:=6297433ee120b11b4b0a1c8f3512d7d73501753142ab9e2daa13c5a3edd32a72
endif
ifneq ($(CONFIG_BINUTILS_VERSION_2_26_ARC),)
PKG_SOURCE_URL:=https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/archive/arc-2016.03/
PKG_REV:=2016.03
PKG_SOURCE:=$(PKG_NAME)-arc-$(PKG_REV).tar.gz
PKG_HASH:=6583a0cd5c7251dc895a47c797a9b011e466c23377d2ca7548a707fdb918fba1
BINUTILS_DIR:=$(PKG_NAME)-gdb-arc-$(PKG_REV)
ifneq ($(CONFIG_BINUTILS_VERSION_2_27_ARC),)
PKG_REV:=arc-2016.09-release
PKG_SOURCE_URL:=https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/archive/$(PKG_REV)/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_REV).tar.gz
PKG_HASH:=c6de8aedb7568406d784295476de9139a5e351e970e18b602e0037439b3a7b4b
BINUTILS_DIR:=$(PKG_NAME)-gdb-$(PKG_REV)
HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(BINUTILS_DIR)
endif

View File

@@ -1,13 +0,0 @@
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 5145d4a..a9c9c99 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -275,7 +275,7 @@ case "${targ}" in
targ_defvec=am33_elf32_linux_vec
;;
- arc*-*-elf* | arc*-*-linux-uclibc*)
+ arc*-*-elf* | arc*-*-linux-*)
targ_defvec=arc_elf32_le_vec
targ_selvecs=arc_elf32_be_vec
;;

View File

@@ -0,0 +1,22 @@
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -57,7 +57,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
@@ -451,7 +451,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
# 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
@@ -1244,6 +1244,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;
@@ -1525,6 +1527,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)