aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf64-ppc.c
AgeCommit message (Collapse)AuthorFilesLines
2002-02-05 * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Check for relocsAlan Modra1-2/+6
against section syms in readonly sections. Don't do the global sym check if we find one. * elf64-s390.c (elf_s390_size_dynamic_sections): Likewise. * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Likewise. * elf32-s390.c (elf_s390_size_dynamic_sections): Likewise. (elf_s390_grok_prstatus): Add missing prototype.
2002-01-31 * elf64-ppc.c (func_desc_adjust): STV_PROTECTED functions shouldAlan Modra1-3/+6
not go via the plt.
2002-01-30 * elf64-ppc.c (func_desc_adjust): Only provide missing functionAlan Modra1-10/+6
descriptor symbols for undefined function code syms. Clear ELF_LINK_NON_ELF so that they can stay weak.
2002-01-29Arrgh! Revert last change.Alan Modra1-1/+33
2002-01-29 * elf64-ppc.c (func_desc_adjust): Don't supply missing functionAlan Modra1-33/+1
descriptor symbols.
2002-01-23 * elf64-ppc.c: Remove stale part of ABI comment.Alan Modra1-45/+56
(NO_OPD_RELOCS): Define. (ppc64_elf_check_relocs): Use it. (ppc64_elf_relocate_section): Here too. (build_one_stub): Don't point function syms at the stub. Instead, hijack plt.offset. (ppc64_elf_relocate_section): Check whether REL24 relocs should really go to the stub. Make all dynamic relocs in opd against locals. (ppc64_elf_finish_dynamic_symbol): Allow for non-standard use of plt.offset.
2002-01-22 * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Correct sign ofAlan Modra1-1/+1
TOC_BASE_OFF adjustment.
2002-01-21 * elf64-ppc.c (struct ppc_link_hash_entry): Add is_func andAlan Modra1-118/+303
is_func_descriptor fields. (link_hash_newfunc): Init them. (ppc64_elf_check_relocs): Only R_PPC24_REL24 syms starting with a dot are candidates for plt entries. When processing .opd relocs, set function descriptor strings to point inside function code string, and set new ppc_link_hash_entry fields. (ppc64_elf_gc_sweep_hook): Don't sweep R_PPC64_REL24 relocs. (ppc64_elf_adjust_dynamic_symbol): Remove most code dealing with function descriptors. It's now done in.. (func_desc_adjust): New. (ppc64_elf_func_desc_adjust): New. (define elf_backend_always_size_sections): Define. (ppc64_elf_hide_symbol): New. (define elf_backend_hide_symbol): Define. (allocate_dynrelocs): Remove code looking up function descriptors as that has been done earlier. (ppc64_elf_size_dynamic_sections): Use htab shortcut to elf hash table. (ppc64_elf_finish_dynamic_symbol): Likewise. Remove code looking up function descriptor. (build_one_stub): Look up the function code sym. Check for invalid plt offsets. (ppc64_elf_relocate_section): Tweak calls to undefined weak syms. Convert R_PPC64_TOC relocs to R_PPC64_RELATIVE in shared libs.
2002-01-18 * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Test for aAlan Modra1-9/+20
dynamic function descriptor symbol, not the associated function symbol.
2002-01-16 * elf64-ppc.c (ppc64_elf_howto_raw): Remove stale FIXMEs.Alan Modra1-7/+3
(ppc64_elf_reloc_type_lookup): Use proper CTOR reloc. (ORI_R0_R0_0): Correct.
2002-01-16 * elflink.c (_bfd_elf_create_dynamic_sections): Don't set SEC_CODEAlan Modra1-122/+391
when plt_not_loaded. * elf64-ppc.c (ppc64_elf_create_dynamic_sections): No need to clear .plt SEC_CODE here. Create .stub and correct .glink flags. (PLT_INITIAL_ENTRY_SIZE): Set to 24. (ppc64_elf_glink_code): Delete. (PPC64_ELF_GLINK_SIZE): Delete. (ADDIS_R12_R2, STD_R2_40R1, LD_R11_0R12, LD_R2_0R12, MTCTR_R11, BCTR, ADDIS_R12_R12_1, LD_R2_40R1, NOP, LI_R0_0, B_DOT, LIS_R0_0, ORI_R0_R0_0): Define. (PLT_CALL_STUB_SIZE, GLINK_CALL_STUB_SIZE): Define. (struct ppc_link_hash_table): Add sstub and plt_overflow. (ppc64_elf_link_hash_table_create): Init them. (ppc64_elf_check_relocs <R_PPC64_REL24>): Refcount .plt entry. Don't copy to shared lib. (ppc64_elf_check_relocs): Call bfd_set_error on errors. (ppc64_elf_gc_sweep_hook <R_PPC64_REL24>): Sweep plt refcount. (allocate_dynrelocs <plt>): Don't change function sym here. Make room for .stub and .glink code. (ppc64_elf_size_dynamic_sections): Handle .stub. Make entry for DT_PPC64_GLINK. (ppc64_elf_final_link): Rename to ppc64_elf_set_toc. Don't call bfd_elf64_bfd_final_link. (bfd_elf64_bfd_final_link): Don't define. (ppc64_elf_size_stubs): New. (build_plt_stub): New. (build_one_stub): New. (ppc64_elf_build_stubs): New. (ppc64_elf_relocate_section <toc relocs>): Remove assert. (ppc64_elf_relocate_section): Don't copy R_PPC64_REL24 relocs. (ppc64_elf_finish_dynamic_symbol): Don't build stubs here. Set DT_PPC64_GLINK entry. Tweak DT_PLTGOT, DT_JMPREL, DT_PLTRELSZ in case output sections not separate. Adjust DT_RELASZ to not include plt relocs. Set reserved got entry. Set got and plt entry size. (elf_backend_got_header_size): Set to 8. * elf64-ppc.h: New file.
2001-12-182001-12-18 H.J. Lu <hjl@gnu.org>H.J. Lu1-21/+0
* elf-bfd.h (_bfd_elf_copy_private_bfd_data): New. Prototype. (_bfd_mips_elf_copy_private_bfd_data): Removed. * elf.c (_bfd_elf_copy_private_bfd_data): New. Copy e_flags in the ELF header. * elf32-i370.c (??_elf_copy_private_bfd_data): Removed. (bfd_elf??_bfd_copy_private_bfd_data): Removed. * elf32-m32r.c: Likewise. * elf32-m68k.c: Likewise. * elf32-mcore.c: Likewise. * elf32-mips.c: Likewise. * elf32-ppc.c: Likewise. * elf32-v850.c: Likewise. * elf64-ppc.c: Likewise. * elf64-sparc.c: Likewise. * elfxx-ia64.c: Likewise. * elf64-mips.c (bfd_elf64_bfd_copy_private_bfd_data): Removed. * elfxx-target.h (bfd_elfNN_bfd_copy_private_bfd_data): Defined to _bfd_elf_copy_private_bfd_data.
2001-12-17 Support for more than 64k ELF sections.Alan Modra1-7/+1
include/elf/ChangeLog * external.h (Elf_External_Sym_Shndx): Declare. * internal.h (struct elf_internal_sym <st_shndx>): Make it an unsigned int. * common.h (SHN_BAD): Define. bfd/ChangeLog * configure.in: Bump bfd version. * configure: Regenerate. * elf-bfd.h (elf_size_info <swap_symbol_out>): Add shndx param. (bfd_elf32_swap_symbol_in): Likewise. (bfd_elf32_swap_symbol_out): Likewise. (bfd_elf64_swap_symbol_in): Likewise. (bfd_elf64_swap_symbol_out): Likewise. (elf_reloc_cookie): Add locsym_shndx field. Make locsyms a PTR. (elf_obj_tdata): Add num_elf_sections, symtab_shndx_hdr and symtab_shndx_section. (elf_numsections): Define. (elf_symtab_shndx): Define. * elf.c (setup_group): Use elf_numsections rather than header e_shnum. (bfd_elf_find_section): Likewise. (bfd_section_from_elf_index): Likewise. (bfd_section_from_shdr): Likewise. Handle SHT_SYMTAB_SHNDX. (bfd_section_from_r_symndx): Read symbol shndx extension, and translate st_shndx for > SHN_HIRESERVE. (assign_section_numbers): Skip reserved sections. Assign symtab_shndx_section and elf_numsections. Exclude reserved sections from e_shnum. Set up symtab_shndx_hdr. (_bfd_elf_compute_section_file_positions): Handle symtab_shndx_hdr. (map_sections_to_segments): Don't map eh_frame_hdr unless required. (assign_file_positions_except_relocs): Use elf_numsections rather than header e_shnum. Skip reserved sections and symtab_shndx_section. (prep_headers): Set name for symtab_shndx_hdr. (_bfd_elf_assign_file_positions_for_relocs): Use elf_numsections. (_bfd_elf_write_object_contents): Likewise. Skip reserved sections. (_bfd_elf_section_from_bfd_section): Check bfd_{abs,com,und}_section first. Use elf_section_data if available. Use elf_numsections. Start scan at index 1. (copy_private_bfd_data ): Comment fixes. (MAP_ONESYMTAB): Define above SHN_HIOS. (MAP_DYNSYMTAB): Likewise. (MAP_STRTAB): Likewise. (MAP_SHSTRTAB): Likewise. (MAP_SYM_SHNDX): New define. (_bfd_elf_copy_private_symbol_data): Handle symtab_shndx_section. (swap_out_syms): Swap out SHT_SYMTAB_SHNDX section too. * elfcode.h (elf_swap_symbol_in): Add shndx param, and handle shndx extension. (elf_swap_symbol_out): Likewise. (elf_object_p): Set elf_numsections, and use instead of e_shnum. Initialialise reserved elf_elfsections to point at shdr[0]. Remove redundant bfd_release calls. (elf_slurp_symbol_table): Read symbol shndx extension, and use with elf_swap_symbol_in. Translate st_shndx for > SHN_HIRESERVE too. * elflink.h (elf_link_is_defined_archive_symbol): Read symbol shndx extension, and use with elf_swap_symbol_in. (elf_link_record_local_dynamic_symbol): Likewise. (elf_link_add_object_symbols): Likewise. Also translate st_shndx for elf sections > SHN_HIRESERVE. (NAME(bfd_elf,size_dynamic_sections)): Adjust elf_swap_symbol_out call. (struct elf_final_link_info): Add locsym_shndx and symshndxbuf. (elf_bfd_final_link): Allocate the above, and tidy code allocating other buffers. Use elf_numsections instead of e_shnum. Adjust elf_swap_symbol_out calls. (elf_link_output_sym): Swap out symbol shndx extension too. (elf_link_flush_output_syms): And flush them to disk. (elf_link_output_extsym): Use SHN_BAD. Adjust elf_swap_symbol_out calls. (elf_gc_mark): Read symbol shndx extension, and use with elf_swap_symbol_in. (elf_link_input_bfd): Likewise, Translate st_shndx for elf sections > SHN_HIRESERVE too. Use SHN_BAD. (elf_reloc_symbol_deleted_p): Use symbol shndx extensions with elf_swap_symbol_in. Translate st_shndx > SHN_HIRESERVE too. (elf_bfd_discard_info): Read symbol shndx extension. Don't attempt to continue after a bfd error. * elf-m10200.c (mn10200_elf_relax_section): Only read local syms. Stash them immediately to symtab_hdr->contents rather than later in multiple places. Clean up afterwards. Read symbol shndx extension, and use with swap_symbol_in. Translate SHN_UNDEF, SHN_ABS, SHN_COMMON and elf sections > SHN_HIRESERVE to bfd sections too. Remove dead code. (mn10200_elf_relax_delete_bytes): Use symbol shndx extension when swapping in symbols. Tidy code adjusting global syms. Don't swap in global syms. (mn10200_elf_symbol_address_p): Likewise. Remove extsyms param. (mn10200_elf_get_relocated_section_contents): Read symbol shndx extension, and use with swap_symbol_in. Rename "size" -> "amt" to maximize code in common with other files. Translate st_shndx for > SHN_HIRESERVE too. Remove dead code. * elf-m10300.c (mn10300_elf_relax_section): Only read local syms. Stash them immediately to symtab_hdr->contents rather than later in multiple places. Clean up afterwards. Read symbol shndx extension, and use with swap_symbol_in. Remove dead code. (mn10300_elf_relax_delete_bytes): As for elf-m10200.c. (mn10300_elf_symbol_address_p): Likewise. (mn10300_elf_get_relocated_section_contents): Likewise. * elf32-h8300.c (elf32_h8_relax_section): As for elf-m10300.c. (elf32_h8_relax_delete_bytes): Likewise. (elf32_h8_symbol_address_p): Likewise. (elf32_h8_get_relocated_section_contents): Likewise. * elf32-hppa.c (elf32_hppa_size_stubs): Read symbol shndx extension, and use with swap_symbol_in. * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. * elf32-i370.c (i370_elf_finish_dynamic_sections): Adjust call to bfd_elf32_swap_symbol_out. * elf32-m32r.c (m32r_elf_get_relocated_section_contents): Translate elf sections > SHN_HIRESERVE too. * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Only read local syms. Read symbol shndx extension, and use with swap_symbol_in. * elf32-mips.c (_bfd_mips_elf_final_write_processing): Use elf_numsections rather than header e_shnum. * elf32-sh.c (sh_elf_relax_section): As for elf-m10300.c. (sh_elf_relax_delete_bytes): Likewise. (sh_elf_get_relocated_section_contents): Likewise. Only read local symbols. * elf32-v850.c (v850_elf_symbol_processing): Use an unsigned int to hold section index. Use elf_numsections rather than e_shnum. Rename "index" -> "indx" to avoid shadowing warning. (v850_elf_add_symbol_hook): Likewise. * elf64-alpha.c (elf64_alpha_relax_section): Only read local syms. Read symbol shndx extension, and use with swap_symbol_in. * elf32-xstormy16.c (xstormy16_elf_relax_section): Likewise. Translate SHN_COMMON and elf sections > SHN_HIRESERVE too. * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. (elfNN_ia64_aix_add_symbol_hook): Use elf_numsections. * elf-m10300.c (mn10300_elf_gc_mark_hook): Remove unnecessary checks before calling bfd_section_from_elf_index on local syms. * elf32-arm.h (elf32_arm_gc_mark_hook): Likewise. * elf32-avr.c (elf32_avr_gc_mark_hook): Likewise. * elf32-cris.c (cris_elf_gc_mark_hook): Likewise. * elf32-d10v.c (elf32_d10v_gc_mark_hook): Likewise. * elf32-fr30.c (fr30_elf_gc_mark_hook): Likewise. * elf32-hppa.c (elf32_hppa_gc_mark_hook): Likewise. * elf32-i386.c (elf_i386_gc_mark_hook): Likewise. * elf32-m32r.c (m32r_elf_gc_mark_hook): Likewise. * elf32-m68k.c (elf_m68k_gc_mark_hook): Likewise. * elf32-mcore.c (mcore_elf_gc_mark_hook): Likewise. * elf32-mips.c (_bfd_mips_elf_gc_mark_hook): Likewise. * elf32-openrisc.c (openrisc_elf_gc_mark_hook): Likewise. * elf32-ppc.c (ppc_elf_gc_mark_hook): Likewise. * elf32-s390.c (elf_s390_gc_mark_hook): Likewise. * elf32-sh.c (sh_elf_gc_mark_hook): Likewise. * elf32-sparc.c (elf32_sparc_gc_mark_hook): Likewise. * elf32-v850.c (v850_elf_gc_mark_hook): Likewise. * elf32-xstormy16.c (xstormy16_elf_gc_mark_hook): Likewise. * elf64-mips.c (mips_elf64_gc_mark_hook): Likewise. * elf64-mmix.c (mmix_elf_gc_mark_hook): Likewise. * elf64-ppc.c (ppc64_elf_gc_mark_hook): Likewise. * elf64-s390.c (elf_s390_gc_mark_hook): Likewise. * elf64-x86-64.c (elf64_x86_64_gc_mark_hook): Likewise. binutils/ChangeLog * readelf.c (symtab_shndx_hdr): New global. (SECTION_HEADER_INDEX): Define. (SECTION_HEADER_NUM): Define. (SECTION_HEADER): Define. (GET_ELF_SYMBOLS): Pass two params rather than three. (get_32bit_elf_symbols): Take file and section args. Read and use SHT_SYMTAB_SHNDX. (get_64bit_elf_symbols): Likewise. (dump_relocations): Use SECTION_HEADER to index "section_headers". (process_section_headers): Likewise. Use SECTION_HEADER_NUM too. Remember symtab_shdx_hdr. (process_program_headers): Scan from index 1 for segment map. (slurp_ia64_unwind_table): Use SECTION_HEADER to index "section_headers". (process_relocs): Likewise. Also adjust call to GET_ELF_SYMBOLS. (process_unwind): Likewise. (process_version_sections): Likewise. (process_symbol_table): Likewise. (display_debug_info): Likewise. (process_dynamic_segment): Fake up a symtab section for changed GET_ELF_SYMBOLS. (get_symbol_index_type): Check SHN_LOOS before SHN_LORESERVE. (process_program_headers): Kill signed/unsigned warning. (load_debug_str): Likewise. (display_debug_info): Likewise.
2001-12-07 * elf.c (_bfd_elf_rela_local_sym): Only callJakub Jelinek1-14/+5
_bfd_merged_section_offset if merge_info is non-NULL. (_bfd_elf_rel_local_sym, _bfd_elf_section_offset): New. * elf-bfd.h (_bfd_elf_rel_local_sym, _bfd_elf_section_offset): New prototypes. * elf32-arm.h (elf32_arm_final_link_relocate): Use _bfd_elf_section_offset. (elf32_arm_relocate_section): Use _bfd_elf_rel_local_sym. * elf32-i386.c (elf_i386_relocate_section): Use _bfd_elf_section_offset and _bfd_elf_rel_local_sym. * elf32-sh.c (sh_elf_relocate_section): Likewise. * elf32-sparc.c (elf32_sparc_relocate_section): Use _bfd_elf_section_offset. * elf32-cris.c (cris_elf_relocate_section): Likewise. * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. * elf32-i370.c (i370_elf_relocate_section): Likewise. * elf32-m68k.c (elf_m68k_relocate_section): Likewise. * elf32-mips.c (mips_elf_create_dynamic_relocation): Likewise. * elf32-ppc.c (ppc_elf_relocate_section): Likewise. * elf32-s390.c (elf_s390_relocate_section): Likewise. * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. * elf64-s390.c (elf_s390_relocate_section): Likewise. * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Likewise.
2001-11-23 * elf.c (_bfd_elf_rela_local_sym): New.Jakub Jelinek1-3/+2
* elflink.h (elf_link_input_bfd): Don't consider empty merged sections as removed in relocation tests. * elf-bfd.h (_bfd_elf_rela_local_sym): Add prototype. * elf32-i386.c (elf_i386_relocate_section): Handle relocs against STT_SECTION symbol of SHF_MERGE section. * elf32-arm.h (elf32_arm_relocate_section): Likewise. * elf32-avr.c (elf32_avr_relocate_section): Call _bfd_elf_rela_local_sym. * elf32-cris.c (cris_elf_relocate_section): Likewise. * elf32-d10v.c (elf32_d10v_relocate_section): Likewise. * elf32-fr30.c (fr30_final_link_relocate): Likewise. * elf32-h8300.c (elf32_h8_relocate_section): Likewise. * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. * elf32-i370.c (i370_elf_relocate_section): Likewise. * elf32-i860.c (elf32_i860_relocate_section): Likewise. * elf32-m32r.c (m32r_elf_relocate_section): Likewise. * elf32-m68k.c (elf_m68k_relocate_section): Likewise. * elf32-mcore.c (mcore_elf_relocate_section): Likewise. * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. * elf32-ppc.c (ppc_elf_relocate_section): Likewise. * elf32-s390.c (elf_s390_relocate_section): Likewise. * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. * elf32-v850.c (v850_elf_relocate_section): Likewise. * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. * elf64-mmix.c (mmix_elf_relocate_section): Likewise. * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. * elf64-s390.c (elf_s390_relocate_section): Likewise. * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. * elf-hppa.h (elf_hppa_relocate_section): Likewise. * elf-m10200.c (mn10200_elf_relocate_section): Likewise. * elf-m10300.c (mn10300_elf_relocate_section): Likewise. * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. * elf32-sh.c (sh_elf_relocate_section): Likewise for !partial_inplace relocs. Handle relocs against STT_SECTION symbol of SHF_MERGE for partial_inplace relocs. * config/tc-alpha.c (tc_gen_reloc): Remove SEC_MERGE test. * write.c (adjust_reloc_syms): Don't handle relocs against SEC_MERGE section symbols specially. (fixup_segment): Likewise.
2001-11-10 * elf32-arm.h (elf32_arm_final_link_relocate): Don't copy STN_UNDEFAlan Modra1-33/+68
relocs into shared libs. * elf32-cris.c (cris_elf_relocate_section): Likewise. * elf32-i370.c (i370_elf_relocate_section): Likewise. * elf32-m68k.c (elf_m68k_relocate_section): Likewise. * elf32-mips.c (mips_elf_calculate_relocation): Likewise. * elf32-ppc.c (ppc_elf_relocate_section): Likewise. * elf32-sh.c (sh_elf_relocate_section): Likewise. * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. * elf64-s390.c (elf_s390_relocate_section): Likewise. * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. * elf.c (bfd_section_from_r_symndx): New function. * elf-bfd.h (LOCAL_SYM_CACHE_SIZE): Define. (struct sym_sec_cache): New. (bfd_section_from_r_symndx): Declare. (struct bfd_elf_section_data): Change local_dynrel type to PTR. * elflink.h (elf_link_input_bfd): Don't test for removed linkonce relocs when relocatable. Don't zero entire reloc, just zero the addend and sym. * elf32-i386.c (struct elf_i386_link_hash_table): Add sym_sec. (elf_i386_link_hash_table_create): Init it. (elf_i386_check_relocs): Track dynamic relocs needed for local syms on a per-section basis as we do for globals. (elf_i386_gc_sweep_hook): Update for local_dynrel change. Remove dead code. (allocate_dynrelocs): Warning fix. (elf_i386_size_dynamic_sections): Don't allocate relocs when section has been discarded. (elf_i386_relocate_section): Don't copy STN_UNDEF relocs into shared libs. * elf32-hppa.c: Likewise. * elf32-s390.c: Likewise. * elf64-ppc.c: Likewise. * elf64-s390.c: Likewise.
2001-11-01 * elf64-ppc.c (ppc64_elf_relocate_section): Correct branchAlan Modra1-15/+14
prediction bits.
2001-10-15 * elf.c (_bfd_elf_link_hash_copy_indirect): Test ind->root.typeAlan Modra1-1/+1
rather than ind->weakdef. * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise. * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): Likewise. * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise.
2001-10-15 * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Merge dyn_relocAlan Modra1-3/+31
counts for aliases instead of aborting. * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. * elf32-hppa.c (elf32_hppa_adjust_dynamic_symbol): Set plt.offset to -1 for non-function symbols. * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Likewise. * elf32-s390.c (elf_s390_adjust_dynamic_symbol): Likewise. * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise. * elf64-s390.c (elf_s390_adjust_dynamic_symbol): Likewise. * elf64-x86-64.c (elf64_x86_64_adjust_dynamic_symbol): Likewise. * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Refer to plt.offset instead of plt.refcount when setting to -1.
2001-10-03 * elflink.h (elf_fix_symbol_flags): Copy flags to weakdef usingAlan Modra1-0/+1
elf_backend_copy_indirect_symbol so that backend has a chance to copy other necessary fields. * elf-bfd.h (struct elf_backend_data): Update description of elf_backend_copy_indirect_symbol. * elf.c (_bfd_elf_link_hash_copy_indirect): Bail out after copying flags if this is a weakdef. * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. (elfNN_ia64_aix_add_symbol_hook): Use elf_link_hash_lookup rather than bfd_link_hash_lookup. * elf32-i386 (elf_i386_adjust_dynamic_symbol): Don't do copy reloc processing for weakdefs. * elf32-hppa.c (elf32_hppa_adjust_dynamic_symbol): Likewise. * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise.
2001-10-02 * elf64-ppc.c (ppc64_elf_check_relocs): Use a local var and castAlan Modra1-109/+118
result of ELF64_R_TYPE to enum before using in a switch. (ppc64_elf_gc_mark_hook): Likewise. (ppc64_elf_gc_sweep_hook): Likewise. (ppc64_elf_reloc_type_class): Likewise.
2001-09-29 * elf64-ppc.c (struct ppc_dyn_relocs): New.Alan Modra1-1162/+1343
(IS_ABSOLUTE_RELOC): Define. (struct ppc_link_hash_entry): New. (struct ppc_link_hash_table): New. (ppc_hash_table): Define. (link_hash_newfunc): New function. (ppc64_elf_link_hash_table_create): New function. (create_got_section): New function. (ppc64_elf_create_dynamic_sections): Call create_got_section. Stash pointers to our dynamic sections in hash table. (ppc64_elf_copy_indirect_symbol): New function. (ppc64_elf_check_relocs): Remove DEBUG code. Use short-cuts to dynamic sections. Localise vars. Modify code for refcounts starting from zero. Don't allocate here, or force symbols dynamic. Don't copy all relocs if shared, select ones we need. Add code to track possible copy relocs for non-shared link. (ppc64_elf_gc_mark_hook): Update comment. (ppc64_elf_gc_sweep_hook): Sweep dynrelocs too. (ppc64_elf_adjust_dynamic_symbol): Remove DEBUG code. Rewrite .plt code for reference counting garbage collection. Don't create .plt entries for functions that don't comply with ABI naming convention, and don't allocate .plt space here. Use short-cuts to dynamic sections. If possible, keep dynamic relocations instead of using copy relocs. Remove confused comments. (ppc_adjust_dynindx): Delete. (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. (allocate_dynrelocs): New function. (readonly_dynrelocs): New function. (ppc64_elf_size_dynamic_sections): Rewrite. Allocate local .got space here, and call allocate_dynrelocs to allocate space for global .plt, .got and reloc sections. Use short-cuts to dynamic sections. Call readonly_dynrelocs to determine whether we need DT_TEXTREL. Don't generate section symbols here, the generic ELF linker code does it for us. (ppc64_elf_final_link): Call regular ELF backend linker rather than gc variety, since we do our own .got handling. (ppc64_elf_relocate_section): Remove DEBUG code. Make use of dynamic section short-cuts. Localise vars, and delay setting. Handle unknown relocs in main switch statement. Replace ugly complicated tests for unresolvable relocs with a simple direct scheme using "unresolved_reloc" var. Test ELF_ST_VISIBILITY before allowing an undefined sym in a shared lib. Do R_*_DS tests after main switch, when we've set addend. Do non-addend insn tweaks before main swithc. Ignore input_section->vma when calculating reloc offsets as it's always zero. Rewrite dynamic reloc handling. Consolidate R_*_HA handling. Handle more relocs. (ppc64_elf_finish_dynamic_symbol): Remove DEBUG code. Make use of dynamic section short-cuts. Reorganise .plt handling code. Remove confused comments. Take note of ELF_LINK_FORCED_LOCAL. Move expressions out of swap_reloca_out function calls. (ppc64_elf_reloc_type_class): New function. (ppc64_elf_info_to_howto): Move common expression to local var. (ppc64_elf_finish_dynamic_sections): Remove DEBUG code. Make use of dynamic section short-cuts. Don't fiddle with section syms here as the ELF linker does it for us. (elf_backend_can_refcount): Define. (bfd_elf64_bfd_link_hash_table_create): Define. (elf_backend_copy_indirect_symbol): Define. (elf_backend_reloc_type_class): Define. (elf_backend_*, bfd_elf64_bfd_* defines): Sort.
2001-09-20 * bfd.c (bfd_archive_filename): New function.Alan Modra1-10/+10
* bfd-in2.h: Regenerate. * aout-adobe.c: Replace bfd_get_filename with bfd_archive_filename in error messages where the bfd is an input bfd. * aout-cris.c: Likewise. * coff-arm.c: Likewise. * coff-mcore.c: Likewise. * coff-ppc.c: Likewise. * coff-rs6000.c: Likewise. * coff-sh.c: Likewise. * coff-tic54x.c: Likewise. * coff-tic80.c: Likewise. * coff64-rs6000.c: Likewise. * coffcode.h: Likewise. * coffgen.c: Likewise. * cofflink.c: Likewise. * ecofflink.c: Likewise. * elf-hppa.h: Likewise. * elf.c: Likewise. * elf32-arm.h: Likewise. * elf32-cris.c: Likewise. * elf32-gen.c: Likewise. * elf32-hppa.c: Likewise. * elf32-i370.c: Likewise. * elf32-i386.c: Likewise. * elf32-m32r.c: Likewise. * elf32-mcore.c: Likewise. * elf32-mips.c: Likewise. * elf32-ppc.c: Likewise. * elf32-s390.c: Likewise. * elf32-sh.c: Likewise. * elf32-sparc.c: Likewise. * elf32-v850.c: Likewise. * elf64-alpha.c: Likewise. * elf64-gen.c: Likewise. * elf64-ppc.c: Likewise. * elf64-s390.c: Likewise. * elf64-sparc.c: Likewise. * elf64-x86-64.c: Likewise. * elflink.h: Likewise. * elfxx-ia64.c: Likewise. * ieee.c: Likewise. * ihex.c: Likewise. * libbfd.c: Likewise. * pdp11.c: Likewise. * pe-mips.c: Likewise. * peicode.h: Likewise. * srec.c: Likewise. * xcofflink.c: Likewise. * elf32-arm.h: Make _bfd_error_handler calls K&R compatible. * elflink.c (_bfd_elf_create_linker_section): Better grammar for error message. * coff-mcore.c (coff_mcore_relocate_section): Internalionalise error message. * elf64-sparc.c (sparc64_elf_add_symbol_hook): Constify stt_types. Consolidate error messages, and split long messages to two lines.
2001-09-20coordinate info->symbolic and info->allow_shlib_undefinedNick Clifton1-1/+3
2001-09-18Touches most files in bfd/, so likely will be blamed for everything..Alan Modra1-24/+29
o bfd_read and bfd_write lose an unnecessary param and become bfd_bread and bfd_bwrite. o bfd_*alloc now all take a bfd_size_type arg, and will error if size_t is too small. eg. 32 bit host, 64 bit bfd, verrry big files or bugs in linker scripts etc. o file_ptr becomes a bfd_signed_vma. Besides matching sizes with various other types involved in handling sections, this should make it easier for bfd to support a 64 bit off_t on 32 bit hosts that provide it. o I've made the H_GET_* and H_PUT_* macros (which invoke bfd_h_{get,put}_*) generally available. They now cast their args to bfd_vma and bfd_byte * as appropriate, which removes a swag of casts from the source. o Bug fixes to bfd_get8, aix386_core_vec, elf32_h8_relax_section, and aout-encap.c. o Zillions of formatting and -Wconversion fixes.
2001-08-27 * config.bfd: Add powerpc64 target. Add powerpc64 vectors toAlan Modra1-0/+3768
targ64_selvecs for 32 bit powerpc targets. * Makefile.am (BFD64_BACKENDS): Add elf64-ppc.lo. (BFD64_BACKENDS_CFILES): Add elf64-ppc.c. Run "make dep-am". * Makefile.in: Regenerate. * configure.in: Add elf64_powerpc vecs. * configure: Regenerate. * cpu-powerpc.c: Default to bfd_mach_ppc_620 entry for 64 bit. * elf.c (prep_headers): EM_PPC64 for 64 bit ppc elf target. * targets.c: Add bfd_elf64_powerpc_vec and bfd_elf64_powerpcle_vec. * elf64-ppc.c: New file. * reloc.c: Add powerpc64 relocs. * libbfd.h: Regenerate. * bfd-in2.h: Regenerate.