mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-21 01:12:32 +08:00
ld whitespace fixes
* pe-dll.c: Formatting, whitespace fixes. * NEWS: Whitespace fixes. * configure.ac: Likewise. * configure.tgt: Likewise. * deffilep.y: Likewise. * genscripts.sh: Likewise. * ld.texinfo: Likewise. * ldgram.y: Likewise. * ldlang.c: Likewise. * ldlex.l: Likewise. * lexsup.c: Likewise. * plugin.c: Likewise. * emulparams/arc-endianness.sh: Likewise. * emulparams/elf32_x86_64.sh: Likewise. * emulparams/elf64mmix.sh: Likewise. * emulparams/elf_x86_64.sh: Likewise. * emulparams/h8300elf.sh: Likewise. * emulparams/h8300elf_linux.sh: Likewise. * emulparams/vxworks.sh: Likewise. * emultempl/aarch64elf.em: Likewise. * emultempl/aix.em: Likewise. * emultempl/armelf.em: Likewise. * emultempl/avrelf.em: Likewise. * emultempl/beos.em: Likewise. * emultempl/hppaelf.em: Likewise. * emultempl/m68kcoff.em: Likewise. * emultempl/m68kelf.em: Likewise. * emultempl/metagelf.em: Likewise. * emultempl/msp430.em: Likewise. * emultempl/nds32elf.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/pep.em: Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/sh64elf.em: Likewise. * emultempl/spu_ovl.S: Likewise. * emultempl/spuelf.em: Likewise. * emultempl/tic6xdsbt.em: Likewise. * emultempl/ticoff.em: Likewise. * emultempl/vms.em: Likewise. * po/Make-in: Likewise. * scripttempl/DWARF.sc: Likewise. * scripttempl/aix.sc: Likewise. * scripttempl/alpha.sc: Likewise. * scripttempl/alphavms.sc: Likewise. * scripttempl/aout.sc: Likewise. * scripttempl/arclinux.sc: Likewise. * scripttempl/armaout.sc: Likewise. * scripttempl/armbpabi.sc: Likewise. * scripttempl/armcoff.sc: Likewise. * scripttempl/avr.sc: Likewise. * scripttempl/crisaout.sc: Likewise. * scripttempl/delta68.sc: Likewise. * scripttempl/dlx.sc: Likewise. * scripttempl/elf.sc: Likewise. * scripttempl/elf32cr16.sc: Likewise. * scripttempl/elf32cr16c.sc: Likewise. * scripttempl/elf32crx.sc: Likewise. * scripttempl/elf32msp430.sc: Likewise. * scripttempl/elf32msp430_3.sc: Likewise. * scripttempl/elf32sh-symbian.sc: Likewise. * scripttempl/elf32xc16x.sc: Likewise. * scripttempl/elf32xc16xl.sc: Likewise. * scripttempl/elf32xc16xs.sc: Likewise. * scripttempl/elf64hppa.sc: Likewise. * scripttempl/elf_chaos.sc: Likewise. * scripttempl/elfarc.sc: Likewise. * scripttempl/elfarcv2.sc: Likewise. * scripttempl/elfd10v.sc: Likewise. * scripttempl/elfd30v.sc: Likewise. * scripttempl/elfi370.sc: Likewise. * scripttempl/elfm68hc11.sc: Likewise. * scripttempl/elfm68hc12.sc: Likewise. * scripttempl/elfmicroblaze.sc: Likewise. * scripttempl/elfxgate.sc: Likewise. * scripttempl/elfxtensa.sc: Likewise. * scripttempl/epiphany_4x4.sc: Likewise. * scripttempl/epocpe.sc: Likewise. * scripttempl/h8300.sc: Likewise. * scripttempl/h8300h.sc: Likewise. * scripttempl/h8300hn.sc: Likewise. * scripttempl/h8300s.sc: Likewise. * scripttempl/h8300sn.sc: Likewise. * scripttempl/h8300sx.sc: Likewise. * scripttempl/h8300sxn.sc: Likewise. * scripttempl/h8500.sc: Likewise. * scripttempl/h8500b.sc: Likewise. * scripttempl/h8500c.sc: Likewise. * scripttempl/h8500m.sc: Likewise. * scripttempl/h8500s.sc: Likewise. * scripttempl/hppaelf.sc: Likewise. * scripttempl/i386beos.sc: Likewise. * scripttempl/i386coff.sc: Likewise. * scripttempl/i386go32.sc: Likewise. * scripttempl/i386msdos.sc: Likewise. * scripttempl/i860coff.sc: Likewise. * scripttempl/i960.sc: Likewise. * scripttempl/ia64vms.sc: Likewise. * scripttempl/ip2k.sc: Likewise. * scripttempl/iq2000.sc: Likewise. * scripttempl/m68kaux.sc: Likewise. * scripttempl/m68kcoff.sc: Likewise. * scripttempl/m88kbcs.sc: Likewise. * scripttempl/mcorepe.sc: Likewise. * scripttempl/mep.sc: Likewise. * scripttempl/mips.sc: Likewise. * scripttempl/mipsbsd.sc: Likewise. * scripttempl/mmo.sc: Likewise. * scripttempl/moxie.sc: Likewise. * scripttempl/nds32elf.sc: Likewise. * scripttempl/nw.sc: Likewise. * scripttempl/pe.sc: Likewise. * scripttempl/pep.sc: Likewise. * scripttempl/pj.sc: Likewise. * scripttempl/ppcpe.sc: Likewise. * scripttempl/psos.sc: Likewise. * scripttempl/riscix.sc: Likewise. * scripttempl/sh.sc: Likewise. * scripttempl/sparccoff.sc: Likewise. * scripttempl/st2000.sc: Likewise. * scripttempl/tic30aout.sc: Likewise. * scripttempl/tic30coff.sc: Likewise. * scripttempl/tic4xcoff.sc: Likewise. * scripttempl/tic54xcoff.sc: Likewise. * scripttempl/tic80coff.sc: Likewise. * scripttempl/v850.sc: Likewise. * scripttempl/v850_rh850.sc: Likewise. * scripttempl/vanilla.sc: Likewise. * scripttempl/visium.sc: Likewise. * scripttempl/w65.sc: Likewise. * scripttempl/xstormy16.sc: Likewise. * scripttempl/z80.sc: Likewise. * scripttempl/z8000.sc: Likewise. * configure: Regenerate.
This commit is contained in:
parent
1d75a8e26e
commit
6c19b93bcd
2
ld/NEWS
2
ld/NEWS
@ -1,7 +1,7 @@
|
||||
-*- text -*-
|
||||
* Add -z globalaudit command line option to force audit libraries to be run
|
||||
for every dynamic object loaded by an executable - provided that the loader
|
||||
supports this functionality.
|
||||
supports this functionality.
|
||||
|
||||
* Tighten linker script grammar around file name specifiers to prevent the use
|
||||
of SORT_BY_ALIGNMENT and SORT_BY_INIT_PRIORITY on filenames. These would
|
||||
|
2
ld/configure
vendored
2
ld/configure
vendored
@ -15419,7 +15419,7 @@ fi
|
||||
if test "${enable_targets+set}" = set; then :
|
||||
enableval=$enable_targets; case "${enableval}" in
|
||||
yes | "") as_fn_error "enable-targets option must specify target names or 'all'" "$LINENO" 5
|
||||
;;
|
||||
;;
|
||||
no) enable_targets= ;;
|
||||
*) enable_targets=$enableval ;;
|
||||
esac
|
||||
|
@ -44,7 +44,7 @@ AC_ARG_ENABLE(targets,
|
||||
[ --enable-targets alternative target configurations],
|
||||
[case "${enableval}" in
|
||||
yes | "") AC_MSG_ERROR(enable-targets option must specify target names or 'all')
|
||||
;;
|
||||
;;
|
||||
no) enable_targets= ;;
|
||||
*) enable_targets=$enableval ;;
|
||||
esac])dnl
|
||||
@ -120,7 +120,7 @@ AC_SUBST(installed_linker)
|
||||
|
||||
AC_ARG_ENABLE([got],
|
||||
AS_HELP_STRING([--enable-got=<type>],
|
||||
[GOT handling scheme (target, single, negative, multigot)]),
|
||||
[GOT handling scheme (target, single, negative, multigot)]),
|
||||
[case "${enableval}" in
|
||||
target | single | negative | multigot) got_handling=$enableval ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-got option) ;;
|
||||
@ -130,16 +130,16 @@ esac],
|
||||
case "${got_handling}" in
|
||||
target)
|
||||
AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_TARGET_DEFAULT],
|
||||
[Define to choose default GOT handling scheme]) ;;
|
||||
[Define to choose default GOT handling scheme]) ;;
|
||||
single)
|
||||
AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_SINGLE],
|
||||
[Define to choose default GOT handling scheme]) ;;
|
||||
[Define to choose default GOT handling scheme]) ;;
|
||||
negative)
|
||||
AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_NEGATIVE],
|
||||
[Define to choose default GOT handling scheme]) ;;
|
||||
[Define to choose default GOT handling scheme]) ;;
|
||||
multigot)
|
||||
AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_MULTIGOT],
|
||||
[Define to choose default GOT handling scheme]) ;;
|
||||
[Define to choose default GOT handling scheme]) ;;
|
||||
*) AC_MSG_ERROR(bad value ${got_handling} for --enable-got option) ;;
|
||||
esac
|
||||
|
||||
|
@ -28,9 +28,9 @@
|
||||
# targ_extra_libpath additional linker emulations using LIB_PATH
|
||||
# targ_extra_ofiles additional host-compiled objects needed by the emulation
|
||||
# targ64_extra_emuls additional linker emulations to provide if
|
||||
# --enable-64-bit-bfd is given or if host is 64 bit.
|
||||
# --enable-64-bit-bfd is given or if host is 64 bit.
|
||||
# targ64_extra_libpath additional linker emulations using LIB_PATH if
|
||||
# --enable-64-bit-bfd is given or if host is 64 bit.
|
||||
# --enable-64-bit-bfd is given or if host is 64 bit.
|
||||
# NATIVE_LIB_DIRS library directories to search on this host
|
||||
# (if we are a native or sysrooted linker)
|
||||
|
||||
@ -71,7 +71,7 @@ aarch64-*-linux*) targ_emul=aarch64linux
|
||||
targ_extra_libpath="aarch64linuxb aarch64linux32 aarch64linux32b armelfb_linux_eabi armelf_linux_eabi"
|
||||
targ_extra_emuls="aarch64elf aarch64elf32 aarch64elf32b aarch64elfb armelf armelfb $targ_extra_libpath" ;;
|
||||
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
|
||||
targ_emul=elf64alpha_fbsd
|
||||
targ_emul=elf64alpha_fbsd
|
||||
targ_extra_emuls="elf64alpha alpha"
|
||||
tdir_alpha=`echo ${targ_alias} | sed -e 's/freebsd/freebsdecoff/'` ;;
|
||||
alpha*-*-linux*ecoff*) targ_emul=alpha targ_extra_emuls=elf64alpha
|
||||
@ -87,7 +87,7 @@ alpha*-*-*vms*) targ_emul=alphavms
|
||||
;;
|
||||
arc*-*-elf*) targ_emul=arcelf
|
||||
targ_extra_emuls="arcelf_prof arclinux arclinux_nps arclinux_prof arcv2elf arcv2elfx"
|
||||
;;
|
||||
;;
|
||||
arc*-*-linux*) case "${with_cpu}" in
|
||||
nps400) targ_emul=arclinux_nps
|
||||
targ_extra_emuls=arclinux
|
||||
@ -110,22 +110,22 @@ arm-*-coff) targ_emul=armcoff ;;
|
||||
arm*b-*-freebsd*) targ_emul=armelfb_fbsd
|
||||
targ_extra_emuls="armelf_fbsd armelf" ;;
|
||||
arm*-*-freebsd* | arm-*-kfreebsd*-gnu)
|
||||
targ_emul=armelf_fbsd
|
||||
targ_emul=armelf_fbsd
|
||||
targ_extra_emuls="armelfb_fbsd armelf" ;;
|
||||
armeb-*-netbsdelf*) targ_emul=armelfb_nbsd;
|
||||
targ_extra_emuls="armelf_nbsd armelf armnbsd" ;;
|
||||
arm-*-netbsdelf*) targ_emul=armelf_nbsd;
|
||||
targ_extra_emuls="armelfb_nbsd armelf armnbsd" ;;
|
||||
arm-*-netbsd*) targ_emul=armnbsd;
|
||||
targ_extra_emuls="armelf armelf_nbsd armelfb_nbsd" ;;
|
||||
targ_extra_emuls="armelf armelf_nbsd armelfb_nbsd" ;;
|
||||
arm-*-nto*) targ_emul=armnto ;;
|
||||
arm-*-openbsd*) targ_emul=armnbsd ;;
|
||||
arm-*-phoenix*) targ_emul=armelf ;;
|
||||
armeb-*-elf | armeb-*-eabi*)
|
||||
targ_emul=armelfb ;;
|
||||
arm-*-elf | arm*-*-eabi* | arm-*-rtems*)
|
||||
targ_emul=armelf ;;
|
||||
arm*-*-symbianelf*) targ_emul=armsymbian;;
|
||||
targ_emul=armelf ;;
|
||||
arm*-*-symbianelf*) targ_emul=armsymbian;;
|
||||
arm-*-kaos*) targ_emul=armelf ;;
|
||||
arm9e-*-elf) targ_emul=armelf ;;
|
||||
arm*b-*-linux-*eabi*) targ_emul=armelfb_linux_eabi
|
||||
@ -140,7 +140,7 @@ arm*-*-linux-*eabi*) targ_emul=armelf_linux_eabi
|
||||
targ_extra_emuls=armelfb_linux_eabi
|
||||
targ_extra_libpath=$targ_extra_emuls
|
||||
;;
|
||||
arm*-*-linux-*) targ_emul=armelf_linux
|
||||
arm*-*-linux-*) targ_emul=armelf_linux
|
||||
targ_extra_emuls="armelf armelfb armelfb_linux"
|
||||
targ_extra_libpath="armelfb_linux"
|
||||
;;
|
||||
@ -185,8 +185,8 @@ bfin-*-linux-uclibc*) targ_emul=elf32bfinfd;
|
||||
targ_extra_emuls="elf32bfin"
|
||||
targ_extra_libpath=$targ_extra_emuls
|
||||
;;
|
||||
cr16-*-elf*) targ_emul=elf32cr16 ;;
|
||||
cr16c-*-elf*) targ_emul=elf32cr16c
|
||||
cr16-*-elf*) targ_emul=elf32cr16 ;;
|
||||
cr16c-*-elf*) targ_emul=elf32cr16c
|
||||
;;
|
||||
cris-*-*aout*) targ_emul=crisaout
|
||||
targ_extra_emuls="criself crislinux"
|
||||
@ -284,15 +284,15 @@ x86_64-*-linux-*) targ_emul=elf_x86_64
|
||||
tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'`
|
||||
tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'` ;;
|
||||
i[3-7]86-*-redox*) targ_emul=elf_i386
|
||||
targ_extra_emuls=elf_x86_64 ;;
|
||||
targ_extra_emuls=elf_x86_64 ;;
|
||||
x86_64-*-redox*) targ_emul=elf_x86_64
|
||||
targ_extra_emuls=elf_i386 ;;
|
||||
i[3-7]86-*-sysv[45]*) targ_emul=elf_i386
|
||||
targ_extra_emuls=elf_iamcu ;;
|
||||
i[3-7]86-*-solaris2*) targ_emul=elf_i386_sol2
|
||||
targ_extra_emuls="elf_i386_ldso elf_i386 elf_iamcu elf_x86_64_sol2 elf_x86_64 elf_l1om elf_k1om"
|
||||
targ_extra_emuls="elf_i386_ldso elf_i386 elf_iamcu elf_x86_64_sol2 elf_x86_64 elf_l1om elf_k1om"
|
||||
targ_extra_libpath=$targ_extra_emuls
|
||||
;;
|
||||
;;
|
||||
x86_64-*-solaris2*)
|
||||
targ_emul=elf_x86_64_sol2
|
||||
targ_extra_emuls="elf_x86_64 elf_i386_sol2 elf_i386_ldso elf_i386 elf_iamcu elf_l1om elf_k1om"
|
||||
@ -301,9 +301,9 @@ x86_64-*-solaris2*)
|
||||
i[3-7]86-*-unixware) targ_emul=elf_i386
|
||||
targ_extra_emuls=elf_iamcu ;;
|
||||
i[3-7]86-*-solaris*) targ_emul=elf_i386_ldso
|
||||
targ_extra_emuls="elf_i386"
|
||||
targ_extra_emuls="elf_i386"
|
||||
targ_extra_libpath=$targ_extra_emuls
|
||||
;;
|
||||
;;
|
||||
i[3-7]86-*-netbsdelf* | \
|
||||
i[3-7]86-*-netbsd*-gnu* | \
|
||||
i[3-7]86-*-knetbsd*-gnu)
|
||||
@ -320,14 +320,14 @@ x86_64-*-netbsd*) targ_emul=elf_x86_64
|
||||
case "${tdir_elf_iamcu}" in
|
||||
*-netbsdelf*) ;;
|
||||
*) tdir_elf_iamcu=`echo ${tdir_elf_iamcu} | \
|
||||
sed -e 's/netbsd/netbsdelf/'`;;
|
||||
sed -e 's/netbsd/netbsdelf/'`;;
|
||||
esac
|
||||
tdir_elf_i386=`echo ${targ_alias} | \
|
||||
sed -e 's/x86_64/i386/'`
|
||||
case "${tdir_elf_i386}" in
|
||||
*-netbsdelf*) ;;
|
||||
*) tdir_elf_i386=`echo ${tdir_elf_i386} | \
|
||||
sed -e 's/netbsd/netbsdelf/'`;;
|
||||
sed -e 's/netbsd/netbsdelf/'`;;
|
||||
esac ;;
|
||||
i[3-7]86-*-netware) targ_emul=i386nw ;;
|
||||
i[3-7]86-*-elfiamcu) targ_emul=elf_iamcu
|
||||
@ -349,7 +349,7 @@ i[3-7]86-*-dragonfly*) targ_emul=elf_i386
|
||||
x86_64-*-dragonfly*) targ_emul=elf_x86_64
|
||||
targ_extra_emuls="elf_i386 elf_iamcu elf_l1om elf_k1om" ;;
|
||||
i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu)
|
||||
targ_emul=elf_i386_fbsd
|
||||
targ_emul=elf_i386_fbsd
|
||||
targ_extra_emuls="elf_i386 elf_iamcu i386bsd" ;;
|
||||
x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
|
||||
targ_emul=elf_x86_64_fbsd
|
||||
@ -388,7 +388,7 @@ x86_64-*-mingw*) targ_emul=i386pep ;
|
||||
targ_extra_emuls=i386pe
|
||||
targ_extra_ofiles="deffilep.o pep-dll.o pe-dll.o" ;;
|
||||
i[3-7]86-*-interix*) targ_emul=i386pe_posix;
|
||||
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
|
||||
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
|
||||
i[3-7]86-*-beospe*) targ_emul=i386beos ;;
|
||||
i[3-7]86-*-beos*) targ_emul=elf_i386_be ;;
|
||||
i[3-7]86-*-vxworks*) targ_emul=elf_i386_vxworks ;;
|
||||
@ -419,7 +419,7 @@ i960-*-elf*) targ_emul=elf32_i960
|
||||
ia16-*-elf*) targ_emul=elf_i386 targ_extra_emuls=i386msdos ;;
|
||||
ia64-*-elf*) targ_emul=elf64_ia64 ;;
|
||||
ia64-*-freebsd* | ia64-*-kfreebsd*-gnu)
|
||||
targ_emul=elf64_ia64_fbsd
|
||||
targ_emul=elf64_ia64_fbsd
|
||||
targ_extra_emuls="elf64_ia64" ;;
|
||||
ia64-*-netbsd*) targ_emul=elf64_ia64 ;;
|
||||
ia64-*-linux*) targ_emul=elf64_ia64 ;;
|
||||
@ -428,19 +428,19 @@ ia64-*-aix*) targ_emul=elf64_aix
|
||||
;;
|
||||
ip2k-*-elf) targ_emul=elf32ip2k
|
||||
;;
|
||||
iq2000-*-elf) targ_emul=elf32iq2000 ; targ_extra_emuls="elf32iq10"
|
||||
iq2000-*-elf) targ_emul=elf32iq2000 ; targ_extra_emuls="elf32iq10"
|
||||
;;
|
||||
lm32-*-*linux*) targ_emul=elf32lm32fd ;;
|
||||
lm32-*-*) targ_emul=elf32lm32 ; targ_extra_emuls="elf32lm32fd"
|
||||
;;
|
||||
lm32-*-*linux*) targ_emul=elf32lm32fd ;;
|
||||
lm32-*-*) targ_emul=elf32lm32 ; targ_extra_emuls="elf32lm32fd"
|
||||
;;
|
||||
m32c-*-elf | m32c-*-rtems*)
|
||||
targ_emul=elf32m32c
|
||||
;;
|
||||
m32r*le-*-elf*) targ_emul=m32rlelf ;;
|
||||
m32r*le-*-elf*) targ_emul=m32rlelf ;;
|
||||
m32r*-*-elf* | m32r*-*-rtems*)
|
||||
targ_emul=m32relf ;;
|
||||
m32r*le-*-linux-*) targ_emul=m32rlelf_linux ;;
|
||||
m32r*-*-linux-*) targ_emul=m32relf_linux
|
||||
m32r*le-*-linux-*) targ_emul=m32rlelf_linux ;;
|
||||
m32r*-*-linux-*) targ_emul=m32relf_linux
|
||||
;;
|
||||
m68hc11-*-*|m6811-*-*) targ_emul=m68hc11elf
|
||||
targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;;
|
||||
@ -461,7 +461,7 @@ m68*-*-hpux*) targ_emul=hp3hpux ;;
|
||||
m68k-*-linux*aout*) targ_emul=m68klinux
|
||||
targ_extra_emuls=m68kelf
|
||||
tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'` ;;
|
||||
m68k-*-linux-*) targ_emul=m68kelf
|
||||
m68k-*-linux-*) targ_emul=m68kelf
|
||||
targ_extra_emuls=m68klinux
|
||||
tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'` ;;
|
||||
m68k-*-uclinux*) targ_emul=m68kelf ;;
|
||||
@ -496,14 +496,14 @@ microblaze*) targ_emul=elf32microblaze
|
||||
;;
|
||||
mips*-sgi-irix5*) targ_emul=elf32bsmip ;;
|
||||
mips*-sgi-irix6*) targ_emul=elf32bmipn32
|
||||
targ_extra_emuls="elf32bsmip elf64bmip"
|
||||
targ_extra_emuls="elf32bsmip elf64bmip"
|
||||
targ_extra_libpath=$targ_extra_emuls ;;
|
||||
mips*el-*-netbsd*) targ_emul=elf32ltsmip
|
||||
targ_extra_emuls="elf32btsmip elf64ltsmip elf64btsmip"
|
||||
;;
|
||||
mips*-*-netbsd*) targ_emul=elf32btsmip
|
||||
targ_extra_emuls="elf32ltsmip elf64btsmip elf64ltsmip"
|
||||
;;
|
||||
;;
|
||||
mips64el-*-openbsd*) targ_emul=elf64ltsmip
|
||||
targ_extra_emuls=elf64btsmip
|
||||
;;
|
||||
@ -534,7 +534,7 @@ mips*-*-elf* | mips*-*-rtems*)
|
||||
mips*el-*-vxworks*) targ_emul=elf32elmipvxworks
|
||||
targ_extra_emuls="elf32ebmipvxworks" ;;
|
||||
mips*-*-vxworks*) targ_emul=elf32ebmipvxworks
|
||||
targ_extra_emuls="elf32elmipvxworks" ;;
|
||||
targ_extra_emuls="elf32elmipvxworks" ;;
|
||||
mips*-*-windiss) targ_emul=elf32mipswindiss ;;
|
||||
mips64*el-*-linux-*) targ_emul=elf32ltsmipn32
|
||||
targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
|
||||
@ -564,7 +564,7 @@ mips*-*-freebsd* | mips*-*-kfreebsd*-gnu)
|
||||
targ_emul=elf32btsmip_fbsd
|
||||
targ_extra_emuls="elf32ltsmip elf32btsmip elf32ltsmipn32 elf32btsmipn32 elf64ltsmip elf64btsmip elf32ltsmip_fbsd elf32btsmipn32_fbsd elf32ltsmipn32_fbsd elf64ltsmip_fbsd elf64btsmip_fbsd"
|
||||
targ_extra_libpath=$targ_extra_emuls ;;
|
||||
mips*-*-sysv4*) targ_emul=elf32btsmip
|
||||
mips*-*-sysv4*) targ_emul=elf32btsmip
|
||||
;;
|
||||
mmix-*-*) targ_emul=mmo
|
||||
targ_extra_emuls=elf64mmix
|
||||
@ -573,9 +573,9 @@ am33_2.0-*-linux*) targ_emul=elf32am33lin ;;
|
||||
mn10200-*-*) targ_emul=mn10200 ;;
|
||||
mn10300-*-*) targ_emul=mn10300
|
||||
;;
|
||||
mt-*elf) targ_emul=elf32mt
|
||||
mt-*elf) targ_emul=elf32mt
|
||||
;;
|
||||
msp430-*-*) targ_emul=msp430elf
|
||||
msp430-*-*) targ_emul=msp430elf
|
||||
targ_extra_emuls="msp430X"
|
||||
;;
|
||||
nds32*le-*-elf*) targ_emul=nds32elf
|
||||
@ -596,9 +596,9 @@ or1k-*-elf | or1knd-*-elf | or1k-*-rtems* | or1knd-*-rtems*)
|
||||
or1k-*-linux* | or1knd-*-linux*) targ_emul=elf32or1k_linux ;;
|
||||
pdp11-*-*) targ_emul=pdp11
|
||||
;;
|
||||
pjl*-*-*) targ_emul=pjlelf
|
||||
pjl*-*-*) targ_emul=pjlelf
|
||||
targ_extra_emuls="elf_i386 elf_iamcu" ;;
|
||||
pj*-*-*) targ_emul=pjelf
|
||||
pj*-*-*) targ_emul=pjelf
|
||||
;;
|
||||
powerpc-*-freebsd* | powerpc-*-kfreebsd*-gnu)
|
||||
targ_emul=elf32ppc_fbsd
|
||||
@ -689,8 +689,8 @@ powerpc*-*-elf* | powerpc*-*-eabi* | powerpc*-*-sysv* \
|
||||
eval test -n \"\$${td}sim\" || eval ${td}sim="${ta32}"
|
||||
eval test -n \"\$${td64}\" || eval ${td64}="${ta64}"
|
||||
;;
|
||||
powerpc-*-nto*) targ_emul=elf32ppcnto ;;
|
||||
powerpcle-*-nto*) targ_emul=elf32lppcnto ;;
|
||||
powerpc-*-nto*) targ_emul=elf32ppcnto ;;
|
||||
powerpcle-*-nto*) targ_emul=elf32lppcnto ;;
|
||||
powerpc-*-macos*) targ_emul=ppcmacos ;;
|
||||
powerpc-*-netware*) targ_emul=ppcnw ;;
|
||||
powerpcle-*-pe | powerpcle-*-winnt* | powerpcle-*-cygwin*)
|
||||
@ -713,18 +713,18 @@ rs6000-*-aix*) targ_emul=aixrs6
|
||||
;;
|
||||
rl78-*-*) targ_emul=elf32rl78 ;;
|
||||
rx-*-*) targ_emul=elf32rx ;;
|
||||
s390x-*-linux*) targ_emul=elf64_s390
|
||||
s390x-*-linux*) targ_emul=elf64_s390
|
||||
targ_extra_emuls=elf_s390
|
||||
targ_extra_libpath=$targ_extra_emuls
|
||||
tdir_elf_s390=`echo ${targ_alias} | sed -e 's/s390x/s390/'` ;;
|
||||
s390x-*-tpf*) targ_emul=elf64_s390
|
||||
tdir_elf_s390=`echo ${targ_alias} | sed -e 's/s390x/s390/'` ;;
|
||||
s390-*-linux*) targ_emul=elf_s390
|
||||
s390-*-linux*) targ_emul=elf_s390
|
||||
targ64_extra_emuls=elf64_s390
|
||||
targ64_extra_libpath=elf64_s390
|
||||
tdir_elf64_s390=`echo ${targ_alias} | sed -e 's/s390/s390x/'`
|
||||
;;
|
||||
score-*-elf) targ_emul=score7_elf
|
||||
score-*-elf) targ_emul=score7_elf
|
||||
targ_extra_emuls=score3_elf ;;
|
||||
sh-*-linux*) targ_emul=shlelf_linux
|
||||
targ_extra_emuls="shelf_linux shlelf_fd shelf_fd"
|
||||
@ -776,7 +776,7 @@ sh64-*-elf*) targ_emul=shelf
|
||||
sparc64-*-aout*) targ_emul=sparcaout ;;
|
||||
sparc64-*-elf* | sparc64-*-rtems*)
|
||||
targ_emul=elf64_sparc ;;
|
||||
sparc-sun-sunos4*) targ_emul=sun4 ;;
|
||||
sparc-sun-sunos4*) targ_emul=sun4 ;;
|
||||
sparclite*-*-elf) targ_emul=elf32_sparc ;;
|
||||
sparclite*-*-coff) targ_emul=coff_sparc ;;
|
||||
sparclite*-fujitsu-*) targ_emul=sparcaout ;;
|
||||
@ -829,7 +829,7 @@ sparc*-wrs-vxworks*) targ_emul=sparcaout ;;
|
||||
spu-*-elf*) targ_emul=elf32_spu ;;
|
||||
tic30-*-*aout*) targ_emul=tic30aout ;;
|
||||
tic30-*-*coff*) targ_emul=tic30coff ;;
|
||||
tic4x-*-* | c4x-*-*) targ_emul=tic4xcoff ; targ_extra_emuls="tic3xcoff tic3xcoff_onchip" ;;
|
||||
tic4x-*-* | c4x-*-*) targ_emul=tic4xcoff ; targ_extra_emuls="tic3xcoff tic3xcoff_onchip" ;;
|
||||
tic54x-*-* | c54x*-*-*) targ_emul=tic54xcoff ;;
|
||||
tic6x-*-elf) targ_emul=elf32_tic6x_elf_le
|
||||
targ_extra_emuls="elf32_tic6x_elf_be elf32_tic6x_le elf32_tic6x_be"
|
||||
@ -859,24 +859,24 @@ vax-*-netbsdelf*) targ_emul=elf32vax
|
||||
vax-*-netbsdaout* | vax-*-netbsd*)
|
||||
targ_emul=vaxnbsd
|
||||
targ_extra_emuls=elf32vax ;;
|
||||
vax-*-linux-*) targ_emul=elf32vax
|
||||
vax-*-linux-*) targ_emul=elf32vax
|
||||
;;
|
||||
visium-*-elf) targ_emul=elf32visium
|
||||
;;
|
||||
w65-*-*) targ_emul=w65
|
||||
;;
|
||||
xc16x-*-elf) targ_emul=elf32xc16x
|
||||
targ_extra_emuls="elf32xc16xl elf32xc16xs"
|
||||
;;
|
||||
targ_extra_emuls="elf32xc16xl elf32xc16xs"
|
||||
;;
|
||||
xstormy16-*-*) targ_emul=elf32xstormy16
|
||||
;;
|
||||
xtensa*-*-*) targ_emul=elf32xtensa
|
||||
;;
|
||||
xgate-*-*) targ_emul=xgateelf
|
||||
xgate-*-*) targ_emul=xgateelf
|
||||
;;
|
||||
z80-*-coff) targ_emul=z80
|
||||
;;
|
||||
z8k-*-coff) targ_emul=z8002; targ_extra_emuls=z8001
|
||||
z8k-*-coff) targ_emul=z8002; targ_extra_emuls=z8001
|
||||
;;
|
||||
*-*-ieee*) targ_emul=vanilla
|
||||
;;
|
||||
|
@ -193,18 +193,18 @@ implist:
|
||||
;
|
||||
|
||||
impline:
|
||||
ID '=' ID '.' ID '.' ID opt_equalequal_name
|
||||
{ def_import ($1, $3, $5, $7, -1, $8); }
|
||||
ID '=' ID '.' ID '.' ID opt_equalequal_name
|
||||
{ def_import ($1, $3, $5, $7, -1, $8); }
|
||||
| ID '=' ID '.' ID '.' NUMBER opt_equalequal_name
|
||||
{ def_import ($1, $3, $5, 0, $7, $8); }
|
||||
| ID '=' ID '.' ID opt_equalequal_name
|
||||
{ def_import ($1, $3, 0, $5, -1, $6); }
|
||||
{ def_import ($1, $3, 0, $5, -1, $6); }
|
||||
| ID '=' ID '.' NUMBER opt_equalequal_name
|
||||
{ def_import ($1, $3, 0, 0, $5, $6); }
|
||||
{ def_import ($1, $3, 0, 0, $5, $6); }
|
||||
| ID '.' ID '.' ID opt_equalequal_name
|
||||
{ def_import( 0, $1, $3, $5, -1, $6); }
|
||||
{ def_import( 0, $1, $3, $5, -1, $6); }
|
||||
| ID '.' ID opt_equalequal_name
|
||||
{ def_import ( 0, $1, 0, $3, -1, $4); }
|
||||
{ def_import ( 0, $1, 0, $3, -1, $4); }
|
||||
;
|
||||
|
||||
seclist:
|
||||
@ -309,8 +309,8 @@ opt_ordinal:
|
||||
;
|
||||
|
||||
opt_equal_name:
|
||||
'=' opt_name2 { $$ = $2; }
|
||||
| { $$ = 0; }
|
||||
'=' opt_name2 { $$ = $2; }
|
||||
| { $$ = 0; }
|
||||
;
|
||||
|
||||
opt_base: BASE '=' VMA { $$ = $3;}
|
||||
@ -636,7 +636,7 @@ find_export_in_list (def_file_export *b, int max,
|
||||
if ((e = cmp_export_elem (b, ex_name, in_name, its_name, ord)) <= 0)
|
||||
{
|
||||
if (!e)
|
||||
*is_ident = 1;
|
||||
*is_ident = 1;
|
||||
return 0;
|
||||
}
|
||||
if (max == 1)
|
||||
@ -655,14 +655,14 @@ find_export_in_list (def_file_export *b, int max,
|
||||
p = (l + r) / 2;
|
||||
e = cmp_export_elem (b + p, ex_name, in_name, its_name, ord);
|
||||
if (!e)
|
||||
{
|
||||
*is_ident = 1;
|
||||
return p;
|
||||
}
|
||||
{
|
||||
*is_ident = 1;
|
||||
return p;
|
||||
}
|
||||
else if (e < 0)
|
||||
r = p - 1;
|
||||
r = p - 1;
|
||||
else if (e > 0)
|
||||
l = p + 1;
|
||||
l = p + 1;
|
||||
}
|
||||
if ((e = cmp_export_elem (b + l, ex_name, in_name, its_name, ord)) > 0)
|
||||
++l;
|
||||
@ -781,7 +781,7 @@ find_import_in_list (def_file_import *b, int max,
|
||||
if ((e = cmp_import_elem (b, ex_name, in_name, module, ord)) <= 0)
|
||||
{
|
||||
if (!e)
|
||||
*is_ident = 1;
|
||||
*is_ident = 1;
|
||||
return 0;
|
||||
}
|
||||
if (max == 1)
|
||||
@ -791,7 +791,7 @@ find_import_in_list (def_file_import *b, int max,
|
||||
else if (!e || max == 2)
|
||||
{
|
||||
if (!e)
|
||||
*is_ident = 1;
|
||||
*is_ident = 1;
|
||||
return max - 1;
|
||||
}
|
||||
l = 0; r = max - 1;
|
||||
@ -800,14 +800,14 @@ find_import_in_list (def_file_import *b, int max,
|
||||
p = (l + r) / 2;
|
||||
e = cmp_import_elem (b + p, ex_name, in_name, module, ord);
|
||||
if (!e)
|
||||
{
|
||||
*is_ident = 1;
|
||||
return p;
|
||||
}
|
||||
{
|
||||
*is_ident = 1;
|
||||
return p;
|
||||
}
|
||||
else if (e < 0)
|
||||
r = p - 1;
|
||||
r = p - 1;
|
||||
else if (e > 0)
|
||||
l = p + 1;
|
||||
l = p + 1;
|
||||
}
|
||||
if ((e = cmp_import_elem (b + l, ex_name, in_name, module, ord)) > 0)
|
||||
++l;
|
||||
@ -902,10 +902,10 @@ def_file_add_directive (def_file *my_def, const char *param, int len)
|
||||
break;
|
||||
|
||||
/* Scan forward until we encounter any of:
|
||||
- the end of the buffer
|
||||
- the end of the buffer
|
||||
- the start of a new option
|
||||
- a newline separating options
|
||||
- a NUL separating options. */
|
||||
- a NUL separating options. */
|
||||
for (tend = (char *) (param + 1);
|
||||
(tend < pend
|
||||
&& !(ISSPACE (tend[-1]) && *tend == '-')
|
||||
@ -981,7 +981,7 @@ def_image_name (const char *name, bfd_vma base, int is_dll)
|
||||
|
||||
def->name = xmalloc (strlen (image_name) + strlen (suffix) + 1);
|
||||
sprintf (def->name, "%s%s", image_name, suffix);
|
||||
}
|
||||
}
|
||||
else
|
||||
def->name = xstrdup (image_name);
|
||||
}
|
||||
@ -1176,7 +1176,7 @@ def_aligncomm (char *str, int align)
|
||||
return;
|
||||
}
|
||||
if (e > 0)
|
||||
break;
|
||||
break;
|
||||
c = (p = c)->next;
|
||||
}
|
||||
|
||||
@ -1367,12 +1367,12 @@ def_lex (void)
|
||||
|
||||
if (q == '@')
|
||||
{
|
||||
if (ISBLANK (c) ) /* '@' followed by whitespace. */
|
||||
if (ISBLANK (c) ) /* '@' followed by whitespace. */
|
||||
return (q);
|
||||
else if (ISDIGIT (c)) /* '@' followed by digit. */
|
||||
{
|
||||
else if (ISDIGIT (c)) /* '@' followed by digit. */
|
||||
{
|
||||
def_ungetc (c);
|
||||
return (q);
|
||||
return (q);
|
||||
}
|
||||
#if TRACE
|
||||
printf ("lex: @ returns itself\n");
|
||||
@ -1388,7 +1388,7 @@ def_lex (void)
|
||||
def_ungetc (c);
|
||||
if (ISALPHA (q)) /* Check for tokens. */
|
||||
{
|
||||
for (i = 0; tokens[i].name; i++)
|
||||
for (i = 0; tokens[i].name; i++)
|
||||
if (strcmp (tokens[i].name, buffer) == 0)
|
||||
{
|
||||
#if TRACE
|
||||
@ -1426,12 +1426,12 @@ def_lex (void)
|
||||
{
|
||||
c = def_getc ();
|
||||
if (c == '=')
|
||||
{
|
||||
{
|
||||
#if TRACE
|
||||
printf ("lex: `==' returns EQUAL\n");
|
||||
printf ("lex: `==' returns EQUAL\n");
|
||||
#endif
|
||||
return EQUAL;
|
||||
}
|
||||
return EQUAL;
|
||||
}
|
||||
def_ungetc (c);
|
||||
#if TRACE
|
||||
printf ("lex: `=' returns itself\n");
|
||||
|
@ -3,9 +3,9 @@
|
||||
# '*' pattern is for.
|
||||
case ${target} in
|
||||
arceb-*)
|
||||
ARC_ENDIAN="big"
|
||||
;;
|
||||
ARC_ENDIAN="big"
|
||||
;;
|
||||
arc-* | * )
|
||||
ARC_ENDIAN="little"
|
||||
;;
|
||||
ARC_ENDIAN="little"
|
||||
;;
|
||||
esac
|
||||
|
@ -41,11 +41,11 @@ case "$target" in
|
||||
x86_64*-linux*|i[3-7]86-*-linux-*)
|
||||
case "$EMULATION_NAME" in
|
||||
*32*)
|
||||
LIBPATH_SUFFIX=x32
|
||||
LIBPATH_SUFFIX=x32
|
||||
LIBPATH_SUFFIX_SKIP=64
|
||||
;;
|
||||
*64*)
|
||||
LIBPATH_SUFFIX=64
|
||||
LIBPATH_SUFFIX=64
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
@ -40,7 +40,7 @@ EXTRA_EM_FILE=mmixelf
|
||||
OTHER_TEXT_SECTIONS="
|
||||
${RELOCATING+
|
||||
_start. = (DEFINED (_start) ? _start
|
||||
: (DEFINED (Main) ? Main : (DEFINED (.text) ? .text : 0)));
|
||||
: (DEFINED (Main) ? Main : (DEFINED (.text) ? .text : 0)));
|
||||
PROVIDE (Main = DEFINED (Main) ? Main : (DEFINED (_start) ? _start : _start.));
|
||||
}"
|
||||
|
||||
|
@ -41,7 +41,7 @@ case "$target" in
|
||||
x86_64*-linux*|i[3-7]86-*-linux-*)
|
||||
case "$EMULATION_NAME" in
|
||||
*64*)
|
||||
LIBPATH_SUFFIX=64
|
||||
LIBPATH_SUFFIX=64
|
||||
PARSE_AND_LIST_OPTIONS_BNDPLT='
|
||||
fprintf (file, _("\
|
||||
-z bndplt Always generate BND prefix in PLT entries\n"));
|
||||
@ -52,7 +52,7 @@ case "$target" in
|
||||
'
|
||||
PARSE_AND_LIST_OPTIONS="$PARSE_AND_LIST_OPTIONS $PARSE_AND_LIST_OPTIONS_BNDPLT"
|
||||
PARSE_AND_LIST_ARGS_CASE_Z="$PARSE_AND_LIST_ARGS_CASE_Z $PARSE_AND_LIST_ARGS_CASE_Z_BNDPLT"
|
||||
;;
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*-*-solaris2*)
|
||||
|
@ -18,7 +18,7 @@ TINY_READONLY_SECTION=".tinyrodata :
|
||||
TINY_DATA_SECTION=".tinydata ${RELOCATING+0xff8000} :
|
||||
{
|
||||
*(.tinydata)
|
||||
${RELOCATING+ _tinydata = .; }
|
||||
${RELOCATING+ _tinydata = .; }
|
||||
}"
|
||||
TINY_BSS_SECTION=".tinybss : ${RELOCATING+AT (_tinydata)}
|
||||
{
|
||||
|
@ -18,7 +18,7 @@ TINY_READONLY_SECTION=".tinyrodata :
|
||||
TINY_DATA_SECTION=".tinydata ${RELOCATING+0xff8000} :
|
||||
{
|
||||
*(.tinydata)
|
||||
${RELOCATING+ _tinydata = .; }
|
||||
${RELOCATING+ _tinydata = .; }
|
||||
}"
|
||||
TINY_BSS_SECTION=".tinybss : ${RELOCATING+AT (_tinydata)}
|
||||
{
|
||||
|
@ -9,18 +9,18 @@
|
||||
# be last. The other sections should be sorted, but the current linker script
|
||||
# parse does not seem to allow that with the SORT keyword in this context.
|
||||
INIT_START='_init = .;
|
||||
KEEP (*(.init$00));
|
||||
KEEP (*(.init$0[1-9]));
|
||||
KEEP (*(.init$[1-8][0-9]));
|
||||
KEEP (*(.init$9[0-8]));'
|
||||
KEEP (*(.init$00));
|
||||
KEEP (*(.init$0[1-9]));
|
||||
KEEP (*(.init$[1-8][0-9]));
|
||||
KEEP (*(.init$9[0-8]));'
|
||||
INIT_END='KEEP (*(.init$99));'
|
||||
FINI_START='_fini = .;
|
||||
KEEP (*(.fini$00));
|
||||
KEEP (*(.fini$0[1-9]));
|
||||
KEEP (*(.fini$[1-8][0-9]));
|
||||
KEEP (*(.fini$9[0-8]));'
|
||||
KEEP (*(.fini$00));
|
||||
KEEP (*(.fini$0[1-9]));
|
||||
KEEP (*(.fini$[1-8][0-9]));
|
||||
KEEP (*(.fini$9[0-8]));'
|
||||
FINI_END="KEEP (*(.fini\$99));
|
||||
PROVIDE (${SYMPREFIX}_etext = .);"
|
||||
PROVIDE (${SYMPREFIX}_etext = .);"
|
||||
|
||||
OTHER_READWRITE_SECTIONS=".tls_data ${RELOCATING-0} : {${RELOCATING+
|
||||
__wrs_rtp_tls_data_start = .;
|
||||
|
@ -55,10 +55,10 @@ aarch64_elf_before_allocation (void)
|
||||
{
|
||||
/* Here we rummage through the found bfds to collect information. */
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (is)
|
||||
{
|
||||
/* Initialise mapping tables for code/data. */
|
||||
bfd_elf${ELFSIZE}_aarch64_init_maps (is->the_bfd);
|
||||
}
|
||||
{
|
||||
/* Initialise mapping tables for code/data. */
|
||||
bfd_elf${ELFSIZE}_aarch64_init_maps (is->the_bfd);
|
||||
}
|
||||
}
|
||||
|
||||
/* Call the standard elf routine. */
|
||||
@ -357,7 +357,7 @@ EOF
|
||||
PARSE_AND_LIST_PROLOGUE='
|
||||
#define OPTION_NO_ENUM_SIZE_WARNING 309
|
||||
#define OPTION_PIC_VENEER 310
|
||||
#define OPTION_STUBGROUP_SIZE 311
|
||||
#define OPTION_STUBGROUP_SIZE 311
|
||||
#define OPTION_NO_WCHAR_SIZE_WARNING 312
|
||||
#define OPTION_FIX_ERRATUM_835769 313
|
||||
#define OPTION_FIX_ERRATUM_843419 314
|
||||
@ -430,8 +430,8 @@ PARSE_AND_LIST_ARGS_CASES='
|
||||
{
|
||||
const char *end;
|
||||
|
||||
group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
einfo (_("%P%F: invalid number `%s'\''\n"), optarg);
|
||||
}
|
||||
break;
|
||||
|
@ -345,23 +345,23 @@ read_file_list (const char *filename)
|
||||
{
|
||||
/* Skip empty lines. */
|
||||
while (*b == '\n' || *b == '\r')
|
||||
b++;
|
||||
b++;
|
||||
|
||||
/* Stop if end of buffer. */
|
||||
if (b == buffer + len)
|
||||
break;
|
||||
break;
|
||||
|
||||
/* Eat any byte until end of line. */
|
||||
for (e = b; *e != '\0'; e++)
|
||||
if (*e == '\n' || *e == '\r')
|
||||
break;
|
||||
if (*e == '\n' || *e == '\r')
|
||||
break;
|
||||
|
||||
/* Replace end of line by nul. */
|
||||
if (*e != '\0')
|
||||
*e++ = '\0';
|
||||
*e++ = '\0';
|
||||
|
||||
if (b != e)
|
||||
lang_add_input_file (b, lang_input_file_is_search_file_enum, NULL);
|
||||
lang_add_input_file (b, lang_input_file_is_search_file_enum, NULL);
|
||||
b = e;
|
||||
}
|
||||
return;
|
||||
@ -388,7 +388,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
|
||||
|
||||
case 'f':
|
||||
/* This overrides --auxiliary. This option specifies a file containing
|
||||
a list of input files. */
|
||||
a list of input files. */
|
||||
read_file_list (optarg);
|
||||
break;
|
||||
|
||||
|
@ -101,8 +101,8 @@ arm_elf_before_allocation (void)
|
||||
/* Here we rummage through the found bfds to collect glue information. */
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (is)
|
||||
{
|
||||
/* Initialise mapping tables for code/data. */
|
||||
bfd_elf32_arm_init_maps (is->the_bfd);
|
||||
/* Initialise mapping tables for code/data. */
|
||||
bfd_elf32_arm_init_maps (is->the_bfd);
|
||||
|
||||
if (!bfd_elf32_arm_process_before_allocation (is->the_bfd,
|
||||
&link_info)
|
||||
@ -422,9 +422,9 @@ gld${EMULATION_NAME}_finish (void)
|
||||
{
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (is)
|
||||
{
|
||||
/* Figure out where VFP11 erratum veneers (and the labels returning
|
||||
from same) have been placed. */
|
||||
bfd_elf32_arm_vfp11_fix_veneer_locations (is->the_bfd, &link_info);
|
||||
/* Figure out where VFP11 erratum veneers (and the labels returning
|
||||
from same) have been placed. */
|
||||
bfd_elf32_arm_vfp11_fix_veneer_locations (is->the_bfd, &link_info);
|
||||
|
||||
/* Figure out where STM32L4XX erratum veneers (and the labels returning
|
||||
from them) have been placed. */
|
||||
@ -531,13 +531,13 @@ arm_elf_create_output_section_statements (void)
|
||||
bfd_elf32_arm_set_target_params (link_info.output_bfd, &link_info, ¶ms);
|
||||
|
||||
stub_file = lang_add_input_file ("linker stubs",
|
||||
lang_input_file_is_fake_enum,
|
||||
NULL);
|
||||
lang_input_file_is_fake_enum,
|
||||
NULL);
|
||||
stub_file->the_bfd = bfd_create ("linker stubs", link_info.output_bfd);
|
||||
if (stub_file->the_bfd == NULL
|
||||
|| ! bfd_set_arch_mach (stub_file->the_bfd,
|
||||
bfd_get_arch (link_info.output_bfd),
|
||||
bfd_get_mach (link_info.output_bfd)))
|
||||
bfd_get_arch (link_info.output_bfd),
|
||||
bfd_get_mach (link_info.output_bfd)))
|
||||
{
|
||||
einfo (_("%X%P: can not create BFD %E\n"));
|
||||
return;
|
||||
@ -704,26 +704,26 @@ PARSE_AND_LIST_ARGS_CASES='
|
||||
|
||||
case OPTION_VFP11_DENORM_FIX:
|
||||
if (strcmp (optarg, "none") == 0)
|
||||
params.vfp11_denorm_fix = BFD_ARM_VFP11_FIX_NONE;
|
||||
params.vfp11_denorm_fix = BFD_ARM_VFP11_FIX_NONE;
|
||||
else if (strcmp (optarg, "scalar") == 0)
|
||||
params.vfp11_denorm_fix = BFD_ARM_VFP11_FIX_SCALAR;
|
||||
params.vfp11_denorm_fix = BFD_ARM_VFP11_FIX_SCALAR;
|
||||
else if (strcmp (optarg, "vector") == 0)
|
||||
params.vfp11_denorm_fix = BFD_ARM_VFP11_FIX_VECTOR;
|
||||
params.vfp11_denorm_fix = BFD_ARM_VFP11_FIX_VECTOR;
|
||||
else
|
||||
einfo (_("Unrecognized VFP11 fix type '\''%s'\''.\n"), optarg);
|
||||
einfo (_("Unrecognized VFP11 fix type '\''%s'\''.\n"), optarg);
|
||||
break;
|
||||
|
||||
case OPTION_STM32L4XX_FIX:
|
||||
if (!optarg)
|
||||
params.stm32l4xx_fix = BFD_ARM_STM32L4XX_FIX_DEFAULT;
|
||||
params.stm32l4xx_fix = BFD_ARM_STM32L4XX_FIX_DEFAULT;
|
||||
else if (strcmp (optarg, "none") == 0)
|
||||
params.stm32l4xx_fix = BFD_ARM_STM32L4XX_FIX_NONE;
|
||||
params.stm32l4xx_fix = BFD_ARM_STM32L4XX_FIX_NONE;
|
||||
else if (strcmp (optarg, "default") == 0)
|
||||
params.stm32l4xx_fix = BFD_ARM_STM32L4XX_FIX_DEFAULT;
|
||||
params.stm32l4xx_fix = BFD_ARM_STM32L4XX_FIX_DEFAULT;
|
||||
else if (strcmp (optarg, "all") == 0)
|
||||
params.stm32l4xx_fix = BFD_ARM_STM32L4XX_FIX_ALL;
|
||||
params.stm32l4xx_fix = BFD_ARM_STM32L4XX_FIX_ALL;
|
||||
else
|
||||
einfo (_("Unrecognized STM32L4XX fix type '\''%s'\''.\n"), optarg);
|
||||
einfo (_("Unrecognized STM32L4XX fix type '\''%s'\''.\n"), optarg);
|
||||
break;
|
||||
|
||||
case OPTION_NO_ENUM_SIZE_WARNING:
|
||||
@ -742,8 +742,8 @@ PARSE_AND_LIST_ARGS_CASES='
|
||||
{
|
||||
const char *end;
|
||||
|
||||
group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
einfo (_("%P%F: invalid number `%s'\''\n"), optarg);
|
||||
}
|
||||
break;
|
||||
|
@ -51,13 +51,13 @@ static void
|
||||
avr_elf_set_global_bfd_parameters (void)
|
||||
{
|
||||
elf32_avr_setup_params (& link_info,
|
||||
stub_file->the_bfd,
|
||||
avr_stub_section,
|
||||
avr_no_stubs,
|
||||
avr_debug_stubs,
|
||||
avr_debug_relax,
|
||||
avr_pc_wrap_around,
|
||||
avr_replace_call_ret_sequences);
|
||||
stub_file->the_bfd,
|
||||
avr_stub_section,
|
||||
avr_no_stubs,
|
||||
avr_debug_stubs,
|
||||
avr_debug_relax,
|
||||
avr_pc_wrap_around,
|
||||
avr_replace_call_ret_sequences);
|
||||
}
|
||||
|
||||
|
||||
@ -122,14 +122,14 @@ avr_elf_create_output_section_statements (void)
|
||||
}
|
||||
|
||||
stub_file = lang_add_input_file ("linker stubs",
|
||||
lang_input_file_is_fake_enum,
|
||||
NULL);
|
||||
lang_input_file_is_fake_enum,
|
||||
NULL);
|
||||
|
||||
stub_file->the_bfd = bfd_create ("linker stubs", link_info.output_bfd);
|
||||
if (stub_file->the_bfd == NULL
|
||||
|| !bfd_set_arch_mach (stub_file->the_bfd,
|
||||
bfd_get_arch (link_info.output_bfd),
|
||||
bfd_get_mach (link_info.output_bfd)))
|
||||
bfd_get_arch (link_info.output_bfd),
|
||||
bfd_get_mach (link_info.output_bfd)))
|
||||
{
|
||||
einfo (_("%X%P: can not create stub BFD %E\n"));
|
||||
return;
|
||||
@ -138,7 +138,7 @@ avr_elf_create_output_section_statements (void)
|
||||
/* Now we add the stub section. */
|
||||
|
||||
flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE
|
||||
| SEC_HAS_CONTENTS | SEC_RELOC | SEC_IN_MEMORY | SEC_KEEP);
|
||||
| SEC_HAS_CONTENTS | SEC_RELOC | SEC_IN_MEMORY | SEC_KEEP);
|
||||
avr_stub_section = bfd_make_section_anyway_with_flags (stub_file->the_bfd,
|
||||
".trampolines",
|
||||
flags);
|
||||
@ -151,9 +151,9 @@ avr_elf_create_output_section_statements (void)
|
||||
|
||||
return;
|
||||
|
||||
err_ret:
|
||||
einfo (_("%X%P: can not make stub section: %E\n"));
|
||||
return;
|
||||
err_ret:
|
||||
einfo (_("%X%P: can not make stub section: %E\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
/* Re-calculates the size of the stubs so that we won't waste space. */
|
||||
@ -199,17 +199,17 @@ avr_finish (void)
|
||||
{
|
||||
avr_link_relax = TRUE;
|
||||
for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link.next)
|
||||
{
|
||||
/* Don't let the linker stubs prevent the final object being
|
||||
marked as link-relax ready. */
|
||||
if ((elf_elfheader (abfd)->e_flags
|
||||
& EF_AVR_LINKRELAX_PREPARED) == 0
|
||||
&& abfd != stub_file->the_bfd)
|
||||
{
|
||||
avr_link_relax = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
{
|
||||
/* Don't let the linker stubs prevent the final object being
|
||||
marked as link-relax ready. */
|
||||
if ((elf_elfheader (abfd)->e_flags
|
||||
& EF_AVR_LINKRELAX_PREPARED) == 0
|
||||
&& abfd != stub_file->the_bfd)
|
||||
{
|
||||
avr_link_relax = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -234,15 +234,15 @@ EOF
|
||||
PARSE_AND_LIST_PROLOGUE='
|
||||
|
||||
#define OPTION_NO_CALL_RET_REPLACEMENT 301
|
||||
#define OPTION_PMEM_WRAP_AROUND 302
|
||||
#define OPTION_NO_STUBS 303
|
||||
#define OPTION_DEBUG_STUBS 304
|
||||
#define OPTION_DEBUG_RELAX 305
|
||||
#define OPTION_PMEM_WRAP_AROUND 302
|
||||
#define OPTION_NO_STUBS 303
|
||||
#define OPTION_DEBUG_STUBS 304
|
||||
#define OPTION_DEBUG_RELAX 305
|
||||
'
|
||||
|
||||
PARSE_AND_LIST_LONGOPTS='
|
||||
{ "no-call-ret-replacement", no_argument,
|
||||
NULL, OPTION_NO_CALL_RET_REPLACEMENT},
|
||||
NULL, OPTION_NO_CALL_RET_REPLACEMENT},
|
||||
{ "pmem-wrap-around", required_argument,
|
||||
NULL, OPTION_PMEM_WRAP_AROUND},
|
||||
{ "no-stubs", no_argument,
|
||||
@ -286,17 +286,17 @@ PARSE_AND_LIST_ARGS_CASES='
|
||||
|
||||
case OPTION_PMEM_WRAP_AROUND:
|
||||
{
|
||||
/* This variable is defined in the bfd library. */
|
||||
if ((!strcmp (optarg,"32k")) || (!strcmp (optarg,"32K")))
|
||||
avr_pc_wrap_around = 32768;
|
||||
else if ((!strcmp (optarg,"8k")) || (!strcmp (optarg,"8K")))
|
||||
avr_pc_wrap_around = 8192;
|
||||
else if ((!strcmp (optarg,"16k")) || (!strcmp (optarg,"16K")))
|
||||
avr_pc_wrap_around = 16384;
|
||||
else if ((!strcmp (optarg,"64k")) || (!strcmp (optarg,"64K")))
|
||||
avr_pc_wrap_around = 0x10000;
|
||||
else
|
||||
return FALSE;
|
||||
/* This variable is defined in the bfd library. */
|
||||
if ((!strcmp (optarg,"32k")) || (!strcmp (optarg,"32K")))
|
||||
avr_pc_wrap_around = 32768;
|
||||
else if ((!strcmp (optarg,"8k")) || (!strcmp (optarg,"8K")))
|
||||
avr_pc_wrap_around = 8192;
|
||||
else if ((!strcmp (optarg,"16k")) || (!strcmp (optarg,"16K")))
|
||||
avr_pc_wrap_around = 16384;
|
||||
else if ((!strcmp (optarg,"64k")) || (!strcmp (optarg,"64K")))
|
||||
avr_pc_wrap_around = 0x10000;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -314,8 +314,8 @@ PARSE_AND_LIST_ARGS_CASES='
|
||||
|
||||
case OPTION_NO_CALL_RET_REPLACEMENT:
|
||||
{
|
||||
/* This variable is defined in the bfd library. */
|
||||
avr_replace_call_ret_sequences = FALSE;
|
||||
/* This variable is defined in the bfd library. */
|
||||
avr_replace_call_ret_sequences = FALSE;
|
||||
}
|
||||
break;
|
||||
'
|
||||
|
@ -81,8 +81,8 @@ gld_${EMULATION_NAME}_before_parse (void)
|
||||
#define OPTION_MINOR_OS_VERSION (OPTION_MINOR_IMAGE_VERSION + 1)
|
||||
#define OPTION_MINOR_SUBSYSTEM_VERSION (OPTION_MINOR_OS_VERSION + 1)
|
||||
#define OPTION_SECTION_ALIGNMENT (OPTION_MINOR_SUBSYSTEM_VERSION + 1)
|
||||
#define OPTION_STACK (OPTION_SECTION_ALIGNMENT + 1)
|
||||
#define OPTION_SUBSYSTEM (OPTION_STACK + 1)
|
||||
#define OPTION_STACK (OPTION_SECTION_ALIGNMENT + 1)
|
||||
#define OPTION_SUBSYSTEM (OPTION_STACK + 1)
|
||||
#define OPTION_HEAP (OPTION_SUBSYSTEM + 1)
|
||||
|
||||
static void
|
||||
|
@ -55,7 +55,7 @@ hppaelf_after_parse (void)
|
||||
|
||||
/* Enable this once we split millicode stuff from libgcc:
|
||||
lang_add_input_file ("milli",
|
||||
lang_input_file_is_l_enum,
|
||||
lang_input_file_is_l_enum,
|
||||
NULL);
|
||||
*/
|
||||
|
||||
@ -370,8 +370,8 @@ PARSE_AND_LIST_ARGS_CASES='
|
||||
case OPTION_STUBGROUP_SIZE:
|
||||
{
|
||||
const char *end;
|
||||
group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
einfo (_("%P%F: invalid number `%s'\''\n"), optarg);
|
||||
}
|
||||
break;
|
||||
|
@ -72,7 +72,7 @@ gld${EMULATION_NAME}_after_open (void)
|
||||
asection *datasec;
|
||||
|
||||
/* As first-order business, make sure that each input BFD is COFF. It
|
||||
better be, as we are directly calling a COFF backend function. */
|
||||
better be, as we are directly calling a COFF backend function. */
|
||||
if (bfd_get_flavour (abfd) != bfd_target_coff_flavour)
|
||||
einfo (_("%F%B: all input objects must be COFF "
|
||||
"for --embedded-relocs\n"));
|
||||
@ -80,12 +80,12 @@ gld${EMULATION_NAME}_after_open (void)
|
||||
datasec = bfd_get_section_by_name (abfd, ".data");
|
||||
|
||||
/* Note that we assume that the reloc_count field has already
|
||||
been set up. We could call bfd_get_reloc_upper_bound, but
|
||||
that returns the size of a memory buffer rather than a reloc
|
||||
count. We do not want to call bfd_canonicalize_reloc,
|
||||
because although it would always work it would force us to
|
||||
read in the relocs into BFD canonical form, which would waste
|
||||
a significant amount of time and memory. */
|
||||
been set up. We could call bfd_get_reloc_upper_bound, but
|
||||
that returns the size of a memory buffer rather than a reloc
|
||||
count. We do not want to call bfd_canonicalize_reloc,
|
||||
because although it would always work it would force us to
|
||||
read in the relocs into BFD canonical form, which would waste
|
||||
a significant amount of time and memory. */
|
||||
if (datasec != NULL && datasec->reloc_count > 0)
|
||||
{
|
||||
asection *relsec;
|
||||
@ -103,7 +103,7 @@ gld${EMULATION_NAME}_after_open (void)
|
||||
}
|
||||
|
||||
/* Double check that all other data sections are empty, as is
|
||||
required for embedded PIC code. */
|
||||
required for embedded PIC code. */
|
||||
bfd_map_over_sections (abfd, check_sections, datasec);
|
||||
}
|
||||
}
|
||||
|
@ -235,15 +235,15 @@ PARSE_AND_LIST_OPTIONS='
|
||||
PARSE_AND_LIST_ARGS_CASES='
|
||||
case OPTION_GOT:
|
||||
if (strcmp (optarg, "target") == 0)
|
||||
got_handling = GOT_HANDLING_TARGET_DEFAULT;
|
||||
got_handling = GOT_HANDLING_TARGET_DEFAULT;
|
||||
else if (strcmp (optarg, "single") == 0)
|
||||
got_handling = 0;
|
||||
got_handling = 0;
|
||||
else if (strcmp (optarg, "negative") == 0)
|
||||
got_handling = 1;
|
||||
got_handling = 1;
|
||||
else if (strcmp (optarg, "multigot") == 0)
|
||||
got_handling = 2;
|
||||
got_handling = 2;
|
||||
else
|
||||
einfo (_("Unrecognized --got argument '\''%s'\''.\n"), optarg);
|
||||
einfo (_("Unrecognized --got argument '\''%s'\''.\n"), optarg);
|
||||
break;
|
||||
'
|
||||
|
||||
|
@ -328,8 +328,8 @@ PARSE_AND_LIST_ARGS_CASES='
|
||||
case OPTION_STUBGROUP_SIZE:
|
||||
{
|
||||
const char *end;
|
||||
group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
einfo (_("%P%F: invalid number `%s'\''\n"), optarg);
|
||||
}
|
||||
break;
|
||||
|
@ -7,7 +7,7 @@ fragment <<EOF
|
||||
Copyright (C) 2014-2017 Free Software Foundation, Inc.
|
||||
Written by Steve Chamberlain steve@cygnus.com
|
||||
Extended for the MSP430 by Nick Clifton nickc@redhat.com
|
||||
|
||||
|
||||
This file is part of the GNU Binutils.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@ -197,7 +197,7 @@ scan_children (lang_statement_union_type * l)
|
||||
break;
|
||||
|
||||
case lang_wild_statement_enum:
|
||||
amount += scan_children (l->wild_statement.children.head);
|
||||
amount += scan_children (l->wild_statement.children.head);
|
||||
break;
|
||||
|
||||
case lang_data_statement_enum:
|
||||
@ -214,7 +214,7 @@ scan_children (lang_statement_union_type * l)
|
||||
|
||||
return amount;
|
||||
}
|
||||
|
||||
|
||||
/* Place an orphan section. We use this to put .either sections
|
||||
into either their lower or their upper equivalents. */
|
||||
|
||||
@ -258,7 +258,7 @@ gld${EMULATION_NAME}_place_orphan (asection * s,
|
||||
}
|
||||
else
|
||||
name = (char *) secname;
|
||||
|
||||
|
||||
lower_name = concat (".lower", name, NULL);
|
||||
upper_name = concat (".upper", name, NULL);
|
||||
|
||||
|
@ -195,7 +195,7 @@ nds32_elf_after_allocation (void)
|
||||
{
|
||||
/* Initialize ex9 hash table. */
|
||||
if (!nds32_elf_ex9_init ())
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Call default after allocation callback.
|
||||
|
@ -242,9 +242,9 @@ fragment <<EOF
|
||||
(OPTION_EXCLUDE_LIBS + 1)
|
||||
#define OPTION_DLL_DISABLE_RUNTIME_PSEUDO_RELOC \
|
||||
(OPTION_DLL_ENABLE_RUNTIME_PSEUDO_RELOC + 1)
|
||||
#define OPTION_LARGE_ADDRESS_AWARE (OPTION_DLL_DISABLE_RUNTIME_PSEUDO_RELOC + 1)
|
||||
#define OPTION_LARGE_ADDRESS_AWARE (OPTION_DLL_DISABLE_RUNTIME_PSEUDO_RELOC + 1)
|
||||
#define OPTION_DISABLE_LARGE_ADDRESS_AWARE \
|
||||
(OPTION_LARGE_ADDRESS_AWARE + 1)
|
||||
(OPTION_LARGE_ADDRESS_AWARE + 1)
|
||||
#define OPTION_DLL_ENABLE_RUNTIME_PSEUDO_RELOC_V1 \
|
||||
(OPTION_DISABLE_LARGE_ADDRESS_AWARE + 1)
|
||||
#define OPTION_DLL_ENABLE_RUNTIME_PSEUDO_RELOC_V2 \
|
||||
@ -253,8 +253,8 @@ fragment <<EOF
|
||||
(OPTION_DLL_ENABLE_RUNTIME_PSEUDO_RELOC_V2 + 1)
|
||||
#define OPTION_USE_NUL_PREFIXED_IMPORT_TABLES \
|
||||
(OPTION_EXCLUDE_MODULES_FOR_IMPLIB + 1)
|
||||
#define OPTION_NO_LEADING_UNDERSCORE (OPTION_USE_NUL_PREFIXED_IMPORT_TABLES + 1)
|
||||
#define OPTION_LEADING_UNDERSCORE (OPTION_NO_LEADING_UNDERSCORE + 1)
|
||||
#define OPTION_NO_LEADING_UNDERSCORE (OPTION_USE_NUL_PREFIXED_IMPORT_TABLES + 1)
|
||||
#define OPTION_LEADING_UNDERSCORE (OPTION_NO_LEADING_UNDERSCORE + 1)
|
||||
#define OPTION_ENABLE_LONG_SECTION_NAMES \
|
||||
(OPTION_LEADING_UNDERSCORE + 1)
|
||||
#define OPTION_DISABLE_LONG_SECTION_NAMES \
|
||||
@ -531,10 +531,10 @@ set_entry_point (void)
|
||||
int i;
|
||||
|
||||
static const struct
|
||||
{
|
||||
const int value;
|
||||
const char *entry;
|
||||
}
|
||||
{
|
||||
const int value;
|
||||
const char *entry;
|
||||
}
|
||||
v[] =
|
||||
{
|
||||
{ 1, "NtProcessStartup" },
|
||||
@ -560,14 +560,14 @@ set_entry_point (void)
|
||||
else
|
||||
{
|
||||
for (i = 0; v[i].entry; i++)
|
||||
if (v[i].value == pe_subsystem)
|
||||
break;
|
||||
if (v[i].value == pe_subsystem)
|
||||
break;
|
||||
|
||||
/* If no match, use the default. */
|
||||
if (v[i].entry != NULL)
|
||||
entry = v[i].entry;
|
||||
entry = v[i].entry;
|
||||
else
|
||||
entry = default_entry;
|
||||
entry = default_entry;
|
||||
}
|
||||
|
||||
initial_symbol_char = (is_underscoring () != 0 ? "_" : "");
|
||||
@ -1109,7 +1109,7 @@ pe_fixup_stdcalls (void)
|
||||
|
||||
if (lead_at)
|
||||
*cname = '_';
|
||||
if (at)
|
||||
if (at)
|
||||
* strchr (cname, '@') = 0;
|
||||
sym = bfd_link_hash_lookup (link_info.hash, cname, FALSE, FALSE, TRUE);
|
||||
|
||||
@ -1290,9 +1290,9 @@ pecoff_checksum_contents (bfd *abfd,
|
||||
|
||||
status = bfd_bread (&b, (bfd_size_type) 1, abfd);
|
||||
if (status < 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
(*process) (&b, 1, arg);
|
||||
filepos += 1;
|
||||
@ -1317,25 +1317,25 @@ write_build_id (bfd *abfd)
|
||||
{
|
||||
struct bfd_link_order *l = NULL;
|
||||
for (l = asec->map_head.link_order; l != NULL; l = l->next)
|
||||
{
|
||||
if (l->type == bfd_indirect_link_order)
|
||||
{
|
||||
if (l->u.indirect.section == t->build_id.sec)
|
||||
{
|
||||
link_order = l;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
if (l->type == bfd_indirect_link_order)
|
||||
{
|
||||
if (l->u.indirect.section == t->build_id.sec)
|
||||
{
|
||||
link_order = l;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (link_order)
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!link_order)
|
||||
{
|
||||
einfo (_("%P: warning: .buildid section discarded,"
|
||||
" --build-id ignored.\n"));
|
||||
" --build-id ignored.\n"));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1947,7 +1947,7 @@ gld_${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIB
|
||||
struct bfd_link_hash_entry *h;
|
||||
|
||||
sprintf (buf, "%s%s", U (""),
|
||||
pe_def_file->exports[i].internal_name);
|
||||
pe_def_file->exports[i].internal_name);
|
||||
|
||||
h = bfd_link_hash_lookup (link_info.hash, buf, TRUE, TRUE, TRUE);
|
||||
if (h == (struct bfd_link_hash_entry *) NULL)
|
||||
@ -2342,8 +2342,8 @@ gld_${EMULATION_NAME}_open_dynamic_archive
|
||||
/* Alternate explicit import library for dll's. */
|
||||
{ "%s.dll.a", FALSE },
|
||||
/* "libfoo.a" could be either an import lib or a static lib.
|
||||
For backwards compatibility, libfoo.a needs to precede
|
||||
libfoo.dll and foo.dll in the search. */
|
||||
For backwards compatibility, libfoo.a needs to precede
|
||||
libfoo.dll and foo.dll in the search. */
|
||||
{ "lib%s.a", FALSE },
|
||||
/* The 'native' spelling of an import lib name is "foo.lib". */
|
||||
{ "%s.lib", FALSE },
|
||||
|
@ -493,10 +493,10 @@ set_entry_point (void)
|
||||
int i;
|
||||
|
||||
static const struct
|
||||
{
|
||||
const int value;
|
||||
const char *entry;
|
||||
}
|
||||
{
|
||||
const int value;
|
||||
const char *entry;
|
||||
}
|
||||
v[] =
|
||||
{
|
||||
{ 1, "NtProcessStartup" },
|
||||
@ -518,14 +518,14 @@ set_entry_point (void)
|
||||
else
|
||||
{
|
||||
for (i = 0; v[i].entry; i++)
|
||||
if (v[i].value == pep_subsystem)
|
||||
break;
|
||||
if (v[i].value == pep_subsystem)
|
||||
break;
|
||||
|
||||
/* If no match, use the default. */
|
||||
if (v[i].entry != NULL)
|
||||
entry = v[i].entry;
|
||||
entry = v[i].entry;
|
||||
else
|
||||
entry = default_entry;
|
||||
entry = default_entry;
|
||||
}
|
||||
|
||||
/* Now we check target's default for getting proper symbol_char. */
|
||||
@ -1257,9 +1257,9 @@ pecoff_checksum_contents (bfd *abfd,
|
||||
|
||||
status = bfd_bread (&b, (bfd_size_type) 1, abfd);
|
||||
if (status < 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
(*process) (&b, 1, arg);
|
||||
filepos += 1;
|
||||
@ -1284,25 +1284,25 @@ write_build_id (bfd *abfd)
|
||||
{
|
||||
struct bfd_link_order *l = NULL;
|
||||
for (l = asec->map_head.link_order; l != NULL; l = l->next)
|
||||
{
|
||||
if (l->type == bfd_indirect_link_order)
|
||||
{
|
||||
if (l->u.indirect.section == t->build_id.sec)
|
||||
{
|
||||
link_order = l;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
if (l->type == bfd_indirect_link_order)
|
||||
{
|
||||
if (l->u.indirect.section == t->build_id.sec)
|
||||
{
|
||||
link_order = l;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (link_order)
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!link_order)
|
||||
{
|
||||
einfo (_("%P: warning: .buildid section discarded,"
|
||||
" --build-id ignored.\n"));
|
||||
" --build-id ignored.\n"));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -2115,8 +2115,8 @@ gld_${EMULATION_NAME}_open_dynamic_archive
|
||||
/* Alternate explicit import library for dll's. */
|
||||
{ "%s.dll.a", FALSE },
|
||||
/* "libfoo.a" could be either an import lib or a static lib.
|
||||
For backwards compatibility, libfoo.a needs to precede
|
||||
libfoo.dll and foo.dll in the search. */
|
||||
For backwards compatibility, libfoo.a needs to precede
|
||||
libfoo.dll and foo.dll in the search. */
|
||||
{ "lib%s.a", FALSE },
|
||||
/* The 'native' spelling of an import lib name is "foo.lib". */
|
||||
{ "%s.lib", FALSE },
|
||||
|
@ -826,8 +826,8 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
|
||||
case OPTION_STUBGROUP_SIZE:
|
||||
{
|
||||
const char *end;
|
||||
params.group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
params.group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
einfo (_("%P%F: invalid number `%s'\''\n"), optarg);
|
||||
}
|
||||
break;
|
||||
|
@ -170,7 +170,7 @@ sh64_elf_${EMULATION_NAME}_before_allocation (void)
|
||||
break_1:
|
||||
|
||||
/* Check that all input sections have the same contents-type flags
|
||||
as the first input section. */
|
||||
as the first input section. */
|
||||
{
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (f)
|
||||
{
|
||||
@ -302,7 +302,7 @@ sh64_elf_${EMULATION_NAME}_after_allocation (void)
|
||||
break_1:
|
||||
|
||||
/* Check that all input sections have the same contents-type flags
|
||||
as the first input section. */
|
||||
as the first input section. */
|
||||
{
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (f)
|
||||
{
|
||||
|
@ -101,7 +101,7 @@
|
||||
#define irq_stat save4
|
||||
|
||||
.text
|
||||
.align 4
|
||||
.align 4
|
||||
.type __rv_pattern, @object
|
||||
.size __rv_pattern, 16
|
||||
__rv_pattern:
|
||||
@ -126,7 +126,7 @@ __ovly_current:
|
||||
* Load the previous overlay and jump to the caller return address.
|
||||
* Updates __ovly_current.
|
||||
*/
|
||||
.align 4
|
||||
.align 4
|
||||
.global __ovly_return
|
||||
.type __ovly_return, @function
|
||||
__ovly_return:
|
||||
@ -446,7 +446,7 @@ __ovly_xfer_loop:
|
||||
#endif
|
||||
andc oldvma, oldvma, pbit # 0,2 77
|
||||
lqd save1, -16($sp) # 1,6 77
|
||||
nop # 0,0 78
|
||||
nop # 0,0 78
|
||||
#lnop
|
||||
#nop
|
||||
stqx oldvma, tab5, off5 # 1,6 79
|
||||
|
@ -421,7 +421,7 @@ gld${EMULATION_NAME}_finish (void)
|
||||
if (is_spu_target ())
|
||||
{
|
||||
if (params.local_store_lo < params.local_store_hi)
|
||||
{
|
||||
{
|
||||
asection *s;
|
||||
|
||||
s = spu_elf_check_vma (&link_info);
|
||||
|
@ -103,7 +103,7 @@ gld${EMULATION_NAME}_after_allocation (void)
|
||||
the unwind table index. */
|
||||
unsigned int list_size = 10;
|
||||
asection **sec_list = (asection **)
|
||||
xmalloc (list_size * sizeof (asection *));
|
||||
xmalloc (list_size * sizeof (asection *));
|
||||
unsigned int sec_count = 0;
|
||||
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (is)
|
||||
@ -130,7 +130,7 @@ gld${EMULATION_NAME}_after_allocation (void)
|
||||
{
|
||||
list_size *= 2;
|
||||
sec_list = (asection **)
|
||||
xrealloc (sec_list, list_size * sizeof (asection *));
|
||||
xrealloc (sec_list, list_size * sizeof (asection *));
|
||||
}
|
||||
|
||||
sec_list[sec_count++] = sec;
|
||||
|
@ -78,17 +78,17 @@ gld${EMULATION_NAME}_handle_option (int optc)
|
||||
|
||||
case OPTION_COFF_FORMAT:
|
||||
if ((*optarg == '0' || *optarg == '1' || *optarg == '2')
|
||||
&& optarg[1] == '\0')
|
||||
{
|
||||
static char buf[] = "coffX-${OUTPUT_FORMAT_TEMPLATE}";
|
||||
coff_version = *optarg - '0';
|
||||
buf[4] = *optarg;
|
||||
lang_add_output_format (buf, NULL, NULL, 0);
|
||||
}
|
||||
&& optarg[1] == '\0')
|
||||
{
|
||||
static char buf[] = "coffX-${OUTPUT_FORMAT_TEMPLATE}";
|
||||
coff_version = *optarg - '0';
|
||||
buf[4] = *optarg;
|
||||
lang_add_output_format (buf, NULL, NULL, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
einfo (_("%P%F: invalid COFF format version %s\n"), optarg);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
|
@ -52,8 +52,8 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
|
||||
|
||||
static bfd_boolean
|
||||
gld${EMULATION_NAME}_open_dynamic_archive (const char *arch ATTRIBUTE_UNUSED,
|
||||
search_dirs_type *search,
|
||||
lang_input_statement_type *entry)
|
||||
search_dirs_type *search,
|
||||
lang_input_statement_type *entry)
|
||||
{
|
||||
char *string;
|
||||
|
||||
@ -198,7 +198,7 @@ gld${EMULATION_NAME}_before_allocation (void)
|
||||
if (elf_hash_table (&link_info)->dynamic_sections_created
|
||||
&& bed->elf_backend_size_dynamic_sections
|
||||
&& ! (*bed->elf_backend_size_dynamic_sections) (link_info.output_bfd,
|
||||
&link_info))
|
||||
&link_info))
|
||||
einfo (_("%P%F: failed to set dynamic section sizes: %E\n"));
|
||||
|
||||
before_allocation_default ();
|
||||
|
@ -280,7 +280,7 @@ DEFAULT_DATA_ALIGNMENT="ALIGN(${SEGMENT_SIZE})"
|
||||
( echo "/* Script for ld -r: link without relocation */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xr
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xr
|
||||
|
||||
LD_FLAG=u
|
||||
DATA_ALIGNMENT=${DATA_ALIGNMENT_u}
|
||||
@ -288,7 +288,7 @@ CONSTRUCTING=" "
|
||||
( echo "/* Script for ld -Ur: link w/out relocation, do create constructors */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xu
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xu
|
||||
|
||||
LD_FLAG=
|
||||
DATA_ALIGNMENT=${DATA_ALIGNMENT_}
|
||||
@ -296,21 +296,21 @@ RELOCATING=" "
|
||||
( echo "/* Default linker script, for normal executables */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.x
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.x
|
||||
|
||||
LD_FLAG=n
|
||||
DATA_ALIGNMENT=${DATA_ALIGNMENT_n}
|
||||
( echo "/* Script for -n: mix text and data on same page */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xn
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xn
|
||||
|
||||
LD_FLAG=N
|
||||
DATA_ALIGNMENT=${DATA_ALIGNMENT_N}
|
||||
( echo "/* Script for -N: mix text and data on same page; don't align data */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xbn
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xbn
|
||||
|
||||
if test -n "$GENERATE_COMBRELOC_SCRIPT"; then
|
||||
DATA_ALIGNMENT=${DATA_ALIGNMENT_c-${DATA_ALIGNMENT_}}
|
||||
@ -319,7 +319,7 @@ if test -n "$GENERATE_COMBRELOC_SCRIPT"; then
|
||||
( echo "/* Script for -z combreloc: combine and sort reloc sections */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xc
|
||||
rm -f ${COMBRELOC}
|
||||
LD_FLAG=w
|
||||
RELRO_NOW=" "
|
||||
@ -327,7 +327,7 @@ if test -n "$GENERATE_COMBRELOC_SCRIPT"; then
|
||||
( echo "/* Script for -z combreloc -z now -z relro: combine and sort reloc sections */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xw
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xw
|
||||
rm -f ${COMBRELOC}
|
||||
COMBRELOC=
|
||||
unset RELRO_NOW
|
||||
@ -341,7 +341,7 @@ if test -n "$GENERATE_SHLIB_SCRIPT"; then
|
||||
echo "/* Script for ld --shared: link shared library */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xs
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xs
|
||||
if test -n "$GENERATE_COMBRELOC_SCRIPT"; then
|
||||
LD_FLAG=cshared
|
||||
DATA_ALIGNMENT=${DATA_ALIGNMENT_sc-${DATA_ALIGNMENT}}
|
||||
@ -349,7 +349,7 @@ if test -n "$GENERATE_SHLIB_SCRIPT"; then
|
||||
( echo "/* Script for --shared -z combreloc: shared library, combine & sort relocs */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xsc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xsc
|
||||
rm -f ${COMBRELOC}
|
||||
LD_FLAG=wshared
|
||||
RELRO_NOW=" "
|
||||
@ -357,7 +357,7 @@ if test -n "$GENERATE_SHLIB_SCRIPT"; then
|
||||
( echo "/* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xsw
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xsw
|
||||
rm -f ${COMBRELOC}
|
||||
COMBRELOC=
|
||||
unset RELRO_NOW
|
||||
@ -373,7 +373,7 @@ if test -n "$GENERATE_PIE_SCRIPT"; then
|
||||
echo "/* Script for ld -pie: link position independent executable */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xd
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xd
|
||||
if test -n "$GENERATE_COMBRELOC_SCRIPT"; then
|
||||
LD_FLAG=cpie
|
||||
DATA_ALIGNMENT=${DATA_ALIGNMENT_sc-${DATA_ALIGNMENT}}
|
||||
@ -381,7 +381,7 @@ if test -n "$GENERATE_PIE_SCRIPT"; then
|
||||
( echo "/* Script for -pie -z combreloc: position independent executable, combine & sort relocs */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xdc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xdc
|
||||
rm -f ${COMBRELOC}
|
||||
LD_FLAG=wpie
|
||||
RELRO_NOW=" "
|
||||
@ -389,7 +389,7 @@ if test -n "$GENERATE_PIE_SCRIPT"; then
|
||||
( echo "/* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xdw
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xdw
|
||||
rm -f ${COMBRELOC}
|
||||
COMBRELOC=
|
||||
unset RELRO_NOW
|
||||
@ -404,7 +404,7 @@ if test -n "$GENERATE_AUTO_IMPORT_SCRIPT"; then
|
||||
echo "/* Script for ld --enable-auto-import: Like the default script except read only data is placed into .data */"
|
||||
. ${CUSTOMIZER_SCRIPT}
|
||||
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xa
|
||||
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xa
|
||||
fi
|
||||
|
||||
case "$COMPILE_IN: $EMULATION_LIBPATH " in
|
||||
|
@ -846,7 +846,7 @@ from the place where the @command{ar}, @command{nm} and
|
||||
those commands to make use of a compiler based plugin it must first be
|
||||
copied into the @file{$@{libdir@}/bfd-plugins} directory. All gcc
|
||||
based linker plugins are backward compatible, so it is sufficient to
|
||||
just copy in the newest one.
|
||||
just copy in the newest one.
|
||||
|
||||
@kindex --push-state
|
||||
@cindex push state governing input file handling
|
||||
@ -1142,7 +1142,7 @@ This option marks the executable as requiring global auditing by
|
||||
setting the @code{DF_1_GLOBAUDIT} bit in the @code{DT_FLAGS_1} dynamic
|
||||
tag. Global auditing requires that any auditing library defined via
|
||||
the @option{--depaudit} or @option{-P} command line options be run for
|
||||
all dynamic objects loaded by the application.
|
||||
all dynamic objects loaded by the application.
|
||||
|
||||
@item initfirst
|
||||
This option is only meaningful when building a shared object.
|
||||
|
132
ld/ldgram.y
132
ld/ldgram.y
@ -199,27 +199,27 @@ mri_script_file:
|
||||
|
||||
mri_script_lines:
|
||||
mri_script_lines mri_script_command NEWLINE
|
||||
|
|
||||
|
|
||||
;
|
||||
|
||||
mri_script_command:
|
||||
CHIP exp
|
||||
| CHIP exp ',' exp
|
||||
| NAME {
|
||||
| NAME {
|
||||
einfo(_("%P%F: unrecognised keyword in MRI style script '%s'\n"),$1);
|
||||
}
|
||||
| LIST {
|
||||
| LIST {
|
||||
config.map_filename = "-";
|
||||
}
|
||||
| ORDER ordernamelist
|
||||
| ENDWORD
|
||||
| PUBLIC NAME '=' exp
|
||||
{ mri_public($2, $4); }
|
||||
| PUBLIC NAME ',' exp
|
||||
{ mri_public($2, $4); }
|
||||
| PUBLIC NAME exp
|
||||
{ mri_public($2, $3); }
|
||||
| FORMAT NAME
|
||||
| ORDER ordernamelist
|
||||
| ENDWORD
|
||||
| PUBLIC NAME '=' exp
|
||||
{ mri_public($2, $4); }
|
||||
| PUBLIC NAME ',' exp
|
||||
{ mri_public($2, $4); }
|
||||
| PUBLIC NAME exp
|
||||
{ mri_public($2, $3); }
|
||||
| FORMAT NAME
|
||||
{ mri_format($2); }
|
||||
| SECT NAME ',' exp
|
||||
{ mri_output_section($2, $4);}
|
||||
@ -237,13 +237,13 @@ mri_script_command:
|
||||
{ mri_alignmod($2,$4); }
|
||||
| ABSOLUTE mri_abs_name_list
|
||||
| LOAD mri_load_name_list
|
||||
| NAMEWORD NAME
|
||||
| NAMEWORD NAME
|
||||
{ mri_name($2); }
|
||||
| ALIAS NAME ',' NAME
|
||||
{ mri_alias($2,$4,0);}
|
||||
| ALIAS NAME ',' INT
|
||||
{ mri_alias ($2, 0, (int) $4.integer); }
|
||||
| BASE exp
|
||||
| BASE exp
|
||||
{ mri_base($2); }
|
||||
| TRUNCATE INT
|
||||
{ mri_truncate ((unsigned int) $2.integer); }
|
||||
@ -255,13 +255,13 @@ mri_script_command:
|
||||
{ ldlex_popstate (); }
|
||||
| START NAME
|
||||
{ lang_add_entry ($2, FALSE); }
|
||||
|
|
||||
|
|
||||
;
|
||||
|
||||
ordernamelist:
|
||||
ordernamelist ',' NAME { mri_order($3); }
|
||||
| ordernamelist NAME { mri_order($2); }
|
||||
|
|
||||
ordernamelist ',' NAME { mri_order($3); }
|
||||
| ordernamelist NAME { mri_order($2); }
|
||||
|
|
||||
;
|
||||
|
||||
mri_load_name_list:
|
||||
@ -271,10 +271,10 @@ mri_load_name_list:
|
||||
;
|
||||
|
||||
mri_abs_name_list:
|
||||
NAME
|
||||
{ mri_only_load($1); }
|
||||
NAME
|
||||
{ mri_only_load($1); }
|
||||
| mri_abs_name_list ',' NAME
|
||||
{ mri_only_load($3); }
|
||||
{ mri_only_load($3); }
|
||||
;
|
||||
|
||||
casesymlist:
|
||||
@ -302,11 +302,11 @@ script_file:
|
||||
{ ldlex_both(); }
|
||||
ifile_list
|
||||
{ ldlex_popstate(); }
|
||||
;
|
||||
;
|
||||
|
||||
ifile_list:
|
||||
ifile_list ifile_p1
|
||||
|
|
||||
|
|
||||
;
|
||||
|
||||
|
||||
@ -320,19 +320,19 @@ ifile_p1:
|
||||
| floating_point_support
|
||||
| statement_anywhere
|
||||
| version
|
||||
| ';'
|
||||
| ';'
|
||||
| TARGET_K '(' NAME ')'
|
||||
{ lang_add_target($3); }
|
||||
| SEARCH_DIR '(' filename ')'
|
||||
{ ldfile_add_library_path ($3, FALSE); }
|
||||
| OUTPUT '(' filename ')'
|
||||
{ lang_add_output($3, 1); }
|
||||
| OUTPUT_FORMAT '(' NAME ')'
|
||||
| OUTPUT_FORMAT '(' NAME ')'
|
||||
{ lang_add_output_format ($3, (char *) NULL,
|
||||
(char *) NULL, 1); }
|
||||
| OUTPUT_FORMAT '(' NAME ',' NAME ',' NAME ')'
|
||||
{ lang_add_output_format ($3, $5, $7, 1); }
|
||||
| OUTPUT_ARCH '(' NAME ')'
|
||||
| OUTPUT_ARCH '(' NAME ')'
|
||||
{ ldfile_set_output_arch ($3, bfd_arch_unknown); }
|
||||
| FORCE_COMMON_ALLOCATION
|
||||
{ command_line.force_common_definition = TRUE ; }
|
||||
@ -345,7 +345,7 @@ ifile_p1:
|
||||
{ lang_enter_group (); }
|
||||
'(' input_list ')'
|
||||
{ lang_leave_group (); }
|
||||
| MAP '(' filename ')'
|
||||
| MAP '(' filename ')'
|
||||
{ lang_add_map($3); }
|
||||
| INCLUDE filename
|
||||
{ ldlex_script (); ldfile_open_command_file($2); }
|
||||
@ -455,7 +455,7 @@ wildcard_maybe_exclude:
|
||||
$$.exclude_name_list = NULL;
|
||||
$$.section_flag_list = NULL;
|
||||
}
|
||||
| EXCLUDE_FILE '(' exclude_name_list ')' wildcard_name
|
||||
| EXCLUDE_FILE '(' exclude_name_list ')' wildcard_name
|
||||
{
|
||||
$$.name = $5;
|
||||
$$.sorted = none;
|
||||
@ -632,11 +632,11 @@ input_section_spec_no_keep:
|
||||
tmp.section_flag_list = $1;
|
||||
lang_add_wild (&tmp, NULL, ldgram_had_keep);
|
||||
}
|
||||
| '[' section_name_list ']'
|
||||
| '[' section_name_list ']'
|
||||
{
|
||||
lang_add_wild (NULL, $2, ldgram_had_keep);
|
||||
}
|
||||
| sect_flags '[' section_name_list ']'
|
||||
| sect_flags '[' section_name_list ']'
|
||||
{
|
||||
struct wildcard_spec tmp;
|
||||
tmp.name = NULL;
|
||||
@ -665,13 +665,13 @@ input_section_spec:
|
||||
;
|
||||
|
||||
statement:
|
||||
assignment end
|
||||
assignment end
|
||||
| CREATE_OBJECT_SYMBOLS
|
||||
{
|
||||
lang_add_attribute(lang_object_symbols_statement_enum);
|
||||
}
|
||||
| ';'
|
||||
| CONSTRUCTORS
|
||||
lang_add_attribute(lang_object_symbols_statement_enum);
|
||||
}
|
||||
| ';'
|
||||
| CONSTRUCTORS
|
||||
{
|
||||
|
||||
lang_add_attribute(lang_constructors_statement_enum);
|
||||
@ -682,15 +682,15 @@ statement:
|
||||
lang_add_attribute (lang_constructors_statement_enum);
|
||||
}
|
||||
| input_section_spec
|
||||
| length '(' mustbe_exp ')'
|
||||
{
|
||||
lang_add_data ((int) $1, $3);
|
||||
}
|
||||
| length '(' mustbe_exp ')'
|
||||
{
|
||||
lang_add_data ((int) $1, $3);
|
||||
}
|
||||
|
||||
| FILL '(' fill_exp ')'
|
||||
{
|
||||
lang_add_fill ($3);
|
||||
}
|
||||
{
|
||||
lang_add_fill ($3);
|
||||
}
|
||||
| ASSERT_K {ldlex_expression ();} '(' exp ',' NAME ')' end
|
||||
{ ldlex_popstate ();
|
||||
lang_add_assignment (exp_assert ($4, $6)); }
|
||||
@ -702,7 +702,7 @@ statement:
|
||||
|
||||
statement_list:
|
||||
statement_list statement
|
||||
| statement
|
||||
| statement
|
||||
;
|
||||
|
||||
statement_list_opt:
|
||||
@ -717,7 +717,7 @@ length:
|
||||
{ $$ = $1; }
|
||||
| LONG
|
||||
{ $$ = $1; }
|
||||
| SHORT
|
||||
| SHORT
|
||||
{ $$ = $1; }
|
||||
| BYTE
|
||||
{ $$ = $1; }
|
||||
@ -733,7 +733,7 @@ fill_exp:
|
||||
fill_opt:
|
||||
'=' fill_exp
|
||||
{ $$ = $2; }
|
||||
| { $$ = (fill_type *) 0; }
|
||||
| { $$ = (fill_type *) 0; }
|
||||
;
|
||||
|
||||
assign_op:
|
||||
@ -741,17 +741,17 @@ assign_op:
|
||||
{ $$ = '+'; }
|
||||
| MINUSEQ
|
||||
{ $$ = '-'; }
|
||||
| MULTEQ
|
||||
| MULTEQ
|
||||
{ $$ = '*'; }
|
||||
| DIVEQ
|
||||
| DIVEQ
|
||||
{ $$ = '/'; }
|
||||
| LSHIFTEQ
|
||||
| LSHIFTEQ
|
||||
{ $$ = LSHIFT; }
|
||||
| RSHIFTEQ
|
||||
| RSHIFTEQ
|
||||
{ $$ = RSHIFT; }
|
||||
| ANDEQ
|
||||
| ANDEQ
|
||||
{ $$ = '&'; }
|
||||
| OREQ
|
||||
| OREQ
|
||||
{ $$ = '|'; }
|
||||
|
||||
;
|
||||
@ -804,7 +804,7 @@ memory_spec_list:
|
||||
;
|
||||
|
||||
|
||||
memory_spec: NAME
|
||||
memory_spec: NAME
|
||||
{ region = lang_memory_region_lookup ($1, TRUE); }
|
||||
attributes_opt ':'
|
||||
origin_spec opt_comma length_spec
|
||||
@ -824,7 +824,7 @@ origin_spec:
|
||||
;
|
||||
|
||||
length_spec:
|
||||
LENGTH '=' mustbe_exp
|
||||
LENGTH '=' mustbe_exp
|
||||
{
|
||||
region->length_exp = $3;
|
||||
}
|
||||
@ -946,7 +946,7 @@ exp :
|
||||
{ $$ = exp_binop (NE , $1, $3); }
|
||||
| exp LE exp
|
||||
{ $$ = exp_binop (LE , $1, $3); }
|
||||
| exp GE exp
|
||||
| exp GE exp
|
||||
{ $$ = exp_binop (GE , $1, $3); }
|
||||
| exp '<' exp
|
||||
{ $$ = exp_binop ('<' , $1, $3); }
|
||||
@ -968,7 +968,7 @@ exp :
|
||||
{ $$ = exp_nameop (DEFINED, $3); }
|
||||
| INT
|
||||
{ $$ = exp_bigintop ($1.integer, $1.str); }
|
||||
| SIZEOF_HEADERS
|
||||
| SIZEOF_HEADERS
|
||||
{ $$ = exp_nameop (SIZEOF_HEADERS,0); }
|
||||
|
||||
| ALIGNOF '(' NAME ')'
|
||||
@ -993,8 +993,8 @@ exp :
|
||||
{ $$ = exp_binop (DATA_SEGMENT_RELRO_END, $5, $3); }
|
||||
| DATA_SEGMENT_END '(' exp ')'
|
||||
{ $$ = exp_unop (DATA_SEGMENT_END, $3); }
|
||||
| SEGMENT_START '(' NAME ',' exp ')'
|
||||
{ /* The operands to the expression node are
|
||||
| SEGMENT_START '(' NAME ',' exp ')'
|
||||
{ /* The operands to the expression node are
|
||||
placed in the opposite order from the way
|
||||
in which they appear in the script as
|
||||
that allows us to reuse more code in
|
||||
@ -1022,9 +1022,9 @@ exp :
|
||||
|
||||
|
||||
memspec_at_opt:
|
||||
AT '>' NAME { $$ = $3; }
|
||||
| { $$ = 0; }
|
||||
;
|
||||
AT '>' NAME { $$ = $3; }
|
||||
| { $$ = 0; }
|
||||
;
|
||||
|
||||
opt_at:
|
||||
AT '(' exp ')' { $$ = $3; }
|
||||
@ -1053,7 +1053,7 @@ sect_constraint:
|
||||
| { $$ = 0; }
|
||||
;
|
||||
|
||||
section: NAME { ldlex_expression(); }
|
||||
section: NAME { ldlex_expression(); }
|
||||
opt_exp_with_type
|
||||
opt_at
|
||||
opt_align
|
||||
@ -1067,7 +1067,7 @@ section: NAME { ldlex_expression(); }
|
||||
$5, $7, $4, $9, $6);
|
||||
}
|
||||
statement_list_opt
|
||||
'}' { ldlex_popstate (); ldlex_expression (); }
|
||||
'}' { ldlex_popstate (); ldlex_expression (); }
|
||||
memspec_opt memspec_at_opt phdr_opt fill_opt
|
||||
{
|
||||
ldlex_popstate ();
|
||||
@ -1119,9 +1119,9 @@ type:
|
||||
;
|
||||
|
||||
atype:
|
||||
'(' type ')'
|
||||
| /* EMPTY */ { sectype = normal_section; }
|
||||
| '(' ')' { sectype = normal_section; }
|
||||
'(' type ')'
|
||||
| /* EMPTY */ { sectype = normal_section; }
|
||||
| '(' ')' { sectype = normal_section; }
|
||||
;
|
||||
|
||||
opt_exp_with_type:
|
||||
@ -1402,7 +1402,7 @@ vers_defns:
|
||||
{
|
||||
$$ = lang_new_vers_pattern (NULL, $1, ldgram_vers_current_lang, FALSE);
|
||||
}
|
||||
| NAME
|
||||
| NAME
|
||||
{
|
||||
$$ = lang_new_vers_pattern (NULL, $1, ldgram_vers_current_lang, TRUE);
|
||||
}
|
||||
|
66
ld/ldlang.c
66
ld/ldlang.c
@ -227,7 +227,7 @@ unique_section_p (const asection *sec,
|
||||
|
||||
static bfd_boolean
|
||||
walk_wild_file_in_exclude_list (struct name_list *exclude_list,
|
||||
lang_input_statement_type *file)
|
||||
lang_input_statement_type *file)
|
||||
{
|
||||
struct name_list *list_tmp;
|
||||
|
||||
@ -2367,9 +2367,9 @@ lang_add_section (lang_statement_list_type *ptr,
|
||||
if ((flags & (SEC_LINK_ONCE | SEC_GROUP)) == (SEC_LINK_ONCE | SEC_GROUP))
|
||||
{
|
||||
if (link_info.resolve_section_groups)
|
||||
flags &= ~(SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_RELOC);
|
||||
flags &= ~(SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_RELOC);
|
||||
else
|
||||
flags &= ~(SEC_LINK_DUPLICATES | SEC_RELOC);
|
||||
flags &= ~(SEC_LINK_DUPLICATES | SEC_RELOC);
|
||||
}
|
||||
else if (!bfd_link_relocatable (&link_info))
|
||||
flags &= ~(SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_RELOC);
|
||||
@ -4425,7 +4425,7 @@ print_wild_statement (lang_wild_statement_type *w,
|
||||
name_list *tmp;
|
||||
minfo ("EXCLUDE_FILE(%s", w->exclude_name_list->name);
|
||||
for (tmp = w->exclude_name_list->next; tmp; tmp = tmp->next)
|
||||
minfo (" %s", tmp->name);
|
||||
minfo (" %s", tmp->name);
|
||||
minfo (") ");
|
||||
}
|
||||
|
||||
@ -4444,40 +4444,40 @@ print_wild_statement (lang_wild_statement_type *w,
|
||||
int closing_paren = 0;
|
||||
|
||||
switch (sec->spec.sorted)
|
||||
{
|
||||
case none:
|
||||
break;
|
||||
{
|
||||
case none:
|
||||
break;
|
||||
|
||||
case by_name:
|
||||
minfo ("SORT_BY_NAME(");
|
||||
closing_paren = 1;
|
||||
break;
|
||||
case by_name:
|
||||
minfo ("SORT_BY_NAME(");
|
||||
closing_paren = 1;
|
||||
break;
|
||||
|
||||
case by_alignment:
|
||||
minfo ("SORT_BY_ALIGNMENT(");
|
||||
closing_paren = 1;
|
||||
break;
|
||||
case by_alignment:
|
||||
minfo ("SORT_BY_ALIGNMENT(");
|
||||
closing_paren = 1;
|
||||
break;
|
||||
|
||||
case by_name_alignment:
|
||||
minfo ("SORT_BY_NAME(SORT_BY_ALIGNMENT(");
|
||||
closing_paren = 2;
|
||||
break;
|
||||
case by_name_alignment:
|
||||
minfo ("SORT_BY_NAME(SORT_BY_ALIGNMENT(");
|
||||
closing_paren = 2;
|
||||
break;
|
||||
|
||||
case by_alignment_name:
|
||||
minfo ("SORT_BY_ALIGNMENT(SORT_BY_NAME(");
|
||||
closing_paren = 2;
|
||||
break;
|
||||
case by_alignment_name:
|
||||
minfo ("SORT_BY_ALIGNMENT(SORT_BY_NAME(");
|
||||
closing_paren = 2;
|
||||
break;
|
||||
|
||||
case by_none:
|
||||
minfo ("SORT_NONE(");
|
||||
closing_paren = 1;
|
||||
break;
|
||||
case by_none:
|
||||
minfo ("SORT_NONE(");
|
||||
closing_paren = 1;
|
||||
break;
|
||||
|
||||
case by_init_priority:
|
||||
minfo ("SORT_BY_INIT_PRIORITY(");
|
||||
closing_paren = 1;
|
||||
break;
|
||||
}
|
||||
case by_init_priority:
|
||||
minfo ("SORT_BY_INIT_PRIORITY(");
|
||||
closing_paren = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (sec->spec.exclude_name_list != NULL)
|
||||
{
|
||||
@ -4492,7 +4492,7 @@ print_wild_statement (lang_wild_statement_type *w,
|
||||
else
|
||||
minfo ("*");
|
||||
for (;closing_paren > 0; closing_paren--)
|
||||
minfo (")");
|
||||
minfo (")");
|
||||
if (sec->next)
|
||||
minfo (" ");
|
||||
}
|
||||
|
70
ld/ldlex.l
70
ld/ldlex.l
@ -79,7 +79,7 @@ static void lex_warn_invalid (char *where, char *what);
|
||||
INPUTLIST definitely in a script, a filename-list
|
||||
BOTH either EXPRESSION or SCRIPT
|
||||
DEFSYMEXP in an argument to -defsym
|
||||
MRI in an MRI script
|
||||
MRI in an MRI script
|
||||
VERS_START starting a Sun style mapfile
|
||||
VERS_SCRIPT a Sun style mapfile
|
||||
VERS_NODE a node within a Sun style mapfile
|
||||
@ -135,13 +135,13 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
|
||||
<BOTH,SCRIPT,EXPRESSION,VERS_START,VERS_NODE,VERS_SCRIPT,INPUTLIST>"/*" { comment (); }
|
||||
|
||||
|
||||
<DEFSYMEXP>"-" { RTOKEN('-');}
|
||||
<DEFSYMEXP>"+" { RTOKEN('+');}
|
||||
<DEFSYMEXP>"-" { RTOKEN('-');}
|
||||
<DEFSYMEXP>"+" { RTOKEN('+');}
|
||||
<DEFSYMEXP>{SYMBOLNAMECHAR1}{SYMBOLCHARN}* { yylval.name = xstrdup (yytext); return NAME; }
|
||||
<DEFSYMEXP>"=" { RTOKEN('='); }
|
||||
<DEFSYMEXP>"=" { RTOKEN('='); }
|
||||
|
||||
<MRI,EXPRESSION>"$"([0-9A-Fa-f])+ {
|
||||
yylval.integer = bfd_scan_vma (yytext + 1, 0, 16);
|
||||
yylval.integer = bfd_scan_vma (yytext + 1, 0, 16);
|
||||
yylval.bigint.str = NULL;
|
||||
return INT;
|
||||
}
|
||||
@ -231,7 +231,7 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
|
||||
<BOTH,SCRIPT,EXPRESSION,MRI>"/" { RTOKEN('/');}
|
||||
<BOTH,SCRIPT,EXPRESSION,MRI>"%" { RTOKEN('%');}
|
||||
<BOTH,SCRIPT,EXPRESSION,MRI>"<" { RTOKEN('<');}
|
||||
<BOTH,SCRIPT,EXPRESSION,MRI>"=" { RTOKEN('=');}
|
||||
<BOTH,SCRIPT,EXPRESSION,MRI>"=" { RTOKEN('=');}
|
||||
<BOTH,SCRIPT,EXPRESSION,MRI>"}" { RTOKEN('}') ; }
|
||||
<BOTH,SCRIPT,EXPRESSION,MRI>"{" { RTOKEN('{'); }
|
||||
<BOTH,SCRIPT,EXPRESSION,MRI,INPUTLIST>")" { RTOKEN(')');}
|
||||
@ -327,42 +327,42 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
|
||||
<EXPRESSION,BOTH,SCRIPT>"EXCLUDE_FILE" { RTOKEN(EXCLUDE_FILE); }
|
||||
<EXPRESSION,BOTH,SCRIPT>"CONSTANT" { RTOKEN(CONSTANT);}
|
||||
<MRI>"#".*\n? { ++ lineno; }
|
||||
<MRI>"\n" { ++ lineno; RTOKEN(NEWLINE); }
|
||||
<MRI>"\n" { ++ lineno; RTOKEN(NEWLINE); }
|
||||
<MRI>"*".* { /* Mri comment line */ }
|
||||
<MRI>";".* { /* Mri comment line */ }
|
||||
<MRI>"END" { RTOKEN(ENDWORD); }
|
||||
<MRI>"END" { RTOKEN(ENDWORD); }
|
||||
<MRI>"ALIGNMOD" { RTOKEN(ALIGNMOD);}
|
||||
<MRI>"ALIGN" { RTOKEN(ALIGN_K);}
|
||||
<MRI>"CHIP" { RTOKEN(CHIP); }
|
||||
<MRI>"BASE" { RTOKEN(BASE); }
|
||||
<MRI>"ALIAS" { RTOKEN(ALIAS); }
|
||||
<MRI>"TRUNCATE" { RTOKEN(TRUNCATE); }
|
||||
<MRI>"LOAD" { RTOKEN(LOAD); }
|
||||
<MRI>"PUBLIC" { RTOKEN(PUBLIC); }
|
||||
<MRI>"ORDER" { RTOKEN(ORDER); }
|
||||
<MRI>"NAME" { RTOKEN(NAMEWORD); }
|
||||
<MRI>"FORMAT" { RTOKEN(FORMAT); }
|
||||
<MRI>"CASE" { RTOKEN(CASE); }
|
||||
<MRI>"START" { RTOKEN(START); }
|
||||
<MRI>"LIST".* { RTOKEN(LIST); /* LIST and ignore to end of line */ }
|
||||
<MRI>"CHIP" { RTOKEN(CHIP); }
|
||||
<MRI>"BASE" { RTOKEN(BASE); }
|
||||
<MRI>"ALIAS" { RTOKEN(ALIAS); }
|
||||
<MRI>"TRUNCATE" { RTOKEN(TRUNCATE); }
|
||||
<MRI>"LOAD" { RTOKEN(LOAD); }
|
||||
<MRI>"PUBLIC" { RTOKEN(PUBLIC); }
|
||||
<MRI>"ORDER" { RTOKEN(ORDER); }
|
||||
<MRI>"NAME" { RTOKEN(NAMEWORD); }
|
||||
<MRI>"FORMAT" { RTOKEN(FORMAT); }
|
||||
<MRI>"CASE" { RTOKEN(CASE); }
|
||||
<MRI>"START" { RTOKEN(START); }
|
||||
<MRI>"LIST".* { RTOKEN(LIST); /* LIST and ignore to end of line */ }
|
||||
<MRI>"SECT" { RTOKEN(SECT); }
|
||||
<EXPRESSION,BOTH,SCRIPT,MRI>"ABSOLUTE" { RTOKEN(ABSOLUTE); }
|
||||
<MRI>"end" { RTOKEN(ENDWORD); }
|
||||
<MRI>"end" { RTOKEN(ENDWORD); }
|
||||
<MRI>"alignmod" { RTOKEN(ALIGNMOD);}
|
||||
<MRI>"align" { RTOKEN(ALIGN_K);}
|
||||
<MRI>"chip" { RTOKEN(CHIP); }
|
||||
<MRI>"base" { RTOKEN(BASE); }
|
||||
<MRI>"alias" { RTOKEN(ALIAS); }
|
||||
<MRI>"truncate" { RTOKEN(TRUNCATE); }
|
||||
<MRI>"load" { RTOKEN(LOAD); }
|
||||
<MRI>"public" { RTOKEN(PUBLIC); }
|
||||
<MRI>"order" { RTOKEN(ORDER); }
|
||||
<MRI>"name" { RTOKEN(NAMEWORD); }
|
||||
<MRI>"format" { RTOKEN(FORMAT); }
|
||||
<MRI>"case" { RTOKEN(CASE); }
|
||||
<MRI>"extern" { RTOKEN(EXTERN); }
|
||||
<MRI>"start" { RTOKEN(START); }
|
||||
<MRI>"list".* { RTOKEN(LIST); /* LIST and ignore to end of line */ }
|
||||
<MRI>"chip" { RTOKEN(CHIP); }
|
||||
<MRI>"base" { RTOKEN(BASE); }
|
||||
<MRI>"alias" { RTOKEN(ALIAS); }
|
||||
<MRI>"truncate" { RTOKEN(TRUNCATE); }
|
||||
<MRI>"load" { RTOKEN(LOAD); }
|
||||
<MRI>"public" { RTOKEN(PUBLIC); }
|
||||
<MRI>"order" { RTOKEN(ORDER); }
|
||||
<MRI>"name" { RTOKEN(NAMEWORD); }
|
||||
<MRI>"format" { RTOKEN(FORMAT); }
|
||||
<MRI>"case" { RTOKEN(CASE); }
|
||||
<MRI>"extern" { RTOKEN(EXTERN); }
|
||||
<MRI>"start" { RTOKEN(START); }
|
||||
<MRI>"list".* { RTOKEN(LIST); /* LIST and ignore to end of line */ }
|
||||
<MRI>"sect" { RTOKEN(SECT); }
|
||||
<EXPRESSION,BOTH,SCRIPT,MRI>"absolute" { RTOKEN(ABSOLUTE); }
|
||||
|
||||
@ -463,7 +463,7 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
|
||||
|
||||
<VERS_START,VERS_NODE,VERS_SCRIPT>#.* { /* Eat up comments */ }
|
||||
|
||||
<VERS_START,VERS_NODE,VERS_SCRIPT,INPUTLIST>[ \t\r]+ { /* Eat up whitespace */ }
|
||||
<VERS_START,VERS_NODE,VERS_SCRIPT,INPUTLIST>[ \t\r]+ { /* Eat up whitespace */ }
|
||||
|
||||
<<EOF>> {
|
||||
include_stack_ptr--;
|
||||
|
42
ld/lexsup.c
42
ld/lexsup.c
@ -770,9 +770,9 @@ parse_args (unsigned argc, char **argv)
|
||||
case 'd':
|
||||
command_line.force_common_definition = TRUE;
|
||||
break;
|
||||
case OPTION_FORCE_GROUP_ALLOCATION:
|
||||
command_line.force_group_allocation = TRUE;
|
||||
break;
|
||||
case OPTION_FORCE_GROUP_ALLOCATION:
|
||||
command_line.force_group_allocation = TRUE;
|
||||
break;
|
||||
case OPTION_DEFSYM:
|
||||
lex_string = optarg;
|
||||
lex_redirect (optarg, "--defsym", ++defsym_count);
|
||||
@ -828,7 +828,7 @@ parse_args (unsigned argc, char **argv)
|
||||
if (command_line.auxiliary_filters == NULL)
|
||||
{
|
||||
command_line.auxiliary_filters = (char **)
|
||||
xmalloc (2 * sizeof (char *));
|
||||
xmalloc (2 * sizeof (char *));
|
||||
command_line.auxiliary_filters[0] = optarg;
|
||||
command_line.auxiliary_filters[1] = NULL;
|
||||
}
|
||||
@ -841,8 +841,8 @@ parse_args (unsigned argc, char **argv)
|
||||
for (p = command_line.auxiliary_filters; *p != NULL; p++)
|
||||
++c;
|
||||
command_line.auxiliary_filters = (char **)
|
||||
xrealloc (command_line.auxiliary_filters,
|
||||
(c + 2) * sizeof (char *));
|
||||
xrealloc (command_line.auxiliary_filters,
|
||||
(c + 2) * sizeof (char *));
|
||||
command_line.auxiliary_filters[c] = optarg;
|
||||
command_line.auxiliary_filters[c + 1] = NULL;
|
||||
}
|
||||
@ -952,7 +952,7 @@ parse_args (unsigned argc, char **argv)
|
||||
link_info.unresolved_syms_in_shared_libs
|
||||
= how_to_report_unresolved_symbols;
|
||||
}
|
||||
else if (strcmp (optarg, "ignore-in-shared-libs") == 0)
|
||||
else if (strcmp (optarg, "ignore-in-shared-libs") == 0)
|
||||
{
|
||||
link_info.unresolved_syms_in_objects
|
||||
= how_to_report_unresolved_symbols;
|
||||
@ -1130,8 +1130,8 @@ parse_args (unsigned argc, char **argv)
|
||||
char *buf;
|
||||
|
||||
buf = (char *) xmalloc (strlen (command_line.rpath_link)
|
||||
+ strlen (optarg)
|
||||
+ 2);
|
||||
+ strlen (optarg)
|
||||
+ 2);
|
||||
sprintf (buf, "%s%c%s", command_line.rpath_link,
|
||||
config.rpath_separator, optarg);
|
||||
free (command_line.rpath_link);
|
||||
@ -1198,8 +1198,8 @@ parse_args (unsigned argc, char **argv)
|
||||
case OPTION_SORT_COMMON:
|
||||
if (optarg == NULL
|
||||
|| strcmp (optarg, N_("descending")) == 0)
|
||||
config.sort_common = sort_descending;
|
||||
else if (strcmp (optarg, N_("ascending")) == 0)
|
||||
config.sort_common = sort_descending;
|
||||
else if (strcmp (optarg, N_("ascending")) == 0)
|
||||
config.sort_common = sort_ascending;
|
||||
else
|
||||
einfo (_("%P%F: invalid common section sorting option: %s\n"),
|
||||
@ -1308,8 +1308,8 @@ parse_args (unsigned argc, char **argv)
|
||||
case 'u':
|
||||
ldlang_add_undef (optarg, TRUE);
|
||||
break;
|
||||
case OPTION_REQUIRE_DEFINED_SYMBOL:
|
||||
ldlang_add_require_defined (optarg);
|
||||
case OPTION_REQUIRE_DEFINED_SYMBOL:
|
||||
ldlang_add_require_defined (optarg);
|
||||
break;
|
||||
case OPTION_UNIQUE:
|
||||
if (optarg != NULL)
|
||||
@ -1522,17 +1522,17 @@ parse_args (unsigned argc, char **argv)
|
||||
config.hash_table_size = 1021;
|
||||
break;
|
||||
|
||||
case OPTION_HASH_SIZE:
|
||||
case OPTION_HASH_SIZE:
|
||||
{
|
||||
bfd_size_type new_size;
|
||||
|
||||
new_size = strtoul (optarg, NULL, 0);
|
||||
if (new_size)
|
||||
config.hash_table_size = new_size;
|
||||
else
|
||||
einfo (_("%P%X: --hash-size needs a numeric argument\n"));
|
||||
}
|
||||
break;
|
||||
new_size = strtoul (optarg, NULL, 0);
|
||||
if (new_size)
|
||||
config.hash_table_size = new_size;
|
||||
else
|
||||
einfo (_("%P%X: --hash-size needs a numeric argument\n"));
|
||||
}
|
||||
break;
|
||||
|
||||
case OPTION_PUSH_STATE:
|
||||
input_flags.pushed = xmemdup (&input_flags,
|
||||
|
238
ld/pe-dll.c
238
ld/pe-dll.c
@ -552,7 +552,7 @@ auto_export (bfd *abfd, def_file *d, const char *n)
|
||||
|
||||
/* Return false if n is in the d->exports table. */
|
||||
if (bsearch (&key, d->exports, d->num_exports,
|
||||
sizeof (pe_def_file->exports[0]), pe_export_sort))
|
||||
sizeof (pe_def_file->exports[0]), pe_export_sort))
|
||||
return 0;
|
||||
|
||||
if (pe_dll_do_default_excludes)
|
||||
@ -692,9 +692,9 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
|
||||
{
|
||||
struct coff_link_hash_entry *sym_hash;
|
||||
sym_hash = coff_link_hash_lookup (coff_hash_table (info),
|
||||
ac->symbol_name, FALSE, FALSE, FALSE);
|
||||
ac->symbol_name, FALSE, FALSE, FALSE);
|
||||
if (sym_hash && sym_hash->root.type == bfd_link_hash_common
|
||||
&& sym_hash->root.u.c.p->alignment_power < (unsigned) ac->alignment)
|
||||
&& sym_hash->root.u.c.p->alignment_power < (unsigned) ac->alignment)
|
||||
{
|
||||
sym_hash->root.u.c.p->alignment_power = (unsigned) ac->alignment;
|
||||
}
|
||||
@ -736,9 +736,9 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
|
||||
&& ((symbols[j]->flags & BSF_GLOBAL)
|
||||
|| (symbols[j]->flags == 0)));
|
||||
if (link_info.version_info && would_export)
|
||||
would_export
|
||||
= !bfd_hide_sym_by_version (link_info.version_info,
|
||||
symbols[j]->name);
|
||||
would_export
|
||||
= !bfd_hide_sym_by_version (link_info.version_info,
|
||||
symbols[j]->name);
|
||||
if (would_export)
|
||||
{
|
||||
const char *sn = symbols[j]->name;
|
||||
@ -747,7 +747,7 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
|
||||
{
|
||||
char *name;
|
||||
if (is_import (sn))
|
||||
continue;
|
||||
continue;
|
||||
|
||||
name = xmalloc (strlen ("__imp_") + strlen (sn) + 1);
|
||||
sprintf (name, "%s%s", "__imp_", sn);
|
||||
@ -772,7 +772,7 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
|
||||
NULL, &is_dup);
|
||||
/* Fill data flag properly, from dlltool.c. */
|
||||
if (!is_dup)
|
||||
p->flag_data = !(symbols[j]->flags & BSF_FUNCTION);
|
||||
p->flag_data = !(symbols[j]->flags & BSF_FUNCTION);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -806,12 +806,12 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
|
||||
char *tmp_at = strrchr (tmp, '@');
|
||||
|
||||
if (tmp_at)
|
||||
*tmp_at = 0;
|
||||
*tmp_at = 0;
|
||||
else
|
||||
einfo (_("%P%X: Cannot export %s: invalid export name\n"),
|
||||
einfo (_("%P%X: Cannot export %s: invalid export name\n"),
|
||||
pe_def_file->exports[i].name);
|
||||
pe_def_file->exports[i].name = tmp;
|
||||
resort_needed = TRUE;
|
||||
resort_needed = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -820,7 +820,7 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
|
||||
by removing leading @. */
|
||||
if (resort_needed)
|
||||
qsort (pe_def_file->exports, NE, sizeof (pe_def_file->exports[0]),
|
||||
pe_export_sort);
|
||||
pe_export_sort);
|
||||
|
||||
if (pe_dll_stdcall_aliases)
|
||||
{
|
||||
@ -841,7 +841,7 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
|
||||
pe_def_file->exports[i].internal_name,
|
||||
-1, NULL, &is_dup);
|
||||
if (is_dup)
|
||||
free (tmp);
|
||||
free (tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -953,7 +953,7 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
|
||||
}
|
||||
}
|
||||
/* Check for forward exports. These are indicated in DEF files by an
|
||||
export directive of the form NAME1 = MODULE-NAME.EXTERNAL-NAME
|
||||
export directive of the form NAME1 = MODULE-NAME.EXTERNAL-NAME
|
||||
but we must take care not to be fooled when the user wants to export
|
||||
a symbol that actually really has a dot in it, so we only check
|
||||
for them here, after real defined symbols have already been matched. */
|
||||
@ -1093,8 +1093,8 @@ generate_edata (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED)
|
||||
/* Now we need to assign ordinals to those that don't have them. */
|
||||
for (i = 0; i < NE; i++)
|
||||
{
|
||||
if (exported_symbol_sections[i] ||
|
||||
pe_def_file->exports[i].flag_forward)
|
||||
if (exported_symbol_sections[i]
|
||||
|| pe_def_file->exports[i].flag_forward)
|
||||
{
|
||||
if (pe_def_file->exports[i].ordinal != -1)
|
||||
{
|
||||
@ -1126,9 +1126,9 @@ generate_edata (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED)
|
||||
|
||||
next_ordinal = min_ordinal;
|
||||
for (i = 0; i < NE; i++)
|
||||
if ((exported_symbol_sections[i] ||
|
||||
pe_def_file->exports[i].flag_forward) &&
|
||||
pe_def_file->exports[i].ordinal == -1)
|
||||
if ((exported_symbol_sections[i]
|
||||
|| pe_def_file->exports[i].flag_forward)
|
||||
&& pe_def_file->exports[i].ordinal == -1)
|
||||
{
|
||||
while (exported_symbols[next_ordinal - min_ordinal] != -1)
|
||||
next_ordinal++;
|
||||
@ -1166,7 +1166,7 @@ fill_exported_offsets (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
|
||||
|
||||
name = xmalloc (strlen (pe_def_file->exports[i].internal_name) + 2);
|
||||
if (pe_details->underscored
|
||||
&& *pe_def_file->exports[i].internal_name != '@')
|
||||
&& *pe_def_file->exports[i].internal_name != '@')
|
||||
{
|
||||
*name = '_';
|
||||
strcpy (name + 1, pe_def_file->exports[i].internal_name);
|
||||
@ -1234,21 +1234,21 @@ fill_edata (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED)
|
||||
Scan alphabetically - ie the ordering in the exports[] table,
|
||||
rather than by ordinal - the ordering in the exported_symbol[]
|
||||
table. See dlltool.c and:
|
||||
http://sources.redhat.com/ml/binutils/2003-04/msg00379.html
|
||||
http://sources.redhat.com/ml/binutils/2003-04/msg00379.html
|
||||
for more information. */
|
||||
hint = 0;
|
||||
for (s = 0; s < NE; s++)
|
||||
{
|
||||
struct bfd_section *ssec = exported_symbol_sections[s];
|
||||
if (pe_def_file->exports[s].ordinal != -1 &&
|
||||
(pe_def_file->exports[s].flag_forward || ssec != NULL))
|
||||
if (pe_def_file->exports[s].ordinal != -1
|
||||
&& (pe_def_file->exports[s].flag_forward || ssec != NULL))
|
||||
{
|
||||
int ord = pe_def_file->exports[s].ordinal;
|
||||
|
||||
if (pe_def_file->exports[s].flag_forward)
|
||||
{
|
||||
bfd_put_32 (abfd, ERVA (enamestr),
|
||||
eaddresses + 4 * (ord - min_ordinal));
|
||||
eaddresses + 4 * (ord - min_ordinal));
|
||||
|
||||
strcpy (enamestr, pe_def_file->exports[s].internal_name);
|
||||
enamestr += strlen (pe_def_file->exports[s].internal_name) + 1;
|
||||
@ -1260,7 +1260,7 @@ fill_edata (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED)
|
||||
+ ssec->output_offset);
|
||||
|
||||
bfd_put_32 (abfd, srva - image_base,
|
||||
eaddresses + 4 * (ord - min_ordinal));
|
||||
eaddresses + 4 * (ord - min_ordinal));
|
||||
}
|
||||
|
||||
if (!pe_def_file->exports[s].flag_noname)
|
||||
@ -1880,20 +1880,20 @@ save_relocs (asection *sec)
|
||||
}
|
||||
|
||||
/* .section .idata$2
|
||||
.global __head_my_dll
|
||||
.global __head_my_dll
|
||||
__head_my_dll:
|
||||
.rva hname
|
||||
.long 0
|
||||
.long 0
|
||||
.rva __my_dll_iname
|
||||
.rva fthunk
|
||||
.rva hname
|
||||
.long 0
|
||||
.long 0
|
||||
.rva __my_dll_iname
|
||||
.rva fthunk
|
||||
|
||||
.section .idata$5
|
||||
.long 0
|
||||
.section .idata$5
|
||||
.long 0
|
||||
fthunk:
|
||||
|
||||
.section .idata$4
|
||||
.long 0
|
||||
.section .idata$4
|
||||
.long 0
|
||||
hname: */
|
||||
|
||||
static bfd *
|
||||
@ -1974,15 +1974,15 @@ make_head (bfd *parent)
|
||||
}
|
||||
|
||||
/* .section .idata$4
|
||||
.long 0
|
||||
.long 0
|
||||
[.long 0] for PE+
|
||||
.section .idata$5
|
||||
.long 0
|
||||
.section .idata$5
|
||||
.long 0
|
||||
[.long 0] for PE+
|
||||
.section idata$7
|
||||
.global __my_dll_iname
|
||||
.section idata$7
|
||||
.global __my_dll_iname
|
||||
__my_dll_iname:
|
||||
.asciz "my.dll" */
|
||||
.asciz "my.dll" */
|
||||
|
||||
static bfd *
|
||||
make_tail (bfd *parent)
|
||||
@ -2044,25 +2044,25 @@ make_tail (bfd *parent)
|
||||
}
|
||||
|
||||
/* .text
|
||||
.global _function
|
||||
.global ___imp_function
|
||||
.global __imp__function
|
||||
.global _function
|
||||
.global ___imp_function
|
||||
.global __imp__function
|
||||
_function:
|
||||
jmp *__imp__function:
|
||||
jmp *__imp__function:
|
||||
|
||||
.section idata$7
|
||||
.long __head_my_dll
|
||||
.section idata$7
|
||||
.long __head_my_dll
|
||||
|
||||
.section .idata$5
|
||||
.section .idata$5
|
||||
___imp_function:
|
||||
__imp__function:
|
||||
iat?
|
||||
.section .idata$4
|
||||
.section .idata$4
|
||||
iat?
|
||||
.section .idata$6
|
||||
.section .idata$6
|
||||
ID<ordinal>:
|
||||
.short <hint>
|
||||
.asciz "function" xlate? (add underscore, kill at) */
|
||||
.short <hint>
|
||||
.asciz "function" xlate? (add underscore, kill at) */
|
||||
|
||||
static const unsigned char jmp_ix86_bytes[] =
|
||||
{
|
||||
@ -2070,11 +2070,11 @@ static const unsigned char jmp_ix86_bytes[] =
|
||||
};
|
||||
|
||||
/* _function:
|
||||
mov.l ip+8,r0
|
||||
mov.l @r0,r0
|
||||
jmp @r0
|
||||
nop
|
||||
.dw __imp_function */
|
||||
mov.l ip+8,r0
|
||||
mov.l @r0,r0
|
||||
jmp @r0
|
||||
nop
|
||||
.dw __imp_function */
|
||||
|
||||
static const unsigned char jmp_sh_bytes[] =
|
||||
{
|
||||
@ -2082,10 +2082,10 @@ static const unsigned char jmp_sh_bytes[] =
|
||||
};
|
||||
|
||||
/* _function:
|
||||
lui $t0,<high:__imp_function>
|
||||
lw $t0,<low:__imp_function>
|
||||
jr $t0
|
||||
nop */
|
||||
lui $t0,<high:__imp_function>
|
||||
lw $t0,<low:__imp_function>
|
||||
jr $t0
|
||||
nop */
|
||||
|
||||
static const unsigned char jmp_mips_bytes[] =
|
||||
{
|
||||
@ -2211,7 +2211,7 @@ make_one (def_file_export *exp, bfd *parent, bfd_boolean include_jmp_stub)
|
||||
/* Mark this object as SAFESEH compatible. */
|
||||
quick_symbol (abfd, "", "@feat.00", "", bfd_abs_section_ptr,
|
||||
BSF_LOCAL, 1);
|
||||
quick_reloc (abfd, 2, BFD_RELOC_32, 2);
|
||||
quick_reloc (abfd, 2, BFD_RELOC_32, 2);
|
||||
#endif
|
||||
break;
|
||||
case PE_ARCH_sh:
|
||||
@ -2223,8 +2223,8 @@ make_one (def_file_export *exp, bfd *parent, bfd_boolean include_jmp_stub)
|
||||
quick_reloc (abfd, 4, BFD_RELOC_LO16, 2);
|
||||
break;
|
||||
case PE_ARCH_arm:
|
||||
case PE_ARCH_arm_epoc:
|
||||
case PE_ARCH_arm_wince:
|
||||
case PE_ARCH_arm_epoc:
|
||||
case PE_ARCH_arm_wince:
|
||||
quick_reloc (abfd, 8, BFD_RELOC_32, 2);
|
||||
break;
|
||||
default:
|
||||
@ -2432,11 +2432,11 @@ make_import_fixup_mark (arelent *rel, char *name)
|
||||
}
|
||||
|
||||
/* .section .idata$2
|
||||
.rva __nm_thnk_SYM (singleton thunk with name of func)
|
||||
.long 0
|
||||
.long 0
|
||||
.rva __my_dll_iname (name of dll)
|
||||
.rva __fuNN_SYM (pointer to reference (address) in text) */
|
||||
.rva __nm_thnk_SYM (singleton thunk with name of func)
|
||||
.long 0
|
||||
.long 0
|
||||
.rva __my_dll_iname (name of dll)
|
||||
.rva __fuNN_SYM (pointer to reference (address) in text) */
|
||||
|
||||
static bfd *
|
||||
make_import_fixup_entry (const char *name,
|
||||
@ -2492,8 +2492,8 @@ make_import_fixup_entry (const char *name,
|
||||
}
|
||||
|
||||
/* .section .rdata_runtime_pseudo_reloc
|
||||
.long addend
|
||||
.rva __fuNN_SYM (pointer to reference (address) in text) */
|
||||
.long addend
|
||||
.rva __fuNN_SYM (pointer to reference (address) in text) */
|
||||
|
||||
static bfd *
|
||||
make_runtime_pseudo_reloc (const char *name ATTRIBUTE_UNUSED,
|
||||
@ -2577,7 +2577,7 @@ make_runtime_pseudo_reloc (const char *name ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
/* .section .rdata
|
||||
.rva __pei386_runtime_relocator */
|
||||
.rva __pei386_runtime_relocator */
|
||||
|
||||
static bfd *
|
||||
pe_create_runtime_relocator_reference (bfd *parent)
|
||||
@ -2655,16 +2655,16 @@ pe_create_import_fixup (arelent *rel, asection *s, bfd_vma addend, char *name)
|
||||
add_bfd_to_link (b, b->filename, &link_info);
|
||||
|
||||
/* If we ever use autoimport, we have to cast text section writable.
|
||||
But not for version 2. */
|
||||
But not for version 2. */
|
||||
if (link_info.pei386_runtime_pseudo_reloc != 2)
|
||||
{
|
||||
config.text_read_only = FALSE;
|
||||
link_info.output_bfd->flags &= ~WP_TEXT;
|
||||
}
|
||||
{
|
||||
config.text_read_only = FALSE;
|
||||
link_info.output_bfd->flags &= ~WP_TEXT;
|
||||
}
|
||||
if (link_info.pei386_runtime_pseudo_reloc == 2)
|
||||
{
|
||||
{
|
||||
b = make_singleton_name_imp (name, link_info.output_bfd);
|
||||
add_bfd_to_link (b, b->filename, &link_info);
|
||||
add_bfd_to_link (b, b->filename, &link_info);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2679,27 +2679,27 @@ pe_create_import_fixup (arelent *rel, asection *s, bfd_vma addend, char *name)
|
||||
add_bfd_to_link (b, b->filename, &link_info);
|
||||
}
|
||||
|
||||
if ((link_info.pei386_runtime_pseudo_reloc != 0 && addend != 0)
|
||||
|| link_info.pei386_runtime_pseudo_reloc == 2)
|
||||
{
|
||||
if (pe_dll_extra_pe_debug)
|
||||
printf ("creating runtime pseudo-reloc entry for %s (addend=%d)\n",
|
||||
fixup_name, (int) addend);
|
||||
if ((link_info.pei386_runtime_pseudo_reloc != 0 && addend != 0)
|
||||
|| link_info.pei386_runtime_pseudo_reloc == 2)
|
||||
{
|
||||
if (pe_dll_extra_pe_debug)
|
||||
printf ("creating runtime pseudo-reloc entry for %s (addend=%d)\n",
|
||||
fixup_name, (int) addend);
|
||||
|
||||
b = make_runtime_pseudo_reloc (name, fixup_name, addend, rel->howto->bitsize,
|
||||
link_info.output_bfd);
|
||||
add_bfd_to_link (b, b->filename, &link_info);
|
||||
b = make_runtime_pseudo_reloc (name, fixup_name, addend, rel->howto->bitsize,
|
||||
link_info.output_bfd);
|
||||
add_bfd_to_link (b, b->filename, &link_info);
|
||||
|
||||
if (runtime_pseudo_relocs_created == 0)
|
||||
{
|
||||
b = pe_create_runtime_relocator_reference (link_info.output_bfd);
|
||||
add_bfd_to_link (b, b->filename, &link_info);
|
||||
}
|
||||
runtime_pseudo_relocs_created++;
|
||||
}
|
||||
else if (addend != 0)
|
||||
einfo (_("%P%X%C: variable '%T' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details.\n"),
|
||||
s->owner, s, rel->address, sym->name);
|
||||
if (runtime_pseudo_relocs_created == 0)
|
||||
{
|
||||
b = pe_create_runtime_relocator_reference (link_info.output_bfd);
|
||||
add_bfd_to_link (b, b->filename, &link_info);
|
||||
}
|
||||
runtime_pseudo_relocs_created++;
|
||||
}
|
||||
else if (addend != 0)
|
||||
einfo (_("%P%X%C: variable '%T' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details.\n"),
|
||||
s->owner, s, rel->address, sym->name);
|
||||
}
|
||||
|
||||
|
||||
@ -2753,8 +2753,8 @@ pe_dll_generate_implib (def_file *def, const char *impfilename, struct bfd_link_
|
||||
found = (filename_cmp (ex->string, ibfd->filename) == 0);
|
||||
}
|
||||
/* If it matched, we must open a fresh BFD for it (the original
|
||||
input BFD is still needed for the DLL's final link) and add
|
||||
it into the archive member chain. */
|
||||
input BFD is still needed for the DLL's final link) and add
|
||||
it into the archive member chain. */
|
||||
if (found)
|
||||
{
|
||||
bfd *newbfd = bfd_openr (ibfd->my_archive
|
||||
@ -2913,7 +2913,7 @@ pe_find_cdecl_alias_match (struct bfd_link_info *linfo, char *name)
|
||||
{
|
||||
h = bfd_link_hash_lookup (linfo->hash, kv->oname, FALSE, FALSE, FALSE);
|
||||
if (h->type == bfd_link_hash_undefined)
|
||||
goto return_h;
|
||||
goto return_h;
|
||||
}
|
||||
|
||||
if (lname[0] == '?')
|
||||
@ -2922,7 +2922,7 @@ pe_find_cdecl_alias_match (struct bfd_link_info *linfo, char *name)
|
||||
if (at || lname[0] == '@')
|
||||
{
|
||||
if (lname[0] == '@')
|
||||
{
|
||||
{
|
||||
if (pe_details->underscored)
|
||||
lname[0] = '_';
|
||||
else
|
||||
@ -2938,7 +2938,7 @@ pe_find_cdecl_alias_match (struct bfd_link_info *linfo, char *name)
|
||||
}
|
||||
}
|
||||
if (at)
|
||||
*strchr (lname, '@') = 0;
|
||||
*strchr (lname, '@') = 0;
|
||||
key.key = lname;
|
||||
kv = bsearch (&key, udef_table, undef_count,
|
||||
sizeof (struct key_value), undef_sort_cmp);
|
||||
@ -2979,7 +2979,7 @@ pe_find_cdecl_alias_match (struct bfd_link_info *linfo, char *name)
|
||||
{
|
||||
h = bfd_link_hash_lookup (linfo->hash, kv->oname, FALSE, FALSE, FALSE);
|
||||
if (h->type == bfd_link_hash_undefined)
|
||||
goto return_h;
|
||||
goto return_h;
|
||||
}
|
||||
|
||||
return_NULL:
|
||||
@ -2991,7 +2991,7 @@ pe_find_cdecl_alias_match (struct bfd_link_info *linfo, char *name)
|
||||
|
||||
static bfd_boolean
|
||||
pe_undef_count (struct bfd_link_hash_entry *h ATTRIBUTE_UNUSED,
|
||||
void *inf ATTRIBUTE_UNUSED)
|
||||
void *inf ATTRIBUTE_UNUSED)
|
||||
{
|
||||
if (h->type == bfd_link_hash_undefined)
|
||||
undef_count++;
|
||||
@ -3009,7 +3009,7 @@ pe_undef_fill (struct bfd_link_hash_entry *h, void *inf ATTRIBUTE_UNUSED)
|
||||
at = strchr (udef_table[undef_count].key
|
||||
+ (udef_table[undef_count].key[0] == '@'), '@');
|
||||
if (at)
|
||||
at[1] = 0;
|
||||
at[1] = 0;
|
||||
udef_table[undef_count].oname = h->root.string;
|
||||
undef_count++;
|
||||
}
|
||||
@ -3073,7 +3073,7 @@ pe_process_import_defs (bfd *output_bfd, struct bfd_link_info *linfo)
|
||||
for (i = 0; i < pe_def_file->num_imports && imp[i].module != module; i++)
|
||||
;
|
||||
if (i >= pe_def_file->num_imports)
|
||||
continue;
|
||||
continue;
|
||||
|
||||
dll_filename = module->name;
|
||||
dll_symname = xstrdup (module->name);
|
||||
@ -3117,7 +3117,7 @@ pe_process_import_defs (bfd *output_bfd, struct bfd_link_info *linfo)
|
||||
blhe = bfd_link_hash_lookup (linfo->hash, name,
|
||||
FALSE, FALSE, FALSE);
|
||||
if (blhe)
|
||||
is_undef = (blhe->type == bfd_link_hash_undefined);
|
||||
is_undef = (blhe->type == bfd_link_hash_undefined);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3131,7 +3131,7 @@ pe_process_import_defs (bfd *output_bfd, struct bfd_link_info *linfo)
|
||||
blhe = pe_find_cdecl_alias_match (linfo, name);
|
||||
include_jmp_stub = TRUE;
|
||||
if (blhe)
|
||||
is_undef = (blhe->type == bfd_link_hash_undefined);
|
||||
is_undef = (blhe->type == bfd_link_hash_undefined);
|
||||
}
|
||||
|
||||
free (name);
|
||||
@ -3380,26 +3380,26 @@ pe_implied_import_dll (const char *filename)
|
||||
/* Skip unwanted symbols, which are
|
||||
exported in buggy auto-import releases. */
|
||||
if (! CONST_STRNEQ (erva + name_rva, "__nm_"))
|
||||
{
|
||||
{
|
||||
int is_dup = 0;
|
||||
/* is_data is true if the address is in the data, rdata or bss
|
||||
/* is_data is true if the address is in the data, rdata or bss
|
||||
segment. */
|
||||
is_data =
|
||||
is_data =
|
||||
(func_rva >= data_start && func_rva < data_end)
|
||||
|| (func_rva >= rdata_start && func_rva < rdata_end)
|
||||
|| (func_rva >= bss_start && func_rva < bss_end);
|
||||
|
||||
imp = def_file_add_import (pe_def_file, erva + name_rva,
|
||||
dllname, i, NULL, NULL, &is_dup);
|
||||
/* Mark symbol type. */
|
||||
if (!is_dup)
|
||||
imp->data = is_data;
|
||||
/* Mark symbol type. */
|
||||
if (!is_dup)
|
||||
imp->data = is_data;
|
||||
|
||||
if (pe_dll_extra_pe_debug)
|
||||
if (pe_dll_extra_pe_debug)
|
||||
printf ("%s dll-name: %s sym: %s addr: 0x%lx %s\n",
|
||||
__FUNCTION__, dllname, erva + name_rva,
|
||||
(unsigned long) func_rva, is_data ? "(data)" : "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@ -3504,6 +3504,6 @@ bfd_boolean
|
||||
pe_bfd_is_dll (bfd *abfd)
|
||||
{
|
||||
return (bfd_get_format (abfd) == bfd_object
|
||||
&& obj_pe (abfd)
|
||||
&& pe_data (abfd)->dll);
|
||||
&& obj_pe (abfd)
|
||||
&& pe_data (abfd)->dll);
|
||||
}
|
||||
|
@ -1014,7 +1014,7 @@ plugin_load_plugins (void)
|
||||
if (!onloadfn)
|
||||
onloadfn = (ld_plugin_onload) dlsym (curplug->dlhandle, "_onload");
|
||||
if (!onloadfn)
|
||||
einfo (_("%P%F: %s: error loading plugin: %s\n"),
|
||||
einfo (_("%P%F: %s: error loading plugin: %s\n"),
|
||||
curplug->name, dlerror ());
|
||||
set_tv_plugin_args (curplug, &my_tv[tv_header_size]);
|
||||
called_plugin = curplug;
|
||||
|
@ -239,7 +239,7 @@ POTFILES: POTFILES.in
|
||||
posrcprefix="../"; \
|
||||
fi; \
|
||||
rm -f $@-t $@ \
|
||||
&& (sed -e '/^#/d' -e '/^[ ]*$$/d' \
|
||||
&& (sed -e '/^#/d' -e '/^[ ]*$$/d' \
|
||||
-e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
|
||||
| sed -e '$$s/\\$$//') > $@-t \
|
||||
&& chmod a-w $@-t \
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -4,7 +4,7 @@
|
||||
# specified by the -H option.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -67,7 +67,7 @@ SECTIONS
|
||||
.loader : {
|
||||
*(.loader)
|
||||
}
|
||||
|
||||
|
||||
.debug : {
|
||||
*(.debug)
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
# defaults are appropriate for an Alpha running OSF/1.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Tristan Gingold <gingold@adacore.com>.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -54,9 +54,9 @@
|
||||
# INPUT_FILES - INPUT command of files to always include
|
||||
# WRITABLE_RODATA - if set, the .rodata section should be writable
|
||||
# INIT_START, INIT_END - statements just before and just after
|
||||
# combination of .init sections.
|
||||
# combination of .init sections.
|
||||
# FINI_START, FINI_END - statements just before and just after
|
||||
# combination of .fini sections.
|
||||
# combination of .fini sections.
|
||||
# STACK_ADDR - start of a .stack section.
|
||||
# OTHER_SYMBOLS - symbols to place right at the end of the script.
|
||||
# ETEXT_NAME - name of a symbol for the end of the text section,
|
||||
@ -427,13 +427,13 @@ cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
.rel.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;/__rela_iplt_/d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;/__rela_iplt_/d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
}
|
||||
.rela.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;/__rel_iplt_/d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;/__rel_iplt_/d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
}
|
||||
EOF
|
||||
@ -463,10 +463,10 @@ emit_dyn()
|
||||
cat ldscripts/dyntmp.$$
|
||||
else
|
||||
if test -z "${NO_REL_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d;/^[ ]*\.rela\./d;/__rela_iplt_/d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d;/^[ ]*\.rela\./d;/__rela_iplt_/d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
if test -z "${NO_RELA_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d;/^[ ]*\.rel\./d;/__rel_iplt_/d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d;/^[ ]*\.rel\./d;/__rel_iplt_/d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
fi
|
||||
rm -f ldscripts/dyntmp.$$
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -4,7 +4,7 @@
|
||||
# that apply; only BPABI-specific variables will be noted here.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -52,7 +52,7 @@ if test -z "${NO_SMALL_DATA}"; then
|
||||
SDATA="/* We want the small data sections together, so single-instruction offsets
|
||||
can access them all, and initialized data all before uninitialized, so
|
||||
we can shorten the on-disk segment size. */
|
||||
.sdata ${RELOCATING-0} :
|
||||
.sdata ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${SDATA_START_SYMBOLS}}
|
||||
*(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
|
||||
@ -88,7 +88,7 @@ FINI_ARRAY=".fini_array ${RELOCATING-0} :
|
||||
KEEP (*(.fini_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_end = .);}}
|
||||
}"
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
@ -166,23 +166,23 @@ ${RELOCATING- /* For some reason, the Solaris linker makes bad executables
|
||||
at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld
|
||||
bug. But for now assigning the zero vmas works. */}
|
||||
|
||||
/* ARM's proprietary toolchain generate these symbols to match the start
|
||||
/* ARM's proprietary toolchain generate these symbols to match the start
|
||||
and end of particular sections of the image. SymbianOS uses these
|
||||
symbols. We provide them for compatibility with ARM's toolchains.
|
||||
These symbols should be bound locally; each shared object may define
|
||||
its own version of these symbols. */
|
||||
|
||||
symbols. We provide them for compatibility with ARM's toolchains.
|
||||
These symbols should be bound locally; each shared object may define
|
||||
its own version of these symbols. */
|
||||
|
||||
VERSION
|
||||
{
|
||||
{
|
||||
/* Give these a dummy version to work around linker lameness.
|
||||
The name used shouldn't matter as these are all local symbols. */
|
||||
__GNU {
|
||||
local:
|
||||
__GNU {
|
||||
local:
|
||||
Image\$\$ER_RO\$\$Base;
|
||||
Image\$\$ER_RO\$\$Limit;
|
||||
SHT\$\$INIT_ARRAY\$\$Base;
|
||||
SHT\$\$INIT_ARRAY\$\$Limit;
|
||||
.ARM.exidx\$\$Base;
|
||||
.ARM.exidx\$\$Base;
|
||||
.ARM.exidx\$\$Limit;
|
||||
};
|
||||
}
|
||||
@ -203,8 +203,8 @@ SECTIONS
|
||||
|
||||
EOF
|
||||
cat <<EOF
|
||||
.init ${RELOCATING-0} :
|
||||
{
|
||||
.init ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${INIT_START}}
|
||||
KEEP (*(.init))
|
||||
${RELOCATING+${INIT_END}}
|
||||
@ -393,13 +393,13 @@ cat <<EOF
|
||||
.rel.dyn 0 :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
|
||||
cat <<EOF
|
||||
}
|
||||
.rela.dyn 0 :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
|
||||
cat <<EOF
|
||||
}
|
||||
EOF
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Based on i386coff.sc by Ian Taylor <ian@cygnus.com>.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -49,9 +49,9 @@ SECTIONS
|
||||
*(.glue_7t)
|
||||
*(.glue_7)
|
||||
*(.rdata)
|
||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
||||
LONG (-1); *(.ctors); *(.ctor); LONG (0); }
|
||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||
LONG (-1); *(.dtors); *(.dtor); LONG (0); }
|
||||
*(.fini)
|
||||
${RELOCATING+ etext = .;}
|
||||
@ -60,13 +60,13 @@ SECTIONS
|
||||
.data ${RELOCATING+${DATA_ADDR-0x40000 + (ALIGN(0x8) & 0xfffc0fff)}} : {
|
||||
${RELOCATING+ __data_start__ = . ;}
|
||||
*(.data*)
|
||||
|
||||
|
||||
${RELOCATING+*(.gcc_exc*)}
|
||||
${RELOCATING+___EH_FRAME_BEGIN__ = . ;}
|
||||
${RELOCATING+*(.eh_fram*)}
|
||||
${RELOCATING+___EH_FRAME_END__ = . ;}
|
||||
${RELOCATING+LONG(0);}
|
||||
|
||||
|
||||
${RELOCATING+ __data_end__ = . ;}
|
||||
${RELOCATING+ edata = .;}
|
||||
${RELOCATING+ _edata = .;}
|
||||
@ -74,7 +74,7 @@ SECTIONS
|
||||
${CONSTRUCTING+${RELOCATING-$CTOR}}
|
||||
${CONSTRUCTING+${RELOCATING-$DTOR}}
|
||||
.bss ${RELOCATING+ ALIGN(0x8)} :
|
||||
{
|
||||
{
|
||||
${RELOCATING+ __bss_start__ = . ;}
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
@ -85,7 +85,7 @@ SECTIONS
|
||||
${RELOCATING+ _end = .;}
|
||||
${RELOCATING+ __end__ = .;}
|
||||
|
||||
.stab 0 ${RELOCATING+(NOLOAD)} :
|
||||
.stab 0 ${RELOCATING+(NOLOAD)} :
|
||||
{
|
||||
[ .stab ]
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -129,7 +129,7 @@ SECTIONS
|
||||
${RELOCATING+ *libc.a:*(.progmem.data)}
|
||||
|
||||
${RELOCATING+ *(.progmem.*)}
|
||||
|
||||
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
|
||||
/* For code that needs to reside in the lower 128k progmem. */
|
||||
@ -331,7 +331,7 @@ cat <<EOF
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
.comment 0 : { *(.comment) }
|
||||
.note.gnu.build-id : { *(.note.gnu.build-id) }
|
||||
EOF
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -22,7 +22,7 @@ SECTIONS
|
||||
${CONSTRUCTING+ __Stext = .;}
|
||||
${RELOCATING+*(.startup)}
|
||||
*(.text)
|
||||
${CONSTRUCTING+__start = DEFINED(__start) ? __start :
|
||||
${CONSTRUCTING+__start = DEFINED(__start) ? __start :
|
||||
DEFINED(_start) ? _start :
|
||||
DEFINED(start) ? start :
|
||||
DEFINED(.startup) ? .startup + 2 : 2;}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -45,7 +45,7 @@ SECTIONS
|
||||
${RELOCATING+ __.data.end = .};
|
||||
}
|
||||
.bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
|
||||
{
|
||||
{
|
||||
${RELOCATING+ __.bss.start = .};
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -54,9 +54,9 @@
|
||||
# INPUT_FILES - INPUT command of files to always include
|
||||
# WRITABLE_RODATA - if set, the .rodata section should be writable
|
||||
# INIT_START, INIT_END - statements just before and just after
|
||||
# combination of .init sections.
|
||||
# combination of .init sections.
|
||||
# FINI_START, FINI_END - statements just before and just after
|
||||
# combination of .fini sections.
|
||||
# combination of .fini sections.
|
||||
# STACK_ADDR - start of a .stack section.
|
||||
# OTHER_SYMBOLS - symbols to place right at the end of the script.
|
||||
# ETEXT_NAME - name of a symbol for the end of the text section,
|
||||
@ -429,13 +429,13 @@ cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
.rel.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;/__rela_iplt_/d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;/__rela_iplt_/d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
}
|
||||
.rela.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;/__rel_iplt_/d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;/__rel_iplt_/d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
}
|
||||
EOF
|
||||
@ -465,10 +465,10 @@ emit_dyn()
|
||||
cat ldscripts/dyntmp.$$
|
||||
else
|
||||
if test -z "${NO_REL_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d;/^[ ]*\.rela\./d;/__rela_iplt_/d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d;/^[ ]*\.rela\./d;/__rela_iplt_/d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
if test -z "${NO_RELA_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d;/^[ ]*\.rel\./d;/__rel_iplt_/d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d;/^[ ]*\.rel\./d;/__rel_iplt_/d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
fi
|
||||
rm -f ldscripts/dyntmp.$$
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Linker Script for National Semiconductor's CR16-ELF32.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -28,8 +28,8 @@ ${RELOCATING+ENTRY(${ENTRY})}
|
||||
/* Define memory regions. */
|
||||
MEMORY
|
||||
{
|
||||
rom : ORIGIN = 0x2, LENGTH = 3M
|
||||
ram : ORIGIN = 4M, LENGTH = 10M
|
||||
rom : ORIGIN = 0x2, LENGTH = 3M
|
||||
ram : ORIGIN = 4M, LENGTH = 10M
|
||||
}
|
||||
|
||||
/* Many sections come in three flavours. There is the 'real' section,
|
||||
@ -50,25 +50,25 @@ MEMORY
|
||||
SECTIONS
|
||||
{
|
||||
.init :
|
||||
{
|
||||
__INIT_START = .;
|
||||
{
|
||||
__INIT_START = .;
|
||||
KEEP (*(.init))
|
||||
__INIT_END = .;
|
||||
__INIT_END = .;
|
||||
} > rom
|
||||
|
||||
.fini :
|
||||
{
|
||||
__FINI_START = .;
|
||||
{
|
||||
__FINI_START = .;
|
||||
KEEP (*(.fini))
|
||||
__FINI_END = .;
|
||||
__FINI_END = .;
|
||||
} > rom
|
||||
|
||||
.jcr :
|
||||
{
|
||||
{
|
||||
KEEP (*(.jcr))
|
||||
} > rom
|
||||
|
||||
.text :
|
||||
.text :
|
||||
{
|
||||
__TEXT_START = .;
|
||||
*(.text) *(.text.*) *(.gnu.linkonce.t.*)
|
||||
@ -82,9 +82,9 @@ SECTIONS
|
||||
__RDATA_END = .;
|
||||
} > rom
|
||||
|
||||
.ctor ALIGN(4) :
|
||||
{
|
||||
__CTOR_START = .;
|
||||
.ctor ALIGN(4) :
|
||||
{
|
||||
__CTOR_START = .;
|
||||
/* The compiler uses crtbegin.o to find the start
|
||||
of the constructors, so we make sure it is
|
||||
first. Because this is a wildcard, it
|
||||
@ -105,17 +105,17 @@ SECTIONS
|
||||
KEEP (*(EXCLUDE_FILE (*crtend*.o) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
__CTOR_END = .;
|
||||
__CTOR_END = .;
|
||||
} > rom
|
||||
|
||||
.dtor ALIGN(4) :
|
||||
{
|
||||
__DTOR_START = .;
|
||||
.dtor ALIGN(4) :
|
||||
{
|
||||
__DTOR_START = .;
|
||||
KEEP (*crtbegin*.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend*.o) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
__DTOR_END = .;
|
||||
__DTOR_END = .;
|
||||
} > rom
|
||||
|
||||
.data :
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Linker Script for National Semiconductor's CR16C-ELF32.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -26,8 +26,8 @@ MEMORY
|
||||
{
|
||||
near_rom : ORIGIN = 0x4, LENGTH = 512K - 4
|
||||
near_ram : ORIGIN = 512K, LENGTH = 512K - 64K
|
||||
rom : ORIGIN = 1M, LENGTH = 3M
|
||||
ram : ORIGIN = 4M, LENGTH = 10M
|
||||
rom : ORIGIN = 1M, LENGTH = 3M
|
||||
ram : ORIGIN = 4M, LENGTH = 10M
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
@ -38,7 +38,7 @@ SECTIONS
|
||||
there. The alignment to 4 bytes is compatible for both the CR16C
|
||||
bus width (2 bytes) and CR16CPlus bus width (4 bytes). */
|
||||
|
||||
.text : { __TEXT_START = .; *(.text) __TEXT_END = .; } > rom
|
||||
.text : { __TEXT_START = .; *(.text) __TEXT_END = .; } > rom
|
||||
.rdata : { __RDATA_START = .; *(.rdata_4) *(.rdata_2) *(.rdata_1) __RDATA_END = .; } > near_rom
|
||||
.ctor ALIGN(4) : { __CTOR_LIST = .; *(.ctors) __CTOR_END = .; } > near_rom
|
||||
.dtor ALIGN(4) : { __DTOR_LIST = .; *(.dtors) __DTOR_END = .; } > near_rom
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Linker Script for National Semiconductor's CRX-ELF32.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -30,8 +30,8 @@ ${RELOCATING+ENTRY(${ENTRY})}
|
||||
/* Define memory regions. */
|
||||
MEMORY
|
||||
{
|
||||
rom : ORIGIN = 0x2, LENGTH = 3M
|
||||
ram : ORIGIN = 4M, LENGTH = 10M
|
||||
rom : ORIGIN = 0x2, LENGTH = 3M
|
||||
ram : ORIGIN = 4M, LENGTH = 10M
|
||||
}
|
||||
|
||||
/* Many sections come in three flavours. There is the 'real' section,
|
||||
@ -52,25 +52,25 @@ MEMORY
|
||||
SECTIONS
|
||||
{
|
||||
.init :
|
||||
{
|
||||
__INIT_START = .;
|
||||
{
|
||||
__INIT_START = .;
|
||||
KEEP (*(.init))
|
||||
__INIT_END = .;
|
||||
__INIT_END = .;
|
||||
} > rom
|
||||
|
||||
.fini :
|
||||
{
|
||||
__FINI_START = .;
|
||||
{
|
||||
__FINI_START = .;
|
||||
KEEP (*(.fini))
|
||||
__FINI_END = .;
|
||||
__FINI_END = .;
|
||||
} > rom
|
||||
|
||||
.jcr :
|
||||
{
|
||||
{
|
||||
KEEP (*(.jcr))
|
||||
} > rom
|
||||
|
||||
.text :
|
||||
.text :
|
||||
{
|
||||
__TEXT_START = .;
|
||||
*(.text) *(.text.*) *(.gnu.linkonce.t.*)
|
||||
@ -84,9 +84,9 @@ SECTIONS
|
||||
__RDATA_END = .;
|
||||
} > rom
|
||||
|
||||
.ctor ALIGN(4) :
|
||||
{
|
||||
__CTOR_START = .;
|
||||
.ctor ALIGN(4) :
|
||||
{
|
||||
__CTOR_START = .;
|
||||
/* The compiler uses crtbegin.o to find the start
|
||||
of the constructors, so we make sure it is
|
||||
first. Because this is a wildcard, it
|
||||
@ -99,7 +99,7 @@ SECTIONS
|
||||
|
||||
KEEP (*crtbegin.o(.ctors))
|
||||
KEEP (*crtbegin?.o(.ctors))
|
||||
|
||||
|
||||
/* We don't want to include the .ctor section from
|
||||
the crtend.o file until after the sorted ctors.
|
||||
The .ctor section from the crtend file contains the
|
||||
@ -108,18 +108,18 @@ SECTIONS
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
__CTOR_END = .;
|
||||
__CTOR_END = .;
|
||||
} > rom
|
||||
|
||||
.dtor ALIGN(4) :
|
||||
{
|
||||
__DTOR_START = .;
|
||||
.dtor ALIGN(4) :
|
||||
{
|
||||
__DTOR_START = .;
|
||||
KEEP (*crtbegin.o(.dtors))
|
||||
KEEP (*crtbegin?.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
__DTOR_END = .;
|
||||
__DTOR_END = .;
|
||||
} > rom
|
||||
|
||||
.data :
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -7,8 +7,8 @@
|
||||
HEAP_SECTION_MSP430=" "
|
||||
HEAP_MEMORY_MSP430=" "
|
||||
|
||||
if test ${GOT_HEAP_MSP-0} -ne 0
|
||||
then
|
||||
if test ${GOT_HEAP_MSP-0} -ne 0
|
||||
then
|
||||
HEAP_SECTION_MSP430=".heap ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+ PROVIDE (__heap_data_start = .) ; }
|
||||
@ -18,7 +18,7 @@ HEAP_SECTION_MSP430=".heap ${RELOCATING-0} :
|
||||
${RELOCATING+ PROVIDE (__heap_bottom = .) ; }
|
||||
${RELOCATING+ PROVIDE (__heap_top = ${HEAP_START} + ${HEAP_LENGTH}) ; }
|
||||
} ${RELOCATING+ > heap}"
|
||||
HEAP_MEMORY_MSP430="heap(rwx) : ORIGIN = $HEAP_START, LENGTH = $HEAP_LENGTH"
|
||||
HEAP_MEMORY_MSP430="heap(rwx) : ORIGIN = $HEAP_START, LENGTH = $HEAP_LENGTH"
|
||||
fi
|
||||
|
||||
|
||||
@ -34,9 +34,9 @@ OUTPUT_ARCH(${ARCH})
|
||||
|
||||
MEMORY
|
||||
{
|
||||
text (rx) : ORIGIN = $ROM_START, LENGTH = $ROM_SIZE
|
||||
data (rwx) : ORIGIN = $RAM_START, LENGTH = $RAM_SIZE
|
||||
vectors (rw) : ORIGIN = 0xffe0, LENGTH = 0x20
|
||||
text (rx) : ORIGIN = $ROM_START, LENGTH = $ROM_SIZE
|
||||
data (rwx) : ORIGIN = $RAM_START, LENGTH = $RAM_SIZE
|
||||
vectors (rw) : ORIGIN = 0xffe0, LENGTH = 0x20
|
||||
bootloader(rx) : ORIGIN = 0x0c00, LENGTH = 1K
|
||||
infomem(rx) : ORIGIN = 0x1000, LENGTH = 256
|
||||
infomemnobits(rx) : ORIGIN = 0x1000, LENGTH = 256
|
||||
@ -53,7 +53,7 @@ SECTIONS
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
*(.bootloader.*)
|
||||
} ${RELOCATING+ > bootloader}
|
||||
|
||||
|
||||
/* Information memory. */
|
||||
.infomem ${RELOCATING-0} :
|
||||
{
|
||||
@ -270,7 +270,7 @@ SECTIONS
|
||||
|
||||
__romdatastart = LOADADDR(.data);
|
||||
__romdatacopysize = SIZEOF(.data);
|
||||
|
||||
|
||||
.bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
|
||||
{
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
@ -304,9 +304,9 @@ SECTIONS
|
||||
|
||||
/* Stabs for profiling information*/
|
||||
.profiler 0 : { *(.profiler) }
|
||||
|
||||
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -17,7 +17,7 @@ OUTPUT_ARCH(${ARCH})
|
||||
MEMORY
|
||||
{
|
||||
text (rx) : ORIGIN = $ROM_START, LENGTH = $ROM_SIZE
|
||||
data (rwx) : ORIGIN = $RAM_START, LENGTH = $RAM_SIZE
|
||||
data (rwx) : ORIGIN = $RAM_START, LENGTH = $RAM_SIZE
|
||||
vectors (rw) : ORIGIN = 0xffe0, LENGTH = 0x20
|
||||
}
|
||||
|
||||
@ -137,7 +137,7 @@ SECTIONS
|
||||
} ${RELOCATING+ > text}
|
||||
|
||||
.data ${RELOCATING-0} :
|
||||
{
|
||||
{
|
||||
${RELOCATING+ PROVIDE (__data_start = .) ; }
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
*(.data)
|
||||
@ -146,10 +146,10 @@ SECTIONS
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
${RELOCATING+ _edata = . ; }
|
||||
} ${RELOCATING+ > data ${RELOCATING+AT> text}}
|
||||
|
||||
|
||||
__romdatastart = LOADADDR(.data);
|
||||
__romdatacopysize = SIZEOF(.data);
|
||||
|
||||
|
||||
.bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
|
||||
{
|
||||
${RELOCATING+. = ALIGN(2);}
|
||||
@ -193,14 +193,14 @@ SECTIONS
|
||||
}
|
||||
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
|
||||
|
||||
EOF
|
||||
|
||||
. $srcdir/scripttempl/DWARF.sc
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -29,15 +29,15 @@
|
||||
# DATA_PLT - .plt should be in data segment, not text segment.
|
||||
# BSS_PLT - .plt should be in bss segment
|
||||
# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
|
||||
# start address of shared library.
|
||||
# INPUT_FILES - INPUT command of files to always include
|
||||
# WRITABLE_RODATA - if set, the .rodata section should be writable
|
||||
# INIT_START, INIT_END - statements just before and just after
|
||||
# combination of .init sections.
|
||||
# combination of .init sections.
|
||||
# FINI_START, FINI_END - statements just before and just after
|
||||
# combination of .fini sections.
|
||||
# combination of .fini sections.
|
||||
# STACK_ADDR - start of a .stack section.
|
||||
# OTHER_SYMBOLS - symbols to place right at the end of the script.
|
||||
#
|
||||
@ -104,7 +104,7 @@ FINI_ARRAY=".fini_array ${RELOCATING-0} :
|
||||
KEEP (*(.fini_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (__fini_array_end = .);}}
|
||||
}"
|
||||
CTOR=".ctors ALIGN(4) :
|
||||
CTOR=".ctors ALIGN(4) :
|
||||
{
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
@ -191,11 +191,11 @@ SECTIONS
|
||||
${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0};}}
|
||||
${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0};}}
|
||||
${CREATE_SHLIB-${INTERP}}
|
||||
|
||||
|
||||
${INITIAL_READONLY_SECTIONS}
|
||||
|
||||
.init ALIGN(4) :
|
||||
{
|
||||
.init ALIGN(4) :
|
||||
{
|
||||
${RELOCATING+${INIT_START}}
|
||||
KEEP (*(.init))
|
||||
${RELOCATING+${INIT_END}}
|
||||
@ -209,24 +209,24 @@ SECTIONS
|
||||
*(.gnu.warning)
|
||||
${RELOCATING+${OTHER_TEXT_SECTIONS}}
|
||||
} =${NOP-0}
|
||||
|
||||
|
||||
${RELOCATING+${CTOR}}
|
||||
${RELOCATING+${DTOR}}
|
||||
|
||||
|
||||
.fini ALIGN(4) :
|
||||
{
|
||||
${RELOCATING+${FINI_START}}
|
||||
KEEP (*(.fini))
|
||||
${RELOCATING+${FINI_END}}
|
||||
} =${NOP-0}
|
||||
|
||||
|
||||
${RELOCATING+PROVIDE (__etext = .);}
|
||||
${RELOCATING+PROVIDE (_etext = .);}
|
||||
${RELOCATING+PROVIDE (etext = .);}
|
||||
|
||||
|
||||
${WRITABLE_RODATA-${RODATA}}
|
||||
.rodata1 ALIGN(4) : { *(.rodata1) }
|
||||
|
||||
|
||||
ExportTable ALIGN(4) : { KEEP (*(ExportTable)) }
|
||||
.eh_frame_hdr ALIGN(4) : { *(.eh_frame_hdr) } :text
|
||||
|
||||
@ -252,7 +252,7 @@ SECTIONS
|
||||
*(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
|
||||
${CONSTRUCTING+SORT(CONSTRUCTORS)}
|
||||
} :data
|
||||
|
||||
|
||||
.data1 ALIGN(4) : { *(.data1) } :data
|
||||
.tdata ALIGN(4) : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) } :data
|
||||
.tbss ALIGN(4) : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} } :data
|
||||
@ -331,13 +331,13 @@ cat <<EOF
|
||||
.rel.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
|
||||
cat <<EOF
|
||||
}
|
||||
.rela.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
|
||||
cat <<EOF
|
||||
}
|
||||
EOF
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -16,37 +16,37 @@ OUTPUT_ARCH(${ARCH})
|
||||
${RELOCATING+ENTRY ("_start")}
|
||||
MEMORY
|
||||
{
|
||||
|
||||
vectarea : o =0x00000, l = 0x0300
|
||||
|
||||
|
||||
vectarea : o =0x00000, l = 0x0300
|
||||
|
||||
introm : o = 0x00400, l = 0x16000
|
||||
/* The stack starts at the top of main ram. */
|
||||
|
||||
|
||||
dram : o = 0x8000 , l = 0xffff
|
||||
/* At the very top of the address space is the 8-bit area. */
|
||||
|
||||
ldata : o =0x4000 ,l = 0x0200
|
||||
|
||||
ldata : o =0x4000 ,l = 0x0200
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.init :
|
||||
{
|
||||
*(.init)
|
||||
} ${RELOCATING+ >introm}
|
||||
|
||||
{
|
||||
*(.init)
|
||||
} ${RELOCATING+ >introm}
|
||||
|
||||
.text :
|
||||
{
|
||||
*(.rodata)
|
||||
*(.rodata)
|
||||
*(.text.*)
|
||||
*(.text)
|
||||
${RELOCATING+ _etext = . ; }
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > introm}
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
|
||||
|
||||
${RELOCATING+ _edata = . ; }
|
||||
} ${RELOCATING+ > dram}
|
||||
|
||||
@ -58,16 +58,16 @@ SECTIONS
|
||||
${RELOCATING+ _end = . ; }
|
||||
} ${RELOCATING+ > dram}
|
||||
|
||||
.ldata :
|
||||
{
|
||||
*(.ldata)
|
||||
} ${RELOCATING+ > ldata}
|
||||
.ldata :
|
||||
{
|
||||
*(.ldata)
|
||||
} ${RELOCATING+ > ldata}
|
||||
|
||||
|
||||
.vects :
|
||||
{
|
||||
*(.vects)
|
||||
} ${RELOCATING+ > vectarea}
|
||||
|
||||
.vects :
|
||||
{
|
||||
*(.vects)
|
||||
} ${RELOCATING+ > vectarea}
|
||||
|
||||
}
|
||||
EOF
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -16,39 +16,39 @@ OUTPUT_ARCH(${ARCH})
|
||||
${RELOCATING+ENTRY ("_start")}
|
||||
MEMORY
|
||||
{
|
||||
vectarea : o =0xc00000, l = 0x0300
|
||||
|
||||
vectarea : o =0xc00000, l = 0x0300
|
||||
|
||||
introm : o = 0xc00300, l = 0x16000
|
||||
/* The stack starts at the top of main ram. */
|
||||
|
||||
|
||||
dram : o = 0x8000 , l = 0xffff
|
||||
/* At the very top of the address space is the 8-bit area. */
|
||||
|
||||
ldata : o =0x4000 ,l = 0x0200
|
||||
|
||||
ldata : o =0x4000 ,l = 0x0200
|
||||
}
|
||||
SECTIONS
|
||||
{
|
||||
/*.vects :
|
||||
{
|
||||
*(.vects)
|
||||
} ${RELOCATING+ > vectarea} */
|
||||
{
|
||||
*(.vects)
|
||||
} ${RELOCATING+ > vectarea} */
|
||||
.init :
|
||||
{
|
||||
*(.init)
|
||||
} ${RELOCATING+ >introm}
|
||||
|
||||
{
|
||||
*(.init)
|
||||
} ${RELOCATING+ >introm}
|
||||
|
||||
.text :
|
||||
{
|
||||
*(.rodata)
|
||||
*(.rodata)
|
||||
*(.text.*)
|
||||
*(.text)
|
||||
${RELOCATING+ _etext = . ; }
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > introm}
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
|
||||
|
||||
${RELOCATING+ _edata = . ; }
|
||||
} ${RELOCATING+ > dram}
|
||||
|
||||
@ -60,17 +60,14 @@ SECTIONS
|
||||
${RELOCATING+ _end = . ; }
|
||||
} ${RELOCATING+ > dram}
|
||||
|
||||
.ldata :
|
||||
{
|
||||
*(.ldata)
|
||||
} ${RELOCATING+ > ldata}
|
||||
|
||||
|
||||
.vects :
|
||||
{
|
||||
*(.vects)
|
||||
} ${RELOCATING+ > vectarea}
|
||||
|
||||
.ldata :
|
||||
{
|
||||
*(.ldata)
|
||||
} ${RELOCATING+ > ldata}
|
||||
|
||||
.vects :
|
||||
{
|
||||
*(.vects)
|
||||
} ${RELOCATING+ > vectarea}
|
||||
}
|
||||
EOF
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -16,39 +16,39 @@ OUTPUT_ARCH(${ARCH})
|
||||
${RELOCATING+ENTRY ("_start")}
|
||||
MEMORY
|
||||
{
|
||||
vectarea : o =0xc00000, l = 0x0300
|
||||
|
||||
vectarea : o =0xc00000, l = 0x0300
|
||||
|
||||
introm : o = 0xc00300, l = 0x16000
|
||||
/* The stack starts at the top of main ram. */
|
||||
|
||||
|
||||
dram : o = 0x8000 , l = 0xffff
|
||||
/* At the very top of the address space is the 8-bit area. */
|
||||
|
||||
ldata : o =0x4000 ,l = 0x0200
|
||||
|
||||
ldata : o =0x4000 ,l = 0x0200
|
||||
}
|
||||
SECTIONS
|
||||
{
|
||||
/*.vects :
|
||||
{
|
||||
*(.vects)
|
||||
} ${RELOCATING+ > vectarea} */
|
||||
{
|
||||
*(.vects)
|
||||
} ${RELOCATING+ > vectarea} */
|
||||
.init :
|
||||
{
|
||||
*(.init)
|
||||
} ${RELOCATING+ >introm}
|
||||
|
||||
{
|
||||
*(.init)
|
||||
} ${RELOCATING+ >introm}
|
||||
|
||||
.text :
|
||||
{
|
||||
*(.rodata)
|
||||
*(.rodata)
|
||||
*(.text.*)
|
||||
*(.text)
|
||||
${RELOCATING+ _etext = . ; }
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > introm}
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
|
||||
|
||||
${RELOCATING+ _edata = . ; }
|
||||
} ${RELOCATING+ > dram}
|
||||
|
||||
@ -60,14 +60,14 @@ SECTIONS
|
||||
${RELOCATING+ _end = . ; }
|
||||
} ${RELOCATING+ > dram}
|
||||
|
||||
.ldata :
|
||||
{
|
||||
*(.ldata)
|
||||
} ${RELOCATING+ > ldata}
|
||||
.ldata :
|
||||
{
|
||||
*(.ldata)
|
||||
} ${RELOCATING+ > ldata}
|
||||
|
||||
.vects :
|
||||
{
|
||||
*(.vects)
|
||||
} ${RELOCATING+ > vectarea}
|
||||
.vects :
|
||||
{
|
||||
*(.vects)
|
||||
} ${RELOCATING+ > vectarea}
|
||||
}
|
||||
EOF
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -45,15 +45,15 @@
|
||||
# NO_RELA_RELOCS - Don't include .rela.* sections in script
|
||||
# NON_ALLOC_DYN - Place dynamic sections after data segment.
|
||||
# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
|
||||
# start address of shared library.
|
||||
# INPUT_FILES - INPUT command of files to always include
|
||||
# WRITABLE_RODATA - if set, the .rodata section should be writable
|
||||
# INIT_START, INIT_END - statements just before and just after
|
||||
# combination of .init sections.
|
||||
# combination of .init sections.
|
||||
# FINI_START, FINI_END - statements just before and just after
|
||||
# combination of .fini sections.
|
||||
# combination of .fini sections.
|
||||
# STACK_ADDR - start of a .stack section.
|
||||
# OTHER_SYMBOLS - symbols to place right at the end of the script.
|
||||
# ETEXT_NAME - name of a symbol for the end of the text section,
|
||||
@ -147,7 +147,7 @@ if test -z "${NO_SMALL_DATA}"; then
|
||||
SDATA="/* We want the small data sections together, so single-instruction offsets
|
||||
can access them all, and initialized data all before uninitialized, so
|
||||
we can shorten the on-disk segment size. */
|
||||
.sdata ${RELOCATING-0} :
|
||||
.sdata ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${SDATA_START_SYMBOLS}}
|
||||
${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
|
||||
@ -219,7 +219,7 @@ FINI_ARRAY=".fini_array ${RELOCATING-0} :
|
||||
KEEP (*(.fini_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_end = .);}}
|
||||
}"
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
@ -359,7 +359,7 @@ cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
.rel.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
}
|
||||
.rel.ifunc.dyn ${RELOCATING-0} :
|
||||
@ -369,7 +369,7 @@ cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
.rela.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
}
|
||||
.rela.ifunc.dyn ${RELOCATING-0} :
|
||||
@ -390,18 +390,18 @@ if test -z "${NON_ALLOC_DYN}"; then
|
||||
cat ldscripts/dyntmp.$$
|
||||
else
|
||||
if test -z "${NO_REL_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
if test -z "${NO_RELA_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
fi
|
||||
rm -f ldscripts/dyntmp.$$
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
.init ${RELOCATING-0} :
|
||||
{
|
||||
.init ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${INIT_START}}
|
||||
KEEP (*(.init))
|
||||
${RELOCATING+${INIT_END}}
|
||||
@ -524,10 +524,10 @@ if test -n "${NON_ALLOC_DYN}"; then
|
||||
cat ldscripts/dyntmp.$$
|
||||
else
|
||||
if test -z "${NO_REL_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
if test -z "${NO_RELA_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
fi
|
||||
rm -f ldscripts/dyntmp.$$
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -31,15 +31,15 @@
|
||||
# DATA_PLT - .plt should be in data segment, not text segment.
|
||||
# BSS_PLT - .plt should be in bss segment
|
||||
# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
|
||||
# start address of shared library.
|
||||
# INPUT_FILES - INPUT command of files to always include
|
||||
# WRITABLE_RODATA - if set, the .rodata section should be writable
|
||||
# INIT_START, INIT_END - statements just before and just after
|
||||
# combination of .init sections.
|
||||
# combination of .init sections.
|
||||
# FINI_START, FINI_END - statements just before and just after
|
||||
# combination of .fini sections.
|
||||
# combination of .fini sections.
|
||||
# STACK_ADDR - start of a .stack section.
|
||||
# OTHER_SYMBOLS - symbols to place right at the end of the script.
|
||||
#
|
||||
@ -95,7 +95,7 @@ if test -z "${NO_SMALL_DATA}"; then
|
||||
SDATA="/* We want the small data sections together, so single-instruction offsets
|
||||
can access them all, and initialized data all before uninitialized, so
|
||||
we can shorten the on-disk segment size. */
|
||||
.sdata ${RELOCATING-0} :
|
||||
.sdata ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${SDATA_START_SYMBOLS}}
|
||||
*(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
|
||||
@ -226,13 +226,13 @@ cat <<EOF
|
||||
.rel.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
|
||||
cat <<EOF
|
||||
}
|
||||
.rela.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
|
||||
cat <<EOF
|
||||
}
|
||||
EOF
|
||||
|
@ -26,15 +26,15 @@
|
||||
# DATA_PLT - .plt should be in data segment, not text segment.
|
||||
# BSS_PLT - .plt should be in bss segment
|
||||
# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
|
||||
# start address of shared library.
|
||||
# INPUT_FILES - INPUT command of files to always include
|
||||
# WRITABLE_RODATA - if set, the .rodata section should be writable
|
||||
# INIT_START, INIT_END - statements just before and just after
|
||||
# combination of .init sections.
|
||||
# combination of .init sections.
|
||||
# FINI_START, FINI_END - statements just before and just after
|
||||
# combination of .fini sections.
|
||||
# combination of .fini sections.
|
||||
# STACK_ADDR - start of a .stack section.
|
||||
# OTHER_END_SYMBOLS - symbols to place right at the end of the script.
|
||||
#
|
||||
@ -103,7 +103,7 @@ if test -z "${NO_SMALL_DATA}"; then
|
||||
SDATA="/* We want the small data sections together, so single-instruction offsets
|
||||
can access them all, and initialized data all before uninitialized, so
|
||||
we can shorten the on-disk segment size. */
|
||||
.sdata ${RELOCATING-0} :
|
||||
.sdata ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${SDATA_START_SYMBOLS}}
|
||||
*(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
|
||||
@ -118,7 +118,7 @@ if test -z "${NO_SMALL_DATA}"; then
|
||||
REL_SBSS2=".rel.sbss2 ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }
|
||||
.rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }"
|
||||
fi
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
@ -238,13 +238,13 @@ cat <<EOF
|
||||
.rel.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
|
||||
cat <<EOF
|
||||
}
|
||||
.rela.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
|
||||
cat <<EOF
|
||||
}
|
||||
EOF
|
||||
@ -254,8 +254,8 @@ cat <<EOF
|
||||
.rela.plt ${RELOCATING-0} : { *(.rela.plt) }
|
||||
${OTHER_PLT_RELOC_SECTIONS}
|
||||
|
||||
.init ${RELOCATING-0} :
|
||||
{
|
||||
.init ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${INIT_START}}
|
||||
KEEP (*(.init))
|
||||
${RELOCATING+${INIT_END}}
|
||||
@ -382,17 +382,17 @@ cat <<EOF
|
||||
the setting from ldflags prevails. */
|
||||
.heap ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+ __start_heap = . ; }
|
||||
${RELOCATING+ . = . + (DEFINED(__HEAP_SIZE) ? __HEAP_SIZE : (DEFINED(__DEFAULT_HEAP_SIZE) ? __DEFAULT_HEAP_SIZE : 20k)) ; }
|
||||
${RELOCATING+ __end_heap = . ; }
|
||||
${RELOCATING+ __start_heap = . ; }
|
||||
${RELOCATING+ . = . + (DEFINED(__HEAP_SIZE) ? __HEAP_SIZE : (DEFINED(__DEFAULT_HEAP_SIZE) ? __DEFAULT_HEAP_SIZE : 20k)) ; }
|
||||
${RELOCATING+ __end_heap = . ; }
|
||||
}
|
||||
|
||||
${RELOCATING+. = ALIGN(0x8);}
|
||||
.stack ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+ __stack = . ; }
|
||||
${RELOCATING+ . = . + (DEFINED(__STACK_SIZE) ? __STACK_SIZE : (DEFINED(__DEFAULT_STACK_SIZE) ? __DEFAULT_STACK_SIZE : 64k)) ; }
|
||||
${RELOCATING+ __stack_top = . ; }
|
||||
${RELOCATING+ __stack = . ; }
|
||||
${RELOCATING+ . = . + (DEFINED(__STACK_SIZE) ? __STACK_SIZE : (DEFINED(__DEFAULT_STACK_SIZE) ? __DEFAULT_STACK_SIZE : 64k)) ; }
|
||||
${RELOCATING+ __stack_top = . ; }
|
||||
}
|
||||
|
||||
/* Stabs debugging sections. */
|
||||
|
@ -19,7 +19,7 @@ test -z "${ELFSIZE}" && ELFSIZE=32
|
||||
test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
|
||||
test "$LD_FLAG" = "N" && DATA_ADDR=.
|
||||
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -9,11 +9,11 @@ test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
|
||||
test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
|
||||
if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
|
||||
test "$LD_FLAG" = "N" && DATA_ADDR=.
|
||||
INTERP=".interp ${RELOCATING-0} : { *(.interp) }"
|
||||
PLT=".plt ${RELOCATING-0} : { *(.plt) }"
|
||||
INTERP=".interp ${RELOCATING-0} : { *(.interp) }"
|
||||
PLT=".plt ${RELOCATING-0} : { *(.plt) }"
|
||||
|
||||
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
@ -83,14 +83,14 @@ MEMORY
|
||||
There are other memory regions available on
|
||||
the TS3 (eg ROM, FLASH, etc) but these are not
|
||||
used by this script. */
|
||||
|
||||
|
||||
INSN : org = 0x01000000, len = 256K
|
||||
DATA : org = 0x02000000, len = 48K
|
||||
|
||||
/* This is a fake memory region at the top of the
|
||||
on-chip RAM, used as the start of the
|
||||
(descending) stack. */
|
||||
|
||||
|
||||
STACK : org = 0x0200BFFC, len = 4
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+ __CTOR_LIST__ = .; }
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
@ -206,7 +206,7 @@ EOF
|
||||
|
||||
. $srcdir/scripttempl/DWARF.sc
|
||||
|
||||
cat <<EOF
|
||||
cat <<EOF
|
||||
PROVIDE (__stack = ${STACK_START_ADDR});
|
||||
}
|
||||
EOF
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -199,7 +199,7 @@ EOF
|
||||
|
||||
. $srcdir/scripttempl/DWARF.sc
|
||||
|
||||
cat <<EOF
|
||||
cat <<EOF
|
||||
${ATTRS_SECTIONS}
|
||||
${OTHER_SECTIONS}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -18,7 +18,7 @@
|
||||
# .data section.
|
||||
# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
|
||||
# .bss section besides __bss_start.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
#
|
||||
# When adding sections, do note that the names of some sections are used
|
||||
# when specifying the start address of the next.
|
||||
@ -29,7 +29,7 @@ test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
|
||||
if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
|
||||
test "$LD_FLAG" = "N" && DATA_ADDR=.
|
||||
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+ PROVIDE (__CTOR_LIST__ = .); }
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
@ -57,7 +57,7 @@ VECTORS="
|
||||
Bootstrap 0x00c0
|
||||
Test 0xbfc0
|
||||
|
||||
In general, the vectors address is 0xffc0. This can be overriden
|
||||
In general, the vectors address is 0xffc0. This can be overriden
|
||||
with the '-defsym vectors_addr=0xbfc0' ld option.
|
||||
|
||||
Note: for the bootstrap mode, the interrupt vectors are at 0xbfc0 but
|
||||
@ -239,7 +239,7 @@ SECTIONS
|
||||
${RELOCATING+*(.rela.gnu.linkonce.s.*)}
|
||||
}
|
||||
.rel.sbss ${RELOCATING-0} :
|
||||
{
|
||||
{
|
||||
*(.rel.sbss)
|
||||
${RELOCATING+*(.rel.sbss.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.sb.*)}
|
||||
@ -250,14 +250,14 @@ SECTIONS
|
||||
${RELOCATING+*(.rela.sbss.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.sb.*)}
|
||||
}
|
||||
.rel.bss ${RELOCATING-0} :
|
||||
{
|
||||
.rel.bss ${RELOCATING-0} :
|
||||
{
|
||||
*(.rel.bss)
|
||||
${RELOCATING+*(.rel.bss.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.b.*)}
|
||||
}
|
||||
.rela.bss ${RELOCATING-0} :
|
||||
{
|
||||
.rela.bss ${RELOCATING-0} :
|
||||
{
|
||||
*(.rela.bss)
|
||||
${RELOCATING+*(.rela.bss.*)}
|
||||
${RELOCATING+*(.rela.gnu.linkonce.b.*)}
|
||||
@ -300,14 +300,14 @@ SECTIONS
|
||||
} ${RELOCATING+ > page0}
|
||||
|
||||
/* Start of text section. */
|
||||
.stext ${RELOCATING-0} :
|
||||
.stext ${RELOCATING-0} :
|
||||
{
|
||||
*(.stext)
|
||||
} ${RELOCATING+ > ${TEXT_MEMORY}}
|
||||
|
||||
.init ${RELOCATING-0} :
|
||||
{
|
||||
*(.init)
|
||||
*(.init)
|
||||
} ${RELOCATING+=${NOP-0}}
|
||||
|
||||
${RELOCATING-${INSTALL_RELOC}}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -18,7 +18,7 @@
|
||||
# .data section.
|
||||
# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
|
||||
# .bss section besides __bss_start.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
#
|
||||
# When adding sections, do note that the names of some sections are used
|
||||
# when specifying the start address of the next.
|
||||
@ -29,7 +29,7 @@ test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
|
||||
if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
|
||||
test "$LD_FLAG" = "N" && DATA_ADDR=.
|
||||
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+ PROVIDE (__CTOR_LIST__ = .); }
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
@ -57,7 +57,7 @@ VECTORS="
|
||||
Bootstrap 0x00c0
|
||||
Test 0xbfc0
|
||||
|
||||
In general, the vectors address is 0xffc0. This can be overriden
|
||||
In general, the vectors address is 0xffc0. This can be overriden
|
||||
with the '-defsym vectors_addr=0xbfc0' ld option.
|
||||
|
||||
Note: for the bootstrap mode, the interrupt vectors are at 0xbfc0 but
|
||||
@ -239,7 +239,7 @@ SECTIONS
|
||||
${RELOCATING+*(.rela.gnu.linkonce.s.*)}
|
||||
}
|
||||
.rel.sbss ${RELOCATING-0} :
|
||||
{
|
||||
{
|
||||
*(.rel.sbss)
|
||||
${RELOCATING+*(.rel.sbss.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.sb.*)}
|
||||
@ -250,14 +250,14 @@ SECTIONS
|
||||
${RELOCATING+*(.rela.sbss.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.sb.*)}
|
||||
}
|
||||
.rel.bss ${RELOCATING-0} :
|
||||
{
|
||||
.rel.bss ${RELOCATING-0} :
|
||||
{
|
||||
*(.rel.bss)
|
||||
${RELOCATING+*(.rel.bss.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.b.*)}
|
||||
}
|
||||
.rela.bss ${RELOCATING-0} :
|
||||
{
|
||||
.rela.bss ${RELOCATING-0} :
|
||||
{
|
||||
*(.rela.bss)
|
||||
${RELOCATING+*(.rela.bss.*)}
|
||||
${RELOCATING+*(.rela.gnu.linkonce.b.*)}
|
||||
@ -299,14 +299,14 @@ SECTIONS
|
||||
} ${RELOCATING+ > page0}
|
||||
|
||||
/* Start of text section. */
|
||||
.stext ${RELOCATING-0} :
|
||||
.stext ${RELOCATING-0} :
|
||||
{
|
||||
*(.stext)
|
||||
} ${RELOCATING+ > ${TEXT_MEMORY}}
|
||||
|
||||
.init ${RELOCATING-0} :
|
||||
{
|
||||
*(.init)
|
||||
*(.init)
|
||||
} ${RELOCATING+=${NOP-0}}
|
||||
|
||||
${RELOCATING-${INSTALL_RELOC}}
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Adapted from mips.sc
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -13,7 +13,7 @@ test -z "$ENTRY" && ENTRY=_start
|
||||
|
||||
#test -z "$TEXT_START_ADDR" && TEXT_START_ADDR="0x0"
|
||||
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
@ -63,7 +63,7 @@ ${RELOCATING+${LIB_SEARCH_DIRS}}
|
||||
|
||||
${RELOCATING+ENTRY (${ENTRY})}
|
||||
|
||||
_TEXT_START_ADDR = DEFINED(_TEXT_START_ADDR) ? _TEXT_START_ADDR : 0x50;
|
||||
_TEXT_START_ADDR = DEFINED(_TEXT_START_ADDR) ? _TEXT_START_ADDR : 0x50;
|
||||
_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x0;
|
||||
_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x400;
|
||||
|
||||
@ -121,7 +121,7 @@ SECTIONS
|
||||
}
|
||||
${RELOCATING+. = ALIGN(4);}
|
||||
.sbss2 : {
|
||||
${RELOCATING+PROVIDE (__sbss2_start = .);}
|
||||
${RELOCATING+PROVIDE (__sbss2_start = .);}
|
||||
${RELOCATING+*(.sbss2)}
|
||||
${RELOCATING+*(.sbss2.*)}
|
||||
${RELOCATING+*(.gnu.linkonce.sb2.*)}
|
||||
@ -140,30 +140,30 @@ SECTIONS
|
||||
${CONSTRUCTING+CONSTRUCTORS}; /* Is this needed? */
|
||||
}
|
||||
${RELOCATING+ _edata = . ;}
|
||||
|
||||
|
||||
/* Added to handle pic code */
|
||||
.got : {
|
||||
.got : {
|
||||
${RELOCATING+*(.got)}
|
||||
}
|
||||
|
||||
.got1 : {
|
||||
.got1 : {
|
||||
${RELOCATING+*(.got1)}
|
||||
}
|
||||
|
||||
.got2 : {
|
||||
.got2 : {
|
||||
${RELOCATING+*(.got2)}
|
||||
}
|
||||
|
||||
/* Added by Sathya to handle C++ exceptions */
|
||||
.eh_frame : {
|
||||
.eh_frame : {
|
||||
${RELOCATING+*(.eh_frame)}
|
||||
}
|
||||
|
||||
.jcr : {
|
||||
|
||||
.jcr : {
|
||||
${RELOCATING+*(.jcr)}
|
||||
}
|
||||
|
||||
.gcc_except_table : {
|
||||
.gcc_except_table : {
|
||||
${RELOCATING+*(.gcc_except_table)}
|
||||
}
|
||||
|
||||
@ -178,7 +178,7 @@ SECTIONS
|
||||
}
|
||||
${RELOCATING+. = ALIGN(4);}
|
||||
.sbss : {
|
||||
${RELOCATING+PROVIDE (__sbss_start = .);}
|
||||
${RELOCATING+PROVIDE (__sbss_start = .);}
|
||||
${RELOCATING+*(.sbss)}
|
||||
${RELOCATING+*(.sbss.*)}
|
||||
${RELOCATING+*(.gnu.linkonce.sb.*)}
|
||||
@ -192,13 +192,13 @@ SECTIONS
|
||||
${RELOCATING+ . = ALIGN(4);}
|
||||
${RELOCATING+ _fbss = .;}
|
||||
.bss : {
|
||||
${RELOCATING+PROVIDE (__bss_start = .);}
|
||||
${RELOCATING+PROVIDE (__bss_start = .);}
|
||||
${RELOCATING+*(.bss)}
|
||||
${RELOCATING+*(.bss.*)}
|
||||
${RELOCATING+*(.gnu.linkonce.b.*)}
|
||||
${RELOCATING+*(COMMON)}
|
||||
${RELOCATING+. = ALIGN(. != 0 ? 4 : 1);}
|
||||
|
||||
|
||||
${RELOCATING+PROVIDE (__bss_end = .);}
|
||||
|
||||
}
|
||||
@ -210,7 +210,7 @@ SECTIONS
|
||||
${RELOCATING+ _heap_start = .;}
|
||||
${RELOCATING+ . += _HEAP_SIZE;}
|
||||
${RELOCATING+ _heap_end = .;}
|
||||
}
|
||||
}
|
||||
|
||||
${RELOCATING+ . = ALIGN(4);}
|
||||
|
||||
@ -222,12 +222,12 @@ SECTIONS
|
||||
${RELOCATING+ _end = .;}
|
||||
}
|
||||
|
||||
.tdata : {
|
||||
.tdata : {
|
||||
${RELOCATING+*(.tdata)}
|
||||
${RELOCATING+*(.tdata.*)}
|
||||
${RELOCATING+*(.gnu.linkonce.td.*)}
|
||||
}
|
||||
.tbss : {
|
||||
.tbss : {
|
||||
${RELOCATING+*(.tbss)}
|
||||
${RELOCATING+*(.tbss.*)}
|
||||
${RELOCATING+*(.gnu.linkonce.tb.*)}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -18,7 +18,7 @@
|
||||
# .data section.
|
||||
# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
|
||||
# .bss section besides __bss_start.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
#
|
||||
# When adding sections, do note that the names of some sections are used
|
||||
# when specifying the start address of the next.
|
||||
@ -29,7 +29,7 @@ test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
|
||||
if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
|
||||
test "$LD_FLAG" = "N" && DATA_ADDR=.
|
||||
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+ PROVIDE (__CTOR_LIST__ = .); }
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
@ -57,7 +57,7 @@ VECTORS="
|
||||
Bootstrap 0x00c0
|
||||
Test 0xbfc0
|
||||
|
||||
In general, the vectors address is 0xffc0. This can be overriden
|
||||
In general, the vectors address is 0xffc0. This can be overriden
|
||||
with the '-defsym vectors_addr=0xbfc0' ld option.
|
||||
|
||||
Note: for the bootstrap mode, the interrupt vectors are at 0xbfc0 but
|
||||
@ -239,7 +239,7 @@ SECTIONS
|
||||
${RELOCATING+*(.rela.gnu.linkonce.s.*)}
|
||||
}
|
||||
.rel.sbss ${RELOCATING-0} :
|
||||
{
|
||||
{
|
||||
*(.rel.sbss)
|
||||
${RELOCATING+*(.rel.sbss.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.sb.*)}
|
||||
@ -250,14 +250,14 @@ SECTIONS
|
||||
${RELOCATING+*(.rela.sbss.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.sb.*)}
|
||||
}
|
||||
.rel.bss ${RELOCATING-0} :
|
||||
{
|
||||
.rel.bss ${RELOCATING-0} :
|
||||
{
|
||||
*(.rel.bss)
|
||||
${RELOCATING+*(.rel.bss.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.b.*)}
|
||||
}
|
||||
.rela.bss ${RELOCATING-0} :
|
||||
{
|
||||
.rela.bss ${RELOCATING-0} :
|
||||
{
|
||||
*(.rela.bss)
|
||||
${RELOCATING+*(.rela.bss.*)}
|
||||
${RELOCATING+*(.rela.gnu.linkonce.b.*)}
|
||||
@ -299,14 +299,14 @@ SECTIONS
|
||||
} ${RELOCATING+ > page0}
|
||||
|
||||
/* Start of text section. */
|
||||
.stext ${RELOCATING-0} :
|
||||
.stext ${RELOCATING-0} :
|
||||
{
|
||||
*(.stext)
|
||||
} ${RELOCATING+ > ${TEXT_MEMORY}}
|
||||
|
||||
.init ${RELOCATING-0} :
|
||||
{
|
||||
*(.init)
|
||||
*(.init)
|
||||
} ${RELOCATING+=${NOP-0}}
|
||||
|
||||
${RELOCATING-${INSTALL_RELOC}}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -45,15 +45,15 @@
|
||||
# NO_RELA_RELOCS - Don't include .rela.* sections in script
|
||||
# NON_ALLOC_DYN - Place dynamic sections after data segment.
|
||||
# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
|
||||
# start address of shared library.
|
||||
# INPUT_FILES - INPUT command of files to always include
|
||||
# WRITABLE_RODATA - if set, the .rodata section should be writable
|
||||
# INIT_START, INIT_END - statements just before and just after
|
||||
# combination of .init sections.
|
||||
# combination of .init sections.
|
||||
# FINI_START, FINI_END - statements just before and just after
|
||||
# combination of .fini sections.
|
||||
# combination of .fini sections.
|
||||
# STACK_ADDR - start of a .stack section.
|
||||
# OTHER_SYMBOLS - symbols to place right at the end of the script.
|
||||
# ETEXT_NAME - name of a symbol for the end of the text section,
|
||||
@ -98,7 +98,7 @@
|
||||
#
|
||||
# plus Xtensa-specific literal sections:
|
||||
# .literal .gnu.linkonce.literal.foo
|
||||
# .lit4 .gnu.linkonce.lit4.foo
|
||||
# .lit4 .gnu.linkonce.lit4.foo
|
||||
#
|
||||
# plus Xtensa-specific "property table" sections:
|
||||
# .xt.lit .gnu.linkonce.p.foo
|
||||
@ -164,7 +164,7 @@ if test -z "${NO_SMALL_DATA}"; then
|
||||
SDATA="/* We want the small data sections together, so single-instruction offsets
|
||||
can access them all, and initialized data all before uninitialized, so
|
||||
we can shorten the on-disk segment size. */
|
||||
.sdata ${RELOCATING-0} :
|
||||
.sdata ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${SDATA_START_SYMBOLS}}
|
||||
${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
|
||||
@ -236,7 +236,7 @@ FINI_ARRAY=".fini_array ${RELOCATING-0} :
|
||||
KEEP (*(.fini_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_end = .);}}
|
||||
}"
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
@ -370,13 +370,13 @@ cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
.rel.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
}
|
||||
.rela.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
}
|
||||
EOF
|
||||
@ -393,10 +393,10 @@ if test -z "${NON_ALLOC_DYN}"; then
|
||||
cat ldscripts/dyntmp.$$
|
||||
else
|
||||
if test -z "${NO_REL_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
if test -z "${NO_RELA_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
fi
|
||||
rm -f ldscripts/dyntmp.$$
|
||||
@ -534,10 +534,10 @@ if test -n "${NON_ALLOC_DYN}"; then
|
||||
cat ldscripts/dyntmp.$$
|
||||
else
|
||||
if test -z "${NO_REL_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
if test -z "${NO_RELA_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
fi
|
||||
rm -f ldscripts/dyntmp.$$
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -45,15 +45,15 @@
|
||||
# NO_RELA_RELOCS - Don't include .rela.* sections in script
|
||||
# NON_ALLOC_DYN - Place dynamic sections after data segment.
|
||||
# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
|
||||
# start address of shared library.
|
||||
# INPUT_FILES - INPUT command of files to always include
|
||||
# WRITABLE_RODATA - if set, the .rodata section should be writable
|
||||
# INIT_START, INIT_END - statements just before and just after
|
||||
# combination of .init sections.
|
||||
# combination of .init sections.
|
||||
# FINI_START, FINI_END - statements just before and just after
|
||||
# combination of .fini sections.
|
||||
# combination of .fini sections.
|
||||
# OTHER_SYMBOLS - symbols to place right at the end of the script.
|
||||
# ETEXT_NAME - name of a symbol for the end of the text section,
|
||||
# normally etext.
|
||||
@ -147,7 +147,7 @@ if test -z "${NO_SMALL_DATA}"; then
|
||||
SDATA="/* We want the small data sections together, so single-instruction offsets
|
||||
can access them all, and initialized data all before uninitialized, so
|
||||
we can shorten the on-disk segment size. */
|
||||
.sdata ${RELOCATING-0} :
|
||||
.sdata ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${SDATA_START_SYMBOLS}}
|
||||
${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
|
||||
@ -205,7 +205,7 @@ test "${LARGE_SECTIONS}" = "yes" && LARGE_SECTIONS="
|
||||
*(.ldata${RELOCATING+ .ldata.* .gnu.linkonce.l.*})
|
||||
${RELOCATING+. = ALIGN(. != 0 ? ${ALIGNMENT} : 1);}
|
||||
}"
|
||||
CTOR=".ctors ADDR(.text) + SIZEOF(.text) ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ADDR(.text) + SIZEOF(.text) ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
@ -230,7 +230,7 @@ CTOR=".ctors ADDR(.text) + SIZEOF(.text) ${CONSTRUCTING-0} :
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
${CONSTRUCTING+${CTOR_END}}
|
||||
} /*> INTERNAL_RAM*/"
|
||||
} /*> INTERNAL_RAM*/"
|
||||
DTOR=".dtors ADDR(.ctors) + SIZEOF(.ctors) ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+${DTOR_START}}
|
||||
@ -291,26 +291,26 @@ __CORE_NUM_ = (__CORE_ROW_ - __FIRST_CORE_ROW_ )* __MAX_NUM_CORES_IN_COLS__ +
|
||||
|
||||
MEMORY
|
||||
{
|
||||
EXTERNAL_DRAM_0 (WXAI) : ORIGIN = 0x80000000, LENGTH = 0x1000000 /*.text, data, rodata, bss and .stack*/
|
||||
EXTERNAL_DRAM_0 (WXAI) : ORIGIN = 0x80000000, LENGTH = 0x1000000 /*.text, data, rodata, bss and .stack*/
|
||||
EXTERNAL_DRAM_1 (WXAI) : ORIGIN = 0x81000000, LENGTH = 0x1000000 /*.heap */
|
||||
|
||||
|
||||
EXTERNAL_SRAM (WXAI) : ORIGIN = 0x92000000, LENGTH = 8K /* small external RAM, used for testing*/
|
||||
|
||||
|
||||
/* run time lib and crt0*/
|
||||
RESERVED_CRT0_RAM (WXAI) : ORIGIN = 0, LENGTH = 0x400
|
||||
|
||||
|
||||
/* user program, per bank usage */
|
||||
BANK0_SRAM (WXAI) : ORIGIN = LENGTH(RESERVED_CRT0_RAM), LENGTH = 8K - LENGTH(RESERVED_CRT0_RAM)
|
||||
BANK1_SRAM (WXAI) : ORIGIN = 0x2000, LENGTH = 8K
|
||||
BANK2_SRAM (WXAI) : ORIGIN = 0x4000, LENGTH = 8K
|
||||
BANK3_SRAM (WXAI) : ORIGIN = 0x6000, LENGTH = 8K
|
||||
|
||||
|
||||
/* user program, continious placement */
|
||||
INTERNAL_RAM (WXAI) : ORIGIN = LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K - LENGTH(RESERVED_CRT0_RAM)
|
||||
|
||||
MMR (WAI) : ORIGIN = 0xF000, LENGTH = 32K
|
||||
|
||||
/* multi cores space */
|
||||
|
||||
MMR (WAI) : ORIGIN = 0xF000, LENGTH = 32K
|
||||
|
||||
/* multi cores space */
|
||||
CORE_0x20_0x24_INTERNAL_RAM : ORIGIN = 0x82400000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM)
|
||||
CORE_0x20_0x25_INTERNAL_RAM : ORIGIN = 0x82500000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM)
|
||||
CORE_0x20_0x26_INTERNAL_RAM : ORIGIN = 0x82600000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM)
|
||||
@ -328,7 +328,7 @@ MEMORY
|
||||
CORE_0x23_0x26_INTERNAL_RAM : ORIGIN = 0x8e600000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM)
|
||||
CORE_0x23_0x27_INTERNAL_RAM : ORIGIN = 0x8e700000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM)
|
||||
CORE_0x24_0x24_INTERNAL_RAM : ORIGIN = 0x82000000+LENGTH(RESERVED_CRT0_RAM), LENGTH = 32K- LENGTH(RESERVED_CRT0_RAM)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -338,35 +338,35 @@ SECTIONS
|
||||
IVT 0 : {*.o(IVT) } > RESERVED_CRT0_RAM
|
||||
RESERVED_CRT0 : {*.o(RESERVED_CRT0) } > RESERVED_CRT0_RAM
|
||||
RESERVED_CRT0 : {*.o(reserved_crt0) } > RESERVED_CRT0_RAM
|
||||
|
||||
|
||||
CORE_RAM_0 : {*.o(core_ram_0) } > BANK0_SRAM
|
||||
CORE_RAM_1 : {*.o(core_ram_1) } > BANK1_SRAM
|
||||
CORE_RAM_2 : {*.o(core_ram_2) } > BANK2_SRAM
|
||||
CORE_RAM_3 : {*.o(core_ram_3) } > BANK3_SRAM
|
||||
|
||||
|
||||
SRAM_SOUTH : {*.o(sram) } > EXTERNAL_SRAM
|
||||
DRAM_WEST : {*.o(dram) } > EXTERNAL_DRAM_1
|
||||
|
||||
|
||||
CORE_INTERNAL : {*.o(core_ram_internal) } /*> INTERNAL_RAM*/
|
||||
|
||||
|
||||
/* the newlib (libc and libm) library is maped to the dedicated section */
|
||||
|
||||
|
||||
__new_lib_start_external_ = ( ORIGIN(EXTERNAL_DRAM_0) + __PROG_SIZE_FOR_CORE__ *__CORE_NUM_ );
|
||||
__new_lib_start_ = DEFINED(__USE_INTERNAL_MEM_FOR_NEW_LIB_) ? ORIGIN(BANK1_SRAM) : __new_lib_start_external_ ;
|
||||
|
||||
|
||||
NEW_LIB_RO ${RELOCATING+__new_lib_start_} : { lib_a-*.o(.text .rodata ) *.o(libgloss_epiphany) } /* > INTERNAL_RAM*/
|
||||
GNU_C_BUILTIN_LIB_RO ADDR(NEW_LIB_RO) + SIZEOF(NEW_LIB_RO) : {
|
||||
*mulsi3.o(.text .rodata) *modsi3.o(.text .rodata)
|
||||
*divsi3.o(.text .rodata) *udivsi3.o(.text .rodata)
|
||||
*umodsi3.o(.text .rodata) _*.o(.text .rodata)
|
||||
}
|
||||
|
||||
NEW_LIB_WR ADDR(GNU_C_BUILTIN_LIB_RO) + SIZEOF(GNU_C_BUILTIN_LIB_RO) : { lib_a-*.o(.data ) } /* > INTERNAL_RAM*/
|
||||
|
||||
|
||||
__init_start = DEFINED(__USE_INTERNAL_MEM_) ? ORIGIN(BANK1_SRAM) : (ADDR(NEW_LIB_WR) + SIZEOF(NEW_LIB_WR) ) ;
|
||||
GNU_C_BUILTIN_LIB_RO ADDR(NEW_LIB_RO) + SIZEOF(NEW_LIB_RO) : {
|
||||
*mulsi3.o(.text .rodata) *modsi3.o(.text .rodata)
|
||||
*divsi3.o(.text .rodata) *udivsi3.o(.text .rodata)
|
||||
*umodsi3.o(.text .rodata) _*.o(.text .rodata)
|
||||
}
|
||||
|
||||
NEW_LIB_WR ADDR(GNU_C_BUILTIN_LIB_RO) + SIZEOF(GNU_C_BUILTIN_LIB_RO) : { lib_a-*.o(.data ) } /* > INTERNAL_RAM*/
|
||||
|
||||
|
||||
__init_start = DEFINED(__USE_INTERNAL_MEM_) ? ORIGIN(BANK1_SRAM) : (ADDR(NEW_LIB_WR) + SIZEOF(NEW_LIB_WR) ) ;
|
||||
__init_start = DEFINED(__USE_INTERNAL_MEM_FOR_NEW_LIB_) ? ADDR(NEW_LIB_WR) + SIZEOF(NEW_LIB_WR) : __init_start;
|
||||
|
||||
|
||||
|
||||
/* Read-only sections, merged into text segment: */
|
||||
/*${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}*/
|
||||
@ -433,13 +433,13 @@ cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
.rel.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
}
|
||||
.rela.dyn ${RELOCATING-0} :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$
|
||||
cat >> ldscripts/dyntmp.$$ <<EOF
|
||||
}
|
||||
EOF
|
||||
@ -456,19 +456,19 @@ if test -z "${NON_ALLOC_DYN}"; then
|
||||
cat ldscripts/dyntmp.$$
|
||||
else
|
||||
if test -z "${NO_REL_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
if test -z "${NO_RELA_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
fi
|
||||
rm -f ldscripts/dyntmp.$$
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
|
||||
.init __init_start :
|
||||
{
|
||||
|
||||
.init __init_start :
|
||||
{
|
||||
${RELOCATING+${INIT_START}}
|
||||
KEEP (*(.init))
|
||||
${RELOCATING+${INIT_END}}
|
||||
@ -476,14 +476,14 @@ cat <<EOF
|
||||
|
||||
${TEXT_PLT+${PLT}}
|
||||
${TINY_READONLY_SECTION}
|
||||
|
||||
|
||||
.fini ${RELOCATING+ADDR(.init)+SIZEOF(.init)} ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${FINI_START}}
|
||||
KEEP (*(.fini))
|
||||
${RELOCATING+${FINI_END}}
|
||||
} /*> INTERNAL_RAM*/ =${NOP-0}
|
||||
|
||||
|
||||
.text ${RELOCATING+ADDR(.fini)+SIZEOF(.fini)} ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${TEXT_START_SYMBOLS}}
|
||||
@ -497,7 +497,7 @@ cat <<EOF
|
||||
${RELOCATING+PROVIDE (_${ETEXT_NAME} = .);}
|
||||
${RELOCATING+PROVIDE (${ETEXT_NAME} = .);}
|
||||
${WRITABLE_RODATA-${RODATA}}
|
||||
.rodata1 ${RELOCATING-0} : { *(.rodata1) }
|
||||
.rodata1 ${RELOCATING-0} : { *(.rodata1) }
|
||||
${CREATE_SHLIB-${SDATA2}}
|
||||
${CREATE_SHLIB-${SBSS2}}
|
||||
${OTHER_READONLY_SECTIONS}
|
||||
@ -524,21 +524,21 @@ cat <<EOF
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__preinit_array_start = .);}}
|
||||
KEEP (*(.preinit_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__preinit_array_end = .);}}
|
||||
}
|
||||
}
|
||||
.init_array ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__init_array_start = .);}}
|
||||
KEEP (*(SORT(.init_array.*)))
|
||||
KEEP (*(.init_array))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__init_array_end = .);}}
|
||||
}
|
||||
}
|
||||
.fini_array ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_start = .);}}
|
||||
KEEP (*(.fini_array))
|
||||
KEEP (*(SORT(.fini_array.*)))
|
||||
${RELOCATING+${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_end = .);}}
|
||||
}
|
||||
}
|
||||
${SMALL_DATA_CTOR-${RELOCATING+${CTOR}}}
|
||||
${SMALL_DATA_DTOR-${RELOCATING+${DTOR}}}
|
||||
.jcr ${RELOCATING-0} : { KEEP (*(.jcr)) }
|
||||
@ -561,7 +561,7 @@ cat <<EOF
|
||||
*(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
|
||||
${CONSTRUCTING+SORT(CONSTRUCTORS)}
|
||||
} /*> INTERNAL_RAM*/
|
||||
.data1 ${RELOCATING-0} : { *(.data1) }
|
||||
.data1 ${RELOCATING-0} : { *(.data1) }
|
||||
${WRITABLE_RODATA+${RODATA}}
|
||||
${OTHER_READWRITE_SECTIONS}
|
||||
${SMALL_DATA_CTOR+${RELOCATING+${CTOR}}}
|
||||
@ -615,10 +615,10 @@ if test -n "${NON_ALLOC_DYN}"; then
|
||||
cat ldscripts/dyntmp.$$
|
||||
else
|
||||
if test -z "${NO_REL_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
if test -z "${NO_RELA_RELOCS}"; then
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$
|
||||
fi
|
||||
fi
|
||||
rm -f ldscripts/dyntmp.$$
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Linker script for PE.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -57,7 +57,7 @@ ${RELOCATING+ENTRY (_mainCRTStartup)}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text ${RELOCATING+ __image_base__ + __section_alignment__ } :
|
||||
.text ${RELOCATING+ __image_base__ + __section_alignment__ } :
|
||||
{
|
||||
${RELOCATING+ *(.init)}
|
||||
*(.text)
|
||||
@ -65,9 +65,9 @@ SECTIONS
|
||||
*(.glue_7t)
|
||||
*(.glue_7)
|
||||
${RELOCATING+ *(.text.*)}
|
||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
||||
LONG (-1); *(.ctors); *(.ctor); LONG (0); }
|
||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||
LONG (-1); *(.dtors); *(.dtor); LONG (0); }
|
||||
${RELOCATING+ *(.fini)}
|
||||
/* ??? Why is .gcc_exc here? */
|
||||
@ -88,7 +88,7 @@ SECTIONS
|
||||
breaks building the cygwin32 dll. Instead, we name the section
|
||||
".data_cygwin_nocopy" and explicitly include it after __data_end__. */
|
||||
|
||||
.data ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
.data ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
${RELOCATING+__data_start__ = . ;}
|
||||
*(.data)
|
||||
@ -125,9 +125,9 @@ SECTIONS
|
||||
See pe.em:sort_sections. */
|
||||
${R_IDATA}
|
||||
}
|
||||
|
||||
|
||||
.CRT ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
{
|
||||
${R_CRT}
|
||||
}
|
||||
|
||||
@ -140,12 +140,12 @@ SECTIONS
|
||||
}
|
||||
|
||||
.reloc ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
{
|
||||
*(.reloc)
|
||||
}
|
||||
|
||||
.rsrc ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
{
|
||||
*(.rsrc)
|
||||
${R_RSRC}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -51,7 +51,7 @@ SECTIONS
|
||||
} ${RELOCATING+ > vectors}
|
||||
|
||||
.init :
|
||||
{
|
||||
{
|
||||
*(.init)
|
||||
} ${RELOCATING+ > ram}
|
||||
|
||||
@ -61,7 +61,7 @@ SECTIONS
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
*(.strings)
|
||||
${RELOCATING+ _etext = . ; }
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > ram}
|
||||
|
||||
${CONSTRUCTING+${TORS}}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -61,7 +61,7 @@ SECTIONS
|
||||
*(.rodata)
|
||||
*(.text)
|
||||
*(.strings)
|
||||
${RELOCATING+ _etext = . ; }
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > ram}
|
||||
|
||||
${CONSTRUCTING+${TORS}}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -55,7 +55,7 @@ SECTIONS
|
||||
*(.rodata)
|
||||
*(.text)
|
||||
*(.strings)
|
||||
${RELOCATING+ _etext = . ; }
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > ram}
|
||||
|
||||
${CONSTRUCTING+${TORS}}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -61,7 +61,7 @@ SECTIONS
|
||||
*(.rodata)
|
||||
*(.text)
|
||||
*(.strings)
|
||||
${RELOCATING+ _etext = . ; }
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > ram}
|
||||
|
||||
${CONSTRUCTING+${TORS}}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -55,7 +55,7 @@ SECTIONS
|
||||
*(.rodata)
|
||||
*(.text)
|
||||
*(.strings)
|
||||
${RELOCATING+ _etext = . ; }
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > ram}
|
||||
|
||||
${CONSTRUCTING+${TORS}}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -61,7 +61,7 @@ SECTIONS
|
||||
*(.rodata)
|
||||
*(.text)
|
||||
*(.strings)
|
||||
${RELOCATING+ _etext = . ; }
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > ram}
|
||||
|
||||
${CONSTRUCTING+${TORS}}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -55,7 +55,7 @@ SECTIONS
|
||||
*(.rodata)
|
||||
*(.text)
|
||||
*(.strings)
|
||||
${RELOCATING+ _etext = . ; }
|
||||
${RELOCATING+ _etext = . ; }
|
||||
} ${RELOCATING+ > ram}
|
||||
|
||||
${CONSTRUCTING+${TORS}}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Linker script for PE.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -56,7 +56,7 @@ ${RELOCATING+__fltused = .; /* set up floating pt for MS .obj\'s */}
|
||||
${RELOCATING+__ldused = .;}
|
||||
SECTIONS
|
||||
{
|
||||
.text ${RELOCATING+ __image_base__ + __section_alignment__ } :
|
||||
.text ${RELOCATING+ __image_base__ + __section_alignment__ } :
|
||||
{
|
||||
${RELOCATING+ __text_start__ = . ;}
|
||||
${RELOCATING+ *(.init)}
|
||||
@ -64,9 +64,9 @@ SECTIONS
|
||||
${R_TEXT}
|
||||
*(.glue_7t)
|
||||
*(.glue_7)
|
||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
||||
LONG (-1); *(.ctors); *(.ctor); LONG (0); }
|
||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||
LONG (-1); *(.dtors); *(.dtor); LONG (0); }
|
||||
${RELOCATING+ *(.fini)}
|
||||
/* ??? Why is .gcc_exc here? */
|
||||
@ -82,7 +82,7 @@ SECTIONS
|
||||
breaks building the cygwin32 dll. Instead, we name the section
|
||||
".data_cygwin_nocopy" and explicitly include it after __data_end__. */
|
||||
|
||||
.data ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
.data ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
${RELOCATING+__data_start__ = . ;}
|
||||
*(.data)
|
||||
@ -134,7 +134,7 @@ SECTIONS
|
||||
${R_IDATA}
|
||||
}
|
||||
.CRT ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
{
|
||||
${R_CRT}
|
||||
}
|
||||
|
||||
@ -147,18 +147,18 @@ SECTIONS
|
||||
}
|
||||
|
||||
.reloc ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
{
|
||||
*(.reloc)
|
||||
}
|
||||
|
||||
.rsrc ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
{
|
||||
*(.rsrc)
|
||||
${R_RSRC}
|
||||
}
|
||||
|
||||
.exc ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
{
|
||||
*(.exc)
|
||||
${R_EXC}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Ian Taylor <ian@cygnus.com>.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -38,14 +38,14 @@ SECTIONS
|
||||
${RELOCATING+ edata = .};
|
||||
}
|
||||
.bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
|
||||
{
|
||||
{
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
${RELOCATING+ end = .};
|
||||
}
|
||||
${RELOCATING- ${INIT}}
|
||||
${RELOCATING- ${FINI}}
|
||||
.stab 0 ${RELOCATING+(NOLOAD)} :
|
||||
.stab 0 ${RELOCATING+(NOLOAD)} :
|
||||
{
|
||||
[ .stab ]
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Linker script for i386 go32 (DJGPP)
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -68,7 +68,7 @@ SECTIONS
|
||||
${CONSTRUCTING+${RELOCATING-$CTOR}}
|
||||
${CONSTRUCTING+${RELOCATING-$DTOR}}
|
||||
.bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
|
||||
{
|
||||
{
|
||||
*(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
|
||||
*(COMMON)
|
||||
${RELOCATING+ end = . ; PROVIDE(_end = .) ;}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -13,7 +13,7 @@ cat <<EOF
|
||||
|
||||
OUTPUT_FORMAT("${OUTPUT_FORMAT}")
|
||||
${LIB_SEARCH_DIRS}
|
||||
PROVIDE (__stack = 0);
|
||||
PROVIDE (__stack = 0);
|
||||
SECTIONS
|
||||
{
|
||||
.text ${RELOCATING+ 0x1000000} : {
|
||||
@ -35,14 +35,14 @@ SECTIONS
|
||||
*(.data)
|
||||
${RELOCATING+ edata = .};
|
||||
}
|
||||
.bss : {
|
||||
.bss : {
|
||||
${RELOCATING+ __bss_start = .};
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
${RELOCATING+ end = ALIGN(0x8)};
|
||||
${RELOCATING+ _end = ALIGN(0x8)};
|
||||
}
|
||||
.stab 0 ${RELOCATING+(NOLOAD)} :
|
||||
.stab 0 ${RELOCATING+(NOLOAD)} :
|
||||
{
|
||||
[ .stab ]
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -12,26 +12,26 @@ cat <<EOF
|
||||
notice and this notice are preserved. */
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text :
|
||||
{
|
||||
{
|
||||
.text :
|
||||
{
|
||||
${GLD_STYLE+ CREATE_OBJECT_SYMBOLS}
|
||||
*(.text)
|
||||
*(.text)
|
||||
${RELOCATING+ _etext = .};
|
||||
${CONSTRUCTING+${COFF_CTORS}}
|
||||
}
|
||||
}
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
{
|
||||
*(.data)
|
||||
${CONSTRUCTING+CONSTRUCTORS}
|
||||
${RELOCATING+ _edata = .};
|
||||
}
|
||||
}
|
||||
.bss :
|
||||
{
|
||||
{
|
||||
${RELOCATING+ _bss_start = .};
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
${RELOCATING+ _end = .};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Tristan Gingold <gingold@adacore.com>.
|
||||
#
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -120,7 +120,7 @@ EOF
|
||||
|
||||
. $srcdir/scripttempl/DWARF.sc
|
||||
|
||||
cat <<EOF
|
||||
cat <<EOF
|
||||
.note : { *(.vms.note) }
|
||||
|
||||
/DISCARD/ : { *(.note) *(.vms_display_name_info) }
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -21,11 +21,11 @@ SEARCH_DIR(.);
|
||||
MEMORY
|
||||
{
|
||||
D_GPR : org = 0x01000080, len = 128
|
||||
D_RAM : org = 0x01000100, len = 4K - 256
|
||||
P_RAM : org = 0x02000000, len = 16K
|
||||
P_ROM : org = 0x02010000, len = 64K - 32
|
||||
P_RESET : org = 0x0201FFE0, len = 32
|
||||
P_CONFIG : org = 0x02020000, len = 128
|
||||
D_RAM : org = 0x01000100, len = 4K - 256
|
||||
P_RAM : org = 0x02000000, len = 16K
|
||||
P_ROM : org = 0x02010000, len = 64K - 32
|
||||
P_RESET : org = 0x0201FFE0, len = 32
|
||||
P_CONFIG : org = 0x02020000, len = 128
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
@ -89,7 +89,7 @@ SECTIONS
|
||||
|
||||
/* PRAM overlay code. */
|
||||
__pram_overlay_run_start = (__pram_end + 1) & 0xFFFFFFFE;
|
||||
__pram_overlay_load_start = (__flash_end + 1) & 0xFFFFFFFE;
|
||||
__pram_overlay_load_start = (__flash_end + 1) & 0xFFFFFFFE;
|
||||
OVERLAY __pram_overlay_run_start : AT (__pram_overlay_load_start)
|
||||
{
|
||||
.pram1 { */overlay1/* (.pram); * (.pram1) }
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2014-2017 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.
|
||||
@ -28,15 +28,15 @@
|
||||
# DATA_PLT - .plt should be in data segment, not text segment.
|
||||
# BSS_PLT - .plt should be in bss segment
|
||||
# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# EMBEDDED - whether this is for an embedded system.
|
||||
# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
|
||||
# start address of shared library.
|
||||
# INPUT_FILES - INPUT command of files to always include
|
||||
# WRITABLE_RODATA - if set, the .rodata section should be writable
|
||||
# INIT_START, INIT_END - statements just before and just after
|
||||
# combination of .init sections.
|
||||
# combination of .init sections.
|
||||
# FINI_START, FINI_END - statements just before and just after
|
||||
# combination of .fini sections.
|
||||
# combination of .fini sections.
|
||||
#
|
||||
# When adding sections, do note that the names of some sections are used
|
||||
# when specifying the start address of the next.
|
||||
@ -69,13 +69,13 @@ if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHI
|
||||
test -z "${ELFSIZE}" && ELFSIZE=32
|
||||
test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
|
||||
test "$LD_FLAG" = "N" && DATA_ADDR=.
|
||||
INTERP=".interp ${RELOCATING-0} : { *(.interp) }"
|
||||
INTERP=".interp ${RELOCATING-0} : { *(.interp) }"
|
||||
PLT=".plt ${RELOCATING-0} : { *(.plt) }"
|
||||
DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }"
|
||||
RODATA=".rodata ${RELOCATING-0} : { *(.rodata) ${RELOCATING+*(.rodata.*)} ${RELOCATING+*(.gnu.linkonce.r.*)} }"
|
||||
SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2) ${RELOCATING+*(.sbss2.*)} ${RELOCATING+*(.gnu.linkonce.sb2.*)} }"
|
||||
SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2) ${RELOCATING+*(.sdata2.*)} ${RELOCATING+*(.gnu.linkonce.s2.*)} }"
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
CTOR=".ctors ${CONSTRUCTING-0} :
|
||||
{
|
||||
${CONSTRUCTING+${CTOR_START}}
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
@ -217,7 +217,7 @@ eval $COMBRELOCCAT <<EOF
|
||||
${RELOCATING+*(.rela.gnu.linkonce.s.*)}
|
||||
}
|
||||
.rel.sbss ${RELOCATING-0} :
|
||||
{
|
||||
{
|
||||
*(.rel.sbss)
|
||||
${RELOCATING+*(.rel.sbss.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.sb.*)}
|
||||
@ -228,38 +228,38 @@ eval $COMBRELOCCAT <<EOF
|
||||
${RELOCATING+*(.rela.sbss.*)}
|
||||
${RELOCATING+*(.rela.gnu.linkonce.sb.*)}
|
||||
}
|
||||
.rel.sdata2 ${RELOCATING-0} :
|
||||
{
|
||||
.rel.sdata2 ${RELOCATING-0} :
|
||||
{
|
||||
*(.rel.sdata2)
|
||||
${RELOCATING+*(.rel.sdata2.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.s2.*)}
|
||||
}
|
||||
.rela.sdata2 ${RELOCATING-0} :
|
||||
.rela.sdata2 ${RELOCATING-0} :
|
||||
{
|
||||
*(.rela.sdata2)
|
||||
${RELOCATING+*(.rela.sdata2.*)}
|
||||
${RELOCATING+*(.rela.gnu.linkonce.s2.*)}
|
||||
}
|
||||
.rel.sbss2 ${RELOCATING-0} :
|
||||
{
|
||||
*(.rel.sbss2)
|
||||
.rel.sbss2 ${RELOCATING-0} :
|
||||
{
|
||||
*(.rel.sbss2)
|
||||
${RELOCATING+*(.rel.sbss2.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.sb2.*)}
|
||||
}
|
||||
.rela.sbss2 ${RELOCATING-0} :
|
||||
{
|
||||
*(.rela.sbss2)
|
||||
.rela.sbss2 ${RELOCATING-0} :
|
||||
{
|
||||
*(.rela.sbss2)
|
||||
${RELOCATING+*(.rela.sbss2.*)}
|
||||
${RELOCATING+*(.rela.gnu.linkonce.sb2.*)}
|
||||
}
|
||||
.rel.bss ${RELOCATING-0} :
|
||||
{
|
||||
.rel.bss ${RELOCATING-0} :
|
||||
{
|
||||
*(.rel.bss)
|
||||
${RELOCATING+*(.rel.bss.*)}
|
||||
${RELOCATING+*(.rel.gnu.linkonce.b.*)}
|
||||
}
|
||||
.rela.bss ${RELOCATING-0} :
|
||||
{
|
||||
.rela.bss ${RELOCATING-0} :
|
||||
{
|
||||
*(.rela.bss)
|
||||
${RELOCATING+*(.rela.bss.*)}
|
||||
${RELOCATING+*(.rela.gnu.linkonce.b.*)}
|
||||
@ -270,13 +270,13 @@ cat <<EOF
|
||||
.rel.dyn :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
|
||||
cat <<EOF
|
||||
}
|
||||
.rela.dyn :
|
||||
{
|
||||
EOF
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
|
||||
sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
|
||||
cat <<EOF
|
||||
}
|
||||
EOF
|
||||
@ -286,8 +286,8 @@ cat <<EOF
|
||||
.rela.plt ${RELOCATING-0} : { *(.rela.plt) }
|
||||
${OTHER_PLT_RELOC_SECTIONS}
|
||||
|
||||
.init ${RELOCATING-0} :
|
||||
{
|
||||
.init ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${INIT_START}}
|
||||
KEEP (*(.init))
|
||||
${RELOCATING+${INIT_END}}
|
||||
@ -329,10 +329,10 @@ cat <<EOF
|
||||
${CONSTRUCTING+SORT(CONSTRUCTORS)}
|
||||
}
|
||||
.data1 ${RELOCATING-0} : { *(.data1) }
|
||||
.eh_frame ${RELOCATING-0} :
|
||||
{
|
||||
.eh_frame ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+PROVIDE (__eh_frame_begin = .);}
|
||||
*(.eh_frame)
|
||||
*(.eh_frame)
|
||||
LONG (0);
|
||||
${RELOCATING+PROVIDE (__eh_frame_end = .);}
|
||||
} ${RELOCATING+}
|
||||
@ -363,10 +363,10 @@ cat <<EOF
|
||||
/* We want the small data sections together, so single-instruction offsets
|
||||
can access them all, and initialized data all before uninitialized, so
|
||||
we can shorten the on-disk segment size. */
|
||||
.sdata ${RELOCATING-0} :
|
||||
.sdata ${RELOCATING-0} :
|
||||
{
|
||||
${RELOCATING+${SDATA_START_SYMBOLS}}
|
||||
*(.sdata)
|
||||
*(.sdata)
|
||||
${RELOCATING+*(.sdata.*)}
|
||||
${RELOCATING+*(.gnu.linkonce.s.*)}
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user