This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC PATCH 10/11] BFD: Pass link information to `bfd_merge_private_bfd_data'


	bfd/
	* aoutf1.h (sunos_merge_private_bfd_data): Add `struct 
	bfd_link_info' argument.
	* elf32-m68hc1x.h (_bfd_m68hc11_elf_merge_private_bfd_data): 
	Likewise.
	* elf32-xgate.h (_bfd_xgate_elf_merge_private_bfd_data): 
	Likewise.
	* elfxx-mips.h (_bfd_mips_elf_merge_private_bfd_data): Likewise.
	* elfxx-target.h (bfd_elfNN_bfd_merge_private_bfd_data): 
	Likewise.
	* libbfd-in.h (_bfd_generic_bfd_merge_private_bfd_data): 
	Likewise.
	* bfd.c (bfd_merge_private_bfd_data): Likewise.
	* coff-arm.c (coff_arm_merge_private_bfd_data): Likewise.
	* elf-m10300.c (_bfd_mn10300_elf_merge_private_bfd_data): 
	Likewise.
	* elf32-arm.c (elf32_arm_merge_private_bfd_data): Likewise.
	* elf32-bfin.c (elf32_bfin_merge_private_bfd_data): Likewise.
	* elf32-cr16.c (_bfd_cr16_elf_merge_private_bfd_data): Likewise.
	* elf32-cris.c (cris_elf_merge_private_bfd_data): Likewise.
	* elf32-frv.c (frv_elf_merge_private_bfd_data): Likewise.
	* elf32-h8300.c (elf32_h8_merge_private_bfd_data): Likewise.
	* elf32-i370.c (i370_elf_merge_private_bfd_data): Likewise.
	* elf32-iq2000.c (iq2000_elf_merge_private_bfd_data): Likewise.
	* elf32-m32c.c (m32c_elf_merge_private_bfd_data): Likewise.
	* elf32-m32r.c (m32r_elf_merge_private_bfd_data): Likewise.
	* elf32-m68hc1x.c (_bfd_m68hc11_elf_merge_private_bfd_data): 
	Likewise.
	* elf32-m68k.c (elf32_m68k_merge_private_bfd_data): Likewise.
	* elf32-mcore.c (mcore_elf_merge_private_bfd_data): Likewise.
	* elf32-mep.c (mep_elf_merge_private_bfd_data): Likewise.
	* elf32-microblaze.c (microblaze_elf_merge_private_bfd_data): 
	Likewise.
	* elf32-msp430.c (elf32_msp430_merge_private_bfd_data): 
	Likewise.
	* elf32-mt.c (mt_elf_merge_private_bfd_data): Likewise.
	* elf32-nds32.c (nds32_elf_merge_private_bfd_data): Likewise.
	* elf32-nios2.c (nios2_elf32_merge_private_bfd_data): Likewise.
	* elf32-or1k.c (elf32_or1k_merge_private_bfd_data): Likewise.
	* elf32-ppc.c (ppc_elf_merge_private_bfd_data): Likewise.
	* elf32-rl78.c (rl78_elf_merge_private_bfd_data): Likewise.
	* elf32-rx.c (rx_elf_merge_private_bfd_data): Likewise.
	* elf32-s390.c (elf32_s390_merge_private_bfd_data): Likewise.
	* elf32-score.c (elf32_score_merge_private_bfd_data): Likewise.
	* elf32-sh.c (sh_elf_merge_private_data): Likewise.
	* elf32-sh64.c (sh64_elf_merge_private_data): Likewise.
	* elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Likewise.
	* elf32-tic6x.c (elf32_tic6x_merge_private_bfd_data): Likewise.
	* elf32-v850.c (v850_elf_merge_private_bfd_data): Likewise.
	* elf32-vax.c (elf32_vax_merge_private_bfd_data): Likewise.
	* elf32-visium.c (visium_elf_merge_private_bfd_data): Likewise.
	* elf32-xgate.c (_bfd_xgate_elf_merge_private_bfd_data): 
	Likewise.
	* elf32-xtensa.c (elf_xtensa_merge_private_bfd_data): Likewise.
	* elf64-ia64-vms.c (elf64_ia64_merge_private_bfd_data): 
	Likewise.
	* elf64-ppc.c (ppc64_elf_merge_private_bfd_data): Likewise.
	* elf64-s390.c (elf64_s390_merge_private_bfd_data): Likewise.
	* elf64-sh64.c (sh_elf64_merge_private_data): Likewise.
	* elf64-sparc.c (elf64_sparc_merge_private_bfd_data): Likewise.
	* elfnn-aarch64.c (elfNN_aarch64_merge_private_bfd_data): 
	Likewise.
	* elfnn-ia64.c (elfNN_ia64_merge_private_bfd_data): Likewise.
	* elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Likewise.
	* targets.c (_bfd_merge_private_bfd_data): Likewise.
	* libbfd.c (_bfd_generic_verify_endian_match): Update comment 
	according to `bfd_merge_private_bfd_data's API change.
	* coff-sh.c (sh_coff_bfd_merge_private_bfd_data): New function.
	(coff_bfd_merge_private_bfd_data): Redefine.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.

	ld/
	* ldlang.c (lang_check): Update call to 
	`bfd_merge_private_bfd_data'.
---
Needed by the next change, split off for functional separation.

binutils-bfd-merge-private-link-info.diff
Index: binutils/bfd/aoutf1.h
===================================================================
--- binutils.orig/bfd/aoutf1.h	2015-11-20 08:48:21.291800804 +0000
+++ binutils/bfd/aoutf1.h	2015-11-20 08:48:24.125727191 +0000
@@ -75,7 +75,8 @@
 #define MY_bfd_merge_private_bfd_data sunos_merge_private_bfd_data
 
 static bfd_boolean
