Tidy ld/ldmisc.c
authorAlan Modra <amodra@gmail.com>
Mon, 9 Sep 2019 05:53:27 +0000 (15:23 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 11 Sep 2019 04:13:29 +0000 (13:43 +0930)
The idea here is to not use elf-bfd.h and coff-bfd.h in generic linker
code.

bfd/
* targets.c (struct bfd_target): Add _bfd_group_name.
(BFD_JUMP_TABLE): Likewise.
* coffgen.c (bfd_coff_group_name): New function.
* elf.c (bfd_elf_group_name): New function.
* linker.c (_bfd_nolink_bfd_group_name): New function.
* section.c (bfd_generic_group_name): New function.
* elf-bfd.h (bfd_elf_group_name): Declare.
* libbfd-in.h (_bfd_nolink_bfd_group_name): Declare.
* libcoff-in.h (bfd_coff_group_name): Declare.
* aout-target.h (MY_bfd_group_name): Define.
* aout-tic30.c (MY_bfd_group_name): Define.
* bfd.c (bfd_group_name): Define.
* binary.c (binary_bfd_group_name): Define.
* coff-alpha.c (_bfd_ecoff_bfd_group_name): Define.
* coff-mips.c (_bfd_ecoff_bfd_group_name): Define.
* coff-rs6000.c (_bfd_xcoff_bfd_group_name): Define.
* coffcode.h (coff_bfd_group_name): Define.
* elfxx-target.h (bfd_elfNN_bfd_group_name): Define.
* i386msdos.c (msdos_bfd_group_name): Define.
* ihex.c (ihex_bfd_group_name): Define.
* mach-o-target.c (bfd_mach_o_bfd_group_name): Define.
* mmo.c (mmo_bfd_group_name): Define.
* pef.c (bfd_pef_bfd_group_name): Define.
* plugin.c (bfd_plugin_bfd_group_name): Define.
* ppcboot.c (ppcboot_bfd_group_name): Define.
* som.c (som_bfd_group_name): Define.
* srec.c (srec_bfd_group_name): Define.
* tekhex.c (tekhex_bfd_group_name): Define.
* verilog.c (verilog_bfd_group_name): Define.
* vms-alpha.c (vms_bfd_group_name, alpha_vms_bfd_group_name): Define.
* xsym.c (bfd_sym_bfd_group_name): Define.
* coff64-rs6000.c (rs6000_xcoff64_vec): Init new field.
(rs6000_xcoff64_aix_vec): Likewise.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* libcoff.h: Regenerate.
ld/
* ldmisc.c: Don't #include elf-bfd.h or coff-bfd.h.
(vfinfo): Use bfd_group_name.

37 files changed:
bfd/ChangeLog
bfd/aout-target.h
bfd/aout-tic30.c
bfd/bfd-in2.h
bfd/bfd.c
bfd/binary.c
bfd/coff-alpha.c
bfd/coff-mips.c
bfd/coff-rs6000.c
bfd/coff64-rs6000.c
bfd/coffcode.h
bfd/coffgen.c
bfd/elf-bfd.h
bfd/elf.c
bfd/elfxx-target.h
bfd/i386msdos.c
bfd/ihex.c
bfd/libbfd-in.h
bfd/libbfd.h
bfd/libcoff-in.h
bfd/libcoff.h
bfd/linker.c
bfd/mach-o-target.c
bfd/mmo.c
bfd/pef.c
bfd/plugin.c
bfd/ppcboot.c
bfd/section.c
bfd/som.c
bfd/srec.c
bfd/targets.c
bfd/tekhex.c
bfd/verilog.c
bfd/vms-alpha.c
bfd/xsym.c
ld/ChangeLog
ld/ldmisc.c

index 8b6b843a6f58de46d47db78c868e39a0e6459bee..f498a91b88f9b54b11620ee8ab2c56654837a69e 100644 (file)
@@ -1,3 +1,42 @@
+2019-09-11  Alan Modra  <amodra@gmail.com>
+
+       * targets.c (struct bfd_target): Add _bfd_group_name.
+       (BFD_JUMP_TABLE): Likewise.
+       * coffgen.c (bfd_coff_group_name): New function.
+       * elf.c (bfd_elf_group_name): New function.
+       * linker.c (_bfd_nolink_bfd_group_name): New function.
+       * section.c (bfd_generic_group_name): New function.
+       * elf-bfd.h (bfd_elf_group_name): Declare.
+       * libbfd-in.h (_bfd_nolink_bfd_group_name): Declare.
+       * libcoff-in.h (bfd_coff_group_name): Declare.
+       * aout-target.h (MY_bfd_group_name): Define.
+       * aout-tic30.c (MY_bfd_group_name): Define.
+       * bfd.c (bfd_group_name): Define.
+       * binary.c (binary_bfd_group_name): Define.
+       * coff-alpha.c (_bfd_ecoff_bfd_group_name): Define.
+       * coff-mips.c (_bfd_ecoff_bfd_group_name): Define.
+       * coff-rs6000.c (_bfd_xcoff_bfd_group_name): Define.
+       * coffcode.h (coff_bfd_group_name): Define.
+       * elfxx-target.h (bfd_elfNN_bfd_group_name): Define.
+       * i386msdos.c (msdos_bfd_group_name): Define.
+       * ihex.c (ihex_bfd_group_name): Define.
+       * mach-o-target.c (bfd_mach_o_bfd_group_name): Define.
+       * mmo.c (mmo_bfd_group_name): Define.
+       * pef.c (bfd_pef_bfd_group_name): Define.
+       * plugin.c (bfd_plugin_bfd_group_name): Define.
+       * ppcboot.c (ppcboot_bfd_group_name): Define.
+       * som.c (som_bfd_group_name): Define.
+       * srec.c (srec_bfd_group_name): Define.
+       * tekhex.c (tekhex_bfd_group_name): Define.
+       * verilog.c (verilog_bfd_group_name): Define.
+       * vms-alpha.c (vms_bfd_group_name, alpha_vms_bfd_group_name): Define.
+       * xsym.c (bfd_sym_bfd_group_name): Define.
+       * coff64-rs6000.c (rs6000_xcoff64_vec): Init new field.
+       (rs6000_xcoff64_aix_vec): Likewise.
+       * bfd-in2.h: Regenerate.
+       * libbfd.h: Regenerate.
+       * libcoff.h: Regenerate.
+
 2019-09-10  Nick Clifton  <nickc@redhat.com>
 
        PR 24907
index 99a82bb57a27c86c2f36b37bc3c156628f7685d7..58de28faba8bed36e0462117b964fc9149990628 100644 (file)
@@ -502,6 +502,9 @@ MY_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
 #ifndef MY_bfd_is_group_section
 #define MY_bfd_is_group_section bfd_generic_is_group_section
 #endif
+#ifndef MY_bfd_group_name
+#define MY_bfd_group_name bfd_generic_group_name
+#endif
 #ifndef MY_bfd_discard_group
 #define MY_bfd_discard_group bfd_generic_discard_group
 #endif
index 49463181f0957af2c2152e746fad3337f29b664a..7cc6ba5f6cd2d06458b5f761498061dc3623890d 100644 (file)
@@ -991,6 +991,9 @@ tic30_aout_set_arch_mach (bfd *abfd,
 #ifndef MY_bfd_is_group_section
 #define MY_bfd_is_group_section bfd_generic_is_group_section
 #endif
+#ifndef MY_bfd_group_name
+#define MY_bfd_group_name bfd_generic_group_name
+#endif
 #ifndef MY_bfd_discard_group
 #define MY_bfd_discard_group bfd_generic_discard_group
 #endif
index 690ba9a6fdbc838596ac8fb2679a952c4b037c79..dc9b5daf9460cf067369f0d6069106999fb48850 100644 (file)
@@ -2002,6 +2002,8 @@ bfd_boolean bfd_copy_private_section_data
                  (ibfd, isection, obfd, osection))
 bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
 
+const char *bfd_generic_group_name (bfd *, const asection *sec);
+
 bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
 
 /* Extracted from archures.c.  */
@@ -7477,6 +7479,9 @@ bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
 #define bfd_is_group_section(abfd, sec) \
        BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
 
+#define bfd_group_name(abfd, sec) \
+       BFD_SEND (abfd, _bfd_group_name, (abfd, sec))
+
 #define bfd_discard_group(abfd, sec) \
        BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
 
@@ -7908,6 +7913,7 @@ typedef struct bfd_target
   NAME##_bfd_lookup_section_flags, \
   NAME##_bfd_merge_sections, \
   NAME##_bfd_is_group_section, \
+  NAME##_bfd_group_name, \
   NAME##_bfd_discard_group, \
   NAME##_section_already_linked, \
   NAME##_bfd_define_common_symbol, \
@@ -7966,6 +7972,9 @@ typedef struct bfd_target
   /* Is this section a member of a group?  */
   bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
 
+  /* The group name, if section is a member of a group.  */
+  const char *(*_bfd_group_name) (bfd *, const struct bfd_section *);
+
   /* Discard members of a group.  */
   bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
 
index f56a8d342fba07d3f8e992f06361c6f221dc0338..f14ec253fb795632fec86ec56ede1d72a42349ca 100644 (file)
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -1862,6 +1862,9 @@ DESCRIPTION
 .#define bfd_is_group_section(abfd, sec) \
 .      BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
 .
+.#define bfd_group_name(abfd, sec) \
+.      BFD_SEND (abfd, _bfd_group_name, (abfd, sec))
+.
 .#define bfd_discard_group(abfd, sec) \
 .      BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
 .
index 37f5f9f7363e7349612cdfc8bc579369bbabbc0c..eb87d11b6ea0dd9d46fec43c6793a6cb92dd2c7c 100644 (file)
@@ -307,6 +307,7 @@ binary_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #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
 #define binary_section_already_linked            _bfd_generic_section_already_linked
 #define binary_bfd_define_common_symbol                   bfd_generic_define_common_symbol
index 726d20bfbbf5240e5169e47799017a71601de7aa..ee4a3eeded70f66e1d786e35e582839b75c8436d 100644 (file)
@@ -2390,6 +2390,7 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data =
 #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
 #define _bfd_ecoff_section_already_linked \
   _bfd_coff_section_already_linked
index 3ada9ceb0f99a0806d85f70b27f66cc599c78b5e..a2dd9e1c4fc10edde468d55eb832e0ca80c0e1e2 100644 (file)
@@ -1416,6 +1416,7 @@ static const struct ecoff_backend_data mips_ecoff_backend_data =
 #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
 #define _bfd_ecoff_section_already_linked \
   _bfd_coff_section_already_linked
index 85e90a02545a8d2133355edd8a656d7d43da7de8..4620254aaef9facbf7a998b04e5e1963276f45f0 100644 (file)
@@ -4057,6 +4057,7 @@ const struct xcoff_dwsect_name xcoff_dwsect_names[] = {
 #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
 #define _bfd_xcoff_section_already_linked _bfd_generic_section_already_linked
 #define _bfd_xcoff_bfd_define_common_symbol _bfd_xcoff_define_common_symbol
index 6f0e358f4acc6d3277257f20f22b051c10bd135b..b6b189fd2d730543c1851cfbdd8abd25ba27d365 100644 (file)
@@ -2778,6 +2778,7 @@ const bfd_target rs6000_xcoff64_vec =
     bfd_generic_lookup_section_flags,
     bfd_generic_merge_sections,
     bfd_generic_is_group_section,
+    bfd_generic_group_name,
     bfd_generic_discard_group,
     _bfd_generic_section_already_linked,
     _bfd_xcoff_define_common_symbol,
@@ -3040,6 +3041,7 @@ const bfd_target rs6000_xcoff64_aix_vec =
     bfd_generic_lookup_section_flags,
     bfd_generic_merge_sections,
     bfd_generic_is_group_section,
+    bfd_generic_group_name,
     bfd_generic_discard_group,
     _bfd_generic_section_already_linked,
     _bfd_xcoff_define_common_symbol,
index c3f13300a43c97dd357fc434506b983f958e9c2d..054e45c960b2de3c5edc6d222183b459294c1ea4 100644 (file)
@@ -5751,6 +5751,10 @@ static bfd_coff_backend_data bigobj_swap_table =
 #define coff_bfd_is_group_section          bfd_generic_is_group_section
 #endif
 
+#ifndef coff_bfd_group_name
+#define coff_bfd_group_name                bfd_coff_group_name
+#endif
+
 #ifndef coff_bfd_discard_group
 #define coff_bfd_discard_group             bfd_generic_discard_group
 #endif
index 5d61f39c8ce5e4460bb1000679bc63cb00a4cf38..209b01d5d01a1fcb948c766e39fd4e075ab00e8d 100644 (file)
@@ -3155,3 +3155,14 @@ bfd_coff_gc_sections (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
   /* ... and mark SEC_EXCLUDE for those that go.  */
   return coff_gc_sweep (abfd, info);
 }
+
+/* Return name used to identify a comdat group.  */
+
+const char *
+bfd_coff_group_name (bfd *abfd, const asection *sec)
+{
+  struct coff_comdat_info *ci = bfd_coff_get_comdat_section (abfd, sec);
+  if (ci != NULL)
+    return ci->name;
+  return NULL;
+}
index 521d35debb05009b9a818b01626b743acd0c022b..4458ff7b2ae61c78ab13c30afa52110487b41027 100644 (file)
@@ -2111,6 +2111,8 @@ extern bfd_boolean _bfd_elf_match_sections_by_type
   (bfd *, const asection *, bfd *, const asection *);
 extern bfd_boolean bfd_elf_is_group_section
   (bfd *, const struct bfd_section *);
+extern const char *bfd_elf_group_name
+  (bfd *, const struct bfd_section *);
 extern bfd_boolean _bfd_elf_section_already_linked
   (bfd *, asection *, struct bfd_link_info *);
 extern void bfd_elf_set_group_contents
index 5a061c91107024753e5da46dbd8a9cc440223365..ec4c643d59ad396097a8d0ffcc220c54293c6348 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -974,6 +974,14 @@ bfd_elf_is_group_section (bfd *abfd ATTRIBUTE_UNUSED, const asection *sec)
   return elf_next_in_group (sec) != NULL;
 }
 
+const char *
+bfd_elf_group_name (bfd *abfd ATTRIBUTE_UNUSED, const asection *sec)
+{
+  if (elf_sec_group (sec) != NULL)
+    return elf_group_name (sec);
+  return NULL;
+}
+
 static char *
 convert_debug_to_zdebug (bfd *abfd, const char *name)
 {
index 0b737a4ffa9061e1f58e2e96239cf9901c9fbf2b..78a1f6314d09e124a9f36166eacd863e42853d28 100644 (file)
 #define bfd_elfNN_bfd_is_group_section bfd_elf_is_group_section
 #endif
 
+#ifndef bfd_elfNN_bfd_group_name
+#define bfd_elfNN_bfd_group_name bfd_elf_group_name
+#endif
+
 #ifndef bfd_elfNN_bfd_discard_group
 #define bfd_elfNN_bfd_discard_group bfd_generic_discard_group
 #endif
index f70a6f364d1cd451e37074727afa538ff896a67a..9c4ab4cecec63465eacd3b2b3215df3c0a64021c 100644 (file)
@@ -226,6 +226,7 @@ msdos_set_section_contents (bfd *abfd,
 #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
 #define msdos_section_already_linked \
   _bfd_generic_section_already_linked
index 101e0a76155fc48f95312c08307739cf9c1ee5eb..09149089bebed811b5c462eff9b01426a7ecedad 100644 (file)
@@ -962,6 +962,7 @@ ihex_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #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
 #define ihex_section_already_linked              _bfd_generic_section_already_linked
 #define ihex_bfd_define_common_symbol            bfd_generic_define_common_symbol
index cac4d3b022e9273aefdd50640d2cbed064d1352a..f498ffd5e7a295dac69d25982597e83038e66537 100644 (file)
@@ -523,6 +523,8 @@ extern bfd_boolean _bfd_nolink_bfd_lookup_section_flags
 #define _bfd_nolink_bfd_merge_sections _bfd_bool_bfd_link_false_error
 extern bfd_boolean _bfd_nolink_bfd_is_group_section
   (bfd *, const asection *) ATTRIBUTE_HIDDEN;
+extern const char *_bfd_nolink_bfd_group_name
+  (bfd *, const asection *) ATTRIBUTE_HIDDEN;
 extern bfd_boolean _bfd_nolink_bfd_discard_group
   (bfd *, asection *) ATTRIBUTE_HIDDEN;
 extern struct bfd_link_hash_table *_bfd_nolink_bfd_link_hash_table_create
index aabe247068e8c80b69b890c12bedb6e0ba8027f7..2ea167ecb698671d45e440d558df47ff1adfe048 100644 (file)
@@ -528,6 +528,8 @@ extern bfd_boolean _bfd_nolink_bfd_lookup_section_flags
 #define _bfd_nolink_bfd_merge_sections _bfd_bool_bfd_link_false_error
 extern bfd_boolean _bfd_nolink_bfd_is_group_section
   (bfd *, const asection *) ATTRIBUTE_HIDDEN;
+extern const char *_bfd_nolink_bfd_group_name
+  (bfd *, const asection *) ATTRIBUTE_HIDDEN;
 extern bfd_boolean _bfd_nolink_bfd_discard_group
   (bfd *, asection *) ATTRIBUTE_HIDDEN;
 extern struct bfd_link_hash_table *_bfd_nolink_bfd_link_hash_table_create
index c75c9ac595fcf2f682130408de08b4dd6a2bea1d..783d54a88a4c5cc867a477aafc9e88a9a547543d 100644 (file)
@@ -577,7 +577,8 @@ extern bfd_boolean _bfd_coff_reloc_link_order
    struct bfd_link_order *);
 extern bfd_boolean bfd_coff_gc_sections
   (bfd *, struct bfd_link_info *);
-
+extern const char *bfd_coff_group_name
+  (bfd *, const asection *);
 
 #define coff_get_section_contents_in_window \
   _bfd_generic_get_section_contents_in_window
index d0e3d0dd903a617acd879a02c899b0ed8b98404f..f2613c2e77ceb3546d38b9a649a73161b52341a6 100644 (file)
@@ -581,7 +581,8 @@ extern bfd_boolean _bfd_coff_reloc_link_order
    struct bfd_link_order *);
 extern bfd_boolean bfd_coff_gc_sections
   (bfd *, struct bfd_link_info *);
-
+extern const char *bfd_coff_group_name
+  (bfd *, const asection *);
 
 #define coff_get_section_contents_in_window \
   _bfd_generic_get_section_contents_in_window
index 1b71fcf8f0d59f0de0363300394425e7ad7ee676..f6eef93259bcb24a9a9a3159e49d138f1f6aa9e9 100644 (file)
@@ -3461,6 +3461,13 @@ _bfd_nolink_bfd_is_group_section (bfd *abfd,
   return _bfd_bool_bfd_false_error (abfd);
 }
 
+const char *
+_bfd_nolink_bfd_group_name (bfd *abfd,
+                           const asection *sec ATTRIBUTE_UNUSED)
+{
+  return _bfd_ptr_bfd_null_error (abfd);
+}
+
 bfd_boolean
 _bfd_nolink_bfd_discard_group (bfd *abfd, asection *sec ATTRIBUTE_UNUSED)
 {
index e02dd790182a1a5d36dcc6ec07dff5d8de50ee50..e15e88f353cb46005290a379659b284c0d480aed 100644 (file)
@@ -52,6 +52,7 @@
 #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
 #define bfd_mach_o_section_already_linked            _bfd_generic_section_already_linked
 #define bfd_mach_o_bfd_define_common_symbol          bfd_generic_define_common_symbol
index bd4303c531f0d8dc55c6983efbc4d5bed98a366f..f48f9868fee2854cefbea4dbdcc302b4ca4f7d86 100644 (file)
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -3311,6 +3311,7 @@ mmo_write_object_contents (bfd *abfd)
 #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
 #define mmo_section_already_linked \
   _bfd_generic_section_already_linked
index 8c66ca477d41a9f8ac3dc60d276b820bccb0e828..effa076405310933f21bea67786b2e3e9eec9784 100644 (file)
--- a/bfd/pef.c
+++ b/bfd/pef.c
@@ -56,6 +56,7 @@
 #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
 #define bfd_pef_section_already_linked             _bfd_generic_section_already_linked
 #define bfd_pef_bfd_define_common_symbol           bfd_generic_define_common_symbol
index 5f760e9c4297131c581f9f568ea98c754ddd41ee..ca26005055e6419455df126c737f40c1b9702ec1 100644 (file)
@@ -102,6 +102,7 @@ dlerror (void)
 #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
 #define bfd_plugin_section_already_linked            _bfd_generic_section_already_linked
 #define bfd_plugin_bfd_define_common_symbol          bfd_generic_define_common_symbol
index 99db8234d1a7d36ff13c4f5ccca1e34e21dc1c32..02132e7801b5f76cff8300cb864809ee50531d97 100644 (file)
@@ -456,6 +456,7 @@ ppcboot_bfd_print_private_bfd_data (bfd *abfd, void * farg)
 #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
 #define ppcboot_section_already_linked \
   _bfd_generic_section_already_linked
index 64636334ac9316e31894fa2abf5218091f2253d5..74feb73be9061529b7cbdca72ee6c523862a8e12 100644 (file)
@@ -1662,6 +1662,24 @@ bfd_generic_is_group_section (bfd *abfd ATTRIBUTE_UNUSED,
   return FALSE;
 }
 
+/*
+FUNCTION
+       bfd_generic_group_name
+
+SYNOPSIS
+       const char *bfd_generic_group_name (bfd *, const asection *sec);
+
+DESCRIPTION
+       Returns group name if @var{sec} is a member of a group.
+*/
+
+const char *
+bfd_generic_group_name (bfd *abfd ATTRIBUTE_UNUSED,
+                       const asection *sec ATTRIBUTE_UNUSED)
+{
+  return NULL;
+}
+
 /*
 FUNCTION
        bfd_generic_discard_group
index 0d17b3278a4db5479829a410742c0bc1b823bcc0..02a99a336073adfc0242945c1122143df4e30702 100644 (file)
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -6756,6 +6756,7 @@ som_bfd_link_split_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
 #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
 #define som_section_already_linked             _bfd_generic_section_already_linked
 #define som_bfd_define_common_symbol           bfd_generic_define_common_symbol
index 77eaecd11132533f9ce19c3ebcc9b489865ecdb1..218276837cc19a58abd322c1bb1f85914cf5215d 100644 (file)
@@ -1275,6 +1275,7 @@ srec_print_symbol (bfd *abfd,
 #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
 #define srec_section_already_linked              _bfd_generic_section_already_linked
 #define srec_bfd_define_common_symbol            bfd_generic_define_common_symbol
index 6b85c6279805290507fe6dca9dd465d02afaa019..09956994ec9247cb977c2e2f5739e191227eb5cc 100644 (file)
@@ -462,6 +462,7 @@ BFD_JUMP_TABLE macros.
 .  NAME##_bfd_lookup_section_flags, \
 .  NAME##_bfd_merge_sections, \
 .  NAME##_bfd_is_group_section, \
+.  NAME##_bfd_group_name, \
 .  NAME##_bfd_discard_group, \
 .  NAME##_section_already_linked, \
 .  NAME##_bfd_define_common_symbol, \
@@ -520,6 +521,9 @@ BFD_JUMP_TABLE macros.
 .  {* Is this section a member of a group?  *}
 .  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
 .
+.  {* The group name, if section is a member of a group.  *}
+.  const char *(*_bfd_group_name) (bfd *, const struct bfd_section *);
+.
 .  {* Discard members of a group.  *}
 .  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
 .
index 386e33b24e479516331fef00bfbd9efef0258cae..fb03629182c903d18dc6a9258112189a81f37156 100644 (file)
@@ -978,6 +978,7 @@ tekhex_print_symbol (bfd *abfd,
 #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
 #define tekhex_section_already_linked              _bfd_generic_section_already_linked
 #define tekhex_bfd_define_common_symbol                    bfd_generic_define_common_symbol
index 252e240277ab65d6d11398508d2e80ee09fca4d3..a785e50a00a4a5f4cfa77c36ed760313f8a0c46c 100644 (file)
@@ -368,6 +368,7 @@ verilog_mkobject (bfd *abfd)
 #define verilog_bfd_gc_sections                             bfd_generic_gc_sections
 #define verilog_bfd_merge_sections                  bfd_generic_merge_sections
 #define verilog_bfd_is_group_section                bfd_generic_is_group_section
+#define verilog_bfd_group_name                      bfd_generic_group_name
 #define verilog_bfd_discard_group                   bfd_generic_discard_group
 #define verilog_section_already_linked              _bfd_generic_section_already_linked
 #define verilog_bfd_link_hash_table_create          _bfd_generic_link_hash_table_create
index 4e6f9c1c429c0dc539843fd4b8466896bbfa5efc..69822a2ce6a4c379e3c2b5c555846de0aa84a695 100644 (file)
@@ -9504,6 +9504,7 @@ bfd_vms_get_data (bfd *abfd)
 #define vms_bfd_copy_link_hash_symbol_type \
   _bfd_generic_copy_link_hash_symbol_type
 #define vms_bfd_is_group_section         bfd_generic_is_group_section
+#define vms_bfd_group_name               bfd_generic_group_name
 #define vms_bfd_discard_group            bfd_generic_discard_group
 #define vms_section_already_linked       _bfd_generic_section_already_linked
 #define vms_bfd_define_common_symbol     bfd_generic_define_common_symbol
@@ -9550,6 +9551,7 @@ bfd_vms_get_data (bfd *abfd)
 #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
 #define alpha_vms_section_already_linked \
   _bfd_generic_section_already_linked
index 67d91cb077d572c195c34997bf7b6d9ed9d7910f..cf4a67167a31acb13c2404430410a69a7f53c7e5 100644 (file)
@@ -48,6 +48,7 @@
 #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
 #define bfd_sym_section_already_linked             _bfd_generic_section_already_linked
 #define bfd_sym_bfd_define_common_symbol           bfd_generic_define_common_symbol
index d24973e0fa529c76756f7a5ba614400373a27399..955d460d400085cfb30c8a42fecb78af55b5c4ba 100644 (file)
@@ -1,3 +1,8 @@
+2019-09-11  Alan Modra  <amodra@gmail.com>
+
+       * ldmisc.c: Don't #include elf-bfd.h or coff-bfd.h.
+       (vfinfo): Use bfd_group_name.
+
 2019-09-11  Alan Modra  <amodra@gmail.com>
 
        * plugin.c (asymbol_from_plugin_symbol): Move code handling
index f7ab7b5d99edd47c71235ba1864938be1df9bbc0..319f247e3bec7c42cb02d784138fa8c52c5d9783 100644 (file)
@@ -35,8 +35,6 @@
 #include "ldlex.h"
 #include "ldmain.h"
 #include "ldfile.h"
-#include "elf-bfd.h"
-#include "coff-bfd.h"
 
 /*
  %% literal %
@@ -431,26 +429,18 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning)
                  /* section name from a section */
                  asection *sec;
                  bfd *abfd;
-                 const char *group = NULL;
-                 struct coff_comdat_info *ci;
 
                  fmt++;
                  sec = (asection *) args[arg_no].p;
                  ++arg_count;
-                 abfd = sec->owner;
                  fprintf (fp, "%s", sec->name);
-                 if (abfd != NULL
-                     && bfd_get_flavour (abfd) == bfd_target_elf_flavour
-                     && elf_next_in_group (sec) != NULL
-                     && (sec->flags & SEC_GROUP) == 0)
-                   group = elf_group_name (sec);
-                 else if (abfd != NULL
-                          && bfd_get_flavour (abfd) == bfd_target_coff_flavour
-                          && (ci = bfd_coff_get_comdat_section (sec->owner,
-                                                                sec)) != NULL)
-                   group = ci->name;
-                 if (group != NULL)
-                   fprintf (fp, "[%s]", group);
+                 abfd = sec->owner;
+                 if (abfd != NULL)
+                   {
+                     const char *group = bfd_group_name (abfd, sec);
+                     if (group != NULL)
+                       fprintf (fp, "[%s]", group);
+                   }
                }
              else if (*fmt == 'B')
                {
This page took 0.048251 seconds and 4 git commands to generate.