* elf64-ppc.c: Define more insns used in plt call stubs.
(ppc64_elf_brtaken_reloc): Assume isa version 2 or above.
(ppc64_elf_relocate_section): Likewise.
(enum ppc_stub_type): Add ppc_stub_plt_call_r2save.
(struct ppc_link_hash_table): Increase size of stub_count array.
Add plt_stub_align and plt_thread_safe.
(ALWAYS_USE_FAKE_DEP, ALWAYS_EMIT_R2SAVE): Define.
(plt_stub_size, plt_stub_pad): New functions.
(build_plt_stub): Emit barriers for power7 thread safety. Don't
emit needless save of r2.
(build_tls_get_addr_stub): Adjust params.
(ppc_build_one_stub): Handle ppc_stub_plt_call_r2save and aligning
plt stubs. Adjust build_*plt_stub calls.
(ppc_size_one_stub): Similarly.
(ppc64_elf_size_stubs): Accept plt_thread_safe and plt_stub_align
params. Choose default for plt_thread_safe based on existence of
calls to thread creation functions. Modify plt_call to
plt_call_r2save when no tocsave reloc found. Align tail of stub
sections.
(ppc64_elf_build_stubs): Align tail of stub sections. Adjust
output of stub statistics.
(ppc64_elf_relocate_section): Handle ppc_stub_plt_call_r2save.
* elf64-ppc.h (ppc64_elf_size_stubs): Update prototype.
ld/
* emultempl/ppc64elf.em (PARSE_AND_LIST_PROLOGUE,
PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS,
PARSE_AND_LIST_ARGS_CASES): Handle --{no-,}plt-thread-safe and
--{no-,}plt-align.
(plt_thread_safe, plt_stub_align): New vars.
(gld${EMULATION_NAME}_after_allocation): Pass them to
ppc64_elf_size_stubs. Align stub sections according to plt_stub_align.
* ld.texinfo: Document new command line options, and an old
undocumented option.
|
||
|---|---|---|
| .. | ||
| aix.em | ||
| alphaelf.em | ||
| armcoff.em | ||
| armelf.em | ||
| astring.sed | ||
| avrelf.em | ||
| beos.em | ||
| bfin.em | ||
| cr16elf.em | ||
| crxelf.em | ||
| elf32.em | ||
| elf-generic.em | ||
| genelf.em | ||
| generic.em | ||
| gld960.em | ||
| gld960c.em | ||
| hppaelf.em | ||
| ia64elf.em | ||
| irix.em | ||
| linux.em | ||
| lnk960.em | ||
| m68hc1xelf.em | ||
| m68kcoff.em | ||
| m68kelf.em | ||
| mipsecoff.em | ||
| mipself.em | ||
| mmix-elfnmmo.em | ||
| mmixelf.em | ||
| mmo.em | ||
| needrelax.em | ||
| netbsd.em | ||
| ostring.sed | ||
| pe.em | ||
| pep.em | ||
| ppc32elf.em | ||
| ppc64elf.em | ||
| README | ||
| rxelf.em | ||
| scoreelf.em | ||
| sh64elf.em | ||
| solaris2.em | ||
| spu_icache.o_c | ||
| spu_icache.S | ||
| spu_ovl.o_c | ||
| spu_ovl.S | ||
| spuelf.em | ||
| sunos.em | ||
| tic6xdsbt.em | ||
| ticoff.em | ||
| vanilla.em | ||
| vms.em | ||
| vxworks.em | ||
| xtensaelf.em | ||
| z80.em | ||
The files in this directory are sourced by genscripts.sh, after setting some variables to substitute in, to produce C source files that contain jump tables for each emulation.