Commit bc3e1848 authored by Gustavo Zacarias's avatar Gustavo Zacarias Committed by Peter Korsgaard
Browse files

binutils: add 2.23.2 and remove deprecated 2.20

parent 1ce3dfb8
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -12,10 +12,6 @@ choice
	       depends on BR2_avr32
	       bool "binutils 2.18-avr32-1.0.1"

	config BR2_BINUTILS_VERSION_2_20
		depends on !BR2_avr32 && BR2_DEPRECATED
		bool "binutils 2.20"

	config BR2_BINUTILS_VERSION_2_20_1
		depends on !BR2_avr32
		bool "binutils 2.20.1"
@@ -36,17 +32,21 @@ choice
		depends on !(BR2_avr32 || BR2_UCLIBC_VERSION_0_9_31)
		bool "binutils 2.23.1"

	config BR2_BINUTILS_VERSION_2_23_2
		depends on !(BR2_avr32 || BR2_UCLIBC_VERSION_0_9_31)
		bool "binutils 2.23.2"

endchoice

config BR2_BINUTILS_VERSION
	string
	default "2.18-avr32-1.0.1" if BR2_BINUTILS_VERSION_2_18_AVR32_1_0_1
	default "2.20"		if BR2_BINUTILS_VERSION_2_20
	default "2.20.1"	if BR2_BINUTILS_VERSION_2_20_1
	default "2.21"		if BR2_BINUTILS_VERSION_2_21
	default "2.21.1"	if BR2_BINUTILS_VERSION_2_21_1
	default "2.22"		if BR2_BINUTILS_VERSION_2_22
	default "2.23.1"	if BR2_BINUTILS_VERSION_2_23_1
	default "2.23.2"	if BR2_BINUTILS_VERSION_2_23_2

config BR2_BINUTILS_EXTRA_CONFIG_OPTIONS
	string "Additional binutils options"
+0 −24
Original line number Diff line number Diff line
diff -rdup binutils-2.18.50.0.3.orig/configure binutils-2.18.50.0.3/configure
--- binutils-2.18.50.0.3.orig/configure	2007-11-22 12:41:26.000000000 +0100
+++ binutils-2.18.50.0.3/configure	2007-11-22 12:45:01.000000000 +0100
@@ -2245,7 +2245,7 @@ case "${target}" in
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
     libgloss_dir=arm
     ;;
-  arm*-*-linux-gnueabi)
+  arm*-*-linux-*gnueabi)
     noconfigdirs="$noconfigdirs target-qthreads"
     noconfigdirs="$noconfigdirs target-libobjc"
     case ${with_newlib} in
diff -rdup binutils-2.18.50.0.3.orig/configure.ac binutils-2.18.50.0.3/configure.ac
--- binutils-2.18.50.0.3.orig/configure.ac	2007-11-22 12:41:26.000000000 +0100
+++ binutils-2.18.50.0.3/configure.ac	2007-11-22 12:44:54.000000000 +0100
@@ -522,7 +522,7 @@ case "${target}" in
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
     libgloss_dir=arm
     ;;
-  arm*-*-linux-gnueabi)
+  arm*-*-linux-*gnueabi)
     noconfigdirs="$noconfigdirs target-qthreads"
     noconfigdirs="$noconfigdirs target-libobjc"
     case ${with_newlib} in
+0 −42
Original line number Diff line number Diff line
diff -rdup binutils-2.18.50.0.9.old/configure binutils-2.18.50.0.9/configure
--- binutils-2.18.50.0.9.old/configure	2008-08-23 17:36:13.000000000 +0200
+++ binutils-2.18.50.0.9/configure	2008-10-14 14:25:22.000000000 +0200
@@ -2281,7 +2281,7 @@ case "${target}" in
   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)
@@ -2606,7 +2606,7 @@ case "${target}" in
   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
diff -rdup binutils-2.18.50.0.9.old/configure.ac binutils-2.18.50.0.9/configure.ac
--- binutils-2.18.50.0.9.old/configure.ac	2008-08-23 17:36:13.000000000 +0200
+++ binutils-2.18.50.0.9/configure.ac	2008-10-14 14:25:11.000000000 +0200
@@ -530,7 +530,7 @@ case "${target}" in
   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)
@@ -855,7 +855,7 @@ case "${target}" in
   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
+0 −183
Original line number Diff line number Diff line
From Binutils CVS:

http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf32-arm.c?rev=1.230&content-type=text/x-cvsweb-markup&cvsroot=src

Improves linking time from large projects on ARM.
diff -dupr binutils-2.20.orig/bfd/elf32-arm.c binutils-2.20/bfd/elf32-arm.c
--- binutils-2.20.orig/bfd/elf32-arm.c	2010-04-19 10:08:50.000000000 -0700
+++ binutils-2.20/bfd/elf32-arm.c	2010-04-19 10:12:45.000000000 -0700
@@ -12736,108 +12736,15 @@ elf32_arm_section_from_shdr (bfd *abfd,
   return TRUE;
 }

