mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	binutils: remove version 2.20.1 (only used by avr32)
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 44960
This commit is contained in:
		
							parent
							
								
									d830d34b00
								
							
						
					
					
						commit
						755a90344e
					
				@ -2,17 +2,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
choice
 | 
					choice
 | 
				
			||||||
	prompt "Binutils Version" if TOOLCHAINOPTS
 | 
						prompt "Binutils Version" if TOOLCHAINOPTS
 | 
				
			||||||
	default BINUTILS_VERSION_2_20_1 if avr32
 | 
						default BINUTILS_VERSION_LINARO
 | 
				
			||||||
	default BINUTILS_VERSION_LINARO if !avr32
 | 
					 | 
				
			||||||
	help
 | 
						help
 | 
				
			||||||
	  Select the version of binutils you wish to use.
 | 
						  Select the version of binutils you wish to use.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	config BINUTILS_VERSION_2_20_1
 | 
					 | 
				
			||||||
		depends on avr32
 | 
					 | 
				
			||||||
		bool "binutils 2.20.1"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	config BINUTILS_VERSION_LINARO
 | 
						config BINUTILS_VERSION_LINARO
 | 
				
			||||||
		depends on !avr32 || (avr32 && BROKEN)
 | 
					 | 
				
			||||||
		bool "Linaro binutils 2.24"
 | 
							bool "Linaro binutils 2.24"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
endchoice
 | 
					endchoice
 | 
				
			||||||
@ -27,6 +21,5 @@ config EXTRA_BINUTILS_CONFIG_OPTIONS
 | 
				
			|||||||
config BINUTILS_VERSION
 | 
					config BINUTILS_VERSION
 | 
				
			||||||
	string
 | 
						string
 | 
				
			||||||
	prompt "Binutils Version" if (TOOLCHAINOPTS && NULL)
 | 
						prompt "Binutils Version" if (TOOLCHAINOPTS && NULL)
 | 
				
			||||||
	default "2.20.1"          if BINUTILS_VERSION_2_20_1 || avr32
 | 
					 | 
				
			||||||
	default "linaro"          if BINUTILS_VERSION_LINARO
 | 
						default "linaro"          if BINUTILS_VERSION_LINARO
 | 
				
			||||||
	default "linaro"
 | 
						default "linaro"
 | 
				
			||||||
 | 
				
			|||||||
@ -10,21 +10,12 @@ 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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ifeq ($(findstring linaro, $(CONFIG_BINUTILS_VERSION)),linaro)
 | 
					PKG_SOURCE_URL:=https://releases.linaro.org/14.09/components/toolchain/binutils-linaro/
 | 
				
			||||||
  PKG_SOURCE_URL:=https://releases.linaro.org/14.09/components/toolchain/binutils-linaro/
 | 
					PKG_REV:=2.24.0-2014.09
 | 
				
			||||||
  PKG_REV:=2.24.0-2014.09
 | 
					PKG_SOURCE:=$(PKG_NAME)-linaro-$(PKG_REV).tar.xz
 | 
				
			||||||
  PKG_SOURCE:=$(PKG_NAME)-linaro-$(PKG_REV).tar.xz
 | 
					PKG_MD5SUM:=8f9b2b2e049d59b1b86ce9657802a353
 | 
				
			||||||
  PKG_MD5SUM:=8f9b2b2e049d59b1b86ce9657802a353
 | 
					BINUTILS_DIR:=$(PKG_NAME)-linaro-$(PKG_REV)
 | 
				
			||||||
  BINUTILS_DIR:=$(PKG_NAME)-linaro-$(PKG_REV)
 | 
					HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(BINUTILS_DIR)
 | 
				
			||||||
  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)
 | 
					 | 
				
			||||||
    PKG_MD5SUM:=9cdfb9d6ec0578c166d3beae5e15c4e5
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
HOST_BUILD_PARALLEL:=1
 | 
					HOST_BUILD_PARALLEL:=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,22 +0,0 @@
 | 
				
			|||||||
--- a/configure
 | 
					 | 
				
			||||||
+++ b/configure
 | 
					 | 
				
			||||||
@@ -3086,7 +3086,7 @@ case "${target}" in
 | 
					 | 
				
			||||||
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
 | 
					 | 
				
			||||||
     libgloss_dir=arm
 | 
					 | 
				
			||||||
     ;;
 | 
					 | 
				
			||||||
