Commit e10860f6 authored by Alexey Brodkin's avatar Alexey Brodkin Committed by Thomas Petazzoni
Browse files

toolchain: bump ARC toolchain components to arc-2015.12-rc1

This change introduces newer ARC toolchain in Buildroot.
Note this is the first release candidate and we'll probably see another
RC before cutting the final release.

That new arc-2015.12 release doesn't bring any significant changes but
mostly is focused on fixes and minor improvements here and there.
Most noticeable changes are:
 * GCC updated to v4.8.5
 * GDB updated to 7.10

You may find more info on fixes and improvements in that release at:
https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2015.12-rc1



Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
Cc: arc-buildroot@synopsys.com
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent fbb76bb3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ endchoice

config BR2_BINUTILS_VERSION
	string
	default "arc-2015.06"	if BR2_arc
	default "arc-2015.12-rc1"	if BR2_arc
	default "2.23.2"	if BR2_BINUTILS_VERSION_2_23_X
	default "2.24"		if BR2_BINUTILS_VERSION_2_24_X
	default "2.25.1"	if BR2_BINUTILS_VERSION_2_25_X
+0 −145
Original line number Diff line number Diff line
From daf1ff839fc68ef31e3263780de4604a95118702 Mon Sep 17 00:00:00 2001
From: Andrew Burgess <andrew.burgess@embecosm.com>
Date: Thu, 23 Jul 2015 14:44:15 +0100
Subject: [PATCH 1/2] ld/arc: Provide the .tdata symbol.

When creating local dynamic tls access we rely on a .tdata symbol being
available to link against.  Normally, this is fine, as content is placed
into the .tdata section the linker makes a .tdata symbol available and
all is fine.

However, these linker created section symbols only exist for input
sections, not output sections, so, when we assemble with
-fdata-sections, and the content is placed not into '.tdata', but into
sections like, '.tdata.variable' we end up in a situation where there is
no input section called '.tdata', and so the linker does not create a
symbol called '.tdata' for us, at which point the link fails.

The solution it to have the linker script explicitly provide the symbol
'.tdata', this should ensure that the symbol is always available.

ld/ChangeLog:

	* scripttempl/arclinux.sc (.tdata): Provide the .tdata symbol.

ld/testsuite/ChangeLog:

	* ld/testsuite/ld-arc/arc.exp: Run new test.
	* ld/testsuite/ld-arc/tls-data-sections.d: New file.
	* ld/testsuite/ld-arc/tls-data-sections.s: New file.
---
 ld/ChangeLog.ARC                        |  4 ++++
 ld/scripttempl/arclinux.sc              |  2 +-
 ld/testsuite/ChangeLog.ARC              |  6 ++++++
 ld/testsuite/ld-arc/arc.exp             |  1 +
 ld/testsuite/ld-arc/tls-data-sections.d | 12 ++++++++++++
 ld/testsuite/ld-arc/tls-data-sections.s | 30 ++++++++++++++++++++++++++++++
 6 files changed, 54 insertions(+), 1 deletion(-)
 create mode 100644 ld/testsuite/ld-arc/tls-data-sections.d
 create mode 100644 ld/testsuite/ld-arc/tls-data-sections.s

diff --git a/ld/ChangeLog.ARC b/ld/ChangeLog.ARC
index fac6f48..0006bb3 100644
--- a/ld/ChangeLog.ARC
+++ b/ld/ChangeLog.ARC
@@ -1,3 +1,7 @@
+2015-07-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* scripttempl/arclinux.sc (.tdata): Provide the .tdata symbol.
+
 2015-03-26: Claudiu Zissulescu <claziss@synopsys.com>
 
 	* testsuite/ld-arc/sda_relocs.d: New file.
diff --git a/ld/scripttempl/arclinux.sc b/ld/scripttempl/arclinux.sc
index 9d43ca3..1385b30 100644
--- a/ld/scripttempl/arclinux.sc
+++ b/ld/scripttempl/arclinux.sc
@@ -326,7 +326,7 @@ cat <<EOF
   .data1        ${RELOCATING-0} : { *(.data1) }
   /* TLS local dynamic uses .tdata as a reference point.  */
   ${RELOCATING+${CREATE_SHLIB+PROVIDE_HIDDEN (.tdata = .);}}
-  .tdata	${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }
+  .tdata	${RELOCATING-0} : { PROVIDE_HIDDEN(.tdata = .); *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }
   .tbss		${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }
   .eh_frame     ${RELOCATING-0} : { KEEP (*(.eh_frame)) }
   .gcc_except_table ${RELOCATING-0} : { *(.gcc_except_table) }
