caa65211bb
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. |
||
---|---|---|
.. | ||
aarch64elf32.sh | ||
aarch64elf32b.sh | ||
aarch64elf.sh | ||
aarch64elfb.sh | ||
aarch64fbsd.sh | ||
aarch64fbsdb.sh | ||
aarch64linux32.sh | ||
aarch64linux32b.sh | ||
aarch64linux.sh | ||
aarch64linuxb.sh | ||
aix5ppc.sh | ||
aix5rs6.sh | ||
aixppc.sh | ||
aixrs6.sh | ||
alpha.sh | ||
alphavms.sh | ||
arcebelf_prof.sh | ||
arcebelf.sh | ||
arceblinux_prof.sh | ||
arceblinux.sh | ||
arcelf_prof.sh | ||
arcelf.sh | ||
arclinux_prof.sh | ||
arclinux.sh | ||
arcv2elf.sh | ||
arcv2elfx.sh | ||
arm_epoc_pe.sh | ||
arm_wince_pe.sh | ||
armaoutb.sh | ||
armaoutl.sh | ||
armcoff.sh | ||
armelf_fbsd.sh | ||
armelf_linux_eabi.sh | ||
armelf_linux.sh | ||
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 | ||
coff_i860.sh | ||
coff_sparc.sh | ||
crisaout.sh | ||
criself.sh | ||
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 | ||
elf32_tic6x_linux_be.sh | ||
elf32_tic6x_linux_le.sh | ||
elf32_x86_64_nacl.sh | ||
elf32_x86_64.sh | ||
elf32am33lin.sh | ||
elf32b4300.sh | ||
elf32bfin.sh | ||
elf32bfinfd.sh | ||
elf32bmip.sh | ||
elf32bmipn32-defs.sh | ||
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 | ||
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 | ||
elf32or1k.sh | ||
elf32ppc_fbsd.sh | ||
elf32ppc.sh | ||
elf32ppccommon.sh | ||
elf32ppclinux.sh | ||
elf32ppcnto.sh | ||
elf32ppcsim.sh | ||
elf32ppcvxworks.sh | ||
elf32ppcwindiss.sh | ||
elf32rl78.sh | ||
elf32rx.sh | ||
elf32tilegx_be.sh | ||
elf32tilegx.sh | ||
elf32tilepro.sh | ||
elf32vax.sh | ||
elf32visium.sh | ||
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 | ||
elf64bmip.sh | ||
elf64btsmip_fbsd.sh | ||
elf64btsmip.sh | ||
elf64hppa.sh | ||
elf64lppc.sh | ||
elf64ltsmip_fbsd.sh | ||
elf64ltsmip.sh | ||
elf64mmix.sh | ||
elf64ppc_fbsd.sh | ||
elf64ppc.sh | ||
elf64rdos.sh | ||
elf64tilegx_be.sh | ||
elf64tilegx.sh | ||
elf_fbsd.sh | ||
elf_i386_be.sh | ||
elf_i386_chaos.sh | ||
elf_i386_fbsd.sh | ||
elf_i386_ldso.sh | ||
elf_i386_nacl.sh | ||
elf_i386_sol2.sh | ||
elf_i386_vxworks.sh | ||
elf_i386.sh | ||
elf_iamcu.sh | ||
elf_k1om_fbsd.sh | ||
elf_k1om.sh | ||
elf_l1om_fbsd.sh | ||
elf_l1om.sh | ||
elf_nacl.sh | ||
elf_s390.sh | ||
elf_x86_64_cloudabi.sh | ||
elf_x86_64_fbsd.sh | ||
elf_x86_64_nacl.sh | ||
elf_x86_64_sol2.sh | ||
elf_x86_64.sh | ||
extern_protected_data.sh | ||
gld960.sh | ||
gld960coff.sh | ||
h8300.sh | ||
h8300elf_linux.sh | ||
h8300elf.sh | ||
h8300h.sh | ||
h8300helf_linux.sh | ||
h8300helf.sh | ||
h8300hn.sh | ||
h8300hnelf.sh | ||
h8300s.sh | ||
h8300self_linux.sh | ||
h8300self.sh | ||
h8300sn.sh | ||
h8300snelf.sh | ||
h8300sx.sh | ||
h8300sxelf_linux.sh | ||
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 | ||
msp430elf.sh | ||
msp430X.sh | ||
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 | ||
ppclynx.sh | ||
ppcmacos.sh | ||
ppcnw.sh | ||
ppcpe.sh | ||
README | ||
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 | ||
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 | ||
v850.sh | ||
vanilla.sh | ||
vax.sh | ||
vaxnbsd.sh | ||
vsta.sh | ||
vxworks.sh | ||
w65.sh | ||
xgateelf.sh | ||
z80.sh | ||
z8001.sh | ||
z8002.sh |
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.