-  arm*-*-linux-gnueabi)
 | 
					 | 
				
			||||||
+  arm*-*-linux-*gnueabi)
 | 
					 | 
				
			||||||
     noconfigdirs="$noconfigdirs target-qthreads"
 | 
					 | 
				
			||||||
     case ${with_newlib} in
 | 
					 | 
				
			||||||
       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
 | 
					 | 
				
			||||||
--- a/configure.ac
 | 
					 | 
				
			||||||
+++ b/configure.ac
 | 
					 | 
				
			||||||
@@ -573,7 +573,7 @@ case "${target}" in
 | 
					 | 
				
			||||||
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
 | 
					 | 
				
			||||||
     libgloss_dir=arm
 | 
					 | 
				
			||||||
     ;;
 | 
					 | 
				
			||||||
-  arm*-*-linux-gnueabi)
 | 
					 | 
				
			||||||
+  arm*-*-linux-*gnueabi)
 | 
					 | 
				
			||||||
     noconfigdirs="$noconfigdirs target-qthreads"
 | 
					 | 
				
			||||||
     case ${with_newlib} in
 | 
					 | 
				
			||||||
       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
 | 
					 | 
				
			||||||
@ -1,13 +0,0 @@
 | 
				
			|||||||
--- a/bfd/elf32-arm.c
 | 
					 | 
				
			||||||
+++ b/bfd/elf32-arm.c
 | 
					 | 
				
			||||||
@@ -5511,6 +5511,10 @@ bfd_elf32_arm_init_maps (bfd *abfd)
 | 
					 | 
				
			||||||
   if (! is_arm_elf (abfd))
 | 
					 | 
				
			||||||
     return;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+  /* PR 7093: Make sure that we are dealing with an arm elf binary.  */
 | 
					 | 
				
			||||||
+  if (! is_arm_elf (abfd))
 | 
					 | 
				
			||||||
+    return;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
   if ((abfd->flags & DYNAMIC) != 0)
 | 
					 | 
				
			||||||
     return;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
@ -1,209 +0,0 @@
 | 
				
			|||||||
--- a/bfd/elf32-mips.c
 | 
					 | 
				
			||||||
+++ b/bfd/elf32-mips.c
 | 
					 | 
				
			||||||
@@ -1663,6 +1663,15 @@ static const struct ecoff_debug_swap mip
 | 
					 | 
				
			||||||
 #define elf_backend_plt_readonly	1
 | 
					 | 
				
			||||||
 #define elf_backend_plt_sym_val		_bfd_mips_elf_plt_sym_val
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+/* Most MIPS ELF files do not contain a traditional PLT; only VxWorks
 | 
					 | 
				
			||||||
+   and non-PIC dynamic executables do.  These settings only affect
 | 
					 | 
				
			||||||
+   _bfd_elf_create_dynamic_sections, which is only called when we
 | 
					 | 
				
			||||||
+   do want a traditional PLT.  */
 | 
					 | 
				
			||||||
+#undef elf_backend_want_plt_sym
 | 
					 | 
				
			||||||
+#define elf_backend_want_plt_sym		1
 | 
					 | 
				
			||||||
+#undef elf_backend_plt_readonly
 | 
					 | 
				
			||||||
+#define elf_backend_plt_readonly		1
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 #define elf_backend_discard_info	_bfd_mips_elf_discard_info
 | 
					 | 
				
			||||||
 #define elf_backend_ignore_discarded_relocs \
 | 
					 | 
				
			||||||
 					_bfd_mips_elf_ignore_discarded_relocs
 | 
					 | 
				
			||||||
@@ -1687,6 +1696,8 @@ static const struct ecoff_debug_swap mip
 | 
					 | 
				
			||||||
 #define bfd_elf32_bfd_print_private_bfd_data \
 | 
					 | 
				
			||||||
 					_bfd_mips_elf_print_private_bfd_data
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+#define elf_backend_plt_sym_val		_bfd_mips_elf_plt_sym_val
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 /* Support for SGI-ish mips targets.  */
 | 
					 | 
				
			||||||
 #define TARGET_LITTLE_SYM		bfd_elf32_littlemips_vec
 | 
					 | 
				
			||||||
 #define TARGET_LITTLE_NAME		"elf32-littlemips"
 | 
					 | 
				
			||||||
