aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf64-ppc.c
AgeCommit message (Collapse)AuthorFilesLines
2003-05-15 * elf32-i386.c (allocate_dynrelocs): Use SYMBOL_CALLS_LOCAL.Alan Modra1-2/+8
(elf_i386_relocate_section): Likewise. * elf32-ppc.c (allocate_dynrelocs): Likewise. (ppc_elf_relocate_section): Likewise. * elf64-ppc.c (allocate_dynrelocs): Likewise. (ppc64_elf_relocate_section): Likewise.
2003-05-13 * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Move fromAlan Modra1-21/+5
elf32-ppc.c. Add ELF_LINK_FORCED_LOCAL check. * elf32-ppc.c: (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Delete. (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL for dynreloc check. (ppc_elf_relocate_section): Likewise. * elf64-ppc.c (allocate_dynrelocs): Likewise. (ppc64_elf_relocate_section): Likewise. Use for .got relocs too. (ppc64_elf_adjust_dynamic_symbol): Don't assume symbols with .plt relocs need no other types. * elf32-i386.c (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL for dynreloc check. (elf_i386_relocate_section): Likewise. Use for .got relocs too. (elf_i386_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL for .got relocs.
2003-05-09 * elflink.c (_bfd_elf_link_create_dynamic_sections): Move fromAlan Modra1-9/+9
elflink.h. Replace LOG_FILE_ALIGN with bed->s->log_file_align. (_bfd_elf_create_dynamic_sections): Use bed->s->log_file_align. (bfd_elf_record_link_assignment): Move from elflink.h. (_bfd_elf_merge_symbol): Likewise. (_bfd_elf_add_default_symbol): Likewise. (_bfd_elf_export_symbol): Likewise. (_bfd_elf_link_find_version_dependencies): Likewise. (_bfd_elf_link_assign_sym_version): Likewise. (_bfd_elf_link_read_relocs): Likewise. (_bfd_elf_link_size_reloc_section): Likewise. (_bfd_elf_fix_symbol_flags): Likewise. (_bfd_elf_adjust_dynamic_symbol): Likewise. (_bfd_elf_link_sec_merge_syms): Likewise. (elf_link_read_relocs_from_section): Likewise. Use bed->s->sizeof_rel and bed->s->sizeof_rela. (_bfd_elf_link_output_relocs): Likewise. * elf-bfd.h (struct elf_size_info): Rename file_align to log_file_align. (struct elf_info_failed): Move from elflink.h. (struct elf_assign_sym_version_info): Likewise. (struct elf_find_verdep_info): Likewise. (_bfd_elf_create_dynamic_sections): Delete duplicate declaration. (_bfd_elf_merge_symbol, _bfd_elf_add_default_symbol, _bfd_elf_export_symbol, _bfd_elf_link_find_version_dependencies, _bfd_elf_link_assign_sym_version, _bfd_elf_link_create_dynamic_sections, _bfd_elf_link_read_relocs, _bfd_elf_link_size_reloc_section, _bfd_elf_link_output_relocs, _bfd_elf_fix_symbol_flags, _bfd_elf_adjust_dynamic_symbol, _bfd_elf_link_sec_merge_syms): Declare. (bfd_elf32_link_create_dynamic_sections): Don't declare. (_bfd_elf32_link_read_relocs): Likewise. (bfd_elf64_link_create_dynamic_sections): Likewise. (_bfd_elf64_link_read_relocs): Likewise. * elflink.h: Move lots o' stuff elsewhere. * bfd-in.h (bfd_elf32_record_link_assignment): Don't declare. (bfd_elf64_record_link_assignment): Likewise. (bfd_elf_record_link_assignment): Declare. * bfd-in2.h: Regenerate. * elfcode.h (elf_link_create_dynamic_sections): Don't declare. (NAME(_bfd_elf,size_info)): Adjust for log_file_align. * elf.c (_bfd_elf_init_reloc_shdr): Adjust for bed->s->log_file_align. (assign_file_positions_for_segments): Likewise. (assign_file_positions_except_relocs): Likewise. (swap_out_syms, elfcore_write_note): Likewise. * elf-m10200.c: Adjust for changed function names. * elf-m10300.c: Likewise. * elf32-arm.h: Likewise. * elf32-h8300.c: Likewise. * elf32-hppa.c: Likewise. * elf32-ip2k.c: Likewise. * elf32-m32r.c: Likewise. * elf32-m68hc11.c: Likewise. * elf32-m68hc1x.c: Likewise. * elf32-m68k.c: Likewise. * elf32-mips.c: Likewise. * elf32-ppc.c: Likewise. * elf32-sh.c: Likewise. * elf32-v850.c: Likewise. * elf32-xtensa.c: Likewise. * elf64-alpha.c: Likewise. * elf64-hppa.c: Likewise. * elf64-mmix.c: Likewise. * elf64-ppc.c: Likewise. * elf64-sh64.c: Likewise. * elfxx-ia64.c: Likewise. * elfxx-mips.c: Likewise. (MIPS_ELF_LOG_FILE_ALIGN): Use log_file_align. * elf64-alpha.c (alpha_elf_size_info): Adjust for log_file_align. * elf64-hppa.c (hppa64_elf_size_info): Likewise. * elf64-mips.c (mips_elf64_size_info): Likewise. * elf64-s390.c (s390_elf64_size_info): Likewise. * elf64-sparc.c (sparc64_elf_size_info): Likewise.
2003-05-05 * elf32-i386.c (allocate_dynrelocs): For undef weak syms withAlan Modra1-4/+20
non-default visibility, a) don't make them dynamic, b) discard space for dynamic relocs. * elf64-x86-64.c (allocate_dynrelocs): Likewise. * elf32-ppc.c (allocate_dynrelocs): For undef weak syms with non-default visibility, a) don't allocate plt entries, b) don't allocate .got relocs, c) discard dyn rel space, (ppc_elf_relocate_section): d) don't generate .got relocs, e) don't generate dynamic relocs. * elf64-ppc.c (allocate_dynrelocs): As above. (ppc64_elf_relocate_section): As above.
2003-05-01 * elf32-ppc.c (ppc_elf_copy_indirect_symbol): Test whether theAlan Modra1-9/+18
weakdef sym has already been adjusted before treating it specially. * elf32-i386.c (elf_i386_copy_indirect_symbol): Don't copy ELF_LINK_NON_GOT_REF for weakdefs when symbol already adjusted. * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. (ppc64_elf_check_relocs): Set ELF_LINK_NON_GOT_REF.
2003-03-10 * elf32-ppc.c (ppc_elf_relocate_section): Subtract tls seg vma fromAlan Modra1-6/+15
zero index dynamic tls relocs generated for the GOT. Tidy code. Set "relocation" to 1 on DTPMOD32 relocs. Optimize HA adjustment. * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. * ld-powerpc/tlsso.r: Adjust for corrected zero symbol index relocs. * ld-powerpc/tlsso32.r: Likewise.
2003-03-06 * elf32-ppc.c (ELIMINATE_COPY_RELOCS): Define as one.Alan Modra1-1/+5
(ppc_elf_adjust_dynamic_symbol): For weak symbols, copy ELF_LINK_NON_GOT_REF from weakdef. * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define as one. (ppc64_elf_adjust_dynamic_symbol): For weak symbols, copy ELF_LINK_NON_GOT_REF from weakdef. * elf32-i386.c (ELIMINATE_COPY_RELOCS): Define as one. Use throughout. (elf_i386_adjust_dynamic_symbol): For weak symbols, copy ELF_LINK_NON_GOT_REF from weakdef.
2003-03-06 * elf32-ppc.c (ppc_elf_create_linker_section): Don't capitalizeAlan Modra1-15/+20
error messages. (ELIMINATE_COPY_RELOCS): Define to zero. (ppc_elf_relocate_section): Don't deref htab->tls_sec when calculating TLSLD relocs. Report reloc types on a number of errors. Optimize LOCAL24PC check for non-local syms. Don't capitalize error messages. * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define to zero. (ppc64_elf_relocate_section): Don't deref htab->tls_sec when calculating TLSLD relocs. Report reloc types on a number of errors. Don't capitalize error messages.
2003-02-19 * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define.Alan Modra1-25/+40
(ppc64_elf_check_relocs): Use it. Correct comment. Move SEC_ALLOC test. (ppc64_elf_adjust_dynamic_symbol): Use ELIMINATE_COPY_RELOCS. (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO. (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses, and optimize. Use ELIMINATE_COPY_RELOCS. (ppc64_elf_relocate_section): Likewise.
2003-02-18 * elf32-ppc.c (ppc_elf_relocate_section): Remove unnecessary test.Alan Modra1-72/+66
* elf64-ppc.c (ppc64_elf_tls_optimize): Decrement tlsld_got.refcount on invalid LD relocs. (allocate_dynrelocs): Invalid LD relocs don't use tlsld_got entry. (ppc64_elf_relocate_section): Unify new handling of LD relocs and tlsld_got entry. Use IS_PPC64_TLS_RELOC.
2003-02-17 * elf64-ppc.c (ppc64_elf_relocate_section): Don't init "r". Don'tAlan Modra1-20/+9
rebuild sym name when reporting errors.
2003-02-17Fix the behaviour of --allow-shlib-undefined, so that it does what it claimsNick Clifton1-15/+13
to do. Add an inverse switch. Update the documentation.
2003-02-13 * elf64-ppc.c (ppc64_elf_link_hash_table_create): Init tls_get_addr.Alan Modra1-110/+73
(ppc64_elf_copy_indirect_symbol): Merge tls_mask too. (ppc64_elf_gc_sweep_hook): Simplify removal of dyn_relocs. (allocate_dynrelocs): Don't treat undefined and undefweak specially. (ppc_size_one_stub): Fix warning, and tighten plt entry check. (group_sections): Don't share a stub section if stubs are for a large section. Adjust comment. (ppc64_elf_size_stubs): Roughly double the size left for stubs if !stubs_always_before_branch. (ppc64_elf_relocate_section): Initialize tlsld GOT entry once. Don't treat undefined and undefweak specially when processing dyn relocs.
2003-02-11 * elf64-ppc.c (ppc64_elf_check_relocs): Match versionedAlan Modra1-1/+16
.__tls_get_addr too. (ppc64_elf_tls_setup): Ensure cached tls_get_addr is not indirect.
2003-02-09 * elf64-ppc.c: Rename assorted occurrences of tls_type and similarAlan Modra1-62/+72
variables, structure fields or function params to tls_mask or similar to better reflect usage. (struct got_entry): Comment. (struct ppc_link_hash_entry): Expand comment, and renumber TLS_*. (get_tls_mask): Rename from get_tls_type.
2003-02-09 * elf64-ppc.c (TLS_GD_LD): Don't define..Alan Modra1-223/+325
(TLS_GD): ..define this instead and update all uses. (TLS_TPRELGD): Define. (ppc64_elf_link_hash_table_create): Tweak initialization of init_refcount and init_offset. (ppc64_elf_check_relocs): Add one extra element to t_symndx array. Mark second slot of GD or LD toc entries. (get_tls_type): Return an int. Distinguish toc GD and LD entries from other tls types. (ppc64_elf_tls_setup): New function, split out from.. (ppc64_elf_tls_optimize): ..here. Don't optimize when symbols are defined in a dynamic object. Fix LD optimization. Don't set TLS_TPREL on GD->IE optimization, use TLS_TPRELGD instead. Use get_tls_type return value to properly decide whether toc GD and LD entries can optimize away __tls_get_addr call. Check next reloc after DTPMOD64 to determine GD or LD rather than looking at TLS_LD flag. Don't attempt to adjust got entry tls_type here.. (allocate_dynrelocs): ..instead, adjust got entry tls_type here, and look for possible merges. (ppc64_elf_size_dynamic_sections): Adjust local got entries for optimization. (ppc64_elf_size_stubs): Tweak __tls_get_addr fudge. (ppc64_elf_relocate_section): Rename some vars to better reflect usage. Make use of return value from get_tls_type to properly detect GD and LD optimizations. Split tlsld/gd hi/ha from lo/ds case. Don't handle tls_get_addr removal when looking at REL24 relocs, do it when looking at the previous reloc. Check reloc after DTPMOD64 to determine GD or LD. * elf64-ppc.h (ppc64_elf_tls_setup): Declare.
2003-02-05 * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy got andAlan Modra1-17/+18
plt info when called to transfer weak sym info.
2003-02-04 * reloc.c: Add PPC and PPC64 TLS relocs.Alan Modra1-467/+2411
* libbfd.h: Regenerate. * bfd-in2.h: Regenerate. * elf64-ppc.c (TP_OFFSET, DTP_OFFSET): Declare. (ppc64_elf_howto_raw): Add TLS howto's. Adjust R_PPC64_NONE to be against a 32 bit field. (ppc64_elf_reloc_type_lookup): Handle TLS relocs. (_ppc64_elf_section_data): Add t_symndx and comments. (ppc64_elf_section_data): Use elf_section_data macro. (ppc64_elf_new_section_hook): American spelling. (struct got_entry, struct plt_entry): New. (MUST_BE_DYN_RELOC): Rename from IS_ABSOLUTE_RELOC. (struct ppc_stub_hash_entry): Add "addend" field. (struct ppc_link_hash_entry): Add "tls_type". (TLS_TLS, TLS_GD_LD, TLS_LD, TLS_TPREL, TLS_DTPREL, TLS_EXPLICIT): Define. (struct ppc_link_hash_table): Add tls_sec, tls_get_addr, tlsld_got. (link_hash_newfunc): Init new fields. (ppc64_elf_link_hash_table_create): Likewise. Set init_relcount and init_offset to NULL. (ppc64_elf_copy_indirect_symbol): Copy got and plt info. Don't call _bfd_elf_link_hash_copy_indirect, rather insert relevant code from there. (update_local_sym_info, update_plt_info): New functions. (ppc64_elf_check_relocs): Use them. Handle TLS relocs. Adjust GOT handling to use got.glist rather than got.refcount. Likewise for PLT. (ppc64_elf_gc_sweep_hook): Handle TLS relocs, new GOT and PLT lists. (func_desc_adjust): Adjust for new PLT list. (ppc64_elf_adjust_dynamic_symbol): Likewise. (get_sym_h, get_tls_type): New functions. (ppc64_elf_edit_opd): Remove unused variable. Use get_sym_h. (ppc64_elf_tls_optimize): New function. (allocate_dynrelocs): Adjust for new PLT and GOT lists. Allocate TLS relocs. (ppc64_elf_size_dynamic_sections): Likewise. (ppc_type_of_stub): Adjust for new PLT list. (ppc_build_one_stub): Likewise. (ppc64_elf_size_stubs): Likewise. Use get_sym_h. Treat __tls_get_addr calls specially. (ppc64_elf_relocate_section): Adjust for new GOT and PLT lists. Handle TLS relocs. Report local syms using bfd_elf_local_sym_name. Don't init GOT entries that have a reloc. Generate GOT relocs here.. (ppc64_elf_finish_dynamic_symbol): ..not here. Adjust for PLT list. * elf64-ppc.h (ppc64_elf_tls_optimize): Declare.
2003-01-23include/elf/ChangeLogAlan Modra1-8/+40
* sh.h: Split out various bits to bfd/elf32-sh64.h. include/opcode/ChangeLog * m68hc11.h (cpu6812s): Define. bfd/ChangeLog * elf-bfd.h (struct bfd_elf_section_data): Remove tdata. Change dynindx to an int. Rearrange for better packing. * elf.c (_bfd_elf_new_section_hook): Don't alloc if already done. * elf32-mips.c (bfd_elf32_new_section_hook): Define. * elf32-sh64.h: New. Split out from include/elf/sh.h. (struct _sh64_elf_section_data): New struct. (sh64_elf_section_data): Don't dereference sh64_info (was tdata). * elf32-sh64-com.c: Include elf32-sh64.h. * elf32-sh64.c: Likewise. (sh64_elf_new_section_hook): New function. (bfd_elf32_new_section_hook): Define. (sh64_elf_fake_sections): Adjust for sh64_elf_section_data change. (sh64_bfd_elf_copy_private_section_data): Likewise. (sh64_elf_final_write_processing): Likewise. * elf32-sparc.c (struct elf32_sparc_section_data): New. (elf32_sparc_new_section_hook): New function. (SET_SEC_DO_RELAX, SEC_DO_RELAX): Delete. (sec_do_relax): Define. (elf32_sparc_relax_section): Adjust to use sec_do_relax. (elf32_sparc_relocate_section): Likewise. * elf64-mips.c (bfd_elf64_new_section_hook): Define. * elf64-mmix.c (struct _mmix_elf_section_data): New. (mmix_elf_section_data): Define. Use throughout file. (mmix_elf_new_section_hook): New function. (bfd_elf64_new_section_hook): Define. * elf64-ppc.c (struct _ppc64_elf_section_data): New. (ppc64_elf_section_data): Define. Use throughout. (ppc64_elf_new_section_hook): New function. (bfd_elf64_new_section_hook): Define. * elf64-sparc.c (struct sparc64_elf_section_data): New. (sparc64_elf_new_section_hook): New function. (SET_SEC_DO_RELAX, SEC_DO_RELAX): Delete. (sec_do_relax): Define. (sparc64_elf_relax_section): Adjust to use sec_do_relax. (sparc64_elf_relocate_section): Likewise. (bfd_elf64_new_section_hook): Define. * elfn32-mips.c (bfd_elf32_new_section_hook): Define. * elfxx-mips.c (struct _mips_elf_section_data): New. (mips_elf_section_data): Define. Use throughout. (_bfd_mips_elf_new_section_hook): New function. (mips_elf_create_got_section): Don't alloc used_by_bfd. * elfxx-mips.h (_bfd_mips_elf_new_section_hook): Declare. * elfxx-target.h (bfd_elfNN_new_section_hook): Add #ifndef. * Makefile.am: Run "make dep-am". * Makefile.in: Regenerate. opcodes/ChangeLog * sh64-dis.c: Include elf32-sh64.h. * Makefile.am: Run "make dep-am". * Makefile.in: Regenerate. gas/ChangeLog * config/tc-sh64.c (shmedia_frob_section_type): Adjust for changed sh64_elf_section_data. * config/tc-sh64.h: Include elf32-sh64.h. * config/tc-m68hc11.c: Don't include stdio.h. (md_show_usage): Fix missing continuation. * Makefile.am: Run "make dep-am". * Makefile.in: Regenerate. ld/ChangeLog * emultempl/sh64elf.em: Include elf32-sh64.h. (sh64_elf_${EMULATION_NAME}_before_allocation): Adjust for changed sh64_elf_section_data. (sh64_elf_${EMULATION_NAME}_after_allocation): Likewise.
2003-01-16 * elf64-ppc.c: Include elf/ppc64.h rather than elf/ppc.h.Alan Modra1-34/+33
(R_PPC_*): Rename all occurrences to R_PPC64_*. (R_PPC64_ADDR30): Rename all occurrences to R_PPC64_REL30. (enum elf_ppc_reloc_type): Ditto to enum elf_ppc64_reloc_type. (ppc64_elf_gc_sweep_hook): Handle R_PPC64_REL30 along with other relative relocs, not with absolute ones. * Makefile.am: Run "make dep-am". * Makefile.in: Regenerate. * po/SRC-POTFILES.in: Regenerate.
2003-01-09 * elf32-ppc.c (ppc_elf_relocate_section): Adjust addend for GOT16_HA.Alan Modra1-1/+3
* elf64-ppc.c (ppc64_elf_relocate_section): Likewise. PLTGOT16_HA too.
2002-12-12 * elf32-i386.c (elf_i386_finish_dynamic_sections): Add output_offsetAlan Modra1-12/+28
to DT_JMPREL. Use srelplt input section size for DT_PLTRELSZ and DT_RELSZ adjustment, not output section. Avoid writing tags when unchanged. Don't assume linker script is sane, adjust DT_REL too. * elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Just use raw size of srelplt for DT_PLTRELSZ. Use srelplt input section size for DT_RELASZ adjustment, not output section. Avoid writing tags when unchanged. Adjust DT_RELA. * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Tweaks for better formatting. Avoid writing tags when unchanged. Adjust DT_RELA.
2002-12-04 * elf64-ppc.c (ppc64_elf_edit_opd): Correct typo.Alan Modra1-1/+1
2002-11-30s/boolean/bfd_boolean/ s/true/TRUE/ s/false/FALSE/. SimplifyAlan Modra1-392/+392
comparisons of bfd_boolean vars with TRUE/FALSE. Formatting.
2002-11-28include/elf/ChangeLogAlan Modra1-21/+23
* internal.h (elf32_internal_ehdr, Elf32_Internal_Ehdr, elf64_internal_ehdr, Elf64_Internal_Ehdr, elf32_internal_phdr, Elf32_Internal_Phdr, elf64_internal_phdr, Elf64_Internal_Phdr, elf32_internal_shdr, Elf32_Internal_Shdr, elf64_internal_shdr, Elf64_Internal_Shdr, elf32_internal_sym, elf64_internal_sym, Elf32_Internal_Sym, Elf64_Internal_Sym, Elf32_Internal_Note, elf32_internal_note, elf32_internal_rel, Elf32_Internal_Rel, elf64_internal_rel, Elf64_Internal_Rel, elf32_internal_rela, elf64_internal_rela, Elf32_Internal_Rela, Elf64_Internal_Rela, elf32_internal_dyn, elf64_internal_dyn, Elf32_Internal_Dyn, Elf64_Internal_Dyn, elf32_internal_verdef, elf64_internal_verdef, elf32_internal_verdaux, elf64_internal_verdaux, elf32_internal_verneed, elf64_internal_verneed, elf32_internal_vernaux, elf64_internal_vernaux, elf32_internal_versym, elf64_internal_versym, Elf32_Internal_Verdef, Elf64_Internal_Verdef, Elf32_Internal_Verdaux, Elf64_Internal_Verdaux, Elf32_Internal_Verneed, Elf64_Internal_Verneed, Elf32_Internal_Vernaux, Elf64_Internal_Vernaux, Elf32_Internal_Versym, Elf64_Internal_Versym, Elf32_Internal_Syminfo, Elf64_Internal_Syminfo): Delete. (Elf_Internal_Rel): Delete. bfd/ChangeLog * elf-bfd.h: Replace occurrences of Elf32_Internal_* and Elf64_Internal_* with Elf_Internal_*. Replace Elf_Internal_Rel with Elf_Internal_Rela. * elf-hppa.h, elf-m10200.c, elf-m10300.c, elf32-arc.c, elf32-arm.h, elf32-avr.c, elf32-cris.c, elf32-d10v.c, elf32-d30v.c, elf32-dlx.c, elf32-fr30.c, elf32-frv.c, elf32-gen.c, elf32-h8300.c, elf32-hppa.c, elf32-i370.c, elf32-i386.c, elf32-i860.c, elf32-i960.c, elf32-ip2k.c, elf32-m32r.c, elf32-m68hc11.c, elf32-m68hc12.c, elf32-m68k.c, elf32-mcore.c, elf32-mips.c, elf32-openrisc.c, elf32-or32.c, elf32-ppc.c, elf32-s390.c, elf32-sh.c, elf32-v850.c, elf32-vax.c, elf32-xstormy16.c, elf64-alpha.c, elf64-gen.c, elf64-hppa.c, elf64-mips.c, elf64-mmix.c, elf64-ppc.c, elf64-s390.c, elf64-sh64.c, elf64-sparc.c, elf64-x86-64.c, elfarm-nabi.c, elfarm-oabi.c, elfcode.h, elflink.h, elfn32-mips.c, elfxx-ia64.c, elfxx-mips.c: Ditto. * elf-hppa.h (elf_hppa_internal_shdr): Delete. Use Elf_Internal_Shdr throughout instead. * elf.c (_bfd_elf_no_info_to_howto_rel): Delete. * elfcode.h (elf_swap_reloca_in): Pass source operand as a bfd_byte *. Remove INLINE keyword. (elf_swap_reloc_in): Likewise. Also clear r_addend. (elf_swap_reloc_out, elf_swap_reloca_out): Pass destination operand as a bfd_byte *. (elf_write_relocs): Consolidate REL and RELA code. (elf_slurp_reloc_table_from_section): Simplify REL code. (NAME(_bfd_elf,size_info)): Populate reloc swap entries. * elf-bfd.h (MAX_INT_RELS_PER_EXT_REL): Define. * elflink.h (elf_link_read_relocs_from_section): Consolidate REL and RELA code. (elf_link_adjust_relocs): Likewise. Don't malloc space for temp reloc array, use a fixed size of MAX_INT_RELS_PER_EXT_REL. (elf_link_output_relocs): Likewise. (elf_reloc_link_order): Likewise. (elf_finish_pointer_linker_section): Likewise. (struct elf_link_sort_rela): Remove union. (elf_link_sort_cmp1): Update to suit. (elf_link_sort_cmp2): Here too. (elf_link_sort_relocs): Consolidate REL and RELA code. Fix memory over-allocation for int_rels_per_ext_rel != 1 case. * elf32-arm.h: Update all bfd_elf32_swap_reloc_out calls. * elf32-i386.c: Likewise. * elf32-cris.c: Likewise for bfd_elf32_swap_reloca_out. * elf32-hppa.c, elf32-i370.c, elf32-m68k.c, elf32-ppc.c, elf32-s390.c, elf32-sh.c, elf32-vax.c, elfxx-mips.c: Likewise. * elf64-alpha.c: Likewise for bfd_elf64_swap_reloca_out. * elf64-hppa.c, elf64-mips.c, elf64-ppc.c, elf64-s390.c, elf64-sh64.c, elf64-sparc.c, elf64-x86-64.c: Likewise. * elfxx-ia64.c: Likewise for bfd_elfNN_swap_reloca_out. * elfxx-mips.c (sort_dynamic_relocs): Likewise for bfd_elf32_swap_reloc_in. * elf32-arm.h: Update elf32_arm_info_to_howto calls. * elf32-mips.c: Likewise for mips_info_to_howto_rel. (mips_elf64_swap_reloc_in): Zero r_addend. (mips_elf64_be_swap_reloc_in): Likewise. (mips_elf64_slurp_one_reloc_table): Simplify. * elf64-alpha.c (alpha_elf_size_info): Populate reloc swap entries. * elf64-hppa.c (hppa64_elf_size_info): Likewise. * elf64-sparc.c (sparc64_elf_size_info): Likewise.
2002-11-19 * elf64-ppc.c (ppc64_elf_edit_opd): When deleting relocs, adjustAlan Modra1-0/+5
rel_hdr.sh_size too.
2002-11-12 * elflink.h (elf_link_add_object_symbols): Optimize stabs forAlan Modra1-18/+51
relocatable link too. (elf_link_input_bfd): When emitting relocs, adjust offsets for eh_frame and stab sections. Zap deleted relocs. (elf_reloc_symbol_deleted_p): Return true for zero r_symndx. (elf_bfd_discard_info): Run for relocatable link too. * elf64-ppc.c (ppc64_elf_edit_opd): Rename from edit_opd. Make global. Handle ld -r case. (ppc64_elf_size_dynamic_sections): Don't call edit_opd from here. * elf64-ppc.h (ppc64_elf_edit_opd): Declare.
2002-11-07 * elf64-ppc.c: Comment typo fixes.Alan Modra1-6/+7
(ppc64_elf_merge_private_bfd_data): Allow BFD_ENDIAN_UNKNOWN input.
2002-10-11 * elf64-ppc.c (edit_opd): Correct local sym adjustment.Alan Modra1-2/+1
2002-10-11Fix numerous occurrences ofAlan Modra1-2/+4
warning: dereferencing type-punned pointer will break strict-aliasing rules
2002-10-11 * elf64-ppc.c (edit_opd): Only zero opd syms when function isAlan Modra1-1/+1
completely removed.
2002-10-08 * elf64-ppc.c (edit_opd): Correct test for discarded sections.Alan Modra1-7/+12
2002-10-07 * elf64-ppc.c (ppc64_elf_build_stubs): Increment .glink indx.Alan Modra1-0/+1
2002-09-26 * elf64-ppc.c (ppc_build_one_stub): Don't build glink stubs here.Alan Modra1-26/+24
(ppc64_elf_build_stubs): Build them here instead.
2002-08-22 * elf-bfd.h (struct elf_backend_data): Add struct elf_backend_dataAlan Modra1-3/+5
param to elf_backend_copy_indirect_symbol. (_bfd_elf_link_hash_copy_indirect): Likewise. * elflink.h (elf_add_default_symbol, elf_fix_symbol_flags): Adjust calls to copy_indirect_symbol. * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise. * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. * elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise. * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. * elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise. * elf64-x86-64.c (elf64_x86_64_copy_indirect_symbol): Likewise. * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. * elfxx-mips.c (_bfd_mips_elf_copy_indirect_symbol): Likewise. * elfxx-mips.h (_bfd_mips_elf_copy_indirect_symbol): Likewise. * elf.c (_bfd_elf_link_hash_copy_indirect): Likewise. Properly test refcounts for "used" values.
2002-08-07 * elf64-ppc.c (edit_opd): Arrange to drop symbols for discarded .opdAlan Modra1-1/+17
entries.
2002-08-06 * elf64-ppc.c (ppc64_elf_howto_raw): Zero all src_mask entries.Alan Modra1-21/+21
2002-07-23 * elf-hppa.h (elf_hppa_relocate_section): If relocatable, returnAlan Modra1-3/+0
immediately. Remove code handling relocatable linking. * elf32-avr.c (elf32_avr_relocate_section): Likewise. * elf32-cris.c (cris_elf_relocate_section): Likewise. * elf32-fr30.c (elf32_frv_relocate_section): Likewise. * elf32-h8300.c (elf32_h8_relocate_section): Likewise. * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. * elf32-v850.c (v850_elf_relocate_section): Likewise. * elf32-vax.c (elf_vax_relocate_section): Likewise. * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. * elf32-avr.c (elf_backend_rela_normal): Define. * elf32-cris.c: Likewise. * elf32-fr30.c: Likewise. * elf32-h8300.c: Likewise. * elf32-hppa.c: Likewise. * elf32-ip2k.c: Likewise. * elf32-sparc.c: Likewise. * elf32-v850.c: Likewise. * elf32-vax.c: Likewise. * elf64-hppa.c: Likewise. * elf64-sparc.c: Likewise. * elf32-fr30.c (elf32_frv_relocate_section): Edit comment. * elf32-i860.c (elf32_i860_relocate_section): Likewise. * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. * elf32-m32r.c (m32r_elf_relocate_section): Likewise. * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. * elf-m10200.c (USE_RELA): Don't define. * elf-m10300.c: Likewise. * elf32-i370.c: Likewise. * elf32-ip2k.c: Likewise. * elf32-m68k.c: Likewise. * elf32-mcore.c: Likewise. * elf32-ppc.c: Likewise. * elf32-s390.c: Likewise. * elf32-vax.c: Likewise. * elf64-ppc.c: Likewise. * elf64-s390.c: Likewise. * elf64-x86-64.c: Likewise. * elfxx-ia64.c: Likewise. * elf32-avr.c (USE_REL): Don't undef. * elf32-ip2k.c: Likewise.
2002-07-11 * elf32-i386.c (elf_i386_relocate_section): Don't complain aboutAlan Modra1-6/+4
unresolved debugging relocs in dynamic applications. * elf32-s390.c (elf_s390_relocate_section): Likewise. * elf32-sparc.c (elf32_sparc_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.
2002-07-10 * elf64-ppc.c (ONES): Define.Alan Modra1-46/+48
(ppc64_elf_howto_table): Use ONES here to avoid warnings. Fill in missing src_mask fields. Tweak R_PPC64_NONE, R_PPC64_COPY. Fill in missing dst_mask fields on R_PPC64_PLT32, R_PPC64_PLTREL32.
2002-07-10 * elf64-ppc.c (ppc64_elf_get_symbol_info): Delete.Alan Modra1-164/+1
(ppc64_elf_set_private_flags): Delete. (ppc64_elf_section_from_shdr): Delete. (ppc64_elf_merge_private_bfd_data): Remove flag checking/merging code. (ppc64_elf_fake_sections): Delete. (bfd_elf64_bfd_set_private_flags): Don't define. (bfd_elf64_get_symbol_info): Likewise. (elf_backend_section_from_shdr): Likewise. (elf_backend_fake_sections): Likewise.
2002-07-07 * elf-bfd.h (struct elf_reloc_cookie): Remove locsym_shndx,Alan Modra1-154/+76
change type of locsyms. (bfd_elf_get_elf_syms): Declare. * elf.c (bfd_elf_get_elf_syms): New function. (group_signature): Use bfd_elf_get_elf_syms. (bfd_section_from_r_symndx): Likewise. * elfcode.h (elf_slurp_symbol_table): Likewise. * elflink.h (elf_link_is_defined_archive_symbol): Likewise. (elf_link_add_object_symbols): Likewise. Reorganise to increase locality of various data structures. Properly free internal relocs. (elf_bfd_final_link): Properly free internal relocs. (elf_link_check_versioned_symbol): Use bfd_elf_get_elf_syms. (elf_link_input_bfd): Likewise. (elf_gc_mark): Likewise. Properly free internal relocs. (elf_gc_sweep): Properly free internal relocs. (elf_reloc_symbol_deleted_p): No need to swap syms in. (elf_bfd_discard_info): Use bfd_elf_get_elf_syms. Properly free internal relocs. * elf-m10200.c (mn10200_elf_relax_section): Use bfd_elf_get_elf_syms. Properly free possibly cached info. (mn10200_elf_relax_delete_bytes): Remove symbol swapping code. (mn10200_elf_symbol_address_p): Pass in internal syms. Remove symbol swapping code. (mn10200_elf_get_relocated_section_contents): Use bfd_elf_get_elf_syms. Properly free possibly cached info. * elf-m10300.c (mn10300_elf_relax_section): As above for elf-m10200.c. (mn10300_elf_relax_delete_bytes): Likewise. (mn10300_elf_symbol_address_p): Likewise. (mn10300_elf_get_relocated_section_contents): Likewise. * elf32-h8300.c (elf32_h8_relax_section): As above for elf-m10200.c. (elf32_h8_relax_delete_bytes): Likewise. (elf32_h8_symbol_address_p): Likewise. (elf32_h8_get_relocated_section_contents): Likewise. * elf32-m32r.c (m32r_elf_relax_section): As above for elf-m10200.c. (m32r_elf_relax_delete_bytes): Likewise. (m32r_elf_get_relocated_section_contents): Likewise. * elf32-sh.c (sh_elf_reloc_loop): Free section contents using elf_section_data to determine whether cached. (sh_elf_relax_section): As above for elf-m10200.c. (sh_elf_relax_delete_bytes): Likewise. (sh_elf_get_relocated_section_contents): Likewise. * elf32-xstormy16.c (xstormy16_elf_relax_section): As above. * elf64-alpha.c (elf64_alpha_relax_section): As above. Also delay reading of local syms. * elf64-mmix.c (mmix_elf_relax_section): Likewise. * elf64-sh64.c (sh_elf64_get_relocated_section_contents): As above. * elfxx-ia64.c (elfNN_ia64_relax_section): As above. * elfxx-mips.c (_bfd_mips_elf_check_relocs): Properly free internal relocs. * elf32-arm.h (bfd_elf32_arm_process_before_allocation): Properly free internal relocs and section contents. Don't read symbols. * elf32-hppa.c (get_local_syms): Use bfd_elf_get_elf_syms. (elf32_hppa_size_stubs): Don't free local syms. * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Delay reading of local syms. Use bfd_elf_get_elf_syms. Properly free possibly cached info. * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise. * elf64-hppa.c (elf64_hppa_check_relocs): Use bfd_elf_get_elf_syms. * elf64-ppc.c (struct ppc_link_hash_table): Delete bfd_count and all_local_syms. (get_local_syms): Delete function. (edit_opd): Use bfd_elf_get_elf_syms. Free on error exit. Cache on exit. (ppc64_elf_size_stubs): Use bfd_elf_get_elf_syms. Free/cache on exit.
2002-07-01 * elflink.h (elf_gc_mark): Pass in the section whose relocs we areAlan Modra1-78/+417
examining to gc_mark_hook, rather than the bfd. (elf_gc_sections): Adjust. * elf-bfd.h (struct elf_backend_data <gc_mark_hook>): Likewise. * elf-m10300.c (mn10300_elf_gc_mark_hook): Likewise. * 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-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-vax.c (elf_vax_gc_mark_hook): Likewise. * elf32-xstormy16.c (xstormy16_elf_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-sh64.c (sh_elf64_gc_mark_hook): Likewise. * elfxx-mips.c (_bfd_mips_elf_gc_mark_hook): Likewise. * elfxx-mips.h (_bfd_mips_elf_gc_mark_hook): Likewise. * elf64-x86-64.c (elf64_x86_64_gc_mark_hook): Likewise. * elf32-frv.c (elf32_frv_gc_mark_hook): Likewise. Also remove redundant local sym tests. * elf64-ppc.c (struct ppc_link_hash_entry): Add is_entry. (link_hash_newfunc): Init is_entry. (ppc64_elf_copy_indirect_symbol): Copy is_entry. (ppc64_elf_link_hash_table_create): Init all_local_syms. (create_linkage_sections): Use bfd_make_section_anyway rather than bfd_make_section. (ppc64_elf_mark_entry_syms): New function. (ppc64_elf_check_relocs): Don't bother testing elf_bad_symtab. Set up opd entry to function section map. (ppc64_elf_gc_mark_hook): Special case opd section relocs, and relocs that reference the opd section. (edit_opd): New function. (ppc64_elf_size_dynamic_sections): Call get_local_syms and edit_opd. (ppc64_elf_setup_section_lists): Don't calculate htab->bfd_count here. (get_local_syms): Do so here. Exit if we already have local syms. Remove bogus comment imported from elf32-hppa.c. Don't attempt to read local syms on non-ELF input. (ppc64_elf_size_stubs): Call _bfd_elf64_link_read_relocs rather than duplicating it's function here. Adjust free of internal relocs to suit. (ppc64_elf_relocate_section): Adjust local syms in opd section. * elf64-ppc.h (ppc64_elf_mark_entry_syms): Declare. * elf32-hppa.c (elf32_hppa_size_stubs): Call _bfd_elf32_link_read_relocs rather than duplicating it's function here. Adjust free of internal relocs to suit.
2002-06-27 * cpu-powerpc.c: Comment on ordering of arch_info.Alan Modra1-0/+24
* elf32-ppc.c (ppc_elf_object_p): New function. (elf_backend_object_p): Define. * elf64-ppc.c (ppc64_elf_object_p): New function. (elf_backend_object_p): Define.
2002-06-25 * elf64-ppc.c (ppc_add_stub): Replace strcpy/strncpy with memcpy.Alan Modra1-3/+5
* elf32-hppa.c (hppa_add_stub): Likewise. * elflink.c (_bfd_elf_link_record_dynamic_symbol): Likewise. * elflink.h (elf_add_default_symbol): Fix comment typo. (elf_add_default_symbol): Replace strcpy and strncpy with memcpy. (elf_link_add_object_symbols): Likewise. (elf_link_assign_sym_version): Likewise. * hash.c (bfd_hash_lookup): Likewise. * linker.c (_bfd_generic_link_add_one_symbol): Likewise. * section.c (bfd_get_unique_section_name): Likewise. * syms.c (_bfd_stab_section_find_nearest_line): Likewise. * elf.c (_bfd_elf_make_section_from_phdr): Likewise. (assign_section_numbers): Likewise. (_bfd_elfcore_make_pseudosection): Likewise. (elfcore_grok_lwpstatus): Likewise. (elfcore_grok_win32pstatus): Likewise. (elfcore_write_note): Constify input params. Use PTR instead of void *. Include terminating NUL in namesz. Correct padding. Support NULL "name" param. Use memcpy instead of strcpy. (elfcore_write_prpsinfo): Constify input params. (elfcore_write_prstatus): Likewise. Use PTR instead of void *. (elfcore_write_lwpstatus): Likewise. (elfcore_write_pstatus): Likewise. (elfcore_write_prfpreg): Likewise. (elfcore_write_prxfpreg): Likewise. * elf-bfd.h (elfcore_write_note): Update declaration. (elfcore_write_prpsinfo): Likewise. (elfcore_write_prstatus): Likewise. (elfcore_write_pstatus): Likewise. (elfcore_write_prfpreg): Likewise. (elfcore_write_prxfpreg): Likewise. (elfcore_write_lwpstatus): Likewise.
2002-06-07 * elf64-ppc.c (ppc64_elf_relocate_section): Allow unresolvedAlan Modra1-10/+15
relocs in opd for non-shared too.
2002-06-06elf_swap_symbol_in args should be "const PTR", not "const PTR *".Alan Modra1-2/+2
2002-06-05 * elf-bfd.h (struct elf_size_info): Add swap_symbol_in field.Alan Modra1-1/+2
(bfd_elf32_swap_symbol_in): Update prototype. (bfd_elf64_swap_symbol_in): Likewise. * elfcode.h (elf_swap_symbol_in): Change input args to const PTR *. (elf_slurp_symbol_table): Adjust call to elf_swap_symbol_in. * elflink.h (elf_link_is_defined_archive_symbol): Likewise. (elf_link_add_object_symbols): Likewise. (elf_link_record_local_dynamic_symbol): Likewise. (elf_link_input_bfd): Likewise. (elf_gc_mark): Likewise. (elf_reloc_symbol_deleted_p): Likewise. * elf-m10200.c (mn10200_elf_relax_section): Likewise. (mn10200_elf_relax_delete_bytes): Likewise. (mn10200_elf_symbol_address_p): Likewise. (mn10200_elf_get_relocated_section_contents): Likewise. * elf-m10300.c (mn10300_elf_relax_section): Likewise. (mn10300_elf_relax_section): Likewise. (mn10300_elf_relax_delete_bytes): Likewise. (mn10300_elf_symbol_address_p): Likewise. (mn10300_elf_get_relocated_section_contents): Likewise. * elf32-h8300.c (elf32_h8_relax_section): Likewise. (elf32_h8_relax_delete_bytes): Likewise. (elf32_h8_symbol_address_p): Likewise. (elf32_h8_get_relocated_section_contents): Likewise. * elf32-hppa.c (get_local_syms): Likewise. * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Likewise. * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise. * elf32-sh.c (sh_elf_relax_section): Likewise. (sh_elf_relax_delete_bytes): Likewise. (sh_elf_get_relocated_section_contents): Likewise. * elf32-xstormy16.c (xstormy16_elf_relax_section): Likewise. * elf64-alpha.c (elf64_alpha_relax_section): Likewise. * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. * elf64-mmix.c (mmix_elf_relax_section): Likewise. * elf64-ppc.c (get_local_syms): Likewise. * elf64-sh64.c (sh_elf64_get_relocated_section_contents): Likewise. * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. * elfcode.h (NAME(_bfd_elf,size_info)): Update initialiser. * elf64-alpha.c (alpha_elf_size_info): Likewise. * elf64-hppa.c (hppa64_elf_size_info): Likewise. * elf64-mips.c (mips_elf64_size_info): Likewise. * elf64-s390.c (s390_elf64_size_info): Likewise. * elf64-sparc.c (sparc64_elf_size_info): Likewise.
2002-06-04 * elf.c (bfd_section_from_shdr): Make "name" const.Alan Modra1-2/+2
* elf-bfd.h (elf_backend_section_from_shdr): Likewise. * elf32-i370.c (i370_elf_section_from_shdr): Likewise. * elf32-ppc.c (ppc_elf_section_from_shdr): Likewise. * elf32-sh64.c (sh64_backend_section_from_shdr): Likewise. * elf32-v850.c (v850_elf_section_from_shdr): Likewise. * elf64-alpha.c (elf64_alpha_section_from_shdr): Likewise. * elf64-hppa.c (elf64_hppa_section_from_shdr): Likewise. * elf64-ppc.c (ppc64_elf_section_from_shdr): Likewise. * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Likewise. * elfxx-mips.c (_bfd_mips_elf_section_from_shdr): Likewise. * elfxx-mips.h (_bfd_mips_elf_section_from_shdr): Likewise.
2002-06-03 * elf32-arc.c: Fix formatting.Kazu Hirata1-15/+15
* elf32-arm.h: Likewise. * elf32-cris.c: Likewise. * elf32-dlx.c: Likewise. * elf32-hppa.c: Likewise. * elf32-i386.c: Likewise. * elf32-i386qnx.c: Likewise. * elf32-or32.c: Likewise. * elf32-s390.c: Likewise. * elf32-sh64.c: Likewise. * elf32-vax.c: Likewise. * elf32-xstormy16.c: Likewise. * elf64-alpha.c: Likewise. * elf64-mmix.c: Likewise. * elf64-ppc.c: Likewise. * elf64-s390.c: Likewise. * elf64-sh64.c: Likewise. * elf64-x86-64.c: Likewise.