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] new bfd hook: additional link map text


This is an RFC for a new bfd target hook "additional_link_map_text"
that's used to give targets a way to add target-specific text to the
end of the linker's map file (-Map).  This extra text is added at the
end of the map file, in case there are programs which parse map files
(where the extra text might confuse the parser, if encountered early).

Tested with --enable-targets=all although I had to manually fix
today's AVR reloc patch bug.

I have a follow-up patch that adds a new feature to the rx target
which includes link map text, too...

Comments?

[bfd]
	* aout-adobe.c: Add additional_link_map_text hook.
	* aout-target.h: Likewise.
	* aout-tic30.c: Likewise.
	* bfd-in2.h: Likewise.
	* binary.c: Likewise.
	* bout.c: Likewise.
	* coff-alpha.c: Likewise.
	* coff-mips.c: Likewise.
	* coff-rs6000.c: Likewise.
	* coff64-rs6000.c: Likewise.
	* coffcode.h: Likewise.
	* elf32-rx.c: Likewise.
	* elfxx-target.h: Likewise.
	* i386msdos.c: Likewise.
	* i386os9k.c: Likewise.
	* ieee.c: Likewise.
	* ihex.c: Likewise.
	* libbfd-in.h: Likewise.
	* mach-o-target.c: Likewise.
	* mmo.c: Likewise.
	* nlm-target.h: Likewise.
	* oasys.c: Likewise.
	* pef.c: Likewise.
	* ppcboot.c: Likewise.
	* som.c: Likewise.
	* srec.c: Likewise.
	* targets.c: Likewise.
	* tekhex.c: Likewise.
	* versados.c: Likewise.
	* vms-alpha.c: Likewise.
	* xsym.c: Likewise.

	* linker.c (bfd_generic_additional_link_map_text,
	bfd_additional_link_map_text): New.
	* libbfd.h: Regenerate.

[ld]
	* ldlang.c (lang_map): Call bfd_additional_link_map_text().