@@ -1790,6 +1801,7 @@ mips_vxworks_final_write_processing (bfd
 | 
					 | 
				
			||||||
 #undef elf_backend_additional_program_headers
 | 
					 | 
				
			||||||
 #undef elf_backend_modify_segment_map
 | 
					 | 
				
			||||||
 #undef elf_backend_symbol_processing
 | 
					 | 
				
			||||||
+#undef elf_backend_plt_sym_val
 | 
					 | 
				
			||||||
 /* NOTE: elf_backend_rela_normal is not defined for MIPS.  */
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 #include "elf32-target.h"
 | 
					 | 
				
			||||||
--- a/bfd/elfxx-mips.c
 | 
					 | 
				
			||||||
+++ b/bfd/elfxx-mips.c
 | 
					 | 
				
			||||||
@@ -694,6 +694,11 @@ static bfd *reldyn_sorting_bfd;
 | 
					 | 
				
			||||||
 /* Nonzero if ABFD is using NewABI conventions.  */
 | 
					 | 
				
			||||||
 #define NEWABI_P(abfd) (ABI_N32_P (abfd) || ABI_64_P (abfd))
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+/* Nonzero if ABFD is a non-PIC object.  */
 | 
					 | 
				
			||||||
+#define NON_PIC_P(abfd) \
 | 
					 | 
				
			||||||
+  (((elf_elfheader (abfd)->e_flags & EF_MIPS_PIC) == 0) \
 | 
					 | 
				
			||||||
+   && ((elf_elfheader (abfd)->e_flags & EF_MIPS_CPIC) == EF_MIPS_CPIC))
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 /* The IRIX compatibility level we are striving for.  */
 | 
					 | 
				
			||||||
 #define IRIX_COMPAT(abfd) \
 | 
					 | 
				
			||||||
   (get_elf_backend_data (abfd)->elf_backend_mips_irix_compat (abfd))
 | 
					 | 
				
			||||||
@@ -706,6 +711,9 @@ static bfd *reldyn_sorting_bfd;
 | 
					 | 
				
			||||||
 #define MIPS_ELF_OPTIONS_SECTION_NAME(abfd) \
 | 
					 | 
				
			||||||
   (NEWABI_P (abfd) ? ".MIPS.options" : ".options")
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+/* The name of the section holding non-PIC to PIC call stubs.  */
 | 
					 | 
				
			||||||
+#define NON_PIC_TO_PIC_STUB_SECTION_NAME ".MIPS.pic_stubs"
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 /* True if NAME is the recognized name of any SHT_MIPS_OPTIONS section.
 | 
					 | 
				
			||||||
    Some IRIX system files do not use MIPS_ELF_OPTIONS_SECTION_NAME.  */
 | 
					 | 
				
			||||||
 #define MIPS_ELF_OPTIONS_SECTION_NAME_P(NAME) \
 | 
					 | 
				
			||||||
@@ -7619,7 +7627,9 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	      /* We need a stub, not a plt entry for the undefined
 | 
					 | 
				
			||||||
 		 function.  But we record it as if it needs plt.  See
 | 
					 | 
				
			||||||
-		 _bfd_elf_adjust_dynamic_symbol.  */
 | 
					 | 
				
			||||||
+		 _bfd_elf_adjust_dynamic_symbol.  Note that these relocations
 | 
					 | 
				
			||||||
+		 are always used for PIC calls, even when using the new
 | 
					 | 
				
			||||||
+		 non-PIC ABI.  */
 | 
					 | 
				
			||||||
 	      h->needs_plt = 1;
 | 
					 | 
				
			||||||
 	      h->type = STT_FUNC;
 | 
					 | 
				
			||||||
 	    }
 | 
					 | 
				
			||||||
@@ -7725,6 +7735,8 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 | 
					 | 
				
			||||||
 	case R_MIPS_32:
 | 
					 | 
				
			||||||
 	case R_MIPS_REL32:
 | 
					 | 
				
			||||||
 	case R_MIPS_64:
 | 
					 | 
				
			||||||
+	  if (h != NULL)
 | 
					 | 
				
			||||||
+	    h->non_got_ref = TRUE;
 | 
					 | 
				
			||||||
 	  /* In VxWorks executables, references to external symbols
 | 
					 | 
				
			||||||
 	     are handled using copy relocs or PLT stubs, so there's
 | 
					 | 
				
			||||||
 	     no need to add a .rela.dyn entry for this relocation.  */
 | 
					 | 
				
			||||||