-sunos_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+sunos_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+			      struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   if (bfd_get_flavour (ibfd) != bfd_target_aout_flavour
       || bfd_get_flavour (obfd) != bfd_target_aout_flavour)
Index: binutils/bfd/bfd-in2.h
===================================================================
--- binutils.orig/bfd/bfd-in2.h	2015-11-20 08:48:21.296907215 +0000
+++ binutils/bfd/bfd-in2.h	2015-11-20 08:48:24.132781116 +0000
@@ -6899,11 +6899,12 @@ bfd_boolean bfd_copy_private_bfd_data (b
 #define bfd_copy_private_bfd_data(ibfd, obfd) \
      BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
                (ibfd, obfd))
-bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
+bfd_boolean bfd_merge_private_bfd_data
+   (bfd *ibfd, bfd *obfd, struct bfd_link_info *info);
 
-#define bfd_merge_private_bfd_data(ibfd, obfd) \
+#define bfd_merge_private_bfd_data(ibfd, obfd, info) \
      BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
-               (ibfd, obfd))
+               (ibfd, obfd, info))
 bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
 
 #define bfd_set_private_flags(abfd, flags) \
@@ -7220,7 +7221,8 @@ typedef struct bfd_target
   bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
   /* Called to merge BFD general private data from one object file
      to a common output file when linking.  */
-  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
+  bfd_boolean (*_bfd_merge_private_bfd_data)
+    (bfd *, bfd *, struct bfd_link_info *);
   /* Called to initialize BFD private section data from one object file
      to another.  */
 #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
Index: binutils/bfd/bfd.c
===================================================================
--- binutils.orig/bfd/bfd.c	2015-11-20 08:48:21.302082350 +0000
+++ binutils/bfd/bfd.c	2015-11-20 08:48:24.137881590 +0000
@@ -1430,19 +1430,21 @@ FUNCTION
 	bfd_merge_private_bfd_data
 
 SYNOPSIS
-	bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
+	bfd_boolean bfd_merge_private_bfd_data
+	  (bfd *ibfd, bfd *obfd, struct bfd_link_info *info);
 
 DESCRIPTION
 	Merge private BFD information from the BFD @var{ibfd} to the
-	the output file BFD @var{obfd} when linking.  Return <<TRUE>>
-	on success, <<FALSE>> on error.  Possible error returns are:
+	the output file BFD @var{obfd} when linking; @var{info} holds
+	linker information.  Return <<TRUE>> on success, <<FALSE>> on
+	error.  Possible error returns are:
 
 	o <<bfd_error_no_memory>> -
 	Not enough memory exists to create private data for @var{obfd}.
 
-.#define bfd_merge_private_bfd_data(ibfd, obfd) \
+.#define bfd_merge_private_bfd_data(ibfd, obfd, info) \
 .     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
-.		(ibfd, obfd))
+.		(ibfd, obfd, info))
 
 */
 
Index: binutils/bfd/coff-arm.c
===================================================================
--- binutils.orig/bfd/coff-arm.c	2015-11-20 08:48:21.306181422 +0000
+++ binutils/bfd/coff-arm.c	2015-11-20 08:48:24.143032930 +0000
@@ -2172,7 +2172,8 @@ coff_arm_adjust_symndx (bfd *obfd ATTRIB
    targets, eg different CPUs or different APCS's.     */
 
 static bfd_boolean
-coff_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
+coff_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd,
+				 struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   BFD_ASSERT (ibfd != NULL && obfd != NULL);
 
Index: binutils/bfd/coff-sh.c
===================================================================
--- binutils.orig/bfd/coff-sh.c	2015-11-20 08:48:21.311327413 +0000
+++ binutils/bfd/coff-sh.c	2015-11-20 08:48:24.148207962 +0000
@@ -639,7 +639,18 @@ sh_reloc (bfd *      abfd,
   return bfd_reloc_ok;
 }
 
-#define coff_bfd_merge_private_bfd_data _bfd_generic_verify_endian_match
+/* Merge backend specific data from an object file to the output
+   object file when linking.  */
+
+static bfd_boolean
+sh_coff_bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				    struct bfd_link_info *info
+				      ATTRIBUTE_UNUSED)
+{
+  return _bfd_generic_verify_endian_match (ibfd, obfd);
+}
+
+#define coff_bfd_merge_private_bfd_data sh_coff_bfd_merge_private_bfd_data
 
 /* We can do relaxing.  */
 #define coff_bfd_relax_section sh_relax_section
Index: binutils/bfd/elf-m10300.c
===================================================================
--- binutils.orig/bfd/elf-m10300.c	2015-11-20 08:48:21.315472983 +0000
+++ binutils/bfd/elf-m10300.c	2015-11-20 08:48:24.155273005 +0000
@@ -4728,7 +4728,9 @@ _bfd_mn10300_elf_object_p (bfd *abfd)
    object file when linking.  */
 
 static bfd_boolean
-_bfd_mn10300_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+_bfd_mn10300_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+					 struct bfd_link_info *info
+					   ATTRIBUTE_UNUSED)
 {
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
Index: binutils/bfd/elf32-arm.c
===================================================================
--- binutils.orig/bfd/elf32-arm.c	2015-11-20 08:48:21.320526632 +0000
+++ binutils/bfd/elf32-arm.c	2015-11-20 08:48:24.172617102 +0000
@@ -12869,7 +12869,8 @@ elf32_arm_versions_compatible (unsigned 
    object file when linking.  */
 
 static bfd_boolean
-elf32_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd);
+elf32_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd,
+				  struct bfd_link_info *info);
 
 /* Display the flags field.  */
 
