aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog10
-rw-r--r--bfd/archures.c1
-rw-r--r--bfd/bfd-in2.h1
-rw-r--r--bfd/cpu-h8300.c26
-rw-r--r--bfd/elf32-h8300.c7
5 files changed, 43 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 7bec6fd..2b35ed0 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,13 @@
+2003-06-10 Richard Sandiford <rsandifo@redhat.com>
+
+ * archures.c (bfd_mach_h8300sxn): New architecture.
+ * bfd-in2.h: Regenerate.
+ * cpu-h8300.c (h8300_scan): Check for 'sxn'.
+ (h8300sxn_info_struct): New.
+ (h8300sx_info_struct): Link to it.
+ * elf32-h8300.c (elf32_h8_mach): Add h8300sxn case.
+ (elf32_h8_final_write_processing): Likewise.
+
2003-06-08 Alan Modra <amodra@bigpond.net.au>
* elf64-ppc.c: Move TARGET_LITTLE_SYM and other macros used by
diff --git a/bfd/archures.c b/bfd/archures.c
index 250892c..6132f15 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -170,6 +170,7 @@ DESCRIPTION
.#define bfd_mach_h8300hn 4
.#define bfd_mach_h8300sn 5
.#define bfd_mach_h8300sx 6
+.#define bfd_mach_h8300sxn 7
. bfd_arch_pdp11, {* DEC PDP-11 *}
. bfd_arch_powerpc, {* PowerPC *}
.#define bfd_mach_ppc 32
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 80a543a..ebe5bca 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1654,6 +1654,7 @@ enum bfd_architecture
#define bfd_mach_h8300hn 4
#define bfd_mach_h8300sn 5
#define bfd_mach_h8300sx 6
+#define bfd_mach_h8300sxn 7
bfd_arch_pdp11, /* DEC PDP-11 */
bfd_arch_powerpc, /* PowerPC */
#define bfd_mach_ppc 32
diff --git a/bfd/cpu-h8300.c b/bfd/cpu-h8300.c
index f61e757..e1c77bf 100644
--- a/bfd/cpu-h8300.c
+++ b/bfd/cpu-h8300.c
@@ -82,7 +82,13 @@ h8300_scan (info, string)
return (info->mach == bfd_mach_h8300sn);
if (*string == 'x' || *string == 'X')
- return (info->mach == bfd_mach_h8300sx);
+ {
+ string++;
+ if (*string == 'n' || *string == 'N')
+ return (info->mach == bfd_mach_h8300sxn);
+
+ return (info->mach == bfd_mach_h8300sx);
+ }
return (info->mach == bfd_mach_h8300s);
}
@@ -106,6 +112,22 @@ compatible (in, out)
return in;
}
+static const bfd_arch_info_type h8300sxn_info_struct =
+{
+ 32, /* 32 bits in a word */
+ 32, /* 32 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_h8300,
+ bfd_mach_h8300sxn,
+ "h8300sxn", /* arch_name */
+ "h8300sxn", /* printable name */
+ 1,
+ FALSE, /* the default machine */
+ compatible,
+ h8300_scan,
+ 0
+};
+
static const bfd_arch_info_type h8300sx_info_struct =
{
32, /* 32 bits in a word */
@@ -119,7 +141,7 @@ static const bfd_arch_info_type h8300sx_info_struct =
FALSE, /* the default machine */
compatible,
h8300_scan,
- 0
+ &h8300sxn_info_struct
};
static const bfd_arch_info_type h8300sn_info_struct =
diff --git a/bfd/elf32-h8300.c b/bfd/elf32-h8300.c
index f272dc8..e4929fb 100644
--- a/bfd/elf32-h8300.c
+++ b/bfd/elf32-h8300.c
@@ -582,6 +582,9 @@ elf32_h8_mach (flags)
case E_H8_MACH_H8300SX:
return bfd_mach_h8300sx;
+
+ case E_H8_MACH_H8300SXN:
+ return bfd_mach_h8300sxn;
}
}
@@ -622,6 +625,10 @@ elf32_h8_final_write_processing (abfd, linker)
case bfd_mach_h8300sx:
val = E_H8_MACH_H8300SX;
break;
+
+ case bfd_mach_h8300sxn:
+ val = E_H8_MACH_H8300SXN;
+ break;
}
elf_elfheader (abfd)->e_flags &= ~ (EF_H8_MACH);