@@ -7780,11 +7792,21 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 | 
					 | 
				
			||||||
 	case R_MIPS_GPREL16:
 | 
					 | 
				
			||||||
 	case R_MIPS_LITERAL:
 | 
					 | 
				
			||||||
 	case R_MIPS_GPREL32:
 | 
					 | 
				
			||||||
+	  if (h != NULL
 | 
					 | 
				
			||||||
+	      && (r_type == R_MIPS_GPREL16 || r_type == R_MIPS_GPREL32))
 | 
					 | 
				
			||||||
+	    h->non_got_ref = TRUE;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 	  if (SGI_COMPAT (abfd))
 | 
					 | 
				
			||||||
 	    mips_elf_hash_table (info)->compact_rel_size +=
 | 
					 | 
				
			||||||
 	      sizeof (Elf32_External_crinfo);
 | 
					 | 
				
			||||||
 	  break;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+	case R_MIPS_HI16:
 | 
					 | 
				
			||||||
+	case R_MIPS_LO16:
 | 
					 | 
				
			||||||
+	  if (h != NULL && strcmp (h->root.root.string, "_gp_disp") != 0)
 | 
					 | 
				
			||||||
+	    h->non_got_ref = TRUE;
 | 
					 | 
				
			||||||
+	  break;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 	  /* This relocation describes the C++ object vtable hierarchy.
 | 
					 | 
				
			||||||
 	     Reconstruct it for later use during GC.  */
 | 
					 | 
				
			||||||
 	case R_MIPS_GNU_VTINHERIT:
 | 
					 | 
				
			||||||
@@ -7807,20 +7829,20 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
       /* We must not create a stub for a symbol that has relocations
 | 
					 | 
				
			||||||
 	 related to taking the function's address.  This doesn't apply to
 | 
					 | 
				
			||||||
-	 VxWorks, where CALL relocs refer to a .got.plt entry instead of
 | 
					 | 
				
			||||||
-	 a normal .got entry.  */
 | 
					 | 
				
			||||||
+	 VxWorks or the non-PIC ABI, where CALL relocs refer to a
 | 
					 | 
				
			||||||
+	 .got.plt entry instead of a normal .got entry.  */
 | 
					 | 
				
			||||||
       if (!htab->is_vxworks && h != NULL)
 | 
					 | 
				
			||||||
 	switch (r_type)
 | 
					 | 
				
			||||||
 	  {
 | 
					 | 
				
			||||||
-	  default:
 | 
					 | 
				
			||||||
-	    ((struct mips_elf_link_hash_entry *) h)->no_fn_stub = TRUE;
 | 
					 | 
				
			||||||
-	    break;
 | 
					 | 
				
			||||||
 	  case R_MIPS16_CALL16:
 | 
					 | 
				
			||||||
 	  case R_MIPS_CALL16:
 | 
					 | 
				
			||||||
 	  case R_MIPS_CALL_HI16:
 | 
					 | 
				
			||||||
 	  case R_MIPS_CALL_LO16:
 | 
					 | 
				
			||||||
 	  case R_MIPS_JALR:
 | 
					 | 
				
			||||||
 	    break;
 | 
					 | 
				
			||||||
+	  default:
 | 
					 | 
				
			||||||
+	    ((struct mips_elf_link_hash_entry *) h)->no_fn_stub = TRUE;
 | 
					 | 
				
			||||||
+	    break;
 | 
					 | 
				
			||||||
 	  }
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
       /* See if this reloc would need to refer to a MIPS16 hard-float stub,
 | 
					 | 
				
			||||||
@@ -12514,7 +12536,9 @@ _bfd_mips_elf_merge_private_bfd_data (bf
 | 
					 | 
				
			||||||
 	  break;
 | 
					 | 
				
			||||||
 	}
 | 
					 | 
				
			||||||
     }
 | 
					 | 
				
			||||||
-  if (null_input_bfd)
 | 
					 | 
				
			||||||
+  /* Dynamic objects normally have no sections, and do not reach
 | 
					 | 
				
			||||||
+     here - but they might if used as DYNOBJ.  */
 | 
					 | 
				
			||||||
+  if (null_input_bfd || (ibfd->flags & DYNAMIC) != 0)
 | 
					 | 
				
			||||||
     return TRUE;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
   ok = TRUE;
 | 
					 | 
				
			||||||
--- a/bfd/elfxx-mips.h
 | 
					 | 
				
			||||||
