aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-sh64.c
diff options
context:
space:
mode:
authorJason Thorpe <thorpej@netbsd.org>2002-06-04 02:57:44 +0000
committerJason Thorpe <thorpej@netbsd.org>2002-06-04 02:57:44 +0000
commit5b0e55b627d80fe3220036737d639cbba71a3e1e (patch)
tree03cc0e77bfbabcf054498cd8f7077d57997f4d11 /gas/config/tc-sh64.c
parenta074e149a5779e77e3dfe44c07ed215dca1fefae (diff)
downloadgdb-5b0e55b627d80fe3220036737d639cbba71a3e1e.zip
gdb-5b0e55b627d80fe3220036737d639cbba71a3e1e.tar.gz
gdb-5b0e55b627d80fe3220036737d639cbba71a3e1e.tar.bz2
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.
Diffstat (limited to 'gas/config/tc-sh64.c')
-rw-r--r--gas/config/tc-sh64.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/gas/config/tc-sh64.c b/gas/config/tc-sh64.c
index 423913c..6ac77b8 100644
--- a/gas/config/tc-sh64.c
+++ b/gas/config/tc-sh64.c
@@ -2948,6 +2948,24 @@ sh64_target_format ()
return "FIXME: No linux target yet";
#endif
+#ifdef TE_NetBSD
+ /* For NetBSD, if the ISA is unspecified, always use SHmedia. */
+ if (sh64_isa_mode == sh64_isa_unspecified)
+ sh64_isa_mode = sh64_isa_shmedia;
+
+ /* If the ABI is unspecified, select a default: based on how
+ we were configured: sh64 == sh64_abi_64, else sh64_abi_32. */
+ if (sh64_abi == sh64_abi_unspecified)
+ {
+ if (sh64_isa_mode == sh64_isa_shcompact)
+ sh64_abi = sh64_abi_32;
+ else if (strncmp (TARGET_CPU, "sh64", 4) == 0)
+ sh64_abi = sh64_abi_64;
+ else
+ sh64_abi = sh64_abi_32;
+ }
+#endif
+
if (sh64_abi == sh64_abi_64 && sh64_isa_mode == sh64_isa_unspecified)
sh64_isa_mode = sh64_isa_shmedia;
@@ -2979,6 +2997,12 @@ sh64_target_format ()
if (sh64_pt32 && ! sh64_expand)
as_bad (_("-expand-pt32 invalid together with -no-expand"));
+#ifdef TE_NetBSD
+ if (sh64_abi == sh64_abi_64)
+ return (target_big_endian ? "elf64-sh64-nbsd" : "elf64-sh64l-nbsd");
+ else
+ return (target_big_endian ? "elf32-sh64-nbsd" : "elf32-sh64l-nbsd");
+#else
/* When the ISA is not one of SHmedia or SHcompact, use the old SH
object format. */
if (sh64_isa_mode == sh64_isa_unspecified)
@@ -2987,6 +3011,7 @@ sh64_target_format ()
return (target_big_endian ? "elf64-sh64" : "elf64-sh64l");
else
return (target_big_endian ? "elf32-sh64" : "elf32-sh64l");
+#endif
}
/* The worker function of TARGET_MACH. */