@@ -17846,7 +17847,8 @@ elf32_arm_vxworks_final_write_processing
    object file when linking.  */
 
 static bfd_boolean
-elf32_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
+elf32_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd,
+				  struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword out_flags;
   flagword in_flags;
Index: binutils/bfd/elf32-bfin.c
===================================================================
--- binutils.orig/bfd/elf32-bfin.c	2015-11-20 08:48:21.330647267 +0000
+++ binutils/bfd/elf32-bfin.c	2015-11-20 08:48:24.178688641 +0000
@@ -4966,7 +4966,8 @@ elf32_bfin_print_private_bfd_data (bfd *
    object file when linking.  */
 
 static bfd_boolean
-elf32_bfin_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf32_bfin_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword old_flags, new_flags;
   bfd_boolean error = FALSE;
Index: binutils/bfd/elf32-cr16.c
===================================================================
--- binutils.orig/bfd/elf32-cr16.c	2015-11-20 08:48:21.335848392 +0000
+++ binutils/bfd/elf32-cr16.c	2015-11-20 08:48:24.183787091 +0000
@@ -1731,7 +1731,9 @@ _bfd_cr16_elf_object_p (bfd *abfd)
    object file when linking.  */
 
 static bfd_boolean
-_bfd_cr16_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+_bfd_cr16_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				      struct bfd_link_info *info
+					ATTRIBUTE_UNUSED)
 {
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
Index: binutils/bfd/elf32-cris.c
===================================================================
--- binutils.orig/bfd/elf32-cris.c	2015-11-20 08:48:21.341072476 +0000
+++ binutils/bfd/elf32-cris.c	2015-11-20 08:48:24.189990091 +0000
@@ -4157,7 +4157,8 @@ cris_elf_print_private_bfd_data (bfd *ab
 /* Don't mix files with and without a leading underscore.  */
 
 static bfd_boolean
-cris_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+cris_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				 struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   int imach, omach;
 
Index: binutils/bfd/elf32-frv.c
===================================================================
--- binutils.orig/bfd/elf32-frv.c	2015-11-20 08:48:21.345242340 +0000
+++ binutils/bfd/elf32-frv.c	2015-11-20 08:48:24.196141305 +0000
@@ -6351,7 +6351,8 @@ frv_elf_arch_extension_p (flagword base,
    object file when linking.  */
 
 static bfd_boolean
-frv_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+frv_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword old_flags, old_partial;
   flagword new_flags, new_partial;
Index: binutils/bfd/elf32-h8300.c
===================================================================
--- binutils.orig/bfd/elf32-h8300.c	2015-11-20 08:48:21.350296939 +0000
+++ binutils/bfd/elf32-h8300.c	2015-11-20 08:48:24.201221109 +0000
@@ -33,7 +33,8 @@ static void elf32_h8_info_to_howto_rel
 static unsigned long elf32_h8_mach (flagword);
 static void elf32_h8_final_write_processing (bfd *, bfd_boolean);
 static bfd_boolean elf32_h8_object_p (bfd *);
-static bfd_boolean elf32_h8_merge_private_bfd_data (bfd *, bfd *);
+static bfd_boolean elf32_h8_merge_private_bfd_data
+  (bfd *, bfd *, struct bfd_link_info *);
 static bfd_boolean elf32_h8_relax_section
   (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
 static bfd_boolean elf32_h8_relax_delete_bytes
@@ -646,7 +647,8 @@ elf32_h8_object_p (bfd *abfd)
    time is the architecture/machine information.  */
 
 static bfd_boolean
-elf32_h8_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf32_h8_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				 struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
Index: binutils/bfd/elf32-i370.c
===================================================================
--- binutils.orig/bfd/elf32-i370.c	2015-11-20 08:48:21.354381638 +0000
+++ binutils/bfd/elf32-i370.c	2015-11-20 08:48:24.205296520 +0000
@@ -330,7 +330,8 @@ i370_elf_set_private_flags (bfd *abfd, f
    object file when linking.  */
 
 static bfd_boolean
-i370_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+i370_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				 struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword old_flags;
   flagword new_flags;
Index: binutils/bfd/elf32-iq2000.c
===================================================================
--- binutils.orig/bfd/elf32-iq2000.c	2015-11-20 08:48:21.359550140 +0000
+++ binutils/bfd/elf32-iq2000.c	2015-11-20 08:48:24.209332098 +0000
@@ -771,7 +771,8 @@ iq2000_elf_set_private_flags (bfd *abfd,
    file to the output object file when linking.  */
 
 static bfd_boolean
-iq2000_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+iq2000_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword old_flags, old_partial;
   flagword new_flags, new_partial;
Index: binutils/bfd/elf32-m32c.c
===================================================================
--- binutils.orig/bfd/elf32-m32c.c	2015-11-20 08:48:21.364690084 +0000
+++ binutils/bfd/elf32-m32c.c	2015-11-20 08:48:24.213517964 +0000
@@ -824,7 +824,8 @@ m32c_elf_set_private_flags (bfd *abfd, f
    object file when linking.  */
 
 static bfd_boolean
-m32c_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+m32c_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				 struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword old_flags, old_partial;
   flagword new_flags, new_partial;
Index: binutils/bfd/elf32-m32r.c
===================================================================
--- binutils.orig/bfd/elf32-m32r.c	2015-11-20 08:48:21.370873314 +0000
+++ binutils/bfd/elf32-m32r.c	2015-11-20 08:48:24.218715927 +0000
@@ -3494,7 +3494,8 @@ m32r_elf_set_private_flags (bfd *abfd, f
    object file when linking.  */
 
 static bfd_boolean
-m32r_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+m32r_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				 struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword out_flags;
   flagword in_flags;
Index: binutils/bfd/elf32-m68hc1x.c
===================================================================
--- binutils.orig/bfd/elf32-m68hc1x.c	2015-11-20 08:48:21.376211118 +0000
+++ binutils/bfd/elf32-m68hc1x.c	2015-11-20 08:48:24.223851363 +0000
@@ -1331,7 +1331,9 @@ _bfd_m68hc11_elf_set_private_flags (bfd 
    object file when linking.  */
 
 bfd_boolean
-_bfd_m68hc11_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+_bfd_m68hc11_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+					 struct bfd_link_info *info
+					   ATTRIBUTE_UNUSED)
 {
   flagword old_flags;
   flagword new_flags;
Index: binutils/bfd/elf32-m68hc1x.h
===================================================================
--- binutils.orig/bfd/elf32-m68hc1x.h	2015-11-20 08:48:21.381393547 +0000
+++ binutils/bfd/elf32-m68hc1x.h	2015-11-20 08:48:24.227961511 +0000
@@ -33,7 +33,8 @@
 #define BFD_M68HC11_BANK_VIRTUAL_NAME "__bank_virtual"
 
 /* Set and control ELF flags in ELF header.  */
-extern bfd_boolean _bfd_m68hc11_elf_merge_private_bfd_data (bfd*,bfd*);
+extern bfd_boolean _bfd_m68hc11_elf_merge_private_bfd_data
+  (bfd *, bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_m68hc11_elf_set_private_flags (bfd*,flagword);
 extern bfd_boolean _bfd_m68hc11_elf_print_private_bfd_data (bfd*, void*);
 
Index: binutils/bfd/elf32-m68k.c
===================================================================
--- binutils.orig/bfd/elf32-m68k.c	2015-11-20 08:48:21.387448688 +0000
+++ binutils/bfd/elf32-m68k.c	2015-11-20 08:48:24.233117808 +0000
@@ -1117,7 +1117,8 @@ elf32_m68k_set_private_flags (bfd *abfd,
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 static bfd_boolean
-elf32_m68k_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf32_m68k_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword out_flags;
   flagword in_flags;
Index: binutils/bfd/elf32-mcore.c
===================================================================
--- binutils.orig/bfd/elf32-mcore.c	2015-11-20 08:48:21.392681182 +0000
+++ binutils/bfd/elf32-mcore.c	2015-11-20 08:48:24.237171664 +0000
@@ -49,7 +49,8 @@ mcore_elf_set_private_flags (bfd * abfd,
    object file when linking.  */
 
 static bfd_boolean
-mcore_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
+mcore_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				  struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword old_flags;
   flagword new_flags;
Index: binutils/bfd/elf32-mep.c
===================================================================
--- binutils.orig/bfd/elf32-mep.c	2015-11-20 08:48:21.396766992 +0000
+++ binutils/bfd/elf32-mep.c	2015-11-20 08:48:24.241303895 +0000
@@ -571,7 +571,8 @@ mep_elf_set_private_flags (bfd *    abfd
    object file when linking.  */
 
 static bfd_boolean
-mep_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
+mep_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   static bfd *last_ibfd = 0;
   flagword old_flags, new_flags;
Index: binutils/bfd/elf32-microblaze.c
===================================================================
--- binutils.orig/bfd/elf32-microblaze.c	2015-11-20 08:48:21.400978525 +0000
+++ binutils/bfd/elf32-microblaze.c	2015-11-20 08:48:24.247471977 +0000
@@ -1600,7 +1600,9 @@ microblaze_elf_relocate_section (bfd *ou
 
    Note: We only use this hook to catch endian mismatches.  */
 static bfd_boolean
-microblaze_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
+microblaze_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				       struct bfd_link_info *info
+					 ATTRIBUTE_UNUSED)
 {
   /* Check if we have the same endianess.  */
   if (! _bfd_generic_verify_endian_match (ibfd, obfd))
Index: binutils/bfd/elf32-msp430.c
===================================================================
--- binutils.orig/bfd/elf32-msp430.c	2015-11-20 08:48:21.409110166 +0000
+++ binutils/bfd/elf32-msp430.c	2015-11-20 08:48:24.251510885 +0000
@@ -2513,7 +2513,9 @@ elf32_msp430_merge_mspabi_attributes (bf
    object file when linking.  */
 
 static bfd_boolean
-elf32_msp430_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
+elf32_msp430_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				     struct bfd_link_info *info
+				       ATTRIBUTE_UNUSED)
 {
   /* Make sure that the machine number reflects the most
      advanced version of the MSP architecture required.  */
Index: binutils/bfd/elf32-mt.c
===================================================================
--- binutils.orig/bfd/elf32-mt.c	2015-11-20 08:48:21.413271450 +0000
+++ binutils/bfd/elf32-mt.c	2015-11-20 08:48:24.255600551 +0000
@@ -505,7 +505,8 @@ mt_elf_set_private_flags (bfd *    abfd,
    object file when linking.  */
 
 static bfd_boolean
-mt_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
+mt_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+			       struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword     old_flags, new_flags;
   bfd_boolean  ok = TRUE;
Index: binutils/bfd/elf32-nds32.c
===================================================================
--- binutils.orig/bfd/elf32-nds32.c	2015-11-20 08:48:21.419386284 +0000
+++ binutils/bfd/elf32-nds32.c	2015-11-20 08:48:24.266801903 +0000
@@ -77,7 +77,8 @@ static bfd_boolean nds32_elf_relocate_se
 static bfd_boolean nds32_elf_object_p (bfd *);
 static void nds32_elf_final_write_processing (bfd *, bfd_boolean);
 static bfd_boolean nds32_elf_set_private_flags (bfd *, flagword);
-static bfd_boolean nds32_elf_merge_private_bfd_data (bfd *, bfd *);
+static bfd_boolean nds32_elf_merge_private_bfd_data
+  (bfd *, bfd *, struct bfd_link_info *);
 static bfd_boolean nds32_elf_print_private_bfd_data (bfd *, void *);
 static bfd_boolean nds32_elf_gc_sweep_hook
   (bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *);
@@ -5991,7 +5992,8 @@ nds32_check_vec_size (bfd *ibfd)
    object file when linking.  */
 
 static bfd_boolean
-nds32_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+nds32_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				  struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword out_flags;
   flagword in_flags;
Index: binutils/bfd/elf32-nios2.c
===================================================================
--- binutils.orig/bfd/elf32-nios2.c	2015-11-20 08:48:21.000000000 +0000
+++ binutils/bfd/elf32-nios2.c	2015-11-20 08:54:26.537076930 +0000
@@ -2916,7 +2916,9 @@ nios2_elf32_build_stubs (struct bfd_link
    object file when linking.  */
 
 static bfd_boolean
-nios2_elf32_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+nios2_elf32_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				    struct bfd_link_info *info
+				      ATTRIBUTE_UNUSED)
 {
   flagword old_flags;
   flagword new_flags;
Index: binutils/bfd/elf32-or1k.c
===================================================================
--- binutils.orig/bfd/elf32-or1k.c	2015-11-20 08:48:21.424521863 +0000
+++ binutils/bfd/elf32-or1k.c	2015-11-20 08:48:24.270893446 +0000
@@ -2779,7 +2779,8 @@ or1k_elf_set_private_flags (bfd *abfd, f
    EF_OR1K_NODELAY flag setting.  */
 
 static bfd_boolean
-elf32_or1k_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf32_or1k_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword out_flags;
   flagword in_flags;
Index: binutils/bfd/elf32-ppc.c
===================================================================
--- binutils.orig/bfd/elf32-ppc.c	2015-11-20 08:48:21.428644536 +0000
+++ binutils/bfd/elf32-ppc.c	2015-11-20 08:48:24.280035726 +0000
@@ -4722,7 +4722,8 @@ ppc_elf_merge_obj_attributes (bfd *ibfd,
    object file when linking.  */
 
 static bfd_boolean
-ppc_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+ppc_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword old_flags;
   flagword new_flags;
Index: binutils/bfd/elf32-rl78.c
===================================================================
--- binutils.orig/bfd/elf32-rl78.c	2015-11-20 08:48:21.433913253 +0000
+++ binutils/bfd/elf32-rl78.c	2015-11-20 08:48:24.285162565 +0000
@@ -1173,7 +1173,8 @@ rl78_cpu_name (flagword flags)
    object file when linking.  */
 
 static bfd_boolean
-rl78_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
+rl78_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd,
+				 struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword new_flags;
   flagword old_flags;
Index: binutils/bfd/elf32-rx.c
===================================================================
--- binutils.orig/bfd/elf32-rx.c	2015-11-20 08:48:21.438983386 +0000
+++ binutils/bfd/elf32-rx.c	2015-11-20 08:48:24.289347146 +0000
@@ -3099,7 +3099,8 @@ describe_flags (flagword flags)
    object file when linking.  */
 
 static bfd_boolean
-rx_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
+rx_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+			       struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword old_flags;
   flagword new_flags;
Index: binutils/bfd/elf32-s390.c
===================================================================
--- binutils.orig/bfd/elf32-s390.c	2015-11-20 08:48:21.443056399 +0000
+++ binutils/bfd/elf32-s390.c	2015-11-20 08:48:24.295515101 +0000
@@ -4087,7 +4087,8 @@ elf_s390_plt_sym_val (bfd_vma i, const a
    object file when linking.  */
 
 static bfd_boolean
-elf32_s390_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf32_s390_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   if (!is_s390_elf (ibfd) || !is_s390_elf (obfd))
     return TRUE;
Index: binutils/bfd/elf32-score.c
===================================================================
--- binutils.orig/bfd/elf32-score.c	2015-11-20 08:48:21.447119670 +0000
+++ binutils/bfd/elf32-score.c	2015-11-20 08:48:24.301661523 +0000
@@ -4399,7 +4399,9 @@ elf32_score_print_private_bfd_data (bfd 
 }
 
 static bfd_boolean
-elf32_score_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf32_score_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				    struct bfd_link_info *info
+				      ATTRIBUTE_UNUSED)
 {
   if (bfd_get_mach (obfd) == bfd_mach_score3)
     return s3_elf32_score_merge_private_bfd_data (ibfd, obfd);
Index: binutils/bfd/elf32-sh.c
===================================================================
--- binutils.orig/bfd/elf32-sh.c	2015-11-20 08:48:21.452316250 +0000
+++ binutils/bfd/elf32-sh.c	2015-11-20 08:48:24.307703398 +0000
@@ -6638,7 +6638,8 @@ sh_find_elf_flags (unsigned int arch_set
    calls sh_merge_bfd_arch() to check dsp/fpu compatibility.  */
 
 static bfd_boolean
-sh_elf_merge_private_data (bfd *ibfd, bfd *obfd)
+sh_elf_merge_private_data (bfd *ibfd, bfd *obfd,
+			   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   extern bfd_boolean sh_merge_bfd_arch (bfd *, bfd *);
 
Index: binutils/bfd/elf32-sh64.c
===================================================================
--- binutils.orig/bfd/elf32-sh64.c	2015-11-20 08:48:21.457411821 +0000
+++ binutils/bfd/elf32-sh64.c	2015-11-20 08:48:24.312785771 +0000
@@ -44,7 +44,7 @@ static bfd_boolean sh64_elf_new_section_
 static bfd_boolean sh64_elf_copy_private_data
   (bfd *, bfd *);
 static bfd_boolean sh64_elf_merge_private_data
-  (bfd *, bfd *);
+  (bfd *, bfd *, struct bfd_link_info *);
 static bfd_boolean sh64_elf_fake_sections
   (bfd *, Elf_Internal_Shdr *, asection *);
 static bfd_boolean sh64_elf_set_private_flags
@@ -203,7 +203,8 @@ sh64_elf_copy_private_data (bfd * ibfd, 
 }
 
 static bfd_boolean
-sh64_elf_merge_private_data (bfd *ibfd, bfd *obfd)
+sh64_elf_merge_private_data (bfd *ibfd, bfd *obfd,
+			     struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword old_flags, new_flags;
 
Index: binutils/bfd/elf32-sparc.c
===================================================================
--- binutils.orig/bfd/elf32-sparc.c	2015-11-20 08:48:21.461516574 +0000
+++ binutils/bfd/elf32-sparc.c	2015-11-20 08:48:24.315829395 +0000
@@ -67,7 +67,9 @@ elf32_sparc_grok_psinfo (bfd *abfd, Elf_
    object file when linking.  */
 
 static bfd_boolean
-elf32_sparc_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf32_sparc_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				    struct bfd_link_info *info
+				      ATTRIBUTE_UNUSED)
 {
   bfd_boolean error;
   unsigned long ibfd_mach;
Index: binutils/bfd/elf32-tic6x.c
===================================================================
--- binutils.orig/bfd/elf32-tic6x.c	2015-11-20 08:48:21.466656386 +0000
+++ binutils/bfd/elf32-tic6x.c	2015-11-20 08:48:24.330175138 +0000
@@ -3931,7 +3931,9 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
 }
 
 static bfd_boolean
-elf32_tic6x_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf32_tic6x_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				    struct bfd_link_info *info
+				      ATTRIBUTE_UNUSED)
 {
   if (!_bfd_generic_verify_endian_match (ibfd, obfd))
     return FALSE;
Index: binutils/bfd/elf32-v850.c
===================================================================
--- binutils.orig/bfd/elf32-v850.c	2015-11-20 08:48:21.471746532 +0000
+++ binutils/bfd/elf32-v850.c	2015-11-20 08:48:24.336387133 +0000
@@ -2757,7 +2757,8 @@ v850_elf_set_private_flags (bfd *abfd, f
    to the output object file when linking.  */
 
 static bfd_boolean
-v850_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+v850_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				 struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword out_flags;
   flagword in_flags;
Index: binutils/bfd/elf32-vax.c
===================================================================
--- binutils.orig/bfd/elf32-vax.c	2015-11-20 08:48:21.476893459 +0000
+++ binutils/bfd/elf32-vax.c	2015-11-20 08:48:24.340426943 +0000
@@ -50,7 +50,8 @@ static bfd_vma elf_vax_plt_sym_val (bfd_
 				    const arelent *);
 
 static bfd_boolean elf32_vax_set_private_flags (bfd *, flagword);
-static bfd_boolean elf32_vax_merge_private_bfd_data (bfd *, bfd *);
+static bfd_boolean elf32_vax_merge_private_bfd_data
+  (bfd *, bfd *, struct bfd_link_info *info);
 static bfd_boolean elf32_vax_print_private_bfd_data (bfd *, void *);
 
 static reloc_howto_type howto_table[] = {
@@ -499,7 +500,8 @@ elf32_vax_set_private_flags (bfd *abfd, 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 static bfd_boolean
-elf32_vax_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf32_vax_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				  struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword in_flags;
 
Index: binutils/bfd/elf32-visium.c
===================================================================
--- binutils.orig/bfd/elf32-visium.c	2015-11-20 08:48:21.481037049 +0000
+++ binutils/bfd/elf32-visium.c	2015-11-20 08:48:24.344544298 +0000
@@ -766,7 +766,8 @@ visium_elf_copy_private_bfd_data (bfd *i
    file to the output object file when linking.  */
 
 static bfd_boolean
-visium_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+visium_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword old_flags;
   flagword new_flags;
Index: binutils/bfd/elf32-xgate.c
===================================================================
--- binutils.orig/bfd/elf32-xgate.c	2015-11-20 08:48:21.486118668 +0000
+++ binutils/bfd/elf32-xgate.c	2015-11-20 08:48:24.349593174 +0000
@@ -659,7 +659,9 @@ _bfd_xgate_elf_set_private_flags (bfd *a
 
 bfd_boolean
 _bfd_xgate_elf_merge_private_bfd_data (bfd *ibfd ATTRIBUTE_UNUSED,
-				       bfd *obfd ATTRIBUTE_UNUSED)
+				       bfd *obfd ATTRIBUTE_UNUSED,
+				       struct bfd_link_info *info
+					 ATTRIBUTE_UNUSED)
 {
   return TRUE;
 }
Index: binutils/bfd/elf32-xgate.h
===================================================================
--- binutils.orig/bfd/elf32-xgate.h	2015-11-20 08:48:21.490196860 +0000
+++ binutils/bfd/elf32-xgate.h	2015-11-20 08:48:24.353709262 +0000
@@ -29,7 +29,8 @@
 #include "elf/xgate.h"
 
 /* Set and control ELF flags in ELF header.  */
-extern bfd_boolean _bfd_xgate_elf_merge_private_bfd_data (bfd*,bfd*);
+extern bfd_boolean _bfd_xgate_elf_merge_private_bfd_data
+  (bfd *, bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_xgate_elf_set_private_flags (bfd*,flagword);
 extern bfd_boolean _bfd_xgate_elf_print_private_bfd_data (bfd*, void*);
 
Index: binutils/bfd/elf32-xtensa.c
===================================================================
--- binutils.orig/bfd/elf32-xtensa.c	2015-11-20 08:48:21.501476373 +0000
+++ binutils/bfd/elf32-xtensa.c	2015-11-20 08:48:24.363872614 +0000
@@ -3470,7 +3470,8 @@ elf_xtensa_finish_dynamic_sections (bfd 
    object file when linking.  */
 
 static bfd_boolean
-elf_xtensa_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf_xtensa_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   unsigned out_mach, in_mach;
   flagword out_flag, in_flag;
Index: binutils/bfd/elf64-ia64-vms.c
===================================================================
--- binutils.orig/bfd/elf64-ia64-vms.c	2015-11-20 08:48:21.506581829 +0000
+++ binutils/bfd/elf64-ia64-vms.c	2015-11-20 08:48:24.371960836 +0000
@@ -4203,7 +4203,8 @@ elf64_ia64_set_private_flags (bfd *abfd,
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 static bfd_boolean
-elf64_ia64_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf64_ia64_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword out_flags;
   flagword in_flags;
Index: binutils/bfd/elf64-ppc.c
===================================================================
--- binutils.orig/bfd/elf64-ppc.c	2015-11-20 08:48:21.511732764 +0000
+++ binutils/bfd/elf64-ppc.c	2015-11-20 08:48:24.382036174 +0000
@@ -5925,7 +5925,8 @@ ppc64_elf_check_relocs (bfd *abfd, struc
    object file when linking.  */
 
 static bfd_boolean
-ppc64_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+ppc64_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				  struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   unsigned long iflags, oflags;
 
Index: binutils/bfd/elf64-s390.c
===================================================================
--- binutils.orig/bfd/elf64-s390.c	2015-11-20 08:48:21.515843932 +0000
+++ binutils/bfd/elf64-s390.c	2015-11-20 08:48:24.388184557 +0000
@@ -3842,7 +3842,8 @@ elf_s390_plt_sym_val (bfd_vma i, const a
    object file when linking.  */
 
 static bfd_boolean
-elf64_s390_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf64_s390_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   if (!is_s390_elf (ibfd) || !is_s390_elf (obfd))
     return TRUE;
Index: binutils/bfd/elf64-sh64.c
===================================================================
--- binutils.orig/bfd/elf64-sh64.c	2015-11-20 08:48:21.520895365 +0000
+++ binutils/bfd/elf64-sh64.c	2015-11-20 08:48:24.394278644 +0000
@@ -2276,7 +2276,8 @@ sh_elf64_copy_private_data (bfd *ibfd, b
 }
 
 static bfd_boolean
-sh_elf64_merge_private_data (bfd *ibfd, bfd *obfd)
+sh_elf64_merge_private_data (bfd *ibfd, bfd *obfd,
+			     struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword old_flags, new_flags;
 
Index: binutils/bfd/elf64-sparc.c
===================================================================
--- binutils.orig/bfd/elf64-sparc.c	2015-11-20 08:48:21.525997495 +0000
+++ binutils/bfd/elf64-sparc.c	2015-11-20 08:48:24.400331309 +0000
@@ -637,7 +637,9 @@ elf64_sparc_symbol_processing (bfd *abfd
    object file when linking.  */
 
 static bfd_boolean
-elf64_sparc_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elf64_sparc_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				    struct bfd_link_info *info
+				      ATTRIBUTE_UNUSED)
 {
   bfd_boolean error;
   flagword new_flags, old_flags;
Index: binutils/bfd/elfnn-aarch64.c
===================================================================
--- binutils.orig/bfd/elfnn-aarch64.c	2015-11-20 08:48:21.531140792 +0000
+++ binutils/bfd/elfnn-aarch64.c	2015-11-20 08:48:24.408439529 +0000
@@ -6508,7 +6508,9 @@ elfNN_aarch64_set_private_flags (bfd *ab
    object file when linking.  */
 
 static bfd_boolean
-elfNN_aarch64_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elfNN_aarch64_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				      struct bfd_link_info *info
+					ATTRIBUTE_UNUSED)
 {
   flagword out_flags;
   flagword in_flags;
Index: binutils/bfd/elfnn-ia64.c
===================================================================
--- binutils.orig/bfd/elfnn-ia64.c	2015-11-20 08:48:21.535255559 +0000
+++ binutils/bfd/elfnn-ia64.c	2015-11-20 08:48:24.414505048 +0000
@@ -4703,7 +4703,8 @@ elfNN_ia64_set_private_flags (bfd *abfd,
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 static bfd_boolean
-elfNN_ia64_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+elfNN_ia64_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   flagword out_flags;
   flagword in_flags;
Index: binutils/bfd/elfxx-mips.c
===================================================================
--- binutils.orig/bfd/elfxx-mips.c	2015-11-20 08:48:21.539380930 +0000
+++ binutils/bfd/elfxx-mips.c	2015-11-20 08:48:24.424878754 +0000
@@ -15245,7 +15245,9 @@ mips_elf_merge_obj_abiflags (bfd *ibfd, 
    object file when linking.  */
 
 bfd_boolean
-_bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
+_bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd,
+				      struct bfd_link_info *info
+					ATTRIBUTE_UNUSED)
 {
   struct mips_elf_obj_tdata *out_tdata;
   struct mips_elf_obj_tdata *in_tdata;
Index: binutils/bfd/elfxx-mips.h
===================================================================
--- binutils.orig/bfd/elfxx-mips.h	2015-11-20 08:48:21.543509072 +0000
+++ binutils/bfd/elfxx-mips.h	2015-11-20 08:48:24.428922734 +0000
@@ -107,7 +107,7 @@ extern struct bfd_link_hash_table *_bfd_
 extern bfd_boolean _bfd_mips_elf_final_link
   (bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_mips_elf_merge_private_bfd_data
-  (bfd *, bfd *);
+  (bfd *, bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_mips_elf_set_private_flags
   (bfd *, flagword);
 extern const char * _bfd_mips_fp_abi_string
Index: binutils/bfd/elfxx-target.h
===================================================================
--- binutils.orig/bfd/elfxx-target.h	2015-11-20 08:48:21.548681914 +0000
+++ binutils/bfd/elfxx-target.h	2015-11-20 08:48:24.432984582 +0000
@@ -220,7 +220,7 @@
 #endif
 #ifndef bfd_elfNN_bfd_merge_private_bfd_data
 #define bfd_elfNN_bfd_merge_private_bfd_data \
-  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
+  ((bfd_boolean (*) (bfd *, bfd *, struct bfd_link_info *)) bfd_true)
 #endif
 #ifndef bfd_elfNN_bfd_set_private_flags
 #define bfd_elfNN_bfd_set_private_flags \
Index: binutils/bfd/libbfd-in.h
===================================================================
--- binutils.orig/bfd/libbfd-in.h	2015-11-20 08:48:21.552743795 +0000
+++ binutils/bfd/libbfd-in.h	2015-11-20 08:48:24.440082431 +0000
@@ -250,7 +250,7 @@ extern bfd_boolean _bfd_generic_get_sect
 #define _bfd_generic_bfd_copy_private_bfd_data \
   ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
 #define _bfd_generic_bfd_merge_private_bfd_data \
-  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
+  ((bfd_boolean (*) (bfd *, bfd *, struct bfd_link_info *)) bfd_true)
 #define _bfd_generic_bfd_set_private_flags \
   ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
 #define _bfd_generic_bfd_copy_private_section_data \
Index: binutils/bfd/libbfd.c
===================================================================
--- binutils.orig/bfd/libbfd.c	2015-11-20 08:48:21.557820640 +0000
+++ binutils/bfd/libbfd.c	2015-11-20 08:48:24.444156053 +0000
@@ -922,7 +922,7 @@ bfd_generic_is_local_label_name (bfd *ab
   return name[0] == locals_prefix;
 }
 
-/*  Can be used from / for bfd_merge_private_bfd_data to check that
+/*  Can be used from bfd_merge_private_bfd_data to check that
     endianness matches between input and output file.  Returns
     TRUE for a match, otherwise returns FALSE and emits an error.  */
 bfd_boolean
Index: binutils/bfd/libbfd.h
===================================================================
--- binutils.orig/bfd/libbfd.h	2015-11-20 08:48:21.561959905 +0000
+++ binutils/bfd/libbfd.h	2015-11-20 08:48:24.449282414 +0000
@@ -255,7 +255,7 @@ extern bfd_boolean _bfd_generic_get_sect
 #define _bfd_generic_bfd_copy_private_bfd_data \
   ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
 #define _bfd_generic_bfd_merge_private_bfd_data \
-  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
+  ((bfd_boolean (*) (bfd *, bfd *, struct bfd_link_info *)) bfd_true)
 #define _bfd_generic_bfd_set_private_flags \
   ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
 #define _bfd_generic_bfd_copy_private_section_data \
Index: binutils/bfd/targets.c
===================================================================
--- binutils.orig/bfd/targets.c	2015-11-20 08:48:21.570116345 +0000
+++ binutils/bfd/targets.c	2015-11-20 08:48:24.454411489 +0000
@@ -291,7 +291,8 @@ BFD_JUMP_TABLE macros.
 .  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
 .  {* Called to merge BFD general private data from one object file
 .     to a common output file when linking.  *}
-.  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
+.  bfd_boolean (*_bfd_merge_private_bfd_data)
+.    (bfd *, bfd *, struct bfd_link_info *);
 .  {* Called to initialize BFD private section data from one object file
 .     to another.  *}
 .#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
Index: binutils/ld/ldlang.c
===================================================================
--- binutils.orig/ld/ldlang.c	2015-11-20 08:48:21.678861708 +0000
+++ binutils/ld/ldlang.c	2015-11-20 08:48:24.467807588 +0000
@@ -5978,7 +5978,8 @@ lang_check (void)
 	     information which is needed in the output file.  */
 	  if (! command_line.warn_mismatch)
 	    pfn = bfd_set_error_handler (ignore_bfd_errors);
-	  if (! bfd_merge_private_bfd_data (input_bfd, link_info.output_bfd))
+	  if (!bfd_merge_private_bfd_data (input_bfd, link_info.output_bfd,
+					   &link_info))
 	    {
 	      if (command_line.warn_mismatch)
 		einfo (_("%P%X: failed to merge target specific data"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]