-/* A structure used to record a list of sections, independently
-   of the next and prev fields in the asection structure.  */
-typedef struct section_list
-{
-  asection * sec;
-  struct section_list * next;
-  struct section_list * prev;
-}
-section_list;
-
-/* Unfortunately we need to keep a list of sections for which
-   an _arm_elf_section_data structure has been allocated.  This
-   is because it is possible for functions like elf32_arm_write_section
-   to be called on a section which has had an elf_data_structure
-   allocated for it (and so the used_by_bfd field is valid) but
-   for which the ARM extended version of this structure - the
-   _arm_elf_section_data structure - has not been allocated.  */
-static section_list * sections_with_arm_elf_section_data = NULL;
-
-static void
-record_section_with_arm_elf_section_data (asection * sec)
-{
-  struct section_list * entry;
-
-  entry = bfd_malloc (sizeof (* entry));
-  if (entry == NULL)
-    return;
-  entry->sec = sec;
-  entry->next = sections_with_arm_elf_section_data;
-  entry->prev = NULL;
-  if (entry->next != NULL)
-    entry->next->prev = entry;
-  sections_with_arm_elf_section_data = entry;
-}
-
-static struct section_list *
-find_arm_elf_section_entry (asection * sec)
-{
-  struct section_list * entry;
-  static struct section_list * last_entry = NULL;
-
-  /* This is a short cut for the typical case where the sections are added
-     to the sections_with_arm_elf_section_data list in forward order and
-     then looked up here in backwards order.  This makes a real difference
-     to the ld-srec/sec64k.exp linker test.  */
-  entry = sections_with_arm_elf_section_data;
-  if (last_entry != NULL)
-    {
-      if (last_entry->sec == sec)
-	entry = last_entry;
-      else if (last_entry->next != NULL
-	       && last_entry->next->sec == sec)
-	entry = last_entry->next;
-    }
-
-  for (; entry; entry = entry->next)
-    if (entry->sec == sec)
-      break;
-
-  if (entry)
-    /* Record the entry prior to this one - it is the entry we are most
-       likely to want to locate next time.  Also this way if we have been
-       called from unrecord_section_with_arm_elf_section_data() we will not
-       be caching a pointer that is about to be freed.  */
-    last_entry = entry->prev;
-
-  return entry;
-}
-
 static _arm_elf_section_data *
 get_arm_elf_section_data (asection * sec)
 {
-  struct section_list * entry;
-
-  entry = find_arm_elf_section_entry (sec);
-
-  if (entry)
-    return elf32_arm_section_data (entry->sec);
+  if (sec && sec->owner && is_arm_elf (sec->owner))
+    return elf32_arm_section_data (sec);
   else
     return NULL;
 }

-static void
-unrecord_section_with_arm_elf_section_data (asection * sec)
-{
-  struct section_list * entry;
-
-  entry = find_arm_elf_section_entry (sec);
-
-  if (entry)
-    {
-      if (entry->prev != NULL)
-	entry->prev->next = entry->next;
-      if (entry->next != NULL)
-	entry->next->prev = entry->prev;
-      if (entry == sections_with_arm_elf_section_data)
-	sections_with_arm_elf_section_data = entry->next;
-      free (entry);
-    }
-}
-
-
 typedef struct
 {
   void *finfo;
@@ -13230,8 +13137,6 @@ elf32_arm_new_section_hook (bfd *abfd, a
       sec->used_by_bfd = sdata;
     }

-  record_section_with_arm_elf_section_data (sec);
-
   return _bfd_elf_new_section_hook (abfd, sec);
 }

@@ -13659,44 +13564,13 @@ elf32_arm_write_section (bfd *output_bfd
     }

   free (map);
-  arm_data->mapcount = 0;
+  arm_data->mapcount = -1;
   arm_data->mapsize = 0;
   arm_data->map = NULL;
-  unrecord_section_with_arm_elf_section_data (sec);

   return FALSE;
 }

-static void
-unrecord_section_via_map_over_sections (bfd * abfd ATTRIBUTE_UNUSED,
-					asection * sec,
-					void * ignore ATTRIBUTE_UNUSED)
-{
-  unrecord_section_with_arm_elf_section_data (sec);
-}
-
-static bfd_boolean
-elf32_arm_close_and_cleanup (bfd * abfd)
-{
-  if (abfd->sections)
-    bfd_map_over_sections (abfd,
-			   unrecord_section_via_map_over_sections,
-			   NULL);
-
-  return _bfd_elf_close_and_cleanup (abfd);
-}
-
-static bfd_boolean
-elf32_arm_bfd_free_cached_info (bfd * abfd)
-{
-  if (abfd->sections)
-    bfd_map_over_sections (abfd,
-			   unrecord_section_via_map_over_sections,
-			   NULL);
-
-  return _bfd_free_cached_info (abfd);
-}
-
 /* Display STT_ARM_TFUNC symbols as functions.  */

 static void
@@ -13882,8 +13756,6 @@ const struct elf_size_info elf32_arm_siz
 #define bfd_elf32_find_inliner_info	        elf32_arm_find_inliner_info
 #define bfd_elf32_new_section_hook		elf32_arm_new_section_hook
 #define bfd_elf32_bfd_is_target_special_symbol	elf32_arm_is_target_special_symbol
-#define bfd_elf32_close_and_cleanup             elf32_arm_close_and_cleanup
-#define bfd_elf32_bfd_free_cached_info          elf32_arm_bfd_free_cached_info
 #define bfd_elf32_bfd_final_link		elf32_arm_final_link

 #define elf_backend_get_symbol_type             elf32_arm_get_symbol_type
+29 −0
Original line number Diff line number Diff line
r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines

Likewise, binutils has no idea about any of these new targets either, so we 
fix that up too.. now we're able to actually build a real toolchain for 
sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more 
inept targets than that one, really. Go look, I promise).

--- a/configure
+++ b/configure
@@ -1495,7 +1495,7 @@
   mips*-*-*)
     noconfigdirs="$noconfigdirs gprof"
     ;;
-  sh-*-* | sh64-*-*)
+  sh*-*-* | sh64-*-*)
     case "${target}" in
       sh*-*-elf)
          ;;
--- a/configure.ac
+++ b/configure.ac
@@ -712,7 +712,7 @@
   mips*-*-*)
     noconfigdirs="$noconfigdirs gprof"
     ;;
-  sh-*-* | sh64-*-*)
+  sh*-*-* | sh64-*-*)
     case "${target}" in
       sh*-*-elf)
          ;;
Loading