binutils-gdb/ld/emulparams
H.J. Lu caa65211bb Add "-z call-nop=PADDING" option to ld
The ld linker can transform indirect call to a locally defined function,
foo, via its GOT slot, to either "NOP call foo" or "call foo NOP" where
NOP is a 1-byte NOP padding.  This patch adds a "-z call-nop=PADDING"
option to x86 ld to control 1-byte NOP padding for x86 call instruction.
PADDING is one of prefix-addr, prefix-nop, suffix-nop, prefix-NUMBER or
suffix-NUMBER.

bfd/

	* elf32-i386.c (elf_i386_convert_load): Use call_nop_byte and
	check call_nop_as_suffix for 1-byte NOP padding to pad call.
	* elf64-x86-64.c (elf_x86_64_convert_load): Likewise.

include/

	* bfdlink.h (bfd_link_info): Add call_nop_as_suffix and
	call_nop_byte.

ld/

	* ld/ld.texinfo: Document "-z call-nop=PADDING" option.
	* emulparams/call_nop.sh: New file.
	* emulparams/elf_i386_be.sh: Source
	${srcdir}/emulparams/call_nop.sh.
	* emulparams/elf_i386_chaos.sh: Likewise.
	* emulparams/elf_i386_ldso.sh: Likewise.
	* emulparams/elf_i386_vxworks.sh: Likewise.
	* emulparams/elf_iamcu.sh: Likewise.
	* emulparams/elf_k1om.sh: Likewise.
	* emulparams/elf_l1om.sh: Likewise.
	* emulparams/elf_x86_64.sh: Likewise.
	* emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set
	link_info.call_nop_byte if $CALL_NOP_BYTE isn't empty.

ld/testsuite/

	* ld-i386/call3.s: New file.
	* ld-i386/call3a.d: Likewise.
	* ld-i386/call3b.d: Likewise.
	* ld-i386/call3c.d: Likewise.
	* ld-i386/call3d.d: Likewise.
	* ld-i386/call3e.d: Likewise.
	* ld-i386/call3f.d: Likewise.
	* ld-i386/call3g.d: Likewise.
	* ld-i386/call3h.d: Likewise.
	* ld-i386/load1-nacl.d: Likewise.
	* ld-x86-64/call1.s: Likewise.
	* ld-x86-64/call1a.d: Likewise.
	* ld-x86-64/call1b.d: Likewise.
	* ld-x86-64/call1c.d: Likewise.
	* ld-x86-64/call1d.d: Likewise.
	* ld-x86-64/call1e.d: Likewise.
	* ld-x86-64/call1f.d: Likewise.
	* ld-x86-64/call1g.d: Likewise.
	* ld-x86-64/call1h.d: Likewise.
	* ld-x86-64/call1i.d: Likewise.
	* ld-x86-64/load1a-nacl.d: Likewise.
	* ld-x86-64/load1b-nacl.d: Likewise.
	* ld-x86-64/load1c-nacl.d: Likewise.
	* ld-x86-64/load1d-nacl.d: Likewise.