diff --git a/bfd/aout-adobe.c b/bfd/aout-adobe.c
index 2516a8d..f5d0515 100644
--- a/bfd/aout-adobe.c
+++ b/bfd/aout-adobe.c
@@ -463,6 +463,7 @@ aout_adobe_sizeof_headers (bfd *ignore_abfd ATTRIBUTE_UNUSED,
 #define aout_32_bfd_discard_group	            bfd_generic_discard_group
 #define aout_32_section_already_linked              _bfd_generic_section_already_linked
 #define aout_32_bfd_define_common_symbol            bfd_generic_define_common_symbol
+#define aout_32_bfd_additional_link_map_text        bfd_generic_additional_link_map_text
 #define aout_32_bfd_link_hash_table_create          _bfd_generic_link_hash_table_create
 #define aout_32_bfd_link_hash_table_free            _bfd_generic_link_hash_table_free
 #define aout_32_bfd_link_add_symbols	            _bfd_generic_link_add_symbols
diff --git a/bfd/aout-target.h b/bfd/aout-target.h
index 9786f42..521181d 100644
--- a/bfd/aout-target.h
+++ b/bfd/aout-target.h
@@ -503,6 +503,9 @@ MY_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
 #ifndef MY_bfd_define_common_symbol
 #define MY_bfd_define_common_symbol bfd_generic_define_common_symbol
 #endif
+#ifndef MY_bfd_additional_link_map_text
+#define MY_bfd_additional_link_map_text bfd_generic_additional_link_map_text
+#endif
 #ifndef MY_bfd_reloc_type_lookup
 #define MY_bfd_reloc_type_lookup NAME (aout, reloc_type_lookup)
 #endif
diff --git a/bfd/aout-tic30.c b/bfd/aout-tic30.c
index 680ef61..ec3b3c9 100644
--- a/bfd/aout-tic30.c
+++ b/bfd/aout-tic30.c
@@ -961,6 +961,9 @@ tic30_aout_set_arch_mach (bfd *abfd,
 #ifndef MY_bfd_define_common_symbol
 #define MY_bfd_define_common_symbol bfd_generic_define_common_symbol
 #endif
+#ifndef MY_bfd_additional_link_map_text
+#define MY_bfd_additional_link_map_text bfd_generic_additional_link_map_text
+#endif
 #ifndef MY_bfd_reloc_type_lookup
 #define MY_bfd_reloc_type_lookup tic30_aout_reloc_type_lookup
 #endif
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index cd45d71..bc75552 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -7016,7 +7026,8 @@ typedef struct bfd_target
   NAME##_bfd_is_group_section, \
   NAME##_bfd_discard_group, \
   NAME##_section_already_linked, \
-  NAME##_bfd_define_common_symbol
+  NAME##_bfd_define_common_symbol, \
+  NAME##_bfd_additional_link_map_text
 
   int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
   bfd_byte *  (*_bfd_get_relocated_section_contents)
@@ -7079,6 +7090,11 @@ typedef struct bfd_target
   bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
                                             struct bfd_link_hash_entry *);
 
+  /* Let the backend print additional information about the output
+     BFD to the map file.  */
+  void        (*_bfd_additional_link_map_text)
+    (bfd *, struct bfd_link_info *, FILE *);
+
   /* Routines to handle dynamic symbols and relocs.  */
 #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
   NAME##_get_dynamic_symtab_upper_bound, \
@@ -7156,6 +7172,12 @@ bfd_boolean bfd_generic_define_common_symbol
 #define bfd_define_common_symbol(output_bfd, info, h) \
        BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
 
+void bfd_generic_additional_link_map_text
+   (bfd *output_bfd, struct bfd_link_info *info, FILE *mapfile);
+
+#define bfd_additional_link_map_text(output_bfd, info, mapfile) \
+       BFD_SEND (output_bfd, _bfd_additional_link_map_text, (output_bfd, info, mapfile))
+
 struct bfd_elf_version_tree * bfd_find_version_for_sym
    (struct bfd_elf_version_tree *verdefs,
     const char *sym_name, bfd_boolean *hide);
diff --git a/bfd/binary.c b/bfd/binary.c
index 13825d2..a699dca 100644
--- a/bfd/binary.c
+++ b/bfd/binary.c
@@ -304,6 +304,7 @@ binary_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #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
+#define binary_bfd_additional_link_map_text        bfd_generic_additional_link_map_text
 #define binary_bfd_link_hash_table_create         _bfd_generic_link_hash_table_create
 #define binary_bfd_link_hash_table_free           _bfd_generic_link_hash_table_free
 #define binary_bfd_link_just_syms                 _bfd_generic_link_just_syms
diff --git a/bfd/bout.c b/bfd/bout.c
index 2c19ecc..fb977e5 100644
--- a/bfd/bout.c
+++ b/bfd/bout.c
@@ -1391,6 +1391,7 @@ b_out_bfd_get_relocated_section_contents (bfd *output_bfd,
 #define b_out_bfd_discard_group                bfd_generic_discard_group
 #define b_out_section_already_linked           _bfd_generic_section_already_linked
 #define b_out_bfd_define_common_symbol         bfd_generic_define_common_symbol
+#define b_out_bfd_additional_link_map_text     bfd_generic_additional_link_map_text
 #define aout_32_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
 
 extern const bfd_target b_out_vec_little_host;
diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c
index 8c68b56..b28aa5e 100644
--- a/bfd/coff-alpha.c
+++ b/bfd/coff-alpha.c
@@ -2345,6 +2345,7 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data =
 #define _bfd_ecoff_section_already_linked \
   _bfd_coff_section_already_linked
 #define _bfd_ecoff_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define _bfd_ecoff_bfd_additional_link_map_text bfd_generic_additional_link_map_text
 
 const bfd_target ecoffalpha_little_vec =
 {
diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c
index 3a30d83..d5704d0 100644
--- a/bfd/coff-mips.c
+++ b/bfd/coff-mips.c
@@ -1362,6 +1362,7 @@ static const struct ecoff_backend_data mips_ecoff_backend_data =
 #define _bfd_ecoff_section_already_linked \
   _bfd_coff_section_already_linked
 #define _bfd_ecoff_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define _bfd_ecoff_bfd_additional_link_map_text bfd_generic_additional_link_map_text
 
 extern const bfd_target ecoff_big_vec;
 
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index d0b8eaf..1d59f8d 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -4075,6 +4075,7 @@ const struct xcoff_dwsect_name xcoff_dwsect_names[] = {
 #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
+#define _bfd_xcoff_bfd_additional_link_map_text bfd_generic_additional_link_map_text
 
 /* For dynamic symbols and relocs entry points.  */
 #define _bfd_xcoff_get_synthetic_symtab _bfd_nodynamic_get_synthetic_symtab
diff --git a/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c
index d660e3a..64d5c29 100644
--- a/bfd/coff64-rs6000.c
+++ b/bfd/coff64-rs6000.c
@@ -2751,6 +2751,7 @@ const bfd_target rs6000coff64_vec =
     bfd_generic_discard_group,
     _bfd_generic_section_already_linked,
     _bfd_xcoff_define_common_symbol,
+    bfd_generic_additional_link_map_text,
 
     /* Dynamic */
     _bfd_xcoff_get_dynamic_symtab_upper_bound,
@@ -3010,6 +3011,7 @@ const bfd_target aix5coff64_vec =
     bfd_generic_discard_group,
     _bfd_generic_section_already_linked,
     _bfd_xcoff_define_common_symbol,
+    bfd_generic_additional_link_map_text,
 
     /* Dynamic */
     _bfd_xcoff_get_dynamic_symtab_upper_bound,
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index 4994fb3..013a9cd 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -5959,6 +5959,10 @@ static bfd_coff_backend_data bigobj_swap_table =
 #define coff_bfd_define_common_symbol	    bfd_generic_define_common_symbol
 #endif
 
+#ifndef coff_bfd_additional_link_map_text
+#define coff_bfd_additional_link_map_text   bfd_generic_additional_link_map_text
+#endif
+
 #define CREATE_BIG_COFF_TARGET_VEC(VAR, NAME, EXTRA_O_FLAGS, EXTRA_S_FLAGS, UNDER, ALTERNATIVE, SWAP_TABLE)	\
 const bfd_target VAR =							\
 {									\
diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h
index 1460d6a..22a575b 100644
--- a/bfd/elfxx-target.h
+++ b/bfd/elfxx-target.h
@@ -178,6 +178,10 @@
 #define bfd_elfNN_bfd_define_common_symbol bfd_generic_define_common_symbol
 #endif
 
+#ifndef bfd_elfNN_bfd_additional_link_map_text
+#define bfd_elfNN_bfd_additional_link_map_text bfd_generic_additional_link_map_text
+#endif
+
 #ifndef bfd_elfNN_bfd_lookup_section_flags
 #define bfd_elfNN_bfd_lookup_section_flags bfd_elf_lookup_section_flags
 #endif
diff --git a/bfd/i386msdos.c b/bfd/i386msdos.c
index fdba24d..778bd7b 100644
--- a/bfd/i386msdos.c
+++ b/bfd/i386msdos.c
@@ -149,6 +149,7 @@ msdos_set_section_contents (bfd *abfd,
 #define msdos_section_already_linked \
   _bfd_generic_section_already_linked
 #define msdos_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define msdos_bfd_additional_link_map_text bfd_generic_additional_link_map_text
 #define msdos_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
 #define msdos_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
 #define msdos_bfd_link_add_symbols _bfd_generic_link_add_symbols
diff --git a/bfd/i386os9k.c b/bfd/i386os9k.c
index 7df7b00..3856a59 100644
--- a/bfd/i386os9k.c
+++ b/bfd/i386os9k.c
@@ -173,6 +173,7 @@ os9k_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #define os9k_section_already_linked \
   _bfd_generic_section_already_linked
 #define os9k_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define os9k_bfd_additional_link_map_text bfd_generic_additional_link_map_text
 #define os9k_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
 #define os9k_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
 #define os9k_bfd_link_add_symbols _bfd_generic_link_add_symbols
diff --git a/bfd/ieee.c b/bfd/ieee.c
index 7eb4dde..fc99e43 100644
--- a/bfd/ieee.c
+++ b/bfd/ieee.c
@@ -3778,6 +3778,7 @@ ieee_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #define ieee_section_already_linked \
   _bfd_generic_section_already_linked
 #define ieee_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define ieee_bfd_additional_link_map_text bfd_generic_additional_link_map_text
 #define ieee_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
 #define ieee_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
 #define ieee_bfd_link_add_symbols _bfd_generic_link_add_symbols
diff --git a/bfd/ihex.c b/bfd/ihex.c
index f767cb0..2867f14 100644
--- a/bfd/ihex.c
+++ b/bfd/ihex.c
@@ -935,6 +935,7 @@ ihex_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #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
+#define ihex_bfd_additional_link_map_text         bfd_generic_additional_link_map_text
 #define ihex_bfd_link_hash_table_create           _bfd_generic_link_hash_table_create
 #define ihex_bfd_link_hash_table_free             _bfd_generic_link_hash_table_free
 #define ihex_bfd_link_add_symbols                 _bfd_generic_link_add_symbols
diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h
index 62804af..d60716e 100644
--- a/bfd/libbfd-in.h
+++ b/bfd/libbfd-in.h
@@ -490,6 +490,9 @@ extern bfd_boolean _bfd_generic_set_section_contents
 #define _bfd_nolink_bfd_define_common_symbol \
   ((bfd_boolean (*) (bfd *, struct bfd_link_info *, \
 		     struct bfd_link_hash_entry *)) bfd_false)
+#define _bfd_nolink_bfd_additional_link_map_text \
+  ((void (*) (bfd *, struct bfd_link_info *, \
+	      FILE *)) bfd_void)
 
 /* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
    have dynamic symbols or relocs.  Use BFD_JUMP_TABLE_DYNAMIC
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index f836f3f..f969cd4 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -495,6 +495,9 @@ extern bfd_boolean _bfd_generic_set_section_contents
 #define _bfd_nolink_bfd_define_common_symbol \
   ((bfd_boolean (*) (bfd *, struct bfd_link_info *, \
 		     struct bfd_link_hash_entry *)) bfd_false)
+#define _bfd_nolink_bfd_additional_link_map_text \
+  ((void (*) (bfd *, struct bfd_link_info *, \
+	      FILE *)) bfd_void)
 
 /* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
    have dynamic symbols or relocs.  Use BFD_JUMP_TABLE_DYNAMIC
diff --git a/bfd/linker.c b/bfd/linker.c
index a20a276..55356bc 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -3298,6 +3298,31 @@ bfd_generic_define_common_symbol (bfd *output_bfd,
   return TRUE;
 }
 
+
+/*
+FUNCTION
+	bfd_generic_additional_link_map_text
+
+SYNOPSIS
+	void bfd_generic_additional_link_map_text
+	  (bfd *output_bfd, struct bfd_link_info *info, FILE *mapfile);
+
+DESCRIPTION
+	Hook to allow backends to emit backend-specific or
+	target-specific text to the linker map..
+
+.#define bfd_additional_link_map_text(output_bfd, info, mapfile) \
+.       BFD_SEND (output_bfd, _bfd_additional_link_map_text, (output_bfd, info, mapfile))
+.
+*/
+
+void
+bfd_generic_additional_link_map_text (bfd *output_bfd ATTRIBUTE_UNUSED,
+				      struct bfd_link_info *info ATTRIBUTE_UNUSED,
+				      FILE *mapfile ATTRIBUTE_UNUSED)
+{
+}
+
 /*
 FUNCTION
 	bfd_find_version_for_sym
diff --git a/bfd/mach-o-target.c b/bfd/mach-o-target.c
index 65d5118..1e222c7 100644
--- a/bfd/mach-o-target.c
+++ b/bfd/mach-o-target.c
@@ -54,6 +54,7 @@
 #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
+#define bfd_mach_o_bfd_additional_link_map_text       bfd_generic_additional_link_map_text
 #define bfd_mach_o_bfd_copy_private_header_data       _bfd_generic_bfd_copy_private_header_data
 #define bfd_mach_o_core_file_matches_executable_p     generic_core_file_matches_executable_p
 #define bfd_mach_o_core_file_pid                      _bfd_nocore_core_file_pid
diff --git a/bfd/mmo.c b/bfd/mmo.c
index e8ce288..a15613a 100644
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -3213,6 +3213,7 @@ mmo_write_object_contents (bfd *abfd)
 #define mmo_section_already_linked \
   _bfd_generic_section_already_linked
 #define mmo_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define mmo_bfd_additional_link_map_text bfd_generic_additional_link_map_text
 
 /* We want to copy time of creation, otherwise we'd use
    BFD_JUMP_TABLE_COPY (_bfd_generic).  */
diff --git a/bfd/nlm-target.h b/bfd/nlm-target.h
index e55ddb6..772e8ca 100644
--- a/bfd/nlm-target.h
+++ b/bfd/nlm-target.h
@@ -50,6 +50,7 @@
 #define nlm_bfd_discard_group                   bfd_generic_discard_group
 #define nlm_section_already_linked              _bfd_generic_section_already_linked
 #define nlm_bfd_define_common_symbol            bfd_generic_define_common_symbol
+#define nlm_bfd_additional_link_map_text        bfd_generic_additional_link_map_text
 #define nlm_bfd_link_hash_table_create          _bfd_generic_link_hash_table_create
 #define nlm_bfd_link_hash_table_free            _bfd_generic_link_hash_table_free
 #define nlm_bfd_link_add_symbols                _bfd_generic_link_add_symbols
diff --git a/bfd/oasys.c b/bfd/oasys.c
index 74305d7..51dfc4a 100644
--- a/bfd/oasys.c
+++ b/bfd/oasys.c
@@ -1203,6 +1203,7 @@ oasys_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #define oasys_bfd_discard_group                    bfd_generic_discard_group
 #define oasys_section_already_linked               _bfd_generic_section_already_linked
 #define oasys_bfd_define_common_symbol             bfd_generic_define_common_symbol
+#define oasys_bfd_additional_link_map_text         bfd_generic_additional_link_map_text
 #define oasys_bfd_link_hash_table_create           _bfd_generic_link_hash_table_create
 #define oasys_bfd_link_hash_table_free             _bfd_generic_link_hash_table_free
 #define oasys_bfd_link_add_symbols                 _bfd_generic_link_add_symbols
diff --git a/bfd/pef.c b/bfd/pef.c
index f0b3233..95d07ed 100644
--- a/bfd/pef.c
+++ b/bfd/pef.c
@@ -57,6 +57,7 @@
 #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
+#define bfd_pef_bfd_additional_link_map_text        bfd_generic_additional_link_map_text
 #define bfd_pef_bfd_link_hash_table_create          _bfd_generic_link_hash_table_create
 #define bfd_pef_bfd_link_hash_table_free            _bfd_generic_link_hash_table_free
 #define bfd_pef_bfd_link_add_symbols                _bfd_generic_link_add_symbols
diff --git a/bfd/ppcboot.c b/bfd/ppcboot.c
index a05c368..05fa684 100644
--- a/bfd/ppcboot.c
+++ b/bfd/ppcboot.c
@@ -453,6 +453,7 @@ ppcboot_bfd_print_private_bfd_data (bfd *abfd, void * farg)
 #define ppcboot_section_already_linked \
   _bfd_generic_section_already_linked
 #define ppcboot_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define ppcboot_bfd_additional_link_map_text bfd_generic_additional_link_map_text
 #define ppcboot_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
 #define ppcboot_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
 #define ppcboot_bfd_link_add_symbols _bfd_generic_link_add_symbols
diff --git a/bfd/som.c b/bfd/som.c
index 4fddf32..30b847a 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -6745,6 +6745,7 @@ som_bfd_link_split_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
 #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
+#define som_bfd_additional_link_map_text        bfd_generic_additional_link_map_text
 #define som_bfd_merge_private_bfd_data		_bfd_generic_bfd_merge_private_bfd_data
 #define som_bfd_copy_private_header_data	_bfd_generic_bfd_copy_private_header_data
 #define som_bfd_set_private_flags		_bfd_generic_bfd_set_private_flags
diff --git a/bfd/srec.c b/bfd/srec.c
index 1045d99..4fea7b7 100644
--- a/bfd/srec.c
+++ b/bfd/srec.c
@@ -1257,6 +1257,7 @@ srec_print_symbol (bfd *abfd,
 #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
+#define srec_bfd_additional_link_map_text         bfd_generic_additional_link_map_text
 #define srec_bfd_link_hash_table_create           _bfd_generic_link_hash_table_create
 #define srec_bfd_link_hash_table_free             _bfd_generic_link_hash_table_free
 #define srec_bfd_link_add_symbols                 _bfd_generic_link_add_symbols
diff --git a/bfd/targets.c b/bfd/targets.c
index 058ab77..7966241 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -458,7 +458,8 @@ BFD_JUMP_TABLE macros.
 .  NAME##_bfd_is_group_section, \
 .  NAME##_bfd_discard_group, \
 .  NAME##_section_already_linked, \
-.  NAME##_bfd_define_common_symbol
+.  NAME##_bfd_define_common_symbol, \
+.  NAME##_bfd_additional_link_map_text
 .
 .  int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
 .  bfd_byte *  (*_bfd_get_relocated_section_contents)
@@ -521,6 +522,11 @@ BFD_JUMP_TABLE macros.
 .  bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
 .					     struct bfd_link_hash_entry *);
 .
+.  {* Let the backend print additional information about the output
+.     BFD to the map file.  *}
+.  void        (*_bfd_additional_link_map_text)
+.    (bfd *, struct bfd_link_info *, FILE *);
+.
 .  {* Routines to handle dynamic symbols and relocs.  *}
 .#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
 .  NAME##_get_dynamic_symtab_upper_bound, \
diff --git a/bfd/tekhex.c b/bfd/tekhex.c
index 7fcab93..1d0ef8d 100644
--- a/bfd/tekhex.c
+++ b/bfd/tekhex.c
@@ -948,6 +948,7 @@ tekhex_print_symbol (bfd *abfd,
 #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
+#define tekhex_bfd_additional_link_map_text         bfd_generic_additional_link_map_text
 #define tekhex_bfd_link_hash_table_create           _bfd_generic_link_hash_table_create
 #define tekhex_bfd_link_hash_table_free             _bfd_generic_link_hash_table_free
 #define tekhex_bfd_link_add_symbols                 _bfd_generic_link_add_symbols
diff --git a/bfd/versados.c b/bfd/versados.c
index a2dbdf5..33ba625 100644
--- a/bfd/versados.c
+++ b/bfd/versados.c
@@ -811,6 +811,7 @@ versados_canonicalize_reloc (bfd *abfd,
 #define versados_bfd_discard_group                    bfd_generic_discard_group
 #define versados_section_already_linked               _bfd_generic_section_already_linked
 #define versados_bfd_define_common_symbol             bfd_generic_define_common_symbol
+#define versados_bfd_additional_link_map_text         bfd_generic_additional_link_map_text
 #define versados_bfd_link_hash_table_create           _bfd_generic_link_hash_table_create
 #define versados_bfd_link_hash_table_free             _bfd_generic_link_hash_table_free
 #define versados_bfd_link_add_symbols                 _bfd_generic_link_add_symbols
diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index e038f1a..63fb3c2 100644
--- a/bfd/vms-alpha.c
+++ b/bfd/vms-alpha.c
@@ -9194,6 +9194,7 @@ bfd_vms_get_data (bfd *abfd)
 #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
+#define vms_bfd_additional_link_map_text  bfd_generic_additional_link_map_text
 #define vms_bfd_copy_private_header_data  _bfd_generic_bfd_copy_private_header_data
 
 #define vms_bfd_copy_private_bfd_data	  _bfd_generic_bfd_copy_private_bfd_data
@@ -9239,6 +9240,7 @@ bfd_vms_get_data (bfd *abfd)
   _bfd_generic_section_already_linked
 
 #define alpha_vms_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define alpha_vms_bfd_additional_link_map_text bfd_generic_additional_link_map_text
 #define alpha_vms_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
 #define alpha_vms_bfd_link_just_syms _bfd_generic_link_just_syms
 #define alpha_vms_bfd_copy_link_hash_symbol_type \
diff --git a/bfd/xsym.c b/bfd/xsym.c
index 1945113..2310227 100644
--- a/bfd/xsym.c
+++ b/bfd/xsym.c
@@ -49,6 +49,7 @@
 #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
+#define bfd_sym_bfd_additional_link_map_text        bfd_generic_additional_link_map_text
 #define bfd_sym_bfd_link_hash_table_create          _bfd_generic_link_hash_table_create
 #define bfd_sym_bfd_link_hash_table_free            _bfd_generic_link_hash_table_free
 #define bfd_sym_bfd_link_add_symbols                _bfd_generic_link_add_symbols
diff --git a/ld/ldlang.c b/ld/ldlang.c
index d147ee0..3861846 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -2123,6 +2123,8 @@ lang_map (void)
     }
   lang_statement_iteration++;
   print_statements ();
+
+  bfd_additional_link_map_text (link_info.output_bfd, &link_info, config.map_file);
 }
 
 static bfd_boolean


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