binutils-gdb/ld/emultempl
Alan Modra 5446cbdf82 ppc476 icache bug workaround
This implements a work-around for an icache bug on 476 that can cause
execution of stale instructions when control falls through from one
page to the next.  The idea is to prevent such fall-through by
replacing the last instruction on a page with a branch to a patch
area containing the instruction, then branch to the next page.

The patch also fixes a number of bugs in the existing support for long
branch trampolines.

bfd/
	* elf32-ppc.c (struct ppc_elf_link_hash_table): Add params.
	Delete emit_stub_syms, no_tls_get_addr_opt.  Update all uses.
	(ppc_elf_link_params): New function.
	(ppc_elf_create_glink): Align .glink to 64 bytes for ppc476
	workaround.
	(ppc_elf_select_plt_layout): Remove plt_style and emit_stub_syms
	parameters.  Use htab->params instead.
	(ppc_elf_tls_setup): Remove no_tls_get_addr_opt parameter.
	(ppc_elf_size_dynamic_sections): Align __glink_PLTresolve to
	64 bytes for ppc476 workaround.
	(struct ppc_elf_relax_info): New.
	(ppc_elf_relax_section): Exclude linker created sections and
	those too small to hold one instruction.  Don't add another
	branch 	around trampolines on later relax passes.  Don't
	generate trampolines for undefined symbols when !relocatable,
	nor for plugin symbols.  Allocate space for ppc476 workaround
	patch area.  Free fixups on error return path.
	(ppc_elf_relocate_section): Handle ppc476 workaround patching.
	* elf32-ppc.h (struct ppc_elf_params): New.
	(ppc_elf_select_plt_layout, ppc_elf_tls_setup): Update prototype.
	(ppc_elf_link_params): Declare.
	* section.c (SEC_INFO_TYPE_TARGET): Define.
	* bfd-in2.h: Regenerate.
ld/
	* emultempl/ppc32elf.em (no_tls_get_addr_opt, emit_stub_syms)
	plt_style): Delete.  Adjust all refs to instead use..
	(params): ..this.  New variable.
	(ppc_after_open_output): New function.  Tweak params and pass to
	ppc_elf_link_params.
	(ppc_after_open): Adjust ppc_elf_select_plt_layout call.
	(ppc_before_allocation): Adjust ppc_elf_tls_setup call.  Enable
	relaxation for ppc476 workaround.
	(PARSE_AND_LIST_*): Add --{no-,}ppc476-workaround support.
	(LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS): Define.
2014-02-03 20:24:20 +10:30
..
aarch64elf.em Fix duplicate output section statement lookup 2014-01-20 14:21:36 +10:30
aix.em Fix duplicate output section statement lookup 2014-01-20 14:21:36 +10:30
alphaelf.em
armcoff.em Allow ld target customiser script to force on disk scripts. 2014-01-17 10:41:49 +10:30
armelf.em Fix duplicate output section statement lookup 2014-01-20 14:21:36 +10:30
astring.sed
avrelf.em
beos.em
bfin.em
cr16elf.em
crxelf.em
elf32.em Improve orphaned TLS section handling 2014-01-24 08:56:07 -08:00
elf-generic.em
epiphanyelf_4x4.em
genelf.em
generic.em Allow ld target customiser script to force on disk scripts. 2014-01-17 10:41:49 +10:30
gld960.em Allow ld target customiser script to force on disk scripts. 2014-01-17 10:41:49 +10:30
gld960c.em Allow ld target customiser script to force on disk scripts. 2014-01-17 10:41:49 +10:30
hppaelf.em Fix duplicate output section statement lookup 2014-01-20 14:21:36 +10:30
ia64elf.em
irix.em
linux.em Allow ld target customiser script to force on disk scripts. 2014-01-17 10:41:49 +10:30
lnk960.em Allow ld target customiser script to force on disk scripts. 2014-01-17 10:41:49 +10:30
m68hc1xelf.em Fix duplicate output section statement lookup 2014-01-20 14:21:36 +10:30
m68kcoff.em Allow ld target customiser script to force on disk scripts. 2014-01-17 10:41:49 +10:30
m68kelf.em
metagelf.em Fix duplicate output section statement lookup 2014-01-20 14:21:36 +10:30
mipself.em Fix duplicate output section statement lookup 2014-01-20 14:21:36 +10:30
mmix-elfnmmo.em Fix MMIX build breakage from bfd_set_section_vma change. 2014-02-01 01:11:28 +01:00
mmixelf.em
mmo.em
nds32elf.em Add support for Andes NDS32: 2013-12-13 11:52:32 +00:00
needrelax.em
netbsd.em
nios2elf.em Nios II CALL26 linker relaxation 2014-01-30 17:47:07 -08:00
ostring.sed
pe.em
pep.em
ppc32elf.em ppc476 icache bug workaround 2014-02-03 20:24:20 +10:30
ppc64elf.em Fix duplicate output section statement lookup 2014-01-20 14:21:36 +10:30
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 Fix duplicate output section statement lookup 2014-01-20 14:21:36 +10:30
sunos.em Allow ld target customiser script to force on disk scripts. 2014-01-17 10:41:49 +10:30
tic6xdsbt.em
ticoff.em Allow ld target customiser script to force on disk scripts. 2014-01-17 10:41:49 +10:30
vanilla.em
vms.em
vxworks.em
xtensaelf.em
z80.em

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

Copyright (C) 2012 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.