From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25324 invoked by alias); 11 Apr 2014 02:14:23 -0000 Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org Received: (qmail 25302 invoked by uid 89); 11 Apr 2014 02:14:22 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.0 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 11 Apr 2014 02:14:05 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s3B2E4bG024300 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Apr 2014 22:14:04 -0400 Received: from greed.delorie.com (ovpn-113-46.phx2.redhat.com [10.3.113.46]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s3B2E3m9014726 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Thu, 10 Apr 2014 22:14:04 -0400 Received: from greed.delorie.com (greed.delorie.com [127.0.0.1]) by greed.delorie.com (8.14.4/8.14.4) with ESMTP id s3B2E26e016911 for ; Thu, 10 Apr 2014 22:14:02 -0400 Received: (from dj@localhost) by greed.delorie.com (8.14.4/8.14.4/Submit) id s3B2E2IQ016910; Thu, 10 Apr 2014 22:14:02 -0400 Date: Fri, 11 Apr 2014 02:14:00 -0000 Message-Id: <201404110214.s3B2E2IQ016910@greed.delorie.com> From: DJ Delorie To: binutils@sourceware.org Subject: [rfc] new bfd hook: additional link map text X-IsSubscribed: yes X-SW-Source: 2014-04/txt/msg00132.txt.bz2 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