From 782450358dc18c4818faaae643ab5f91d6464fe7 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 17 Dec 2013 13:40:46 -0800 Subject: [PATCH] Default elf_backend_post_process_headers to set OSABI * elf-bfd.h (_bfd_elf_set_osabi): Renamed to ... (_bfd_elf_post_process_headers): This. * elf.c (_bfd_elf_compute_section_file_positions): Always call elf_backend_post_process_headers. (_bfd_elf_set_osabi): Renamed to ... (_bfd_elf_post_process_headers): This. * elf32-hppa.c (elf_backend_post_process_headers): Removed. * elf32-i370.c (elf_backend_post_process_headers): Likewise. * elf32-msp430.c (elf_backend_post_process_headers): Likewise. * elf32-ppc.c (elf_backend_post_process_headers): Likewise. * elf32-sparc.c (elf_backend_post_process_headers): Likewise. * elf64-hppa.c (elf_backend_post_process_headers): Likewise. * elf64-ppc.c (elf_backend_post_process_headers): Likewise. * elf64-sparc.c (elf_backend_post_process_headers): Likewise. * elf64-x86-64.c (elf_backend_post_process_headers): Likewise. * (elf_backend_post_process_headers): Likewise. * (elf_backend_post_process_headers): Likewise. * elf32-i386.c (elf_backend_post_process_headers): Don't define as _bfd_elf_set_osabi. (elf_i386_fbsd_post_process_headers): Updated. * elf32-mips.c (elf_fbsd_post_process_headers): Removed. (elf_backend_post_process_headers): Likewise. * elf32-tic6x.c (elf32_tic6x_set_osabi): Removed. (elf_backend_post_process_headers): Likewise. * elf64-mips.c (elf_fbsd_post_process_headers): Removed. (elf_backend_post_process_headers): Likewise. * elfn32-mips.c (elf_fbsd_post_process_headers): Removed. (elf_backend_post_process_headers): Likewise. * elfnn-aarch64.c (elfNN_aarch64_post_process_headers): Updated. * elfxx-target.h (elf_backend_post_process_headers): Default to _bfd_elf_post_process_headers. --- bfd/ChangeLog | 34 ++++++++++++++++++++++++++++++++++ bfd/elf-bfd.h | 2 +- bfd/elf.c | 7 +++---- bfd/elf32-hppa.c | 1 - bfd/elf32-i370.c | 1 - bfd/elf32-i386.c | 6 +----- bfd/elf32-mips.c | 12 ------------ bfd/elf32-msp430.c | 1 - bfd/elf32-ppc.c | 1 - bfd/elf32-sparc.c | 1 - bfd/elf32-tic6x.c | 14 -------------- bfd/elf64-hppa.c | 2 -- bfd/elf64-mips.c | 12 ------------ bfd/elf64-ppc.c | 1 - bfd/elf64-sparc.c | 2 -- bfd/elf64-x86-64.c | 2 -- bfd/elfn32-mips.c | 12 ------------ bfd/elfnn-aarch64.c | 2 +- bfd/elfxx-target.h | 2 +- 19 files changed, 41 insertions(+), 74 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 9c6bfd48ca3..7315720d154 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,37 @@ +2013-12-17 H.J. Lu + + * elf-bfd.h (_bfd_elf_set_osabi): Renamed to ... + (_bfd_elf_post_process_headers): This. + * elf.c (_bfd_elf_compute_section_file_positions): Always + call elf_backend_post_process_headers. + (_bfd_elf_set_osabi): Renamed to ... + (_bfd_elf_post_process_headers): This. + * elf32-hppa.c (elf_backend_post_process_headers): Removed. + * elf32-i370.c (elf_backend_post_process_headers): Likewise. + * elf32-msp430.c (elf_backend_post_process_headers): Likewise. + * elf32-ppc.c (elf_backend_post_process_headers): Likewise. + * elf32-sparc.c (elf_backend_post_process_headers): Likewise. + * elf64-hppa.c (elf_backend_post_process_headers): Likewise. + * elf64-ppc.c (elf_backend_post_process_headers): Likewise. + * elf64-sparc.c (elf_backend_post_process_headers): Likewise. + * elf64-x86-64.c (elf_backend_post_process_headers): Likewise. + * (elf_backend_post_process_headers): Likewise. + * (elf_backend_post_process_headers): Likewise. + * elf32-i386.c (elf_backend_post_process_headers): Don't + define as _bfd_elf_set_osabi. + (elf_i386_fbsd_post_process_headers): Updated. + * elf32-mips.c (elf_fbsd_post_process_headers): Removed. + (elf_backend_post_process_headers): Likewise. + * elf32-tic6x.c (elf32_tic6x_set_osabi): Removed. + (elf_backend_post_process_headers): Likewise. + * elf64-mips.c (elf_fbsd_post_process_headers): Removed. + (elf_backend_post_process_headers): Likewise. + * elfn32-mips.c (elf_fbsd_post_process_headers): Removed. + (elf_backend_post_process_headers): Likewise. + * elfnn-aarch64.c (elfNN_aarch64_post_process_headers): Updated. + * elfxx-target.h (elf_backend_post_process_headers): Default + to _bfd_elf_post_process_headers. + 2013-12-17 H.J. Lu PR binutils/16318 diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index 0446725cb63..0aab5fa065a 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -2041,7 +2041,7 @@ extern bfd_reloc_status_type bfd_elf_perform_complex_relocation extern bfd_boolean _bfd_elf_setup_sections (bfd *); -extern void _bfd_elf_set_osabi (bfd * , struct bfd_link_info *); +extern void _bfd_elf_post_process_headers (bfd * , struct bfd_link_info *); extern const bfd_target *bfd_elf32_object_p (bfd *); diff --git a/bfd/elf.c b/bfd/elf.c index 30d4171154f..b589e60777f 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -3457,8 +3457,7 @@ _bfd_elf_compute_section_file_positions (bfd *abfd, return FALSE; /* Post process the headers if necessary. */ - if (bed->elf_backend_post_process_headers) - (*bed->elf_backend_post_process_headers) (abfd, link_info); + (*bed->elf_backend_post_process_headers) (abfd, link_info); fsargs.failed = FALSE; fsargs.link_info = link_info; @@ -10016,8 +10015,8 @@ asection _bfd_elf_large_com_section SEC_IS_COMMON, NULL, "LARGE_COMMON", 0); void -_bfd_elf_set_osabi (bfd * abfd, - struct bfd_link_info * link_info ATTRIBUTE_UNUSED) +_bfd_elf_post_process_headers (bfd * abfd, + struct bfd_link_info * link_info ATTRIBUTE_UNUSED) { Elf_Internal_Ehdr * i_ehdrp; /* ELF file header, internal form. */ diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c index df25ac903c8..710028f2c8b 100644 --- a/bfd/elf32-hppa.c +++ b/bfd/elf32-hppa.c @@ -4643,7 +4643,6 @@ elf32_hppa_elf_get_symbol_type (Elf_Internal_Sym *elf_sym, int type) #define elf_backend_grok_psinfo elf32_hppa_grok_psinfo #define elf_backend_object_p elf32_hppa_object_p #define elf_backend_final_write_processing elf_hppa_final_write_processing -#define elf_backend_post_process_headers _bfd_elf_set_osabi #define elf_backend_get_symbol_type elf32_hppa_elf_get_symbol_type #define elf_backend_reloc_type_class elf32_hppa_reloc_type_class #define elf_backend_action_discarded elf_hppa_action_discarded diff --git a/bfd/elf32-i370.c b/bfd/elf32-i370.c index 48e25f228af..073197b333c 100644 --- a/bfd/elf32-i370.c +++ b/bfd/elf32-i370.c @@ -1388,7 +1388,6 @@ i370_elf_relocate_section (bfd *output_bfd, #define elf_backend_section_from_shdr i370_elf_section_from_shdr #define elf_backend_adjust_dynamic_symbol i370_elf_adjust_dynamic_symbol #define elf_backend_check_relocs i370_elf_check_relocs -#define elf_backend_post_process_headers _bfd_elf_set_osabi static int i370_noop (void) diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index 4574c598bad..4d391e13c7d 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -5068,8 +5068,6 @@ elf_i386_add_symbol_hook (bfd * abfd, #define elf_backend_plt_sym_val elf_i386_plt_sym_val #define elf_backend_hash_symbol elf_i386_hash_symbol #define elf_backend_add_symbol_hook elf_i386_add_symbol_hook -#undef elf_backend_post_process_headers -#define elf_backend_post_process_headers _bfd_elf_set_osabi #include "elf32-target.h" @@ -5089,7 +5087,7 @@ elf_i386_add_symbol_hook (bfd * abfd, static void elf_i386_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info) { - _bfd_elf_set_osabi (abfd, info); + _bfd_elf_post_process_headers (abfd, info); #ifdef OLD_FREEBSD_ABI_LABEL /* The ABI label supported by FreeBSD <= 4.0 is quite nonstandard. */ @@ -5151,7 +5149,6 @@ elf_i386_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info) #undef elf_backend_want_plt_sym #define elf_backend_want_plt_sym 0 #undef elf_backend_post_process_headers -#define elf_backend_post_process_headers _bfd_elf_set_osabi #undef elf_backend_static_tls_alignment /* NaCl uses substantially different PLT entries for the same effects. */ @@ -5345,7 +5342,6 @@ static const struct elf_i386_backend_data elf_i386_vxworks_arch_bed = #define elf_backend_arch_data &elf_i386_vxworks_arch_bed #undef elf_backend_relocs_compatible -#undef elf_backend_post_process_headers #undef elf_backend_add_symbol_hook #define elf_backend_add_symbol_hook \ elf_vxworks_add_symbol_hook diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index eec2ef7f053..ada66cefecf 100644 --- a/bfd/elf32-mips.c +++ b/bfd/elf32-mips.c @@ -2449,18 +2449,6 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = { #undef ELF_OSABI #define ELF_OSABI ELFOSABI_FREEBSD -/* The kernel recognizes executables as valid only if they carry a - "FreeBSD" label in the ELF header. So we put this label on all - executables and (for simplicity) also all other object files. */ - -static void -elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info) -{ - _bfd_elf_set_osabi (abfd, info); -} - -#undef elf_backend_post_process_headers -#define elf_backend_post_process_headers elf_fbsd_post_process_headers #undef elf32_bed #define elf32_bed elf32_fbsd_tradbed diff --git a/bfd/elf32-msp430.c b/bfd/elf32-msp430.c index 3d8d22f3776..69f50857dcf 100644 --- a/bfd/elf32-msp430.c +++ b/bfd/elf32-msp430.c @@ -2446,7 +2446,6 @@ msp430_elf_is_target_special_symbol (bfd *abfd, asymbol *sym) #define elf_backend_can_gc_sections 1 #define elf_backend_final_write_processing bfd_elf_msp430_final_write_processing #define elf_backend_object_p elf32_msp430_object_p -#define elf_backend_post_process_headers _bfd_elf_set_osabi #define bfd_elf32_bfd_relax_section msp430_elf_relax_section #define bfd_elf32_bfd_is_target_special_symbol msp430_elf_is_target_special_symbol diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 47c92ba0b7e..b601f05eee6 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -9922,7 +9922,6 @@ ppc_elf_finish_dynamic_sections (bfd *output_bfd, #define elf_backend_plt_sym_val ppc_elf_plt_sym_val #define elf_backend_action_discarded ppc_elf_action_discarded #define elf_backend_init_index_section _bfd_elf_init_1_index_section -#define elf_backend_post_process_headers _bfd_elf_set_osabi #define elf_backend_lookup_section_flags_hook ppc_elf_lookup_section_flags #define elf_backend_section_processing ppc_elf_section_processing diff --git a/bfd/elf32-sparc.c b/bfd/elf32-sparc.c index 52abfd43d04..d8d90c7e477 100644 --- a/bfd/elf32-sparc.c +++ b/bfd/elf32-sparc.c @@ -245,7 +245,6 @@ elf32_sparc_add_symbol_hook (bfd * abfd, #define elf_backend_got_header_size 4 #define elf_backend_rela_normal 1 -#define elf_backend_post_process_headers _bfd_elf_set_osabi #define elf_backend_add_symbol_hook elf32_sparc_add_symbol_hook #include "elf32-target.h" diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c index 92726b2af44..fe82c8ffb9e 100644 --- a/bfd/elf32-tic6x.c +++ b/bfd/elf32-tic6x.c @@ -4345,14 +4345,6 @@ elf32_tic6x_write_section (bfd *output_bfd, return TRUE; } -static void -elf32_tic6x_set_osabi (bfd *abfd, struct bfd_link_info *link_info) -{ - if (link_info != NULL && link_info->relocatable) - return; - _bfd_elf_set_osabi (abfd, link_info); -} - #define TARGET_LITTLE_SYM bfd_elf32_tic6x_le_vec #define TARGET_LITTLE_NAME "elf32-tic6x-le" #define TARGET_BIG_SYM bfd_elf32_tic6x_be_vec @@ -4434,9 +4426,6 @@ elf32_tic6x_set_osabi (bfd *abfd, struct bfd_link_info *link_info) #undef ELF_OSABI #define ELF_OSABI ELFOSABI_C6000_LINUX -#undef elf_backend_post_process_headers -#define elf_backend_post_process_headers elf32_tic6x_set_osabi - #include "elf32-target.h" #undef elf32_bed @@ -4453,7 +4442,4 @@ elf32_tic6x_set_osabi (bfd *abfd, struct bfd_link_info *link_info) #undef ELF_OSABI #define ELF_OSABI ELFOSABI_C6000_ELFABI -#undef elf_backend_post_process_headers -#define elf_backend_post_process_headers elf32_tic6x_set_osabi - #include "elf32-target.h" diff --git a/bfd/elf64-hppa.c b/bfd/elf64-hppa.c index c992563761d..121827b7684 100644 --- a/bfd/elf64-hppa.c +++ b/bfd/elf64-hppa.c @@ -4103,8 +4103,6 @@ const struct elf_size_info hppa64_elf_size_info = #define TARGET_BIG_NAME "elf64-hppa-linux" #undef ELF_OSABI #define ELF_OSABI ELFOSABI_GNU -#undef elf_backend_post_process_headers -#define elf_backend_post_process_headers _bfd_elf_set_osabi #undef elf64_bed #define elf64_bed elf64_hppa_linux_bed diff --git a/bfd/elf64-mips.c b/bfd/elf64-mips.c index a0c5cc59d39..89ccf90c475 100644 --- a/bfd/elf64-mips.c +++ b/bfd/elf64-mips.c @@ -4349,18 +4349,6 @@ extern bfd_boolean bfd_elf64_archive_write_armap #undef ELF_OSABI #define ELF_OSABI ELFOSABI_FREEBSD -/* The kernel recognizes executables as valid only if they carry a - "FreeBSD" label in the ELF header. So we put this label on all - executables and (for simplicity) also all other object files. */ - -static void -elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info) -{ - _bfd_elf_set_osabi (abfd, info); -} - -#undef elf_backend_post_process_headers -#define elf_backend_post_process_headers elf_fbsd_post_process_headers #undef elf64_bed #define elf64_bed elf64_fbsd_tradbed diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index deabb2766e6..acc3423e38e 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -118,7 +118,6 @@ static bfd_vma opd_entry_value #define elf_backend_finish_dynamic_sections ppc64_elf_finish_dynamic_sections #define elf_backend_link_output_symbol_hook ppc64_elf_output_symbol_hook #define elf_backend_special_sections ppc64_elf_special_sections -#define elf_backend_post_process_headers _bfd_elf_set_osabi #define elf_backend_merge_symbol_attribute ppc64_elf_merge_symbol_attribute /* The name of the dynamic interpreter. This is put in the .interp diff --git a/bfd/elf64-sparc.c b/bfd/elf64-sparc.c index 65e39070447..2a27bbd5250 100644 --- a/bfd/elf64-sparc.c +++ b/bfd/elf64-sparc.c @@ -922,8 +922,6 @@ const struct elf_size_info elf64_sparc_size_info = /* Section 5.2.4 of the ABI specifies a 256-byte boundary for the table. */ #define elf_backend_plt_alignment 8 -#define elf_backend_post_process_headers _bfd_elf_set_osabi - #include "elf64-target.h" /* FreeBSD support */ diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 860546e5672..edee8ecefd5 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -5319,8 +5319,6 @@ static const struct bfd_elf_special_section #define elf_backend_hash_symbol \ elf_x86_64_hash_symbol -#define elf_backend_post_process_headers _bfd_elf_set_osabi - #include "elf64-target.h" /* FreeBSD support. */ diff --git a/bfd/elfn32-mips.c b/bfd/elfn32-mips.c index 2daf79e8751..290bb83f5b2 100644 --- a/bfd/elfn32-mips.c +++ b/bfd/elfn32-mips.c @@ -3541,18 +3541,6 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = { #undef ELF_OSABI #define ELF_OSABI ELFOSABI_FREEBSD -/* The kernel recognizes executables as valid only if they carry a - "FreeBSD" label in the ELF header. So we put this label on all - executables and (for simplicity) also all other object files. */ - -static void -elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info) -{ - _bfd_elf_set_osabi (abfd, info); -} - -#undef elf_backend_post_process_headers -#define elf_backend_post_process_headers elf_fbsd_post_process_headers #undef elf32_bed #define elf32_bed elf32_fbsd_tradbed diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 22f95d368f0..0573d6a0f1f 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -5479,7 +5479,7 @@ elfNN_aarch64_post_process_headers (bfd *abfd, i_ehdrp = elf_elfheader (abfd); i_ehdrp->e_ident[EI_ABIVERSION] = AARCH64_ELF_ABI_VERSION; - _bfd_elf_set_osabi (abfd, link_info); + _bfd_elf_post_process_headers (abfd, link_info); } static enum elf_reloc_type_class diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h index d42ce26fddd..2e7cbca3489 100644 --- a/bfd/elfxx-target.h +++ b/bfd/elfxx-target.h @@ -498,7 +498,7 @@ #define elf_backend_static_tls_alignment 1 #endif #ifndef elf_backend_post_process_headers -#define elf_backend_post_process_headers NULL +#define elf_backend_post_process_headers _bfd_elf_post_process_headers #endif #ifndef elf_backend_print_symbol_all #define elf_backend_print_symbol_all NULL -- 2.30.2