2015-10-22 04:56:39 -07:00
..
aarch64elf32.sh
aarch64elf32b.sh
aarch64elf.sh
aarch64elfb.sh
aarch64fbsd.sh Add support for configuring an aarch64-freebsd target. 2015-04-02 15:07:27 +01:00
aarch64fbsdb.sh Add support for configuring an aarch64-freebsd target. 2015-04-02 15:07:27 +01:00
aarch64linux32.sh
aarch64linux32b.sh
aarch64linux.sh
aarch64linuxb.sh
aix5ppc.sh
aix5rs6.sh
aixppc.sh
aixrs6.sh
alpha.sh
alphavms.sh
arcebelf_prof.sh New ARC implementation. 2015-10-07 14:20:19 +01:00
arcebelf.sh New ARC implementation. 2015-10-07 14:20:19 +01:00
arceblinux_prof.sh New ARC implementation. 2015-10-07 14:20:19 +01:00
arceblinux.sh New ARC implementation. 2015-10-07 14:20:19 +01:00
arcelf_prof.sh New ARC implementation. 2015-10-07 14:20:19 +01:00
arcelf.sh New ARC implementation. 2015-10-07 14:20:19 +01:00
arclinux_prof.sh New ARC implementation. 2015-10-07 14:20:19 +01:00
arclinux.sh New ARC implementation. 2015-10-07 14:20:19 +01:00
arcv2elf.sh New ARC implementation. 2015-10-07 14:20:19 +01:00
arcv2elfx.sh New ARC implementation. 2015-10-07 14:20:19 +01:00
arm_epoc_pe.sh
arm_wince_pe.sh
armaoutb.sh
armaoutl.sh
armcoff.sh
armelf_fbsd.sh * emulparams/armelf_fbsd.sh (TEXT_START_ADDR): Increase alignment to 64kB boundary like in armelf_linux.sh 2014-08-22 06:33:45 +02:00
armelf_linux_eabi.sh
armelf_linux.sh ld/ARM: Increase maximum page size to 64kB 2014-07-08 15:00:12 +01:00
armelf_nacl.sh
armelf_nbsd.sh
armelf_vxworks.sh
armelf.sh
armelfb_fbsd.sh
armelfb_linux_eabi.sh
armelfb_linux.sh
armelfb_nacl.sh
armelfb_nbsd.sh
armelfb.sh
armnbsd.sh
armnto.sh
armpe.sh
armsymbian.sh
avr1.sh
avr2.sh
avr3.sh
avr4.sh
avr5.sh
avr6.sh
avr25.sh
avr31.sh
avr35.sh
avr51.sh
avrtiny.sh
avrxmega1.sh
avrxmega2.sh
avrxmega3.sh
avrxmega4.sh
avrxmega5.sh
avrxmega6.sh
avrxmega7.sh
call_nop.sh Add "-z call-nop=PADDING" option to ld 2015-10-22 04:56:39 -07:00
coff_i860.sh
coff_sparc.sh
crisaout.sh
criself.sh ALIGN change affects cris scripts 2015-07-20 14:29:37 +09:30
crislinux.sh
d10velf.sh
d30v_e.sh
d30v_o.sh
d30velf.sh
delta68.sh
elf32_dlx.sh
elf32_i860.sh
elf32_i960.sh
elf32_sparc_sol2.sh
elf32_sparc_vxworks.sh
elf32_sparc.sh
elf32_spu.sh
elf32_tic6x_be.sh
elf32_tic6x_elf_be.sh
elf32_tic6x_elf_le.sh
elf32_tic6x_le.sh Prevent multiple definitions for _HEAP_START, _HEAP_MAX, and _STACK_START when performing a relocatable link with a tic6x target. 2015-04-01 11:29:46 +01:00
elf32_tic6x_linux_be.sh
elf32_tic6x_linux_le.sh
elf32_x86_64_nacl.sh
elf32_x86_64.sh Add "-z call-nop=PADDING" option to ld 2015-10-22 04:56:39 -07:00
elf32am33lin.sh
elf32b4300.sh
elf32bfin.sh
elf32bfinfd.sh
elf32bmip.sh [MIPS] Implement O32 FPXX, FP64 and FP64A ABI extensions 2014-07-29 11:27:59 +01:00
elf32bmipn32-defs.sh Skip empty EMULATION_NAME 2015-04-08 09:46:50 -07:00
elf32bmipn32.sh
elf32bsmip.sh
elf32btsmip_fbsd.sh
elf32btsmip.sh
elf32btsmipn32_fbsd.sh
elf32btsmipn32.sh
elf32cr16.sh
elf32cr16c.sh
elf32crx.sh
elf32ebmip.sh
elf32ebmipvxworks.sh
elf32elmip.sh
elf32elmipvxworks.sh
elf32epiphany_4x4.sh
elf32epiphany.sh
elf32fr30.sh
elf32frv.sh
elf32frvfd.sh
elf32ft32.sh FT32 initial support 2015-01-28 16:25:18 +10:30
elf32i370.sh
elf32ip2k.sh
elf32iq10.sh
elf32iq2000.sh
elf32l4300.sh
elf32lm32.sh
elf32lm32fd.sh
elf32lmip.sh
elf32lppc.sh
elf32lppclinux.sh
elf32lppcnto.sh
elf32lppcsim.sh
elf32lr5900.sh
elf32lr5900n32.sh
elf32lsmip.sh
elf32ltsmip_fbsd.sh
elf32ltsmip.sh
elf32ltsmipn32_fbsd.sh
elf32ltsmipn32.sh
elf32m32c.sh
elf32mb_linux.sh
elf32mbel_linux.sh
elf32mcore.sh
elf32mep.sh
elf32metag.sh
elf32microblaze.sh
elf32microblazeel.sh
elf32mipswindiss.sh
elf32moxie.sh
elf32mt.sh
elf32or1k_linux.sh or1k: increase linux TEXT_START_ADDR to 0x2000 2014-07-17 00:26:45 +03:00
elf32or1k.sh
elf32ppc_fbsd.sh
elf32ppc.sh
elf32ppccommon.sh
elf32ppclinux.sh
elf32ppcnto.sh
elf32ppcsim.sh
elf32ppcvxworks.sh
elf32ppcwindiss.sh
elf32rl78.sh Fix the evaluation of RL78 complex relocs, by making immediate values be computed relative to a new absolute symbol. 2015-07-24 16:44:27 +01:00
elf32rx.sh
elf32tilegx_be.sh
elf32tilegx.sh
elf32tilepro.sh
elf32vax.sh
elf32visium.sh Add Visium support to ld 2014-12-06 16:45:22 +01:00
elf32xc16x.sh
elf32xc16xl.sh
elf32xc16xs.sh
elf32xstormy16.sh
elf32xtensa.sh
elf64_aix.sh
elf64_ia64_fbsd.sh
elf64_ia64_vms.sh
elf64_ia64.sh
elf64_s390.sh
elf64_sparc_fbsd.sh
elf64_sparc_sol2.sh
elf64_sparc.sh
elf64alpha_fbsd.sh
elf64alpha_nbsd.sh
elf64alpha.sh
elf64bmip-defs.sh [MIPS] Implement O32 FPXX, FP64 and FP64A ABI extensions 2014-07-29 11:27:59 +01:00
elf64bmip.sh
elf64btsmip_fbsd.sh
elf64btsmip.sh
elf64hppa.sh
elf64lppc.sh
elf64ltsmip_fbsd.sh
elf64ltsmip.sh
elf64mmix.sh
elf64ppc_fbsd.sh
elf64ppc.sh Align .TOC. for PowerPC64 2015-04-23 09:49:19 +09:30
elf64rdos.sh
elf64tilegx_be.sh
elf64tilegx.sh
elf_fbsd.sh
elf_i386_be.sh Add "-z call-nop=PADDING" option to ld 2015-10-22 04:56:39 -07:00
elf_i386_chaos.sh Add "-z call-nop=PADDING" option to ld 2015-10-22 04:56:39 -07:00
elf_i386_fbsd.sh
elf_i386_ldso.sh Add "-z call-nop=PADDING" option to ld 2015-10-22 04:56:39 -07:00
elf_i386_nacl.sh
elf_i386_sol2.sh
elf_i386_vxworks.sh Add "-z call-nop=PADDING" option to ld 2015-10-22 04:56:39 -07:00
elf_i386.sh Add "-z call-nop=PADDING" option to ld 2015-10-22 04:56:39 -07:00
elf_iamcu.sh Add "-z call-nop=PADDING" option to ld 2015-10-22 04:56:39 -07:00
elf_k1om_fbsd.sh
elf_k1om.sh Add "-z call-nop=PADDING" option to ld 2015-10-22 04:56:39 -07:00
elf_l1om_fbsd.sh
elf_l1om.sh Add "-z call-nop=PADDING" option to ld 2015-10-22 04:56:39 -07:00
elf_nacl.sh
elf_s390.sh
elf_x86_64_cloudabi.sh Add support for Nuxi CloudABI on x86-64 2015-03-31 08:11:08 -07:00
elf_x86_64_fbsd.sh
elf_x86_64_nacl.sh
elf_x86_64_sol2.sh
elf_x86_64.sh Add "-z call-nop=PADDING" option to ld 2015-10-22 04:56:39 -07:00
extern_protected_data.sh Add -z noextern-protected-data to ld for ELF/x86 2015-04-14 04:13:11 -07:00
gld960.sh
gld960coff.sh
h8300.sh
h8300elf_linux.sh Add support for the h8300-linux target. 2015-02-23 17:04:53 +00:00
h8300elf.sh
h8300h.sh
h8300helf_linux.sh Add support for the h8300-linux target. 2015-02-23 17:04:53 +00:00
h8300helf.sh
h8300hn.sh
h8300hnelf.sh
h8300s.sh
h8300self_linux.sh Add support for the h8300-linux target. 2015-02-23 17:04:53 +00:00
h8300self.sh
h8300sn.sh
h8300snelf.sh
h8300sx.sh
h8300sxelf_linux.sh Add support for the h8300-linux target. 2015-02-23 17:04:53 +00:00
h8300sxelf.sh
h8300sxn.sh
h8300sxnelf.sh
h8500.sh
h8500b.sh
h8500c.sh
h8500m.sh
h8500s.sh
hp3hpux.sh
hp300bsd.sh
hppa64linux.sh
hppaelf.sh
hppalinux.sh
hppanbsd.sh
hppaobsd.sh
i386aout.sh
i386beos.sh
i386bsd.sh
i386coff.sh
i386go32.sh
i386linux.sh
i386lynx.sh
i386mach.sh
i386moss.sh
i386msdos.sh
i386nbsd.sh
i386nto.sh
i386nw.sh
i386pe_posix.sh
i386pe.sh
i386pep.sh
lnk960.sh
m32relf_linux.sh
m32relf.sh
m32rlelf_linux.sh
m32rlelf.sh
m68hc11elf.sh
m68hc11elfb.sh
m68hc12elf.sh
m68hc12elfb.sh
m68k4knbsd.sh
m68kaout.sh
m68kaux.sh
m68kcoff.sh
m68kelf.sh
m68kelfnbsd.sh
m68klinux.sh
m68knbsd.sh
m68kpsos.sh
m88kbcs.sh
mcorepe.sh
mmo.sh
mn10200.sh
mn10300.sh
moxiebox.sh Add moxiebox target 2014-07-27 08:51:20 -04:00
msp430elf.sh Add support to the MSP430 linker for the automatic placement of code and data into either low or high memory regions. 2015-05-05 13:38:00 +01:00
msp430X.sh Change msp430 emulation to msp430elf 2015-04-24 17:05:52 -04:00
nds32belf16m.sh
nds32belf_linux.sh
nds32belf.sh
nds32elf16m.sh
nds32elf_linux.sh
nds32elf.sh
news.sh
nios2elf.sh
nios2linux.sh
ns32knbsd.sh
pc532macha.sh
pdp11.sh
pjelf.sh
pjlelf.sh
plt_unwind.sh Add ld_list_options 2015-04-08 04:55:23 -07:00
ppclynx.sh
ppcmacos.sh
ppcnw.sh
ppcpe.sh
README ChangeLog rotatation and copyright year update 2015-01-02 00:53:45 +10:30
riscix.sh
score3_elf.sh
score7_elf.sh
sh.sh
shelf32_linux.sh
shelf32_nbsd.sh
shelf32.sh
shelf64_nbsd.sh
shelf64.sh
shelf_fd.sh
shelf_linux.sh
shelf_nbsd.sh
shelf_nto.sh
shelf_uclinux.sh
shelf_vxworks.sh
shelf.sh
shl.sh
shlelf32_linux.sh
shlelf32_nbsd.sh
shlelf32.sh
shlelf64_nbsd.sh
shlelf64.sh
shlelf_fd.sh
shlelf_linux.sh
shlelf_nbsd.sh
shlelf_nto.sh
shlelf_vxworks.sh
shlelf.sh
shlsymbian.sh
shpe.sh
solaris2.sh Solaris PIE support 2015-09-22 11:12:51 +02:00
sparcaout.sh
sparclinux.sh
sparcnbsd.sh
st2000.sh
sun3.sh
sun4.sh
tic3xcoff_onchip.sh
tic3xcoff.sh
tic4xcoff.sh
tic30aout.sh
tic30coff.sh
tic54xcoff.sh
tic80coff.sh
v850_rh850.sh Adds support for generating notes in V850 binaries. 2015-02-24 17:54:09 +00:00
v850.sh Adds support for generating notes in V850 binaries. 2015-02-24 17:54:09 +00:00
vanilla.sh
vax.sh
vaxnbsd.sh
vsta.sh
vxworks.sh
w65.sh
xgateelf.sh
z80.sh
z8001.sh
z8002.sh

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 read by genscripts.sh as shell commands.
They set parameters for the emulations.

Copyright (C) 2012-2015 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.