+++ b/bfd/elfxx-mips.h
 | 
					 | 
				
			||||||
@@ -63,6 +63,9 @@ extern bfd_boolean _bfd_mips_elf_finish_
 | 
					 | 
				
			||||||
 extern bfd_boolean _bfd_mips_vxworks_finish_dynamic_symbol
 | 
					 | 
				
			||||||
   (bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
 | 
					 | 
				
			||||||
    Elf_Internal_Sym *);
 | 
					 | 
				
			||||||
+extern bfd_boolean _bfd_mips_nonpic_finish_dynamic_symbol
 | 
					 | 
				
			||||||
+  (bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
 | 
					 | 
				
			||||||
+   Elf_Internal_Sym *);
 | 
					 | 
				
			||||||
 extern bfd_boolean _bfd_mips_elf_finish_dynamic_sections
 | 
					 | 
				
			||||||
   (bfd *, struct bfd_link_info *);
 | 
					 | 
				
			||||||
 extern void _bfd_mips_elf_final_write_processing
 | 
					 | 
				
			||||||
@@ -153,6 +156,15 @@ extern const struct bfd_elf_special_sect
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 extern bfd_boolean _bfd_mips_elf_common_definition (Elf_Internal_Sym *);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+extern bfd_vma _bfd_mips_elf_plt_sym_val
 | 
					 | 
				
			||||||
+  (bfd_vma, const asection *, const arelent *);
 | 
					 | 
				
			||||||
+extern void _bfd_mips_elf_begin_write_processing
 | 
					 | 
				
			||||||
+  (bfd *abfd, struct bfd_link_info *link_info);
 | 
					 | 
				
			||||||
+extern bfd_boolean bfd_mips_elf_maybe_create_non_pic_to_pic_stubs_section
 | 
					 | 
				
			||||||
+  (struct bfd_link_info *);
 | 
					 | 
				
			||||||
+extern void _bfd_mips_post_process_headers
 | 
					 | 
				
			||||||
+  (bfd *abfd, struct bfd_link_info *link_info);
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 #define elf_backend_common_definition   _bfd_mips_elf_common_definition
 | 
					 | 
				
			||||||
 #define elf_backend_name_local_section_symbols \
 | 
					 | 
				
			||||||
   _bfd_mips_elf_name_local_section_symbols
 | 
					 | 
				
			||||||
--- a/gas/config/tc-mips.c
 | 
					 | 
				
			||||||
+++ b/gas/config/tc-mips.c
 | 
					 | 
				
			||||||
@@ -1891,6 +1891,12 @@ md_begin (void)
 | 
					 | 
				
			||||||
 	as_bad (_("-G may not be used in position-independent code"));
 | 
					 | 
				
			||||||
       g_switch_value = 0;
 | 
					 | 
				
			||||||
     }
 | 
					 | 
				
			||||||
+  else if (mips_abicalls)
 | 
					 | 
				
			||||||
+    {
 | 
					 | 
				
			||||||
+      if (g_switch_seen && g_switch_value != 0)
 | 
					 | 
				
			||||||
+	as_bad (_("-G may not be used with abicalls"));
 | 
					 | 
				
			||||||
+      g_switch_value = 0;
 | 
					 | 
				
			||||||
+    }
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
   if (! bfd_set_arch_mach (stdoutput, bfd_arch_mips, file_mips_arch))
 | 
					 | 
				
			||||||
     as_warn (_("Could not set architecture and machine"));
 | 
					 | 
				
			||||||
@@ -11258,6 +11264,7 @@ enum options
 | 
					 | 
				
			||||||
     OPTION_PDR,
 | 
					 | 
				
			||||||
     OPTION_NO_PDR,
 | 
					 | 
				
			||||||
     OPTION_MVXWORKS_PIC,
 | 
					 | 
				
			||||||
+    OPTION_NON_PIC_ABICALLS,
 | 
					 | 
				
			||||||
 #endif /* OBJ_ELF */
 | 
					 | 
				
			||||||
     OPTION_END_OF_ENUM    
 | 
					 | 
				
			||||||
   };
 | 
					 | 
				
			||||||
@@ -11359,6 +11366,7 @@ struct option md_longopts[] =
 | 
					 | 
				
			||||||
   {"mpdr", no_argument, NULL, OPTION_PDR},
 | 
					 | 
				
			||||||
   {"mno-pdr", no_argument, NULL, OPTION_NO_PDR},
 | 
					 | 
				
			||||||
   {"mvxworks-pic", no_argument, NULL, OPTION_MVXWORKS_PIC},
 | 
					 | 
				
			||||||
