1999-05-03 15:29:11 +08:00
|
|
|
# config.bfd
|
|
|
|
# Convert a canonical host type into a BFD host type.
|
|
|
|
# Set shell variable targ to canonical target name, and run
|
|
|
|
# using ``. config.bfd''.
|
|
|
|
# Sets the following shell variables:
|
|
|
|
# targ_defvec Default vector for this target
|
|
|
|
# targ_selvecs Vectors to build for this target
|
2001-08-17 12:17:18 +08:00
|
|
|
# targ64_selvecs Vectors to build if --enable-64-bit-bfd is given
|
|
|
|
# or if host is 64 bit.
|
1999-05-03 15:29:11 +08:00
|
|
|
# targ_archs Architectures for this target
|
|
|
|
# targ_cflags $(CFLAGS) for this target (FIXME: pretty bogus)
|
|
|
|
# targ_underscore Whether underscores are used: yes or no
|
|
|
|
|
|
|
|
# Part of this file is processed by targmatch.sed to generate the
|
|
|
|
# targmatch.h file. The #ifdef and #endif lines that appear below are
|
|
|
|
# copied directly into targmatch.h.
|
|
|
|
|
|
|
|
# The binutils c++filt program wants to know whether underscores are
|
|
|
|
# stripped or not. That is why we set targ_underscore. c++filt uses
|
|
|
|
# this information to choose a default. This information is
|
|
|
|
# duplicated in the symbol_leading_char field of the BFD target
|
|
|
|
# vector, but c++filt does not deal with object files and is not
|
|
|
|
# linked against libbfd.a. It is not terribly important that c++filt
|
|
|
|
# get this right; it is just convenient.
|
|
|
|
|
|
|
|
targ_defvec=
|
|
|
|
targ_selvecs=
|
2001-08-17 12:17:18 +08:00
|
|
|
targ64_selvecs=
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_cflags=
|
|
|
|
targ_underscore=no
|
|
|
|
|
2003-08-01 16:35:04 +08:00
|
|
|
# Catch obsolete configurations.
|
|
|
|
case $targ in
|
2005-06-30 05:22:13 +08:00
|
|
|
m68*-apple-aux* | \
|
|
|
|
m68*-apollo-* | \
|
|
|
|
m68*-bull-sysv* | \
|
2005-07-07 20:12:40 +08:00
|
|
|
m68*-*-rtemscoff* | \
|
2005-07-08 19:17:16 +08:00
|
|
|
i960-*-rtems* | \
|
|
|
|
or32-*-rtems* | \
|
2004-05-18 03:50:16 +08:00
|
|
|
null)
|
2003-08-01 16:35:04 +08:00
|
|
|
if test "x$enable_obsolete" != xyes; then
|
|
|
|
echo "*** Configuration $targ is obsolete." >&2
|
|
|
|
echo "*** Specify --enable-obsolete to build it anyway." >&2
|
|
|
|
echo "*** Support will be REMOVED in the next major release of BINUTILS," >&2
|
|
|
|
echo "*** unless a maintainer comes forward." >&2
|
|
|
|
exit 1
|
|
|
|
fi;;
|
|
|
|
esac
|
|
|
|
|
./
* configure.in (arm-*-oabi*, thumb-*-oabi*): Remove.
* configure: Regenerated.
bfd/
* Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Replace
elfarm-nabi with elf32-arm. Remove elfarm-oabi.
(elf32-arm.lo): Replace elfarm-nabi.lo rule. Remove elf32-arm.h
dependency.
* config.bfd: Move arm-*-oabi* and thumb-*-oabi* from obsolete list
to a new removed list. Remove normal configuration stanzas.
* configure.in: (bfd_elf32_bigarm_vec, bfd_elf32_bigarm_symbian_vec)
(bfd_elf32_littlearm_symbian_vec, bfd_elf32_littlearm_vec): Replace
elfarm-nabi.lo with elf32-arm.lo.
(bfd_elf32_bigarm_oabi_vec, bfd_elf32_littlearm_oabi_vec): Remove.
* elf32-arm.c: Renamed from elfarm-nabi.c. Inline elf32-arm.h.
* elf32-arm.h: Remove.
* elfarm-oabi.c: Remove.
* targets.c (_bfd_target_vector): Remove bfd_elf32_bigarm_oabi_vec
and bfd_elf32_littlearm_oabi_vec.
* aclocal.m4, Makefile.in, configure, doc/Makefile.in: Regenerated.
gas/
* configure.in: Remove arm-*-oabi and thumb-*-oabi.
* config/tc-arm.c (target_oabi): Delete.
(md_apply_fix3, elf32_arm_target_format): Remove target_oabi checks.
(arm_opts): Remove moabi.
* doc/as.texinfo (Overview): Remove documentation of -moabi.
* doc/c-arm.texi (ARM Options): Likewise.
* configure: Regenerated.
ld/
* Makefile.am (ALL_EMULATIONS): Remove earmelf_oabi.o.
(earmelf_oabi.c): Remove rule.
* configure.tgt: Remove arm-*-oabi and thumb-*-oabi.
* emulparams/armelf_oabi.sh, emultempl/armelf_oabi.em: Delete files.
* Makefile.in: Regenerated.
2004-11-04 23:54:50 +08:00
|
|
|
case $targ in
|
2005-02-01 01:18:51 +08:00
|
|
|
m68*-*-lynxos* | \
|
|
|
|
sparc-*-lynxos* | \
|
|
|
|
vax-*-vms* | \
|
./
* configure.in (arm-*-oabi*, thumb-*-oabi*): Remove.
* configure: Regenerated.
bfd/
* Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Replace
elfarm-nabi with elf32-arm. Remove elfarm-oabi.
(elf32-arm.lo): Replace elfarm-nabi.lo rule. Remove elf32-arm.h
dependency.
* config.bfd: Move arm-*-oabi* and thumb-*-oabi* from obsolete list
to a new removed list. Remove normal configuration stanzas.
* configure.in: (bfd_elf32_bigarm_vec, bfd_elf32_bigarm_symbian_vec)
(bfd_elf32_littlearm_symbian_vec, bfd_elf32_littlearm_vec): Replace
elfarm-nabi.lo with elf32-arm.lo.
(bfd_elf32_bigarm_oabi_vec, bfd_elf32_littlearm_oabi_vec): Remove.
* elf32-arm.c: Renamed from elfarm-nabi.c. Inline elf32-arm.h.
* elf32-arm.h: Remove.
* elfarm-oabi.c: Remove.
* targets.c (_bfd_target_vector): Remove bfd_elf32_bigarm_oabi_vec
and bfd_elf32_littlearm_oabi_vec.
* aclocal.m4, Makefile.in, configure, doc/Makefile.in: Regenerated.
gas/
* configure.in: Remove arm-*-oabi and thumb-*-oabi.
* config/tc-arm.c (target_oabi): Delete.
(md_apply_fix3, elf32_arm_target_format): Remove target_oabi checks.
(arm_opts): Remove moabi.
* doc/as.texinfo (Overview): Remove documentation of -moabi.
* doc/c-arm.texi (ARM Options): Likewise.
* configure: Regenerated.
ld/
* Makefile.am (ALL_EMULATIONS): Remove earmelf_oabi.o.
(earmelf_oabi.c): Remove rule.
* configure.tgt: Remove arm-*-oabi and thumb-*-oabi.
* emulparams/armelf_oabi.sh, emultempl/armelf_oabi.em: Delete files.
* Makefile.in: Regenerated.
2004-11-04 23:54:50 +08:00
|
|
|
arm-*-oabi | \
|
|
|
|
thumb-*-oabi | \
|
2005-08-18 11:51:51 +08:00
|
|
|
a29k-* | \
|
2005-07-08 19:17:16 +08:00
|
|
|
hppa*-*-rtems* | \
|
|
|
|
*-go32-rtems* | \
|
|
|
|
i[3-7]86*-*-rtemscoff* | \
|
|
|
|
mips*el-*-rtems* | \
|
|
|
|
powerpcle-*-rtems* | \
|
|
|
|
sparc*-*-rtemsaout* | \
|
./
* configure.in (arm-*-oabi*, thumb-*-oabi*): Remove.
* configure: Regenerated.
bfd/
* Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Replace
elfarm-nabi with elf32-arm. Remove elfarm-oabi.
(elf32-arm.lo): Replace elfarm-nabi.lo rule. Remove elf32-arm.h
dependency.
* config.bfd: Move arm-*-oabi* and thumb-*-oabi* from obsolete list
to a new removed list. Remove normal configuration stanzas.
* configure.in: (bfd_elf32_bigarm_vec, bfd_elf32_bigarm_symbian_vec)
(bfd_elf32_littlearm_symbian_vec, bfd_elf32_littlearm_vec): Replace
elfarm-nabi.lo with elf32-arm.lo.
(bfd_elf32_bigarm_oabi_vec, bfd_elf32_littlearm_oabi_vec): Remove.
* elf32-arm.c: Renamed from elfarm-nabi.c. Inline elf32-arm.h.
* elf32-arm.h: Remove.
* elfarm-oabi.c: Remove.
* targets.c (_bfd_target_vector): Remove bfd_elf32_bigarm_oabi_vec
and bfd_elf32_littlearm_oabi_vec.
* aclocal.m4, Makefile.in, configure, doc/Makefile.in: Regenerated.
gas/
* configure.in: Remove arm-*-oabi and thumb-*-oabi.
* config/tc-arm.c (target_oabi): Delete.
(md_apply_fix3, elf32_arm_target_format): Remove target_oabi checks.
(arm_opts): Remove moabi.
* doc/as.texinfo (Overview): Remove documentation of -moabi.
* doc/c-arm.texi (ARM Options): Likewise.
* configure: Regenerated.
ld/
* Makefile.am (ALL_EMULATIONS): Remove earmelf_oabi.o.
(earmelf_oabi.c): Remove rule.
* configure.tgt: Remove arm-*-oabi and thumb-*-oabi.
* emulparams/armelf_oabi.sh, emultempl/armelf_oabi.em: Delete files.
* Makefile.in: Regenerated.
2004-11-04 23:54:50 +08:00
|
|
|
null)
|
|
|
|
echo "*** Configuration $targ is obsolete." >&2
|
|
|
|
echo "*** Support has been REMOVED." >&2
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
2003-08-01 16:35:04 +08:00
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_cpu=`echo $targ | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
|
|
|
case "${targ_cpu}" in
|
2004-10-15 13:47:11 +08:00
|
|
|
alpha*) targ_archs=bfd_alpha_arch ;;
|
|
|
|
arm*) targ_archs=bfd_arm_arch ;;
|
2005-09-30 23:36:41 +08:00
|
|
|
bfin*) targ_archs=bfd_bfin_arch ;;
|
2004-10-15 13:47:11 +08:00
|
|
|
c30*) targ_archs=bfd_tic30_arch ;;
|
|
|
|
c4x*) targ_archs=bfd_tic4x_arch ;;
|
|
|
|
c54x*) targ_archs=bfd_tic54x_arch ;;
|
* config.bfd: Support crisv32-*-* like cris-*-*.
* archures.c (bfd_mach_cris_v0_v10, bfd_mach_cris_v32)
(bfd_mach_cris_v10_v32): New macros.
* cpu-cris.c: Tweak formatting.
(get_compatible): New function.
(N): New macro.
(bfd_cris_arch_compat_v10_v32, bfd_cris_arch_v32): New
bfd_arch_info_type:s.
(bfd_cris_arch): Use bfd_mach_cris_v0_v10 for member mach,
get_compatible for member compatible and link bfd_cris_arch_v32 as
next.
* elf32-cris.c (cris_elf_pcrel_reloc)
(cris_elf_set_mach_from_flags): New functions.
(cris_elf_howto_table) <R_CRIS_8_PCREL, R_CRIS_16_PCREL>
<R_CRIS_32_PCREL>: Use cris_elf_pcrel_reloc.
(cris_elf_grok_prstatus, cris_elf_grok_psinfo): Give correct
numbers for bfd_mach_cris_v32.
(PLT_ENTRY_SIZE_V32): New macro.
(elf_cris_plt0_entry): Drop last comma in initializer.
(elf_cris_plt0_entry_v32, elf_cris_plt_entry_v32)
(elf_cris_pic_plt0_entry_v32, elf_cris_pic_plt_entry_v32): New
PLT initializers.
(cris_elf_relocate_section): Change all "%B(%A)" messages to
"%B, section %A".
(elf_cris_finish_dynamic_symbol): Do V32-specific PLT entries.
(elf_cris_finish_dynamic_sections): Similar.
(elf_cris_adjust_dynamic_symbol): Similar.
(cris_elf_check_relocs): Change all "%B(%A)" messages to "%B,
section %A".
<switch with PIC relocs>: Emit error and return FALSE for
bfd_mach_cris_v10_v32.
<case R_CRIS_8_PCREL, case R_CRIS_16_PCREL, case R_CRIS_32_PCREL>:
Emit warning when generating textrel reloc.
(cris_elf_object_p): Call cris_elf_set_mach_from_flags.
(cris_elf_final_write_processing): Set flags according to mach.
(cris_elf_print_private_bfd_data): Display
EF_CRIS_VARIANT_COMMON_V10_V32 and EF_CRIS_VARIANT_V32.
(cris_elf_merge_private_bfd_data): Drop variables old_flags,
new_flags. Don't call cris_elf_final_write_processing. Don't
look at the actual elf header flags at all; use
bfd_get_symbol_leading_char to check ibfd, obfd. Trap difference
in bfd_get_mach for ibfd and obfd and handle merging of compatible
objects.
(bfd_elf32_bfd_copy_private_bfd_data): Define.
* reloc.c (BFD_RELOC_CRIS_SIGNED_8, BFD_RELOC_CRIS_UNSIGNED_8)
(BFD_RELOC_CRIS_SIGNED_16, BFD_RELOC_CRIS_UNSIGNED_16)
(BFD_RELOC_CRIS_LAPCQ_OFFSET): New relocs.
* bfd-in2.h, libbfd.h: Regenerate.
2004-11-04 22:58:13 +08:00
|
|
|
crisv32) targ_archs=bfd_cris_arch ;;
|
2004-10-15 13:47:11 +08:00
|
|
|
crx*) targ_archs=bfd_crx_arch ;;
|
2002-05-28 22:08:47 +08:00
|
|
|
dlx*) targ_archs=bfd_dlx_arch ;;
|
2004-10-15 13:47:11 +08:00
|
|
|
hppa*) targ_archs=bfd_hppa_arch ;;
|
|
|
|
i[3-7]86) targ_archs=bfd_i386_arch ;;
|
|
|
|
i370) targ_archs=bfd_i370_arch ;;
|
2000-06-19 09:22:44 +08:00
|
|
|
m6811*|m68hc11*) targ_archs="bfd_m68hc11_arch bfd_m68hc12_arch" ;;
|
|
|
|
m6812*|m68hc12*) targ_archs="bfd_m68hc12_arch bfd_m68hc11_arch" ;;
|
2004-10-15 13:47:11 +08:00
|
|
|
m68*) targ_archs=bfd_m68k_arch ;;
|
|
|
|
m88*) targ_archs=bfd_m88k_arch ;;
|
2004-11-08 21:17:43 +08:00
|
|
|
maxq*) targ_archs=bfd_maxq_arch ;;
|
2004-10-15 13:47:11 +08:00
|
|
|
mips*) targ_archs=bfd_mips_arch ;;
|
2002-02-01 01:33:08 +08:00
|
|
|
or32*) targ_archs=bfd_or32_arch ;;
|
2004-10-15 13:47:11 +08:00
|
|
|
pdp11*) targ_archs=bfd_pdp11_arch ;;
|
|
|
|
pj*) targ_archs="bfd_pj_arch bfd_i386_arch";;
|
|
|
|
powerpc*) targ_archs="bfd_rs6000_arch bfd_powerpc_arch" ;;
|
|
|
|
rs6000) targ_archs="bfd_rs6000_arch bfd_powerpc_arch" ;;
|
|
|
|
s390*) targ_archs=bfd_s390_arch ;;
|
|
|
|
sh*) targ_archs=bfd_sh_arch ;;
|
|
|
|
sparc*) targ_archs=bfd_sparc_arch ;;
|
|
|
|
strongarm*) targ_archs=bfd_arm_arch ;;
|
|
|
|
thumb*) targ_archs=bfd_arm_arch ;;
|
|
|
|
v850*) targ_archs=bfd_v850_arch ;;
|
|
|
|
x86_64) targ_archs=bfd_i386_arch ;;
|
|
|
|
xscale*) targ_archs=bfd_arm_arch ;;
|
|
|
|
xtensa*) targ_archs=bfd_xtensa_arch ;;
|
2005-10-26 01:40:19 +08:00
|
|
|
z80|r800) targ_archs=bfd_z80_arch ;;
|
2004-10-15 13:47:11 +08:00
|
|
|
z8k*) targ_archs=bfd_z8k_arch ;;
|
|
|
|
am33_2.0) targ_archs=bfd_mn10300_arch ;;
|
|
|
|
*) targ_archs=bfd_${targ_cpu}_arch ;;
|
1999-05-03 15:29:11 +08:00
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
|
|
# WHEN ADDING ENTRIES TO THIS MATRIX:
|
|
|
|
# Make sure that the left side always has two dashes. Otherwise you
|
|
|
|
# can get spurious matches. Even for unambiguous cases, do this as a
|
|
|
|
# convention, else the table becomes a real mess to understand and maintain.
|
2003-06-03 03:25:51 +08:00
|
|
|
#
|
|
|
|
# Keep obsolete entries above the START comment, to keep them out of
|
|
|
|
# targmatch.h.
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
case "${targ}" in
|
2003-06-03 03:25:51 +08:00
|
|
|
mips*-dec-bsd*)
|
2004-04-11 12:07:46 +08:00
|
|
|
echo "This target is obsolete and has been removed."
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
|
|
|
|
mips*-*-mach3*)
|
|
|
|
echo "This target is obsolete and has been removed."
|
2003-06-03 03:25:51 +08:00
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
|
|
|
|
mips*-*-pe*)
|
2004-04-11 12:07:46 +08:00
|
|
|
echo "This target is obsolete and has been removed."
|
2003-06-03 03:25:51 +08:00
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
# START OF targmatch.h
|
|
|
|
#ifdef BFD64
|
2003-09-03 17:32:21 +08:00
|
|
|
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
|
2002-09-17 10:24:40 +08:00
|
|
|
targ_defvec=bfd_elf64_alpha_freebsd_vec
|
|
|
|
targ_selvecs=ecoffalpha_little_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2002-09-17 10:24:40 +08:00
|
|
|
# FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
|
|
|
|
case "${targ}" in
|
|
|
|
alpha*-*-freebsd3* | alpha*-*-freebsd4 | alpha*-*-freebsd4.0*)
|
|
|
|
targ_cflags=-DOLD_FREEBSD_ABI_LABEL ;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
alpha*-*-netbsd* | alpha*-*-openbsd*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf64_alpha_vec
|
|
|
|
targ_selvecs=ecoffalpha_little_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
|
|
|
alpha*-*-netware*)
|
|
|
|
targ_defvec=ecoffalpha_little_vec
|
|
|
|
targ_selvecs=nlm32_alpha_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
|
|
|
alpha*-*-linuxecoff*)
|
|
|
|
targ_defvec=ecoffalpha_little_vec
|
|
|
|
targ_selvecs=bfd_elf64_alpha_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2005-03-23 23:35:50 +08:00
|
|
|
alpha*-*-linux-* | alpha*-*-elf*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf64_alpha_vec
|
|
|
|
targ_selvecs=ecoffalpha_little_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
|
|
|
alpha*-*-*vms*)
|
|
|
|
targ_defvec=vms_alpha_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
|
|
|
alpha*-*-*)
|
|
|
|
targ_defvec=ecoffalpha_little_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2005-03-23 23:35:50 +08:00
|
|
|
ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
|
2000-04-22 04:22:24 +08:00
|
|
|
targ_defvec=bfd_elf64_ia64_little_vec
|
|
|
|
targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2000-04-22 04:22:24 +08:00
|
|
|
;;
|
2000-11-07 08:43:26 +08:00
|
|
|
ia64*-*-hpux*)
|
2001-12-19 10:14:37 +08:00
|
|
|
targ_defvec=bfd_elf32_ia64_hpux_big_vec
|
|
|
|
targ_selvecs="bfd_elf64_ia64_hpux_big_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2000-11-07 08:43:26 +08:00
|
|
|
;;
|
2003-09-03 17:32:21 +08:00
|
|
|
sparc64-*-freebsd* | sparc64-*-netbsd* | sparc64-*-openbsd* | sparc64-*-kfreebsd*-gnu)
|
2000-04-22 05:50:52 +08:00
|
|
|
targ_defvec=bfd_elf64_sparc_vec
|
|
|
|
targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2000-04-22 05:50:52 +08:00
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
#endif /* BFD64 */
|
|
|
|
|
2003-07-10 12:44:37 +08:00
|
|
|
am33_2.0-*-linux*)
|
|
|
|
targ_defvec=bfd_elf32_am33lin_vec
|
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
arc-*-elf*)
|
|
|
|
targ_defvec=bfd_elf32_littlearc_vec
|
|
|
|
targ_selvecs=bfd_elf32_bigarc_vec
|
|
|
|
;;
|
|
|
|
|
2002-05-21 23:11:04 +08:00
|
|
|
armeb-*-netbsdelf*)
|
|
|
|
targ_defvec=bfd_elf32_bigarm_vec
|
|
|
|
targ_selvecs="bfd_elf32_littlearm_vec armnetbsd_vec"
|
|
|
|
;;
|
2001-12-20 11:18:23 +08:00
|
|
|
arm-*-netbsdelf*)
|
|
|
|
targ_defvec=bfd_elf32_littlearm_vec
|
|
|
|
targ_selvecs="bfd_elf32_bigarm_vec armnetbsd_vec"
|
|
|
|
;;
|
2001-09-14 19:46:40 +08:00
|
|
|
arm-*-netbsd* | arm-*-openbsd*)
|
1999-08-24 23:16:53 +08:00
|
|
|
targ_defvec=armnetbsd_vec
|
2002-05-30 05:10:18 +08:00
|
|
|
targ_selvecs="bfd_elf32_littlearm_vec bfd_elf32_bigarm_vec"
|
1999-08-24 23:16:53 +08:00
|
|
|
targ_underscore=yes
|
2003-07-12 19:16:46 +08:00
|
|
|
targ_cflags=-D__QNXTARGET__
|
1999-08-24 23:16:53 +08:00
|
|
|
;;
|
2002-07-31 01:32:30 +08:00
|
|
|
arm-*-nto* | nto*arm*)
|
* Makefile.am: Remove entries for elf32-qnx.[ch].
* Makefile.in: Regenerate.
* config.bfd: Change arm-nto to use bfd_elf32_{big|little}arm_vec,
ppc-nto to use bfd_elf32_powerpc{le}_vec, sh-nto to use
bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
* configure.in: Remove support for bfd_elf32_sh{l}qnx_vec,
bfd_elf32_powerpc{le}qnx_vec, bfd_elf32_{big|little}armqnx_vec,
and bfd_elf32_i386qnx_vec, and removed elf32-qnx.lo from other targets.
bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
* configure: Regenerate.
* elf32-qnx.c: Remove.
* elf32-qnx.h: Remove.
* elf.c: Remove calls to QNX specific set_nonloadable_filepos,
is_contained_by_filepos, and copy_private_bfd_data_p.
* elf32-i386.c: Remove QNX extended bfd support.
* elf32-ppc.c: Remove QNX extended bfd support.
* elf32-sh.c: Remove QNX extended bfd support.
* elfarm-nabi.c: Remove QNX extended bfd support.
* targets.c: Remove qnx vectors.
* elfxx-target.h (elf_backend_set_nonloadable_filepos): Remove
(elf_backend_is_contained_by_filepos): Remove.
(elf_backend_copy_private_bfd_data_p): Remove.
* po/SRC-POTFILES.in: Regenerate.
2002-11-06 19:38:35 +08:00
|
|
|
targ_defvec=bfd_elf32_littlearm_vec
|
|
|
|
targ_selvecs=bfd_elf32_bigarm_vec
|
2002-07-31 01:32:30 +08:00
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
arm-*-riscix*)
|
|
|
|
targ_defvec=riscix_vec
|
|
|
|
;;
|
|
|
|
arm-epoc-pe*)
|
|
|
|
targ_defvec=arm_epoc_pe_little_vec
|
|
|
|
targ_selvecs="arm_epoc_pe_little_vec arm_epoc_pe_big_vec arm_epoc_pei_little_vec arm_epoc_pei_big_vec"
|
|
|
|
targ_underscore=no
|
2001-08-01 23:18:32 +08:00
|
|
|
targ_cflags=-DARM_COFF_BUGFIX
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2000-02-29 02:56:11 +08:00
|
|
|
arm-wince-pe | arm-*-wince)
|
|
|
|
targ_defvec=armpe_little_vec
|
|
|
|
targ_selvecs="armpe_little_vec armpe_big_vec armpei_little_vec armpei_big_vec"
|
|
|
|
targ_underscore=no
|
2003-07-17 22:27:38 +08:00
|
|
|
targ_cflags="-DARM_WINCE -DARM_COFF_BUGFIX"
|
2000-02-29 02:56:11 +08:00
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
arm-*-pe*)
|
|
|
|
targ_defvec=armpe_little_vec
|
|
|
|
targ_selvecs="armpe_little_vec armpe_big_vec armpei_little_vec armpei_big_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2000-06-19 09:22:44 +08:00
|
|
|
arm-*-aout | armel-*-aout)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=aout_arm_little_vec
|
|
|
|
targ_selvecs=aout_arm_big_vec
|
|
|
|
;;
|
|
|
|
armeb-*-aout)
|
|
|
|
targ_defvec=aout_arm_big_vec
|
|
|
|
targ_selvecs=aout_arm_little_vec
|
|
|
|
;;
|
|
|
|
arm-*-coff)
|
|
|
|
targ_defvec=armcoff_little_vec
|
|
|
|
targ_selvecs=armcoff_big_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2000-12-02 02:37:16 +08:00
|
|
|
arm-*-rtems*)
|
|
|
|
targ_defvec=bfd_elf32_littlearm_vec
|
|
|
|
targ_selvecs=bfd_elf32_bigarm_vec
|
|
|
|
;;
|
2005-03-23 23:35:50 +08:00
|
|
|
armeb-*-elf | arm*b-*-linux-*)
|
2000-05-15 02:49:34 +08:00
|
|
|
targ_defvec=bfd_elf32_bigarm_vec
|
|
|
|
targ_selvecs=bfd_elf32_littlearm_vec
|
|
|
|
;;
|
2003-02-11 21:47:08 +08:00
|
|
|
arm-*-kaos* | strongarm-*-kaos*)
|
|
|
|
targ_defvec=bfd_elf32_littlearm_vec
|
|
|
|
targ_selvecs=bfd_elf32_bigarm_vec
|
|
|
|
;;
|
2005-03-23 23:35:50 +08:00
|
|
|
arm-*-elf | arm-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \
|
2005-01-07 00:18:25 +08:00
|
|
|
arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \
|
2004-09-04 01:15:44 +08:00
|
|
|
arm*-*-eabi* )
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_littlearm_vec
|
|
|
|
targ_selvecs=bfd_elf32_bigarm_vec
|
|
|
|
;;
|
2005-01-07 00:18:25 +08:00
|
|
|
arm*-*-vxworks | arm*-*-windiss)
|
|
|
|
targ_defvec=bfd_elf32_littlearm_vxworks_vec
|
|
|
|
targ_selvecs=bfd_elf32_bigarm_vxworks_vec
|
|
|
|
;;
|
2004-09-04 01:15:44 +08:00
|
|
|
arm*-*-symbianelf*)
|
|
|
|
targ_defvec=bfd_elf32_littlearm_symbian_vec
|
|
|
|
targ_selvecs=bfd_elf32_bigarm_symbian_vec
|
|
|
|
;;
|
2001-10-09 03:11:36 +08:00
|
|
|
arm9e-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_littlearm_vec
|
|
|
|
targ_selvecs=bfd_elf32_bigarm_vec
|
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
thumb-*-coff)
|
|
|
|
targ_defvec=armcoff_little_vec
|
|
|
|
targ_selvecs=armcoff_big_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
thumb-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_littlearm_vec
|
|
|
|
targ_selvecs=bfd_elf32_bigarm_vec
|
|
|
|
;;
|
|
|
|
thumb-epoc-pe*)
|
|
|
|
targ_defvec=arm_epoc_pe_little_vec
|
|
|
|
targ_selvecs="arm_epoc_pe_little_vec arm_epoc_pe_big_vec arm_epoc_pei_little_vec arm_epoc_pei_big_vec"
|
|
|
|
targ_underscore=no
|
|
|
|
;;
|
|
|
|
thumb-*-pe*)
|
|
|
|
targ_defvec=armpe_little_vec
|
|
|
|
targ_selvecs="armpe_little_vec armpe_big_vec armpei_little_vec armpei_big_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
strongarm-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_littlearm_vec
|
|
|
|
targ_selvecs=bfd_elf32_bigarm_vec
|
|
|
|
;;
|
|
|
|
strongarm-*-coff)
|
|
|
|
targ_defvec=armcoff_little_vec
|
|
|
|
targ_selvecs=armcoff_big_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2000-11-25 08:21:40 +08:00
|
|
|
xscale-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_littlearm_vec
|
|
|
|
targ_selvecs=bfd_elf32_bigarm_vec
|
|
|
|
;;
|
|
|
|
xscale-*-coff)
|
|
|
|
targ_defvec=armcoff_little_vec
|
|
|
|
targ_selvecs=armcoff_big_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
2000-03-27 16:39:14 +08:00
|
|
|
avr-*-*)
|
|
|
|
targ_defvec=bfd_elf32_avr_vec
|
|
|
|
;;
|
|
|
|
|
2005-09-30 23:36:41 +08:00
|
|
|
bfin-*-*)
|
|
|
|
targ_defvec=bfd_elf32_bfin_vec
|
* config.bfd (bfin-*-*): Add bfd_elf32_bfinfdpic_vec.
* configure.in: Likewise.
* configure: Regenerate.
* elf32-bfin.c: Include "elf/dwarf2.h" and "hashtab.h".
(BFIN_RELOC_MAX): Now 0x21.
(bfin_howto_table, bfin_reloc_map): Add FD-PIC relocs.
(bfd_elf32_bfinfdpic_vec): Declare.
(IS_FDPIC): New macro.
(struct bfinfdpic_elf_link_hash_table): New struct.
(bfinfdpic_hash_table, bfinfdpic_got_section,
bfinfdpic_gotrel_section, bfinfdpic_gotfixup_section,
bfinfdpic_plt_setion, bfinfdpic_pltrel_section,
bfinfdpic_relocs_info, bfinfdpic_got_initial_offset,
bfinfdpic_plt_initial_offset): Accessor macros for it.
(BFINFDPIC_SYM_LOCAL, BFINFDPIC_FUNCDESC_LOCAL): New macros.
(struct bfinfdpic_relocs_info): New struct.
(LZPLT_RESOLVER_EXTRA, LZPLT_NORMAL_SIZE, LZPLT_ENTRIES,
BFINFDPIC_LZPLT_BLOCK_SIZE, BFINFDPIC_LZPLT_RESOLV_LOC,
DEFAULT_STACK_SIZE): New macros.
(bfinfdpic_elf_link_hash_table_create, bfinfdpic_relocs_info_hash,
bfinfdpic_relocs_info_eq, bfinfdpics_relocs_info_find,
bfinfdpic_relocs_info_for_global, bfinfdpic_relocs_info_for_local,
bfinfdpic_pic_merge_early_relocs_info, _bfinfdpic_add_dyn_reloc,
_bfinfdpic_add_rofixup, _bfinfdpic_osec_to_segment,
_bfinfdpic_osec_readonly_p, bfinfdpic_relocate_section,
bfinfdpic_check_relocs, bfinfdpic_gc_sweep_hook,
_bfinfdpic_link_omit_section_dynsym, _bfin_create_got_section,
elf32_bfinfdpic_create_dynamic_sections, _bfinfdpic_get_fd_entry,
_bfinfdpic_compute_got_alloc_data, _bfinfdpic_get_got_entry,
_bfinfdpic_assign_got_entries, _bfinfdpic_assign_plt_entries,
_bfinfdpic_resolve_final_relocs_info,
elf32_bfinfdpic_size_dynamic_sections,
elf32_bfinfdpic_always_size_sections,
elf32_bfinfdpic_modify_segment_map,
_bfinfdpic_count_got_plt_entries,
elf32_bfinfdpic_finish_dynamic_sections,
elf32_bfinfdpic_adjust_dynamic_symbol,
elf32_bfinfdpic_finish_dynamic_symbol,
elf32_bfinfdpic_elf_use_relative_eh_frame,
elf32_bfinfdpic_elf_encode_eh_address,
elf32_bfin_object_p, bfin_elf_copy_private_bfd_data,
elf32_bfinfdpic_copy_private_bfd_data,
(struct _bfinfdpic_dynamic_got_info,
struct _bfinfdpic_dynamic_got_plt_info): New structs.
(elf32_bfin_print_private_bfd_data): Print PIC flags.
(elf32_bfin_merge_private_bfd_data): Extend to support FD-PIC.
(TARGET_LITTLE_SYM, TARGET_LITTLE_NAME, elf32_bed,
elf_backend_got_header_size, bfd_elf32_bfd_link_hash_table_create,
elf_backend_always_size_sectinos, elf_backend_modify_segment_map,
bfd_elf32_bfd_copy_private_bfd_data,
elf_backend_create_dynamic_sections, elf_backend_adjust_dynamic_symbol,
elf_backend_size_dynamic_sections, elf_backend_finish_dynamic_symbol,
elf_backend_finish_dynamic_sections, elf_backend_relocate_section,
elf_backend_can_make_relative_eh_frame, elf_backend_check_relocs,
elf_backend_can_make_ldsa_relative_eh_frame, elf_backend_may_use_rel_p,
elf_backend_may_use_rela_p, elf_backend_default_use_rela_p,
elf_backend_omit_section_dynsym): Redefine these macros and include
"elf32-target.h" again to create the elf32-bfinfdpic target.
* reloc.c (BFD_RELOC_BFIN_GOT17M4, BFD_RELOC_BFIN_GOTHI,
BFD_RELOC_BFIN_GOTLO, BFD_RELOC_BFIN_FUNCDESC,
BFD_RELOC_BFIN_FUNCDESC_GOT17M4, BFD_RELOC_BFIN_FUNCDESC_GOTHI,
BFD_RELOC_BFIN_FUNCDESC_GOTLO, BFD_RELOC_BFIN_FUNCDESC_VALUE,
BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4, BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO, BFD_RELOC_BFIN_GOTOFFHI,
BFD_RELOC_BFIN_GOTOFFLO): New.
* targets.c (bfd_elf32_bfinfdpic_vec): New bfd_target.
(_bfd_target_vector): Add it.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
2006-03-26 08:38:42 +08:00
|
|
|
targ_selvecs=bfd_elf32_bfinfdpic_vec
|
|
|
|
targ_underscore=yes
|
2005-09-30 23:36:41 +08:00
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
c30-*-*aout* | tic30-*-*aout*)
|
|
|
|
targ_defvec=tic30_aout_vec
|
|
|
|
;;
|
|
|
|
c30-*-*coff* | tic30-*-*coff*)
|
|
|
|
targ_defvec=tic30_coff_vec
|
|
|
|
;;
|
|
|
|
|
2003-06-20 16:36:19 +08:00
|
|
|
c4x-*-*coff* | tic4x-*-*coff* | tic4x-*-rtems*)
|
2002-08-28 18:38:51 +08:00
|
|
|
targ_defvec=tic4x_coff1_vec
|
|
|
|
targ_selvecs="tic4x_coff1_beh_vec tic4x_coff2_vec tic4x_coff2_beh_vec tic4x_coff0_vec tic4x_coff0_beh_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
2000-04-08 01:06:58 +08:00
|
|
|
c54x*-*-*coff* | tic54x-*-*coff*)
|
|
|
|
targ_defvec=tic54x_coff1_vec
|
|
|
|
targ_selvecs="tic54x_coff1_beh_vec tic54x_coff2_vec tic54x_coff2_beh_vec tic54x_coff0_vec tic54x_coff0_beh_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
2004-03-30 22:04:32 +08:00
|
|
|
cr16c-*-elf*)
|
|
|
|
targ_defvec=bfd_elf32_cr16c_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
* config.bfd: Support crisv32-*-* like cris-*-*.
* archures.c (bfd_mach_cris_v0_v10, bfd_mach_cris_v32)
(bfd_mach_cris_v10_v32): New macros.
* cpu-cris.c: Tweak formatting.
(get_compatible): New function.
(N): New macro.
(bfd_cris_arch_compat_v10_v32, bfd_cris_arch_v32): New
bfd_arch_info_type:s.
(bfd_cris_arch): Use bfd_mach_cris_v0_v10 for member mach,
get_compatible for member compatible and link bfd_cris_arch_v32 as
next.
* elf32-cris.c (cris_elf_pcrel_reloc)
(cris_elf_set_mach_from_flags): New functions.
(cris_elf_howto_table) <R_CRIS_8_PCREL, R_CRIS_16_PCREL>
<R_CRIS_32_PCREL>: Use cris_elf_pcrel_reloc.
(cris_elf_grok_prstatus, cris_elf_grok_psinfo): Give correct
numbers for bfd_mach_cris_v32.
(PLT_ENTRY_SIZE_V32): New macro.
(elf_cris_plt0_entry): Drop last comma in initializer.
(elf_cris_plt0_entry_v32, elf_cris_plt_entry_v32)
(elf_cris_pic_plt0_entry_v32, elf_cris_pic_plt_entry_v32): New
PLT initializers.
(cris_elf_relocate_section): Change all "%B(%A)" messages to
"%B, section %A".
(elf_cris_finish_dynamic_symbol): Do V32-specific PLT entries.
(elf_cris_finish_dynamic_sections): Similar.
(elf_cris_adjust_dynamic_symbol): Similar.
(cris_elf_check_relocs): Change all "%B(%A)" messages to "%B,
section %A".
<switch with PIC relocs>: Emit error and return FALSE for
bfd_mach_cris_v10_v32.
<case R_CRIS_8_PCREL, case R_CRIS_16_PCREL, case R_CRIS_32_PCREL>:
Emit warning when generating textrel reloc.
(cris_elf_object_p): Call cris_elf_set_mach_from_flags.
(cris_elf_final_write_processing): Set flags according to mach.
(cris_elf_print_private_bfd_data): Display
EF_CRIS_VARIANT_COMMON_V10_V32 and EF_CRIS_VARIANT_V32.
(cris_elf_merge_private_bfd_data): Drop variables old_flags,
new_flags. Don't call cris_elf_final_write_processing. Don't
look at the actual elf header flags at all; use
bfd_get_symbol_leading_char to check ibfd, obfd. Trap difference
in bfd_get_mach for ibfd and obfd and handle merging of compatible
objects.
(bfd_elf32_bfd_copy_private_bfd_data): Define.
* reloc.c (BFD_RELOC_CRIS_SIGNED_8, BFD_RELOC_CRIS_UNSIGNED_8)
(BFD_RELOC_CRIS_SIGNED_16, BFD_RELOC_CRIS_UNSIGNED_16)
(BFD_RELOC_CRIS_LAPCQ_OFFSET): New relocs.
* bfd-in2.h, libbfd.h: Regenerate.
2004-11-04 22:58:13 +08:00
|
|
|
cris-*-* | crisv32-*-*)
|
2000-07-21 00:21:07 +08:00
|
|
|
targ_defvec=cris_aout_vec
|
Define two bfd_targets for absence and presence of leading
underscore on symbols. Make sure to only link same kind.
* elf32-cris.c (cris_elf_object_p,
cris_elf_final_write_processing, cris_elf_print_private_bfd_data,
cris_elf_merge_private_bfd_data): New.
(elf_backend_object_p, elf_backend_final_write_processing,
bfd_elf32_bfd_print_private_bfd_data,
bfd_elf32_bfd_merge_private_bfd_data): Define.
<Target vector definition>: Include elf32-target.h twice with
different macro settings:
(TARGET_LITTLE_SYM): First as bfd_elf32_cris_vec, then as
bfd_elf32_us_cris_vec.
(TARGET_LITTLE_NAME): First as "elf32-cris", then "elf32-us-cris".
(elf_symbol_leading_char): First as 0, then '_'.
(INCLUDED_TARGET_FILE): Define for second include of elf32-target.h.
* config.bfd (cris-*-*): Add bfd_elf32_us_cris_vec to targ_selvecs.
* configure.in (bfd_elf32_cris_vec, cris_aout_vec): New vector.
* configure: Regenerate.
* targets.c: Declare bfd_elf32_us_cris_vec.
* po/bfd.pot: Regenerate.
2000-09-30 01:05:22 +08:00
|
|
|
targ_selvecs="bfd_elf32_us_cris_vec bfd_elf32_cris_vec ieee_vec"
|
|
|
|
targ_underscore=yes # Note: not true for bfd_elf32_cris_vec.
|
2000-07-21 00:21:07 +08:00
|
|
|
;;
|
|
|
|
|
2004-07-08 01:28:53 +08:00
|
|
|
crx-*-elf*)
|
|
|
|
targ_defvec=bfd_elf32_crx_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
d10v-*-*)
|
|
|
|
targ_defvec=bfd_elf32_d10v_vec
|
|
|
|
;;
|
|
|
|
|
2002-05-28 22:08:47 +08:00
|
|
|
dlx-*-elf*)
|
|
|
|
targ_defvec=bfd_elf32_dlx_big_vec
|
|
|
|
targ_selvecs="bfd_elf32_dlx_big_vec"
|
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
d30v-*-*)
|
|
|
|
targ_defvec=bfd_elf32_d30v_vec
|
|
|
|
;;
|
|
|
|
|
|
|
|
fr30-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_fr30_vec
|
|
|
|
;;
|
|
|
|
|
2004-05-06 10:46:29 +08:00
|
|
|
frv-*-elf)
|
2002-06-19 05:10:55 +08:00
|
|
|
targ_defvec=bfd_elf32_frv_vec
|
2004-05-06 10:46:29 +08:00
|
|
|
targ_selvecs=bfd_elf32_frvfdpic_vec
|
2002-06-19 05:10:55 +08:00
|
|
|
;;
|
|
|
|
|
2004-05-06 10:46:29 +08:00
|
|
|
frv-*-*linux*)
|
|
|
|
targ_defvec=bfd_elf32_frvfdpic_vec
|
|
|
|
targ_selvecs=bfd_elf32_frv_vec
|
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
2005-04-30 02:41:45 +08:00
|
|
|
h8300*-*-rtemscoff*)
|
|
|
|
targ_defvec=h8300coff_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
|
|
|
h8300*-*-elf | h8300*-*-rtems*)
|
2001-08-29 09:33:52 +08:00
|
|
|
targ_defvec=bfd_elf32_h8300_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
h8300*-*-*)
|
|
|
|
targ_defvec=h8300coff_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
|
|
|
h8500-*-*)
|
|
|
|
targ_defvec=h8500coff_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
2000-06-19 09:22:44 +08:00
|
|
|
#ifdef BFD64
|
2005-03-23 23:35:50 +08:00
|
|
|
hppa*64*-*-linux-*)
|
2001-01-14 19:12:53 +08:00
|
|
|
targ_defvec=bfd_elf64_hppa_linux_vec
|
|
|
|
targ_selvecs=bfd_elf64_hppa_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2000-07-09 15:23:07 +08:00
|
|
|
;;
|
2000-05-19 00:55:34 +08:00
|
|
|
hppa*64*-*-hpux11*)
|
2000-04-24 16:31:33 +08:00
|
|
|
targ_defvec=bfd_elf64_hppa_vec
|
2001-01-14 19:12:53 +08:00
|
|
|
targ_selvecs=bfd_elf64_hppa_linux_vec
|
2000-04-24 16:31:33 +08:00
|
|
|
targ_cflags=-DHPUX_LARGE_AR_IDS
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2000-04-24 16:31:33 +08:00
|
|
|
;;
|
|
|
|
#endif
|
2000-07-09 15:23:07 +08:00
|
|
|
|
2005-03-23 23:35:50 +08:00
|
|
|
hppa*-*-linux-*)
|
2001-01-14 19:12:53 +08:00
|
|
|
targ_defvec=bfd_elf32_hppa_linux_vec
|
|
|
|
targ_selvecs=bfd_elf32_hppa_vec
|
|
|
|
;;
|
2004-07-29 11:48:13 +08:00
|
|
|
hppa*-*-netbsd*)
|
|
|
|
targ_defvec=bfd_elf32_hppa_nbsd_vec
|
|
|
|
targ_selvecs="bfd_elf32_hppa_vec bfd_elf32_hppa_linux_vec"
|
|
|
|
;;
|
2005-07-08 19:17:16 +08:00
|
|
|
hppa*-*-*elf* | hppa*-*-lites* | hppa*-*-sysv4* | hppa*-*-openbsd*)
|
2000-07-09 15:23:07 +08:00
|
|
|
targ_defvec=bfd_elf32_hppa_vec
|
2001-01-14 19:12:53 +08:00
|
|
|
targ_selvecs=bfd_elf32_hppa_linux_vec
|
2000-07-09 15:23:07 +08:00
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) || defined (HOST_HPPAMPEIX)
|
|
|
|
hppa*-*-bsd*)
|
|
|
|
targ_defvec=som_vec
|
|
|
|
targ_selvecs=bfd_elf32_hppa_vec
|
2000-04-24 16:31:33 +08:00
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
hppa*-*-hpux* | hppa*-*-hiux* | hppa*-*-mpeix*)
|
|
|
|
targ_defvec=som_vec
|
|
|
|
;;
|
|
|
|
hppa*-*-osf*)
|
|
|
|
targ_defvec=som_vec
|
|
|
|
targ_selvecs=bfd_elf32_hppa_vec
|
2000-04-24 16:31:33 +08:00
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
#endif /* defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) */
|
|
|
|
|
2004-10-15 13:47:11 +08:00
|
|
|
i370-*-*)
|
2000-02-23 21:52:23 +08:00
|
|
|
targ_defvec=bfd_elf32_i370_vec
|
|
|
|
targ_selvecs="bfd_elf32_i370_vec"
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-sco3.2v5*coff)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386coff_vec
|
|
|
|
targ_selvecs=bfd_elf32_i386_vec
|
|
|
|
;;
|
2004-10-08 21:55:11 +08:00
|
|
|
i[3-7]86-*-sysv4* | i[3-7]86-*-unixware* | \
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-elf | i[3-7]86-*-sco3.2v5* | \
|
|
|
|
i[3-7]86-*-dgux* | i[3-7]86-*-sysv5*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selvecs=i386coff_vec
|
|
|
|
;;
|
2004-10-08 21:55:11 +08:00
|
|
|
i[3-7]86-*-solaris2*)
|
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selvecs=i386coff_vec
|
|
|
|
targ64_selvecs=bfd_elf64_x86_64_vec
|
|
|
|
want64=true
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-kaos*)
|
2003-02-11 21:47:08 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selvecs=bfd_elf32_i386_vec
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-nto*)
|
* Makefile.am: Remove entries for elf32-qnx.[ch].
* Makefile.in: Regenerate.
* config.bfd: Change arm-nto to use bfd_elf32_{big|little}arm_vec,
ppc-nto to use bfd_elf32_powerpc{le}_vec, sh-nto to use
bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
* configure.in: Remove support for bfd_elf32_sh{l}qnx_vec,
bfd_elf32_powerpc{le}qnx_vec, bfd_elf32_{big|little}armqnx_vec,
and bfd_elf32_i386qnx_vec, and removed elf32-qnx.lo from other targets.
bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
* configure: Regenerate.
* elf32-qnx.c: Remove.
* elf32-qnx.h: Remove.
* elf.c: Remove calls to QNX specific set_nonloadable_filepos,
is_contained_by_filepos, and copy_private_bfd_data_p.
* elf32-i386.c: Remove QNX extended bfd support.
* elf32-ppc.c: Remove QNX extended bfd support.
* elf32-sh.c: Remove QNX extended bfd support.
* elfarm-nabi.c: Remove QNX extended bfd support.
* targets.c: Remove qnx vectors.
* elfxx-target.h (elf_backend_set_nonloadable_filepos): Remove
(elf_backend_is_contained_by_filepos): Remove.
(elf_backend_copy_private_bfd_data_p): Remove.
* po/SRC-POTFILES.in: Regenerate.
2002-11-06 19:38:35 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
2002-05-31 10:59:47 +08:00
|
|
|
targ_selvecs=i386coff_vec
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-aros*)
|
2003-01-22 00:08:31 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-chorus*)
|
2000-11-07 02:47:14 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
;;
|
2005-07-08 19:17:16 +08:00
|
|
|
*-*-msdosdjgpp* | *-*-go32* )
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=go32coff_vec
|
|
|
|
targ_selvecs="go32stubbedcoff_vec i386aout_vec"
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-sysv* | i[3-7]86-*-isc* | i[3-7]86-*-sco* | i[3-7]86-*-coff | \
|
|
|
|
i[3-7]86-*-aix*)
|
1999-05-13 17:49:09 +08:00
|
|
|
targ_defvec=i386coff_vec
|
|
|
|
;;
|
2005-07-22 18:34:30 +08:00
|
|
|
i[3-7]86-*-rtems*)
|
2001-08-30 02:47:28 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selvecs="i386coff_vec i386aout_vec"
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-darwin* | i[3-7]86-*-macos10* | i[3-7]86-*-rhapsody*)
|
2002-11-13 09:45:42 +08:00
|
|
|
targ_defvec=mach_o_le_vec
|
|
|
|
targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec"
|
|
|
|
targ_archs="bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch"
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-sequent-bsd*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386dynix_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-bsd*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386bsd_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | \
|
|
|
|
i[3-7]86-*-freebsd[12])
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386freebsd_vec
|
|
|
|
targ_selvecs=i386bsd_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2003-09-03 17:32:21 +08:00
|
|
|
i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu)
|
2002-09-17 10:24:40 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_freebsd_vec
|
1999-06-12 21:06:26 +08:00
|
|
|
targ_selvecs=i386coff_vec
|
2002-09-17 10:24:40 +08:00
|
|
|
# FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
|
|
|
|
case "${targ}" in
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-freebsd3* | i[3-7]86-*-freebsd4 | i[3-7]86-*-freebsd4.0*)
|
2002-09-17 10:24:40 +08:00
|
|
|
targ_cflags=-DOLD_FREEBSD_ABI_LABEL ;;
|
|
|
|
esac
|
1999-06-12 21:06:26 +08:00
|
|
|
;;
|
2003-10-06 17:12:39 +08:00
|
|
|
i[3-7]86-*-netbsdelf* | i[3-7]86-*-netbsd*-gnu* | i[3-7]86-*-knetbsd*-gnu)
|
2000-06-02 06:06:18 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selvecs=i386netbsd_vec
|
2004-03-15 08:02:56 +08:00
|
|
|
targ64_selvecs=bfd_elf64_x86_64_vec
|
2000-06-02 06:06:18 +08:00
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-netbsdpe*)
|
2002-05-24 17:26:58 +08:00
|
|
|
targ_defvec=i386pe_vec
|
|
|
|
targ_selvecs="i386pe_vec i386pei_vec bfd_elf32_i386_vec"
|
|
|
|
;;
|
2003-06-12 15:21:50 +08:00
|
|
|
i[3-7]86-*-netbsdaout* | i[3-7]86-*-netbsd* | \
|
|
|
|
i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3])
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386netbsd_vec
|
2000-06-02 06:06:18 +08:00
|
|
|
targ_selvecs="bfd_elf32_i386_vec i386bsd_vec"
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2004-10-15 13:47:11 +08:00
|
|
|
i[3-7]86-*-openbsd*)
|
2003-06-12 15:21:50 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selvecs=i386netbsd_vec
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-netware*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selvecs="nlm32_i386_vec i386coff_vec i386aout_vec"
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-linux*aout*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386linux_vec
|
|
|
|
targ_selvecs=bfd_elf32_i386_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2005-03-23 23:35:50 +08:00
|
|
|
i[3-7]86-*-linux-*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
2000-04-18 12:03:16 +08:00
|
|
|
targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
|
2002-08-01 14:24:53 +08:00
|
|
|
targ64_selvecs=bfd_elf64_x86_64_vec
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2001-12-04 22:38:48 +08:00
|
|
|
#ifdef BFD64
|
2005-03-15 22:14:08 +08:00
|
|
|
x86_64-*-elf*)
|
|
|
|
targ_defvec=bfd_elf64_x86_64_vec
|
|
|
|
targ_selvecs="bfd_elf32_i386_vec i386coff_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2005-03-15 22:14:08 +08:00
|
|
|
;;
|
2003-09-03 17:32:21 +08:00
|
|
|
x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
|
2006-08-03 00:25:14 +08:00
|
|
|
targ_defvec=bfd_elf64_x86_64_freebsd_vec
|
|
|
|
targ_selvecs="bfd_elf32_i386_freebsd_vec i386coff_vec bfd_efi_app_ia32_vec bfd_elf32_i386_vec bfd_elf64_x86_64_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2002-01-04 22:49:06 +08:00
|
|
|
;;
|
2004-03-13 20:33:48 +08:00
|
|
|
x86_64-*-netbsd* | x86_64-*-openbsd*)
|
2002-01-04 22:49:06 +08:00
|
|
|
targ_defvec=bfd_elf64_x86_64_vec
|
|
|
|
targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2001-02-19 14:33:41 +08:00
|
|
|
;;
|
2005-03-23 23:35:50 +08:00
|
|
|
x86_64-*-linux-*)
|
2000-12-01 03:16:54 +08:00
|
|
|
targ_defvec=bfd_elf64_x86_64_vec
|
|
|
|
targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2000-12-01 03:16:54 +08:00
|
|
|
;;
|
|
|
|
#endif
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-lynxos*)
|
2004-05-18 03:50:16 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selvecs="i386lynx_coff_vec i386lynx_aout_vec"
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-gnu*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-mach* | i[3-7]86-*-osf1mk*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386mach3_vec
|
|
|
|
targ_cflags=-DSTAT_FOR_EXEC
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-os9k)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386os9k_vec
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-msdos*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386aout_vec
|
|
|
|
targ_selvecs=i386msdos_vec
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-moss*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selvecs="i386msdos_vec i386aout_vec"
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-beospe*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386pe_vec
|
|
|
|
targ_selvecs="i386pe_vec i386pei_vec"
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-beoself* | i[3-7]86-*-beos*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selvecs="i386pe_vec i386pei_vec"
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-interix*)
|
1999-07-24 10:35:30 +08:00
|
|
|
targ_defvec=i386pei_vec
|
|
|
|
targ_selvecs="i386pe_vec"
|
1999-09-12 07:46:09 +08:00
|
|
|
# FIXME: This should eventually be checked at runtime.
|
|
|
|
targ_cflags=-DSTRICT_PE_FORMAT
|
1999-07-24 10:35:30 +08:00
|
|
|
;;
|
2005-12-28 01:42:45 +08:00
|
|
|
i[3-7]86-*-rdos*)
|
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selvecs=i386coff_vec
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386pe_vec
|
2000-01-11 02:50:16 +08:00
|
|
|
targ_selvecs="i386pe_vec i386pei_vec bfd_elf32_i386_vec"
|
2004-10-20 09:58:47 +08:00
|
|
|
targ_underscore=yes
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-none-*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386coff_vec
|
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-aout* | i[3-7]86*-*-vsta*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=i386aout_vec
|
|
|
|
;;
|
2005-08-31 00:06:00 +08:00
|
|
|
i[3-7]86-*-vxworks*)
|
2005-05-05 22:37:27 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vxworks_vec
|
1999-07-22 08:51:11 +08:00
|
|
|
targ_underscore=yes
|
1999-07-15 22:38:23 +08:00
|
|
|
;;
|
2003-05-17 00:30:27 +08:00
|
|
|
i[3-7]86-*-chaos)
|
2000-11-03 07:03:24 +08:00
|
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
|
|
targ_selfvecs=i386chaos_vec
|
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
i860-*-mach3* | i860-*-osf1* | i860-*-coff*)
|
|
|
|
targ_defvec=i860coff_vec
|
|
|
|
;;
|
2000-07-22 Jason Eckhardt <jle@cygnus.com>
* include/opcode/i860.h (btne, bte, bla): Changed these opcodes
to use sbroff ('r') instead of split16 ('s').
(J, K, L, M): New operand types for 16-bit aligned fields.
(ld.x, {p}fld.x, fst.x, pst.d): Changed these opcodes to
use I, J, K, L, M instead of just I.
(T, U): New operand types for split 16-bit aligned fields.
(st.x): Changed these opcodes to use S, T, U instead of just S.
(andh, andnoth, orh, xorh): Deleted 3-register forms as they do not
exist on the i860.
(pfgt.sd, pfle.sd): Deleted these as they do not exist on the i860.
(pfeq.ss, pfeq.dd): New opcodes.
(st.s): Fixed incorrect mask bits.
(fmlow): Fixed incorrect mask bits.
(fzchkl, pfzchkl): Fixed incorrect mask bits.
(faddz, pfaddz): Fixed incorrect mask bits.
(form, pform): Fixed incorrect mask bits.
(pfld.l): Fixed incorrect mask bits.
(fst.q): Fixed incorrect mask bits.
(all floating point opcodes): Fixed incorrect mask bits for
handling of dual bit.
* include/elf/i860.h: New file.
(elf_i860_reloc_type): Defined ELF32 i860 relocations.
* bfd/cpu-i860.c: Added comments.
* bfd/elf32-i860.c (TARGET_LITTLE_SYM): Defined to
bfd_elf32_i860_little_vec.
(TARGET_LITTLE_NAME): Defined to "elf32-i860-little".
(ELF_MAXPAGESIZE): Changed to 4096.
* bfd/targets.c (bfd_elf32_i860_little_vec): Declaration of
new target.
(bfd_target_vector): Added bfd_elf32_i860_little_vec.
* bfd/config.bfd (i860-stardent-sysv4*, i860-stardent-elf*): Added
config for little endian elf32 i860.
(targ_defvec): Define for the new config above
as "bfd_elf32_i860_little_vec".
(targ_selvecs): Define for the new config above
as "bfd_elf32_i860_vec bfd_elf32_i860_little_vec"
* bfd/configure.in (bfd_elf32_i860_little_vec): Added recognition
of new target vec.
* bfd/configure: Regenerated.
* opcodes/i860-dis.c: New file.
(print_insn_i860): New function.
(print_br_address): New function.
(sign_extend): New function.
(BITWISE_OP): New macro.
(I860_REG_PREFIX): New macro.
(grnames, frnames, crnames): New structures.
* opcodes/disassemble.c (ARCH_i860): Define.
(disassembler): Add check for bfd_arch_i860 to set disassemble
function to print_insn_i860.
* include/dis-asm.h (print_insn_i860): Add prototype.
* opcodes/Makefile.in (CFILES): Added i860-dis.c.
(ALL_MACHINES): Added i860-dis.lo.
(i860-dis.lo): New dependences.
* opcodes/configure.in: New bits for bfd_i860_arch.
* opcodes/configure: Regenerated.
2000-07-29 05:10:20 +08:00
|
|
|
i860-stardent-sysv4* | i860-stardent-elf*)
|
|
|
|
targ_defvec=bfd_elf32_i860_little_vec
|
|
|
|
targ_selvecs="bfd_elf32_i860_vec bfd_elf32_i860_little_vec"
|
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
i860-*-sysv4* | i860-*-elf*)
|
|
|
|
targ_defvec=bfd_elf32_i860_vec
|
|
|
|
;;
|
|
|
|
|
|
|
|
i960-*-vxworks4* | i960-*-vxworks5.0)
|
|
|
|
targ_defvec=b_out_vec_little_host
|
|
|
|
targ_selvecs="b_out_vec_big_host icoff_little_vec icoff_big_vec ieee_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
i960-*-vxworks5.* | i960-*-coff* | i960-*-sysv* | i960-*-rtems*)
|
|
|
|
targ_defvec=icoff_little_vec
|
|
|
|
targ_selvecs="icoff_big_vec b_out_vec_little_host b_out_vec_big_host ieee_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
i960-*-vxworks* | i960-*-aout* | i960-*-bout* | i960-*-nindy*)
|
|
|
|
targ_defvec=b_out_vec_little_host
|
|
|
|
targ_selvecs="b_out_vec_big_host icoff_little_vec icoff_big_vec ieee_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
1999-05-28 05:42:14 +08:00
|
|
|
i960-*-elf*)
|
|
|
|
targ_defvec=bfd_elf32_i960_vec
|
|
|
|
targ_selvecs="icoff_little_vec icoff_big_vec"
|
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
2002-07-17 22:15:52 +08:00
|
|
|
ip2k-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_ip2k_vec
|
|
|
|
;;
|
|
|
|
|
2003-01-04 05:12:28 +08:00
|
|
|
iq2000-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_iq2000_vec
|
|
|
|
;;
|
|
|
|
|
2005-07-18 22:13:36 +08:00
|
|
|
m32c-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_m32c_vec
|
|
|
|
;;
|
|
|
|
|
2003-12-19 19:44:01 +08:00
|
|
|
m32r*le-*-linux*)
|
|
|
|
targ_defvec=bfd_elf32_m32rlelin_vec
|
|
|
|
targ_selvecs="bfd_elf32_m32rlin_vec bfd_elf32_m32rlelin_vec"
|
|
|
|
;;
|
2004-10-15 13:47:11 +08:00
|
|
|
|
2003-12-19 19:44:01 +08:00
|
|
|
m32r*-*-linux*)
|
|
|
|
targ_defvec=bfd_elf32_m32rlin_vec
|
|
|
|
targ_selvecs="bfd_elf32_m32rlin_vec bfd_elf32_m32rlelin_vec"
|
|
|
|
;;
|
2004-10-15 13:47:11 +08:00
|
|
|
|
2003-12-19 19:44:01 +08:00
|
|
|
m32r*le-*-*)
|
|
|
|
targ_defvec=bfd_elf32_m32rle_vec
|
|
|
|
targ_selvecs="bfd_elf32_m32r_vec bfd_elf32_m32rle_vec"
|
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
m32r-*-*)
|
|
|
|
targ_defvec=bfd_elf32_m32r_vec
|
|
|
|
;;
|
|
|
|
|
2000-06-19 09:22:44 +08:00
|
|
|
m68hc11-*-* | m6811-*-*)
|
|
|
|
targ_defvec=bfd_elf32_m68hc11_vec
|
|
|
|
targ_selvecs="bfd_elf32_m68hc11_vec bfd_elf32_m68hc12_vec"
|
|
|
|
;;
|
|
|
|
m68hc12-*-* | m6812-*-*)
|
|
|
|
targ_defvec=bfd_elf32_m68hc12_vec
|
|
|
|
targ_selvecs="bfd_elf32_m68hc11_vec bfd_elf32_m68hc12_vec"
|
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
m68*-apollo-*)
|
|
|
|
targ_defvec=apollocoff_vec
|
|
|
|
;;
|
|
|
|
m68*-bull-sysv*)
|
|
|
|
targ_defvec=m68kcoffun_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
m68*-motorola-sysv*)
|
|
|
|
targ_defvec=m68ksysvcoff_vec
|
|
|
|
;;
|
|
|
|
m68*-hp-bsd*)
|
|
|
|
targ_defvec=hp300bsd_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
m68*-*-aout*)
|
|
|
|
targ_defvec=aout0_big_vec
|
1999-09-29 05:45:39 +08:00
|
|
|
# We include cisco_core_big_vec here, rather than making a separate cisco
|
1999-05-03 15:29:11 +08:00
|
|
|
# configuration, so that cisco-core.c gets routinely tested at
|
|
|
|
# least for compilation.
|
1999-09-29 05:45:39 +08:00
|
|
|
targ_selvecs="cisco_core_big_vec ieee_vec"
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2001-08-30 02:47:28 +08:00
|
|
|
m68*-*-rtemscoff*)
|
|
|
|
targ_defvec=m68kcoff_vec
|
|
|
|
targ_selvecs="m68kcoff_vec versados_vec ieee_vec aout0_big_vec"
|
|
|
|
;;
|
2004-01-03 00:37:12 +08:00
|
|
|
m68*-*-elf* | m68*-*-sysv4* | m68*-*-uclinux*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_m68k_vec
|
|
|
|
targ_selvecs="m68kcoff_vec ieee_vec"
|
|
|
|
;;
|
1999-05-13 17:49:09 +08:00
|
|
|
m68*-*-rtems*)
|
2001-08-30 02:47:28 +08:00
|
|
|
targ_defvec=bfd_elf32_m68k_vec
|
1999-05-13 17:49:09 +08:00
|
|
|
targ_selvecs="m68kcoff_vec versados_vec ieee_vec aout0_big_vec"
|
|
|
|
;;
|
|
|
|
m68*-*-coff* | m68*-*-sysv*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=m68kcoff_vec
|
|
|
|
targ_selvecs="m68kcoff_vec versados_vec ieee_vec"
|
|
|
|
;;
|
|
|
|
m68*-*-hpux*)
|
|
|
|
targ_defvec=hp300hpux_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
m68*-*-linux*aout*)
|
|
|
|
targ_defvec=m68klinux_vec
|
|
|
|
targ_selvecs=bfd_elf32_m68k_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2005-03-23 23:35:50 +08:00
|
|
|
m68*-*-linux-*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_m68k_vec
|
|
|
|
targ_selvecs=m68klinux_vec
|
|
|
|
;;
|
|
|
|
m68*-*-gnu*)
|
|
|
|
targ_defvec=bfd_elf32_m68k_vec
|
|
|
|
# targ_selvecs=m68kmach3_vec
|
|
|
|
# targ_cflags=-DSTAT_FOR_EXEC
|
|
|
|
;;
|
|
|
|
m68*-hp*-netbsd*)
|
|
|
|
targ_defvec=m68k4knetbsd_vec
|
|
|
|
targ_selvecs="m68knetbsd_vec hp300bsd_vec sunos_big_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2004-10-15 13:47:11 +08:00
|
|
|
m68*-*-netbsdelf*)
|
2001-12-18 21:26:26 +08:00
|
|
|
targ_defvec=bfd_elf32_m68k_vec
|
|
|
|
targ_selvecs="m68knetbsd_vec m68k4knetbsd_vec hp300bsd_vec sunos_big_vec"
|
|
|
|
;;
|
|
|
|
m68*-*-netbsdaout* | m68*-*-netbsd*)
|
|
|
|
targ_defvec=m68knetbsd_vec
|
|
|
|
targ_selvecs="m68k4knetbsd_vec bfd_elf32_m68k_vec hp300bsd_vec sunos_big_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
m68*-*-openbsd*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=m68knetbsd_vec
|
|
|
|
targ_selvecs="m68k4knetbsd_vec hp300bsd_vec sunos_big_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
m68*-*-sunos* | m68*-*-os68k* | m68*-*-vxworks* | m68*-netx-* | \
|
|
|
|
m68*-*-bsd* | m68*-*-vsta*)
|
|
|
|
targ_defvec=sunos_big_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
m68*-ericsson-*)
|
|
|
|
targ_defvec=sunos_big_vec
|
|
|
|
targ_selvecs="m68kcoff_vec versados_vec tekhex_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
m68*-cbm-*)
|
|
|
|
targ_defvec=bfd_elf32_m68k_vec
|
|
|
|
targ_selvecs=m68kcoff_vec
|
|
|
|
;;
|
|
|
|
m68*-apple-aux*)
|
|
|
|
targ_defvec=m68kaux_coff_vec
|
|
|
|
;;
|
|
|
|
m68*-*-psos*)
|
|
|
|
targ_defvec=bfd_elf32_m68k_vec
|
|
|
|
targ_selvecs=ieee_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
|
|
|
m88*-harris-cxux* | m88*-*-dgux* | m88*-*-sysv4*)
|
|
|
|
targ_defvec=bfd_elf32_m88k_vec
|
|
|
|
targ_selvecs=m88kbcs_vec
|
|
|
|
;;
|
|
|
|
m88*-*-mach3*)
|
|
|
|
targ_defvec=m88kmach3_vec
|
|
|
|
targ_cflags=-DSTAT_FOR_EXEC
|
|
|
|
;;
|
2004-06-26 15:05:15 +08:00
|
|
|
m88*-*-openbsd*)
|
2004-05-24 22:48:18 +08:00
|
|
|
targ_defvec=m88kopenbsd_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
m88*-*-*)
|
|
|
|
targ_defvec=m88kbcs_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
2004-11-08 21:17:43 +08:00
|
|
|
maxq-*-coff)
|
|
|
|
targ_defvec=maxqcoff_vec
|
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
mcore-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_mcore_big_vec
|
|
|
|
targ_selvecs="bfd_elf32_mcore_big_vec bfd_elf32_mcore_little_vec"
|
|
|
|
;;
|
|
|
|
mcore-*-pe)
|
|
|
|
targ_defvec=mcore_pe_big_vec
|
|
|
|
targ_selvecs="mcore_pe_big_vec mcore_pe_little_vec mcore_pei_big_vec mcore_pei_little_vec"
|
|
|
|
;;
|
|
|
|
|
|
|
|
mips*-big-*)
|
|
|
|
targ_defvec=ecoff_big_vec
|
|
|
|
targ_selvecs=ecoff_little_vec
|
|
|
|
;;
|
2001-12-20 13:38:52 +08:00
|
|
|
mips*el-*-netbsd*)
|
2006-02-16 16:05:02 +08:00
|
|
|
targ_defvec=bfd_elf32_tradlittlemips_vec
|
|
|
|
targ_selvecs="bfd_elf32_tradbigmips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec ecoff_little_vec ecoff_big_vec"
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2001-08-29 11:39:47 +08:00
|
|
|
mips*-*-netbsd*)
|
2006-02-16 16:05:02 +08:00
|
|
|
targ_defvec=bfd_elf32_tradbigmips_vec
|
|
|
|
targ_selvecs="bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec ecoff_big_vec ecoff_little_vec"
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
|
|
|
mips*-dec-* | mips*el-*-ecoff*)
|
|
|
|
targ_defvec=ecoff_little_vec
|
|
|
|
targ_selvecs=ecoff_big_vec
|
|
|
|
;;
|
|
|
|
mips*-*-ecoff*)
|
|
|
|
targ_defvec=ecoff_big_vec
|
|
|
|
targ_selvecs=ecoff_little_vec
|
|
|
|
;;
|
2001-12-06 06:46:21 +08:00
|
|
|
#ifdef BFD64
|
1999-05-03 15:29:11 +08:00
|
|
|
mips*-*-irix6*)
|
2002-09-05 07:10:59 +08:00
|
|
|
targ_defvec=bfd_elf32_nbigmips_vec
|
|
|
|
targ_selvecs="bfd_elf32_nlittlemips_vec bfd_elf32_bigmips_vec bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2001-12-06 06:46:21 +08:00
|
|
|
#endif
|
1999-05-03 15:29:11 +08:00
|
|
|
mips*-*-irix5*)
|
|
|
|
targ_defvec=bfd_elf32_bigmips_vec
|
|
|
|
targ_selvecs="bfd_elf32_littlemips_vec ecoff_big_vec ecoff_little_vec"
|
|
|
|
;;
|
|
|
|
mips*-sgi-* | mips*-*-bsd*)
|
|
|
|
targ_defvec=ecoff_big_vec
|
|
|
|
targ_selvecs=ecoff_little_vec
|
|
|
|
;;
|
|
|
|
mips*-*-lnews*)
|
|
|
|
targ_defvec=ecoff_biglittle_vec
|
|
|
|
targ_selvecs="ecoff_little_vec ecoff_big_vec"
|
|
|
|
;;
|
|
|
|
mips*-*-sysv4*)
|
2000-07-02 09:17:52 +08:00
|
|
|
targ_defvec=bfd_elf32_tradbigmips_vec
|
|
|
|
targ_selvecs="bfd_elf32_tradlittlemips_vec ecoff_big_vec ecoff_little_vec"
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
|
|
|
mips*-*-sysv* | mips*-*-riscos*)
|
|
|
|
targ_defvec=ecoff_big_vec
|
|
|
|
targ_selvecs=ecoff_little_vec
|
|
|
|
;;
|
Richard Sandiford <richard@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Phil Edwards <phil@codesourcery.com>
Zack Weinberg <zack@codesourcery.com>
Mark Mitchell <mark@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
bfd/
* bfd-in2.h: Regenerate.
* config.bfd (mips*-*-vxworks*, mips*el-*-vxworks*): New stanzas.
* configure.in (bfd_elf32_bigmips_vxworks_vec): New stanza.
(bfd_elf32_littlemips_vxworks_vec): Likewise.
(bfd_elf32_bigmips_vec): Add elf-vxworks.lo.
(bfd_elf32_littlemips_vec): Likewise.
(bfd_elf32_nbigmips_vec): Likewise.
(bfd_elf32_nlittlemips_vec): Likewise.
(bfd_elf32_ntradbigmips_vec): Likewise.
(bfd_elf32_ntradlittlemips_vec): Likewise.
(bfd_elf32_tradbigmips_vec): Likewise.
(bfd_elf32_tradlittlemips_vec): Likewise.
(bfd_elf64_bigmips_vec): Likewise.
(bfd_elf64_littlemips_vec): Likewise.
(bfd_elf64_tradbigmips_vec): Likewise.
(bfd_elf64_tradlittlemips_vec): Likewise.
* elf32-mips.c: Include elf-vxworks.h.
(mips_info_to_howto_rel): Use elf_backend_mips_rtype_to_howto
instead of calling mips_elf32_rtype_to_howto directly.
(mips_vxworks_copy_howto_rela): New reloc howto.
(mips_vxworks_jump_slot_howto_rela): Likewise.
(mips_vxworks_bfd_reloc_type_lookup): New function.
(mips_vxworks_rtype_to_howto): Likewise.
(mips_vxworks_final_write_processing): Likewise.
(TARGET_LITTLE_SYM, TARGET_LITTLE_NAME): Override for VxWorks.
(TARGET_BIG_SYM, TARGET_BIG_NAME, elf_bed, ELF_MAXPAGESIZE): Likewise.
(elf_backend_want_got_plt): Likewise.
(elf_backend_want_plt_sym): Likewise.
(elf_backend_got_symbol_offset): Likewise.
(elf_backend_want_dynbss): Likewise.
(elf_backend_may_use_rel_p): Likewise.
(elf_backend_may_use_rela_p): Likewise.
(elf_backend_default_use_rela_p): Likewise.
(elf_backend_got_header_size: Likewise.
(elf_backend_plt_readonly): Likewise.
(bfd_elf32_bfd_reloc_type_lookup): Likewise.
(elf_backend_mips_rtype_to_howto): Likewise.
(elf_backend_adjust_dynamic_symbol): Likewise.
(elf_backend_finish_dynamic_symbol): Likewise.
(bfd_elf32_bfd_link_hash_table_create): Likewise.
(elf_backend_add_symbol_hook): Likewise.
(elf_backend_link_output_symbol_hook): Likewise.
(elf_backend_emit_relocs): Likewise.
(elf_backend_final_write_processing: Likewise.
(elf_backend_additional_program_headers): Likewise.
(elf_backend_modify_segment_map): Likewise.
(elf_backend_symbol_processing): Likewise.
* elfxx-mips.c: Include elf-vxworks.h.
(mips_elf_link_hash_entry): Add is_relocation_target and
is_branch_target fields.
(mips_elf_link_hash_table): Add is_vxworks, srelbss, sdynbss, srelplt,
srelplt2, sgotplt, splt, plt_header_size and plt_entry_size fields.
(MIPS_ELF_RELA_SIZE, MIPS_ELF_REL_DYN_NAME): New macros.
(MIPS_RESERVED_GOTNO): Take a mips_elf_link_hash_table argument.
Return 3 for VxWorks.
(ELF_MIPS_GP_OFFSET): Change the argument from a bfd to a
mips_elf_link_hash_table. Return 0 for VxWorks.
(MIPS_ELF_GOT_MAX_SIZE): Change the argument from a bfd to a
mips_elf_link_hash_table. Update the call to ELF_MIPS_GP_OFFSET.
(mips_vxworks_exec_plt0_entry): New variable.
(mips_vxworks_exec_plt_entry): Likewise.
(mips_vxworks_shared_plt0_entry): Likewise.
(mips_vxworks_shared_plt_entry): Likewise.
(mips_elf_link_hash_newfunc): Initialize the new hash_entry fields.
(mips_elf_rel_dyn_section): Change the bfd argument to a
mips_elf_link_hash_table. Use MIPS_ELF_REL_DYN_NAME to get
the name of the section.
(mips_elf_initialize_tls_slots): Update the call to
mips_elf_rel_dyn_section.
(mips_elf_gotplt_index): New function.
(mips_elf_local_got_index): Add an input_section argument.
Update the call to mips_elf_create_local_got_entry.
(mips_elf_got_page): Likewise.
(mips_elf_got16_entry): Likewise.
(mips_elf_create_local_got_entry): Add bfd_link_info and input_section
arguments. Create dynamic relocations for each entry on VxWorks.
(mips_elf_merge_gots): Update the use of MIPS_ELF_GOT_MAX_SIZE.
(mips_elf_multi_got): Update the uses of MIPS_ELF_GOT_MAX_SIZE
and MIPS_RESERVED_GOTNO.
(mips_elf_create_got_section): Update the uses of
MIPS_ELF_GOT_MAX_SIZE. Create .got.plt on VxWorks.
(is_gott_symbol): New function.
(mips_elf_calculate_relocation): Use a dynobj local variable.
Update the calls to mips_elf_local_got_index, mips_elf_got16_entry and
mips_elf_got_page_entry. Set G to the .got.plt entry when calculating
VxWorks R_MIPS_CALL* relocations. Calculate and use G for all GOT
relocations on VxWorks. Add dynamic relocations for references
to the VxWorks __GOTT_BASE__ and __GOTT_INDEX__ symbols. Don't
create dynamic relocations for R_MIPS_32, R_MIPS_REL32 or R_MIPS_64
in VxWorks executables.
(mips_elf_allocate_dynamic_relocations): Add a bfd_link_info argument.
Use MIPS_ELF_RELA_SIZE to calculate the size of a VxWorks entry.
Don't allocate a null entry on VxWorks.
(mips_elf_create_dynamic_relocation): Update the call to
mips_elf_rel_dyn_section. Use absolute rather than relative
relocations for VxWorks, and make them RELA rather than REL.
(_bfd_mips_elf_create_dynamic_sections): Don't make .dynamic
read-only on VxWorks. Update the call to mips_elf_rel_dyn_section.
Create the .plt, .rela.plt, .dynbss and .rela.bss sections on
VxWorks. Likewise create the _PROCEDURE_LINKAGE_TABLE symbol.
Call elf_vxworks_create_dynamic_sections for VxWorks and
initialize the plt_header_size and plt_entry_size fields.
(_bfd_mips_elf_check_relocs): Don't allow GOT relocations to be
used in VxWorks executables. Don't allocate dynamic relocations
for R_MIPS_32, R_MIPS_REL32 or R_MIPS_64 in VxWorks executables.
Set is_relocation_target for each symbol referenced by a relocation.
Allocate .rela.dyn entries for relocations against the special
VxWorks __GOTT_BASE__ and __GOTT_INDEX__ symbols. Create GOT
entries for all VxWorks R_MIPS_GOT16 relocations. Don't allocate
a global GOT entry for symbols mentioned in VxWorks R_MIPS_CALL*,
R_MIPS_32, R_MIPS_REL32 or R_MIPS_64 relocations. Update the calls
to mips_elf_rel_dyn_section and mips_elf_allocate_dynamic_relocations.
Set is_branch_target for symbols mentioned in R_MIPS_PC16 or R_MIPS_26
relocations. Don't set no_fn_stub on VxWorks.
(_bfd_mips_elf_adjust_dynamic_symbol): Update the call to
mips_elf_allocate_dynamic_relocations.
(_bfd_mips_vxworks_adjust_dynamic_symbol): New function.
(_bfd_mips_elf_always_size_sections): Do not allocate GOT page
entries for VxWorks, and do not create multiple GOTs.
(_bfd_mips_elf_size_dynamic_sections): Use MIPS_ELF_REL_DYN_NAME.
Handle .got specially for VxWorks. Update the uses of
MIPS_RESERVED_GOTNO and mips_elf_allocate_dynamic_relocations.
Check for sgotplt and splt. Allocate the .rel(a).dyn contents last,
once its final size is known. Set DF_TEXTREL for VxWorks. Add
DT_RELA, DT_RELASZ, DT_RELAENT, DT_PLTREL, DT_PLTRELSZ and DT_JMPREL
tags on VxWorks. Do not add the MIPS-specific tags for VxWorks.
(_bfd_mips_vxworks_finish_dynamic_symbol): New function.
(mips_vxworks_finish_exec_plt): Likewise.
(mips_vxworks_finish_shared_plt): Likewise.
(_bfd_mips_elf_finish_dynamic_sections): Remove an unncessary call
to mips_elf_rel_dyn_section. Use a VxWorks-specific value of
DT_PLTGOT. Handle DT_RELA, DT_RELASZ, DT_RELAENT, DT_PLTREL,
DT_PLTRELSZ and DT_JMPREL. Update the uses of MIPS_RESERVED_GOTNO
and mips_elf_rel_dyn_section. Use a different GOT header for
VxWorks. Don't sort .rela.dyn on VxWorks. Finish the PLT on VxWorks.
(_bfd_mips_elf_link_hash_table_create): Initialize the new
mips_elf_link_hash_table fields.
(_bfd_mips_vxworks_link_hash_table_create): New function.
(_bfd_mips_elf_final_link): Set the GP value to _GLOBAL_OFFSET_TABLE_
on VxWorks. Update the call to ELF_MIPS_GP_OFFSET.
* elfxx-mips.h (_bfd_mips_vxworks_adjust_dynamic_symbol): Declare.
(_bfd_mips_vxworks_finish_dynamic_symbol): Likewise.
(_bfd_mips_vxworks_link_hash_table_create): Likewise.
* libbfd.h: Regenerate.
* Makefile.am (elfxx-mips.lo): Depend on elf-vxworks.h.
(elf32-mips.lo): Likewise.
* Makefile.in: Regenerate.
* reloc.c (BFD_RELOC_MIPS_COPY, BFD_RELOC_MIPS_JUMP_SLOT): Declare.
* targets.c (bfd_elf32_bigmips_vxworks_vec): Declare.
(bfd_elf32_littlemips_vxworks_vec): Likewise.
(_bfd_target_vector): Add entries for them.
gas/
* config/tc-mips.c (mips_target_format): Handle vxworks targets.
(md_begin): Complain about -G being used for PIC. Don't change
the text, data and bss alignments on VxWorks.
(reloc_needs_lo_p): Don't return true for R_MIPS_GOT16 when
generating VxWorks PIC.
(load_address): Extend SVR4_PIC handling to VXWORKS_PIC.
(macro): Likewise, but do not treat la $25 specially for
VxWorks PIC, and do not handle jal.
(OPTION_MVXWORKS_PIC): New macro.
(md_longopts): Add -mvxworks-pic.
(md_parse_option): Don't complain about using PIC and -G together here.
Handle OPTION_MVXWORKS_PIC.
(md_estimate_size_before_relax): Always use the first relaxation
sequence on VxWorks.
* config/tc-mips.h (VXWORKS_PIC): New.
gas/testsuite/
* gas/mips/vxworks1.s, gas/mips/vxworks1.d,
* gas/mips/vxworks1-xgot.d: New tests.
* gas/mips/mips.exp: Run them. Do not run other tests on VxWorks.
include/elf/
* mips.h (R_MIPS_COPY, R_MIPS_JUMP_SLOT): New relocs.
ld/
* configure.tgt (mips*el-*-vxworks*, mips*-*-vxworks*): Use
separate VxWorks emulations.
* emulparams/elf32ebmipvxworks.sh: New file.
* emulparams/elf32elmipvxworks.sh: New file.
* Makefile.am (ALL_EMULATIONS): Add eelf32ebmipvxworks.o and
eelf32elmipvxworks.o.
(eelf32ebmipvxworks.c, eelf32elmipvxworks.c): New rules.
* Makefile.in: Regenerate.
ld/testsuite/
* ld-mips/vxworks1.dd, ld-mips/vxworks1.ld, ld-mips/vxworks1-lib.dd,
* ld-mips/vxworks1-lib.nd, ld-mips/vxworks1-lib.rd,
* ld-mips/vxworks1-lib.s, ld-mips/vxworks1.rd, ld-mips/vxworks1.s,
* ld-mips/vxworks1-static.d, ld-mips/vxworks2.s, ld-mips/vxworks2.sd,
* ld-mips/vxworks2-static.sd: New tests.
* ld-mips/mips-elf.exp: Run them.
2006-03-22 17:28:15 +08:00
|
|
|
#ifdef BFD64
|
|
|
|
mips*el-*-vxworks*)
|
|
|
|
targ_defvec=bfd_elf32_littlemips_vxworks_vec
|
|
|
|
targ_selvecs="bfd_elf32_littlemips_vec bfd_elf32_bigmips_vxworks_vec bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
Richard Sandiford <richard@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Phil Edwards <phil@codesourcery.com>
Zack Weinberg <zack@codesourcery.com>
Mark Mitchell <mark@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
bfd/
* bfd-in2.h: Regenerate.
* config.bfd (mips*-*-vxworks*, mips*el-*-vxworks*): New stanzas.
* configure.in (bfd_elf32_bigmips_vxworks_vec): New stanza.
(bfd_elf32_littlemips_vxworks_vec): Likewise.
(bfd_elf32_bigmips_vec): Add elf-vxworks.lo.
(bfd_elf32_littlemips_vec): Likewise.
(bfd_elf32_nbigmips_vec): Likewise.
(bfd_elf32_nlittlemips_vec): Likewise.
(bfd_elf32_ntradbigmips_vec): Likewise.
(bfd_elf32_ntradlittlemips_vec): Likewise.
(bfd_elf32_tradbigmips_vec): Likewise.
(bfd_elf32_tradlittlemips_vec): Likewise.
(bfd_elf64_bigmips_vec): Likewise.
(bfd_elf64_littlemips_vec): Likewise.
(bfd_elf64_tradbigmips_vec): Likewise.
(bfd_elf64_tradlittlemips_vec): Likewise.
* elf32-mips.c: Include elf-vxworks.h.
(mips_info_to_howto_rel): Use elf_backend_mips_rtype_to_howto
instead of calling mips_elf32_rtype_to_howto directly.
(mips_vxworks_copy_howto_rela): New reloc howto.
(mips_vxworks_jump_slot_howto_rela): Likewise.
(mips_vxworks_bfd_reloc_type_lookup): New function.
(mips_vxworks_rtype_to_howto): Likewise.
(mips_vxworks_final_write_processing): Likewise.
(TARGET_LITTLE_SYM, TARGET_LITTLE_NAME): Override for VxWorks.
(TARGET_BIG_SYM, TARGET_BIG_NAME, elf_bed, ELF_MAXPAGESIZE): Likewise.
(elf_backend_want_got_plt): Likewise.
(elf_backend_want_plt_sym): Likewise.
(elf_backend_got_symbol_offset): Likewise.
(elf_backend_want_dynbss): Likewise.
(elf_backend_may_use_rel_p): Likewise.
(elf_backend_may_use_rela_p): Likewise.
(elf_backend_default_use_rela_p): Likewise.
(elf_backend_got_header_size: Likewise.
(elf_backend_plt_readonly): Likewise.
(bfd_elf32_bfd_reloc_type_lookup): Likewise.
(elf_backend_mips_rtype_to_howto): Likewise.
(elf_backend_adjust_dynamic_symbol): Likewise.
(elf_backend_finish_dynamic_symbol): Likewise.
(bfd_elf32_bfd_link_hash_table_create): Likewise.
(elf_backend_add_symbol_hook): Likewise.
(elf_backend_link_output_symbol_hook): Likewise.
(elf_backend_emit_relocs): Likewise.
(elf_backend_final_write_processing: Likewise.
(elf_backend_additional_program_headers): Likewise.
(elf_backend_modify_segment_map): Likewise.
(elf_backend_symbol_processing): Likewise.
* elfxx-mips.c: Include elf-vxworks.h.
(mips_elf_link_hash_entry): Add is_relocation_target and
is_branch_target fields.
(mips_elf_link_hash_table): Add is_vxworks, srelbss, sdynbss, srelplt,
srelplt2, sgotplt, splt, plt_header_size and plt_entry_size fields.
(MIPS_ELF_RELA_SIZE, MIPS_ELF_REL_DYN_NAME): New macros.
(MIPS_RESERVED_GOTNO): Take a mips_elf_link_hash_table argument.
Return 3 for VxWorks.
(ELF_MIPS_GP_OFFSET): Change the argument from a bfd to a
mips_elf_link_hash_table. Return 0 for VxWorks.
(MIPS_ELF_GOT_MAX_SIZE): Change the argument from a bfd to a
mips_elf_link_hash_table. Update the call to ELF_MIPS_GP_OFFSET.
(mips_vxworks_exec_plt0_entry): New variable.
(mips_vxworks_exec_plt_entry): Likewise.
(mips_vxworks_shared_plt0_entry): Likewise.
(mips_vxworks_shared_plt_entry): Likewise.
(mips_elf_link_hash_newfunc): Initialize the new hash_entry fields.
(mips_elf_rel_dyn_section): Change the bfd argument to a
mips_elf_link_hash_table. Use MIPS_ELF_REL_DYN_NAME to get
the name of the section.
(mips_elf_initialize_tls_slots): Update the call to
mips_elf_rel_dyn_section.
(mips_elf_gotplt_index): New function.
(mips_elf_local_got_index): Add an input_section argument.
Update the call to mips_elf_create_local_got_entry.
(mips_elf_got_page): Likewise.
(mips_elf_got16_entry): Likewise.
(mips_elf_create_local_got_entry): Add bfd_link_info and input_section
arguments. Create dynamic relocations for each entry on VxWorks.
(mips_elf_merge_gots): Update the use of MIPS_ELF_GOT_MAX_SIZE.
(mips_elf_multi_got): Update the uses of MIPS_ELF_GOT_MAX_SIZE
and MIPS_RESERVED_GOTNO.
(mips_elf_create_got_section): Update the uses of
MIPS_ELF_GOT_MAX_SIZE. Create .got.plt on VxWorks.
(is_gott_symbol): New function.
(mips_elf_calculate_relocation): Use a dynobj local variable.
Update the calls to mips_elf_local_got_index, mips_elf_got16_entry and
mips_elf_got_page_entry. Set G to the .got.plt entry when calculating
VxWorks R_MIPS_CALL* relocations. Calculate and use G for all GOT
relocations on VxWorks. Add dynamic relocations for references
to the VxWorks __GOTT_BASE__ and __GOTT_INDEX__ symbols. Don't
create dynamic relocations for R_MIPS_32, R_MIPS_REL32 or R_MIPS_64
in VxWorks executables.
(mips_elf_allocate_dynamic_relocations): Add a bfd_link_info argument.
Use MIPS_ELF_RELA_SIZE to calculate the size of a VxWorks entry.
Don't allocate a null entry on VxWorks.
(mips_elf_create_dynamic_relocation): Update the call to
mips_elf_rel_dyn_section. Use absolute rather than relative
relocations for VxWorks, and make them RELA rather than REL.
(_bfd_mips_elf_create_dynamic_sections): Don't make .dynamic
read-only on VxWorks. Update the call to mips_elf_rel_dyn_section.
Create the .plt, .rela.plt, .dynbss and .rela.bss sections on
VxWorks. Likewise create the _PROCEDURE_LINKAGE_TABLE symbol.
Call elf_vxworks_create_dynamic_sections for VxWorks and
initialize the plt_header_size and plt_entry_size fields.
(_bfd_mips_elf_check_relocs): Don't allow GOT relocations to be
used in VxWorks executables. Don't allocate dynamic relocations
for R_MIPS_32, R_MIPS_REL32 or R_MIPS_64 in VxWorks executables.
Set is_relocation_target for each symbol referenced by a relocation.
Allocate .rela.dyn entries for relocations against the special
VxWorks __GOTT_BASE__ and __GOTT_INDEX__ symbols. Create GOT
entries for all VxWorks R_MIPS_GOT16 relocations. Don't allocate
a global GOT entry for symbols mentioned in VxWorks R_MIPS_CALL*,
R_MIPS_32, R_MIPS_REL32 or R_MIPS_64 relocations. Update the calls
to mips_elf_rel_dyn_section and mips_elf_allocate_dynamic_relocations.
Set is_branch_target for symbols mentioned in R_MIPS_PC16 or R_MIPS_26
relocations. Don't set no_fn_stub on VxWorks.
(_bfd_mips_elf_adjust_dynamic_symbol): Update the call to
mips_elf_allocate_dynamic_relocations.
(_bfd_mips_vxworks_adjust_dynamic_symbol): New function.
(_bfd_mips_elf_always_size_sections): Do not allocate GOT page
entries for VxWorks, and do not create multiple GOTs.
(_bfd_mips_elf_size_dynamic_sections): Use MIPS_ELF_REL_DYN_NAME.
Handle .got specially for VxWorks. Update the uses of
MIPS_RESERVED_GOTNO and mips_elf_allocate_dynamic_relocations.
Check for sgotplt and splt. Allocate the .rel(a).dyn contents last,
once its final size is known. Set DF_TEXTREL for VxWorks. Add
DT_RELA, DT_RELASZ, DT_RELAENT, DT_PLTREL, DT_PLTRELSZ and DT_JMPREL
tags on VxWorks. Do not add the MIPS-specific tags for VxWorks.
(_bfd_mips_vxworks_finish_dynamic_symbol): New function.
(mips_vxworks_finish_exec_plt): Likewise.
(mips_vxworks_finish_shared_plt): Likewise.
(_bfd_mips_elf_finish_dynamic_sections): Remove an unncessary call
to mips_elf_rel_dyn_section. Use a VxWorks-specific value of
DT_PLTGOT. Handle DT_RELA, DT_RELASZ, DT_RELAENT, DT_PLTREL,
DT_PLTRELSZ and DT_JMPREL. Update the uses of MIPS_RESERVED_GOTNO
and mips_elf_rel_dyn_section. Use a different GOT header for
VxWorks. Don't sort .rela.dyn on VxWorks. Finish the PLT on VxWorks.
(_bfd_mips_elf_link_hash_table_create): Initialize the new
mips_elf_link_hash_table fields.
(_bfd_mips_vxworks_link_hash_table_create): New function.
(_bfd_mips_elf_final_link): Set the GP value to _GLOBAL_OFFSET_TABLE_
on VxWorks. Update the call to ELF_MIPS_GP_OFFSET.
* elfxx-mips.h (_bfd_mips_vxworks_adjust_dynamic_symbol): Declare.
(_bfd_mips_vxworks_finish_dynamic_symbol): Likewise.
(_bfd_mips_vxworks_link_hash_table_create): Likewise.
* libbfd.h: Regenerate.
* Makefile.am (elfxx-mips.lo): Depend on elf-vxworks.h.
(elf32-mips.lo): Likewise.
* Makefile.in: Regenerate.
* reloc.c (BFD_RELOC_MIPS_COPY, BFD_RELOC_MIPS_JUMP_SLOT): Declare.
* targets.c (bfd_elf32_bigmips_vxworks_vec): Declare.
(bfd_elf32_littlemips_vxworks_vec): Likewise.
(_bfd_target_vector): Add entries for them.
gas/
* config/tc-mips.c (mips_target_format): Handle vxworks targets.
(md_begin): Complain about -G being used for PIC. Don't change
the text, data and bss alignments on VxWorks.
(reloc_needs_lo_p): Don't return true for R_MIPS_GOT16 when
generating VxWorks PIC.
(load_address): Extend SVR4_PIC handling to VXWORKS_PIC.
(macro): Likewise, but do not treat la $25 specially for
VxWorks PIC, and do not handle jal.
(OPTION_MVXWORKS_PIC): New macro.
(md_longopts): Add -mvxworks-pic.
(md_parse_option): Don't complain about using PIC and -G together here.
Handle OPTION_MVXWORKS_PIC.
(md_estimate_size_before_relax): Always use the first relaxation
sequence on VxWorks.
* config/tc-mips.h (VXWORKS_PIC): New.
gas/testsuite/
* gas/mips/vxworks1.s, gas/mips/vxworks1.d,
* gas/mips/vxworks1-xgot.d: New tests.
* gas/mips/mips.exp: Run them. Do not run other tests on VxWorks.
include/elf/
* mips.h (R_MIPS_COPY, R_MIPS_JUMP_SLOT): New relocs.
ld/
* configure.tgt (mips*el-*-vxworks*, mips*-*-vxworks*): Use
separate VxWorks emulations.
* emulparams/elf32ebmipvxworks.sh: New file.
* emulparams/elf32elmipvxworks.sh: New file.
* Makefile.am (ALL_EMULATIONS): Add eelf32ebmipvxworks.o and
eelf32elmipvxworks.o.
(eelf32ebmipvxworks.c, eelf32elmipvxworks.c): New rules.
* Makefile.in: Regenerate.
ld/testsuite/
* ld-mips/vxworks1.dd, ld-mips/vxworks1.ld, ld-mips/vxworks1-lib.dd,
* ld-mips/vxworks1-lib.nd, ld-mips/vxworks1-lib.rd,
* ld-mips/vxworks1-lib.s, ld-mips/vxworks1.rd, ld-mips/vxworks1.s,
* ld-mips/vxworks1-static.d, ld-mips/vxworks2.s, ld-mips/vxworks2.sd,
* ld-mips/vxworks2-static.sd: New tests.
* ld-mips/mips-elf.exp: Run them.
2006-03-22 17:28:15 +08:00
|
|
|
;;
|
|
|
|
mips*-*-vxworks*)
|
|
|
|
targ_defvec=bfd_elf32_bigmips_vxworks_vec
|
|
|
|
targ_selvecs="bfd_elf32_bigmips_vec bfd_elf32_littlemips_vxworks_vec bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
Richard Sandiford <richard@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Phil Edwards <phil@codesourcery.com>
Zack Weinberg <zack@codesourcery.com>
Mark Mitchell <mark@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
bfd/
* bfd-in2.h: Regenerate.
* config.bfd (mips*-*-vxworks*, mips*el-*-vxworks*): New stanzas.
* configure.in (bfd_elf32_bigmips_vxworks_vec): New stanza.
(bfd_elf32_littlemips_vxworks_vec): Likewise.
(bfd_elf32_bigmips_vec): Add elf-vxworks.lo.
(bfd_elf32_littlemips_vec): Likewise.
(bfd_elf32_nbigmips_vec): Likewise.
(bfd_elf32_nlittlemips_vec): Likewise.
(bfd_elf32_ntradbigmips_vec): Likewise.
(bfd_elf32_ntradlittlemips_vec): Likewise.
(bfd_elf32_tradbigmips_vec): Likewise.
(bfd_elf32_tradlittlemips_vec): Likewise.
(bfd_elf64_bigmips_vec): Likewise.
(bfd_elf64_littlemips_vec): Likewise.
(bfd_elf64_tradbigmips_vec): Likewise.
(bfd_elf64_tradlittlemips_vec): Likewise.
* elf32-mips.c: Include elf-vxworks.h.
(mips_info_to_howto_rel): Use elf_backend_mips_rtype_to_howto
instead of calling mips_elf32_rtype_to_howto directly.
(mips_vxworks_copy_howto_rela): New reloc howto.
(mips_vxworks_jump_slot_howto_rela): Likewise.
(mips_vxworks_bfd_reloc_type_lookup): New function.
(mips_vxworks_rtype_to_howto): Likewise.
(mips_vxworks_final_write_processing): Likewise.
(TARGET_LITTLE_SYM, TARGET_LITTLE_NAME): Override for VxWorks.
(TARGET_BIG_SYM, TARGET_BIG_NAME, elf_bed, ELF_MAXPAGESIZE): Likewise.
(elf_backend_want_got_plt): Likewise.
(elf_backend_want_plt_sym): Likewise.
(elf_backend_got_symbol_offset): Likewise.
(elf_backend_want_dynbss): Likewise.
(elf_backend_may_use_rel_p): Likewise.
(elf_backend_may_use_rela_p): Likewise.
(elf_backend_default_use_rela_p): Likewise.
(elf_backend_got_header_size: Likewise.
(elf_backend_plt_readonly): Likewise.
(bfd_elf32_bfd_reloc_type_lookup): Likewise.
(elf_backend_mips_rtype_to_howto): Likewise.
(elf_backend_adjust_dynamic_symbol): Likewise.
(elf_backend_finish_dynamic_symbol): Likewise.
(bfd_elf32_bfd_link_hash_table_create): Likewise.
(elf_backend_add_symbol_hook): Likewise.
(elf_backend_link_output_symbol_hook): Likewise.
(elf_backend_emit_relocs): Likewise.
(elf_backend_final_write_processing: Likewise.
(elf_backend_additional_program_headers): Likewise.
(elf_backend_modify_segment_map): Likewise.
(elf_backend_symbol_processing): Likewise.
* elfxx-mips.c: Include elf-vxworks.h.
(mips_elf_link_hash_entry): Add is_relocation_target and
is_branch_target fields.
(mips_elf_link_hash_table): Add is_vxworks, srelbss, sdynbss, srelplt,
srelplt2, sgotplt, splt, plt_header_size and plt_entry_size fields.
(MIPS_ELF_RELA_SIZE, MIPS_ELF_REL_DYN_NAME): New macros.
(MIPS_RESERVED_GOTNO): Take a mips_elf_link_hash_table argument.
Return 3 for VxWorks.
(ELF_MIPS_GP_OFFSET): Change the argument from a bfd to a
mips_elf_link_hash_table. Return 0 for VxWorks.
(MIPS_ELF_GOT_MAX_SIZE): Change the argument from a bfd to a
mips_elf_link_hash_table. Update the call to ELF_MIPS_GP_OFFSET.
(mips_vxworks_exec_plt0_entry): New variable.
(mips_vxworks_exec_plt_entry): Likewise.
(mips_vxworks_shared_plt0_entry): Likewise.
(mips_vxworks_shared_plt_entry): Likewise.
(mips_elf_link_hash_newfunc): Initialize the new hash_entry fields.
(mips_elf_rel_dyn_section): Change the bfd argument to a
mips_elf_link_hash_table. Use MIPS_ELF_REL_DYN_NAME to get
the name of the section.
(mips_elf_initialize_tls_slots): Update the call to
mips_elf_rel_dyn_section.
(mips_elf_gotplt_index): New function.
(mips_elf_local_got_index): Add an input_section argument.
Update the call to mips_elf_create_local_got_entry.
(mips_elf_got_page): Likewise.
(mips_elf_got16_entry): Likewise.
(mips_elf_create_local_got_entry): Add bfd_link_info and input_section
arguments. Create dynamic relocations for each entry on VxWorks.
(mips_elf_merge_gots): Update the use of MIPS_ELF_GOT_MAX_SIZE.
(mips_elf_multi_got): Update the uses of MIPS_ELF_GOT_MAX_SIZE
and MIPS_RESERVED_GOTNO.
(mips_elf_create_got_section): Update the uses of
MIPS_ELF_GOT_MAX_SIZE. Create .got.plt on VxWorks.
(is_gott_symbol): New function.
(mips_elf_calculate_relocation): Use a dynobj local variable.
Update the calls to mips_elf_local_got_index, mips_elf_got16_entry and
mips_elf_got_page_entry. Set G to the .got.plt entry when calculating
VxWorks R_MIPS_CALL* relocations. Calculate and use G for all GOT
relocations on VxWorks. Add dynamic relocations for references
to the VxWorks __GOTT_BASE__ and __GOTT_INDEX__ symbols. Don't
create dynamic relocations for R_MIPS_32, R_MIPS_REL32 or R_MIPS_64
in VxWorks executables.
(mips_elf_allocate_dynamic_relocations): Add a bfd_link_info argument.
Use MIPS_ELF_RELA_SIZE to calculate the size of a VxWorks entry.
Don't allocate a null entry on VxWorks.
(mips_elf_create_dynamic_relocation): Update the call to
mips_elf_rel_dyn_section. Use absolute rather than relative
relocations for VxWorks, and make them RELA rather than REL.
(_bfd_mips_elf_create_dynamic_sections): Don't make .dynamic
read-only on VxWorks. Update the call to mips_elf_rel_dyn_section.
Create the .plt, .rela.plt, .dynbss and .rela.bss sections on
VxWorks. Likewise create the _PROCEDURE_LINKAGE_TABLE symbol.
Call elf_vxworks_create_dynamic_sections for VxWorks and
initialize the plt_header_size and plt_entry_size fields.
(_bfd_mips_elf_check_relocs): Don't allow GOT relocations to be
used in VxWorks executables. Don't allocate dynamic relocations
for R_MIPS_32, R_MIPS_REL32 or R_MIPS_64 in VxWorks executables.
Set is_relocation_target for each symbol referenced by a relocation.
Allocate .rela.dyn entries for relocations against the special
VxWorks __GOTT_BASE__ and __GOTT_INDEX__ symbols. Create GOT
entries for all VxWorks R_MIPS_GOT16 relocations. Don't allocate
a global GOT entry for symbols mentioned in VxWorks R_MIPS_CALL*,
R_MIPS_32, R_MIPS_REL32 or R_MIPS_64 relocations. Update the calls
to mips_elf_rel_dyn_section and mips_elf_allocate_dynamic_relocations.
Set is_branch_target for symbols mentioned in R_MIPS_PC16 or R_MIPS_26
relocations. Don't set no_fn_stub on VxWorks.
(_bfd_mips_elf_adjust_dynamic_symbol): Update the call to
mips_elf_allocate_dynamic_relocations.
(_bfd_mips_vxworks_adjust_dynamic_symbol): New function.
(_bfd_mips_elf_always_size_sections): Do not allocate GOT page
entries for VxWorks, and do not create multiple GOTs.
(_bfd_mips_elf_size_dynamic_sections): Use MIPS_ELF_REL_DYN_NAME.
Handle .got specially for VxWorks. Update the uses of
MIPS_RESERVED_GOTNO and mips_elf_allocate_dynamic_relocations.
Check for sgotplt and splt. Allocate the .rel(a).dyn contents last,
once its final size is known. Set DF_TEXTREL for VxWorks. Add
DT_RELA, DT_RELASZ, DT_RELAENT, DT_PLTREL, DT_PLTRELSZ and DT_JMPREL
tags on VxWorks. Do not add the MIPS-specific tags for VxWorks.
(_bfd_mips_vxworks_finish_dynamic_symbol): New function.
(mips_vxworks_finish_exec_plt): Likewise.
(mips_vxworks_finish_shared_plt): Likewise.
(_bfd_mips_elf_finish_dynamic_sections): Remove an unncessary call
to mips_elf_rel_dyn_section. Use a VxWorks-specific value of
DT_PLTGOT. Handle DT_RELA, DT_RELASZ, DT_RELAENT, DT_PLTREL,
DT_PLTRELSZ and DT_JMPREL. Update the uses of MIPS_RESERVED_GOTNO
and mips_elf_rel_dyn_section. Use a different GOT header for
VxWorks. Don't sort .rela.dyn on VxWorks. Finish the PLT on VxWorks.
(_bfd_mips_elf_link_hash_table_create): Initialize the new
mips_elf_link_hash_table fields.
(_bfd_mips_vxworks_link_hash_table_create): New function.
(_bfd_mips_elf_final_link): Set the GP value to _GLOBAL_OFFSET_TABLE_
on VxWorks. Update the call to ELF_MIPS_GP_OFFSET.
* elfxx-mips.h (_bfd_mips_vxworks_adjust_dynamic_symbol): Declare.
(_bfd_mips_vxworks_finish_dynamic_symbol): Likewise.
(_bfd_mips_vxworks_link_hash_table_create): Likewise.
* libbfd.h: Regenerate.
* Makefile.am (elfxx-mips.lo): Depend on elf-vxworks.h.
(elf32-mips.lo): Likewise.
* Makefile.in: Regenerate.
* reloc.c (BFD_RELOC_MIPS_COPY, BFD_RELOC_MIPS_JUMP_SLOT): Declare.
* targets.c (bfd_elf32_bigmips_vxworks_vec): Declare.
(bfd_elf32_littlemips_vxworks_vec): Likewise.
(_bfd_target_vector): Add entries for them.
gas/
* config/tc-mips.c (mips_target_format): Handle vxworks targets.
(md_begin): Complain about -G being used for PIC. Don't change
the text, data and bss alignments on VxWorks.
(reloc_needs_lo_p): Don't return true for R_MIPS_GOT16 when
generating VxWorks PIC.
(load_address): Extend SVR4_PIC handling to VXWORKS_PIC.
(macro): Likewise, but do not treat la $25 specially for
VxWorks PIC, and do not handle jal.
(OPTION_MVXWORKS_PIC): New macro.
(md_longopts): Add -mvxworks-pic.
(md_parse_option): Don't complain about using PIC and -G together here.
Handle OPTION_MVXWORKS_PIC.
(md_estimate_size_before_relax): Always use the first relaxation
sequence on VxWorks.
* config/tc-mips.h (VXWORKS_PIC): New.
gas/testsuite/
* gas/mips/vxworks1.s, gas/mips/vxworks1.d,
* gas/mips/vxworks1-xgot.d: New tests.
* gas/mips/mips.exp: Run them. Do not run other tests on VxWorks.
include/elf/
* mips.h (R_MIPS_COPY, R_MIPS_JUMP_SLOT): New relocs.
ld/
* configure.tgt (mips*el-*-vxworks*, mips*-*-vxworks*): Use
separate VxWorks emulations.
* emulparams/elf32ebmipvxworks.sh: New file.
* emulparams/elf32elmipvxworks.sh: New file.
* Makefile.am (ALL_EMULATIONS): Add eelf32ebmipvxworks.o and
eelf32elmipvxworks.o.
(eelf32ebmipvxworks.c, eelf32elmipvxworks.c): New rules.
* Makefile.in: Regenerate.
ld/testsuite/
* ld-mips/vxworks1.dd, ld-mips/vxworks1.ld, ld-mips/vxworks1-lib.dd,
* ld-mips/vxworks1-lib.nd, ld-mips/vxworks1-lib.rd,
* ld-mips/vxworks1-lib.s, ld-mips/vxworks1.rd, ld-mips/vxworks1.s,
* ld-mips/vxworks1-static.d, ld-mips/vxworks2.s, ld-mips/vxworks2.sd,
* ld-mips/vxworks2-static.sd: New tests.
* ld-mips/mips-elf.exp: Run them.
2006-03-22 17:28:15 +08:00
|
|
|
;;
|
|
|
|
#endif
|
2005-07-08 19:17:16 +08:00
|
|
|
mips*el-*-elf* | mips*el-*-vxworks* | mips*-*-chorus*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_littlemips_vec
|
|
|
|
targ_selvecs="bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
|
|
|
|
;;
|
2003-10-30 17:05:14 +08:00
|
|
|
mips*-*-elf* | mips*-*-rtems* | mips*-*-vxworks | mips*-*-windiss)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_bigmips_vec
|
|
|
|
targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
|
|
|
|
;;
|
|
|
|
mips*-*-none)
|
|
|
|
targ_defvec=bfd_elf32_bigmips_vec
|
|
|
|
targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
|
|
|
|
;;
|
2004-10-23 20:23:15 +08:00
|
|
|
#ifdef BFD64
|
|
|
|
mips64*-*-openbsd*)
|
|
|
|
targ_defvec=bfd_elf64_tradbigmips_vec
|
|
|
|
targ_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2004-10-23 20:23:15 +08:00
|
|
|
;;
|
|
|
|
#endif
|
2001-09-14 14:22:46 +08:00
|
|
|
mips*el-*-openbsd*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_littlemips_vec
|
|
|
|
targ_selvecs="bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec ecoff_little_vec ecoff_big_vec"
|
|
|
|
;;
|
2001-04-08 13:11:49 +08:00
|
|
|
mips*-*-openbsd*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_bigmips_vec
|
|
|
|
targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec ecoff_big_vec ecoff_little_vec"
|
|
|
|
;;
|
2001-12-06 06:46:21 +08:00
|
|
|
#ifdef BFD64
|
2001-09-14 14:22:46 +08:00
|
|
|
mips64*el-*-linux*)
|
2002-07-31 08:32:10 +08:00
|
|
|
targ_defvec=bfd_elf32_ntradlittlemips_vec
|
|
|
|
targ_selvecs="bfd_elf32_ntradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2001-09-14 14:22:46 +08:00
|
|
|
;;
|
|
|
|
mips64*-*-linux*)
|
2002-07-31 08:32:10 +08:00
|
|
|
targ_defvec=bfd_elf32_ntradbigmips_vec
|
|
|
|
targ_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2001-09-14 14:22:46 +08:00
|
|
|
;;
|
2001-12-06 06:46:21 +08:00
|
|
|
#endif
|
|
|
|
mips*el-*-linux*)
|
|
|
|
targ_defvec=bfd_elf32_tradlittlemips_vec
|
2002-08-14 23:05:41 +08:00
|
|
|
targ_selvecs="bfd_elf32_tradbigmips_vec ecoff_little_vec ecoff_big_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec"
|
2002-08-14 23:18:54 +08:00
|
|
|
want64=true
|
2001-12-06 06:46:21 +08:00
|
|
|
;;
|
2001-09-14 14:22:46 +08:00
|
|
|
mips*-*-linux*)
|
2001-04-08 13:11:49 +08:00
|
|
|
targ_defvec=bfd_elf32_tradbigmips_vec
|
2002-08-14 23:05:41 +08:00
|
|
|
targ_selvecs="bfd_elf32_tradlittlemips_vec ecoff_big_vec ecoff_little_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec"
|
2002-08-14 23:18:54 +08:00
|
|
|
want64=true
|
2001-04-08 13:11:49 +08:00
|
|
|
;;
|
2001-10-30 23:20:14 +08:00
|
|
|
#ifdef BFD64
|
|
|
|
mmix-*-*)
|
|
|
|
targ_defvec=bfd_elf64_mmix_vec
|
|
|
|
targ_selvecs=bfd_mmo_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2001-10-30 23:20:14 +08:00
|
|
|
;;
|
|
|
|
#endif
|
1999-05-03 15:29:11 +08:00
|
|
|
mn10200-*-*)
|
|
|
|
targ_defvec=bfd_elf32_mn10200_vec
|
|
|
|
;;
|
|
|
|
|
|
|
|
mn10300-*-*)
|
|
|
|
targ_defvec=bfd_elf32_mn10300_vec
|
2003-07-10 12:44:37 +08:00
|
|
|
targ_underscore=yes
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
|
|
|
|
2005-12-12 19:25:08 +08:00
|
|
|
mt-*-elf)
|
Second part of ms1 to mt renaming.
* bfd/archures.c (bfd_arch_mt): Renamed.
(bfd_mt_arch): Renamed.
(bfd_archures_list): Adjusted.
* bfd/bfd-in2.h: Rebuilt.
* bfd/config.bfd (mt): Remove special case targ_archs.
(mt-*-elf): Rename bfd_elf32_mt_vec.
* bfd/configure: Rebuilt.
* bfd/configure.in (bfd_elf32_mt_vec): Renamed.
(selarchs) Remove mt special case.
* bfd/cpu-mt.c (arch_info_struct): Adjust.
(bfd_mt_arch): Renamed, adjust.
* bfd/elf32-mt.c (mt_reloc_type_lookup, mt_info_to_howto_rela,
mt_elf_relocate_hi16, mt_final_link_relocate, mt_relocate_section,
mt_elf_howto_table): Renamed, adjusted.
(mt_elf_gc_mark_hook, mt_elf_gc_sweep_hook, mt_elf_check_relocs,
elf32_mt_machine, mt_elf_object_p, mt_elf_set_private_flags,
mt_elf_copy_private_bfd_data, mt_elf_merge_private_bfd_data,
mt_elf_print_private_bfd_data): Renamed, adjusted.
(TARGET_BIG_SYM, TARGET_BIG_NAME, ELF_ARCH, ELF_MACHINE_CODE,
ELF_MAXPAGESIZE, elf_info_to_howto, elf_backend_relocate_section,
bfd_elf32_bfd_reloc_type_lookup, elf_backend_gc_mark_hook,
elf_backend_gc_sweep_hook, elf_backend_check_relocs,
eld_backend_object_p, bfd_elf32_bfd_set_private_flags,
bfd_elf32_bfd_copy_private_bfd_data,
bfd_elf32_bfd_merge_private_bfd_data,
bfd_elf32_bfd_print_private_bfd_data): Adjusted.
* bfd/libbfd.h: Regenerated.
* bfd/reloc.c (BFD_RELOC_MT_PC16, BFD_RELOC_MT_HI16,
BFD_RELOC_MT_LO16, BFD_RELOC_MT_GNU_VTINHERIT,
BFD_RELOC_MT_GNU_VTENTRY, BFD_RELOC_MT_PCINSN8): Renamed.
* bfd/targets.c (bfd_elf32_mt_vec): Renamed.
(_bfd_target_vector): Adjusted.
* binutils/readelf.c (guess_is_rela): Use EM_MT.
(dump_relocations, get_machine_name): Adjust.
* cpu/mt.cpu (define-arch, define-isa): Set name to mt.
(define-mach): Adjust.
* cpu/mt.opc (CGEN_ASM_HASH): Update.
(mt_asm_hash, mt_cgen_insn_supported): Renamed.
(parse_loopsize, parse_imm16): Adjust.
* gas/configure: Rebuilt.
* gas/configure.in (mt): Remove special case.
* gas/config/tc-mt.c (opcodes/mt-desc.h, opcodes/mt-opc.h): Change
#includes.
(mt_insn, mt_mach, mt_mach_bitmask, mt_flags, mt_architectures):
Rename, adjust.
(md_parse_option, md_show_usage, md_begin, md_assemble,
md_cgen_lookup_reloc, md_atof): Adjust.
(mt_force_relocation, mt_apply_fix, mt_fix_adjustable): Rename, adjust.
* gas/config/tc-mt.h (TC_MT): Rename.
(LISTING_HEADER, TARGET_ARCH, TARGET_FORMAT): Adjust.
(md_apply_fix): Adjust.
(mt_apply_fix, mt_fix_adjustable, mt_force_relocation): Rename.
(TC_FORCE_RELOCATION, tc_fix_adjustable): Adjust.
* gdb/mt-tdep.c (mt_arch_constants, mt_gdb_regnums): Rename, adjust.
(mt_register_name, mt_register_type, mt_register_reggroup_p,
mt_return_value, mt_skip_prologue, mt_breapoint_from_pc,
mt_pseudo_register_read, mt_pseudo_register_write, mt_frame_align,
mt_registers_info, mt_push_dummy_call, mt_unwind_cache,
mt_frame_unwind_cache, mt_unwind_pc, mt_unwind_dummy_id,
mt_frame_this_id, mt_frame_prev_register, mt_frame_base_address,
mt_frame_unwind, mt_frame_sniffer, mt_frame_base, mt_gdbarch_init,
_initialize_mt_tdep): Rename & adjust.
* include/dis-asm.h (print_insn_mt): Renamed.
* include/elf/common.h (EM_MT): Renamed.
* include/elf/mt.h: Rename relocs, cpu & other defines.
* ld/emulparams/elf32mt.sh (ARCH, OUTPUT_FORMAT): Adjust.
* opcodes/Makefile.am (HFILES, CFILES, ALL_MACHINES): Adjust.
(stamp-mt): Adjust rule.
(mt-asm.lo, mt-desc.lo, mt-dis.lo, mt-ibld.lo, mt-opc.lo): Rename &
adjust.
* opcodes/Makefile.in: Rebuilt.
* opcodes/configure: Rebuilt.
* opcodes/configure.in (bfd_mt_arch): Rename & adjust.
* opcodes/disassemble.c (ARCH_mt): Renamed.
(disassembler): Adjust.
* opcodes/mt-asm.c: Renamed, rebuilt.
* opcodes/mt-desc.c: Renamed, rebuilt.
* opcodes/mt-desc.h: Renamed, rebuilt.
* opcodes/mt-dis.c: Renamed, rebuilt.
* opcodes/mt-ibld.c: Renamed, rebuilt.
* opcodes/mt-opc.c: Renamed, rebuilt.
* opcodes/mt-opc.h: Renamed, rebuilt.
* sid/Makefile.in: Rebuilt.
* sid/aclocal.m4: Rebuilt.
* sid/configure: Rebuilt.
* sid/sid.spec: Adjust.
* sid/bsp/Makefile.am: Adjust.
* sid/bsp/Makefile.in: Rebuilt.
* sid/bsp/aclocal.m4: Rebuilt.
* sid/bsp/configrun-sid.in: Adjust.
* sid/bsp/pregen/Makefile.in: Rebuilt.
* sid/bsp/pregen/mt-gdb.conf: Renamed & rebuilt.
* sid/bsp/pregen/mt-gloss.conf: Renamed & rebuilt.
* sid/bsp/pregen/pregen-configs.in: Adjust.
* sid/component/aclocal.m4: Rebuilt.
* sid/component/configure: Rebuilt.
* sid/component/tconfig.in: Adjust.
* sid/component/bochs/aclocal.m4: Rebuilt.
* sid/component/cache/Makefile.in: Rebuilt.
* sid/component/cgen-cpu/Makefile.in: Rebuilt.
* sid/component/cgen-cpu/aclocal.m4: Rebuilt.
* sid/component/cgen-cpu/compCGEN.cxx: Adjust.
* sid/component/cgen-cpu/configure: Rebuilt.
* sid/component/cgen-cpu/configure.in: Rebult.
* sid/component/cgen-cpu/mt/Makefile.am: Adjust.
* sid/component/cgen-cpu/mt/Makefile.in: Rebuilt.
* sid/component/cgen-cpu/mt/hw-cpu-mt.txt: Adjust.
* sid/component/cgen-cpu/mt/mt-cpu.h: Rebuilt.
* sid/component/cgen-cpu/mt/mt-decode.cxx: Rebuilt.
* sid/component/cgen-cpu/mt/mt-decode.h: Rebuilt.
* sid/component/cgen-cpu/mt/mt-defs.h: Rebuilt.
* sid/component/cgen-cpu/mt/mt-desc.h: Rebuilt.
* sid/component/cgen-cpu/mt/mt-sem.cxx: Rebuilt.
* sid/component/cgen-cpu/mt/mt-write.cxx: Rebuilt.
* sid/component/cgen-cpu/mt/mt.cxx: Adjust.
* sid/component/cgen-cpu/mt/mt.h: Adjust.
* sid/component/consoles/Makefile.in: Rebuilt.
* sid/component/families/aclocal.m4: Rebuilt.
* sid/component/families/configure: Rebuilt.
* sid/component/gdb/Makefile.in: Rebuilt.
* sid/component/gloss/Makefile.in: Rebuilt.
* sid/component/glue/Makefile.in: Rebuilt.
* sid/component/ide/Makefile.in: Rebuilt.
* sid/component/interrupt/Makefile.in: Rebuilt.
* sid/component/lcd/Makefile.in: Rebuilt.
* sid/component/lcd/testsuite/Makefile.in: Rebuilt.
* sid/component/loader/Makefile.am: Rebuilt.
* sid/component/loader/Makefile.in: Rebuilt.
* sid/component/mapper/Makefile.in: Rebuilt.
* sid/component/mapper/testsuite/Makefile.in: Rebuilt.
* sid/component/memory/Makefile.in: Rebuilt.
* sid/component/mmu/Makefile.in: Rebuilt.
* sid/component/parport/Makefile.in: Rebuilt.
* sid/component/profiling/Makefile.in: Rebuilt.
* sid/component/rtc/Makefile.in: Rebuilt.
* sid/component/sched/Makefile.in: Rebuilt.
* sid/component/testsuite/Makefile.in: Rebuilt.
* sid/component/timers/aclocal.m4: Rebuilt.
* sid/component/timers/configure: Rebuilt.
* sid/component/uart/Makefile.in: Rebuilt.
* sid/component/uart/testsuite/Makefile.in: Rebuilt.
* sid/config/config.sub: Adjust.
* sid/config/info.tcl.in: Adjust.
* sid/config/sidtargets.m4: Adjust.
* sid/doc/Makefile.in: Rebuilt.
* sid/main/dynamic/Makefile.am: Rebuilt.
* sid/main/dynamic/Makefile.in: Rebuilt.
* sid/main/dynamic/aclocal.m4: Rebuilt.
* sid/main/dynamic/configure: Rebuilt.
2005-12-16 18:23:12 +08:00
|
|
|
targ_defvec=bfd_elf32_mt_vec
|
2005-06-08 05:07:32 +08:00
|
|
|
;;
|
|
|
|
|
2002-12-31 03:25:13 +08:00
|
|
|
msp430-*-*)
|
|
|
|
targ_defvec=bfd_elf32_msp430_vec
|
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
ns32k-pc532-mach* | ns32k-pc532-ux*)
|
|
|
|
targ_defvec=pc532machaout_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
ns32k-*-netbsd* | ns32k-*-lites* | ns32k-*-openbsd*)
|
|
|
|
targ_defvec=pc532netbsd_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
2001-04-24 23:08:16 +08:00
|
|
|
openrisc-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_openrisc_vec
|
|
|
|
;;
|
|
|
|
|
2005-07-08 19:17:16 +08:00
|
|
|
or32-*-coff | or32-*-rtems* )
|
2002-02-01 01:33:08 +08:00
|
|
|
targ_defvec=or32coff_big_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
2005-07-08 19:17:16 +08:00
|
|
|
or32-*-elf)
|
2002-02-01 01:33:08 +08:00
|
|
|
targ_defvec=bfd_elf32_or32_big_vec
|
|
|
|
;;
|
|
|
|
|
2001-02-19 07:33:11 +08:00
|
|
|
pdp11-*-*)
|
|
|
|
targ_defvec=pdp11_aout_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
1999-09-05 01:07:46 +08:00
|
|
|
pj-*-*)
|
|
|
|
targ_defvec=bfd_elf32_pj_vec
|
|
|
|
targ_selvecs="bfd_elf32_pj_vec bfd_elf32_pjl_vec"
|
|
|
|
;;
|
|
|
|
|
|
|
|
pjl-*-*)
|
|
|
|
targ_defvec=bfd_elf32_pjl_vec
|
|
|
|
targ_selvecs="bfd_elf32_pjl_vec bfd_elf32_pj_vec bfd_elf32_i386_vec"
|
|
|
|
;;
|
|
|
|
|
2003-12-03 23:07:17 +08:00
|
|
|
powerpc-*-aix5.[01])
|
|
|
|
targ_defvec=rs6000coff_vec
|
|
|
|
targ_selvecs="aix5coff64_vec"
|
|
|
|
want64=true
|
|
|
|
;;
|
|
|
|
#ifdef BFD64
|
|
|
|
powerpc64-*-aix5.[01])
|
|
|
|
targ_defvec=aix5coff64_vec
|
|
|
|
targ_selvecs="rs6000coff_vec"
|
|
|
|
want64=true
|
|
|
|
;;
|
|
|
|
#endif
|
2002-03-18 20:46:27 +08:00
|
|
|
powerpc-*-aix5*)
|
2003-12-03 23:07:17 +08:00
|
|
|
targ_cflags=-DAIX_WEAK_SUPPORT
|
2002-03-18 20:46:27 +08:00
|
|
|
targ_defvec=rs6000coff_vec
|
|
|
|
targ_selvecs="aix5coff64_vec"
|
|
|
|
want64=true
|
|
|
|
;;
|
2002-06-26 01:29:53 +08:00
|
|
|
#ifdef BFD64
|
2002-03-18 20:46:27 +08:00
|
|
|
powerpc64-*-aix5*)
|
2003-12-03 23:07:17 +08:00
|
|
|
targ_cflags=-DAIX_WEAK_SUPPORT
|
2002-03-18 20:46:27 +08:00
|
|
|
targ_defvec=aix5coff64_vec
|
|
|
|
targ_selvecs="rs6000coff_vec"
|
|
|
|
want64=true
|
|
|
|
;;
|
2002-06-25 18:05:05 +08:00
|
|
|
#endif
|
2002-03-18 20:46:27 +08:00
|
|
|
|
2001-02-09 08:11:24 +08:00
|
|
|
powerpc-*-aix* | powerpc-*-beos* | rs6000-*-*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=rs6000coff_vec
|
2001-08-29 11:39:47 +08:00
|
|
|
targ64_selvecs=rs6000coff64_vec
|
|
|
|
case "${targ}" in
|
2004-10-15 13:47:11 +08:00
|
|
|
*-*-aix4.[3456789]* | *-*-aix[56789]*)
|
2001-08-29 11:39:47 +08:00
|
|
|
want64=true;;
|
2002-02-01 13:47:14 +08:00
|
|
|
*)
|
|
|
|
targ_cflags=-DSMALL_ARCHIVE;;
|
2001-08-29 11:39:47 +08:00
|
|
|
esac
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2001-06-03 01:32:09 +08:00
|
|
|
#ifdef BFD64
|
2001-05-25 04:50:50 +08:00
|
|
|
powerpc64-*-aix*)
|
|
|
|
targ_defvec=rs6000coff64_vec
|
2001-08-29 11:39:47 +08:00
|
|
|
targ_selvecs=rs6000coff_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2001-05-25 04:50:50 +08:00
|
|
|
;;
|
2002-08-23 01:45:36 +08:00
|
|
|
powerpc64-*-elf* | powerpc-*-elf64* | powerpc64-*-linux* | \
|
|
|
|
powerpc64-*-*bsd*)
|
2001-08-27 18:22:03 +08:00
|
|
|
targ_defvec=bfd_elf64_powerpc_vec
|
|
|
|
targ_selvecs="bfd_elf64_powerpcle_vec bfd_elf32_powerpc_vec bfd_elf32_powerpcle_vec rs6000coff_vec rs6000coff64_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2001-08-27 18:22:03 +08:00
|
|
|
;;
|
|
|
|
powerpc64le-*-elf* | powerpcle-*-elf64*)
|
|
|
|
targ_defvec=bfd_elf64_powerpcle_vec
|
|
|
|
targ_selvecs="bfd_elf64_powerpc_vec bfd_elf32_powerpcle_vec bfd_elf32_powerpc_vec rs6000coff_vec rs6000coff64_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2001-08-27 18:22:03 +08:00
|
|
|
;;
|
2001-06-03 01:32:09 +08:00
|
|
|
#endif
|
1999-05-03 15:29:11 +08:00
|
|
|
powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
|
2005-03-23 23:35:50 +08:00
|
|
|
powerpc-*-solaris2* | powerpc-*-linux-* | powerpc-*-rtems* | \
|
2005-05-07 Paul Brook <paul@codesourcery.com>
bfd/
* config.bfd: Add separate case for ppc-vxworks.
* configure: Regenerate.
* configure.in: Include elf-vxworks.lo on ppc targets.
* elf-vxworks.c (elf_vxworks_final_write_processing): Handle
.rela.plt.unloaded.
* elf32-ppc.c: Add VxWorks target vec. Include elf-vxworks.h.
(PLT_ENTRY_SIZE, PLT_INITIAL_ENTRY_SIZE, PLT_SLOT_SIZE): Remove.
(VXWORKS_PLT_ENTRY_SIZE, ppc_elf_vxworks_plt_entry,
ppc_elf_vxworks_pic_plt_entry, VXWORKS_PLT_INITIAL_ENTRY_SIZE,
ppc_elf_vxworks_plt0_entry, ppc_elf_vxworks_pic_plt0_entry,
VXWORKS_PLT_NON_JMP_SLOT_RELOCS, VXWORKS_PLTRESOLVE_RELOCS,
VXWORKS_PLTRESOLVE_RELOCS_SHLIB): New.
(ppc_elf_link_hash_table): Add srelplt2, sgotplt, hgot, hplt,
is_vxworks, plt_entry_size, plt_slot_size, plt_initial_entry_size.
(ppc_elf_link_hash_table_create): Initialize hadtab plt fields.
(ppc_elf_create_got): Create .got.plt for VxWorks.
(ppc_elf_create_dynamic_sections): Create unloaded plt relocation
section for VxWorks.
(ppc_elf_select_plt_layout): Handle VxWorks plt format.
(allocate_got): VxWorks does not need a got header.
(allocate_dynrelocs): Handle VxWorks plt format.
(ppc_elf_size_dynamic_sections): Save _G_O_T_ and _P_L_T_ symbols for
VxWorks. Handle VxWorks plt/got.
(ppc_elf_finish_dynamic_sections): Fill in VxWorks plt.
(ppc_elf_vxworks_special_sections): New.
(ppc_elf_vxworks_link_hash_table_create,
ppc_elf_vxworks_add_symbol_hook,
elf_i386_vxworks_link_output_symbol_hook,
ppc_elf_vxworks_final_write_processing): New functions.
* targets.c (bfd_elf32_powerpc_vxworks_vec): Declare.
(_bfd_target_vector): Use it.
gas/
* config/tc-ppc.c (ppc_target_format): Add VxWorks.
gas/testsuite/
* gas/ppc/altivec.d: Match all powerpc target vecs.
* gas/ppc/booke.d: Ditto.
* gas/ppc/e500.d: Ditto.
ld/
* Makefile.am (ALL_EMULATIONS): Add eelf32ppcvxworks.o.
(eelf32ppcvxworks.o): Add dependencies.
* Makefile.in: Regenerate.
* configure.tgt: Add entry for powerpc-vxworks.
* emulparams/elf32-ppc.c: Mention elf32ppcvxworks.sh in comment.
* emulparams/elf32ppcvxworks.sh: New file.
* emultempl/ppc32elf.em (bfd_elf32_powerpc_vxworks_vec): Declare.
(is_ppc_elf32_vec): New function.
(ppc_after_open, ppc_before_allocation,
gld${EMULATION_NAME}_after_allocation): Use it.
2005-07-05 21:25:56 +08:00
|
|
|
powerpc-*-chorus*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_powerpc_vec
|
|
|
|
targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
|
2001-08-27 18:22:03 +08:00
|
|
|
targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2003-02-11 21:47:08 +08:00
|
|
|
powerpc-*-kaos*)
|
|
|
|
targ_defvec=bfd_elf32_powerpc_vec
|
|
|
|
targ_selvecs="bfd_elf32_powerpcle_vec ppcboot_vec"
|
|
|
|
targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
|
|
|
|
;;
|
2002-11-13 09:45:42 +08:00
|
|
|
powerpc-*-darwin* | powerpc-*-macos10* | powerpc-*-rhapsody*)
|
|
|
|
targ_defvec=mach_o_be_vec
|
|
|
|
targ_selvecs="mach_o_be_vec mach_o_le_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec"
|
|
|
|
targ_archs="bfd_powerpc_arch bfd_rs6000_arch bfd_i386_arch"
|
|
|
|
;;
|
2004-03-27 13:45:50 +08:00
|
|
|
powerpc-*-macos*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=pmac_xcoff_vec
|
|
|
|
;;
|
2004-05-18 03:50:16 +08:00
|
|
|
powerpc-*-lynxos*)
|
|
|
|
targ_defvec=bfd_elf32_powerpc_vec
|
|
|
|
targ_selvecs="rs6000coff_vec"
|
|
|
|
targ_cflags=-DSMALL_ARCHIVE
|
2004-10-15 13:47:11 +08:00
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
powerpc-*-netware*)
|
|
|
|
targ_defvec=bfd_elf32_powerpc_vec
|
|
|
|
targ_selvecs="nlm32_powerpc_vec rs6000coff_vec"
|
|
|
|
;;
|
2002-08-09 23:38:24 +08:00
|
|
|
powerpc-*-nto*)
|
* Makefile.am: Remove entries for elf32-qnx.[ch].
* Makefile.in: Regenerate.
* config.bfd: Change arm-nto to use bfd_elf32_{big|little}arm_vec,
ppc-nto to use bfd_elf32_powerpc{le}_vec, sh-nto to use
bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
* configure.in: Remove support for bfd_elf32_sh{l}qnx_vec,
bfd_elf32_powerpc{le}qnx_vec, bfd_elf32_{big|little}armqnx_vec,
and bfd_elf32_i386qnx_vec, and removed elf32-qnx.lo from other targets.
bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
* configure: Regenerate.
* elf32-qnx.c: Remove.
* elf32-qnx.h: Remove.
* elf.c: Remove calls to QNX specific set_nonloadable_filepos,
is_contained_by_filepos, and copy_private_bfd_data_p.
* elf32-i386.c: Remove QNX extended bfd support.
* elf32-ppc.c: Remove QNX extended bfd support.
* elf32-sh.c: Remove QNX extended bfd support.
* elfarm-nabi.c: Remove QNX extended bfd support.
* targets.c: Remove qnx vectors.
* elfxx-target.h (elf_backend_set_nonloadable_filepos): Remove
(elf_backend_is_contained_by_filepos): Remove.
(elf_backend_copy_private_bfd_data_p): Remove.
* po/SRC-POTFILES.in: Regenerate.
2002-11-06 19:38:35 +08:00
|
|
|
targ_defvec=bfd_elf32_powerpc_vec
|
|
|
|
targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
|
2002-08-09 23:38:24 +08:00
|
|
|
;;
|
2005-05-07 Paul Brook <paul@codesourcery.com>
bfd/
* config.bfd: Add separate case for ppc-vxworks.
* configure: Regenerate.
* configure.in: Include elf-vxworks.lo on ppc targets.
* elf-vxworks.c (elf_vxworks_final_write_processing): Handle
.rela.plt.unloaded.
* elf32-ppc.c: Add VxWorks target vec. Include elf-vxworks.h.
(PLT_ENTRY_SIZE, PLT_INITIAL_ENTRY_SIZE, PLT_SLOT_SIZE): Remove.
(VXWORKS_PLT_ENTRY_SIZE, ppc_elf_vxworks_plt_entry,
ppc_elf_vxworks_pic_plt_entry, VXWORKS_PLT_INITIAL_ENTRY_SIZE,
ppc_elf_vxworks_plt0_entry, ppc_elf_vxworks_pic_plt0_entry,
VXWORKS_PLT_NON_JMP_SLOT_RELOCS, VXWORKS_PLTRESOLVE_RELOCS,
VXWORKS_PLTRESOLVE_RELOCS_SHLIB): New.
(ppc_elf_link_hash_table): Add srelplt2, sgotplt, hgot, hplt,
is_vxworks, plt_entry_size, plt_slot_size, plt_initial_entry_size.
(ppc_elf_link_hash_table_create): Initialize hadtab plt fields.
(ppc_elf_create_got): Create .got.plt for VxWorks.
(ppc_elf_create_dynamic_sections): Create unloaded plt relocation
section for VxWorks.
(ppc_elf_select_plt_layout): Handle VxWorks plt format.
(allocate_got): VxWorks does not need a got header.
(allocate_dynrelocs): Handle VxWorks plt format.
(ppc_elf_size_dynamic_sections): Save _G_O_T_ and _P_L_T_ symbols for
VxWorks. Handle VxWorks plt/got.
(ppc_elf_finish_dynamic_sections): Fill in VxWorks plt.
(ppc_elf_vxworks_special_sections): New.
(ppc_elf_vxworks_link_hash_table_create,
ppc_elf_vxworks_add_symbol_hook,
elf_i386_vxworks_link_output_symbol_hook,
ppc_elf_vxworks_final_write_processing): New functions.
* targets.c (bfd_elf32_powerpc_vxworks_vec): Declare.
(_bfd_target_vector): Use it.
gas/
* config/tc-ppc.c (ppc_target_format): Add VxWorks.
gas/testsuite/
* gas/ppc/altivec.d: Match all powerpc target vecs.
* gas/ppc/booke.d: Ditto.
* gas/ppc/e500.d: Ditto.
ld/
* Makefile.am (ALL_EMULATIONS): Add eelf32ppcvxworks.o.
(eelf32ppcvxworks.o): Add dependencies.
* Makefile.in: Regenerate.
* configure.tgt: Add entry for powerpc-vxworks.
* emulparams/elf32-ppc.c: Mention elf32ppcvxworks.sh in comment.
* emulparams/elf32ppcvxworks.sh: New file.
* emultempl/ppc32elf.em (bfd_elf32_powerpc_vxworks_vec): Declare.
(is_ppc_elf32_vec): New function.
(ppc_after_open, ppc_before_allocation,
gld${EMULATION_NAME}_after_allocation): Use it.
2005-07-05 21:25:56 +08:00
|
|
|
powerpc-*-vxworks* | powerpc-*-windiss*)
|
|
|
|
targ_defvec=bfd_elf32_powerpc_vxworks_vec
|
|
|
|
targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec bfd_elf32_powerpcle_vec ppcboot_vec"
|
|
|
|
targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
|
|
|
|
;;
|
2002-08-09 23:38:24 +08:00
|
|
|
powerpcle-*-nto*)
|
* Makefile.am: Remove entries for elf32-qnx.[ch].
* Makefile.in: Regenerate.
* config.bfd: Change arm-nto to use bfd_elf32_{big|little}arm_vec,
ppc-nto to use bfd_elf32_powerpc{le}_vec, sh-nto to use
bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
* configure.in: Remove support for bfd_elf32_sh{l}qnx_vec,
bfd_elf32_powerpc{le}qnx_vec, bfd_elf32_{big|little}armqnx_vec,
and bfd_elf32_i386qnx_vec, and removed elf32-qnx.lo from other targets.
bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
* configure: Regenerate.
* elf32-qnx.c: Remove.
* elf32-qnx.h: Remove.
* elf.c: Remove calls to QNX specific set_nonloadable_filepos,
is_contained_by_filepos, and copy_private_bfd_data_p.
* elf32-i386.c: Remove QNX extended bfd support.
* elf32-ppc.c: Remove QNX extended bfd support.
* elf32-sh.c: Remove QNX extended bfd support.
* elfarm-nabi.c: Remove QNX extended bfd support.
* targets.c: Remove qnx vectors.
* elfxx-target.h (elf_backend_set_nonloadable_filepos): Remove
(elf_backend_is_contained_by_filepos): Remove.
(elf_backend_copy_private_bfd_data_p): Remove.
* po/SRC-POTFILES.in: Regenerate.
2002-11-06 19:38:35 +08:00
|
|
|
targ_defvec=bfd_elf32_powerpcle_vec
|
|
|
|
targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
|
2002-08-09 23:38:24 +08:00
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
|
2005-07-08 19:17:16 +08:00
|
|
|
powerpcle-*-solaris2* | powerpcle-*-linux-* | powerpcle-*-vxworks*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_powerpcle_vec
|
|
|
|
targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
|
2001-08-27 18:22:03 +08:00
|
|
|
targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
|
|
|
powerpcle-*-pe | powerpcle-*-winnt* | powerpcle-*-cygwin*)
|
|
|
|
targ_defvec=bfd_powerpcle_pe_vec
|
|
|
|
targ_selvecs="bfd_powerpcle_pei_vec bfd_powerpc_pei_vec bfd_powerpcle_pe_vec bfd_powerpc_pe_vec"
|
|
|
|
;;
|
|
|
|
|
2001-02-10 08:58:38 +08:00
|
|
|
s390-*-linux*)
|
|
|
|
targ_defvec=bfd_elf32_s390_vec
|
2002-10-17 03:54:54 +08:00
|
|
|
targ64_selvecs=bfd_elf64_s390_vec
|
2004-07-02 22:12:01 +08:00
|
|
|
want64=true
|
2001-02-10 08:58:38 +08:00
|
|
|
;;
|
|
|
|
#ifdef BFD64
|
|
|
|
s390x-*-linux*)
|
|
|
|
targ_defvec=bfd_elf64_s390_vec
|
2002-10-17 03:54:54 +08:00
|
|
|
targ_selvecs=bfd_elf32_s390_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2001-02-10 08:58:38 +08:00
|
|
|
;;
|
2004-12-17 00:02:59 +08:00
|
|
|
s390x-*-tpf*)
|
|
|
|
targ_defvec=bfd_elf64_s390_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2004-12-17 00:02:59 +08:00
|
|
|
;;
|
2001-02-10 08:58:38 +08:00
|
|
|
#endif
|
|
|
|
|
Contribute sh64-elf.
2002-01-23 Alexandre Oliva <aoliva@redhat.com>
* reloc.c (R_SH_GOTPLT32, R_SH_GOT_LOW16, R_SH_GOT_MEDLOW16,
R_SH_GOT_MEDHI16, R_SH_GOT_HI16, R_SH_GOTPLT_LOW16,
R_SH_GOTPLT_MEDLOW16, R_SH_GOTPLT_MEDHI16, R_SH_GOTPLT_HI16,
R_SH_PLT_LOW16, R_SH_PLT_MEDLOW16, R_SH_PLT_MEDHI16,
R_SH_PLT_HI16, R_SH_GOTOFF_LOW16, R_SH_GOTOFF_MEDLOW16,
R_SH_GOTOFF_MEDHI16, R_SH_GOTOFF_HI16, R_SH_GOTPC_LOW16,
R_SH_GOTPC_MEDLOW16, R_SH_GOTPC_MEDHI16, R_SH_GOTPC_HI16,
R_SH_GOT10BY4, R_SH_GOTPLT10BY4, R_SH_GOT10BY8, R_SH_GOTPLT10BY8,
R_SH_COPY64, R_SH_GLOB_DAT64, R_SH_JMP_SLOT64, R_SH_RELATIVE64):
New relocs.
* libbfd.h, bfd-in2.h: Rebuilt.
* elf32-sh.c (sh_elf_howto_table): Define new relocs.
(sh_reloc_map): Map them.
(PLT_ENTRY_SIZE, elf_sh_plt0_entry_be, elf_sh_plt0_entry_le,
elf_sh_plt_entry_be, elf_sh_plt_entry_le, elf_sh_pic_plt_entry_be,
elf_sh_pic_plt_entry_le, elf_sh_plt0_entry, elf_sh_plt_entry,
elf_sh_pic_plt_entry, elf_sh_sizeof_plt, elf_sh_plt_plt0_offset,
elf_sh_plt0_gotplt_offset, elf_sh_plt_temp_offset,
elf_sh_plt_symbol_offset, elf_sh_plt_reloc_offset,
movi_shori_putval) [INCLUDE_SHMEDIA]: New.
(elf_sh_link_hash_entry) [INCLUDE_SHMEDIA]: Add
datalabel_got_offset.
(sh_elf_link_hash_newfunc): Initialize it.
(sh_elf_relocate_section): Augment the scope of
seen_stt_datalabel. Introduce GOTPLT support. Extend GOTPC, PLT,
GOT and GOTOFF handling to new SHmedia relocation types. Support
GOT_BIAS.
(sh_elf_check_relocs): Likewise.
(sh_elf_finish_dynamic_symbol) [TARGET_SHMEDIA]: Set up values in
PLT entries using movi_shori_putval. Support GOT_BIAS.
(sh_elf_finish_dynamic_sections): Likewise.
* elf32-sh64.c (shmedia_prepare_reloc): Do not add addend to
relocation, it's now done by the caller.
(GOT_BIAS): New.
* elf64-sh64.c (GOT_BIAS, PLT_ENTRY_SIZE, elf_sh64_sizeof_plt,
elf_sh64_plt_plt0_offset, elf_sh64_plt0_gotplt_offset,
elf_sh64_plt_temp_offset, elf_sh64_plt_symbol_offset,
elf_sh64_plt_reloc_offset, ELF_DYNAMIC_INTERPRETER,
elf_sh64_pcrel_relocs_copied, elf_sh64_link_hash_entry,
elf_sh64_link_hash_table, sh64_elf64_link_hash_traverse,
sh64_elf64_hash_table): New.
(sh_elf64_howto_table): Introduce new relocs.
(sh_elf64_info_to_howto): Accept new PIC relocs.
(sh_elf64_relocate_section): Augment the scope of
seen_stt_datalabel. Support new PIC relocs.
(sh_elf64_check_relocs): Support new PIC relocs.
(elf_sh64_plt0_entry_be, elf_sh64_plt0_entry_le,
elf_sh64_plt_entry_be, elf_sh64_plt_entry_le,
elf_sh64_pic_plt_entry_be, elf_sh64_pic_plt_entry_le,
elf_sh64_plt0_entry, elf_sh64_plt_entry, elf_sh64_pic_plt_entry,
sh64_elf64_link_hash_newfunc, sh64_elf64_link_hash_table_create,
movi_shori_putval, movi_3shori_putval,
sh64_elf64_create_dynamic_sections,
sh64_elf64_adjust_dynamic_symbol, sh64_elf64_discard_copies,
sh64_elf64_size_dynamic_sections,
sh64_elf64_finish_dynamic_symbol,
sh64_elf64_finish_dynamic_sections): New.
(elf_backend_create_dynamic-sections,
bfd_elf64_bfd_link_hash_table_create,
elf_backend_adjust_dynamic_symbol,
elf_backend_size_dynamic_sections,
elf_backend_finish_dynamic_symbol,
elf_backend_finish_dynamic_sections, elf_backend_want_got_plt,
elf_backend_plt_readonly, elf_backend_want_plt_sym,
elf_backend_got_header_size, elf_backend_plt_header_size):
Define.
2001-05-16 Alexandre Oliva <aoliva@redhat.com>
* elf32-sh.c: Renumbered and renamed some SH5 relocations to
match official numbers and names; moved unmaching ones to the
range 0xf2-0xff.
* elf32-sh64.c, elf64-sh64.c: Likewise.
2001-03-12 DJ Delorie <dj@redhat.com>
* elf32-sh.c (sh_elf_relax_section): Don't relax SHmedia
sections.
2001-03-12 DJ Delorie <dj@redhat.com>
* elf32-sh64.c (shmedia_prepare_reloc): Validate relocs that must
be aligned.
* elf64-sh64.c (sh_elf64_relocate_section): Ditto.
2001-01-14 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c (bfd_elf32_bfd_copy_private_section_data): Define.
(sh64_elf_fake_sections): Set type to SHT_SH5_CR_SORTED for a
.cranges section with SEC_SORT_ENTRIES set.
(sh64_backend_section_from_shdr): Set SEC_SORT_ENTRIES on an
incoming sorted .cranges section.
(sh64_bfd_elf_copy_private_section_data): New.
(sh64_elf_final_write_processing): Only sort .cranges and modify
start address if called by linker.
2001-01-08 Ben Elliston <bje@redhat.com>
* elf32-sh64.c (sh64_elf_final_write_processing): Activate
Hans-Peter Nilsson's set bit 0 patch from 2001-01-06.
* elf64-sh64.c (sh64_elf64_final_write_processing): Ditto.
2001-01-06 Hans-Peter Nilsson <hpn@cygnus.com>
* elf64-sh64.c (sh_elf64_howto_table): No open brace at start of
line. Add comments before all entries.
<R_SH_PT_16, R_SH_SHMEDIA_CODE>: Correct and clarify describing
comment.
(sh_elf64_reloc): Correct head comment.
(sh_elf64_relocate_section): Correct spacing.
<relocating for a local symbol>: Do not honour STO_SH5_ISA32;
instead call reloc_dangerous callback.
<case R_SH_SHMEDIA_CODE>: New case.
(sh_elf64_gc_mark_hook): Correct spacing.
(sh_elf64_check_relocs): Ditto.
* elf32-sh64.c (shmedia_prepare_reloc) <case R_SH_SHMEDIA_CODE>:
New case.
* elf32-sh.c: Correct #endif comments for #ifndef-wrapped
functions.
(sh_elf_howto_table) <R_SH_PT_16, R_SH_SHMEDIA_CODE>: Correct,
clarify describing comment. Add comments before all entries.
(sh_elf_relocate_section) <relocating for a local symbol>: Do not
honour STO_SH5_ISA32; instead call reloc_dangerous callback.
2001-01-06 Hans-Peter Nilsson <hpn@cygnus.com>
Sort .cranges section in final link. Prepare to set bit 0 on
entry address.
* elf32-sh64.c (struct sh64_find_section_vma_data): New.
(sh64_elf_link_output_symbol_hook): Fix typo in prototype.
(sh64_elf_set_mach_from_flags): Set SEC_DEBUGGING on incoming
.cranges section.
(sh64_backend_section_from_shdr): New, to recognize
SHT_SH5_CR_SORTED on incoming .cranges section.
(elf_backend_section_from_shdr): Define.
(sh64_elf_final_write_processing): Sort outgoing .cranges
section. (New, temporarily disabled:) Set bit 0 on entry address
according to ISA type.
(sh64_find_section_for_address): New.
(crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb,
crange_bsearch_cmpl): Move here from opcodes/sh64-dis.c.
(sh64_address_in_cranges): Move here from opcodes/sh64-dis.c. Use
bfd_malloc, not xmalloc.
(sh64_get_contents_type): Move here from opcodes/sh64-dis.c. Make
global.
* elf32-sh64.c (sh64_elf64_final_write_processing): New, (but
temporarily disabled) setting bit 0 on entry address.
(elf_backend_final_write_processing): Define.
2001-01-05 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh.c (sh_elf_howto_table) <R_SH_PT_16>: Adjust fields to
be a proper relocation for PTA and PTB rather than a marker.
<R_SH_IMMU5, R_SH_IMMS6, R_SH_IMMU6, R_SH_IMMS10, R_SH_IMMS10BY2,
R_SH_IMMS10BY4, R_SH_IMMS10BY8, R_SH_IMMS16, R_SH_IMMU16,
R_SH_IMM_LOW16, R_SH_IMM_LOW16_PCREL, R_SH_IMM_MEDLOW16,
R_SH_IMM_MEDLOW16_PCREL, R_SH_IMM_MEDHI16, R_SH_IMM_MEDHI16_PCREL,
R_SH_IMM_HI16, R_SH_IMM_HI16_PCREL, R_SH_64, R_SH_64_PCREL>:
Zero src_mask.
* elf64-sh64.c: Ditto.
(sh_elf64_relocate_section) <case R_SH_PT_16>: New case.
* elf32-sh64.c: Include opcodes/sh64-opc.h
(shmedia_prepare_reloc): Take a bfd_link_info pointer as first
argument. Drop const qualifiers from "bfd *" and "bfd_byte *"
parameters. No unused parameters. Caller changed.
<case R_SH_PT_16>: New case.
* Makefile.am (elf32-sh64.lo): Add dependency on sh64-opc.h.
* Makefile.in: Regenerate.
2000-12-30 Hans-Peter Nilsson <hpn@cygnus.com>
* elf64-sh64.c (sh64_elf64_fake_sections): Set SHF_SH5_ISA32 for
all code sections.
(sh_elf64_set_mach_from_flags): Change from EF_SH64 to EF_SH5.
(sh64_elf_merge_private_data): Ditto.
* elf32-sh64.c (sh64_elf_fake_sections): Use sh64_elf_section_data
to access stored section flags.
(sh64_elf_final_write_processing): Return immediately unless
called by linker. Use sh64_elf_section_data (cranges) to get size
of linker-generated cranges entries.
(sh64_elf_copy_private_data): Add missing "return true".
(sh64_elf_set_mach_from_flags): Change from EF_SH64 to EF_SH5.
(sh_elf64_merge_private_data): Ditto.
2000-12-19 Hans-Peter Nilsson <hpn@cygnus.com>
* elf64-sh64.c (sh64_elf64_fake_sections): New, copy of
elf64-sh64.c:sh64_elf_fake_sections.
(elf_backend_fake_sections): Define as sh64_elf64_fake_sections.
2000-12-18 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c (sh64_elf_copy_private_data_internal): Delete.
(sh64_elf_final_write_processing): New.
(elf_backend_final_write_processing): Define.
(sh64_elf_fake_sections): Get header flags from tdata field.
(sh64_elf_copy_private_data): Do not call
sh64_elf_copy_private_data_internal, just copy e_flags field.
(sh64_elf_merge_private_data): Do not call
sh64_elf_copy_private_data_internal.
2000-12-12 Hans-Peter Nilsson <hpn@cygnus.com>
Remove EF_SH64_ABI64, let ELF size make difference.
Remove SH64-specific BFD section flag.
* elf32-sh64.c (sh64_elf_fake_sections): Recognize section as
containing SHmedia through elf_section_data (asect)->tdata
non-zero, not using a BFD section flag.
(sh64_elf_set_mach_from_flags): Don't recognize EF_SH64_ABI64.
(sh64_elf_merge_private_data): Similar.
(elf_backend_section_flags): Don't define.
(sh64_elf_backend_section_flags): Delete.
* elf64-sh64.c (sh_elf64_set_mach_from_flags): Recognize EF_SH64,
not EF_SH64_ABI64.
(sh_elf64_merge_private_data): Similar.
* section.c (Section flags definitions): Don't define
SEC_SH_ISA_SHMEDIA.
(bfd-in2.h): Regenerate.
2000-12-09 Hans-Peter Nilsson <hpn@cygnus.com>
Make DataLabel references work with partial linking.
* elf32-sh64.c: Fix formatting.
(sh64_elf_link_output_symbol_hook): New.
(elf_backend_link_output_symbol_hook): Define to
sh64_elf_link_output_symbol_hook.
(sh64_elf_add_symbol_hook): Make DataLabel symbol just global
undefined if partial linking. Adjust sanity check.
* elf64-sh64.c (sh64_elf64_link_output_symbol_hook): New.
(elf_backend_link_output_symbol_hook): Define to
sh64_elf64_link_output_symbol_hook.
(sh64_elf64_add_symbol_hook): Make DataLabel symbol just global
undefined if partial linking. Adjust sanity check.
2000-12-07 Hans-Peter Nilsson <hpn@cygnus.com>
Implement semantics for inter-file DataLabel references.
* elf64-sh64.c (DATALABEL_SUFFIX): Define.
(sh64_elf64_add_symbol_hook): New.
(sh_elf64_relocate_section): If passing an indirect symbol with
st_type STT_DATALABEL on the way to a symbol with st_other
STO_SH5_ISA32, do not bitor 1 to the relocation.
(elf_backend_add_symbol_hook): Define to
sh64_elf64_add_symbol_hook.
* elf64-sh32.c: Tweak comments.
(DATALABEL_SUFFIX): Define.
(sh64_elf_add_symbol_hook): New.
(elf_backend_add_symbol_hook): Define to sh64_elf_add_symbol_hook.
* elf32-sh.c (sh_elf_relocate_section): If passing an indirect
symbol with st_type STT_DATALABEL on the way to a symbol with
st_other STO_SH5_ISA32, do not bitor 1 to the relocation.
2000-12-05 Hans-Peter Nilsson <hpn@cygnus.com>
Pass through STT_DATALABEL.
* elf32-sh64.c (sh64_elf_get_symbol_type): New.
(elf_backend_get_symbol_type): Define.
* elf64-sh64.c (sh64_elf64_get_symbol_type): New.
(elf_backend_get_symbol_type): Define.
2000-11-30 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c: Tweak comments.
(sh64_elf_copy_private_data_internal): Add prototype.
(bfd_elf32_bfd_set_private_flags): Define.
(sh64_elf_copy_private_data_internal): Compare machine name, not
textual BFD target name, to check whether to copy section flag
SHF_SH5_ISA32.
(sh64_elf_merge_private_data): Validize bfd_get_arch_size.
Tweak section-contents-type-mismatch message.
(shmedia_prepare_reloc): Add ATTRIBUTE_UNUSED markers.
Validize reloc-types.
* elf64-sh64.c: New file.
* targets.c (bfd_elf64_sh64_vec, bfd_elf64_sh64l_vec): Declare.
* Makefile.am (BFD64_BACKENDS): Add elf64-sh64.lo.
(BFD64_BACKENDS_CFILES): Add elf64-sh64.c.
Regenerate dependencies.
* Makefile.in: Regenerate.
* config.bfd (sh64-*-elf*): Add bfd_elf64_sh64_vec and
bfd_elf64_sh64l_vec.
* configure.in: Handle bfd_elf64_sh64_vec and
bfd_elf64_sh64l_vec.
* configure: Regenerate.
* po/POTFILES.in: Regenerate.
* po/bfd.pot: Regenerate.
2000-11-29 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c (sh64_elf_set_mach_from_flags): Do not recognize
anything else but EF_SH64 and EF_SH64_ABI64.
(sh64_elf_merge_private_data): Emit error for anything else but
EF_SH64 and EF_SH64_ABI64.
* config.bfd: Remove bfd_elf32_shblin_vec and bfd_elf32_shlin_vec
from targ_selvecs.
* configure.in: Add cofflink.lo to bfd_elf32_sh64_vec and
bfd_elf32_sh64l_vec as a temporary measure.
* configure: Regenerate.
2000-11-27 Hans-Peter Nilsson <hpn@cygnus.com>
* cpu-sh.c (arch_info_struct): Include sh5 item
unconditionalized.
* config.bfd (sh64-*-elf*): Do not set targ_cflags.
Add targ_selvecs bfd_elf32_sh_vec, bfd_elf32_shl_vec,
bfd_elf32_shblin_vec and bfd_elf32_shlin_vec.
* elf32-sh64.c: Tweak comments.
(sh64_elf_set_mach_from_flags): Recognize all machine flags that
are proper subsets of SH64 as bfd_mach_sh5. Add EF_SH64_ABI64.
(sh64_elf_copy_private_data_internal): Wrap long line.
(sh64_elf_merge_private_data): Rewrite to allow objects from
SH64 subsets to be linked together.
(INCLUDE_SHMEDIA): Define.
* elf32-sh.c (sh_elf_relocate_section) <local symbol>:
Parenthesize plus-expression inside or-expression.
<global symbol>: Ditto.
(sh_elf_set_mach_from_flags): Remove code refusing
deleted EF_SH64_32BIT_ABI flag.
2000-11-26 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh.c (sh_elf_howto_table) <R_SH_IMM_LOW16_PCREL,
R_SH_IMM_MEDLOW16_PCREL, R_SH_IMM_MEDHI16_PCREL,
R_SH_IMM_HI16_PCREL, R_SH_64_PCREL>: Set pcrel_offset to true.
(sh_elf_relocate_section) <local symbol>: Or 1 in
calculation of relocation if sym->st_other & STO_SH5_ISA32.
<global symbol>: Ditto if h->other & STO_SH5_ISA32.
* elf32-sh64.c (shmedia_prepare_reloc): Add rel->r_addend to
relocation.
2000-11-24 Hans-Peter Nilsson <hpn@cygnus.com>
* Makefile.am (BFD32_BACKENDS): Add elf32-sh64.lo.
(BFD32_BACKENDS_CFILES): Add elf32-sh64.c.
Regenerate dependencies.
* Makefile.in: Regenerate.
* archures.c: Add bfd_mach_sh5.
* config.bfd: Map targ_cpu sh* to bfd_sh_arch.
Handle sh64-*-elf*. Set targ_cflags to -DINCLUDE_SHMEDIA.
* configure.in: Handle bfd_elf32_sh64_vec and bfd_elf32_sh64l_vec.
* configure: Regenerate.
* reloc.c (BFD_RELOC_SH_SHMEDIA_CODE, BFD_RELOC_SH_IMMU5,
BFD_RELOC_SH_IMMS6, BFD_RELOC_SH_IMMS6BY32, BFD_RELOC_SH_IMMU6,
BFD_RELOC_SH_IMMS10, BFD_RELOC_SH_IMMS10BY2,
BFD_RELOC_SH_IMMS10BY4, BFD_RELOC_SH_IMMS10BY8,
BFD_RELOC_SH_IMMS16, BFD_RELOC_SH_IMMU16, BFD_RELOC_SH_IMM_LOW16,
BFD_RELOC_SH_IMM_LOW16_PCREL, BFD_RELOC_SH_IMM_MEDLOW16,
BFD_RELOC_SH_IMM_MEDLOW16_PCREL, BFD_RELOC_SH_IMM_MEDHI16,
BFD_RELOC_SH_IMM_MEDHI16_PCREL, BFD_RELOC_SH_IMM_HI16,
BFD_RELOC_SH_IMM_HI16_PCREL, BFD_RELOC_SH_PT_16): New relocations.
* cpu-sh.c [INCLUDE_SHMEDIA] (arch_info_struct): Define and link
in item for SH5.
* elf32-sh.c [INCLUDE_SHMEDIA] (sh_elf_howto_table): Add howto items
for SHmedia relocs.
[INCLUDE_SHMEDIA] (sh_rel): Add mappings for SHmedia relocs.
[INCLUDE_SHMEDIA] (sh_elf_relocate_section) [default]: Call
shmedia_prepare_reloc, goto final_link_relocate if it returns
non-zero, else fail as before.
(sh_elf_set_mach_from_flags): Provide function only if not defined
as macro. Do not recognize objects with EF_SH64_32BIT_ABI set.
(sh_elf_set_private_flags): Provide function only if not defined
as a macro.
(sh_elf_copy_private_data): Similar.
(sh_elf_merge_private_data): Similar.
* section.c (SEC_SH_ISA_SHMEDIA): New.
* targets.c (bfd_elf32_sh64_vec, bfd_elf32_sh64l_vec): Declare.
* elf32-sh64.c: New file.
* libbfd.h: Regenerate.
* bfd-in2.h: Regenerate.
* po/POTFILES.in: Regenerate.
* po/bfd.pot: Regenerate.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
2002-02-08 13:33:27 +08:00
|
|
|
#ifdef BFD64
|
2002-06-06 03:54:28 +08:00
|
|
|
sh64l*-*-elf*)
|
|
|
|
targ_defvec=bfd_elf32_sh64l_vec
|
|
|
|
targ_selvecs="bfd_elf32_sh64_vec bfd_elf64_sh64l_vec bfd_elf64_sh64_vec bfd_elf32_shl_vec bfd_elf32_sh_vec"
|
|
|
|
targ_underscore=yes
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2002-06-06 03:54:28 +08:00
|
|
|
;;
|
Contribute sh64-elf.
2002-01-23 Alexandre Oliva <aoliva@redhat.com>
* reloc.c (R_SH_GOTPLT32, R_SH_GOT_LOW16, R_SH_GOT_MEDLOW16,
R_SH_GOT_MEDHI16, R_SH_GOT_HI16, R_SH_GOTPLT_LOW16,
R_SH_GOTPLT_MEDLOW16, R_SH_GOTPLT_MEDHI16, R_SH_GOTPLT_HI16,
R_SH_PLT_LOW16, R_SH_PLT_MEDLOW16, R_SH_PLT_MEDHI16,
R_SH_PLT_HI16, R_SH_GOTOFF_LOW16, R_SH_GOTOFF_MEDLOW16,
R_SH_GOTOFF_MEDHI16, R_SH_GOTOFF_HI16, R_SH_GOTPC_LOW16,
R_SH_GOTPC_MEDLOW16, R_SH_GOTPC_MEDHI16, R_SH_GOTPC_HI16,
R_SH_GOT10BY4, R_SH_GOTPLT10BY4, R_SH_GOT10BY8, R_SH_GOTPLT10BY8,
R_SH_COPY64, R_SH_GLOB_DAT64, R_SH_JMP_SLOT64, R_SH_RELATIVE64):
New relocs.
* libbfd.h, bfd-in2.h: Rebuilt.
* elf32-sh.c (sh_elf_howto_table): Define new relocs.
(sh_reloc_map): Map them.
(PLT_ENTRY_SIZE, elf_sh_plt0_entry_be, elf_sh_plt0_entry_le,
elf_sh_plt_entry_be, elf_sh_plt_entry_le, elf_sh_pic_plt_entry_be,
elf_sh_pic_plt_entry_le, elf_sh_plt0_entry, elf_sh_plt_entry,
elf_sh_pic_plt_entry, elf_sh_sizeof_plt, elf_sh_plt_plt0_offset,
elf_sh_plt0_gotplt_offset, elf_sh_plt_temp_offset,
elf_sh_plt_symbol_offset, elf_sh_plt_reloc_offset,
movi_shori_putval) [INCLUDE_SHMEDIA]: New.
(elf_sh_link_hash_entry) [INCLUDE_SHMEDIA]: Add
datalabel_got_offset.
(sh_elf_link_hash_newfunc): Initialize it.
(sh_elf_relocate_section): Augment the scope of
seen_stt_datalabel. Introduce GOTPLT support. Extend GOTPC, PLT,
GOT and GOTOFF handling to new SHmedia relocation types. Support
GOT_BIAS.
(sh_elf_check_relocs): Likewise.
(sh_elf_finish_dynamic_symbol) [TARGET_SHMEDIA]: Set up values in
PLT entries using movi_shori_putval. Support GOT_BIAS.
(sh_elf_finish_dynamic_sections): Likewise.
* elf32-sh64.c (shmedia_prepare_reloc): Do not add addend to
relocation, it's now done by the caller.
(GOT_BIAS): New.
* elf64-sh64.c (GOT_BIAS, PLT_ENTRY_SIZE, elf_sh64_sizeof_plt,
elf_sh64_plt_plt0_offset, elf_sh64_plt0_gotplt_offset,
elf_sh64_plt_temp_offset, elf_sh64_plt_symbol_offset,
elf_sh64_plt_reloc_offset, ELF_DYNAMIC_INTERPRETER,
elf_sh64_pcrel_relocs_copied, elf_sh64_link_hash_entry,
elf_sh64_link_hash_table, sh64_elf64_link_hash_traverse,
sh64_elf64_hash_table): New.
(sh_elf64_howto_table): Introduce new relocs.
(sh_elf64_info_to_howto): Accept new PIC relocs.
(sh_elf64_relocate_section): Augment the scope of
seen_stt_datalabel. Support new PIC relocs.
(sh_elf64_check_relocs): Support new PIC relocs.
(elf_sh64_plt0_entry_be, elf_sh64_plt0_entry_le,
elf_sh64_plt_entry_be, elf_sh64_plt_entry_le,
elf_sh64_pic_plt_entry_be, elf_sh64_pic_plt_entry_le,
elf_sh64_plt0_entry, elf_sh64_plt_entry, elf_sh64_pic_plt_entry,
sh64_elf64_link_hash_newfunc, sh64_elf64_link_hash_table_create,
movi_shori_putval, movi_3shori_putval,
sh64_elf64_create_dynamic_sections,
sh64_elf64_adjust_dynamic_symbol, sh64_elf64_discard_copies,
sh64_elf64_size_dynamic_sections,
sh64_elf64_finish_dynamic_symbol,
sh64_elf64_finish_dynamic_sections): New.
(elf_backend_create_dynamic-sections,
bfd_elf64_bfd_link_hash_table_create,
elf_backend_adjust_dynamic_symbol,
elf_backend_size_dynamic_sections,
elf_backend_finish_dynamic_symbol,
elf_backend_finish_dynamic_sections, elf_backend_want_got_plt,
elf_backend_plt_readonly, elf_backend_want_plt_sym,
elf_backend_got_header_size, elf_backend_plt_header_size):
Define.
2001-05-16 Alexandre Oliva <aoliva@redhat.com>
* elf32-sh.c: Renumbered and renamed some SH5 relocations to
match official numbers and names; moved unmaching ones to the
range 0xf2-0xff.
* elf32-sh64.c, elf64-sh64.c: Likewise.
2001-03-12 DJ Delorie <dj@redhat.com>
* elf32-sh.c (sh_elf_relax_section): Don't relax SHmedia
sections.
2001-03-12 DJ Delorie <dj@redhat.com>
* elf32-sh64.c (shmedia_prepare_reloc): Validate relocs that must
be aligned.
* elf64-sh64.c (sh_elf64_relocate_section): Ditto.
2001-01-14 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c (bfd_elf32_bfd_copy_private_section_data): Define.
(sh64_elf_fake_sections): Set type to SHT_SH5_CR_SORTED for a
.cranges section with SEC_SORT_ENTRIES set.
(sh64_backend_section_from_shdr): Set SEC_SORT_ENTRIES on an
incoming sorted .cranges section.
(sh64_bfd_elf_copy_private_section_data): New.
(sh64_elf_final_write_processing): Only sort .cranges and modify
start address if called by linker.
2001-01-08 Ben Elliston <bje@redhat.com>
* elf32-sh64.c (sh64_elf_final_write_processing): Activate
Hans-Peter Nilsson's set bit 0 patch from 2001-01-06.
* elf64-sh64.c (sh64_elf64_final_write_processing): Ditto.
2001-01-06 Hans-Peter Nilsson <hpn@cygnus.com>
* elf64-sh64.c (sh_elf64_howto_table): No open brace at start of
line. Add comments before all entries.
<R_SH_PT_16, R_SH_SHMEDIA_CODE>: Correct and clarify describing
comment.
(sh_elf64_reloc): Correct head comment.
(sh_elf64_relocate_section): Correct spacing.
<relocating for a local symbol>: Do not honour STO_SH5_ISA32;
instead call reloc_dangerous callback.
<case R_SH_SHMEDIA_CODE>: New case.
(sh_elf64_gc_mark_hook): Correct spacing.
(sh_elf64_check_relocs): Ditto.
* elf32-sh64.c (shmedia_prepare_reloc) <case R_SH_SHMEDIA_CODE>:
New case.
* elf32-sh.c: Correct #endif comments for #ifndef-wrapped
functions.
(sh_elf_howto_table) <R_SH_PT_16, R_SH_SHMEDIA_CODE>: Correct,
clarify describing comment. Add comments before all entries.
(sh_elf_relocate_section) <relocating for a local symbol>: Do not
honour STO_SH5_ISA32; instead call reloc_dangerous callback.
2001-01-06 Hans-Peter Nilsson <hpn@cygnus.com>
Sort .cranges section in final link. Prepare to set bit 0 on
entry address.
* elf32-sh64.c (struct sh64_find_section_vma_data): New.
(sh64_elf_link_output_symbol_hook): Fix typo in prototype.
(sh64_elf_set_mach_from_flags): Set SEC_DEBUGGING on incoming
.cranges section.
(sh64_backend_section_from_shdr): New, to recognize
SHT_SH5_CR_SORTED on incoming .cranges section.
(elf_backend_section_from_shdr): Define.
(sh64_elf_final_write_processing): Sort outgoing .cranges
section. (New, temporarily disabled:) Set bit 0 on entry address
according to ISA type.
(sh64_find_section_for_address): New.
(crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb,
crange_bsearch_cmpl): Move here from opcodes/sh64-dis.c.
(sh64_address_in_cranges): Move here from opcodes/sh64-dis.c. Use
bfd_malloc, not xmalloc.
(sh64_get_contents_type): Move here from opcodes/sh64-dis.c. Make
global.
* elf32-sh64.c (sh64_elf64_final_write_processing): New, (but
temporarily disabled) setting bit 0 on entry address.
(elf_backend_final_write_processing): Define.
2001-01-05 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh.c (sh_elf_howto_table) <R_SH_PT_16>: Adjust fields to
be a proper relocation for PTA and PTB rather than a marker.
<R_SH_IMMU5, R_SH_IMMS6, R_SH_IMMU6, R_SH_IMMS10, R_SH_IMMS10BY2,
R_SH_IMMS10BY4, R_SH_IMMS10BY8, R_SH_IMMS16, R_SH_IMMU16,
R_SH_IMM_LOW16, R_SH_IMM_LOW16_PCREL, R_SH_IMM_MEDLOW16,
R_SH_IMM_MEDLOW16_PCREL, R_SH_IMM_MEDHI16, R_SH_IMM_MEDHI16_PCREL,
R_SH_IMM_HI16, R_SH_IMM_HI16_PCREL, R_SH_64, R_SH_64_PCREL>:
Zero src_mask.
* elf64-sh64.c: Ditto.
(sh_elf64_relocate_section) <case R_SH_PT_16>: New case.
* elf32-sh64.c: Include opcodes/sh64-opc.h
(shmedia_prepare_reloc): Take a bfd_link_info pointer as first
argument. Drop const qualifiers from "bfd *" and "bfd_byte *"
parameters. No unused parameters. Caller changed.
<case R_SH_PT_16>: New case.
* Makefile.am (elf32-sh64.lo): Add dependency on sh64-opc.h.
* Makefile.in: Regenerate.
2000-12-30 Hans-Peter Nilsson <hpn@cygnus.com>
* elf64-sh64.c (sh64_elf64_fake_sections): Set SHF_SH5_ISA32 for
all code sections.
(sh_elf64_set_mach_from_flags): Change from EF_SH64 to EF_SH5.
(sh64_elf_merge_private_data): Ditto.
* elf32-sh64.c (sh64_elf_fake_sections): Use sh64_elf_section_data
to access stored section flags.
(sh64_elf_final_write_processing): Return immediately unless
called by linker. Use sh64_elf_section_data (cranges) to get size
of linker-generated cranges entries.
(sh64_elf_copy_private_data): Add missing "return true".
(sh64_elf_set_mach_from_flags): Change from EF_SH64 to EF_SH5.
(sh_elf64_merge_private_data): Ditto.
2000-12-19 Hans-Peter Nilsson <hpn@cygnus.com>
* elf64-sh64.c (sh64_elf64_fake_sections): New, copy of
elf64-sh64.c:sh64_elf_fake_sections.
(elf_backend_fake_sections): Define as sh64_elf64_fake_sections.
2000-12-18 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c (sh64_elf_copy_private_data_internal): Delete.
(sh64_elf_final_write_processing): New.
(elf_backend_final_write_processing): Define.
(sh64_elf_fake_sections): Get header flags from tdata field.
(sh64_elf_copy_private_data): Do not call
sh64_elf_copy_private_data_internal, just copy e_flags field.
(sh64_elf_merge_private_data): Do not call
sh64_elf_copy_private_data_internal.
2000-12-12 Hans-Peter Nilsson <hpn@cygnus.com>
Remove EF_SH64_ABI64, let ELF size make difference.
Remove SH64-specific BFD section flag.
* elf32-sh64.c (sh64_elf_fake_sections): Recognize section as
containing SHmedia through elf_section_data (asect)->tdata
non-zero, not using a BFD section flag.
(sh64_elf_set_mach_from_flags): Don't recognize EF_SH64_ABI64.
(sh64_elf_merge_private_data): Similar.
(elf_backend_section_flags): Don't define.
(sh64_elf_backend_section_flags): Delete.
* elf64-sh64.c (sh_elf64_set_mach_from_flags): Recognize EF_SH64,
not EF_SH64_ABI64.
(sh_elf64_merge_private_data): Similar.
* section.c (Section flags definitions): Don't define
SEC_SH_ISA_SHMEDIA.
(bfd-in2.h): Regenerate.
2000-12-09 Hans-Peter Nilsson <hpn@cygnus.com>
Make DataLabel references work with partial linking.
* elf32-sh64.c: Fix formatting.
(sh64_elf_link_output_symbol_hook): New.
(elf_backend_link_output_symbol_hook): Define to
sh64_elf_link_output_symbol_hook.
(sh64_elf_add_symbol_hook): Make DataLabel symbol just global
undefined if partial linking. Adjust sanity check.
* elf64-sh64.c (sh64_elf64_link_output_symbol_hook): New.
(elf_backend_link_output_symbol_hook): Define to
sh64_elf64_link_output_symbol_hook.
(sh64_elf64_add_symbol_hook): Make DataLabel symbol just global
undefined if partial linking. Adjust sanity check.
2000-12-07 Hans-Peter Nilsson <hpn@cygnus.com>
Implement semantics for inter-file DataLabel references.
* elf64-sh64.c (DATALABEL_SUFFIX): Define.
(sh64_elf64_add_symbol_hook): New.
(sh_elf64_relocate_section): If passing an indirect symbol with
st_type STT_DATALABEL on the way to a symbol with st_other
STO_SH5_ISA32, do not bitor 1 to the relocation.
(elf_backend_add_symbol_hook): Define to
sh64_elf64_add_symbol_hook.
* elf64-sh32.c: Tweak comments.
(DATALABEL_SUFFIX): Define.
(sh64_elf_add_symbol_hook): New.
(elf_backend_add_symbol_hook): Define to sh64_elf_add_symbol_hook.
* elf32-sh.c (sh_elf_relocate_section): If passing an indirect
symbol with st_type STT_DATALABEL on the way to a symbol with
st_other STO_SH5_ISA32, do not bitor 1 to the relocation.
2000-12-05 Hans-Peter Nilsson <hpn@cygnus.com>
Pass through STT_DATALABEL.
* elf32-sh64.c (sh64_elf_get_symbol_type): New.
(elf_backend_get_symbol_type): Define.
* elf64-sh64.c (sh64_elf64_get_symbol_type): New.
(elf_backend_get_symbol_type): Define.
2000-11-30 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c: Tweak comments.
(sh64_elf_copy_private_data_internal): Add prototype.
(bfd_elf32_bfd_set_private_flags): Define.
(sh64_elf_copy_private_data_internal): Compare machine name, not
textual BFD target name, to check whether to copy section flag
SHF_SH5_ISA32.
(sh64_elf_merge_private_data): Validize bfd_get_arch_size.
Tweak section-contents-type-mismatch message.
(shmedia_prepare_reloc): Add ATTRIBUTE_UNUSED markers.
Validize reloc-types.
* elf64-sh64.c: New file.
* targets.c (bfd_elf64_sh64_vec, bfd_elf64_sh64l_vec): Declare.
* Makefile.am (BFD64_BACKENDS): Add elf64-sh64.lo.
(BFD64_BACKENDS_CFILES): Add elf64-sh64.c.
Regenerate dependencies.
* Makefile.in: Regenerate.
* config.bfd (sh64-*-elf*): Add bfd_elf64_sh64_vec and
bfd_elf64_sh64l_vec.
* configure.in: Handle bfd_elf64_sh64_vec and
bfd_elf64_sh64l_vec.
* configure: Regenerate.
* po/POTFILES.in: Regenerate.
* po/bfd.pot: Regenerate.
2000-11-29 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c (sh64_elf_set_mach_from_flags): Do not recognize
anything else but EF_SH64 and EF_SH64_ABI64.
(sh64_elf_merge_private_data): Emit error for anything else but
EF_SH64 and EF_SH64_ABI64.
* config.bfd: Remove bfd_elf32_shblin_vec and bfd_elf32_shlin_vec
from targ_selvecs.
* configure.in: Add cofflink.lo to bfd_elf32_sh64_vec and
bfd_elf32_sh64l_vec as a temporary measure.
* configure: Regenerate.
2000-11-27 Hans-Peter Nilsson <hpn@cygnus.com>
* cpu-sh.c (arch_info_struct): Include sh5 item
unconditionalized.
* config.bfd (sh64-*-elf*): Do not set targ_cflags.
Add targ_selvecs bfd_elf32_sh_vec, bfd_elf32_shl_vec,
bfd_elf32_shblin_vec and bfd_elf32_shlin_vec.
* elf32-sh64.c: Tweak comments.
(sh64_elf_set_mach_from_flags): Recognize all machine flags that
are proper subsets of SH64 as bfd_mach_sh5. Add EF_SH64_ABI64.
(sh64_elf_copy_private_data_internal): Wrap long line.
(sh64_elf_merge_private_data): Rewrite to allow objects from
SH64 subsets to be linked together.
(INCLUDE_SHMEDIA): Define.
* elf32-sh.c (sh_elf_relocate_section) <local symbol>:
Parenthesize plus-expression inside or-expression.
<global symbol>: Ditto.
(sh_elf_set_mach_from_flags): Remove code refusing
deleted EF_SH64_32BIT_ABI flag.
2000-11-26 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh.c (sh_elf_howto_table) <R_SH_IMM_LOW16_PCREL,
R_SH_IMM_MEDLOW16_PCREL, R_SH_IMM_MEDHI16_PCREL,
R_SH_IMM_HI16_PCREL, R_SH_64_PCREL>: Set pcrel_offset to true.
(sh_elf_relocate_section) <local symbol>: Or 1 in
calculation of relocation if sym->st_other & STO_SH5_ISA32.
<global symbol>: Ditto if h->other & STO_SH5_ISA32.
* elf32-sh64.c (shmedia_prepare_reloc): Add rel->r_addend to
relocation.
2000-11-24 Hans-Peter Nilsson <hpn@cygnus.com>
* Makefile.am (BFD32_BACKENDS): Add elf32-sh64.lo.
(BFD32_BACKENDS_CFILES): Add elf32-sh64.c.
Regenerate dependencies.
* Makefile.in: Regenerate.
* archures.c: Add bfd_mach_sh5.
* config.bfd: Map targ_cpu sh* to bfd_sh_arch.
Handle sh64-*-elf*. Set targ_cflags to -DINCLUDE_SHMEDIA.
* configure.in: Handle bfd_elf32_sh64_vec and bfd_elf32_sh64l_vec.
* configure: Regenerate.
* reloc.c (BFD_RELOC_SH_SHMEDIA_CODE, BFD_RELOC_SH_IMMU5,
BFD_RELOC_SH_IMMS6, BFD_RELOC_SH_IMMS6BY32, BFD_RELOC_SH_IMMU6,
BFD_RELOC_SH_IMMS10, BFD_RELOC_SH_IMMS10BY2,
BFD_RELOC_SH_IMMS10BY4, BFD_RELOC_SH_IMMS10BY8,
BFD_RELOC_SH_IMMS16, BFD_RELOC_SH_IMMU16, BFD_RELOC_SH_IMM_LOW16,
BFD_RELOC_SH_IMM_LOW16_PCREL, BFD_RELOC_SH_IMM_MEDLOW16,
BFD_RELOC_SH_IMM_MEDLOW16_PCREL, BFD_RELOC_SH_IMM_MEDHI16,
BFD_RELOC_SH_IMM_MEDHI16_PCREL, BFD_RELOC_SH_IMM_HI16,
BFD_RELOC_SH_IMM_HI16_PCREL, BFD_RELOC_SH_PT_16): New relocations.
* cpu-sh.c [INCLUDE_SHMEDIA] (arch_info_struct): Define and link
in item for SH5.
* elf32-sh.c [INCLUDE_SHMEDIA] (sh_elf_howto_table): Add howto items
for SHmedia relocs.
[INCLUDE_SHMEDIA] (sh_rel): Add mappings for SHmedia relocs.
[INCLUDE_SHMEDIA] (sh_elf_relocate_section) [default]: Call
shmedia_prepare_reloc, goto final_link_relocate if it returns
non-zero, else fail as before.
(sh_elf_set_mach_from_flags): Provide function only if not defined
as macro. Do not recognize objects with EF_SH64_32BIT_ABI set.
(sh_elf_set_private_flags): Provide function only if not defined
as a macro.
(sh_elf_copy_private_data): Similar.
(sh_elf_merge_private_data): Similar.
* section.c (SEC_SH_ISA_SHMEDIA): New.
* targets.c (bfd_elf32_sh64_vec, bfd_elf32_sh64l_vec): Declare.
* elf32-sh64.c: New file.
* libbfd.h: Regenerate.
* bfd-in2.h: Regenerate.
* po/POTFILES.in: Regenerate.
* po/bfd.pot: Regenerate.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
2002-02-08 13:33:27 +08:00
|
|
|
sh64-*-elf*)
|
|
|
|
targ_defvec=bfd_elf32_sh64_vec
|
|
|
|
targ_selvecs="bfd_elf32_sh64l_vec bfd_elf64_sh64_vec bfd_elf64_sh64l_vec bfd_elf32_sh_vec bfd_elf32_shl_vec"
|
|
|
|
targ_underscore=yes
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
Contribute sh64-elf.
2002-01-23 Alexandre Oliva <aoliva@redhat.com>
* reloc.c (R_SH_GOTPLT32, R_SH_GOT_LOW16, R_SH_GOT_MEDLOW16,
R_SH_GOT_MEDHI16, R_SH_GOT_HI16, R_SH_GOTPLT_LOW16,
R_SH_GOTPLT_MEDLOW16, R_SH_GOTPLT_MEDHI16, R_SH_GOTPLT_HI16,
R_SH_PLT_LOW16, R_SH_PLT_MEDLOW16, R_SH_PLT_MEDHI16,
R_SH_PLT_HI16, R_SH_GOTOFF_LOW16, R_SH_GOTOFF_MEDLOW16,
R_SH_GOTOFF_MEDHI16, R_SH_GOTOFF_HI16, R_SH_GOTPC_LOW16,
R_SH_GOTPC_MEDLOW16, R_SH_GOTPC_MEDHI16, R_SH_GOTPC_HI16,
R_SH_GOT10BY4, R_SH_GOTPLT10BY4, R_SH_GOT10BY8, R_SH_GOTPLT10BY8,
R_SH_COPY64, R_SH_GLOB_DAT64, R_SH_JMP_SLOT64, R_SH_RELATIVE64):
New relocs.
* libbfd.h, bfd-in2.h: Rebuilt.
* elf32-sh.c (sh_elf_howto_table): Define new relocs.
(sh_reloc_map): Map them.
(PLT_ENTRY_SIZE, elf_sh_plt0_entry_be, elf_sh_plt0_entry_le,
elf_sh_plt_entry_be, elf_sh_plt_entry_le, elf_sh_pic_plt_entry_be,
elf_sh_pic_plt_entry_le, elf_sh_plt0_entry, elf_sh_plt_entry,
elf_sh_pic_plt_entry, elf_sh_sizeof_plt, elf_sh_plt_plt0_offset,
elf_sh_plt0_gotplt_offset, elf_sh_plt_temp_offset,
elf_sh_plt_symbol_offset, elf_sh_plt_reloc_offset,
movi_shori_putval) [INCLUDE_SHMEDIA]: New.
(elf_sh_link_hash_entry) [INCLUDE_SHMEDIA]: Add
datalabel_got_offset.
(sh_elf_link_hash_newfunc): Initialize it.
(sh_elf_relocate_section): Augment the scope of
seen_stt_datalabel. Introduce GOTPLT support. Extend GOTPC, PLT,
GOT and GOTOFF handling to new SHmedia relocation types. Support
GOT_BIAS.
(sh_elf_check_relocs): Likewise.
(sh_elf_finish_dynamic_symbol) [TARGET_SHMEDIA]: Set up values in
PLT entries using movi_shori_putval. Support GOT_BIAS.
(sh_elf_finish_dynamic_sections): Likewise.
* elf32-sh64.c (shmedia_prepare_reloc): Do not add addend to
relocation, it's now done by the caller.
(GOT_BIAS): New.
* elf64-sh64.c (GOT_BIAS, PLT_ENTRY_SIZE, elf_sh64_sizeof_plt,
elf_sh64_plt_plt0_offset, elf_sh64_plt0_gotplt_offset,
elf_sh64_plt_temp_offset, elf_sh64_plt_symbol_offset,
elf_sh64_plt_reloc_offset, ELF_DYNAMIC_INTERPRETER,
elf_sh64_pcrel_relocs_copied, elf_sh64_link_hash_entry,
elf_sh64_link_hash_table, sh64_elf64_link_hash_traverse,
sh64_elf64_hash_table): New.
(sh_elf64_howto_table): Introduce new relocs.
(sh_elf64_info_to_howto): Accept new PIC relocs.
(sh_elf64_relocate_section): Augment the scope of
seen_stt_datalabel. Support new PIC relocs.
(sh_elf64_check_relocs): Support new PIC relocs.
(elf_sh64_plt0_entry_be, elf_sh64_plt0_entry_le,
elf_sh64_plt_entry_be, elf_sh64_plt_entry_le,
elf_sh64_pic_plt_entry_be, elf_sh64_pic_plt_entry_le,
elf_sh64_plt0_entry, elf_sh64_plt_entry, elf_sh64_pic_plt_entry,
sh64_elf64_link_hash_newfunc, sh64_elf64_link_hash_table_create,
movi_shori_putval, movi_3shori_putval,
sh64_elf64_create_dynamic_sections,
sh64_elf64_adjust_dynamic_symbol, sh64_elf64_discard_copies,
sh64_elf64_size_dynamic_sections,
sh64_elf64_finish_dynamic_symbol,
sh64_elf64_finish_dynamic_sections): New.
(elf_backend_create_dynamic-sections,
bfd_elf64_bfd_link_hash_table_create,
elf_backend_adjust_dynamic_symbol,
elf_backend_size_dynamic_sections,
elf_backend_finish_dynamic_symbol,
elf_backend_finish_dynamic_sections, elf_backend_want_got_plt,
elf_backend_plt_readonly, elf_backend_want_plt_sym,
elf_backend_got_header_size, elf_backend_plt_header_size):
Define.
2001-05-16 Alexandre Oliva <aoliva@redhat.com>
* elf32-sh.c: Renumbered and renamed some SH5 relocations to
match official numbers and names; moved unmaching ones to the
range 0xf2-0xff.
* elf32-sh64.c, elf64-sh64.c: Likewise.
2001-03-12 DJ Delorie <dj@redhat.com>
* elf32-sh.c (sh_elf_relax_section): Don't relax SHmedia
sections.
2001-03-12 DJ Delorie <dj@redhat.com>
* elf32-sh64.c (shmedia_prepare_reloc): Validate relocs that must
be aligned.
* elf64-sh64.c (sh_elf64_relocate_section): Ditto.
2001-01-14 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c (bfd_elf32_bfd_copy_private_section_data): Define.
(sh64_elf_fake_sections): Set type to SHT_SH5_CR_SORTED for a
.cranges section with SEC_SORT_ENTRIES set.
(sh64_backend_section_from_shdr): Set SEC_SORT_ENTRIES on an
incoming sorted .cranges section.
(sh64_bfd_elf_copy_private_section_data): New.
(sh64_elf_final_write_processing): Only sort .cranges and modify
start address if called by linker.
2001-01-08 Ben Elliston <bje@redhat.com>
* elf32-sh64.c (sh64_elf_final_write_processing): Activate
Hans-Peter Nilsson's set bit 0 patch from 2001-01-06.
* elf64-sh64.c (sh64_elf64_final_write_processing): Ditto.
2001-01-06 Hans-Peter Nilsson <hpn@cygnus.com>
* elf64-sh64.c (sh_elf64_howto_table): No open brace at start of
line. Add comments before all entries.
<R_SH_PT_16, R_SH_SHMEDIA_CODE>: Correct and clarify describing
comment.
(sh_elf64_reloc): Correct head comment.
(sh_elf64_relocate_section): Correct spacing.
<relocating for a local symbol>: Do not honour STO_SH5_ISA32;
instead call reloc_dangerous callback.
<case R_SH_SHMEDIA_CODE>: New case.
(sh_elf64_gc_mark_hook): Correct spacing.
(sh_elf64_check_relocs): Ditto.
* elf32-sh64.c (shmedia_prepare_reloc) <case R_SH_SHMEDIA_CODE>:
New case.
* elf32-sh.c: Correct #endif comments for #ifndef-wrapped
functions.
(sh_elf_howto_table) <R_SH_PT_16, R_SH_SHMEDIA_CODE>: Correct,
clarify describing comment. Add comments before all entries.
(sh_elf_relocate_section) <relocating for a local symbol>: Do not
honour STO_SH5_ISA32; instead call reloc_dangerous callback.
2001-01-06 Hans-Peter Nilsson <hpn@cygnus.com>
Sort .cranges section in final link. Prepare to set bit 0 on
entry address.
* elf32-sh64.c (struct sh64_find_section_vma_data): New.
(sh64_elf_link_output_symbol_hook): Fix typo in prototype.
(sh64_elf_set_mach_from_flags): Set SEC_DEBUGGING on incoming
.cranges section.
(sh64_backend_section_from_shdr): New, to recognize
SHT_SH5_CR_SORTED on incoming .cranges section.
(elf_backend_section_from_shdr): Define.
(sh64_elf_final_write_processing): Sort outgoing .cranges
section. (New, temporarily disabled:) Set bit 0 on entry address
according to ISA type.
(sh64_find_section_for_address): New.
(crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb,
crange_bsearch_cmpl): Move here from opcodes/sh64-dis.c.
(sh64_address_in_cranges): Move here from opcodes/sh64-dis.c. Use
bfd_malloc, not xmalloc.
(sh64_get_contents_type): Move here from opcodes/sh64-dis.c. Make
global.
* elf32-sh64.c (sh64_elf64_final_write_processing): New, (but
temporarily disabled) setting bit 0 on entry address.
(elf_backend_final_write_processing): Define.
2001-01-05 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh.c (sh_elf_howto_table) <R_SH_PT_16>: Adjust fields to
be a proper relocation for PTA and PTB rather than a marker.
<R_SH_IMMU5, R_SH_IMMS6, R_SH_IMMU6, R_SH_IMMS10, R_SH_IMMS10BY2,
R_SH_IMMS10BY4, R_SH_IMMS10BY8, R_SH_IMMS16, R_SH_IMMU16,
R_SH_IMM_LOW16, R_SH_IMM_LOW16_PCREL, R_SH_IMM_MEDLOW16,
R_SH_IMM_MEDLOW16_PCREL, R_SH_IMM_MEDHI16, R_SH_IMM_MEDHI16_PCREL,
R_SH_IMM_HI16, R_SH_IMM_HI16_PCREL, R_SH_64, R_SH_64_PCREL>:
Zero src_mask.
* elf64-sh64.c: Ditto.
(sh_elf64_relocate_section) <case R_SH_PT_16>: New case.
* elf32-sh64.c: Include opcodes/sh64-opc.h
(shmedia_prepare_reloc): Take a bfd_link_info pointer as first
argument. Drop const qualifiers from "bfd *" and "bfd_byte *"
parameters. No unused parameters. Caller changed.
<case R_SH_PT_16>: New case.
* Makefile.am (elf32-sh64.lo): Add dependency on sh64-opc.h.
* Makefile.in: Regenerate.
2000-12-30 Hans-Peter Nilsson <hpn@cygnus.com>
* elf64-sh64.c (sh64_elf64_fake_sections): Set SHF_SH5_ISA32 for
all code sections.
(sh_elf64_set_mach_from_flags): Change from EF_SH64 to EF_SH5.
(sh64_elf_merge_private_data): Ditto.
* elf32-sh64.c (sh64_elf_fake_sections): Use sh64_elf_section_data
to access stored section flags.
(sh64_elf_final_write_processing): Return immediately unless
called by linker. Use sh64_elf_section_data (cranges) to get size
of linker-generated cranges entries.
(sh64_elf_copy_private_data): Add missing "return true".
(sh64_elf_set_mach_from_flags): Change from EF_SH64 to EF_SH5.
(sh_elf64_merge_private_data): Ditto.
2000-12-19 Hans-Peter Nilsson <hpn@cygnus.com>
* elf64-sh64.c (sh64_elf64_fake_sections): New, copy of
elf64-sh64.c:sh64_elf_fake_sections.
(elf_backend_fake_sections): Define as sh64_elf64_fake_sections.
2000-12-18 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c (sh64_elf_copy_private_data_internal): Delete.
(sh64_elf_final_write_processing): New.
(elf_backend_final_write_processing): Define.
(sh64_elf_fake_sections): Get header flags from tdata field.
(sh64_elf_copy_private_data): Do not call
sh64_elf_copy_private_data_internal, just copy e_flags field.
(sh64_elf_merge_private_data): Do not call
sh64_elf_copy_private_data_internal.
2000-12-12 Hans-Peter Nilsson <hpn@cygnus.com>
Remove EF_SH64_ABI64, let ELF size make difference.
Remove SH64-specific BFD section flag.
* elf32-sh64.c (sh64_elf_fake_sections): Recognize section as
containing SHmedia through elf_section_data (asect)->tdata
non-zero, not using a BFD section flag.
(sh64_elf_set_mach_from_flags): Don't recognize EF_SH64_ABI64.
(sh64_elf_merge_private_data): Similar.
(elf_backend_section_flags): Don't define.
(sh64_elf_backend_section_flags): Delete.
* elf64-sh64.c (sh_elf64_set_mach_from_flags): Recognize EF_SH64,
not EF_SH64_ABI64.
(sh_elf64_merge_private_data): Similar.
* section.c (Section flags definitions): Don't define
SEC_SH_ISA_SHMEDIA.
(bfd-in2.h): Regenerate.
2000-12-09 Hans-Peter Nilsson <hpn@cygnus.com>
Make DataLabel references work with partial linking.
* elf32-sh64.c: Fix formatting.
(sh64_elf_link_output_symbol_hook): New.
(elf_backend_link_output_symbol_hook): Define to
sh64_elf_link_output_symbol_hook.
(sh64_elf_add_symbol_hook): Make DataLabel symbol just global
undefined if partial linking. Adjust sanity check.
* elf64-sh64.c (sh64_elf64_link_output_symbol_hook): New.
(elf_backend_link_output_symbol_hook): Define to
sh64_elf64_link_output_symbol_hook.
(sh64_elf64_add_symbol_hook): Make DataLabel symbol just global
undefined if partial linking. Adjust sanity check.
2000-12-07 Hans-Peter Nilsson <hpn@cygnus.com>
Implement semantics for inter-file DataLabel references.
* elf64-sh64.c (DATALABEL_SUFFIX): Define.
(sh64_elf64_add_symbol_hook): New.
(sh_elf64_relocate_section): If passing an indirect symbol with
st_type STT_DATALABEL on the way to a symbol with st_other
STO_SH5_ISA32, do not bitor 1 to the relocation.
(elf_backend_add_symbol_hook): Define to
sh64_elf64_add_symbol_hook.
* elf64-sh32.c: Tweak comments.
(DATALABEL_SUFFIX): Define.
(sh64_elf_add_symbol_hook): New.
(elf_backend_add_symbol_hook): Define to sh64_elf_add_symbol_hook.
* elf32-sh.c (sh_elf_relocate_section): If passing an indirect
symbol with st_type STT_DATALABEL on the way to a symbol with
st_other STO_SH5_ISA32, do not bitor 1 to the relocation.
2000-12-05 Hans-Peter Nilsson <hpn@cygnus.com>
Pass through STT_DATALABEL.
* elf32-sh64.c (sh64_elf_get_symbol_type): New.
(elf_backend_get_symbol_type): Define.
* elf64-sh64.c (sh64_elf64_get_symbol_type): New.
(elf_backend_get_symbol_type): Define.
2000-11-30 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c: Tweak comments.
(sh64_elf_copy_private_data_internal): Add prototype.
(bfd_elf32_bfd_set_private_flags): Define.
(sh64_elf_copy_private_data_internal): Compare machine name, not
textual BFD target name, to check whether to copy section flag
SHF_SH5_ISA32.
(sh64_elf_merge_private_data): Validize bfd_get_arch_size.
Tweak section-contents-type-mismatch message.
(shmedia_prepare_reloc): Add ATTRIBUTE_UNUSED markers.
Validize reloc-types.
* elf64-sh64.c: New file.
* targets.c (bfd_elf64_sh64_vec, bfd_elf64_sh64l_vec): Declare.
* Makefile.am (BFD64_BACKENDS): Add elf64-sh64.lo.
(BFD64_BACKENDS_CFILES): Add elf64-sh64.c.
Regenerate dependencies.
* Makefile.in: Regenerate.
* config.bfd (sh64-*-elf*): Add bfd_elf64_sh64_vec and
bfd_elf64_sh64l_vec.
* configure.in: Handle bfd_elf64_sh64_vec and
bfd_elf64_sh64l_vec.
* configure: Regenerate.
* po/POTFILES.in: Regenerate.
* po/bfd.pot: Regenerate.
2000-11-29 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh64.c (sh64_elf_set_mach_from_flags): Do not recognize
anything else but EF_SH64 and EF_SH64_ABI64.
(sh64_elf_merge_private_data): Emit error for anything else but
EF_SH64 and EF_SH64_ABI64.
* config.bfd: Remove bfd_elf32_shblin_vec and bfd_elf32_shlin_vec
from targ_selvecs.
* configure.in: Add cofflink.lo to bfd_elf32_sh64_vec and
bfd_elf32_sh64l_vec as a temporary measure.
* configure: Regenerate.
2000-11-27 Hans-Peter Nilsson <hpn@cygnus.com>
* cpu-sh.c (arch_info_struct): Include sh5 item
unconditionalized.
* config.bfd (sh64-*-elf*): Do not set targ_cflags.
Add targ_selvecs bfd_elf32_sh_vec, bfd_elf32_shl_vec,
bfd_elf32_shblin_vec and bfd_elf32_shlin_vec.
* elf32-sh64.c: Tweak comments.
(sh64_elf_set_mach_from_flags): Recognize all machine flags that
are proper subsets of SH64 as bfd_mach_sh5. Add EF_SH64_ABI64.
(sh64_elf_copy_private_data_internal): Wrap long line.
(sh64_elf_merge_private_data): Rewrite to allow objects from
SH64 subsets to be linked together.
(INCLUDE_SHMEDIA): Define.
* elf32-sh.c (sh_elf_relocate_section) <local symbol>:
Parenthesize plus-expression inside or-expression.
<global symbol>: Ditto.
(sh_elf_set_mach_from_flags): Remove code refusing
deleted EF_SH64_32BIT_ABI flag.
2000-11-26 Hans-Peter Nilsson <hpn@cygnus.com>
* elf32-sh.c (sh_elf_howto_table) <R_SH_IMM_LOW16_PCREL,
R_SH_IMM_MEDLOW16_PCREL, R_SH_IMM_MEDHI16_PCREL,
R_SH_IMM_HI16_PCREL, R_SH_64_PCREL>: Set pcrel_offset to true.
(sh_elf_relocate_section) <local symbol>: Or 1 in
calculation of relocation if sym->st_other & STO_SH5_ISA32.
<global symbol>: Ditto if h->other & STO_SH5_ISA32.
* elf32-sh64.c (shmedia_prepare_reloc): Add rel->r_addend to
relocation.
2000-11-24 Hans-Peter Nilsson <hpn@cygnus.com>
* Makefile.am (BFD32_BACKENDS): Add elf32-sh64.lo.
(BFD32_BACKENDS_CFILES): Add elf32-sh64.c.
Regenerate dependencies.
* Makefile.in: Regenerate.
* archures.c: Add bfd_mach_sh5.
* config.bfd: Map targ_cpu sh* to bfd_sh_arch.
Handle sh64-*-elf*. Set targ_cflags to -DINCLUDE_SHMEDIA.
* configure.in: Handle bfd_elf32_sh64_vec and bfd_elf32_sh64l_vec.
* configure: Regenerate.
* reloc.c (BFD_RELOC_SH_SHMEDIA_CODE, BFD_RELOC_SH_IMMU5,
BFD_RELOC_SH_IMMS6, BFD_RELOC_SH_IMMS6BY32, BFD_RELOC_SH_IMMU6,
BFD_RELOC_SH_IMMS10, BFD_RELOC_SH_IMMS10BY2,
BFD_RELOC_SH_IMMS10BY4, BFD_RELOC_SH_IMMS10BY8,
BFD_RELOC_SH_IMMS16, BFD_RELOC_SH_IMMU16, BFD_RELOC_SH_IMM_LOW16,
BFD_RELOC_SH_IMM_LOW16_PCREL, BFD_RELOC_SH_IMM_MEDLOW16,
BFD_RELOC_SH_IMM_MEDLOW16_PCREL, BFD_RELOC_SH_IMM_MEDHI16,
BFD_RELOC_SH_IMM_MEDHI16_PCREL, BFD_RELOC_SH_IMM_HI16,
BFD_RELOC_SH_IMM_HI16_PCREL, BFD_RELOC_SH_PT_16): New relocations.
* cpu-sh.c [INCLUDE_SHMEDIA] (arch_info_struct): Define and link
in item for SH5.
* elf32-sh.c [INCLUDE_SHMEDIA] (sh_elf_howto_table): Add howto items
for SHmedia relocs.
[INCLUDE_SHMEDIA] (sh_rel): Add mappings for SHmedia relocs.
[INCLUDE_SHMEDIA] (sh_elf_relocate_section) [default]: Call
shmedia_prepare_reloc, goto final_link_relocate if it returns
non-zero, else fail as before.
(sh_elf_set_mach_from_flags): Provide function only if not defined
as macro. Do not recognize objects with EF_SH64_32BIT_ABI set.
(sh_elf_set_private_flags): Provide function only if not defined
as a macro.
(sh_elf_copy_private_data): Similar.
(sh_elf_merge_private_data): Similar.
* section.c (SEC_SH_ISA_SHMEDIA): New.
* targets.c (bfd_elf32_sh64_vec, bfd_elf32_sh64l_vec): Declare.
* elf32-sh64.c: New file.
* libbfd.h: Regenerate.
* bfd-in2.h: Regenerate.
* po/POTFILES.in: Regenerate.
* po/bfd.pot: Regenerate.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
2002-02-08 13:33:27 +08:00
|
|
|
;;
|
2002-05-16 16:19:19 +08:00
|
|
|
sh64eb-*-linux*)
|
2002-10-10 03:03:57 +08:00
|
|
|
targ_defvec=bfd_elf32_sh64blin_vec
|
|
|
|
targ_selvecs="bfd_elf32_sh64lin_vec bfd_elf64_sh64blin_vec bfd_elf64_sh64lin_vec bfd_elf32_shblin_vec bfd_elf32_shlin_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2002-05-16 16:19:19 +08:00
|
|
|
;;
|
|
|
|
sh64-*-linux*)
|
2002-10-10 03:03:57 +08:00
|
|
|
targ_defvec=bfd_elf32_sh64lin_vec
|
|
|
|
targ_selvecs="bfd_elf32_sh64blin_vec bfd_elf64_sh64lin_vec bfd_elf64_sh64blin_vec bfd_elf32_shlin_vec bfd_elf32_shblin_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2002-05-16 16:19:19 +08:00
|
|
|
;;
|
2000-09-07 12:23:43 +08:00
|
|
|
sh-*-linux*)
|
|
|
|
targ_defvec=bfd_elf32_shblin_vec
|
2006-05-25 21:59:25 +08:00
|
|
|
targ_selvecs="bfd_elf32_shlin_vec bfd_elf32_sh64lin_vec bfd_elf32_sh64blin_vec bfd_elf64_sh64lin_vec bfd_elf64_sh64blin_vec"
|
|
|
|
want64=true
|
2000-09-07 12:23:43 +08:00
|
|
|
;;
|
2006-05-25 21:59:25 +08:00
|
|
|
#endif /* BFD64 */
|
|
|
|
|
2001-10-31 17:50:09 +08:00
|
|
|
sh*eb-*-linux*)
|
|
|
|
targ_defvec=bfd_elf32_shblin_vec
|
2002-10-14 10:12:36 +08:00
|
|
|
targ_selvecs=bfd_elf32_shlin_vec
|
2001-10-31 17:50:09 +08:00
|
|
|
;;
|
|
|
|
sh*-*-linux*)
|
|
|
|
targ_defvec=bfd_elf32_shlin_vec
|
2002-10-14 10:12:36 +08:00
|
|
|
targ_selvecs=bfd_elf32_shblin_vec
|
2001-10-31 17:50:09 +08:00
|
|
|
;;
|
2000-09-07 12:23:43 +08:00
|
|
|
|
bfd:
* Makefile.am (BFD32_BACKENDS): Add elf32-sh64-nbsd.lo.
(BFD32_BACKENDS_CFILES): Add elf32-sh64-nbsd.c.
(BFD64_BACKENDS): Add elf64-sh64-nbsd.lo.
(BFD64_BACKENDS_CFILES): Add elf64-sh64-nbsd.c.
(elf32-sh64-nbsd.lo, elf64-sh64-nbsd.lo): New rules.
* Makefile.in: Regenerate.
* config.bfd (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*)
(sh64-*-netbsd*): New targets.
* configure.in: Add bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec,
bfd_elf64_sh64nbsd_vec, and bfd_elf64_sh64lnbsd_vec.
* configure: Regenerate.
* elf32-sh64-nbsd.c: New file.
* elf64-sh64-nbsd.c: New file.
* targets.c: Add extern decls for bfd_elf32_sh64nbsd_vec,
bfd_elf32_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec, and
bfd_elf64_sh64lnbsd_vec.
gas:
* configure.in (sh5*): Set cpu_type to sh64 and endian to big.
(sh5le*, sh64le*): Set cpu_type to sh64 and endian to little.
(sh5*-*-netbsd*, sh64*-*-netbsd*): New targets.
* configure: Regenerate.
* config/tc-sh64.c (sh64_target_format): Add support for NetBSD
environment.
ld:
* Makefile.am (ALL_EMULATIONS): Add eshelf32_nbsd.o,
eshlelf32_nbsd.o, eshelf64_nbsd.o, and eshlelf64_nbsd.o.
(eshelf32_nbsd.c, eshelf64_nbsd.c, eshlelf32_nbsd.c)
(eshlelf64_nbsd.c): New rules.
* Makefile.in: Regenerate.
* configure.tgt (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*)
(sh64-*-netbsd*): New targets.
* emulparams/shelf32_nbsd.sh: New file.
* emulparams/shelf64_nbsd.sh: New file.
* emulparams/shlelf32_nbsd.sh: New file.
* emulparams/shlelf64_nbsd.sh: New file.
opcodes:
* configure.in: Add "sh5*-*" to list of targets which include
sh64 support.
* configure: Regenerate.
2002-06-04 10:57:44 +08:00
|
|
|
#ifdef BFD64
|
|
|
|
sh5le-*-netbsd*)
|
|
|
|
targ_defvec=bfd_elf32_sh64lnbsd_vec
|
2005-08-18 19:06:58 +08:00
|
|
|
targ_selvecs="bfd_elf32_sh64nbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec bfd_elf32_shnbsd_vec bfd_elf32_shlnbsd_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
bfd:
* Makefile.am (BFD32_BACKENDS): Add elf32-sh64-nbsd.lo.
(BFD32_BACKENDS_CFILES): Add elf32-sh64-nbsd.c.
(BFD64_BACKENDS): Add elf64-sh64-nbsd.lo.
(BFD64_BACKENDS_CFILES): Add elf64-sh64-nbsd.c.
(elf32-sh64-nbsd.lo, elf64-sh64-nbsd.lo): New rules.
* Makefile.in: Regenerate.
* config.bfd (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*)
(sh64-*-netbsd*): New targets.
* configure.in: Add bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec,
bfd_elf64_sh64nbsd_vec, and bfd_elf64_sh64lnbsd_vec.
* configure: Regenerate.
* elf32-sh64-nbsd.c: New file.
* elf64-sh64-nbsd.c: New file.
* targets.c: Add extern decls for bfd_elf32_sh64nbsd_vec,
bfd_elf32_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec, and
bfd_elf64_sh64lnbsd_vec.
gas:
* configure.in (sh5*): Set cpu_type to sh64 and endian to big.
(sh5le*, sh64le*): Set cpu_type to sh64 and endian to little.
(sh5*-*-netbsd*, sh64*-*-netbsd*): New targets.
* configure: Regenerate.
* config/tc-sh64.c (sh64_target_format): Add support for NetBSD
environment.
ld:
* Makefile.am (ALL_EMULATIONS): Add eshelf32_nbsd.o,
eshlelf32_nbsd.o, eshelf64_nbsd.o, and eshlelf64_nbsd.o.
(eshelf32_nbsd.c, eshelf64_nbsd.c, eshlelf32_nbsd.c)
(eshlelf64_nbsd.c): New rules.
* Makefile.in: Regenerate.
* configure.tgt (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*)
(sh64-*-netbsd*): New targets.
* emulparams/shelf32_nbsd.sh: New file.
* emulparams/shelf64_nbsd.sh: New file.
* emulparams/shlelf32_nbsd.sh: New file.
* emulparams/shlelf64_nbsd.sh: New file.
opcodes:
* configure.in: Add "sh5*-*" to list of targets which include
sh64 support.
* configure: Regenerate.
2002-06-04 10:57:44 +08:00
|
|
|
;;
|
|
|
|
sh5-*-netbsd*)
|
|
|
|
targ_defvec=bfd_elf32_sh64nbsd_vec
|
2005-08-18 19:06:58 +08:00
|
|
|
targ_selvecs="bfd_elf32_sh64lnbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec bfd_elf32_shnbsd_vec bfd_elf32_shlnbsd_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
bfd:
* Makefile.am (BFD32_BACKENDS): Add elf32-sh64-nbsd.lo.
(BFD32_BACKENDS_CFILES): Add elf32-sh64-nbsd.c.
(BFD64_BACKENDS): Add elf64-sh64-nbsd.lo.
(BFD64_BACKENDS_CFILES): Add elf64-sh64-nbsd.c.
(elf32-sh64-nbsd.lo, elf64-sh64-nbsd.lo): New rules.
* Makefile.in: Regenerate.
* config.bfd (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*)
(sh64-*-netbsd*): New targets.
* configure.in: Add bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec,
bfd_elf64_sh64nbsd_vec, and bfd_elf64_sh64lnbsd_vec.
* configure: Regenerate.
* elf32-sh64-nbsd.c: New file.
* elf64-sh64-nbsd.c: New file.
* targets.c: Add extern decls for bfd_elf32_sh64nbsd_vec,
bfd_elf32_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec, and
bfd_elf64_sh64lnbsd_vec.
gas:
* configure.in (sh5*): Set cpu_type to sh64 and endian to big.
(sh5le*, sh64le*): Set cpu_type to sh64 and endian to little.
(sh5*-*-netbsd*, sh64*-*-netbsd*): New targets.
* configure: Regenerate.
* config/tc-sh64.c (sh64_target_format): Add support for NetBSD
environment.
ld:
* Makefile.am (ALL_EMULATIONS): Add eshelf32_nbsd.o,
eshlelf32_nbsd.o, eshelf64_nbsd.o, and eshlelf64_nbsd.o.
(eshelf32_nbsd.c, eshelf64_nbsd.c, eshlelf32_nbsd.c)
(eshlelf64_nbsd.c): New rules.
* Makefile.in: Regenerate.
* configure.tgt (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*)
(sh64-*-netbsd*): New targets.
* emulparams/shelf32_nbsd.sh: New file.
* emulparams/shelf64_nbsd.sh: New file.
* emulparams/shlelf32_nbsd.sh: New file.
* emulparams/shlelf64_nbsd.sh: New file.
opcodes:
* configure.in: Add "sh5*-*" to list of targets which include
sh64 support.
* configure: Regenerate.
2002-06-04 10:57:44 +08:00
|
|
|
;;
|
|
|
|
|
|
|
|
sh64le-*-netbsd*)
|
|
|
|
targ_defvec=bfd_elf64_sh64lnbsd_vec
|
2005-08-18 19:06:58 +08:00
|
|
|
targ_selvecs="bfd_elf64_sh64nbsd_vec bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec bfd_elf32_shnbsd_vec bfd_elf32_shlnbsd_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
bfd:
* Makefile.am (BFD32_BACKENDS): Add elf32-sh64-nbsd.lo.
(BFD32_BACKENDS_CFILES): Add elf32-sh64-nbsd.c.
(BFD64_BACKENDS): Add elf64-sh64-nbsd.lo.
(BFD64_BACKENDS_CFILES): Add elf64-sh64-nbsd.c.
(elf32-sh64-nbsd.lo, elf64-sh64-nbsd.lo): New rules.
* Makefile.in: Regenerate.
* config.bfd (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*)
(sh64-*-netbsd*): New targets.
* configure.in: Add bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec,
bfd_elf64_sh64nbsd_vec, and bfd_elf64_sh64lnbsd_vec.
* configure: Regenerate.
* elf32-sh64-nbsd.c: New file.
* elf64-sh64-nbsd.c: New file.
* targets.c: Add extern decls for bfd_elf32_sh64nbsd_vec,
bfd_elf32_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec, and
bfd_elf64_sh64lnbsd_vec.
gas:
* configure.in (sh5*): Set cpu_type to sh64 and endian to big.
(sh5le*, sh64le*): Set cpu_type to sh64 and endian to little.
(sh5*-*-netbsd*, sh64*-*-netbsd*): New targets.
* configure: Regenerate.
* config/tc-sh64.c (sh64_target_format): Add support for NetBSD
environment.
ld:
* Makefile.am (ALL_EMULATIONS): Add eshelf32_nbsd.o,
eshlelf32_nbsd.o, eshelf64_nbsd.o, and eshlelf64_nbsd.o.
(eshelf32_nbsd.c, eshelf64_nbsd.c, eshlelf32_nbsd.c)
(eshlelf64_nbsd.c): New rules.
* Makefile.in: Regenerate.
* configure.tgt (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*)
(sh64-*-netbsd*): New targets.
* emulparams/shelf32_nbsd.sh: New file.
* emulparams/shelf64_nbsd.sh: New file.
* emulparams/shlelf32_nbsd.sh: New file.
* emulparams/shlelf64_nbsd.sh: New file.
opcodes:
* configure.in: Add "sh5*-*" to list of targets which include
sh64 support.
* configure: Regenerate.
2002-06-04 10:57:44 +08:00
|
|
|
;;
|
|
|
|
sh64-*-netbsd*)
|
|
|
|
targ_defvec=bfd_elf64_sh64nbsd_vec
|
2005-08-18 19:06:58 +08:00
|
|
|
targ_selvecs="bfd_elf64_sh64lnbsd_vec bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec bfd_elf32_shnbsd_vec bfd_elf32_shlnbsd_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
bfd:
* Makefile.am (BFD32_BACKENDS): Add elf32-sh64-nbsd.lo.
(BFD32_BACKENDS_CFILES): Add elf32-sh64-nbsd.c.
(BFD64_BACKENDS): Add elf64-sh64-nbsd.lo.
(BFD64_BACKENDS_CFILES): Add elf64-sh64-nbsd.c.
(elf32-sh64-nbsd.lo, elf64-sh64-nbsd.lo): New rules.
* Makefile.in: Regenerate.
* config.bfd (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*)
(sh64-*-netbsd*): New targets.
* configure.in: Add bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec,
bfd_elf64_sh64nbsd_vec, and bfd_elf64_sh64lnbsd_vec.
* configure: Regenerate.
* elf32-sh64-nbsd.c: New file.
* elf64-sh64-nbsd.c: New file.
* targets.c: Add extern decls for bfd_elf32_sh64nbsd_vec,
bfd_elf32_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec, and
bfd_elf64_sh64lnbsd_vec.
gas:
* configure.in (sh5*): Set cpu_type to sh64 and endian to big.
(sh5le*, sh64le*): Set cpu_type to sh64 and endian to little.
(sh5*-*-netbsd*, sh64*-*-netbsd*): New targets.
* configure: Regenerate.
* config/tc-sh64.c (sh64_target_format): Add support for NetBSD
environment.
ld:
* Makefile.am (ALL_EMULATIONS): Add eshelf32_nbsd.o,
eshlelf32_nbsd.o, eshelf64_nbsd.o, and eshlelf64_nbsd.o.
(eshelf32_nbsd.c, eshelf64_nbsd.c, eshlelf32_nbsd.c)
(eshlelf64_nbsd.c): New rules.
* Makefile.in: Regenerate.
* configure.tgt (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*)
(sh64-*-netbsd*): New targets.
* emulparams/shelf32_nbsd.sh: New file.
* emulparams/shelf64_nbsd.sh: New file.
* emulparams/shlelf32_nbsd.sh: New file.
* emulparams/shlelf64_nbsd.sh: New file.
opcodes:
* configure.in: Add "sh5*-*" to list of targets which include
sh64 support.
* configure: Regenerate.
2002-06-04 10:57:44 +08:00
|
|
|
;;
|
|
|
|
|
2003-05-21 21:06:30 +08:00
|
|
|
sh*l*-*-netbsdelf*)
|
2002-05-14 02:35:55 +08:00
|
|
|
targ_defvec=bfd_elf32_shlnbsd_vec
|
2006-05-25 21:59:25 +08:00
|
|
|
targ_selvecs="bfd_elf32_shnbsd_vec shcoff_vec shlcoff_vec bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec"
|
|
|
|
want64=true
|
2002-05-14 02:35:55 +08:00
|
|
|
;;
|
2002-02-11 04:37:45 +08:00
|
|
|
sh-*-netbsdelf*)
|
|
|
|
targ_defvec=bfd_elf32_shnbsd_vec
|
2006-05-25 21:59:25 +08:00
|
|
|
targ_selvecs="bfd_elf32_shlnbsd_vec shcoff_vec shlcoff_vec bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec"
|
|
|
|
want64=true
|
2002-02-11 04:37:45 +08:00
|
|
|
;;
|
2006-05-25 21:59:25 +08:00
|
|
|
#endif
|
|
|
|
|
2002-01-08 12:23:02 +08:00
|
|
|
sh*-*-netbsdelf*)
|
|
|
|
targ_defvec=bfd_elf32_shnbsd_vec
|
|
|
|
targ_selvecs="bfd_elf32_shlnbsd_vec shcoff_vec shlcoff_vec"
|
|
|
|
;;
|
2004-07-09 20:32:35 +08:00
|
|
|
sh*-*-symbianelf*)
|
2004-07-07 00:58:43 +08:00
|
|
|
targ_defvec=bfd_elf32_shl_symbian_vec
|
|
|
|
targ_selvecs="shlcoff_vec shlcoff_small_vec"
|
|
|
|
targ_underscore=yes
|
2004-10-15 13:47:11 +08:00
|
|
|
;;
|
2006-05-25 21:59:25 +08:00
|
|
|
|
|
|
|
#ifdef BFD64
|
2003-02-11 21:47:08 +08:00
|
|
|
shl*-*-elf* | sh[1234]l*-*-elf* | sh3el*-*-elf* | shl*-*-kaos*)
|
2002-06-06 03:54:28 +08:00
|
|
|
targ_defvec=bfd_elf32_shl_vec
|
2006-05-25 21:59:25 +08:00
|
|
|
targ_selvecs="bfd_elf32_sh_vec shlcoff_vec shcoff_vec shlcoff_small_vec shcoff_small_vec bfd_elf32_sh64_vec bfd_elf32_sh64l_vec bfd_elf64_sh64_vec bfd_elf64_sh64l_vec"
|
2002-06-06 03:54:28 +08:00
|
|
|
targ_underscore=yes
|
2006-05-25 21:59:25 +08:00
|
|
|
want64=true
|
2002-06-06 03:54:28 +08:00
|
|
|
;;
|
2006-05-25 21:59:25 +08:00
|
|
|
#endif
|
|
|
|
|
2004-03-17 08:46:25 +08:00
|
|
|
sh-*-rtemscoff*)
|
|
|
|
targ_defvec=shcoff_vec
|
|
|
|
targ_selvecs="shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2006-05-25 21:59:25 +08:00
|
|
|
|
|
|
|
#ifdef BFD64
|
2004-03-17 08:46:25 +08:00
|
|
|
sh-*-elf* | sh[1234]*-elf* | sh-*-rtems* | sh-*-kaos*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_sh_vec
|
2006-05-25 21:59:25 +08:00
|
|
|
targ_selvecs="bfd_elf32_shl_vec shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec bfd_elf32_sh64_vec bfd_elf32_sh64l_vec bfd_elf64_sh64_vec bfd_elf64_sh64l_vec"
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_underscore=yes
|
2006-05-25 21:59:25 +08:00
|
|
|
want64=true
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2006-05-25 21:59:25 +08:00
|
|
|
#endif
|
|
|
|
|
2002-08-23 01:27:20 +08:00
|
|
|
sh-*-nto*)
|
* Makefile.am: Remove entries for elf32-qnx.[ch].
* Makefile.in: Regenerate.
* config.bfd: Change arm-nto to use bfd_elf32_{big|little}arm_vec,
ppc-nto to use bfd_elf32_powerpc{le}_vec, sh-nto to use
bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
* configure.in: Remove support for bfd_elf32_sh{l}qnx_vec,
bfd_elf32_powerpc{le}qnx_vec, bfd_elf32_{big|little}armqnx_vec,
and bfd_elf32_i386qnx_vec, and removed elf32-qnx.lo from other targets.
bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
* configure: Regenerate.
* elf32-qnx.c: Remove.
* elf32-qnx.h: Remove.
* elf.c: Remove calls to QNX specific set_nonloadable_filepos,
is_contained_by_filepos, and copy_private_bfd_data_p.
* elf32-i386.c: Remove QNX extended bfd support.
* elf32-ppc.c: Remove QNX extended bfd support.
* elf32-sh.c: Remove QNX extended bfd support.
* elfarm-nabi.c: Remove QNX extended bfd support.
* targets.c: Remove qnx vectors.
* elfxx-target.h (elf_backend_set_nonloadable_filepos): Remove
(elf_backend_is_contained_by_filepos): Remove.
(elf_backend_copy_private_bfd_data_p): Remove.
* po/SRC-POTFILES.in: Regenerate.
2002-11-06 19:38:35 +08:00
|
|
|
targ_defvec=bfd_elf32_sh_vec
|
|
|
|
targ_selvecs="bfd_elf32_shl_vec shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
|
2002-08-23 01:27:20 +08:00
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2000-02-29 02:56:11 +08:00
|
|
|
sh-*-pe)
|
|
|
|
targ_defvec=shlpe_vec
|
|
|
|
targ_selvecs="shlpe_vec shlpei_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2003-10-30 17:05:14 +08:00
|
|
|
sh-*-vxworks)
|
bfd/
2006-08-02 Richard Sandiford <richard@codesourcery.com>
Kazu Hirata <kazu@codesourcery.com>
Phil Edwards <phil@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* config.bfd (sh-*-vxworks): Use bfd_elf32_shvxworks_vec and
bfd_elf32_shlvxworks_vec.
* configure.in (bfd_elf32_sh64_vec): Add elf-vxworks.lo.
(bfd_elf32_sh64l_vec, bfd_elf32_sh64lin_vec): Likewise.
(bfd_elf32_sh64blin_vec, bfd_elf32_sh64lnbsd_vec): Likewise.
(bfd_elf32_sh64nbsd_vec, bfd_elf32_sh_vec): Likewise.
(bfd_elf32_shblin_vec, bfd_elf32_shl_vec): Likewise.
(bfd_elf32_shl_symbian_vec, bfd_elf32_shlin_vec): Likewise.
(bfd_elf32_shlnbsd_vec, bfd_elf32_shnbsd_vec): Likewise.
(bfd_elf32_shlvxworks_vec, bfd_elf32_shvxworks_vec): New stanzas.
* configure: Regenerate.
* Makefile.am: Regenerate dependencies.
* Makefile.in: Regenerate.
* elf-vxworks.c (elf_vxworks_gott_symbol_p): New function.
(elf_vxworks_add_symbol_hook): Use it.
(elf_vxworks_link_output_symbol_hook): Likewise. Use the hash
table entry to check for weak undefined symbols and to obtain
the original bfd.
(elf_vxworks_emit_relocs): Use target_index instead of this_idx.
* elf32-sh-relocs.h: New file, split from elf32-sh.c.
(R_SH_DIR32): Use SH_PARTIAL32 for the partial_inplace field,
SH_SRC_MASK32 for the src_mask field, and SH_ELF_RELOC for the
special_function field.
(R_SH_REL32): Use SH_PARTIAL32 and SH_SRC_MASK32 here too.
(R_SH_REL32, R_SH_TLS_GD_32, R_SH_TLS_LD_32): Likewise.
(R_SH_TLS_LDO_32, R_SH_TLS_IE_32, R_SH_TLS_LE_32): Likewise.
(R_SH_TLS_DTPMOD32, R_SH_TLS_DTPOFF32, R_SH_TLS_TPOFF32): Likewise.
(R_SH_GOT32, R_SH_PLT32, R_SH_COPY, R_SH_GLOB_DAT): Likewise.
(R_SH_JMP_SLOT, R_SH_RELATIVE, R_SH_GOTOFF, R_SH_GOTPC): Likewise.
(SH_PARTIAL32, SH_SRC_MASK32, SH_ELF_RELOC): Undefine at end of file.
* elf32-sh.c: Include elf32-vxworks.h.
(MINUS_ONE): Define.
(sh_elf_howto_table): Include elf32-sh-relocs.h with SH_PARTIAL32
set to TRUE, SH_SRC_MASK32 set to 0xffffffff, and SH_ELF_RELOC set
to sh_elf_reloc.
(sh_vxworks_howto_table): New variable. Include elf32-sh-relocs.h
with SH_PARTIAL32 set to FALSE, SH_SRC_MASK32 set to 0, and
SH_ELF_RELOC set to bfd_elf_generic_reloc.
(vxworks_object_p, get_howto_table): New functions.
(sh_elf_reloc_type_lookup): Fix typo. Use get_howto_table.
(sh_elf_info_to_howto): Use get_howto_table.
(sh_elf_relax_section): Honor the partial_inplace field of the
R_SH_DIR32 howto.
(sh_elf_relax_delete_bytes): Likewise.
(elf_sh_plt_info): New structure.
(PLT_ENTRY_SIZE): Replace both definitions with...
(ELF_PLT_ENTRY_SIZE): ...this new macro, with separate definitions for
INCLUDE_SHMEDIA and !INCLUDE_SHMEDIA.
(elf_sh_plt0_entry_be): Update sizes of both definitions accordingly.
(elf_sh_plt0_entry_le): Likewise.
(elf_sh_plt_entry_be, elf_sh_plt_entry_le): Likewise.
(elf_sh_pic_plt_entry_be, elf_sh_pic_plt_entry_le): Likewise.
(elf_sh_plts): New structure, with separate definitions for
INCLUDE_SHMEDIA and !INCLUDE_SHMEDIA.
(elf_sh_plt0_entry): Delete both definitions.
(elf_sh_plt_entry, elf_sh_pic_plt_entry): Likewise.
(elf_sh_sizeof_plt, elf_sh_plt_plt0_offset): Likewise.
(elf_sh_plt_temp_offset, elf_sh_plt_symbol_offset): Likewise.
(elf_sh_plt_reloc_offset): Likewise.
(movi_shori_putval): Delete in favor of...
(install_plt_field): ...this new function, with separate definitions
for INCLUDE_SHMEDIA and !INCLUDE_SHMEDIA.
(get_plt_info): New function, with separate definitions
for INCLUDE_SHMEDIA and !INCLUDE_SHMEDIA.
(elf_sh_plt0_linker_offset, elf_sh_plt0_gotid_offset): Delete.
(VXWORKS_PLT_HEADER_SIZE, VXWORKS_PLT_ENTRY_SIZE): New macros.
(vxworks_sh_plt0_entry_be, vxworks_sh_plt0_entry_le): New constants.
(vxworks_sh_plt_entry_be, vxworks_sh_plt_entry_le): Likewise.
(vxworks_sh_pic_plt_entry_be, vxworks_sh_pic_plt_entry_le): Likewise.
(get_plt_index, get_plt_offset): New functions.
(elf_sh_link_hash_table): Add srelplt2, plt_info and vxworks_p fields.
(sh_elf_link_hash_table_create): Initialize them.
(sh_elf_create_dynamic_sections): Call
elf_vxworks_create_dynamic_sections for VxWorks.
(allocate_dynrelocs): Use htab->plt_info to get the size of PLT
entries. Allocate relocation entries in .rela.plt.unloaded if
generating a VxWorks executable.
(sh_elf_always_size_sections): New function.
(sh_elf_size_dynamic_sections): Extend .rela.plt handling to
.rela.plt.unloaded.
(sh_elf_relocate_section): Use get_howto_table. Honor
partial_inplace when calculating the addend for dynamic
relocations. Use get_plt_index.
(sh_elf_finish_dynamic_symbol): Use get_plt_index, install_plt_field
and htab->plt_info. Fill in the bra .plt offset for VxWorks
executables. Populate .rela.plt.unloaded. Do not make
_GLOBAL_OFFSET_TABLE_ absolute on VxWorks.
(sh_elf_finish_dynamic_sections): Use install_plt_field and
htab->plt_info. Handle cases where there is no special PLT header.
Populate the first relocation in .rela.plt.unloaded and fix up
the remaining entries.
(sh_elf_plt_sym_val): Use get_plt_info.
(elf_backend_always_size_sections): Define.
(TARGET_BIG_SYM, TARGET_BIG_NAME): Override for VxWorks.
(TARGET_LITTLE_SYM, TARGET_BIG_SYM): Likewise.
(elf32_bed, elf_backend_want_plt_sym): Likewise.
(elf_symbol_leading_char, elf_backend_want_got_underscore): Likewise.
(elf_backend_grok_prstatus, elf_backend_grok_psinfo): Likewise.
(elf_backend_add_symbol_hook): Likewise.
(elf_backend_link_output_symbol_hook): Likewise.
(elf_backend_emit_relocs): Likewise.
(elf_backend_final_write_processing): Likewise.
(ELF_MAXPAGESIZE, ELF_COMMONPAGESIZE): Likewise.
* targets.c (bfd_elf32_shlvxworks_vec): Declare.
(bfd_elf32_shvxworks_vec): Likewise.
(_bfd_target_vector): Include bfd_elf32_shlvxworks_vec and
bfd_elf32_shvxworks_vec.
gas/
* config/tc-sh.c (apply_full_field_fix): New function.
(md_apply_fix): Use it instead of md_number_to_chars. Do not fill
in fx_addnumber for BFD_RELOC_32_PLT_PCREL.
(tc_gen_reloc): Use fx_addnumber rather than 0 as the default case.
* config/tc-sh.h (TARGET_FORMAT): Override for TE_VXWORKS.
ld/
2006-08-02 Richard Sandiford <richard@codesourcery.com>
Kazu Hirata <kazu@codesourcery.com>
Phil Edwards <phil@codesourcery.com>
* Makefile.am (ALL_EMULATIONS): Add eshelf_vxworks.o and
eshlelf_vxworks.o.
(eshelf_vxworks.c, eshlelf_vxworks.c): New rules.
* Makefile.in: Regenerate.
* configure.tgt (sh-*-vxworks): Use shelf_vxworks and
shlelf_vxworks.
* emulparams/shelf_vxworks.sh: New file.
* emulparams/shlelf_vxworks.sh: Likewise.
* emulparams/vxworks.sh (FINI): Prefix _etext with ${SYMPREFIX}.
(OTHER_END_SYMBOLS): Likewise _ehdr.
(DATA_END_SYMBOLS): Likewise _edata.
* emultempl/vxworks.em (vxworks_after_open): Check whether output_bfd
is indeed an ELF file before dealing with --force-dynamic.
ld/testsuite/
* ld-sh/rd-sh.exp: Treat vxworks1-static.d specially.
* ld-sh/sh-vxworks.exp: New file.
* ld-sh/sh.exp: Extend sh-linux SIZEOF_HEADERS handling to
sh-*-vxworks.
* ld-sh/vxworks1-le.dd, ld-sh/vxworks1-lib-le.dd,
* ld-sh/vxworks1-lib.dd, ld-sh/vxworks1-lib.nd,
* ld-sh/vxworks1-lib.rd, ld-sh/vxworks1-lib.s,
* ld-sh/vxworks1-static.d, ld-sh/vxworks1.dd,
* ld-sh/vxworks1.ld, ld-sh/vxworks1.rd, ld-sh/vxworks1.s,
* ld-sh/vxworks2-static.sd, ld-sh/vxworks2.s,
* ld-sh/vxworks2.sd, ld-sh/vxworks3-le.dd,
* ld-sh/vxworks3-lib-le.dd, ld-sh/vxworks3-lib.dd,
* ld-sh/vxworks3-lib.s, ld-sh/vxworks3.dd, ld-sh/vxworks3.s,
* ld-sh/vxworks4.d, ld-sh/vxworks4a.s, ld-sh/vxworks4b.s,
* ld-sh/reloc1.s, ld-sh/reloc1.d: New tests.
2006-08-04 21:13:56 +08:00
|
|
|
targ_defvec=bfd_elf32_shvxworks_vec
|
|
|
|
targ_selvecs="bfd_elf32_shlvxworks_vec"
|
2003-10-30 17:05:14 +08:00
|
|
|
# FIXME None of the following are actually used on this target, but
|
|
|
|
# they're necessary for coff-sh.c (which is unconditionally used) to be
|
|
|
|
# compiled correctly.
|
|
|
|
targ_selvecs="$targ_selvecs shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
|
|
|
|
;;
|
2004-03-17 08:46:25 +08:00
|
|
|
sh-*-*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=shcoff_vec
|
|
|
|
targ_selvecs="shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
|
|
|
sparclet-*-aout*)
|
|
|
|
targ_defvec=sunos_big_vec
|
|
|
|
targ_selvecs=sparcle_aout_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
sparc86x-*-aout*)
|
|
|
|
targ_defvec=sunos_big_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
sparclite-*-elf* | sparc86x-*-elf*)
|
|
|
|
targ_defvec=bfd_elf32_sparc_vec
|
|
|
|
;;
|
2000-11-07 02:47:14 +08:00
|
|
|
sparc*-*-chorus*)
|
|
|
|
targ_defvec=bfd_elf32_sparc_vec
|
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
sparc-*-linux*aout*)
|
|
|
|
targ_defvec=sparclinux_vec
|
|
|
|
targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2005-03-23 23:35:50 +08:00
|
|
|
sparc-*-linux-*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_sparc_vec
|
2000-02-26 03:39:00 +08:00
|
|
|
targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec"
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
1999-12-14 13:13:29 +08:00
|
|
|
sparc-*-netbsdelf*)
|
|
|
|
targ_defvec=bfd_elf32_sparc_vec
|
|
|
|
targ_selvecs=sparcnetbsd_vec
|
|
|
|
;;
|
|
|
|
sparc-*-netbsdaout* | sparc-*-netbsd*)
|
|
|
|
targ_defvec=sparcnetbsd_vec
|
|
|
|
targ_selvecs=bfd_elf32_sparc_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2003-06-11 21:34:50 +08:00
|
|
|
sparc-*-openbsd[0-2].* | sparc-*-openbsd3.[0-1])
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=sparcnetbsd_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
2003-06-11 21:34:50 +08:00
|
|
|
sparc-*-openbsd*)
|
|
|
|
targ_defvec=bfd_elf32_sparc_vec
|
|
|
|
targ_selvecs=sparcnetbsd_vec
|
|
|
|
;;
|
2000-02-26 03:18:17 +08:00
|
|
|
sparc-*-elf* | sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf32_sparc_vec
|
|
|
|
targ_selvecs=sunos_big_vec
|
|
|
|
;;
|
2000-02-26 03:18:17 +08:00
|
|
|
#ifdef BFD64
|
|
|
|
sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
|
|
|
|
targ_defvec=bfd_elf32_sparc_vec
|
|
|
|
targ_selvecs="bfd_elf64_sparc_vec sunos_big_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2000-02-26 03:18:17 +08:00
|
|
|
;;
|
|
|
|
#endif
|
1999-05-03 15:29:11 +08:00
|
|
|
sparc-*-sysv4*)
|
|
|
|
targ_defvec=bfd_elf32_sparc_vec
|
|
|
|
;;
|
bfd/
* config.bfd (sparc-*-vxworks*): New stanza.
* configure.in (bfd_elf32_sparc_vxworks_vec): New stanza.
(bfd_elf32_sparc_vec, bfd_elf64_sparc_vec): Add elf-vxworks.lo.
* configure: Regenerate.
* elf32-sparc.c: Include elf-vxworks.h.
(elf32_sparc_vxworks_link_hash_table_create: New.
(elf32_sparc_vxworks_final_write_processing): New.
(TARGET_BIG_SYM): Override for VxWorks.
(TARGET_BIG_NAME, ELF_MINPAGESIZE): Likewise.
(bfd_elf32_bfd_link_hash_table_create): Likewise.
(elf_backend_want_got_plt, elf_backend_plt_readonly): Likewise.
(elf_backend_got_header_size, elf_backend_add_symbol_hook): Likewise.
(elf_backend_link_output_symbol_hook): Likewise.
(elf_backend_emit_relocs): Likewise.
(elf_backend_final_write_processing, elf32_bed): Likewise.
* elfxx-sparc.c: Include libiberty.h and elf-vxworks.h.
(sparc_vxworks_exec_plt0_entry, sparc_vxworks_exec_plt_entry): New.
(sparc_vxworks_shared_plt0_entry, sparc_vxworks_shared_plt_entry): New.
(_bfd_sparc_elf_link_hash_table_create): Don't initialize
build_plt_entry here.
(create_got_section): Initialize sgotplt for VxWorks.
(_bfd_sparc_elf_create_dynamic_sections): Initialize build_plt_entry,
plt_header_size and plt_entry_size, with new VxWorks-specific settings.
Call elf_vxworks_create_dynamic_sections for VxWorks.
(allocate_dynrelocs): Use plt_header_size and plt_entry_size.
Allocate room for .got.plt and .rela.plt.unloaded entries on VxWorks.
(_bfd_sparc_elf_size_dynamic_sections): Don't allocate a nop in .plt
for VxWorks. Check for the .got.plt section.
(sparc_vxworks_build_plt_entry): New function.
(_bfd_sparc_elf_finish_dynamic_symbol): Add handling of VxWorks PLTs.
Don't make _GLOBAL_OFFSET_TABLE_ and _PROCEDURE_LINKAGE_TABLE_
absolute on VxWorks.
(sparc32_finish_dyn): Add special handling for DT_RELASZ
and DT_PLTGOT on VxWorks.
(sparc_vxworks_finish_exec_plt): New.
(sparc_vxworks_finish_shared_plt): New.
(_bfd_sparc_elf_finish_dynamic_sections): Call them.
Use plt_header_size and plt_entry_size.
* elfxx-sparc.h (_bfd_sparc_elf_link_hash_table): Add is_vxworks,
srelplt2, sgotplt, plt_header_size and plt_entry_size fields.
* Makefile.am (elfxx-sparc.lo): Depend on elf-vxworks.h.
(elf32-sparc.lo): Likewise.
* Makefile.in: Regenerate.
* targets.c (bfd_elf32_sparc_vxworks_vec): Declare.
(_bfd_target_vector): Add a pointer to it.
gas/
* config/tc-sparc.c (sparc_target_format): Handle TE_VXWORKS.
(GOTT_BASE, GOTT_INDEX): New.
(tc_gen_reloc): Don't alter relocations against GOTT_BASE and
GOTT_INDEX when generating VxWorks PIC.
* configure.tgt (sparc*-*-vxworks*): Remove this special case;
use the generic *-*-vxworks* stanza instead.
gas/testsuite/
* gas/sparc/vxworks-pic.s, gas/sparc/vxworks-pic.d: New test.
* gas/sparc/sparc.exp: Run it. Remove sparc*-*-vxworks* XFAILs.
ld/
* configure.tgt (sparc*-*-vxworks*): New stanza.
* emulparams/elf32_sparc_vxworks.sh: New file.
* Makefile.am (ALL_EMULATIONS): Add eelf32_sparc_vxworks.o.
(eelf32_sparc_vxworks.c): New rule.
* Makefile.in: Regenerate.
ld/testsuite/
* ld-sparc/vxworks1.dd, ld-sparc/vxworks1.ld, ld-sparc/vxworks1-lib.dd,
* ld-sparc/vxworks1-lib.nd, ld-sparc/vxworks1-lib.rd,
* ld-sparc/vxworks1-lib.s, ld-sparc/vxworks1.rd, ld-sparc/vxworks1.s,
* ld-sparc/vxworks1-static.d, ld-sparc/vxworks2.s,
* ld-sparc/vxworks2.sd, ld-sparc/vxworks2-static.sd: New tests.
* ld-sparc/sparc.exp: Run them.
2006-04-05 20:41:59 +08:00
|
|
|
sparc-*-vxworks*)
|
|
|
|
targ_defvec=bfd_elf32_sparc_vxworks_vec
|
|
|
|
targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
|
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
sparc-*-netware*)
|
|
|
|
targ_defvec=bfd_elf32_sparc_vec
|
|
|
|
targ_selvecs="nlm32_sparc_vec sunos_big_vec"
|
|
|
|
;;
|
|
|
|
#ifdef BFD64
|
|
|
|
sparc64-*-aout*)
|
|
|
|
targ_defvec=sunos_big_vec
|
|
|
|
targ_underscore=yes
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
2005-03-23 23:35:50 +08:00
|
|
|
sparc64-*-linux-*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=bfd_elf64_sparc_vec
|
|
|
|
targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec"
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
1999-05-03 15:29:11 +08:00
|
|
|
;;
|
|
|
|
sparc64-*-elf*)
|
|
|
|
targ_defvec=bfd_elf64_sparc_vec
|
|
|
|
targ_selvecs=bfd_elf32_sparc_vec
|
2006-05-25 09:03:09 +08:00
|
|
|
want64=true
|
2000-06-19 09:22:44 +08:00
|
|
|
;;
|
1999-05-03 15:29:11 +08:00
|
|
|
#endif /* BFD64 */
|
|
|
|
sparc*-*-coff*)
|
|
|
|
targ_defvec=sparccoff_vec
|
|
|
|
;;
|
2005-07-22 18:34:30 +08:00
|
|
|
sparc*-*-rtems*)
|
2000-12-02 02:37:16 +08:00
|
|
|
targ_defvec=bfd_elf32_sparc_vec
|
|
|
|
targ_selvecs="sunos_big_vec sparccoff_vec"
|
|
|
|
;;
|
2005-07-22 18:34:30 +08:00
|
|
|
sparc*-*-*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_defvec=sunos_big_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
|
|
|
#if HAVE_host_aout_vec
|
|
|
|
tahoe-*-*)
|
|
|
|
targ_defvec=host_aout_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
tic80*-*-*)
|
|
|
|
targ_defvec=tic80coff_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
|
|
|
v850-*-*)
|
|
|
|
targ_defvec=bfd_elf32_v850_vec
|
|
|
|
;;
|
|
|
|
v850e-*-*)
|
|
|
|
targ_defvec=bfd_elf32_v850_vec
|
|
|
|
;;
|
|
|
|
v850ea-*-*)
|
|
|
|
targ_defvec=bfd_elf32_v850_vec
|
|
|
|
;;
|
|
|
|
|
2002-05-30 10:14:13 +08:00
|
|
|
vax-*-netbsdelf*)
|
|
|
|
targ_defvec=bfd_elf32_vax_vec
|
2002-06-09 07:23:08 +08:00
|
|
|
targ_selvecs="vaxnetbsd_vec vax1knetbsd_vec"
|
2002-05-30 10:14:13 +08:00
|
|
|
;;
|
|
|
|
|
|
|
|
vax-*-netbsdaout* | vax-*-netbsd*)
|
|
|
|
targ_defvec=vaxnetbsd_vec
|
2002-06-09 07:23:08 +08:00
|
|
|
targ_selvecs="bfd_elf32_vax_vec vax1knetbsd_vec"
|
2002-05-30 10:14:13 +08:00
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
2002-07-01 16:31:53 +08:00
|
|
|
vax-*-bsd* | vax-*-ultrix*)
|
|
|
|
targ_defvec=vaxbsd_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
2003-06-12 15:21:50 +08:00
|
|
|
vax-*-openbsd*)
|
|
|
|
targ_defvec=vaxnetbsd_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
2005-03-23 23:35:50 +08:00
|
|
|
vax-*-linux-*)
|
2003-12-03 23:07:17 +08:00
|
|
|
targ_defvec=bfd_elf32_vax_vec
|
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
vax*-*-*vms*)
|
|
|
|
targ_defvec=vms_vax_vec
|
|
|
|
;;
|
|
|
|
|
|
|
|
we32k-*-*)
|
|
|
|
targ_defvec=we32kcoff_vec
|
|
|
|
;;
|
|
|
|
|
|
|
|
w65-*-*)
|
|
|
|
targ_defvec=w65_vec
|
|
|
|
;;
|
|
|
|
|
2001-12-08 11:46:03 +08:00
|
|
|
xstormy16-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_xstormy16_vec
|
|
|
|
;;
|
|
|
|
|
2003-04-01 23:50:31 +08:00
|
|
|
xtensa-*-*)
|
|
|
|
targ_defvec=bfd_elf32_xtensa_le_vec
|
|
|
|
targ_selvecs=bfd_elf32_xtensa_be_vec
|
|
|
|
;;
|
2006-02-17 22:36:28 +08:00
|
|
|
xc16x-*-elf)
|
|
|
|
targ_defvec=bfd_elf32_xc16x_vec
|
|
|
|
;;
|
|
|
|
|
2005-10-26 01:40:19 +08:00
|
|
|
z80-*-*)
|
|
|
|
targ_defvec=z80coff_vec
|
|
|
|
targ_underscore=no
|
|
|
|
;;
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
z8k*-*-*)
|
|
|
|
targ_defvec=z8kcoff_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
|
|
|
*-*-ieee*)
|
|
|
|
targ_defvec=ieee_vec
|
|
|
|
;;
|
|
|
|
|
|
|
|
*-adobe-*)
|
|
|
|
targ_defvec=a_out_adobe_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
|
|
|
*-sony-*)
|
|
|
|
targ_defvec=newsos3_vec
|
|
|
|
targ_underscore=yes
|
|
|
|
;;
|
|
|
|
|
|
|
|
*-tandem-*)
|
|
|
|
targ_defvec=m68kcoff_vec
|
|
|
|
targ_selvecs=ieee_vec
|
|
|
|
;;
|
|
|
|
# END OF targmatch.h
|
|
|
|
*)
|
|
|
|
echo 1>&2 "*** BFD does not support target ${targ}."
|
|
|
|
echo 1>&2 "*** Look in bfd/config.bfd for supported targets."
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2001-08-17 12:17:18 +08:00
|
|
|
case "${host64}${want64}" in
|
|
|
|
*true*)
|
|
|
|
targ_selvecs="${targ_selvecs} ${targ64_selvecs}"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
# If we support any ELF target, then automatically add support for the
|
|
|
|
# generic ELF targets. This permits an objdump with some ELF support
|
|
|
|
# to be used on an arbitrary ELF file for anything other than
|
|
|
|
# relocation information.
|
|
|
|
case "${targ_defvec} ${targ_selvecs}" in
|
2002-07-31 08:32:10 +08:00
|
|
|
*bfd_elf64* | *bfd_elf32_n*mips*)
|
1999-05-03 15:29:11 +08:00
|
|
|
targ_selvecs="${targ_selvecs} bfd_elf64_little_generic_vec bfd_elf64_big_generic_vec bfd_elf32_little_generic_vec bfd_elf32_big_generic_vec"
|
|
|
|
;;
|
|
|
|
*bfd_elf32*)
|
|
|
|
targ_selvecs="${targ_selvecs} bfd_elf32_little_generic_vec bfd_elf32_big_generic_vec"
|
|
|
|
;;
|
|
|
|
esac
|