]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
bfd: replace _bfd_merge_sections() hook with simple boolean
authorJan Beulich <jbeulich@suse.com>
Fri, 24 Oct 2025 13:11:39 +0000 (15:11 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 24 Oct 2025 13:11:39 +0000 (15:11 +0200)
There's no need for a hook; what needs doing is uniform, the question is
only whether to perform any merging (i.e. whether other parts of a backend
are capable of dealing with the effects).

Where _bfd_nolink_bfd_merge_sections() was used, false is hardcoded. For
ELF no real target override is permitted; true is hardcoded except for the
cases where bfd_generic_merge_sections() was used as the hook function
before.

50 files changed:
bfd/aout-target.h
bfd/bfd-in2.h
bfd/bfd.c
bfd/binary.c
bfd/cisco-core.c
bfd/coff-aarch64.c
bfd/coff-alpha.c
bfd/coff-i386.c
bfd/coff-ia64.c
bfd/coff-loongarch64.c
bfd/coff-mips.c
bfd/coff-riscv64.c
bfd/coff-rs6000.c
bfd/coff-sh.c
bfd/coff-tic30.c
bfd/coff-tic54x.c
bfd/coff-x86_64.c
bfd/coff64-rs6000.c
bfd/coffcode.h
bfd/elfxx-target.h
bfd/hppabsd-core.c
bfd/hpux-core.c
bfd/i386msdos.c
bfd/ihex.c
bfd/irix-core.c
bfd/libbfd-in.h
bfd/libbfd.h
bfd/mach-o-target.c
bfd/merge.c
bfd/mmo.c
bfd/netbsd-core.c
bfd/osf-core.c
bfd/pdb.c
bfd/pdp11.c
bfd/pef.c
bfd/plugin.c
bfd/ppcboot.c
bfd/ptrace-core.c
bfd/reloc.c
bfd/som.c
bfd/srec.c
bfd/targets.c
bfd/tekhex.c
bfd/trad-core.c
bfd/verilog.c
bfd/vms-alpha.c
bfd/vms-lib.c
bfd/wasm-module.c
bfd/xsym.c
include/bfdlink.h

index c6d9d60ca8a6ec77369d9bff2edf8c456a44194a..229e90b0175f56defe4b9cd75d9072dd885a3c2a 100644 (file)
@@ -495,9 +495,6 @@ MY_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
 #ifndef MY_bfd_lookup_section_flags
 #define MY_bfd_lookup_section_flags bfd_generic_lookup_section_flags
 #endif
-#ifndef MY_bfd_merge_sections
-#define MY_bfd_merge_sections bfd_generic_merge_sections
-#endif
 #ifndef MY_bfd_is_group_section
 #define MY_bfd_is_group_section bfd_generic_is_group_section
 #endif
@@ -648,6 +645,7 @@ const bfd_target MY (vec) =
   15,                          /* AR_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
 #ifdef TARGET_IS_BIG_ENDIAN_P
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
      bfd_getb32, bfd_getb_signed_32, bfd_putb32,
index 8f3b0f7c255d81b54692a29adb6336c05f873cb0..1a178c57daf3be47d2442f1efebea3457e7aa54b 100644 (file)
@@ -2708,9 +2708,6 @@ bool bfd_set_private_flags (bfd *abfd, flagword flags);
 #define bfd_lookup_section_flags(link_info, flag_info, section) \
        BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
 
-#define bfd_merge_sections(abfd, link_info) \
-       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
-
 #define bfd_is_group_section(abfd, sec) \
        BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
 
@@ -7525,6 +7522,11 @@ struct stab_info
 #define TARGET_KEEP_UNUSED_SECTION_SYMBOLS true
 #endif
 
+/* Define to TRUE if section merging is supported by the backend.  */
+#ifndef TARGET_MERGE_SECTIONS
+#define TARGET_MERGE_SECTIONS false
+#endif
+
 enum bfd_flavour
 {
   /* N.B. Update bfd_flavour_name if you change this.  */
@@ -7594,6 +7596,9 @@ typedef struct bfd_target
  /* TRUE if unused section symbols should be kept.  */
   bool keep_unused_section_symbols;
 
+  /* TRUE if section merging is supported by the backend.  */
+  bool merge_sections;
+
   /* Entries for byte swapping for data. These are different from the
      other entry points, since they don't take a BFD as the first argument.
      Certain other handlers could do the same.  */
@@ -7831,7 +7836,6 @@ typedef struct bfd_target
   NAME##_bfd_link_check_relocs, \
   NAME##_bfd_gc_sections, \
   NAME##_bfd_lookup_section_flags, \
-  NAME##_bfd_merge_sections, \
   NAME##_bfd_is_group_section, \
   NAME##_bfd_group_name, \
   NAME##_bfd_discard_group, \
@@ -7887,9 +7891,6 @@ typedef struct bfd_target
   bool (*_bfd_lookup_section_flags) (struct bfd_link_info *,
                                     struct flag_info *, asection *);
 
-  /* Attempt to merge SEC_MERGE sections.  */
-  bool (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
-
   /* Is this section a member of a group?  */
   bool (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
 
index 858ab5ce017911d585e2718d1dfa7ccd1df2be89..11ce75669d3fd18dd18de2a7e65cce2ea987656e 100644 (file)
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -2645,9 +2645,6 @@ DESCRIPTION
 .#define bfd_lookup_section_flags(link_info, flag_info, section) \
 .      BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
 .
-.#define bfd_merge_sections(abfd, link_info) \
-.      BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
-.
 .#define bfd_is_group_section(abfd, sec) \
 .      BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
 .
index 7fe47b590de1dadd49a770ee48559fbf36781f6c..eb5f3b1371eb3a4b0d285b72da31a5d3a996041b 100644 (file)
@@ -298,7 +298,6 @@ binary_set_section_contents (bfd *abfd,
 #define binary_bfd_relax_section                  bfd_generic_relax_section
 #define binary_bfd_gc_sections                    bfd_generic_gc_sections
 #define binary_bfd_lookup_section_flags                   bfd_generic_lookup_section_flags
-#define binary_bfd_merge_sections                 bfd_generic_merge_sections
 #define binary_bfd_is_group_section               bfd_generic_is_group_section
 #define binary_bfd_group_name                     bfd_generic_group_name
 #define binary_bfd_discard_group                  bfd_generic_discard_group
@@ -328,6 +327,7 @@ const bfd_target binary_vec =
   16,                          /* ar_max_namelen */
   255,                         /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* data */
index 23ce251357e49685bdc9308b4c4d4702658e1e2d..70c086b1cfd4ee7003f5c5d47d7d3b3bc6a6e111 100644 (file)
@@ -330,6 +330,7 @@ const bfd_target core_cisco_be_vec =
   16,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  false,                       /* merge sections */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
index 48b8bfaf4966f99507d7103a1f87975e050f5446..0792306cfa086f172744135ed325400642021133 100644 (file)
@@ -973,6 +973,7 @@ const bfd_target
   15,                          /* Ar_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
 
   /* Data conversion functions.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
index 3616a3eceef079a05ebc120114a4822727729056..b20269b077b4cf3dbc040a5358800038a8a34730 100644 (file)
@@ -2445,7 +2445,6 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data =
 /* Relaxing sections is generic.  */
 #define _bfd_ecoff_bfd_relax_section bfd_generic_relax_section
 #define _bfd_ecoff_bfd_gc_sections bfd_generic_gc_sections
-#define _bfd_ecoff_bfd_merge_sections bfd_generic_merge_sections
 #define _bfd_ecoff_bfd_is_group_section bfd_generic_is_group_section
 #define _bfd_ecoff_bfd_group_name bfd_generic_group_name
 #define _bfd_ecoff_bfd_discard_group bfd_generic_discard_group
@@ -2477,6 +2476,7 @@ const bfd_target alpha_ecoff_le_vec =
   15,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
index 6a41c327ec22cbe50890e03da4f87e68a3f1d8ab..935aeb4ac0d22c66231e35426af810382c92afbc 100644 (file)
@@ -740,6 +740,7 @@ const bfd_target
   15,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
@@ -819,6 +820,7 @@ const bfd_target
   15,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index b2873ae868409b1628b9eebe304becd680baeabc..a457497c385a3348cb631ce6add20f95430fd7b4 100644 (file)
@@ -174,6 +174,7 @@ const bfd_target
   15,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index a85210864aebb8b48642c961686dd30effc2fb38..10a902869d85ce98a649868d62e8c8ec988d5d60 100644 (file)
@@ -115,6 +115,7 @@ const bfd_target
   15,                          /* Ar_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
 
      /* Data conversion functions.  */
      bfd_getl64, bfd_getl_signed_64, bfd_putl64,
index 1213a15935874d7f6af26205019c203ccfcaaaea..80e6990db0161587a82658f1a4154f174d734f12 100644 (file)
@@ -1404,9 +1404,6 @@ static const struct ecoff_backend_data mips_ecoff_backend_data =
 /* Input section flags is not implemented.  */
 #define _bfd_ecoff_bfd_lookup_section_flags bfd_generic_lookup_section_flags
 
-/* Merging of sections is not done.  */
-#define _bfd_ecoff_bfd_merge_sections bfd_generic_merge_sections
-
 #define _bfd_ecoff_bfd_is_group_section bfd_generic_is_group_section
 #define _bfd_ecoff_bfd_group_name bfd_generic_group_name
 #define _bfd_ecoff_bfd_discard_group bfd_generic_discard_group
@@ -1437,6 +1434,7 @@ const bfd_target mips_ecoff_le_vec =
   15,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
@@ -1496,6 +1494,7 @@ const bfd_target mips_ecoff_be_vec =
   15,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
      bfd_getb32, bfd_getb_signed_32, bfd_putb32,
      bfd_getb16, bfd_getb_signed_16, bfd_putb16,
@@ -1555,6 +1554,7 @@ const bfd_target mips_ecoff_bele_vec =
   15,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
index 2356a6bb94d84ecdaa535a26ed475305c4309b95..508fd85f1d8f7e983ff56fa69be053ea37ecc981 100644 (file)
@@ -88,6 +88,7 @@ const bfd_target
   15,                          /* Ar_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
 
      /* Data conversion functions.  */
      bfd_getl64, bfd_getl_signed_64, bfd_putl64,
index 803b51c9fc3c774b42b5a7322e1d4af2532125b2..fc065d7095d24445e04d19eb36b2bafbf051bda5 100644 (file)
@@ -4521,7 +4521,6 @@ coff_find_nearest_line_with_alt
 #define _bfd_xcoff_bfd_link_split_section _bfd_generic_link_split_section
 #define _bfd_xcoff_bfd_gc_sections bfd_generic_gc_sections
 #define _bfd_xcoff_bfd_lookup_section_flags bfd_generic_lookup_section_flags
-#define _bfd_xcoff_bfd_merge_sections bfd_generic_merge_sections
 #define _bfd_xcoff_bfd_is_group_section bfd_generic_is_group_section
 #define _bfd_xcoff_bfd_group_name bfd_generic_group_name
 #define _bfd_xcoff_bfd_discard_group bfd_generic_discard_group
@@ -4655,6 +4654,7 @@ const bfd_target rs6000_xcoff_vec =
     15,                                /* ar_max_namelen */
     0,                         /* match priority.  */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    TARGET_MERGE_SECTIONS,
 
     /* data */
     bfd_getb64,
@@ -4844,6 +4844,7 @@ const bfd_target powerpc_xcoff_vec =
     15,                                /* ar_max_namelen */
     0,                         /* match priority.  */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    TARGET_MERGE_SECTIONS,
 
     /* data */
     bfd_getb64,
index 008d1e7b38f0a92e7880af480fe54374df5cf6cc..928d13a4d18ac90dced0a61d2815d7c2ae433f98 100644 (file)
@@ -3139,6 +3139,7 @@ const bfd_target sh_coff_small_vec =
   15,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
@@ -3197,6 +3198,7 @@ const bfd_target sh_coff_small_le_vec =
   15,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
   bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
index 583c7c253c7e62389f73f568b83ad9dd426d18f0..957fdf447c410c8d8521f0b3d6084633bb60457b 100644 (file)
@@ -200,6 +200,7 @@ const bfd_target tic30_coff_vec =
   15,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* data */
index 0eb8534e4374d4622eac0b9339d862f0ca8a9303..9166ed82751f82eadd42b118fe9a1f40c5a891b3 100644 (file)
@@ -388,6 +388,7 @@ const bfd_target tic54x_coff0_vec =
     15,                                /* ar_max_namelen */
     0,                         /* match priority.  */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    TARGET_MERGE_SECTIONS,
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
@@ -450,6 +451,7 @@ const bfd_target tic54x_coff0_beh_vec =
 #else
     false,                     /* keep unused section symbols.  */
 #endif
+    TARGET_MERGE_SECTIONS,
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
@@ -513,6 +515,7 @@ const bfd_target tic54x_coff1_vec =
 #else
     false,                     /* keep unused section symbols.  */
 #endif
+    TARGET_MERGE_SECTIONS,
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
@@ -576,6 +579,7 @@ const bfd_target tic54x_coff1_beh_vec =
 #else
     false,                     /* keep unused section symbols.  */
 #endif
+    TARGET_MERGE_SECTIONS,
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
@@ -639,6 +643,7 @@ const bfd_target tic54x_coff2_vec =
 #else
     false,                     /* keep unused section symbols.  */
 #endif
+    TARGET_MERGE_SECTIONS,
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
@@ -702,6 +707,7 @@ const bfd_target tic54x_coff2_beh_vec =
 #else
     false,                     /* keep unused section symbols.  */
 #endif
+    TARGET_MERGE_SECTIONS,
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
index af47b7fbb76bc5768dbcb9a9e76fa7273600b1d3..3d5a82f8b4a46d9c75a559b1ad154cd093c66997 100644 (file)
@@ -927,6 +927,7 @@ const bfd_target
   15,                          /* Ar_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
@@ -1000,6 +1001,7 @@ const bfd_target
   15,                          /* Ar_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index 814d25eda90863df22ba2ad0e648529dd96ce321..00cb91a02cc21e2076e110dac6a5b0ae174b114c 100644 (file)
@@ -2568,6 +2568,7 @@ const bfd_target rs6000_xcoff64_vec =
     15,                                /* ar_max_namelen */
     0,                         /* match priority.  */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    TARGET_MERGE_SECTIONS,
 
     /* data */
     bfd_getb64,
@@ -2685,7 +2686,6 @@ const bfd_target rs6000_xcoff64_vec =
     _bfd_generic_link_check_relocs,
     bfd_generic_gc_sections,
     bfd_generic_lookup_section_flags,
-    bfd_generic_merge_sections,
     bfd_generic_is_group_section,
     bfd_generic_group_name,
     bfd_generic_discard_group,
@@ -2838,6 +2838,7 @@ const bfd_target rs6000_xcoff64_aix_vec =
     15,                                /* ar_max_namelen */
     0,                         /* match priority.  */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    TARGET_MERGE_SECTIONS,
 
     /* data */
     bfd_getb64,
@@ -2955,7 +2956,6 @@ const bfd_target rs6000_xcoff64_aix_vec =
     _bfd_generic_link_check_relocs,
     bfd_generic_gc_sections,
     bfd_generic_lookup_section_flags,
-    bfd_generic_merge_sections,
     bfd_generic_is_group_section,
     bfd_generic_group_name,
     bfd_generic_discard_group,
index 5cfdb2dc56bba8091e0eceacf29a9a66e7815aeb..1e5acc0032c018351aad9aaadebc8518fcfa8fea 100644 (file)
@@ -6024,10 +6024,6 @@ static const bfd_coff_backend_data bigobj_swap_table =
 #define coff_bfd_lookup_section_flags      bfd_generic_lookup_section_flags
 #endif
 
-#ifndef coff_bfd_merge_sections
-#define coff_bfd_merge_sections                    bfd_generic_merge_sections
-#endif
-
 #ifndef coff_bfd_is_group_section
 #define coff_bfd_is_group_section          bfd_generic_is_group_section
 #endif
@@ -6082,6 +6078,7 @@ const bfd_target VAR =                                                    \
   15,                          /* AR_max_namelen.  */                  \
   0,                           /* match priority.  */                  \
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */ \
+  TARGET_MERGE_SECTIONS,                                               \
                                                                        \
   /* Data conversion functions.  */                                    \
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,                          \
@@ -6145,6 +6142,7 @@ const bfd_target VAR =                                                    \
   15,                          /* AR_max_namelen.  */                  \
   0,                           /* match priority.  */                  \
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */ \
+  TARGET_MERGE_SECTIONS,                                               \
                                                                        \
   /* Data conversion functions.  */                                    \
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,                          \
@@ -6208,6 +6206,7 @@ const bfd_target VAR =                                                    \
   15,                          /* AR_max_namelen.  */                  \
   0,                           /* match priority.  */                  \
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */ \
+  TARGET_MERGE_SECTIONS,                                               \
                                                                        \
   /* Data conversion functions.  */                                    \
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,                          \
index 839555647b049bc032a414a0b6307dc6c9b08250..3369db5c2cf9121ce8b9da0ec9eeecee37700f19 100644 (file)
 #ifndef bfd_elfNN_bfd_final_link
 #define bfd_elfNN_bfd_final_link       bfd_elf_final_link
 #endif
-#ifndef bfd_elfNN_bfd_merge_sections
-#define bfd_elfNN_bfd_merge_sections   _bfd_merge_sections
-#endif
+#undef TARGET_MERGE_SECTIONS
+#define TARGET_MERGE_SECTIONS true
 #else /* ! defined (elf_backend_relocate_section) */
 /* If no backend relocate_section routine, use the generic linker.
    Note - this will prevent the port from being able to use some of
 #ifndef bfd_elfNN_bfd_final_link
 #define bfd_elfNN_bfd_final_link       _bfd_generic_final_link
 #endif
-#ifndef bfd_elfNN_bfd_merge_sections
-#define bfd_elfNN_bfd_merge_sections   bfd_generic_merge_sections
-#endif
 #endif /* ! defined (elf_backend_relocate_section) */
 
 #ifndef bfd_elfNN_bfd_link_just_syms
@@ -1027,6 +1023,7 @@ const bfd_target TARGET_BIG_SYM =
 
   /* TRUE if unused section symbols should be kept.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS,
+  TARGET_MERGE_SECTIONS,
 
   /* Routines to byte-swap various sized integers from the data sections */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
@@ -1132,6 +1129,7 @@ const bfd_target TARGET_LITTLE_SYM =
 
   /* TRUE if unused section symbols should be kept.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS,
+  TARGET_MERGE_SECTIONS,
 
   /* Routines to byte-swap various sized integers from the data sections */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
index d9cd1363fa8d100ce700459e07ffd15142ae18d7..45f41c8a13912659fb7c678a40eb255c86240e0e 100644 (file)
@@ -232,6 +232,7 @@ const bfd_target core_hppabsd_vec =
     ' ',                                                  /* ar_pad_char */
     16,                                                           /* ar_max_namelen */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    false,                     /* merge sections */
     NO_GET64, NO_GETS64, NO_PUT64,     /* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 16 bit data */
index 5dca3eff8e9a2bd284b94c57bb554d751dca41f0..537e08a2169e6d30b96fd2af8cfea21d40698044 100644 (file)
@@ -379,6 +379,7 @@ const bfd_target core_hpux_vec =
     16,                                /* ar_max_namelen */
     0,                         /* match priority.  */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    false,                     /* merge sections */
     NO_GET64, NO_GETS64, NO_PUT64,     /* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 16 bit data */
index ba58f0feabcd06b9f6a7d7c564b6454d8dacc380..a4a9c54831cc54aea3e3a5c6aab54548c2afc949 100644 (file)
@@ -224,7 +224,6 @@ msdos_set_section_contents (bfd *abfd,
 #define msdos_bfd_relax_section bfd_generic_relax_section
 #define msdos_bfd_gc_sections bfd_generic_gc_sections
 #define msdos_bfd_lookup_section_flags bfd_generic_lookup_section_flags
-#define msdos_bfd_merge_sections bfd_generic_merge_sections
 #define msdos_bfd_is_group_section bfd_generic_is_group_section
 #define msdos_bfd_group_name bfd_generic_group_name
 #define msdos_bfd_discard_group bfd_generic_discard_group
@@ -279,6 +278,7 @@ const bfd_target i386_msdos_vec =
     16,                                /* ar_max_namelen */
     0,                         /* match priority.  */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    TARGET_MERGE_SECTIONS,
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
index 79c5349375c7bf50559f7e32296aac8789e23698..c612b780f1ab500877fc1148ee11b8b55323d376 100644 (file)
@@ -926,7 +926,6 @@ ihex_set_arch_mach (bfd *abfd,
 #define ihex_bfd_relax_section                   bfd_generic_relax_section
 #define ihex_bfd_gc_sections                     bfd_generic_gc_sections
 #define ihex_bfd_lookup_section_flags            bfd_generic_lookup_section_flags
-#define ihex_bfd_merge_sections                          bfd_generic_merge_sections
 #define ihex_bfd_is_group_section                bfd_generic_is_group_section
 #define ihex_bfd_group_name                      bfd_generic_group_name
 #define ihex_bfd_discard_group                   bfd_generic_discard_group
@@ -957,6 +956,7 @@ const bfd_target ihex_vec =
   16,                          /* AR_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 4087419d6a8ce85bdd34c41e726bf39d11a20a77..60da91957e38364804a8c6147999cd5419defa59 100644 (file)
@@ -295,6 +295,7 @@ const bfd_target core_irix_vec =
     16,                                                           /* ar_max_namelen */
     0,                                                    /* match_priority */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    false,                     /* merge sections */
     NO_GET64, NO_GETS64, NO_PUT64,     /* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 16 bit data */
index 8caec1c76a6ec3ef7e30d244a5c7d878a44f4b4e..e00bd4353e359438c91cbd709a7ba6e22e154c96 100644 (file)
@@ -489,7 +489,6 @@ extern bool _bfd_nolink_bfd_relax_section
 #define _bfd_nolink_bfd_gc_sections _bfd_bool_bfd_link_false_error
 extern bool _bfd_nolink_bfd_lookup_section_flags
   (struct bfd_link_info *, struct flag_info *, asection *) ATTRIBUTE_HIDDEN;
-#define _bfd_nolink_bfd_merge_sections _bfd_bool_bfd_link_false_error
 extern bool _bfd_nolink_bfd_is_group_section
   (bfd *, const asection *) ATTRIBUTE_HIDDEN;
 extern const char *_bfd_nolink_bfd_group_name
@@ -688,11 +687,6 @@ extern bfd_reloc_status_type _bfd_relocate_contents
 extern bfd_reloc_status_type _bfd_clear_contents
   (reloc_howto_type *, bfd *, asection *, bfd_byte *, bfd_vma) ATTRIBUTE_HIDDEN;
 
-/* Attempt to merge SEC_MERGE sections.  */
-
-extern bool _bfd_merge_sections
-  (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
-
 /* Write out a merged section.  */
 
 extern bool _bfd_write_merged_section
index 617df41924e2944f6b242998e458bd72de579d26..193c01ef50a6ad258308cfd00c72abf92b8ce9bc 100644 (file)
@@ -495,7 +495,6 @@ extern bool _bfd_nolink_bfd_relax_section
 #define _bfd_nolink_bfd_gc_sections _bfd_bool_bfd_link_false_error
 extern bool _bfd_nolink_bfd_lookup_section_flags
   (struct bfd_link_info *, struct flag_info *, asection *) ATTRIBUTE_HIDDEN;
-#define _bfd_nolink_bfd_merge_sections _bfd_bool_bfd_link_false_error
 extern bool _bfd_nolink_bfd_is_group_section
   (bfd *, const asection *) ATTRIBUTE_HIDDEN;
 extern const char *_bfd_nolink_bfd_group_name
@@ -694,11 +693,6 @@ extern bfd_reloc_status_type _bfd_relocate_contents
 extern bfd_reloc_status_type _bfd_clear_contents
   (reloc_howto_type *, bfd *, asection *, bfd_byte *, bfd_vma) ATTRIBUTE_HIDDEN;
 
-/* Attempt to merge SEC_MERGE sections.  */
-
-extern bool _bfd_merge_sections
-  (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
-
 /* Write out a merged section.  */
 
 extern bool _bfd_write_merged_section
@@ -3631,9 +3625,6 @@ bool bfd_generic_gc_sections
 bool bfd_generic_lookup_section_flags
    (struct bfd_link_info *, struct flag_info *, asection *) ATTRIBUTE_HIDDEN;
 
-bool bfd_generic_merge_sections
-   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
-
 bfd_byte *bfd_generic_get_relocated_section_contents
    (bfd *abfd,
     struct bfd_link_info *link_info,
index e402d3a034f7d5c90468a0002cee1fd30341e3a1..55e0c74922442fdeccc748111788e45d25892f4f 100644 (file)
@@ -48,7 +48,6 @@
 #define bfd_mach_o_get_section_contents                      _bfd_generic_get_section_contents
 #define bfd_mach_o_bfd_gc_sections                   bfd_generic_gc_sections
 #define bfd_mach_o_bfd_lookup_section_flags          bfd_generic_lookup_section_flags
-#define bfd_mach_o_bfd_merge_sections                bfd_generic_merge_sections
 #define bfd_mach_o_bfd_is_group_section                      bfd_generic_is_group_section
 #define bfd_mach_o_bfd_group_name                    bfd_generic_group_name
 #define bfd_mach_o_bfd_discard_group                 bfd_generic_discard_group
@@ -135,6 +134,7 @@ const bfd_target TARGET_NAME =
   16,                          /* ar_max_namelen.  */
   TARGET_PRIORITY,     /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
 
 #if TARGET_BIG_ENDIAN
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
index d89f4800f8a51a08a82264a0c02710929a5a90f5..0de35da5cf48687c11a475da0534ff4bccc32ffc 100644 (file)
@@ -874,7 +874,7 @@ is_suffix (const struct sec_merge_hash_entry *A,
                 B->str, B->len) == 0;
 }
 
-/* This is a helper function for _bfd_merge_sections.  It attempts to
+/* This is a helper function for bfd_merge_sections.  It attempts to
    merge strings matching suffixes of longer strings.  */
 static struct sec_merge_sec_info *
 merge_strings (struct sec_merge_info *sinfo)
@@ -1058,11 +1058,14 @@ merge_sections (bfd *abfd,
 /* Finish SEC_MERGE section merging.  */
 
 bool
-_bfd_merge_sections (bfd *obfd, struct bfd_link_info *info)
+bfd_merge_sections (bfd *obfd, struct bfd_link_info *info)
 {
   const bfd *ibfd;
   asection *sec;
 
+  if (!obfd->xvec->merge_sections)
+    return true;
+
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
     if ((ibfd->flags & DYNAMIC) == 0)
       for (sec = ibfd->sections; sec != NULL; sec = sec->next)
index 762aeffd3e0db7a9045be58127a08d24cf5e7dd8..f63654a459211ae77932a4d652f71dc8e26df88d 100644 (file)
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -3332,7 +3332,6 @@ mmo_write_object_contents (bfd *abfd)
    stop anybody from shooting themselves in the foot.  */
 #define mmo_set_arch_mach bfd_default_set_arch_mach
 #define mmo_bfd_relax_section bfd_generic_relax_section
-#define mmo_bfd_merge_sections bfd_generic_merge_sections
 #define mmo_bfd_is_group_section bfd_generic_is_group_section
 #define mmo_bfd_group_name bfd_generic_group_name
 #define mmo_bfd_discard_group bfd_generic_discard_group
@@ -3372,6 +3371,7 @@ const bfd_target mmix_mmo_vec =
   16,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* data */
index 2290817d8c17cd8de6d31a836a8742c6f5bb6f60..34afcefd5e721f11b3a7d3435737dfe52863b9c8 100644 (file)
@@ -279,6 +279,7 @@ const bfd_target core_netbsd_vec =
     16,                                /* ar_max_namelen.  */
     0,                         /* Match priority.  */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    false,                     /* merge sections */
     NO_GET64, NO_GETS64, NO_PUT64,     /* 64 bit data.  */
     NO_GET, NO_GETS, NO_PUT,           /* 32 bit data.  */
     NO_GET, NO_GETS, NO_PUT,           /* 16 bit data.  */
index 8433e7cae3ef392d064b4bcc3aa3d82aa3ea26ef..95e05fe295651106e87e697beeeacd532fb115fb 100644 (file)
@@ -189,6 +189,7 @@ const bfd_target core_osf_vec =
     16,                                /* ar_max_namelen */
     0,                         /* match priority.  */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    false,                     /* merge sections */
     NO_GET64, NO_GETS64, NO_PUT64,     /* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 16 bit data */
index ac94d372c7f86bbc3fa7b2eea9ab75985b6d8c6a..4446830af539885b58c3f53ed100dfac7811eb34 100644 (file)
--- a/bfd/pdb.c
+++ b/bfd/pdb.c
@@ -822,6 +822,7 @@ const bfd_target pdb_vec =
   16,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  false,                       /* merge sections */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
   bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data.  */
index 2d12033f08691d273a3426cf5a29e301d3678d64..67e667e745b95a053c2a3b5a1af28320aa63c813 100644 (file)
@@ -4644,6 +4644,7 @@ const bfd_target MY (vec) =
   15,                          /* AR_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getp32, bfd_getp_signed_32, bfd_putp32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data.  */
index 23d26b060954d8df88972769f22b1121be8cc77b..2054285accdf5f7788a3386ef2ef66b9ae75c126 100644 (file)
--- a/bfd/pef.c
+++ b/bfd/pef.c
@@ -55,7 +55,6 @@
 #define bfd_pef_bfd_relax_section                  bfd_generic_relax_section
 #define bfd_pef_bfd_gc_sections                            bfd_generic_gc_sections
 #define bfd_pef_bfd_lookup_section_flags           bfd_generic_lookup_section_flags
-#define bfd_pef_bfd_merge_sections                 bfd_generic_merge_sections
 #define bfd_pef_bfd_is_group_section               bfd_generic_is_group_section
 #define bfd_pef_bfd_group_name                     bfd_generic_group_name
 #define bfd_pef_bfd_discard_group                  bfd_generic_discard_group
@@ -1020,6 +1019,7 @@ const bfd_target pef_vec =
   16,                          /* AR_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  false,                       /* merge sections */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
@@ -1156,6 +1156,7 @@ const bfd_target pef_xlib_vec =
   16,                          /* AR_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index f8ddc616724ad316edf03ff28cbd62e2c085129a..45f17fee25ad301dd7e3e86480d99d1632b368fc 100644 (file)
@@ -99,7 +99,6 @@ dlerror (void)
 #define bfd_plugin_bfd_link_split_section            _bfd_generic_link_split_section
 #define bfd_plugin_bfd_gc_sections                   bfd_generic_gc_sections
 #define bfd_plugin_bfd_lookup_section_flags          bfd_generic_lookup_section_flags
-#define bfd_plugin_bfd_merge_sections                bfd_generic_merge_sections
 #define bfd_plugin_bfd_is_group_section                      bfd_generic_is_group_section
 #define bfd_plugin_bfd_group_name                    bfd_generic_group_name
 #define bfd_plugin_bfd_discard_group                 bfd_generic_discard_group
@@ -983,6 +982,7 @@ const bfd_target plugin_vec =
   15,                          /* ar_max_namelen.  */
   255,                         /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index dd70267640c4ecdc22347f75a8702d58cd00b7af..b296d0e290d487dedc0c4b4d27e04aa3ed79af83 100644 (file)
@@ -454,7 +454,6 @@ ppcboot_bfd_print_private_bfd_data (bfd *abfd, void * farg)
 #define ppcboot_bfd_relax_section bfd_generic_relax_section
 #define ppcboot_bfd_gc_sections bfd_generic_gc_sections
 #define ppcboot_bfd_lookup_section_flags bfd_generic_lookup_section_flags
-#define ppcboot_bfd_merge_sections bfd_generic_merge_sections
 #define ppcboot_bfd_is_group_section bfd_generic_is_group_section
 #define ppcboot_bfd_group_name bfd_generic_group_name
 #define ppcboot_bfd_discard_group bfd_generic_discard_group
@@ -494,6 +493,7 @@ const bfd_target powerpc_boot_vec =
   16,                          /* ar_max_namelen */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* data */
index 1d44f9f5d021680e1b14440a7ef41fa420cd48ab..7182df68974ef5a8f1e41d26edaea72ec9cd5bed 100644 (file)
@@ -180,6 +180,7 @@ const bfd_target core_ptrace_vec =
     ' ',                                                  /* ar_pad_char */
     16,                                                           /* ar_max_namelen */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    false,                     /* merge sections */
     NO_GET64, NO_GETS64, NO_PUT64,     /* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 16 bit data */
index aa69a3c2dc93b3f5ca987a5a5571b70f4ae756cf..68a8929413b42feafc7bc23182cb2870d89c5036 100644 (file)
@@ -8426,26 +8426,6 @@ bfd_generic_lookup_section_flags (struct bfd_link_info *info ATTRIBUTE_UNUSED,
   return true;
 }
 
-/*
-INTERNAL_FUNCTION
-       bfd_generic_merge_sections
-
-SYNOPSIS
-       bool bfd_generic_merge_sections
-         (bfd *, struct bfd_link_info *);
-
-DESCRIPTION
-       Provides default handling for SEC_MERGE section merging for back ends
-       which don't have SEC_MERGE support -- i.e., does nothing.
-*/
-
-bool
-bfd_generic_merge_sections (bfd *abfd ATTRIBUTE_UNUSED,
-                           struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
-{
-  return true;
-}
-
 /*
 INTERNAL_FUNCTION
        bfd_generic_get_relocated_section_contents
index 5c60f605043cc43e2538b269b7939c43e0d604cd..bed2e9b5e8ba934bcbd4bdd2dbedd9f4594647e6 100644 (file)
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -6771,7 +6771,6 @@ som_bfd_link_split_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
 #define som_bfd_final_link                     _bfd_generic_final_link
 #define som_bfd_gc_sections                    bfd_generic_gc_sections
 #define som_bfd_lookup_section_flags           bfd_generic_lookup_section_flags
-#define som_bfd_merge_sections                 bfd_generic_merge_sections
 #define som_bfd_is_group_section               bfd_generic_is_group_section
 #define som_bfd_group_name                     bfd_generic_group_name
 #define som_bfd_discard_group                  bfd_generic_discard_group
@@ -6805,6 +6804,7 @@ const bfd_target hppa_som_vec =
   14,                          /* AR_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 1509bebd6c1cc52cb988cc25a659b564e378c2b6..9c59ae86ad9f687405df4a3557665e47d44b7b6d 100644 (file)
@@ -1262,7 +1262,6 @@ srec_print_symbol (bfd *abfd,
 #define srec_bfd_relax_section                   bfd_generic_relax_section
 #define srec_bfd_gc_sections                     bfd_generic_gc_sections
 #define srec_bfd_lookup_section_flags            bfd_generic_lookup_section_flags
-#define srec_bfd_merge_sections                          bfd_generic_merge_sections
 #define srec_bfd_is_group_section                bfd_generic_is_group_section
 #define srec_bfd_group_name                      bfd_generic_group_name
 #define srec_bfd_discard_group                   bfd_generic_discard_group
@@ -1292,6 +1291,7 @@ const bfd_target srec_vec =
   16,                          /* AR_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
@@ -1347,6 +1347,7 @@ const bfd_target symbolsrec_vec =
   16,                          /* AR_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index ee629bbe9df019ff73e3edc805e7f2448b30730f..89557a060e8c7b6f6511f0faac2363ec1b592fbe 100644 (file)
@@ -138,6 +138,11 @@ DESCRIPTION
 .#ifndef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
 .#define TARGET_KEEP_UNUSED_SECTION_SYMBOLS true
 .#endif
+.
+.{* Define to TRUE if section merging is supported by the backend.  *}
+.#ifndef TARGET_MERGE_SECTIONS
+.#define TARGET_MERGE_SECTIONS false
+.#endif
 .
        This is the structure which defines the type of BFD this is.  The
        <<xvec>> member of the struct <<bfd>> itself points here.  Each
@@ -220,6 +225,9 @@ CODE_FRAGMENT
 . {* TRUE if unused section symbols should be kept.  *}
 .  bool keep_unused_section_symbols;
 .
+.  {* TRUE if section merging is supported by the backend.  *}
+.  bool merge_sections;
+.
 .  {* Entries for byte swapping for data. These are different from the
 .     other entry points, since they don't take a BFD as the first argument.
 .     Certain other handlers could do the same.  *}
@@ -461,7 +469,6 @@ BFD_JUMP_TABLE macros.
 .  NAME##_bfd_link_check_relocs, \
 .  NAME##_bfd_gc_sections, \
 .  NAME##_bfd_lookup_section_flags, \
-.  NAME##_bfd_merge_sections, \
 .  NAME##_bfd_is_group_section, \
 .  NAME##_bfd_group_name, \
 .  NAME##_bfd_discard_group, \
@@ -517,9 +524,6 @@ BFD_JUMP_TABLE macros.
 .  bool (*_bfd_lookup_section_flags) (struct bfd_link_info *,
 .                                    struct flag_info *, asection *);
 .
-.  {* Attempt to merge SEC_MERGE sections.  *}
-.  bool (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
-.
 .  {* Is this section a member of a group?  *}
 .  bool (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
 .
index 4ac61166d0eb34f4ab2670284efeaae6e38d364c..99d40fe936ca62d3e7be5a00b7689af39897ca7e 100644 (file)
@@ -963,7 +963,6 @@ tekhex_print_symbol (bfd *abfd,
 #define tekhex_bfd_relax_section                   bfd_generic_relax_section
 #define tekhex_bfd_gc_sections                     bfd_generic_gc_sections
 #define tekhex_bfd_lookup_section_flags                    bfd_generic_lookup_section_flags
-#define tekhex_bfd_merge_sections                  bfd_generic_merge_sections
 #define tekhex_bfd_is_group_section                bfd_generic_is_group_section
 #define tekhex_bfd_group_name                      bfd_generic_group_name
 #define tekhex_bfd_discard_group                   bfd_generic_discard_group
@@ -993,6 +992,7 @@ const bfd_target tekhex_vec =
   16,                          /* AR_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index f208fc814c0e112be30abc524ceae313d84fe69b..054224db526f5a93b438eb15258c42f0fa4cedb4 100644 (file)
@@ -270,6 +270,7 @@ const bfd_target core_trad_vec =
     16,                                /* ar_max_namelen */
     0,                         /* match priority.  */
     TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+    false,                     /* merge sections */
     NO_GET64, NO_GETS64, NO_PUT64,     /* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 16 bit data */
index 70cc7c69412ec23ce562ad228a947e8be458a82e..9797a915b29596b0bf2cd14505cac3616d009359 100644 (file)
@@ -392,6 +392,7 @@ const bfd_target verilog_vec =
   16,                          /* AR_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  false,                       /* merge sections */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 277cba0107eb80c428f78127d6ea4240f1e33ef2..0e557563efb2f120ea3c6bd09e602f7f551c0e00 100644 (file)
@@ -10201,7 +10201,6 @@ bfd_vms_get_data (bfd *abfd)
 #define alpha_vms_bfd_relax_section bfd_generic_relax_section
 #define alpha_vms_bfd_gc_sections bfd_generic_gc_sections
 #define alpha_vms_bfd_lookup_section_flags bfd_generic_lookup_section_flags
-#define alpha_vms_bfd_merge_sections bfd_generic_merge_sections
 #define alpha_vms_bfd_is_group_section bfd_generic_is_group_section
 #define alpha_vms_bfd_group_name bfd_generic_group_name
 #define alpha_vms_bfd_discard_group bfd_generic_discard_group
@@ -10244,6 +10243,7 @@ const bfd_target alpha_vms_vec =
   15,                          /* ar_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  TARGET_MERGE_SECTIONS,
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
   bfd_getl16, bfd_getl_signed_16, bfd_putl16,
index 1206d7e24d45eb51bff423655fa536842e970055..2ffb4e4acf9450ac9c629f6700711cc77eba94eb 100644 (file)
@@ -2425,6 +2425,7 @@ const bfd_target alpha_vms_lib_txt_vec =
   15,                          /* ar_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  false,                       /* merge sections */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
   bfd_getl16, bfd_getl_signed_16, bfd_putl16,
index db4b08147a83df9d1faad8542f512328199d2108..a76b89e0b89ce560e267bb38ac0dfbc842325a31 100644 (file)
@@ -805,6 +805,7 @@ const bfd_target wasm_vec =
   255,                         /* AR_max_namelen.  */
   0,                           /* Match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  false,                       /* merge sections */
   /* Routines to byte-swap various sized integers from the data sections.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index 516ee88e85ccff9bbd2993dd643c25b7ee459a76..19bea8ad3c6ce8b4dd3d202ffc0342ee4ea56bf2 100644 (file)
@@ -46,7 +46,6 @@
 #define bfd_sym_bfd_relax_section                  bfd_generic_relax_section
 #define bfd_sym_bfd_gc_sections                            bfd_generic_gc_sections
 #define bfd_sym_bfd_lookup_section_flags           bfd_generic_lookup_section_flags
-#define bfd_sym_bfd_merge_sections                 bfd_generic_merge_sections
 #define bfd_sym_bfd_is_group_section               bfd_generic_is_group_section
 #define bfd_sym_bfd_group_name                     bfd_generic_group_name
 #define bfd_sym_bfd_discard_group                  bfd_generic_discard_group
@@ -2299,6 +2298,7 @@ const bfd_target sym_vec =
   16,                          /* AR_max_namelen.  */
   0,                           /* match priority.  */
   TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  false,                       /* TARGET_MERGE_SECTIONS */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 0c47d09977f4b9bb81274836afb07488946683a4..00fe0f8c7c831c840a9e37c149b0a835e816d957 100644 (file)
@@ -1017,6 +1017,9 @@ struct bfd_link_order_reloc
 /* Allocate a new link_order for a section.  */
 extern struct bfd_link_order *bfd_new_link_order (bfd *, asection *);
 
+/* Attempt to merge SEC_MERGE sections.  */
+extern bool bfd_merge_sections (bfd *, struct bfd_link_info *);
+
 struct bfd_section_already_linked;
 
 extern bool bfd_section_already_linked_table_init (void);