+  {"mnon-pic-abicalls", no_argument, NULL, OPTION_NON_PIC_ABICALLS},
 | 
					 | 
				
			||||||
 #endif /* OBJ_ELF */
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
   {NULL, no_argument, NULL, 0}
 | 
					 | 
				
			||||||
@@ -11783,6 +11791,11 @@ md_parse_option (int c, char *arg)
 | 
					 | 
				
			||||||
     case OPTION_MVXWORKS_PIC:
 | 
					 | 
				
			||||||
       mips_pic = VXWORKS_PIC;
 | 
					 | 
				
			||||||
       break;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+    case OPTION_NON_PIC_ABICALLS:
 | 
					 | 
				
			||||||
+      mips_pic = NO_PIC;
 | 
					 | 
				
			||||||
+      mips_abicalls = TRUE;
 | 
					 | 
				
			||||||
+      break;
 | 
					 | 
				
			||||||
 #endif /* OBJ_ELF */
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
     default:
 | 
					 | 
				
			||||||
@ -1,22 +0,0 @@
 | 
				
			|||||||
--- a/ld/Makefile.am
 | 
					 | 
				
			||||||
+++ b/ld/Makefile.am
 | 
					 | 
				
			||||||
@@ -24,7 +24,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)
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 EMUL = @EMUL@
 | 
					 | 
				
			||||||
 EMULATION_OFILES = @EMULATION_OFILES@
 | 
					 | 
				
			||||||
--- a/ld/Makefile.in
 | 
					 | 
				
			||||||
+++ b/ld/Makefile.in
 | 
					 | 
				
			||||||
@@ -333,7 +333,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
 | 
					 | 
				
			||||||
@ -1,20 +0,0 @@
 | 
				
			|||||||
--- a/ld/emultempl/elf32.em
 | 
					 | 
				
			||||||
+++ b/ld/emultempl/elf32.em
 | 
					 | 
				
			||||||
@@ -1233,6 +1233,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;
 | 
					 | 
				
			||||||