diff --git a/ld/testsuite/ChangeLog.ARC b/ld/testsuite/ChangeLog.ARC
index b6d3eff..79f7ea9 100644
--- a/ld/testsuite/ChangeLog.ARC
+++ b/ld/testsuite/ChangeLog.ARC
@@ -1,3 +1,9 @@
+2015-07-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ld/testsuite/ld-arc/arc.exp: Run new test.
+	* ld/testsuite/ld-arc/tls-data-sections.d: New file.
+	* ld/testsuite/ld-arc/tls-data-sections.s: New file.
+
 2015-06-06  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* ld-arc/unaligned-pc32.d: New file.
diff --git a/ld/testsuite/ld-arc/arc.exp b/ld/testsuite/ld-arc/arc.exp
index d2bfafe..74ab458 100644
--- a/ld/testsuite/ld-arc/arc.exp
+++ b/ld/testsuite/ld-arc/arc.exp
@@ -47,3 +47,4 @@ if {[check_shared_lib_support]} {
 
 run_dump_test "sda_relocs"
 run_dump_test "unaligned-pc32"
+run_dump_test "tls-data-sections"
diff --git a/ld/testsuite/ld-arc/tls-data-sections.d b/ld/testsuite/ld-arc/tls-data-sections.d
new file mode 100644
index 0000000..9823bf0
--- /dev/null
+++ b/ld/testsuite/ld-arc/tls-data-sections.d
@@ -0,0 +1,12 @@
+#source: tls-data-sections.s
+#ld: --entry=main
+#objdump: -rd
+
+
+.*:     file format elf32-littlearc
+
+
+Disassembly of section \.text:
+
+00010094 <main>:
+   10094:	00 21 80 3f 00 00 08 00 	add        r0,r25,8
diff --git a/ld/testsuite/ld-arc/tls-data-sections.s b/ld/testsuite/ld-arc/tls-data-sections.s
new file mode 100644
index 0000000..f0450c0
--- /dev/null
+++ b/ld/testsuite/ld-arc/tls-data-sections.s
@@ -0,0 +1,30 @@
+        /* This file is not intended to be real code, however, the
+           contents of the main function is real code as generated as
+           part of a local dynamic tls model access.  The purpose of
+           this test is to check that such an access will link
+           correctly.
+
+           Notice that the relocation in main references '.tdata', and
+           though we put content into '.tdata.pgsz.1362' we don't
+           create a '.tdata' section.  This is intentional, this example
+           was generated using -fdata-sections.
+
+           The '.tdata' section will be created in the linker script,
+           and we do expect to be able to reference it.  This should link.
+        */
+
+        .section ".text", "ax"
+        .global main, _start
+_start: 
+        .type   main, @function
+main:
+        add r0,pcl,@.tdata@tlsgd                ;8
+        .size   main, .-main
+
+        .section        .tdata.pgsz.1362,"awT",@progbits
+        .align 8
+        .type   pgsz.1362, @object
+        .size   pgsz.1362, 4
+
+pgsz.1362:
+        .word   1
-- 
2.4.3
+0 −70
Original line number Diff line number Diff line
From a6014a956a4f2263c28240bb9191bee8f924b5db Mon Sep 17 00:00:00 2001
From: Claudiu Zissulescu <claziss@synopsys.com>
Date: Tue, 28 Jul 2015 13:34:47 +0200
Subject: [PATCH 2/2] Provide .tbss symbol

---
 ld/ChangeLog.ARC           | 14 +++++++++-----
 ld/scripttempl/arclinux.sc |  2 +-
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/ld/ChangeLog.ARC b/ld/ChangeLog.ARC
index 0006bb3..fb5c717 100644
--- a/ld/ChangeLog.ARC
+++ b/ld/ChangeLog.ARC
@@ -1,8 +1,12 @@
+2015-07-28  Claudiu Zissulescu  <claziss@synopsys.com>
+
+	* scripttempl/arclinux.sc (.tbss): Provide the .tbss symbol.
+
 2015-07-23  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* scripttempl/arclinux.sc (.tdata): Provide the .tdata symbol.
 
-2015-03-26: Claudiu Zissulescu <claziss@synopsys.com>
+2015-03-26  Claudiu Zissulescu <claziss@synopsys.com>
 
 	* testsuite/ld-arc/sda_relocs.d: New file.
 	* testsuite/ld-arc/sda_relocs.ld: Likewise.
@@ -13,21 +17,21 @@
 	* scripttempl/arclinux.sc: PROVIDE_HIDDEN .tdata (in case the
 	section won't be included).
 
-2014-12-17: Claudiu Zissulescu <claziss@synopsys.com>
+2014-12-17  Claudiu Zissulescu  <claziss@synopsys.com>
 
 	* scripttempl/elfarcv2.sc: Update .startup section.
 
-2014-12-08: Claudiu Zissulescu <claziss@synopsys.com>
+2014-12-08  Claudiu Zissulescu  <claziss@synopsys.com>
 
 	* emulparams/arcv2elf.sh :Add discarded sections.
 	* emulparams/arcv2elfb.sh: Likewise
 	* scripttempl/elfarcv2.sc: New sections.
 
-2014-12-01: Claudiu Zissulescu <claziss@synopsys.com>
+2014-12-01  Claudiu Zissulescu  <claziss@synopsys.com>
 
 	* scripttempl/elfarcv2.sc: Align the start of the stack.
 
-2014-11-27: Claudiu Zissulescu <claziss@synopsys.com>
+2014-11-27  Claudiu Zissulescu  <claziss@synopsys.com>
 
 	* Makefile.am: Add two new emulation scripts for ARCv2.
 	* configure.tgt: Likewise.
diff --git a/ld/scripttempl/arclinux.sc b/ld/scripttempl/arclinux.sc
index 1385b30..bef5336 100644
--- a/ld/scripttempl/arclinux.sc
+++ b/ld/scripttempl/arclinux.sc
@@ -327,7 +327,7 @@ cat <<EOF
   /* TLS local dynamic uses .tdata as a reference point.  */
   ${RELOCATING+${CREATE_SHLIB+PROVIDE_HIDDEN (.tdata = .);}}
   .tdata	${RELOCATING-0} : { PROVIDE_HIDDEN(.tdata = .); *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }
-  .tbss		${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }
+  .tbss		${RELOCATING-0} : { PROVIDE_HIDDEN(.tbss = .); *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }
   .eh_frame     ${RELOCATING-0} : { KEEP (*(.eh_frame)) }
   .gcc_except_table ${RELOCATING-0} : { *(.gcc_except_table) }
   ${WRITABLE_RODATA+${RODATA}}
-- 
2.4.3
+0 −132
Original line number Diff line number Diff line
From a65b844aed9153789356e098984452df2f5d9058 Mon Sep 17 00:00:00 2001
From: Claudiu Zissulescu <claziss@synopsys.com>
Date: Tue, 4 Aug 2015 12:53:11 +0200
Subject: [PATCH] Check to see if the input BFD actually contains any sections.

---
 bfd/elf32-arc.c   | 70 +++++++++++++++++++++++++++++++++++++------------------
 1 file changed, 47 insertions(+), 23 deletions(-)

diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
index 38f72b4..76bac6c 100644
--- a/bfd/elf32-arc.c
+++ b/bfd/elf32-arc.c
@@ -881,44 +881,68 @@ arc_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   unsigned short mach_ibfd;
   static unsigned short mach_obfd = EM_NONE;
-  flagword old_flags;
-  flagword new_flags;
+  flagword out_flags;
+  flagword in_flags;
+  asection *sec;
+
+   /* Check if we have the same endianess.  */
+  if (! _bfd_generic_verify_endian_match (ibfd, obfd))
+    {
+      _bfd_error_handler (
+			  _("ERROR: Endian Match failed . Attempting to link %B with binary %s \
+of opposite endian-ness"),
+			  ibfd, bfd_get_filename (obfd));
+      return FALSE;
+    }
 
   /* Collect ELF flags. */
-  new_flags = elf_elfheader (ibfd)->e_flags & EF_ARC_MACH_MSK;
-  old_flags = elf_elfheader (obfd)->e_flags & EF_ARC_MACH_MSK;
+  in_flags = elf_elfheader (ibfd)->e_flags & EF_ARC_MACH_MSK;
+  out_flags = elf_elfheader (obfd)->e_flags & EF_ARC_MACH_MSK;
 
 #if DEBUG
-  (*_bfd_error_handler) ("old_flags = 0x%.8lx, new_flags = 0x%.8lx, init = %s, filename = %s",
-			 old_flags, new_flags, elf_flags_init (obfd) ? "yes" : "no",
+  (*_bfd_error_handler) ("out_flags = 0x%.8lx, in_flags = 0x%.8lx, init = %s, filename = %s",
+			 out_flags, in_flags, elf_flags_init (obfd) ? "yes" : "no",
 			 bfd_get_filename (ibfd));
 #endif
 
   if (!elf_flags_init (obfd))			/* First call, no flags set.  */
     {
       elf_flags_init (obfd) = TRUE;
-      old_flags = new_flags;
+      out_flags = in_flags;
     }
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
     return TRUE;
 
-  if (bfd_count_sections (ibfd) == 0)
-    return TRUE ; /* For the case of empty archive files */
+  /* Check to see if the input BFD actually contains any sections.  If
+     not, its flags may not have been initialised either, but it
+     cannot actually cause any incompatiblity.  Do not short-circuit
+     dynamic objects; their section list may be emptied by
+     elf_link_add_object_symbols.  */
+  if (!(ibfd->flags & DYNAMIC))
+    {
+      bfd_boolean null_input_bfd = TRUE;
+      bfd_boolean only_data_sections = TRUE;
 
-  mach_ibfd = elf_elfheader (ibfd)->e_machine;
+      for (sec = ibfd->sections; sec != NULL; sec = sec->next)
+	{
+	  if ((bfd_get_section_flags (ibfd, sec)
+	       & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+	      == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+	    only_data_sections = FALSE;
 
-   /* Check if we have the same endianess.  */
-  if (! _bfd_generic_verify_endian_match (ibfd, obfd))
-    {
-      _bfd_error_handler (_("\
-ERROR: Endian Match failed . Attempting to link %B with binary %s \
-of opposite endian-ness"),
-			  ibfd, bfd_get_filename (obfd));
-      return FALSE;
+	  null_input_bfd = FALSE;
+	  break;
+	}
+
+      if (null_input_bfd || only_data_sections)
+	return TRUE;
     }
 
+
+  /* Complain about various flag/architecture mismatches.  */
+  mach_ibfd = elf_elfheader (ibfd)->e_machine;
   if (mach_obfd == EM_NONE)
     {
       mach_obfd = mach_ibfd;
@@ -932,23 +956,23 @@ with a binary %s of different architecture"),
 			      ibfd, bfd_get_filename (obfd));
 	  return FALSE;
 	}
-      else if (new_flags != old_flags)
+      else if (in_flags != out_flags)
 	{
 	  /* Warn if different flags. */
 	  (*_bfd_error_handler)
 	    (_("%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"),
-	     bfd_get_filename (ibfd), (long)new_flags, (long)old_flags);
-	  if (new_flags && old_flags)
+	     bfd_get_filename (ibfd), (long)in_flags, (long)out_flags);
+	  if (in_flags && out_flags)
 	    return FALSE;
 	  /* MWDT doesnt set the eflags hence make sure we choose the
 	     eflags set by gcc.  */
-	  new_flags = new_flags > old_flags ? new_flags : old_flags;
+	  in_flags = in_flags > out_flags ? in_flags : out_flags;
 	}
 
     }
 
   /* Update the flags. */
-  elf_elfheader (obfd)->e_flags = new_flags;
+  elf_elfheader (obfd)->e_flags = in_flags;
 
   if (bfd_get_mach (obfd) < bfd_get_mach (ibfd))
     {
-- 
2.4.3
+0 −35
Original line number Diff line number Diff line
From 5df50c61083165455aae5504c5c3566fa5ccebb1 Mon Sep 17 00:00:00 2001
From: Claudiu Zissulescu <claziss@synopsys.com>
Date: Fri, 16 Oct 2015 10:21:21 +0200
Subject: [PATCH] Test the entire object if it contains only data sections.

diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
index 76bac6c..eb4f8e0 100644
--- a/bfd/elf32-arc.c
+++ b/bfd/elf32-arc.c
@@ -915,11 +915,9 @@ of opposite endian-ness"),
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
     return TRUE;
 
-  /* Check to see if the input BFD actually contains any sections.  If
-     not, its flags may not have been initialised either, but it
-     cannot actually cause any incompatiblity.  Do not short-circuit
-     dynamic objects; their section list may be emptied by
-     elf_link_add_object_symbols.  */
+  /* Check to see if the input BFD actually contains any sections.  Do
+     not short-circuit dynamic objects; their section list may be
+     emptied by elf_link_add_object_symbols.  */
   if (!(ibfd->flags & DYNAMIC))
     {
       bfd_boolean null_input_bfd = TRUE;
@@ -933,7 +931,6 @@ of opposite endian-ness"),
 	    only_data_sections = FALSE;
 
 	  null_input_bfd = FALSE;
-	  break;
 	}
 
       if (null_input_bfd || only_data_sections)
-- 
2.4.3
Loading