From 0b4453c791106ab62011b59f97611f9ff21cda9f Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 23 Sep 2019 10:12:31 +0930 Subject: [PATCH] elf bfd.h tidy bfd/ * bfd-in.h (enum notice_asneeded_action): Move to bfdlink.h. Move most other elf declarations.. * elf-bfd.h: ..to here. * bfd-in2.h: Regenerate. include/ * bfdlink.h (enum notice_asneeded_action): Define. ld/ * deffilep.y: Include bfdlink.h. * ldelf.c: Likewise. * ldelfgen.c: Likewise. * ldver.c: Likewise. * mri.c: Likewise. * emultempl/irix.em: Don't include ld.h, ldmain.h, libiberty.h. Comment. --- bfd/ChangeLog | 7 +++++ bfd/bfd-in.h | 69 -------------------------------------------- bfd/bfd-in2.h | 69 -------------------------------------------- bfd/elf-bfd.h | 62 +++++++++++++++++++++++++++++++++++++++ include/ChangeLog | 4 +++ include/bfdlink.h | 6 ++++ ld/ChangeLog | 10 +++++++ ld/deffilep.y | 1 + ld/emultempl/irix.em | 7 ++--- ld/ldelf.c | 1 + ld/ldelfgen.c | 1 + ld/ldver.c | 2 +- ld/mri.c | 1 + 13 files changed, 97 insertions(+), 143 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index fa67c70f7d2..62115f25c66 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2019-09-23 Alan Modra + + * bfd-in.h (enum notice_asneeded_action): Move to bfdlink.h. + Move most other elf declarations.. + * elf-bfd.h: ..to here. + * bfd-in2.h: Regenerate. + 2019-09-23 Alan Modra * bfd-in.h: Move m68k function declaration.. diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index d61467b5932..de8479cf727 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -570,72 +570,6 @@ extern bfd_boolean bfd_ecoff_write_accumulated_debug /* Externally visible ELF routines. */ -struct bfd_link_needed_list -{ - struct bfd_link_needed_list *next; - bfd *by; - const char *name; -}; - -enum dynamic_lib_link_class { - DYN_NORMAL = 0, - DYN_AS_NEEDED = 1, - DYN_DT_NEEDED = 2, - DYN_NO_ADD_NEEDED = 4, - DYN_NO_NEEDED = 8 -}; - -enum notice_asneeded_action { - notice_as_needed, - notice_not_needed, - notice_needed -}; - -extern bfd_boolean bfd_elf_record_link_assignment - (bfd *, struct bfd_link_info *, const char *, bfd_boolean, - bfd_boolean); -extern struct bfd_link_needed_list *bfd_elf_get_needed_list - (bfd *, struct bfd_link_info *); -extern bfd_boolean bfd_elf_get_bfd_needed_list - (bfd *, struct bfd_link_needed_list **); -extern bfd_boolean bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *, - const char *, bfd_vma); -extern bfd_boolean bfd_elf_size_dynamic_sections - (bfd *, const char *, const char *, const char *, const char *, const char *, - const char * const *, struct bfd_link_info *, struct bfd_section **); -extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr - (bfd *, struct bfd_link_info *); -extern void bfd_elf_set_dt_needed_name - (bfd *, const char *); -extern const char *bfd_elf_get_dt_soname - (bfd *); -extern void bfd_elf_set_dyn_lib_class - (bfd *, enum dynamic_lib_link_class); -extern int bfd_elf_get_dyn_lib_class - (bfd *); -extern struct bfd_link_needed_list *bfd_elf_get_runpath_list - (bfd *, struct bfd_link_info *); -extern int bfd_elf_discard_info - (bfd *, struct bfd_link_info *); -extern unsigned int _bfd_elf_default_action_discarded - (struct bfd_section *); - -/* Return an upper bound on the number of bytes required to store a - copy of ABFD's program header table entries. Return -1 if an error - occurs; bfd_get_error will return an appropriate code. */ -extern long bfd_get_elf_phdr_upper_bound - (bfd *abfd); - -/* Copy ABFD's program header table entries to *PHDRS. The entries - will be stored as an array of Elf_Internal_Phdr structures, as - defined in include/elf/internal.h. To find out how large the - buffer needs to be, call bfd_get_elf_phdr_upper_bound. - - Return the number of program header table entries read, or -1 if an - error occurs; bfd_get_error will return an appropriate code. */ -extern int bfd_get_elf_phdrs - (bfd *abfd, void *phdrs); - /* Create a new BFD as if by bfd_openr. Rather than opening a file, reconstruct an ELF file by reading the segments out of remote memory based on the ELF file header at EHDR_VMA and the ELF program @@ -655,9 +589,6 @@ extern bfd *bfd_elf_bfd_from_remote_memory int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, bfd_size_type len)); -extern struct bfd_section *_bfd_elf_tls_setup - (bfd *, struct bfd_link_info *); - extern struct bfd_section * _bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma); diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 4d2707621f7..30b2685a83e 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -577,72 +577,6 @@ extern bfd_boolean bfd_ecoff_write_accumulated_debug /* Externally visible ELF routines. */ -struct bfd_link_needed_list -{ - struct bfd_link_needed_list *next; - bfd *by; - const char *name; -}; - -enum dynamic_lib_link_class { - DYN_NORMAL = 0, - DYN_AS_NEEDED = 1, - DYN_DT_NEEDED = 2, - DYN_NO_ADD_NEEDED = 4, - DYN_NO_NEEDED = 8 -}; - -enum notice_asneeded_action { - notice_as_needed, - notice_not_needed, - notice_needed -}; - -extern bfd_boolean bfd_elf_record_link_assignment - (bfd *, struct bfd_link_info *, const char *, bfd_boolean, - bfd_boolean); -extern struct bfd_link_needed_list *bfd_elf_get_needed_list - (bfd *, struct bfd_link_info *); -extern bfd_boolean bfd_elf_get_bfd_needed_list - (bfd *, struct bfd_link_needed_list **); -extern bfd_boolean bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *, - const char *, bfd_vma); -extern bfd_boolean bfd_elf_size_dynamic_sections - (bfd *, const char *, const char *, const char *, const char *, const char *, - const char * const *, struct bfd_link_info *, struct bfd_section **); -extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr - (bfd *, struct bfd_link_info *); -extern void bfd_elf_set_dt_needed_name - (bfd *, const char *); -extern const char *bfd_elf_get_dt_soname - (bfd *); -extern void bfd_elf_set_dyn_lib_class - (bfd *, enum dynamic_lib_link_class); -extern int bfd_elf_get_dyn_lib_class - (bfd *); -extern struct bfd_link_needed_list *bfd_elf_get_runpath_list - (bfd *, struct bfd_link_info *); -extern int bfd_elf_discard_info - (bfd *, struct bfd_link_info *); -extern unsigned int _bfd_elf_default_action_discarded - (struct bfd_section *); - -/* Return an upper bound on the number of bytes required to store a - copy of ABFD's program header table entries. Return -1 if an error - occurs; bfd_get_error will return an appropriate code. */ -extern long bfd_get_elf_phdr_upper_bound - (bfd *abfd); - -/* Copy ABFD's program header table entries to *PHDRS. The entries - will be stored as an array of Elf_Internal_Phdr structures, as - defined in include/elf/internal.h. To find out how large the - buffer needs to be, call bfd_get_elf_phdr_upper_bound. - - Return the number of program header table entries read, or -1 if an - error occurs; bfd_get_error will return an appropriate code. */ -extern int bfd_get_elf_phdrs - (bfd *abfd, void *phdrs); - /* Create a new BFD as if by bfd_openr. Rather than opening a file, reconstruct an ELF file by reading the segments out of remote memory based on the ELF file header at EHDR_VMA and the ELF program @@ -662,9 +596,6 @@ extern bfd *bfd_elf_bfd_from_remote_memory int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, bfd_size_type len)); -extern struct bfd_section *_bfd_elf_tls_setup - (bfd *, struct bfd_link_info *); - extern struct bfd_section * _bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma); diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index 4458ff7b2ae..0a83c173327 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -529,6 +529,13 @@ struct elf_sym_strtab unsigned long destshndx_index; }; +struct bfd_link_needed_list +{ + struct bfd_link_needed_list *next; + bfd *by; + const char *name; +}; + /* ELF linker hash table. */ struct elf_link_hash_table @@ -1828,6 +1835,14 @@ typedef struct elf_section_list struct elf_section_list * next; } elf_section_list; +enum dynamic_lib_link_class { + DYN_NORMAL = 0, + DYN_AS_NEEDED = 1, + DYN_DT_NEEDED = 2, + DYN_NO_ADD_NEEDED = 4, + DYN_NO_NEEDED = 8 +}; + /* Some private data is stashed away for future use using the tdata pointer in the bfd structure. */ @@ -2287,6 +2302,37 @@ extern file_ptr _bfd_elf_assign_file_position_for_section extern bfd_boolean _bfd_elf_validate_reloc (bfd *, arelent *); +extern bfd_boolean bfd_elf_record_link_assignment + (bfd *, struct bfd_link_info *, const char *, bfd_boolean, + bfd_boolean); +extern bfd_boolean bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *, + const char *, bfd_vma); +extern bfd_boolean bfd_elf_size_dynamic_sections + (bfd *, const char *, const char *, const char *, const char *, const char *, + const char * const *, struct bfd_link_info *, struct bfd_section **); +extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr + (bfd *, struct bfd_link_info *); +extern bfd_boolean bfd_elf_get_bfd_needed_list + (bfd *, struct bfd_link_needed_list **); +extern struct bfd_link_needed_list *bfd_elf_get_needed_list + (bfd *, struct bfd_link_info *); +extern void bfd_elf_set_dt_needed_name + (bfd *, const char *); +extern const char *bfd_elf_get_dt_soname + (bfd *); +extern void bfd_elf_set_dyn_lib_class + (bfd *, enum dynamic_lib_link_class); +extern int bfd_elf_get_dyn_lib_class + (bfd *); +extern struct bfd_link_needed_list *bfd_elf_get_runpath_list + (bfd *, struct bfd_link_info *); +extern int bfd_elf_discard_info + (bfd *, struct bfd_link_info *); +extern unsigned int _bfd_elf_default_action_discarded + (struct bfd_section *); +extern struct bfd_section *_bfd_elf_tls_setup + (bfd *, struct bfd_link_info *); + extern bfd_boolean _bfd_elf_link_create_dynamic_sections (bfd *, struct bfd_link_info *); extern bfd_boolean _bfd_elf_omit_section_dynsym_default @@ -2557,6 +2603,22 @@ extern bfd_boolean _bfd_elf_ppc_set_arch (bfd *); extern bfd_boolean _bfd_elf_ppc_merge_fp_attributes (bfd *, struct bfd_link_info *); +/* Return an upper bound on the number of bytes required to store a + copy of ABFD's program header table entries. Return -1 if an error + occurs; bfd_get_error will return an appropriate code. */ +extern long bfd_get_elf_phdr_upper_bound + (bfd *abfd); + +/* Copy ABFD's program header table entries to *PHDRS. The entries + will be stored as an array of Elf_Internal_Phdr structures, as + defined in include/elf/internal.h. To find out how large the + buffer needs to be, call bfd_get_elf_phdr_upper_bound. + + Return the number of program header table entries read, or -1 if an + error occurs; bfd_get_error will return an appropriate code. */ +extern int bfd_get_elf_phdrs + (bfd *abfd, void *phdrs); + /* Exported interface for writing elf corefile notes. */ extern char *elfcore_write_note (bfd *, char *, int *, const char *, int, const void *, int); diff --git a/include/ChangeLog b/include/ChangeLog index c725bfbbc75..580eeb00473 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +2019-09-23 Alan Modra + + * bfdlink.h (enum notice_asneeded_action): Define. + 2019-09-17 Maxim Blinov * opcode/riscv.h (riscv_insn_class): New enum. diff --git a/include/bfdlink.h b/include/bfdlink.h index c35469dd11e..bb7909a9e2f 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -42,6 +42,12 @@ enum bfd_link_discard discard_all /* Discard all locals. */ }; +enum notice_asneeded_action { + notice_as_needed, + notice_not_needed, + notice_needed +}; + /* Whether to generate ELF common symbols with the STT_COMMON type during a relocatable link. */ enum bfd_link_elf_stt_common diff --git a/ld/ChangeLog b/ld/ChangeLog index 07e4611e005..fe27434bf27 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,13 @@ +2019-09-23 Alan Modra + + * deffilep.y: Include bfdlink.h. + * ldelf.c: Likewise. + * ldelfgen.c: Likewise. + * ldver.c: Likewise. + * mri.c: Likewise. + * emultempl/irix.em: Don't include ld.h, ldmain.h, libiberty.h. + Comment. + 2019-09-23 Alan Modra * emultempl/m68kelf.em: Include elf32-m68k.h. diff --git a/ld/deffilep.y b/ld/deffilep.y index 7f741570656..92116e68a8e 100644 --- a/ld/deffilep.y +++ b/ld/deffilep.y @@ -23,6 +23,7 @@ #include "libiberty.h" #include "safe-ctype.h" #include "bfd.h" +#include "bfdlink.h" #include "ld.h" #include "ldmisc.h" #include "deffile.h" diff --git a/ld/emultempl/irix.em b/ld/emultempl/irix.em index ddd5fd69e5c..e52c4a2d694 100644 --- a/ld/emultempl/irix.em +++ b/ld/emultempl/irix.em @@ -19,11 +19,10 @@ # MA 02110-1301, USA. # -fragment <