@@ -1418,6 +1420,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;
 | 
					 | 
				
			||||||
   if (! (bfd_elf_size_dynamic_sections
 | 
					 | 
				
			||||||
 	 (link_info.output_bfd, command_line.soname, rpath,
 | 
					 | 
				
			||||||
 	  command_line.filter_shlib,
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
--- a/bfd/elfxx-mips.c
 | 
					 | 
				
			||||||
+++ b/bfd/elfxx-mips.c
 | 
					 | 
				
			||||||
@@ -5696,9 +5696,9 @@ mips_elf_create_dynamic_relocation (bfd
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
   /* We must now calculate the dynamic symbol table index to use
 | 
					 | 
				
			||||||
      in the relocation.  */
 | 
					 | 
				
			||||||
-  if (h != NULL
 | 
					 | 
				
			||||||
-      && (!h->root.def_regular
 | 
					 | 
				
			||||||
-	  || (info->shared && !info->symbolic && !h->root.forced_local)))
 | 
					 | 
				
			||||||
+  if (!(h == NULL
 | 
					 | 
				
			||||||
+	|| (h->root.def_regular
 | 
					 | 
				
			||||||
+	    && (info->executable || info->symbolic || h->root.forced_local))))
 | 
					 | 
				
			||||||
     {
 | 
					 | 
				
			||||||
       indx = h->root.dynindx;
 | 
					 | 
				
			||||||
       if (SGI_COMPAT (output_bfd))
 | 
					 | 
				
			||||||
@ -1,84 +0,0 @@
 | 
				
			|||||||
--- a/config/override.m4
 | 
					 | 
				
			||||||
+++ b/config/override.m4
 | 
					 | 
				
			||||||
@@ -32,31 +32,6 @@ dnl Redefine AC_CONFIG_SUBDIRS so acloca
 | 
					 | 
				
			||||||
 dnl when needed.
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 ifdef([m4_PACKAGE_VERSION],
 | 
					 | 
				
			||||||
-[dnl AC_DEFUN a commonly used macro so this file is picked up.
 | 
					 | 
				
			||||||
-m4_copy([AC_PREREQ], [_AC_PREREQ])
 | 
					 | 
				
			||||||
-AC_DEFUN([AC_PREREQ], [frob])
 | 
					 | 
				
			||||||
-m4_copy_force([_AC_PREREQ], [AC_PREREQ])
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-dnl Ensure exactly this Autoconf version is used
 | 
					 | 
				
			||||||
-m4_ifndef([_GCC_AUTOCONF_VERSION],
 | 
					 | 
				
			||||||
-  [m4_define([_GCC_AUTOCONF_VERSION], [2.64])])
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-dnl Test for the exact version when AC_INIT is expanded.
 | 
					 | 
				
			||||||
-dnl This allows to update the tree in steps (for testing)
 | 
					 | 
				
			||||||
-dnl by putting
 | 
					 | 
				
			||||||
-dnl   m4_define([_GCC_AUTOCONF_VERSION], [X.Y])
 | 
					 | 
				
			||||||
-dnl in configure.ac before AC_INIT,
 | 
					 | 
				
			||||||
-dnl without rewriting this file.
 | 
					 | 
				
			||||||
-dnl Or for updating the whole tree at once with the definition above.
 | 
					 | 
				
			||||||
-AC_DEFUN([_GCC_AUTOCONF_VERSION_CHECK],
 | 
					 | 
				
			||||||
-[m4_if(m4_defn([_GCC_AUTOCONF_VERSION]),
 | 
					 | 
				
			||||||
-  m4_defn([m4_PACKAGE_VERSION]), [],
 | 
					 | 
				
			||||||
-  [m4_fatal([Please use exactly Autoconf ]_GCC_AUTOCONF_VERSION[ instead of ]m4_defn([m4_PACKAGE_VERSION])[.])])
 | 
					 | 
				
			||||||
-])
 | 
					 | 
				
			||||||
-m4_define([AC_INIT], m4_defn([AC_INIT])[
 | 
					 | 
				
			||||||
-_GCC_AUTOCONF_VERSION_CHECK
 | 
					 | 
				
			||||||
-])
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 dnl Turn AC_DISABLE_OPTION_CHECKING into a no-op if not defined.
 | 
					 | 
				
			||||||
--- a/gas/aclocal.m4
 | 
					 | 
				
			||||||
+++ b/gas/aclocal.m4
 | 
					 | 
				
			||||||
@@ -998,7 +998,6 @@ m4_include([../config/nls.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/override.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/po.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/progtest.m4])
 | 
					 | 
				
			||||||
-m4_include([../libtool.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltoptions.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltsugar.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltversion.m4])
 | 
					 | 
				
			||||||
--- a/bfd/aclocal.m4
 | 
					 | 
				
			||||||
+++ b/bfd/aclocal.m4
 | 
					 | 
				
			||||||
@@ -978,7 +978,6 @@ m4_include([../config/plugins.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/po.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/progtest.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/stdint.m4])
 | 
					 | 
				
			||||||
-m4_include([../libtool.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltoptions.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltsugar.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltversion.m4])
 | 
					 | 
				
			||||||
--- a/binutils/aclocal.m4
 | 
					 | 
				
			||||||
+++ b/binutils/aclocal.m4
 | 
					 | 
				
			||||||
@@ -1003,7 +1003,6 @@ m4_include([../config/override.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/plugins.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/po.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/progtest.m4])
 | 
					 | 
				
			||||||
-m4_include([../libtool.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltoptions.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltsugar.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltversion.m4])
 | 
					 | 
				
			||||||
--- a/ld/aclocal.m4
 | 
					 | 
				
			||||||
+++ b/ld/aclocal.m4
 | 
					 | 
				
			||||||
@@ -999,7 +999,6 @@ m4_include([../config/nls.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/override.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/po.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/progtest.m4])
 | 
					 | 
				
			||||||
-m4_include([../libtool.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltoptions.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltsugar.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltversion.m4])
 | 
					 | 
				
			||||||
--- a/opcodes/aclocal.m4
 | 
					 | 
				
			||||||
+++ b/opcodes/aclocal.m4
 | 
					 | 
				
			||||||
@@ -978,7 +978,6 @@ m4_include([../config/nls.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/override.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/po.m4])
 | 
					 | 
				
			||||||
 m4_include([../config/progtest.m4])
 | 
					 | 
				
			||||||
-m4_include([../libtool.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltoptions.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltsugar.m4])
 | 
					 | 
				
			||||||
 m4_include([../ltversion.m4])
 | 
					 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user