aboutsummaryrefslogtreecommitdiff
path: root/ld/emultempl/ppc64elf.em
AgeCommit message (Collapse)AuthorFilesLines
2009-08-10 PR 10474Alan Modra1-19/+26
* ldemul.c (after_allocation_default): Run lang_relax_sections. * ldlang.h (lang_relax_sections): Declare. * ldlang.c (relax_sections): Delete. (lang_relax_sections): New function. (lang_process): Don't relax directly from here. * emultempl/alphaelf.em (alpha_finish): Call finish_default. * emultempl/armelf.em (arm_elf_after_allocation): Delete. Move body.. (gld${EMULATION_NAME}_finish): ..to here. Move existing code.. (gld${EMULATION_NAME}_after_allocation): ..to here. New function. (LDEMUL_AFTER_ALLOCATION): Update. * emultempl/avrelf.em (avr_elf_finish, LDEMUL_FINISH): Delete. (avr_elf_after_allocation): New function. (LDEMUL_AFTER_ALLOCATION): Define. * emultempl/elf-generic.em (gld${EMULATION_NAME}_map_segments): Call lang_relax_sections. * emultempl/elf32.em (gld${EMULATION_NAME}_finish): Delete. Move.. (gld${EMULATION_NAME}_after_allocation): ..code to here. New function. (LDEMUL_AFTER_ALLOCATION, LDEMUL_FINISH): Update. * emultempl/genelf.em (gld${EMULATION_NAME}_finish): Delete. Move.. (gld${EMULATION_NAME}_after_allocation): ..code to here. New function. (LDEMUL_FINISH): Delete. (LDEMUL_AFTER_ALLOCATION): Define. * emultempl/hppaelf.em (gld${EMULATION_NAME}_finish): Delete. Move.. (gld${EMULATION_NAME}_after_allocation): ..to here. New function. (LDEMUL_FINISH): Delete. (LDEMUL_AFTER_ALLOCATION): Define. * emultempl/m68hc1xelf.em (m68hc11elf_finish): Delete. Move.. (m68hc11elf_after_allocation): ..to here. New function. (LDEMUL_FINISH): Delete. (LDEMUL_AFTER_ALLOCATION): Define. * emultempl/m68kelf.em (m68k_elf_after_allocation): Call gld${EMULATION_NAME}_after_allocation. * emultempl/mmix-elfnmmo.em (mmix_after_allocation): Call gld${EMULATION_NAME}_after_allocation. * emultempl/mmo.em (mmo_finish): Delete. Move body.. (gld${EMULATION_NAME}_after_allocation): ..to here. New function. (LDEMUL_FINISH): Define. * emultempl/ppc64elf.em (ppc_layout_sections_again): Set elf_gp. (gld${EMULATION_NAME}_finish): Move code sizing sections.. (gld${EMULATION_NAME}_after_allocation): ..to here. * emultempl/sh64elf.em (sh64_elf_${EMULATION_NAME}_after_allocation): Call gld${EMULATION_NAME}_after_allocation. * emultempl/spuelf.em (gld${EMULATION_NAME}_finish): Delete bfd_elf_discard_info and map_segments call.
2008-11-26include/Alan Modra1-18/+7
PR 7047 * bfdlink.h (struct bfd_elf_version_expr): Delete "symbol". Add "literal". bfd/ PR 7047 * configure.in: Bump version. * configure: Regenerate. * elflink.c (_bfd_elf_link_assign_sym_version): Continue matching against version nodes when a global match is a wildcard. Similarly continue matching on local wildcard matches, rather than only continuing for "*". Have any global wildcard match override a local wildcard match. Correct logic hiding unversioned symbol. (bfd_elf_size_dynamic_sections): Update for changes to struct bfd_elf_version_expr. ld/ PR 7047 * emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern): Update for changes to struct bfd_elf_version_expr. * ldlang.c (lang_vers_match, version_expr_head_hash): Likewise. (version_expr_head_eq, lang_finalize_version_expr_head): Likewise. (lang_register_vers_node): Likewise. (lang_new_vers_pattern): Likewise. Ensure "literal" is set when no glob chars found in "pattern". (realsymbol): Correct backslash quote logic. * ld.texinfo (VERSION): Warn about global wildcards.
2008-07-07 * emultempl/armelf.em (elf32_arm_add_stub_section): UseAlan Modra1-5/+3
bfd_make_section_with_flags. * emultempl/avrelf.em (avr_elf_create_output_section_statements): Likewise. * emultempl/hppaelf.em (hppaelf_add_stub_section): Likewise. * emultempl/m68hc1xelf.em (m68hc11elf_add_stub_section): Likewise. * emultempl/m68kcoff.em (gld${EMULATION_NAME}_after_open): Likewise. * emultempl/m68kelf.em (m68k_elf_after_open): Likewise. * emultempl/ppc64elf.em (ppc_add_stub_section): Likewise. * emultempl/sh64elf.em (sh64_elf_${EMULATION_NAME}_before_allocation): Likewise.
2008-02-15 * emultempl/alphaelf.em (alpha_after_open): Use elf_object_id.Alan Modra1-5/+2
* emultempl/hppaelf.em (hppaelf_create_output_section_statements): Likewise. * emultempl/ppc64elf.em (ppc_create_output_section_statements): Likewise. * emultempl/ppc32elf.em (is_ppc_elf32_vec): Delete. Replace all uses with.. (is_ppc_elf): ..this new macro.
2008-02-15include/Alan Modra1-18/+22
* bfdlink.h (struct bfd_link_hash_table): Delete creator field. (struct bfd_link_info): Add output_bfd. bfd/ * elflink.c: Replace all accesses to hash->creator field with output_bfd->xvec. * cofflink.c: Likewise. * coff-h8300.c: Likewise. * ecoff.c: Likewise. * elf32-m68hc1x.c: Likewise. * elf32-ppc.c: Likewise. * elf64-alpha.c: Likewise. * elf64-ppc.c: Likewise. * elf64-sparc.c: Likewise. * elfxx-mips.c: Likewise. * i386linux.c: Likewise. * m68klinux.c: Likewise. * sparclinux.c: Likewise. * sunos.c: Likewise. * xcofflink.c: Likewise. * linker.c: Likewise. (_bfd_link_hash_table_init): Don't store creator. ld/ * ldmain.h (output_bfd): Delete. * ldmain.c (output_bfd): Delete. Replace all occurrences of output_bfd with link_info.output_bfd. * ldcref.c: Likewise. * ldctor.c: Likewise. * ldemul.c: Likewise. * ldexp.c: Likewise. * ldfile.c: Likewise. * ldlang.c: Likewise. * ldmisc.c: Likewise. * ldwrite.c: Likewise. * pe-dll.c: Likewise. * emultempl/aix.em: Likewise. * emultempl/alphaelf.em: Likewise. * emultempl/armcoff.em: Likewise. * emultempl/armelf.em: Likewise. * emultempl/avrelf.em: Likewise. * emultempl/beos.em: Likewise. * emultempl/elf-generic.em: Likewise. * emultempl/elf32.em: Likewise. * emultempl/gld960.em: Likewise. * emultempl/hppaelf.em: Likewise. * emultempl/irix.em: Likewise. * emultempl/linux.em: Likewise. * emultempl/lnk960.em: Likewise. * emultempl/m68hc1xelf.em: Likewise. * emultempl/mmix-elfnmmo.em: Likewise. * emultempl/mmo.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/pep.em: Likewise. * emultempl/ppc32elf.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/scoreelf.em: Likewise. * emultempl/sh64elf.em: Likewise. * emultempl/spuelf.em: Likewise. * emultempl/sunos.em: Likewise. * emultempl/vanilla.em: Likewise. * emultempl/vxworks.em: Likewise. * emultempl/xtensaelf.em: Likewise. * emultempl/z80.em: Likewise. * ldlang.c (open_output): Don't return output, instead write link_info_output_bfd directly. * emultempl/alphaelf.em: Replace occurrences of link_info.hash->creator with link_info.output_bfd->xvec. * emultempl/hppaelf.em: Likewise. * emultempl/ppc32elf.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/spuelf.em: Likewise.
2008-01-15bfd/Alan Modra1-3/+4
PR 5604 * elf-bfd.h (struct elf_backend_data): Add gc_keep. Remove param names from others. (_bfd_elf_gc_keep): Declare. * elfxx-target.h (elf_backend_gc_keep): Define. (elfNN_bed): Init new field. * elflink.c (_bfd_elf_gc_keep): New function. (bfd_elf_gc_sections): Call gc_keep. * elf64-ppc.c (elf_backend_gc_keep): Define. (struct _ppc64_elf_section_data): Move .opd related fields to a struct so they don't occupy the same storage. Adjust accesses throughout file. (ppc64_elf_gc_keep): New function, split out from.. (ppc64_elf_gc_mark_hook): ..here. Don't call _bfd_elf_gc_mark to mark .opd section, just set gc_mark. (ppc64_elf_edit_opd): Remove no_opd_opt parm. Don't set opd->adjust unless we are changing .opd. Test non-NULL opd->adjust at all accesses throughout file. * elf64-ppc.h (ppc64_elf_edit_opd): Update prototype. ld/ PR 5604 * ldlang.c (lang_gc_sections): Move code to set SEC_KEEP on entry syms to _bfd_elf_gc_keep. * emultempl/ppc64elf.em (ppc_before_allocation): Don't call ppc64_elf_edit_opd if no_opd_opt.
2007-08-17 * emultempl/alphaelf.em: Format option help.Alan Modra1-19/+20
* emultempl/armcoff.em: Likewise. * emultempl/armelf.em: Likewise. * emultempl/avrelf.em: Likewise. * emultempl/elf32.em: Likewise. * emultempl/hppaelf.em: Likewise. * emultempl/ia64elf.em: Likewise. * emultempl/m68hc1xelf.em: Likewise. * emultempl/ppc32elf.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/scoreelf.em: Likewise. * emultempl/spuelf.em: Likewise. * emultempl/ticoff.em: Likewise. * emultempl/vxworks.em: Likewise. * emultempl/xtensaelf.em: Likewise.
2007-07-192007-07-19 Roland McGrath <roland@redhat.com>Roland McGrath1-2/+2
* genscripts.sh (source_em, fragment): New sh functions. Truncate e${EMULATION_NAME}.c file before .em script fills it. Use source_em in place of . for the .em script. * emultempl/generic.em: Use fragment and source_em functions. * emultempl/aix.em: Likewise. * emultempl/alphaelf.em: Likewise. * emultempl/armcoff.em: Likewise. * emultempl/armelf.em: Likewise. * emultempl/avrelf.em: Likewise. * emultempl/beos.em: Likewise. * emultempl/cr16elf.em: Likewise. * emultempl/crxelf.em: Likewise. * emultempl/elf-generic.em: Likewise. * emultempl/elf32.em: Likewise. * emultempl/genelf.em: Likewise. * emultempl/gld960.em: Likewise. * emultempl/gld960c.em: Likewise. * emultempl/hppaelf.em: Likewise. * emultempl/ia64elf.em: Likewise. * emultempl/irix.em: Likewise. * emultempl/linux.em: Likewise. * emultempl/lnk960.em: Likewise. * emultempl/m68hc1xelf.em: Likewise. * emultempl/m68kcoff.em: Likewise. * emultempl/m68kelf.em: Likewise. * emultempl/mipsecoff.em: Likewise. * emultempl/mipself.em: Likewise. * emultempl/mmix-elfnmmo.em: Likewise. * emultempl/mmixelf.em: Likewise. * emultempl/mmo.em: Likewise. * emultempl/needrelax.em: Likewise. * emultempl/netbsd.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/pep.em: Likewise. * emultempl/ppc32elf.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/scoreelf.em: Likewise. * emultempl/sh64elf.em: Likewise. * emultempl/spuelf.em: Likewise. * emultempl/sunos.em: Likewise. * emultempl/ticoff.em: Likewise. * emultempl/vanilla.em: Likewise. * emultempl/vxworks.em: Likewise. * emultempl/xtensaelf.em: Likewise. * emultempl/z80.em: Likewise.
2007-07-06Update sources to GPLv3Nick Clifton1-4/+5
2007-05-14 * emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern):Andreas Schwab1-6/+11
Handle null pattern. testsuite/: * ld-elf/dl2a.list: New file. * ld-elf/shared.exp: Add test using --dynamic-list=dl2a.list.
2007-03-26 * Makefile.am: Add dependency on ldemul-list.h for powerpc andAlan Modra1-0/+18
spu target emul files. * configure.in: Check for mkstemp and waitpid. * Makefile.in: Regenerate. * configure: Regenerate. * config.in: Regenerate. * ldlang.c (input_file_chain): Make global. (lang_add_input_file): Don't set lang_has_input_file here. * ldlang.h (input_file_chain): Declare. * emultempl/ppc32elf.em (ppc_recognized_file): New function. (LDEMUL_RECOGNIZED_FILE): Define. * emultempl/ppc64elf.em (ppc64_recognized_file): New function. (LDEMUL_RECOGNIZED_FILE): Define. * emultempl/spuelf.em (struct tflist): New. (tmp_file_list): New var.
2007-02-13bfd/Alan Modra1-1/+1
* elf64-ppc.c (create_linkage_sections): Use section ".branch_lt" for branch lookup table. ld/ * emulparams/elf64ppc.sh (OTHER_READWRITE_SECTIONS): Add ".branch_lt". * emultempl/ppc64elf.em (ppc_add_stub_section): Create without SEC_RELOC flag set. ld/testsuite/ * ld-powerpc/relbrlt.d: Update. * ld-powerpc/tlsexe.r: Update. * ld-powerpc/tlsexetoc.r: Update. * ld-powerpc/tlsso.r: Update. * ld-powerpc/tlstocso.r: Update.
2006-06-20bfd/Alan Modra1-7/+6
* elf-bfd.h: Formatting. (_bfd_elf_map_sections_to_segments): Declare. * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame_hdr): Don't clear program_header_size. * elf.c (get_program_header_size): Move. Don't use or set saved program_header_size here. (elf_modify_segment_map): New function. Split out from.. (assign_file_positions_for_load_sections): ..here. Assert header size is correct. Remove dead code. (_bfd_elf_map_sections_to_segments): Rename from map_sections_to_segments. Make global. Use get_program_header_size when we need estimate of header size. Call elf_modify_segment_map. Set program_header_size. (print_segment_map): Delete. (_bfd_elf_sizeof_headers): If segment_map available, get the actual size. * elf32-arm.c (elf32_arm_symbian_modify_segment_map): Make safe for calling more than once. * elf32-bfin.c (elf32_bfinfdpic_modify_segment_map): Likewise. * elf32-frv.c (elf32_frvfdpic_modify_segment_map): Likewise. * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Likewise. * elf32-i370.c (elf_backend_add_symbol_hook): Delete. (elf_backend_additional_program_headers): Delete. (elf_backend_modify_segment_map): Delete. * elf64-hppa.c (elf64_hppa_modify_segment_map): Convert to ISO C. * elfxx-ia64.c (elfNN_ia64_modify_segment_map): Likewise. * doc/bfdint.texi: Delete SIZEOF_HEADERS difficulties. ld/ * Makefile.am (ELF_DEPS): Define. Use in emul file deps. Fix many ELF emul file deps that incorrectly said they needed elf32.em instead of generic.em. Add genelf.em as required. * Makefile.in: Regenerate. * ldlang.c (lang_process): Call ldemul_finish before lang_check_section_addresses. * emulparams/arcelf.sh: Generic elf target needs genelf. * emulparams/d30v_e.sh: Likewise. * emulparams/d30v_o.sh: Likewise. * emulparams/d30velf.sh: Likewise. * emulparams/elf32_dlx.sh: Likewise. * emulparams/elf32_i860.sh: Likewise. * emulparams/elf32fr30.sh: Likewise. * emulparams/elf32frv.sh: Likewise. * emulparams/elf32iq10.sh: Likewise. * emulparams/elf32iq2000.sh: Likewise. * emulparams/elf32mt.sh: Likewise. * emulparams/mn10200.sh: Likewise. * emulparams/or32.sh: Likewise. * emulparams/or32elf.sh: Likewise. * emulparams/pjelf.sh: Likewise. * emulparams/msp430all.sh: Likewise. Extract common entries. * emulparams/pjlelf.sh: Include pjelf.sh. * emulparams/elf32frvfd.sh (EXTRA_EM_FILE): Unset. * emulparams/mn10300.sh (EXTRA_EM_FILE): Unset. * emultempl/elf-generic.em: New file. * emultempl/genelf.em: New file. * emultempl/elf32.em: Include elf-generic.em. (gld${EMULATION_NAME}_layout_sections_again): Delete. (gld${EMULATION_NAME}_finish): Call gld${EMULATION_NAME}_map_segments. * emultempl/hppaelf.em (hppaelf_layout_sections_again): Likewise. (gld${EMULATION_NAME}_finish): Rename from hppaelf_finish. Call gld${EMULATION_NAME}_map_segments. (LDEMUL_FINISH): Update. * emultempl/mmo.em: Correct comment. Include elf-bfd.h and source elf-generic.em. (mmo_finish): Call gld${EMULATION_NAME}_map_segments. * emultempl/ppc64elf.em (ppc_layout_sections_again): Likewise. (gld${EMULATION_NAME}_finish): Rename from ppc_finish. Call gld${EMULATION_NAME}_map_segments. (LDEMUL_FINISH): Update. ld/testsuite/ * ld-elf/eh1.d: Update for fewer program headers. * ld-elf/eh2.d: Likewise. * ld-elf/eh3.d: Likewise.
2005-11-17 * ldlang.h (lang_input_section_type): Remove "ifile" field.Alan Modra1-14/+21
(lang_insert_orphan, lang_add_section): Update prototypes. * ldlang.c (lang_insert_orphan): Remove "file" param. (lang_add_section): Likewise. Update all callers. (wild_sort): Get an input section's bfd via "section->owner". (size_input_section): Access just_syms_flag via bfd usrdata. (lang_place_orphans): Update ldemul_place_orphan call. * ldemul.h (ldemul_place_orphan): Remove input_statement param. (struct ld_emulation_xfer_struct <place_orphan>): Likewise. * ldemul.c (ldemul_place_orphan): Likewise. * ldwrite.c (build_link_order): Access just_syms_flag via bfd usrdata. * emultempl/armelf.em (arm_elf_set_bfd_for_interworking): Likewise. * emultempl/beos.em (sort_by_file_name): Access bfd by section->owner. (sort_sections): Likewise. (place_orphan): Remove "file" param. Adjust lang_add_section call. * emultempl/elf32.em (place_orphan): Remove "file" param. Adjust lang_add_section and lang_insert_orphan calls. * emultempl/hppaelf.em (hppaelf_add_stub_section): Adjust lang_add_section call. (build_section_lists): Access just_syms_flag via bfd usrdata. * emultempl/m68hc1xelf.em (m68hc11elf_add_stub_section): Adjust lang_add_section call. * emultempl/mmo.em (mmo_place_orphan): Remove "file" param. Adjust lang_add_section and lang_insert_orphan calls. * emultempl/pe.em (place_orphan): Likewise. Access bfd via section owner. * emultempl/ppc64elf.em (ppc_add_stub_section): Adjust lang_add_section call. (build_toc_list): Access just_syms_flag via bfd usrdata. (build_section_lists): Likewise. * emultempl/xtensaelf.em (elf_xtensa_place_orphan): Remove "file" param. Adjust place_orphan call. (ld_build_required_section_dependence): Access bfd via section owner.
2005-08-04bfd/Alan Modra1-1/+1
* elflink.c (fix_syms, _bfd_elf_fix_excluded_sec_syms): Move to.. * linker.c (fix_syms, _bfd_fix_excluded_sec_syms): ..here. * bfd-in.h (_bfd_fix_excluded_sec_syms): Rename. * bfd-in2.h: Regenerate. ld/ * ldemul.c (ldemul_finish): Call ld_emulation->finish unconditionally. (finish_default): New function. * ldemul.h (finish_default): Declare. * emultempl/aix.em (gld*_before_allocation): Call before_allocation_default rather than strip_excluded_output_sections. (ld_*_emulation): Init finish field to finish_default. * emultempl/armcoff.em: Likewise. * emultempl/beos.em: Likewise. * emultempl/elf32.em: Likewise. * emultempl/generic.em: Likewise. * emultempl/gld960.em: Likewise. * emultempl/gld960c.em: Likewise. * emultempl/hppaelf.em: Likewise. * emultempl/linux.em: Likewise. * emultempl/lnk960.em: Likewise. * emultempl/m68kcoff.em: Likewise. * emultempl/mmo.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/sunos.em: Likewise. * emultempl/ticoff.em: Likewise. * emultempl/vanilla.em: Likewise.
2005-07-14bfd/Alan Modra1-1/+1
* bfd-in.h (_bfd_elf_fix_excluded_sec_syms): Declare. (_bfd_elf_provide_section_bound_symbols): Remove param name. Formatting. * bfd-in2.h: Regenerate. * elflink.c (bfd_elf_gc_sections): Don't call generic function. (_bfd_elf_provide_symbol): Formatting. (_bfd_elf_provide_section_bound_symbols): Remove all hacks, just create section relative syms. (fix_syms, _bfd_elf_fix_excluded_sec_syms): New functions. * elf32-ppc.c (ppc_elf_set_sdata_syms): Use _bfd_elf_provide_section_bound_symbols. * reloc.c (bfd_mark_used_section): Delete. (bfd_generic_gc_sections): Don't call the above. ld/ * ldlang.c (strip_excluded_output_sections): Don't call bfd_gc_sections. * emultempl/elf32.em (gld*_provide_bound_symbols): Move. (gld*_provide_init_fini_syms): Move. (gld*_before_allocation): Call the above from here.. (gld*_finish): ..not here. Call _bfd_elf_fix_excluded_sec_syms. * emultempl/hppaelf.em (hppaelf_finish): Likewise. * emultempl/ppc64elf.em (ppc_finish): Likewise.
2005-07-08 * ldlang.c (wild_sort): Formatting.Alan Modra1-1/+0
(strip_excluded_output_sections): Strip zero size sections here. * emultempl/elf32.em (gld*_strip_empty_sections): Delete. (gld*_finish): Don't call the above. * emultempl/hppaelf.em (hppaelf_finish): Likewise. * emultempl/ppc64elf.em (ppc_finish): Likewise.
2005-06-09 * ld.h (lang_phase_type): Move to..Alan Modra1-3/+3
* ldexp.h: ..here. Add lang_mark_phase_enum. (node_type): Remove etree_undef and etree_unspec. (exp_data_seg): Delete. (struct ldexp_control, expld): New. (invalid, exp_mark_used_section): Delete. (exp_fold_tree, exp_get_vma, exp_get_value_int, exp_get_fill, exp_get_abs_int): Update prototypes. * ldexp.c (assigning_to_dot): Delete. (expld): Define. (make_abs): Operate directly on expld.result. Update all callers. (new_abs): Likewise. Return void. (new_rel_from_abs): Rename from new_rel_from_section. (new_rel, new_rel_from_abs): Operate on expld.result and return void. Update all callers. (fold_unary): Operate on expld.result and return void. Remove "current_section", "allocation_done", "dot", "dotp" and "mark_used" params. Update all callers. (fold_binary, fold_trinary, fold_name, exp_fold_tree_1): Likewise. (fold_unary <ALIGN_K>): Ensure alignment is absolute. (fold_unary <ABSOLUTE>): Use make_abs. (fold_unary <DATA_SEGMENT_END>): Evaluate mark_phase as for allocating_phase. (fold_binary <DATA_SEGMENT_ALIGN, DATA_SEGMENT_RELRO_END, >): Ditto. (fold_binary <'%','/'>): Don't error if marking. (fold_name <SIZEOF_HEADERS>): Don't call bfd_sizeof_headers when marking. (fold_name <NAME>): Remove FIXME; -R is handled correctly. Don't error when marking. (fold_name <ADDR, LOADADDR, SIZEOF>): Don't set SEC_KEEP. (exp_fold_tree_1): Don't error when marking. (exp_fold_tree_1 <etree_rel>): Evaluate in all phases except first. (exp_fold_tree_1 <etree_assign to dot>): Don't check for NULL current section, instead check for NULL dotp. (exp_fold_tree_1 <etree_provide>): Don't evaluate the assignment source unless the symbol is referenced and undefined. (exp_fold_tree): Remove "allocation_done" and "dot" params. Save params to expld. (exp_fold_tree_no_dot): Remove "current_section", "allocation_done and "mark_used" params. Save params to expld. Update all callers. (exp_assop): Do without temp var. (exp_print_tree <etree_undef>): Delete code. (exp_get_vma): Remove "allocation_done" param. Correct error return. (exp_get_fill, exp_get_abs_int): Likewise. (exp_get_value_int): Remove "allocation_done" param. (exp_mark_used_section): Delete. * ldgram.y (fill_exp): Update exp_get_fill call. (origin_spec, length_spec): Update exp_get_vma call. * ldlang.c (lang_init): Don't bother clearing lang_statement_iteration. (lang_mark_used_section_1, lang_mark_used_section): Delete. (strip_excluded_output_sections): Call one_lang_size_sections_pass in marking mode. Merge old lang_mark_used_section code. Correct handling of output sections with excluded input sections and data statements. Don't drop non-zero sized sections. Don't zap os->bfd_section. Do set SEC_EXCLUDE when appropriate. (print_output_section_statement): Update for changed ldexp.c interface. (print_assignment, lang_size_sections_1): Likewise. (lang_do_assignments_1, lang_enter_output_section_statement): Likewise. (lang_new_phdr, lang_record_phdrs): Likewise. (lang_size_sections): Likewise. (insert_pad): Use following statement if it is a pad, rather than creating a new one. (lang_size_sections_1 <lang_output_section_statement_enum>): Do process ignored output section to set vma and lma, but don't update dot for these sections. Don't error if marking. (lang_size_sections_1 <lang_assignment_statement_enum>): Don't update dot for ignored sections. (lang_size_sections_1 <lang_data_statement_enum>): Don't mark absolute section with SEC_ALLOC. (one_lang_size_sections_pass): New function. (lang_size_sections): Remove first five params. Set expld.phase on entry and exit. Use one_lang_size_sections_pass. (lang_do_assignments): Remove all params. Update all callers. (lang_reset_memory_regions): Clear os->processed for all output section statements. * ldlang.h (lang_do_assignments): Update prototype. (lang_size_sections): Likewise. (one_lang_size_sections_pass): Declare. * pe-dll.c (pe_dll_fill_sections, pe_exe_fill_sections): Update lang_size_sections and lang_do_assignments calls. * emultempl/elf32.em (layout_sections_again): Likewise. * emultempl/ppc64elf.em (ppc_before_allocation): Use one_lang_size_sections_pass.
2005-06-06bfd/Alan Modra1-2/+2
* elf64-pcc.c (ppc64_elf_gc_mark_hook): For the local sym in .opd case, include addend when indexing .opd section map. (ppc64_elf_edit_opd): Add no_opd_opt param. Do nothing besides clear opd_adjust array if no_opd_opt set. Tidy code. * elf64-ppc.h (ppc64_elf_edit_opd): Update prototype. ld/ * emultempl/ppc64elf.em (ppc_before_allocation): Always run ppc64_elf_edit_opd.
2005-05-12Update FSF addressesNick Clifton1-1/+1
2005-03-29 * emultempl/elf32.em (gld${EMULATION_NAME}_layout_sections_again):Alan Modra1-11/+17
New function, extracted from static void gld${EMULATION_NAME}_finish. (gld${EMULATION_NAME}_strip_empty_sections): Likewise. (gld${EMULATION_NAME}_provide_init_fini_syms): Likewise. * emultempl/ppc64elf.em: Revert last change. (ppc_layout_sections_again): Use gld${EMULATION_NAME}_layout_sections_again. (ppc_finish): Don't call gld${EMULATION_NAME}_finish. Instead call gld${EMULATION_NAME}_strip_empty_sections and gld${EMULATION_NAME}_provide_init_fini_syms. * emultempl/hppaelf.em: Similarly.
2005-03-29 * emultempl/ppc64elf.em (need_laying_out): Delete. Remove all refs.Alan Modra1-15/+0
(ppc_finish): Don't call bfd_elf_discard_info. * emultempl/hppaelf.em: Similarly.
2005-03-21ld/Alan Modra1-2/+3
* emultempl/ppc64elf.em (ppc_finish): Rename from gld${EMULATION_NAME}_finish. Call gld${EMULATION_NAME}_finish. (LDEMUL_FINISH): Update. * emultempl/hppaelf.em (hppaelf_finish, LDEMUL_FINISH): Likewise. * emultempl/m68hc1xelf.em (m68hc11elf_finish, LDEMUL_FINISH): Likewise. ld/testsuite/ * ld-powerpc/tlsexe.r: Update. * ld-powerpc/tlsexetoc.r: Update. * ld-powerpc/tlsso.r: Update. * ld-powerpc/tlstocso.r: Update.
2005-03-03update copyright datesAlan Modra1-1/+1
2005-02-16bfd/Alan Modra1-24/+8
* elf64-ppc.c (ppc64_elf_edit_toc): Skip toc if size is zero. Skip toc reloc adjust if reloc_count is zero. ld/ * emultempl/ppc64elf.em (ppc_create_output_section_statements): Make an error creating fake bfd fatal. (ppc_before_allocation): Continue on after errors. (gld${EMULATION_NAME}_finish): Likewise.
2005-02-10 * bfd-in.h (BFD_LINKER_CREATED): Define.Jakub Jelinek1-0/+1
* bfd-in2.h: Rebuilt. * elflink.c (bfd_elf_size_dynamic_sections): Disregard BFD_LINKER_CREATED bfds when determining input bfds without .note.GNU-stack section. * emultempl/hppaelf.em (hppaelf_create_output_section_statements): Set BFD_LINKER_CREATED on the stubs bfd. * emultempl/ppc64elf.em (ppc_create_output_section_statements): Likewise.
2005-01-06bfd/Alan Modra1-2/+15
* elf64-ppc.c (struct ppc_link_hash_table): Add no_multi_toc and multi_toc_needed. (has_toc_reloc, makes_toc_func_call, call_check_in_progress): Define. (ppc64_elf_check_relocs): Update references to has_gp_reloc. (ppc64_elf_setup_section_lists): Add no_multi_toc parm, set htab bit. (ppc64_elf_next_toc_section): Heed no_multi_toc. (ppc64_elf_reinit_toc): Set multi_toc_needed. (toc_adjusting_stub_needed): Rewrite. (ppc64_elf_next_input_section): Use multi_toc_needed to shortcut toc tests. Adjust for toc_adjusting_stub_needed changes. (ppc64_elf_size_stubs): Update references to has_gp_reloc. * elf64-ppc.h (ppc64_elf_setup_section_lists): Update prototype. * section.c: Expand comment on backend bits. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. ld/ * emultempl/ppc64elf.em (no_multi_toc): New var. (gld${EMULATION_NAME}_finish): Pass to ppc64_elf_setup_section_lists. (OPTION_NO_MULTI_TOC): Define. (PARSE_AND_LIST_LONGOPTS): Add --no-multi-toc support. (PARSE_AND_LIST_OPTIONS, PARSE_AND_LIST_ARGS_CASES): Likewise.
2004-11-04bfd/Alan Modra1-6/+39
* elf64-ppc.h (ppc64_elf_edit_toc): Declare. * elf64-ppc.c (struct ppc_link_hash_entry <adjust_done>): Update comment. (struct adjust_toc_info): New. (adjust_toc_syms, ppc64_elf_edit_toc): New functions. ld/ * emultempl/ppc64elf.em (no_tls_opt): Rename from notlsopt. (no_opd_opt, no_toc_opt): New static vars. (ppc_before_allocation): Don't edit opt if no_opd_opt. Call ppc64_elf_edit_toc. (OPTION_NO_OPD_OPT, OPTION_NO_TOC_OPT): Define. (PARSE_AND_LIST_LONGOPTS): Add no-opd-optimize and no-toc-optimize. (PARSE_AND_LIST_OPTIONS): Describe new options. (PARSE_AND_LIST_ARGS_CASES): Handle them.
2004-09-26 * emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): EnableAlan Modra1-0/+1
--emit-stub-syms automatically when --emit-relocs.
2004-08-19 * elf64-ppc.c (ppc64_elf_edit_opd): Support 16 byte long .opdJakub Jelinek1-1/+14
entries (where fd_aux overlaps next entry's fd_func). Add non_overlapping argument, use it. (ppc64_elf_check_relocs, ppc64_elf_gc_mark_hook, adjust_opd_syms, ppc64_elf_size_stubs, ppc64_elf_relocate_section, ppc64_elf_output_symbol_hook): Use address / 8 instead of address / 24 as indexes into opd_sym_map/opd_adjust array. * elf64-ppc.h (ppc64_elf_edit_opd): Adjust prototype. * emultempl/ppc64elf.em (non_overlapping_opd): New variable. (ppc_before_allocation): Pass it to ppc64_elf_edit_opd). (OPTION_NON_OVERLAPPING_OPD): Define. (PARSE_AND_LIST_OPTIONS, PARSE_AND_LIST_ARGS_CASES): Add --non-overlapping-opd option.
2004-08-17 * emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern): DotAlan Modra1-0/+8
prefix the symbol field too.
2004-08-10bfd/Alan Modra1-0/+2
* elf64-ppc.c (struct ppc_link_hash_entry): Add was_undefined. (struct ppc_link_hash_table): Remove no_multi_toc, multi_toc_needed. Make emit_stub_syms, stub_error and has_14bit_branch bit-fields. Add twiddled_syms. (link_hash_newfunc): Init was_undefined. (add_symbol_adjust): Don't set undefined dot symbols to defweak; Use undefweak instead. (ppc64_elf_check_directives): Fix undefs chain. (ppc64_elf_next_toc_section): Remove no_multi_toc and multi_toc_needed references. (ppc64_elf_size_stubs): Adjust for add_symbol_adjust change. (undo_symbol_twiddle, ppc64_elf_restore_symbols): New functions. * elf64-ppc.h (ppc64_elf_restore_symbols): Declare. ld/ * emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): Call ppc64_elf_restore_symbols.
2004-08-09 * emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): Error ifAlan Modra1-0/+8
.toc is too large on relocatable linking.
2004-08-09bfd/Alan Modra1-13/+0
* elf-bfd.h (_bfd_elf_gc_mark): Declare. * elflink.c (elf_link_input_bfd): Formatting. (_bfd_elf_gc_mark): Rename from elf_gc_mark and make global. Adjust all callers. * elf64-ppc.c (struct ppc_link_hash_entry): Remove is_entry. (link_hash_newfunc): Don't set it. (ppc64_elf_copy_indirect_symbol): Nor copy it. (ppc64_elf_mark_entry_syms): Delete. (ppc64_elf_gc_mark_hook): Mark entry syms here. Also mark opd sections. Use get_opd_info. * elf64-ppc.h (ppc64_elf_mark_entry_syms): Delete. ld/ * emultempl/ppc64elf.em (ppc_after_open): Delete. (LDEMUL_AFTER_OPEN): Don't define.
2004-05-25bfd/Alan Modra1-0/+2
* elflink.c (elf_link_add_object_symbols): Don't set up merge section data here.. * elf.c (_bfd_elf_merge_sections): .. Do it here instead. * merge.c: Formatting. Remove unnecessary casts. Expand bfd_get_section_alignment macro. (struct sec_merge_sec_info): Rename "first" to "first_str". Update use throughout file. (_bfd_add_merge_section): Rename from _bfd_merge_section. Update comment. Abort on dynamic or non-SEC_MERGE input. Don't test section name to determine sinfo group, instead test output section and alignment. (_bfd_merge_sections): Add struct bfd_link_info param. Call _bfd_strip_section_from_output rather than just twiddling flags. * libbfd-in.h (_bfd_add_merge_section): Rename, update comment. (_bfd_merge_sections): Update prototype. * libbfd.h: Regenerate. ld/ * ldlang.c (lang_process): Call bfd_merge_sections later, and only when not a relocatable link. (print_input_section): Handle SEC_EXCLUDE sections. (size_input_section): Don't update dot on SEC_EXCLUDE sections. (lang_do_assignments_1): Likewise. * ldwrite.c (build_link_order): Ignore SEC_EXCLUDE input sections. * emultempl/armelf.em (arm_elf_set_bfd_for_interworking): Likewise. * emultempl/hppaelf.em (build_section_lists): Likewise. * emultempl/ppc64elf.em (build_toc_list): Likewise. (build_section_lists): Likewise.
2004-03-27 * emultempl/elf32.em: Update new bfd_elf_discard_info name.Alan Modra1-2/+2
* emultempl/hppaelf.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/sh64elf.em: Likewise.
2004-03-22include/Alan Modra1-1/+3
PR 51. * bfdlink.h (struct bfd_link_info): Add wrap_char. bfd/ PR 51. * linker.c (bfd_wrapped_link_hash_lookup): Handle info->wrap_char. ld/ PR 51. * emultempl/ppc64elf.em (ppc_create_output_section_statements): Set link_info.wrap_char.
2004-01-09 * emultempl/ppc64elf.em (ppc_before_allocation): Clear cachedAlan Modra1-0/+3
program_header_size.
2003-11-04 * emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern): ZapAlan Modra1-1/+0
unused variable.
2003-10-22bfd/Jakub Jelinek1-31/+2
* elflink.c (_bfd_elf_export_symbol): Adjust for globals and locals field changes. (_bfd_elf_link_assign_sym_version): Likewise. * elflink.h (size_dynamic_sections): Likewise. include/ * bfdlink.h (struct bfd_elf_version_expr): Remove match field. Add wildcard and mask fields. (BFD_ELF_VERSION_C_TYPE): Define. (BFD_ELF_VERSION_CXX_TYPE): Likewise. (BFD_ELF_VERSION_JAVA_TYPE): Likewise. (struct bfd_elf_version_expr_head): New. (struct bfd_elf_version_tree): Add match field. Change type of globals and locals fields to struct bfd_elf_version_expr_head. ld/ * ldlang.c: Include hashtab.h. (lang_vers_match_lang_c, lang_vers_match_lang_cplusplus, lang_vers_match_lang_java): Remove. (lang_vers_match): New function. (lang_new_vers_pattern): Initialize wildcard and mask fields, don't initialize match. (lang_new_vers_node): Use xcalloc. Adjust for globals and locals field type changes. Set match field. (version_expr_head_hash, version_expr_head_eq): New functions. (lang_finalize_version_expr_head): New function. (lang_register_vers_node): Call lang_finalize_version_expr_head. Search in hash table if not wildcard when looking for duplicates. * emultempl/ppc64elf.em (new_vers_pattern): Don't bother with duplicate checking. Initialize all fields of dot_entry from entry with the exception of pattern and next.
2003-07-10 * emulparams/elf64ppc.sh (OTHER_GOT_SECTIONS): Don't define.Alan Modra1-3/+5
(GOT): Define. * emultempl/ppc64elf.em (stub_added): New static var. (ppc_create_output_section_statements): Call ppc64_elf_init_stub_bfd. (ppc_add_stub_section): Set stub_added. (gld${EMULATION_NAME}_finish): Look for .got rather than .toc. Adjust ppc64_elf_size_stubs call and test for stubs. * scripttempl/elf.sc (GOT): Define and use.
2003-06-25Correct spelling of "relocatable".Alan Modra1-2/+2
2003-06-20 * emultempl/ppc64elf.em: Convert to C90 function definitions, removeAlan Modra1-58/+20
unnecessary prototypes and casts.
2003-06-19 * emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): Dump outAlan Modra1-1/+15
statistics from ppc64_elf_build_stubs.
2003-06-19 * emultempl/ppc64elf.em (build_section_lists): Check return statusAlan Modra1-2/+3
from ppc64_elf_next_input_section.
2003-06-08 * emultempl/ppc64elf.em (emit_stub_syms, toc_section): New vars.Alan Modra1-2/+37
(build_toc_list): New function. (gld${EMULATION_NAME}_finish): Call build_toc_list and ppc64_elf_reinit_toc. Adjust ppc64_elf_build_stubs call. (OPTION_STUBSYMS): Define. (PARSE_AND_LIST_LONGOPTS): Add emit-stub-syms. (PARSE_AND_LIST_OPTIONS): Document. (PARSE_AND_LIST_ARGS_CASES): Handle.
2003-02-28 * ldemul.c (ldemul_add_options, ldemul_handle_option): New functions.Alan Modra1-6/+0
(ldemul_parse_args): Return bfd_boolean. Formatting. * ldemul.h (ldemul_add_options, ldemul_handle_option): Declare. (ldemul_parse_args): Adjust. (struct ld_emulation_xfer_struct): Add add_options and handle_option. Return bfd_boolean from parse_args. * lexsup.c (parse_args): Malloc shortopts, longopts and really_longopts. Call ldemul_add_options and ldemul_handle_option. * emultempl/aix.em (gld${EMULATION_NAME}_add_options): Split out from gld${EMULATION_NAME}_parse_args. (gld${EMULATION_NAME}_handle_option): Likewise. (ld_${EMULATION_NAME}_emulation): Adjust initializer. * emultempl/armcoff.em: As for aix.em, but remove parse_args. * emultempl/beos.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/ticoff.em: Likewise. * emultempl/elf32.em: Likewise. Don't duplicate long options either. (gld${EMULATION_NAME}_add_sysroot): Prototype. * emultempl/armelf.em (PARSE_AND_LIST_LONGOPTS): Don't duplicate options. * emultempl/hppaelf.em (PARSE_AND_LIST_LONGOPTS): Likewise. * emultempl/ppc32elf.em (PARSE_AND_LIST_LONGOPTS): Likewise. * emultempl/ppc64elf.em (PARSE_AND_LIST_LONGOPTS): Likewise. * emultempl/armelf_oabi.em (ld_${EMULATION_NAME}_emulation): Adjust initializer. * emultempl/generic.em: Likewise. * emultempl/gld960.em: Likewise. * emultempl/gld960c.em: Likewise. * emultempl/linux.em: Likewise. * emultempl/lnk960.em: Likewise. * emultempl/m68kcoff.em: Likewise. * emultempl/mipsecoff.em: Likewise. * emultempl/sunos.em: Likewise. * emultempl/vanilla.em: Likewise. * emultempl/netbsd.em (gldnetbsd_before_parse): Prototype.
2003-02-21Disable region size checking whilst relaxing sections.Nick Clifton1-2/+2
2003-02-17 * emultempl/ppc64elf.em (ppc_create_output_section_statements): CheckAlan Modra1-17/+27
hash creator. (ppc_before_allocation): Don't do optimizations if wrong hash table. (gld${EMULATION_NAME}_finish): Ditto.
2003-02-09 * emultempl/ppc64elf.em: Add "no-tls-optimize" option and support code.Alan Modra1-16/+28