Alan Modra
9df0ef5fe7
bfd/
...
* elf64-ppc.c (struct ppc_link_hash_table): Add plt_static_chain.
(build_plt_stub): Add plt_static_chain param, don't load r11 if false.
(build_tls_get_addr_stub): Likewise.
(ppc_build_one_stub): Update calls to above.
(ppc_size_one_stub): Adjust stub size.
(ppc64_elf_size_stubs): Add plt_static_chain param, save to htab.
* elf64-ppc.h (ppc64_elf_size_stubs): Update prototype.
ld/
* emultempl/ppc64elf.em (plt_static_chain): New var.
(gld${EMULATION_NAME}_after_allocation): Pass to ppc64_elf_size_stubs.
(PARSE_AND_LIST_PROLOGUE, PARSE_AND_LIST_LONGOPTS,
PARSE_AND_LIST_OPTIONS, PARSE_AND_LIST_ARGS_CASES): Handle
--plt-static-chain and --no-plt-static-chain.
ld/testsuite/
* ld-powerpc/tlsexe.d, * ld-powerpc/tlsexe.g. *ld-powerpc/tlsexe.r,
* ld-powerpc/tlsexetoc.d, * ld-powerpc/tlsexetoc.g,
* ld-powerpc/tlsexetoc.r, * ld-powerpc/tlsso.d,
* ld-powerpc/tlstocso.d: Update for plt stub change.
2011-07-14 03:28:22 +00:00
Alan Modra
e922bcabdf
* ldmain.c (main): Flush stdout before and stderr after printing
...
message.
* ldmisc.c (einfo): Similarly.
* plugin.c (message): Likewise.
* emultempl/ppc64elf.em: Likewise.
* emultempl/xtensaelf.em: Likewise.
* emulparams/elf32mcore.sh: Use einfo rather than printf.
* emultempl/beos.em: Likewise.
* emultempl/pe.em: Likewise.
* emultempl/pep.em: Likewise.
2011-01-14 12:37:17 +00:00
Alan Modra
71755fdf7b
* emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern): For
...
--no-undefined-version, don't report dot sym versions added by ld.
2010-10-28 08:38:45 +00:00
Alan Modra
ba761f19f5
include/elf/
...
* ppc64.h (R_PPC64_LO_DS_OPT): Define.
bfd/
* elf64-ppc.c (toc_skip_enum): Define.
(ppc64_elf_edit_toc): Use two low bits of skip array as markers.
Optimize largetoc sequences.
(adjust_toc_syms): Update for skip array change.
(ppc64_elf_relocate_section): Handle R_PPC64_LO_DS_OPT.
ld/
* emultempl/ppc64elf.em (prelim_size_sections): New function.
(ppc_before_allocation): Use it. Size sections before toc edit too.
2010-06-25 05:20:57 +00:00
Alan Modra
d43d0b53f6
* emultempl/ppc64elf.em (move_input_section, sort_toc_sections): New.
...
(ppc_before_allocation): Call sort_toc_sections.
(no_toc_sort, OPTION_NO_TOC_SORT): New.
(PARSE_AND_LIST_PROLOGUE, PARSE_AND_LIST_LONGOPTS,
PARSE_AND_LIST_OPTIONS): Handle --no-toc-sort.
2010-03-15 02:03:00 +00:00
Alan Modra
70cc837dbe
bfd/
...
PR ld/11378
* elf64-ppc.h (ppc64_elf_check_init_fini): Declare.
* elf64-ppc.c (call_check_done): Define.
(ppc64_elf_add_symbol_hook): Substitute bfd_get_section_name macro.
(ppc64_elf_check_relocs, ppc64_elf_size_dynamic_sections): Likewise.
(ppc64_elf_finish_multitoc_partition): Remove unnecessary check.
(toc_adjusting_stub_needed): Use call_check_done rather than toc_off.
Simplify return logic. Iterate over all .init and .fini fragments
by recursion. Set makes_toc_func_call here..
(ppc64_elf_next_input_section): ..rather than here.
(check_pasted_section, ppc64_elf_check_init_fini): New functions.
ld/
PR ld/11378
* emultempl/ppc64elf.em (gld${EMULATION_NAME}_after_allocation): Call
ppc64_elf_check_init_fini and warn if .init/.fini use different TOCs.
2010-03-14 07:05:36 +00:00
Alan Modra
33c0ec9de7
bfd/
...
* elf64-ppc.c (struct ppc_link_hash_table): Add do_multi_toc.
(has_small_toc_reloc): Define.
(ppc64_elf_check_relocs): Set the above flags.
(ppc64_elf_edit_opd): Delete obfd param.
(ppc64_elf_tls_optimize): Likewise.
(ppc64_elf_edit_toc): Likewise.
(ppc64_elf_tls_setup): Likewise. Add no_multi_toc param.
* elf64-ppc.h: Update prototypes.
ld/
* emultempl/ppc64elf.em (ppc_before_allocation): Update for changed
function parameters.
2010-02-08 13:50:17 +00:00
Nick Clifton
4dfe6ac6fe
* elf-bfd.h (emum elf_object_id): Rename to elf_target_id. Add
...
entries for other architectures.
(struct elf_link_hash_table): Add hash_table_id field.
(elf_hash_table_id): New accessor macro.
* elflink.c (_bfd_elf_link_hash_table_init): Add target_id
parameter.
* elf-m10300.c (elf32_mn10300_hash_table): Check table id before
returning cast pointer.
(elf32_mn10300_link_hash_table_create): Identify new table as
containing MN10300 extensions.
(mn10300_elf_relax_section): Check pointer returned by
elf32_mn10300_hash_table.
* elf32-arm.c: Likewise, except using ARM extensions.
* elf32-avr.c: Likewise, except using AVR extensions.
* elf32-bfin.c: Likewise, except using BFIN extensions.
* elf32-cris.c: Likewise, except using CRIS extensions.
* elf32-frv.c: Likewise, except using FRV extensions.
* elf32-hppa.c: Likewise, except using HPPA32 extensions.
* elf32-i386.c: Likewise, except using I386 extensions.
* elf32-lm32.c: Likewise, except using LM32 extensions.
* elf32-m32r.c: Likewise, except using M32RM extensions.
* elf32-m68hc11.c: Likewise, except using M68HC11 extensions.
* elf32-m68hc1x.c: Likewise, except using M68HC11 extensions.
* elf32-m68hc1x.h: Likewise, except using M68HC11 extensions.
* elf32-m68k.c: Likewise, except using M68K extensions.
* elf32-microblaze.c: Likewise, except using MICROBLAZE extensions.
* elf32-ppc.c: Likewise, except using PPC32 extensions.
* elf32-s390.c: Likewise, except using S390 extensions.
* elf32-sh.c: Likewise, except using SH extensions.
* elf32-spu.c: Likewise, except using SPU extensions.
* elf32-xtensa.c: Likewise, except using XTENSA extensions.
* elf64-alpha.c: Likewise, except using ALPHA extensions.
* elf64-hppa.c: Likewise, except using HPPA64 extensions.
* elf64-ppc.c: Likewise, except using PPC64 extensions.
* elf64-s390.c: Likewise, except using S390 extensions.
* elf64-x86-64.c: Likewise, except using X86_64 extensions.
* elfxx-ia64.c: Likewise, except using IA64 extensions.
* elfxx-mips.c: Likewise, except using MIPS extensions.
* elfxx-sparc.c: Likewise, except using SPARC extensions.
* elfxx-sparc.h: Likewise, except using SPARC extensions.
* elf32-cr16.c (struct elf32_cr16_link_hash_table): Delete
redundant structure.
(elf32_cr16_hash_table): Delete unused macro.
(elf32_cr16_link_hash_traverse): Delete unused macro.
* elf32-score.c: Likewise.
* elf32-score7.c: Likewise.
* elf32-vax.c: Likewise.
* elf64-sh64.c: Likewise.
* emultempl/alphaelf.em: Update value expected from elf_object_id.
* emultempl/hppaelf.em: Likewise.
* emultempl/mipself.em: Likewise.
* emultempl/ppc32elf.em: Likewise.
* emultempl/ppc64elf.em: Likewise.
2010-02-04 09:16:43 +00:00
Alan Modra
927be08ec8
bfd/
...
* elf64-ppc.c (struct plt_entry): Move earlier in file.
(struct got_entry): Likewise. Add is_indirect and got.ent fields.
(struct ppc64_elf_obj_tdata): Change tlsld_got to be a struct got_entry.
Update all uses.
(struct ppc_link_hash_table): Add got_reli_size and second_toc_pass.
Remove no_multi_toc.
(update_local_sym_info, ppc64_elf_check_relocs): Clear is_indirect
when allocating a new struct got_entry.
(allocate_got): New function, extracted from..
(allocate_dynrelocs): ..here. Abort on got entry in non-ppc64 bfd.
(ppc64_elf_size_dynamic_sections): Track got relocs allocated in
.reliplt by got_reli_size. Set owner on ppc64_tlsld_got entries.
(ppc64_elf_setup_section_lists): Remove output_bfd param and
no_multi_toc, add add_stub_section and layout_sections_again. Stash
new params in htab. Extract some code to..
(ppc64_elf_start_multitoc_partition): ..here. New function.
(ppc64_elf_next_toc_section): Check for linker script errors. Handle
second pass toc scan.
(merge_got_entries, merge_global_got, reallocate_got): New functions.
(ppc64_elf_reinit_toc): Rename to..
(ppc64_elf_finish_multitoc_partition): ..this.
(ppc64_elf_layout_multitoc): New function.
(ppc64_elf_size_stubs): Delete output_bfd, add_stub_section and
layout_sections_again params.
(ppc64_elf_relocate_section): Handle indirect got entries.
* elf64-ppc.h: Update prototypes. Declare new functions.
ld/
* emultempl/ppc64elf.em (build_toc_list): Report errors from
ppc64_elf_next_toc_section.
(after_allocation): Update for changed function names and params.
Run second pass of multitoc partitioning.
2010-02-03 12:03:35 +00:00
Alan Modra
b02c4cfa79
ld/
...
* emultempl/ppc32elf.em (emit_stub_syms): Init to -1.
(ppc_after_open): Set emit_stubs_syms by default when shared.
(OPTION_NO_STUBSYMS): Define.
(PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS,
PARSE_AND_LIST_ARGS_CASES): Handle --no-emit-stub-syms.
* emultempl/ppc64elf.em (emit_stub_syms): Init to -1.
(gld${EMULATION_NAME}_finish): Set emit_stubs_syms by default.
(OPTION_NO_STUBSYMS): Define.
(PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS,
PARSE_AND_LIST_ARGS_CASES): Handle --no-emit-stub-syms.
ld/testsuite/
* ld-powerpc/tlsexe.d: Update.
* ld-powerpc/tlsexe.r: Update.
* ld-powerpc/tlsexetoc.d: Update.
* ld-powerpc/tlsexetoc.r: Update.
* ld-powerpc/tlsso.d: Update.
* ld-powerpc/tlsso.r: Update.
* ld-powerpc/tlstocso.d: Update.
* ld-powerpc/tlstocso.r: Update.
2009-10-02 15:00:30 +00:00
Alan Modra
a7f2871e66
include/elf/
...
* ppc.h (DT_PPC_TLSOPT): Define.
* ppc64.h (DT_PPC64_TLSOPT): Define.
bfd/
* elf32-ppc.c (TLS_GET_ADDR_GLINK_SIZE): Define.
(ADD_3_12_2, BEQLR, CMPWI_11_0, LWZ_11_3, LWZ_12_3): Define.
(MR_0_3, MR_3_0): Define.
(struct ppc_elf_link_hash_table): Add no_tls_get_addr_opt.
(ppc_elf_select_plt_layout): Save emit_stub_syms param earlier.
(ppc_elf_tls_setup): Add no_tls_get_addr_opt param and save to hash
table. Check for presense of __tls_get_addr_opt
(allocate_dynrelocs): Increase glink entry size for __tls_get_addr.
(ppc_elf_size_dynamic_sections): Add DT_PPC_TLS_OPT tag.
(write_glink_stub): Add param p.
(ppc_elf_relocate_section): Adjust write_glink_stub call.
(ppc_elf_finish_dynamic_symbol): Emit special glink call stub for
__tls_get_addr.
* elf32-ppc.h (ppc_elf_tls_setup): Update prototype.
* elf64-ppc.c (struct ppc_link_hash_table): Add no_tls_get_addr_opt.
(ppc64_elf_tls_setup): Add no_tls_get_addr_opt param and save to hash
table. Check for presense of __tls_get_addr_opt.
(ppc64_elf_size_dynamic_sections): Add DT_PPC64_TLS_OPT tag.
(LD_R11_0R3, LD_R12_0R3, MR_R0_R3, CMPDI_R11_0, ADD_R3_R12_R13,
BEQLR, MR_R3_R0, MFLR_R11, STD_R11_0R1, BCTRL, LD_R11_0R1,
LD_R2_0R1, MTLR_R11): Define.
(build_tls_get_addr_stub): New function.
(ppc_build_one_stub): Call it.
(ppc_size_one_stub): Add extra size for __tls_get_addr stub.
(ppc64_elf_relocate_section): Don't change nop to ld 2,40(1) for
__tls_get_addr plt call.
* elf64-ppc.h (ppc64_elf_tls_setup): Update prototype.
binutils/
* readelf.c (get_ppc_dynamic_type): Add TLSOPT.
(get_ppc64_dynamic_type): Likewise.
ld/
* emultempl/ppc32elf.em (no_tls_get_addr_opt): New var.
(ppc_before_allocation): Pass to ppc_elf_tls_setup.
(OPTION_NO_TLS_GET_ADDR_OPT): Define. Redefine other options in
terms of previous option.
(PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Add
--no-tls-get-addr-optimize.
(PARSE_AND_LIST_ARGS_CASES): Handle it.
* emultempl/ppc64elf.em (no_tls_get_addr_opt): New var.
(ppc_before_allocation): Pass to ppc64_elf_tls_setup.
(OPTION_NO_TLS_GET_ADDR_OPT): Define.
(PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Add
--no-tls-get-addr-optimize.
(PARSE_AND_LIST_ARGS_CASES): Handle it.
ld/testsuite/
* ld-powerpc/tlslib.s: Delete dot-symbol entry syms. Add
__tls_get_addr_opt.
* ld-powerpc/tlslib32.s: Add __tls_get_addr_opt.
* ld-powerpc/oldtlslib.s: New file, old-abi version of tlslib.s.
* ld-powerpc/powerpc.exp: Build old-abi library and use it in
two new link tests.
* ld-powerpc/tlsexe.d: Update for new __tls_get_addr stub.
* ld-powerpc/tlsexe.g, * ld-powerpc/tlsexe.r, *ld-powerpc/tlsexe32.d,
* ld-powerpc/tlsexe32.g, * ld-powerpc/tlsexe32.r,
* ld-powerpc/tlsexetoc.d, * ld-powerpc/tlsexetoc.g,
* ld-powerpc/tlsexetoc.r: Likewise.
2009-09-21 11:51:02 +00:00
Alan Modra
aa820537ea
update copyright dates
2009-09-02 07:25:43 +00:00
Alan Modra
eaeb0a9d5c
PR 10474
...
* 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.
2009-08-10 07:50:56 +00:00
Alan Modra
ae5a359786
include/
...
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-11-26 01:04:17 +00:00
Alan Modra
9795b468eb
* emultempl/armelf.em (elf32_arm_add_stub_section): Use
...
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-07-07 00:46:51 +00:00
Alan Modra
5503fea1b9
* emultempl/alphaelf.em (alpha_after_open): Use elf_object_id.
...
* 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-15 09:03:02 +00:00
Alan Modra
f13a99db51
include/
...
* 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-02-15 03:35:53 +00:00
Alan Modra
74f0fb5065
bfd/
...
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.
2008-01-15 07:25:49 +00:00
Alan Modra
442996eee8
* emultempl/alphaelf.em: Format option help.
...
* 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-08-17 13:50:48 +00:00
Roland McGrath
92b93329b5
2007-07-19 Roland McGrath <roland@redhat.com>
...
* 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-19 19:56:10 +00:00
Nick Clifton
f96b4a7b0f
Update sources to GPLv3
2007-07-06 14:09:45 +00:00
Andreas Schwab
b7b7fe3f8f
* emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern):
...
Handle null pattern.
testsuite/:
* ld-elf/dl2a.list: New file.
* ld-elf/shared.exp: Add test using --dynamic-list=dl2a.list.
2007-05-14 08:53:23 +00:00
Alan Modra
dc27aea4b8
* Makefile.am: Add dependency on ldemul-list.h for powerpc and
...
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-03-26 11:10:44 +00:00
Alan Modra
e4e0193e2b
bfd/
...
* 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.
2007-02-13 01:53:03 +00:00
Alan Modra
8ded5a0fc3
bfd/
...
* 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.
2006-06-20 02:22:16 +00:00
Alan Modra
7b986e992e
* ldlang.h (lang_input_section_type): Remove "ifile" field.
...
(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-11-17 00:10:05 +00:00
Alan Modra
1e035701d6
bfd/
...
* 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-08-04 01:19:10 +00:00
Alan Modra
a3c2b96af6
bfd/
...
* 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-14 13:54:23 +00:00
Alan Modra
32124d5bbf
* ldlang.c (wild_sort): Formatting.
...
(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-07-08 06:20:16 +00:00
Alan Modra
e9ee469ad1
* ld.h (lang_phase_type): Move to..
...
* 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-09 02:05:47 +00:00
Alan Modra
b4f4e59fff
bfd/
...
* 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-06-06 12:59:59 +00:00
Nick Clifton
75be928bd2
Update FSF addresses
2005-05-12 07:32:09 +00:00
Alan Modra
deb04cdb5e
* emultempl/elf32.em (gld${EMULATION_NAME}_layout_sections_again):
...
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 11:07:38 +00:00
Alan Modra
8b4e5e2810
* emultempl/ppc64elf.em (need_laying_out): Delete. Remove all refs.
...
(ppc_finish): Don't call bfd_elf_discard_info.
* emultempl/hppaelf.em: Similarly.
2005-03-29 06:52:22 +00:00
Alan Modra
b1ab97771e
ld/
...
* 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-21 09:39:54 +00:00
Alan Modra
aef6203bd6
update copyright dates
2005-03-03 11:52:12 +00:00
Alan Modra
92b7a70fca
bfd/
...
* 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-16 02:20:13 +00:00
Jakub Jelinek
d457dcf698
* bfd-in.h (BFD_LINKER_CREATED): Define.
...
* 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-02-10 09:15:08 +00:00
Alan Modra
4c52953f84
bfd/
...
* 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.
2005-01-06 09:03:56 +00:00
Alan Modra
c5614fa460
bfd/
...
* 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-11-04 11:55:13 +00:00
Alan Modra
a23d8409ec
* emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): Enable
...
--emit-stub-syms automatically when --emit-relocs.
2004-09-26 23:42:30 +00:00
Jakub Jelinek
3f764659c7
* elf64-ppc.c (ppc64_elf_edit_opd): Support 16 byte long .opd
...
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-19 07:47:25 +00:00
Alan Modra
c4e3388091
* emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern): Dot
...
prefix the symbol field too.
2004-08-17 12:33:59 +00:00
Alan Modra
99877b66ad
bfd/
...
* 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-10 11:23:03 +00:00
Alan Modra
40e45c8b6c
* emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): Error if
...
.toc is too large on relocatable linking.
2004-08-09 06:48:37 +00:00
Alan Modra
ccfa59eaa0
bfd/
...
* 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-08-09 03:14:12 +00:00
Alan Modra
57ceae9483
bfd/
...
* 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-05-25 06:33:51 +00:00
Alan Modra
7a945db630
* emultempl/elf32.em: Update new bfd_elf_discard_info name.
...
* emultempl/hppaelf.em: Likewise.
* emultempl/ppc64elf.em: Likewise.
* emultempl/sh64elf.em: Likewise.
2004-03-27 10:58:35 +00:00
Alan Modra
b9cf773d1a
include/
...
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-03-22 22:58:04 +00:00
Alan Modra
8349035256
* emultempl/ppc64elf.em (ppc_before_allocation): Clear cached
...
program_header_size.
2004-01-09 05:36:30 +00:00