aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-sh64.c17
2 files changed, 19 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index ed37bd2..30124d5 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2002-10-09 Richard Shann <richard.shann@superh.com>
+ Stephen Clarke <stephen.clarke@superh.com>
+
+ * config/tc-sh64.c (sh64_target_format): Add support for sh64
+ Linux environment.
+
2002-10-03 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* contig/tc-sh.c (sh_local_pcrel): New.
diff --git a/gas/config/tc-sh64.c b/gas/config/tc-sh64.c
index 6ac77b8..8d899fb 100644
--- a/gas/config/tc-sh64.c
+++ b/gas/config/tc-sh64.c
@@ -2944,10 +2944,6 @@ s_sh64_abi (ignore)
const char *
sh64_target_format ()
{
-#ifdef TE_LINUX
- 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)
@@ -2966,6 +2962,14 @@ sh64_target_format ()
}
#endif
+#ifdef TE_LINUX
+ if (sh64_isa_mode == sh64_isa_unspecified)
+ sh64_isa_mode = sh64_isa_shmedia;
+
+ if (sh64_abi == sh64_abi_unspecified)
+ sh64_abi = sh64_abi_32;
+#endif
+
if (sh64_abi == sh64_abi_64 && sh64_isa_mode == sh64_isa_unspecified)
sh64_isa_mode = sh64_isa_shmedia;
@@ -3002,6 +3006,11 @@ sh64_target_format ()
return (target_big_endian ? "elf64-sh64-nbsd" : "elf64-sh64l-nbsd");
else
return (target_big_endian ? "elf32-sh64-nbsd" : "elf32-sh64l-nbsd");
+#elif defined (TE_LINUX)
+ if (sh64_abi == sh64_abi_64)
+ return (target_big_endian ? "elf64-sh64big-linux" : "elf64-sh64-linux");
+ else
+ return (target_big_endian ? "elf32-sh64big-linux" : "elf32-sh64-linux");
#else
/* When the ISA is not one of SHmedia or SHcompact, use the old SH
object format. */