From f4984206d8fb20bec6cd4cf1c89adf3bc298824f Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Tue, 10 Jun 2003 07:09:31 +0000 Subject: [PATCH] include/elf/ * h8.h (E_H8_MACH_H8300SXN): New flag. bfd/ * 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. gas/ * config/tc-h8300.c (h8300sxnmode): New. (md_pseudo_table): Add .h8300sxn entry. Sync others with FSF version. ld/ * configure.tgt (h8300*): Add h8300sxn emulations. * Makefile.am (ALL_EMULATIONS): Add eh8300sxn.o and eh8300sxnelf.o. (eh8300sxn.c, eh8300sxnelf.c): New rules. * Makefile.in: Regenerate. * emulparams/h8300sxnelf.sh, emulparams/h8300sxn.sh: New files. --- bfd/ChangeLog | 10 ++++++++++ bfd/archures.c | 1 + bfd/bfd-in2.h | 1 + bfd/cpu-h8300.c | 26 ++++++++++++++++++++++++-- bfd/elf32-h8300.c | 7 +++++++ gas/ChangeLog | 5 +++++ gas/config/tc-h8300.c | 15 +++++++++++++++ include/elf/ChangeLog | 4 ++++ include/elf/h8.h | 1 + ld/ChangeLog | 8 ++++++++ ld/Makefile.am | 9 +++++++++ ld/Makefile.in | 9 +++++++++ ld/configure.tgt | 4 ++-- ld/emulparams/h8300sxn.sh | 5 +++++ ld/emulparams/h8300sxnelf.sh | 2 ++ 15 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 ld/emulparams/h8300sxn.sh create mode 100644 ld/emulparams/h8300sxnelf.sh diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7bec6fde06b..2b35ed0c189 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,13 @@ +2003-06-10 Richard Sandiford + + * 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 * elf64-ppc.c: Move TARGET_LITTLE_SYM and other macros used by diff --git a/bfd/archures.c b/bfd/archures.c index 250892ce532..6132f155df0 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 80a543ae64d..ebe5bcab258 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 f61e7576a8b..e1c77bfe2e6 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 f272dc8e084..e4929fb4ae0 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); diff --git a/gas/ChangeLog b/gas/ChangeLog index f98a487164b..2b0802c7edf 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2003-06-10 Richard Sandiford + + * config/tc-h8300.c (h8300sxnmode): New. + (md_pseudo_table): Add .h8300sxn entry. Sync others with FSF version. + 2003-06-09 H.J. Lu * NEWS: Updated for the new -n option for the i386 assembler. diff --git a/gas/config/tc-h8300.c b/gas/config/tc-h8300.c index 794a509792a..6e6a170a387 100644 --- a/gas/config/tc-h8300.c +++ b/gas/config/tc-h8300.c @@ -136,6 +136,20 @@ h8300sxmode (arg) #endif } +void +h8300sxnmode (arg) + int arg ATTRIBUTE_UNUSED; +{ + Smode = 1; + Hmode = 1; + SXmode = 1; + Nmode = 1; +#ifdef BFD_ASSEMBLER + if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sxn)) + as_warn (_("could not set architecture and machine")); +#endif +} + void sbranch (size) int size; @@ -163,6 +177,7 @@ const pseudo_typeS md_pseudo_table[] = {"h8300s", h8300smode, 0}, {"h8300sn", h8300snmode, 0}, {"h8300sx", h8300sxmode, 0}, + {"h8300sxn", h8300sxnmode, 0}, {"sbranch", sbranch, L_8}, {"lbranch", sbranch, L_16}, diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index db652e29868..8221242f356 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,7 @@ +2003-06-10 Richard Sandiford + + * h8.h (E_H8_MACH_H8300SXN): New flag. + 2003-06-03 Nick Clifton * v850.h (R_V850_32): Rename to R_V850_ABS32. diff --git a/include/elf/h8.h b/include/elf/h8.h index 79c0a34fb32..1aad7a4ed5b 100644 --- a/include/elf/h8.h +++ b/include/elf/h8.h @@ -95,5 +95,6 @@ END_RELOC_NUMBERS (R_H8_max) #define E_H8_MACH_H8300HN 0x00830000 #define E_H8_MACH_H8300SN 0x00840000 #define E_H8_MACH_H8300SX 0x00850000 +#define E_H8_MACH_H8300SXN 0x00860000 #endif diff --git a/ld/ChangeLog b/ld/ChangeLog index c3c4f07642a..b1b274600fd 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +2003-06-10 Richard Sandiford + + * configure.tgt (h8300*): Add h8300sxn emulations. + * Makefile.am (ALL_EMULATIONS): Add eh8300sxn.o and eh8300sxnelf.o. + (eh8300sxn.c, eh8300sxnelf.c): New rules. + * Makefile.in: Regenerate. + * emulparams/h8300sxnelf.sh, emulparams/h8300sxn.sh: New files. + 2003-06-10 Alan Modra * emulparams/elf64ppc.sh (EXECUTABLE_SYMBOLS, OTHER_BSS_END_SYMBOLS, diff --git a/ld/Makefile.am b/ld/Makefile.am index 1a54aee83e4..56354e39755 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -206,6 +206,8 @@ ALL_EMULATIONS = \ eh8300hnelf.o \ eh8300snelf.o \ eh8300sxelf.o \ + eh8300sxn.o \ + eh8300sxnelf.o \ eh8500.o \ eh8500b.o \ eh8500c.o \ @@ -847,6 +849,9 @@ eh8300sn.c: $(srcdir)/emulparams/h8300sn.sh \ eh8300sx.c: $(srcdir)/emulparams/h8300sx.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300sx.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8300sx "$(tdir_h8300sx)" +eh8300sxn.c: $(srcdir)/emulparams/h8300sxn.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300sxn.sc ${GEN_DEPENDS} + ${GENSCRIPTS} h8300sxn "$(tdir_h8300sxn)" eh8300elf.c: $(srcdir)/emulparams/h8300elf.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8300elf "$(tdir_h8300elf)" @@ -870,6 +875,10 @@ eh8300sxelf.c: $(srcdir)/emulparams/h8300sxelf.sh \ $(srcdir)/emulparams/h8300elf.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8300sxelf "$(tdir_h8300sxelf)" +eh8300sxnelf.c: $(srcdir)/emulparams/h8300sxnelf.sh \ + $(srcdir)/emulparams/h8300elf.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} h8300sxnelf "$(tdir_h8300sxnelf)" eh8500.c: $(srcdir)/emulparams/h8500.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8500.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8500 "$(tdir_h8500)" diff --git a/ld/Makefile.in b/ld/Makefile.in index 8aa05054d0b..0d7904c3634 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -320,6 +320,8 @@ ALL_EMULATIONS = \ eh8300hnelf.o \ eh8300snelf.o \ eh8300sxelf.o \ + eh8300sxn.o \ + eh8300sxnelf.o \ eh8500.o \ eh8500b.o \ eh8500c.o \ @@ -1573,6 +1575,9 @@ eh8300sn.c: $(srcdir)/emulparams/h8300sn.sh \ eh8300sx.c: $(srcdir)/emulparams/h8300sx.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300sx.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8300sx "$(tdir_h8300sx)" +eh8300sxn.c: $(srcdir)/emulparams/h8300sxn.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300sxn.sc ${GEN_DEPENDS} + ${GENSCRIPTS} h8300sxn "$(tdir_h8300sxn)" eh8300elf.c: $(srcdir)/emulparams/h8300elf.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8300elf "$(tdir_h8300elf)" @@ -1596,6 +1601,10 @@ eh8300sxelf.c: $(srcdir)/emulparams/h8300sxelf.sh \ $(srcdir)/emulparams/h8300elf.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8300sxelf "$(tdir_h8300sxelf)" +eh8300sxnelf.c: $(srcdir)/emulparams/h8300sxnelf.sh \ + $(srcdir)/emulparams/h8300elf.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} h8300sxnelf "$(tdir_h8300sxnelf)" eh8500.c: $(srcdir)/emulparams/h8500.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8500.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8500 "$(tdir_h8500)" diff --git a/ld/configure.tgt b/ld/configure.tgt index 8e9499251b0..d8560ac6407 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -263,11 +263,11 @@ thumb-*-pe) targ_emul=armpe ; xscale-*-coff) targ_emul=armcoff ;; xscale-*-elf) targ_emul=armelf ;; h8300-*-hms* | h8300-*-coff* | h8300-*-rtems*) - targ_emul=h8300; targ_extra_emuls="h8300h h8300s h8300hn h8300sn h8300sx" + targ_emul=h8300; targ_extra_emuls="h8300h h8300s h8300hn h8300sn h8300sx h8300sxn" ;; h8300-*-elf*) targ_emul=h8300elf; - targ_extra_emuls="h8300helf h8300self h8300hnelf h8300snelf h8300sxelf" + targ_extra_emuls="h8300helf h8300self h8300hnelf h8300snelf h8300sxelf h8300sxnelf" ;; h8500-*-hms* | h8500-*-coff* | h8500-*-rtems*) targ_emul=h8500 diff --git a/ld/emulparams/h8300sxn.sh b/ld/emulparams/h8300sxn.sh new file mode 100644 index 00000000000..7cad9746a44 --- /dev/null +++ b/ld/emulparams/h8300sxn.sh @@ -0,0 +1,5 @@ +SCRIPT_NAME=h8300sxn +OUTPUT_FORMAT="coff-h8300" +TEXT_START_ADDR=0x8000 +TARGET_PAGE_SIZE=128 +ARCH=h8300 diff --git a/ld/emulparams/h8300sxnelf.sh b/ld/emulparams/h8300sxnelf.sh new file mode 100644 index 00000000000..98e9d497261 --- /dev/null +++ b/ld/emulparams/h8300sxnelf.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/h8300elf.sh +ARCH="h8300:h8300sxn" -- 2.30.2