Add support for h8300hn and h8300sn
authorNick Clifton <nickc@redhat.com>
Thu, 24 Apr 2003 12:36:08 +0000 (12:36 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 24 Apr 2003 12:36:08 +0000 (12:36 +0000)
23 files changed:
bfd/ChangeLog
bfd/archures.c
bfd/bfd-in2.h
bfd/coff-h8300.c
bfd/coffcode.h
bfd/cpu-h8300.c
bfd/elf32-h8300.c
config-ml.in
gas/ChangeLog
gas/app.c
gas/config/tc-h8300.c
gas/config/tc-h8300.h
gas/doc/c-h8300.texi
include/coff/ChangeLog
include/coff/h8300.h
include/elf/ChangeLog
include/elf/h8.h
ld/ChangeLog
ld/Makefile.am
ld/Makefile.in
ld/configure
ld/configure.tgt
ld/scripttempl/h8300.sc

index 6b839799290ddcd4704aaafea547ce8a308ec5fd..1deba07324386c9ef38d88f740bcf85f4322d4fc 100644 (file)
@@ -1,3 +1,16 @@
+2003-04-24 Dhananjay Deshpande <dhananjayd@kpitcummins.com> 
+
+       * archures.c (bfd_mach_h8300hn, bfd_mach_h8300sn): Added.
+       * bfd-in2.h: Rebuilt.
+       * coff-h8300.c (BADMAG): Add check for H8300HNBADMAG & H8300SNBADMAG.
+       * coffcode.h (coff_set_arch_mach_hook): Add case for H8300HNMAGIC 
+       & H8300SNMAGIC.
+       (coff_set_flags): Add case for bfd_mach_h8300hn & bfd_mach_h8300sn.
+       * cpu-h8300.c (h8300_scan): Handle h8300hn, h8300sn.
+       (h8300sn_info_struct, h8300hn_info_struct): New.
+       * elf32-h8300.c (elf32_h8_mach): Handle case for h8300hn & h8300sn
+       (elf32_h8_final_write_processing): Likewise.
+
 2003-04-23  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
 
        * elf32-sh.c (tpoff): New.
index 2aafa4990e8c29f68bb945402c79517b5d02e1f2..3d473c3b8a2e5dac8da6811b444043b87a9fc8f3 100644 (file)
@@ -164,9 +164,11 @@ DESCRIPTION
 .  bfd_arch_m98k,      {* Motorola 98xxx *}
 .  bfd_arch_pyramid,   {* Pyramid Technology *}
 .  bfd_arch_h8300,     {* Renesas H8/300 (formerly Hitachi H8/300) *}
-.#define bfd_mach_h8300   1
-.#define bfd_mach_h8300h  2
-.#define bfd_mach_h8300s  3
+.#define bfd_mach_h8300    1
+.#define bfd_mach_h8300h   2
+.#define bfd_mach_h8300s   3
+.#define bfd_mach_h8300hn  4
+.#define bfd_mach_h8300sn  5
 .  bfd_arch_pdp11,     {* DEC PDP-11 *}
 .  bfd_arch_powerpc,   {* PowerPC *}
 .#define bfd_mach_ppc          32
index 802d39507f55a8a2cddb117c11488d4d65337a11..d23a0b7a6b006a131d6dd930d8341e86c9b9ced8 100644 (file)
@@ -1630,9 +1630,11 @@ enum bfd_architecture
   bfd_arch_m98k,      /* Motorola 98xxx */
   bfd_arch_pyramid,   /* Pyramid Technology */
   bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
-#define bfd_mach_h8300   1
-#define bfd_mach_h8300h  2
-#define bfd_mach_h8300s  3
+#define bfd_mach_h8300    1
+#define bfd_mach_h8300h   2
+#define bfd_mach_h8300s   3
+#define bfd_mach_h8300hn  4
+#define bfd_mach_h8300sn  5
   bfd_arch_pdp11,     /* DEC PDP-11 */
   bfd_arch_powerpc,   /* PowerPC */
 #define bfd_mach_ppc           32
index dab7e0170416ae57fef616ee9ef1dab435756bad..ac0915335537bf88adf7c4e4b1474e3ada090a1c 100644 (file)
@@ -281,8 +281,9 @@ static reloc_howto_type howto_table[] = {
 #define SELECT_RELOC(x,howto) \
   { x.r_type = select_reloc (howto); }
 
-#define BADMAG(x) (H8300BADMAG (x) && H8300HBADMAG (x) && H8300SBADMAG (x))
-#define H8300 1                        /* Customize coffcode.h */
+#define BADMAG(x) (H8300BADMAG (x) && H8300HBADMAG (x) && H8300SBADMAG (x) \
+                                  && H8300HNBADMAG(x) && H8300SNBADMAG(x))
+#define H8300 1                        /* Customize coffcode.h  */
 #define __A_MAGIC_SET__
 
 /* Code to swap in the reloc.  */
index 5c6c286c06467751cec6a949012d8b3fab959ca5..31338ee99ea2b239aabc308062f3ae7a64db3b31 100644 (file)
@@ -2071,7 +2071,7 @@ coff_set_arch_mach_hook (abfd, filehdr)
     case H8300MAGIC:
       arch = bfd_arch_h8300;
       machine = bfd_mach_h8300;
-      /* !! FIXME this probably isn't the right place for this */
+      /* !! FIXME this probably isn't the right place for this */
       abfd->flags |= BFD_IS_RELAXABLE;
       break;
 #endif
@@ -2080,7 +2080,7 @@ coff_set_arch_mach_hook (abfd, filehdr)
     case H8300HMAGIC:
       arch = bfd_arch_h8300;
       machine = bfd_mach_h8300h;
-      /* !! FIXME this probably isn't the right place for this */
+      /* !! FIXME this probably isn't the right place for this */
       abfd->flags |= BFD_IS_RELAXABLE;
       break;
 #endif
@@ -2089,7 +2089,25 @@ coff_set_arch_mach_hook (abfd, filehdr)
     case H8300SMAGIC:
       arch = bfd_arch_h8300;
       machine = bfd_mach_h8300s;
-      /* !! FIXME this probably isn't the right place for this */
+      /* !! FIXME this probably isn't the right place for this.  */
+      abfd->flags |= BFD_IS_RELAXABLE;
+      break;
+#endif
+
+#ifdef H8300HNMAGIC
+    case H8300HNMAGIC:
+      arch = bfd_arch_h8300;
+      machine = bfd_mach_h8300hn;
+      /* !! FIXME this probably isn't the right place for this.  */
+      abfd->flags |= BFD_IS_RELAXABLE;
+      break;
+#endif
+
+#ifdef H8300SNMAGIC
+    case H8300SNMAGIC:
+      arch = bfd_arch_h8300;
+      machine = bfd_mach_h8300sn;
+      /* !! FIXME this probably isn't the right place for this.  */
       abfd->flags |= BFD_IS_RELAXABLE;
       break;
 #endif
@@ -2739,6 +2757,12 @@ coff_set_flags (abfd, magicp, flagsp)
        case bfd_mach_h8300s:
          *magicp = H8300SMAGIC;
          return TRUE;
+       case bfd_mach_h8300hn:
+         *magicp = H8300HNMAGIC;
+         return TRUE;
+       case bfd_mach_h8300sn:
+         *magicp = H8300SNMAGIC;
+         return TRUE;
        }
       break;
 #endif
index daef763a29b0c8496869394fb3b3b9d3763d305a..2a5c604df646db54a56bfb6fc4478a2532ba4fbb 100644 (file)
@@ -69,16 +69,22 @@ h8300_scan (info, string)
 
   if (*string == 'h' || *string == 'H')
     {
+      string++;
+      if (*string == 'n' || *string == 'N')
+       return (info->mach == bfd_mach_h8300hn);
+
       return (info->mach == bfd_mach_h8300h);
     }
   else if (*string == 's' || *string == 'S')
     {
+      string++;
+      if (*string == 'n' || *string == 'N')
+       return (info->mach == bfd_mach_h8300sn);
+
       return (info->mach == bfd_mach_h8300s);
     }
   else
-    {
-      return info->mach == bfd_mach_h8300;
-    }
+    return info->mach == bfd_mach_h8300;
 }
 
 /* This routine is provided two arch_infos and works out the machine
@@ -97,33 +103,66 @@ compatible (in, out)
     return in;
 }
 
+static const bfd_arch_info_type h8300sn_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_h8300sn,
+  "h8300sn",                   /* Architecture name.  */
+  "h8300sn",                   /* Printable name.  */
+  1,
+  FALSE,                       /* The default machine.  */
+  compatible,
+  h8300_scan,
+  0
+};
+
+
+static const bfd_arch_info_type h8300hn_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_h8300hn,
+  "h8300hn",                   /* Architecture name.  */
+  "h8300hn",                   /* Printable name.  */
+  1,
+  FALSE,                       /* The default machine.  */
+  compatible,
+  h8300_scan,
+  &h8300sn_info_struct
+};
+
 static const bfd_arch_info_type h8300s_info_struct =
 {
-  32,                          /* 32 bits in a word */
-  32,                          /* 32 bits in an address */
-  8,                           /* 8 bits in a byte */
+  32,                          /* 32 bits in a word */
+  32,                          /* 32 bits in an address */
+  8,                           /* 8 bits in a byte */
   bfd_arch_h8300,
   bfd_mach_h8300s,
-  "h8300s",                    /* arch_name  */
-  "h8300s",                    /* printable name */
+  "h8300s",                    /* Architecture name.  */
+  "h8300s",                    /* Printable name.  */
   1,
-  FALSE,                       /* the default machine */
+  FALSE,                       /* The default machine.  */
   compatible,
   h8300_scan,
-  0
+  & h8300hn_info_struct
 };
 
 static const bfd_arch_info_type h8300h_info_struct =
 {
-  32,                          /* 32 bits in a word */
-  32,                          /* 32 bits in an address */
-  8,                           /* 8 bits in a byte */
+  32,                          /* 32 bits in a word */
+  32,                          /* 32 bits in an address */
+  8,                           /* 8 bits in a byte */
   bfd_arch_h8300,
   bfd_mach_h8300h,
-  "h8300h",                    /* arch_name  */
-  "h8300h",                    /* printable name */
+  "h8300h",                    /* Architecture name.  */
+  "h8300h",                    /* Printable name.  */
   1,
-  FALSE,                       /* the default machine */
+  FALSE,                       /* The default machine.  */
   compatible,
   h8300_scan,
   &h8300s_info_struct
@@ -131,15 +170,15 @@ static const bfd_arch_info_type h8300h_info_struct =
 
 const bfd_arch_info_type bfd_h8300_arch =
 {
-  16,                          /* 16 bits in a word */
-  16,                          /* 16 bits in an address */
-  8,                           /* 8 bits in a byte */
+  16,                          /* 16 bits in a word */
+  16,                          /* 16 bits in an address */
+  8,                           /* 8 bits in a byte */
   bfd_arch_h8300,
   bfd_mach_h8300,
-  "h8300",                     /* arch_name  */
-  "h8300",                     /* printable name */
+  "h8300",                     /* Architecture name.  */
+  "h8300",                     /* Printable name.  */
   1,
-  TRUE,                                /* the default machine */
+  TRUE,                                /* The default machine.  */
   compatible,
   h8300_scan,
   &h8300h_info_struct
index c79688a39599cef92b2180e9507e01d0de3b1cd5..6008d5dec2a5cd599f2d51682154979f370b4677 100644 (file)
@@ -573,6 +573,12 @@ elf32_h8_mach (flags)
 
     case E_H8_MACH_H8300S:
       return bfd_mach_h8300s;
+
+    case E_H8_MACH_H8300HN:
+      return bfd_mach_h8300hn;
+
+    case E_H8_MACH_H8300SN:
+      return bfd_mach_h8300sn;
     }
 }
 
@@ -601,6 +607,14 @@ elf32_h8_final_write_processing (abfd, linker)
     case bfd_mach_h8300s:
       val = E_H8_MACH_H8300S;
       break;
+
+    case bfd_mach_h8300hn:
+      val = E_H8_MACH_H8300HN;
+      break;
+
+    case bfd_mach_h8300sn:
+      val = E_H8_MACH_H8300SN;
+      break;
     }
 
   elf_elfheader (abfd)->e_flags &= ~ (EF_H8_MACH);
index aae3f87fe74e5d9538e68ccde051aba58a83c1b1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,843 +0,0 @@
-# Configure fragment invoked in the post-target section for subdirs
-# wanting multilib support.
-#
-# It is advisable to support a few --enable/--disable options to let the
-# user select which libraries s/he really wants.
-#
-# Subdirectories wishing to use multilib should put the following lines
-# in the "post-target" section of configure.in.
-#
-# if [ "${srcdir}" = "." ] ; then
-#   if [ "${with_target_subdir}" != "." ] ; then
-#     . ${with_multisrctop}../../config-ml.in
-#   else
-#     . ${with_multisrctop}../config-ml.in
-#   fi
-# else
-#   . ${srcdir}/../config-ml.in
-# fi
-#
-# See librx/configure.in in the libg++ distribution for an example of how
-# to handle autoconf'd libraries.
-#
-# Things are complicated because 6 separate cases must be handled:
-# 2 (native, cross) x 3 (absolute-path, relative-not-dot, dot) = 6.
-#
-# srcdir=. is special.  It must handle make programs that don't handle VPATH.
-# To implement this, a symlink tree is built for each library and for each
-# multilib subdir.
-#
-# The build tree is layed out as
-#
-# ./
-#   libg++
-#   newlib
-#   m68020/
-#          libg++
-#          newlib
-#          m68881/
-#                 libg++
-#                 newlib
-#
-# The nice feature about this arrangement is that inter-library references
-# in the build tree work without having to care where you are.  Note that
-# inter-library references also work in the source tree because symlink trees
-# are built when srcdir=.
-#
-# Unfortunately, trying to access the libraries in the build tree requires
-# the user to manually choose which library to use as GCC won't be able to
-# find the right one.  This is viewed as the lesser of two evils.
-#
-# Configure variables:
-# ${with_target_subdir} = "." for native, or ${target_alias} for cross.
-# Set by top level Makefile.
-# ${with_multisrctop} = how many levels of multilibs there are in the source
-# tree.  It exists to handle the case of configuring in the source tree:
-# ${srcdir} is not constant.
-# ${with_multisubdir} = name of multilib subdirectory (eg: m68020/m68881).
-#
-# Makefile variables:
-# MULTISRCTOP = number of multilib levels in source tree (+1 if cross)
-# (FIXME: note that this is different than ${with_multisrctop}.  Check out.).
-# MULTIBUILDTOP = number of multilib levels in build tree
-# MULTIDIRS = list of multilib subdirs (eg: m68000 m68020 ...)
-# (only defined in each library's main Makefile).
-# MULTISUBDIR = installed subdirectory name with leading '/' (eg: /m68000)
-# (only defined in each multilib subdir).
-
-# FIXME: Multilib is currently disabled by default for everything other than
-# newlib.  It is up to each target to turn on multilib support for the other
-# libraries as desired.
-
-# We have to handle being invoked by both Cygnus configure and Autoconf.
-#
-# Cygnus configure incoming variables:
-# srcdir, subdir, host, arguments
-#
-# Autoconf incoming variables:
-# srcdir, host, ac_configure_args
-#
-# We *could* figure srcdir and host out, but we'd have to do work that
-# our caller has already done to figure them out and requiring these two
-# seems reasonable.
-# Note that `host' in this case is GCC's `target'.  Target libraries are
-# configured for a particular host.
-
-if [ -n "${ac_configure_args}" ]; then
-  Makefile=${ac_file-Makefile}
-  ml_config_shell=${CONFIG_SHELL-/bin/sh}
-  ml_arguments="${ac_configure_args}"
-  ml_realsrcdir=${srcdir}
-else
-  Makefile=${Makefile-Makefile}
-  ml_config_shell=${config_shell-/bin/sh}
-  ml_arguments="${arguments}"
-  if [ -n "${subdir}" -a "${subdir}" != "." ] ; then
-    ml_realsrcdir=${srcdir}/${subdir}
-  else
-    ml_realsrcdir=${srcdir}
-  fi
-fi
-
-# Scan all the arguments and set all the ones we need.
-
-ml_verbose=--verbose
-for option in ${ml_arguments}
-do
-  case $option in
-  --*) ;;
-  -*) option=-$option ;;
-  esac
-
-  case $option in
-  --*=*)
-       optarg=`echo $option | sed -e 's/^[^=]*=//'`
-       ;;
-  esac
-
-  case $option in
-  --disable-*)
-       enableopt=`echo ${option} | sed 's:^--disable-:enable_:;s:-:_:g'`
-       eval $enableopt=no
-       ;;
-  --enable-*)
-       case "$option" in
-       *=*)    ;;
-       *)      optarg=yes ;;
-       esac
-       enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
-       eval $enableopt="$optarg"
-       ;;
-  --norecursion | --no*)
-       ml_norecursion=yes
-       ;;
-  --silent | --sil* | --quiet | --q*)
-       ml_verbose=--silent
-       ;;
-  --verbose | --v | --verb*)
-       ml_verbose=--verbose
-       ;;
-  --with-*)
-       case "$option" in
-       *=*)    ;;
-       *)      optarg=yes ;;
-       esac
-       withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
-       eval $withopt="$optarg"
-       ;;
-  --without-*)
-       withopt=`echo ${option} | sed 's:^--::;s:out::;s:-:_:g'`
-       eval $withopt=no
-       ;;
-  esac
-done
-
-# Only do this if --enable-multilib.
-if [ "${enable_multilib}" = yes ]; then
-
-# Compute whether this is the library's top level directory
-# (ie: not a multilib subdirectory, and not a subdirectory like libg++/src).
-# ${with_multisubdir} tells us we're in the right branch, but we could be
-# in a subdir of that.
-# ??? The previous version could void this test by separating the process into
-# two files: one that only the library's toplevel configure.in ran (to
-# configure the multilib subdirs), and another that all configure.in's ran to
-# update the Makefile.  It seemed reasonable to collapse all multilib support
-# into one file, but it does leave us with having to perform this test.
-ml_toplevel_p=no
-if [ -z "${with_multisubdir}" ]; then
-  if [ "${srcdir}" = "." ]; then
-    # Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
-    # ${with_target_subdir} = "." for native, otherwise target alias.
-    if [ "${with_target_subdir}" = "." ]; then
-      if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
-       ml_toplevel_p=yes
-      fi
-    else
-      if [ -f ${ml_realsrcdir}/../../config-ml.in ]; then
-       ml_toplevel_p=yes
-      fi
-    fi
-  else
-    # Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
-    if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
-      ml_toplevel_p=yes
-    fi
-  fi
-fi
-
-# If this is the library's top level directory, set multidirs to the
-# multilib subdirs to support.  This lives at the top because we need
-# `multidirs' set right away.
-
-if [ "${ml_toplevel_p}" = yes ]; then
-
-multidirs=
-for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
-  dir=`echo $i | sed -e 's/;.*$//'`
-  if [ "${dir}" = "." ]; then
-    true
-  else
-    if [ -z "${multidirs}" ]; then
-      multidirs="${dir}"
-    else
-      multidirs="${multidirs} ${dir}"
-    fi
-  fi
-done
-
-# Target libraries are configured for the host they run on, so we check
-# $host here, not $target.
-
-case "${host}" in
-arc-*-elf*)
-       if [ x$enable_biendian != xyes ]
-       then
-         old_multidirs=${multidirs}
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "${x}" in
-             *be*) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       ;;
-arm-*-*)
-       if [ x"$enable_fpu" = xno ]
-       then
-         old_multidirs=${multidirs}
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "${x}" in
-             *fpu*) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x"$enable_26bit" = xno ]
-       then
-         old_multidirs=${multidirs}
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "${x}" in
-             *26bit*) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x"$enable_underscore" = xno ]
-       then
-         old_multidirs=${multidirs}
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "${x}" in
-             *under*) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x"$enable_interwork" = xno ]
-       then
-         old_multidirs=${multidirs}
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "${x}" in
-             *interwork*) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_biendian = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *le* ) : ;;
-             *be* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x"$enable_nofmult" = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *nofmult* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       ;;
-m68*-*-*)
-       if [ x$enable_softfloat = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *soft-float* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_m68881 = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *m68881* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_m68000 = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *m68000* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_m68020 = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *m68020* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       ;;
-mips*-*-*)
-       if [ x$enable_single_float = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *single* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_biendian = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *el* ) : ;;
-             *eb* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_softfloat = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *soft-float* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       case " $multidirs " in
-       *" mabi=64 "*)
-         # We will not be able to create libraries with -mabi=64 if
-         # we cannot even link a trivial program.  It usually
-         # indicates the 64bit libraries are missing.
-         if echo 'main() {}' > conftest.c &&
-            ${CC-gcc} -mabi=64 conftest.c -o conftest; then
-           :
-         else
-           echo Could not link program with -mabi=64, disabling it.
-           old_multidirs="${multidirs}"
-           multidirs=""
-           for x in ${old_multidirs}; do
-             case "$x" in
-             *mabi=64* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-             esac
-           done
-         fi
-         rm -f conftest.c conftest
-         ;;
-       esac
-       ;;
-powerpc*-*-* | rs6000*-*-*)
-       if [ x$enable_softfloat = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *soft-float* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_powercpu = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             power | */power | */power/* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_powerpccpu = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *powerpc* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_powerpcos = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *mcall-linux* | *mcall-solaris* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_biendian = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *mlittle* | *mbig* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_sysv = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *mcall-sysv* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       if [ x$enable_aix = xno ]
-       then
-         old_multidirs="${multidirs}"
-         multidirs=""
-         for x in ${old_multidirs}; do
-           case "$x" in
-             *mcall-aix* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-           esac
-         done
-       fi
-       ;;
-sparc*-*-*)
-       case " $multidirs " in
-       *" m64 "*)
-         # We will not be able to create libraries with -m64 if
-         # we cannot even link a trivial program.  It usually
-         # indicates the 64bit libraries are missing.
-         if echo 'main() {}' > conftest.c &&
-            ${CC-gcc} -m64 conftest.c -o conftest; then
-           :
-         else
-           echo Could not link program with -m64, disabling it.
-           old_multidirs="${multidirs}"
-           multidirs=""
-           for x in ${old_multidirs}; do
-             case "$x" in
-             *m64* ) : ;;
-             *) multidirs="${multidirs} ${x}" ;;
-             esac
-           done
-         fi
-         rm -f conftest.c conftest
-         ;;
-       esac
-       ;;
-esac
-
-# Remove extraneous blanks from multidirs.
-# Tests like `if [ -n "$multidirs" ]' require it.
-multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'`
-
-# Add code to library's top level makefile to handle building the multilib
-# subdirs.
-
-cat > Multi.tem <<\EOF
-
-PWD=$${PWDCMD-pwd}
-
-# FIXME: There should be an @-sign in front of the `if'.
-# Leave out until this is tested a bit more.
-multi-do:
-       if [ -z "$(MULTIDIRS)" ]; then \
-         true; \
-       else \
-         rootpre=`${PWD}`/; export rootpre; \
-         srcrootpre=`cd $(srcdir); ${PWD}`/; export srcrootpre; \
-         lib=`echo $${rootpre} | sed -e 's,^.*/\([^/][^/]*\)/$$,\1,'`; \
-         compiler="$(CC)"; \
-         for i in `$${compiler} --print-multi-lib 2>/dev/null`; do \
-           dir=`echo $$i | sed -e 's/;.*$$//'`; \
-           if [ "$${dir}" = "." ]; then \
-             true; \
-           else \
-             if [ -d ../$${dir}/$${lib} ]; then \
-               flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
-               if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
-                               CFLAGS="$(CFLAGS) $${flags}" \
-                               prefix="$(prefix)" \
-                               exec_prefix="$(exec_prefix)" \
-                               CXXFLAGS="$(CXXFLAGS) $${flags}" \
-                               LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
-                               LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
-                               LDFLAGS="$(LDFLAGS) $${flags}" \
-                               DESTDIR="$(DESTDIR)" \
-                               $(DO)); then \
-                 true; \
-               else \
-                 exit 1; \
-               fi; \
-             else true; \
-             fi; \
-           fi; \
-         done; \
-       fi
-
-# FIXME: There should be an @-sign in front of the `if'.
-# Leave out until this is tested a bit more.
-multi-clean:
-       if [ -z "$(MULTIDIRS)" ]; then \
-         true; \
-       else \
-         lib=`${PWD} | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \
-         for dir in Makefile $(MULTIDIRS); do \
-           if [ -f ../$${dir}/$${lib}/Makefile ]; then \
-             if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) $(DO)); \
-             then true; \
-             else exit 1; \
-             fi; \
-           else true; \
-           fi; \
-         done; \
-       fi
-EOF
-
-cat ${Makefile} Multi.tem > Makefile.tem
-rm -f ${Makefile} Multi.tem
-mv Makefile.tem ${Makefile}
-
-fi # ${ml_toplevel_p} = yes
-
-if [ "${ml_verbose}" = --verbose ]; then
-  echo "Adding multilib support to Makefile in ${ml_realsrcdir}"
-  if [ "${ml_toplevel_p}" = yes ]; then
-    echo "multidirs=${multidirs}"
-  fi
-  echo "with_multisubdir=${with_multisubdir}"
-fi
-
-if [ "${srcdir}" = "." ]; then
-  if [ "${with_target_subdir}" != "." ]; then
-    ml_srcdotdot="../"
-  else
-    ml_srcdotdot=""
-  fi
-else
-  ml_srcdotdot=""
-fi
-
-if [ -z "${with_multisubdir}" ]; then
-  ml_subdir=
-  ml_builddotdot=
-  : # ml_srcdotdot= # already set
-else
-  ml_subdir="/${with_multisubdir}"
-  # The '[^/][^/]*' appears that way to work around a SunOS sed bug.
-  ml_builddotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'`/
-  if [ "$srcdir" = "." ]; then
-    ml_srcdotdot=${ml_srcdotdot}${ml_builddotdot}
-  else
-    : # ml_srcdotdot= # already set
-  fi
-fi
-
-if [ "${ml_toplevel_p}" = yes ]; then
-  ml_do='$(MAKE)'
-  ml_clean='$(MAKE)'
-else
-  ml_do=true
-  ml_clean=true
-fi
-
-# TOP is used by newlib and should not be used elsewhere for this purpose.
-# MULTI{SRC,BUILD}TOP are the proper ones to use.  MULTISRCTOP is empty
-# when srcdir != builddir.  MULTIBUILDTOP is always some number of ../'s.
-# FIXME: newlib needs to be updated to use MULTI{SRC,BUILD}TOP so we can
-# delete TOP.  Newlib may wish to continue to use TOP for its own purposes
-# of course.
-# MULTIDIRS is non-empty for the cpu top level Makefile (eg: newlib/Makefile)
-# and lists the subdirectories to recurse into.
-# MULTISUBDIR is non-empty in each cpu subdirectory's Makefile
-# (eg: newlib/h8300h/Makefile) and is the installed subdirectory name with
-# a leading '/'.
-# MULTIDO is used for targets like all, install, and check where
-# $(FLAGS_TO_PASS) augmented with the subdir's compiler option is needed.
-# MULTICLEAN is used for the *clean targets.
-#
-# ??? It is possible to merge MULTIDO and MULTICLEAN into one.  They are
-# currently kept separate because we don't want the *clean targets to require
-# the existence of the compiler (which MULTIDO currently requires) and
-# therefore we'd have to record the directory options as well as names
-# (currently we just record the names and use --print-multi-lib to get the
-# options).
-
-sed -e "s:^TOP[        ]*=[    ]*\([./]*\)[    ]*$:TOP = ${ml_builddotdot}\1:" \
-    -e "s:^MULTISRCTOP[        ]*=.*$:MULTISRCTOP = ${ml_srcdotdot}:" \
-    -e "s:^MULTIBUILDTOP[      ]*=.*$:MULTIBUILDTOP = ${ml_builddotdot}:" \
-    -e "s:^MULTIDIRS[  ]*=.*$:MULTIDIRS = ${multidirs}:" \
-    -e "s:^MULTISUBDIR[        ]*=.*$:MULTISUBDIR = ${ml_subdir}:" \
-    -e "s:^MULTIDO[    ]*=.*$:MULTIDO = $ml_do:" \
-    -e "s:^MULTICLEAN[         ]*=.*$:MULTICLEAN = $ml_clean:" \
-       ${Makefile} > Makefile.tem
-rm -f ${Makefile}
-mv Makefile.tem ${Makefile}
-
-# If this is the library's top level, configure each multilib subdir.
-# This is done at the end because this is the loop that runs configure
-# in each multilib subdir and it seemed reasonable to finish updating the
-# Makefile before going on to configure the subdirs.
-
-if [ "${ml_toplevel_p}" = yes ]; then
-
-# We must freshly configure each subdirectory.  This bit of code is
-# actually partially stolen from the main configure script.  FIXME.
-
-if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then
-
-  if [ "${ml_verbose}" = --verbose ]; then
-    echo "Running configure in multilib subdirs ${multidirs}"
-    echo "pwd: `${PWDCMD-pwd}`"
-  fi
-
-  ml_origdir=`${PWDCMD-pwd}`
-  ml_libdir=`echo $ml_origdir | sed -e 's,^.*/,,'`
-  # cd to top-level-build-dir/${with_target_subdir}
-  cd ..
-
-  for ml_dir in ${multidirs}; do
-
-    if [ "${ml_verbose}" = --verbose ]; then
-      echo "Running configure in multilib subdir ${ml_dir}"
-      echo "pwd: `${PWDCMD-pwd}`"
-    fi
-
-    if [ -d ${ml_dir} ]; then true; else
-      # ``mkdir -p ${ml_dir}'' See also mkinstalldirs.
-      pathcomp=""
-      for d in `echo ":${ml_dir}" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`; do
-        pathcomp="$pathcomp$d"
-        case "$pathcomp" in
-          -* ) pathcomp=./$pathcomp ;;
-        esac
-        if test ! -d "$pathcomp"; then
-           echo "mkdir $pathcomp" 1>&2
-           mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
-        fi
-        if test ! -d "$pathcomp"; then
-          exit $lasterr
-        fi
-        pathcomp="$pathcomp/"
-      done
-    fi
-    if [ -d ${ml_dir}/${ml_libdir} ]; then true; else mkdir ${ml_dir}/${ml_libdir}; fi
-
-    # Eg: if ${ml_dir} = m68000/m68881, dotdot = ../../
-    dotdot=../`echo ${ml_dir} | sed -e 's|[^/]||g' -e 's|/|../|g'`
-
-    case ${srcdir} in
-    ".")
-      echo Building symlink tree in `${PWDCMD-pwd}`/${ml_dir}/${ml_libdir}
-      if [ "${with_target_subdir}" != "." ]; then
-       ml_unsubdir="../"
-      else
-       ml_unsubdir=""
-      fi
-      (cd ${ml_dir}/${ml_libdir};
-       ../${dotdot}${ml_unsubdir}symlink-tree ../${dotdot}${ml_unsubdir}${ml_libdir} "")
-      if [ -f ${ml_dir}/${ml_libdir}/Makefile ]; then
-       if [ x"${MAKE}" = x ]; then
-         (cd ${ml_dir}/${ml_libdir}; make distclean)
-       else
-         (cd ${ml_dir}/${ml_libdir}; ${MAKE} distclean)
-       fi
-      fi
-      ml_newsrcdir="."
-      ml_srcdiroption=
-      multisrctop=${dotdot}
-      ;;
-    *)
-      case "${srcdir}" in
-      /*) # absolute path
-        ml_newsrcdir=${srcdir}
-        ;;
-      *) # otherwise relative
-        ml_newsrcdir=${dotdot}${srcdir}
-        ;;
-      esac
-      ml_srcdiroption="-srcdir=${ml_newsrcdir}"
-      multisrctop=
-      ;;
-    esac
-
-    case "${progname}" in
-    /*)     ml_recprog=${progname} ;;
-    *)      ml_recprog=${dotdot}${progname} ;;
-    esac
-
-    # FIXME: POPDIR=${PWD=`pwd`} doesn't work here.
-    ML_POPDIR=`pwd`
-    cd ${ml_dir}/${ml_libdir}
-
-    if [ -f ${ml_newsrcdir}/configure ]; then
-      ml_recprog="${ml_newsrcdir}/configure --cache-file=../config.cache"
-    fi
-
-    # find compiler flag corresponding to ${ml_dir}
-    for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do 
-      dir=`echo $i | sed -e 's/;.*$//'`
-      if [ "${dir}" = "${ml_dir}" ]; then
-        flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`
-        break
-      fi
-    done
-    ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags"'
-
-    if [ "${with_target_subdir}" = "." ]; then
-       CC_=$CC' '
-       CXX_=$CXX' '
-    else
-       # Create a regular expression that matches any string as long
-       # as ML_POPDIR.
-       popdir_rx=`echo ${ML_POPDIR} | sed 's,.,.,g'`
-       CC_=
-       for arg in ${CC}; do
-         case $arg in
-         -[BIL]"${ML_POPDIR}"/*)
-           CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;;
-         "${ML_POPDIR}"/*)
-           CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
-         *)
-           CC_="${CC_}${arg} " ;;
-         esac
-       done
-
-       CXX_=
-       for arg in ${CXX}; do
-         case $arg in
-         -[BIL]"${ML_POPDIR}"/*)
-           CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
-         "${ML_POPDIR}"/*)
-           CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
-         *)
-           CXX_="${CXX_}${arg} " ;;
-         esac
-       done
-
-       if test "x${LD_LIBRARY_PATH+set}" = xset; then
-         LD_LIBRARY_PATH_=
-         for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do
-           case "$arg" in
-           "${ML_POPDIR}"/*)
-             arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
-             ;;
-           esac
-           if test "x$LD_LIBRARY_PATH_" != x; then
-             LD_LIBRARY_PATH_=$LD_LIBRARY_PATH_:$arg
-           else
-             LD_LIBRARY_PATH_=$arg
-           fi
-          done
-         ml_config_env="$ml_config_env LD_LIBRARY_PATH=$LD_LIBRARY_PATH_"
-       fi
-
-       if test "x${SHLIB_PATH+set}" = xset; then
-         SHLIB_PATH_=
-         for arg in `echo "$SHLIB_PATH" | tr ':' ' '`; do
-           case "$arg" in
-           "${ML_POPDIR}"/*)
-             arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
-             ;;
-           esac
-           if test "x$SHLIB_PATH_" != x; then
-             SHLIB_PATH_=$SHLIB_PATH_:$arg
-           else
-             SHLIB_PATH_=$arg
-           fi
-          done
-         ml_config_env="$ml_config_env SHLIB_PATH=$SHLIB_PATH_"
-       fi
-    fi
-
-    if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \
-       --with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \
-       ${ml_arguments} ${ml_srcdiroption} ; then
-      true
-    else
-      exit 1
-    fi
-
-    cd ${ML_POPDIR}
-
-  done
-
-  cd ${ml_origdir}
-fi
-
-fi # ${ml_toplevel_p} = yes
-fi # ${enable_multilib} = yes
index fde70eda327d0e23bb4a047442183decd96a36fe..285877d74d8e7c0c3e42865e4e3841c7724b51b1 100644 (file)
@@ -1,3 +1,10 @@
+2003-04-24 Dhananjay Deshpande <dhananjayd@kpitcummins.com> 
+
+       * config/tc-h8300.c (Nmode, h8300hnmode, h8300snmode): New.
+       (md_pseudo_table): Add h8300hn, h8300sn.
+       * config/tc-h8300.h (COFF_MAGIC): Handle h8300hn, h8300sn.
+       * doc/c-h8300.texi : Add documentation for new machine directives.
+
 2003-04-24  Nick Clifton  <nickc@redhat.com>
 
        * config/tc-ppc.c (ppc_symbol_chars): Define.
index 57bc8083ee9162a7f604317569b1c7f357fac27d..b1e5f4c9dda7200028a9f4b5e14c10034d3cc8cf 100644 (file)
--- a/gas/app.c
+++ b/gas/app.c
@@ -27,7 +27,7 @@
    pair.  This needs better error-handling.  */
 
 #include <stdio.h>
-#include "as.h"                        /* For BAD_CASE() only */
+#include "as.h"                        /* For BAD_CASE() only */
 
 #if (__STDC__ != 1)
 #ifndef const
index 21051e0a55fe52459e01fd0aa323395c87ed4426..037a84ca2a47bcbe2bbd034250bc7cd0faf60782 100644 (file)
@@ -42,10 +42,13 @@ void cons        PARAMS ((int));
 void sbranch     PARAMS ((int));
 void h8300hmode  PARAMS ((int));
 void h8300smode  PARAMS ((int));
+void h8300hnmode PARAMS ((int));
+void h8300snmode PARAMS ((int));
 static void pint PARAMS ((int));
 
 int Hmode;
 int Smode;
+int Nmode;
 
 #define PSIZE (Hmode ? L_32 : L_16)
 #define DMODE (L_16)
@@ -88,6 +91,32 @@ h8300smode (arg)
 #endif
 }
 
+void
+h8300hnmode (arg)
+     int arg ATTRIBUTE_UNUSED;
+{
+  Hmode = 1;
+  Smode = 0;
+  Nmode = 1;
+#ifdef BFD_ASSEMBLER
+  if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300hn))
+    as_warn (_("could not set architecture and machine"));
+#endif
+}
+
+void
+h8300snmode (arg)
+     int arg ATTRIBUTE_UNUSED;
+{
+  Smode = 1;
+  Hmode = 1;
+  Nmode = 1;
+#ifdef BFD_ASSEMBLER
+  if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sn))
+    as_warn (_("could not set architecture and machine"));
+#endif
+}
+
 void
 sbranch (size)
      int size;
@@ -111,7 +140,9 @@ pint (arg)
 const pseudo_typeS md_pseudo_table[] =
 {
   {"h8300h", h8300hmode, 0},
+  {"h8300hn", h8300hnmode, 0},
   {"h8300s", h8300smode, 0},
+  {"h8300sn", h8300snmode, 0},
   {"sbranch", sbranch, L_8},
   {"lbranch", sbranch, L_16},
 
index 2da3f668ae674c9860050e6caface8691f9641f8..e09e506cd6f6aee92f2d1eba8339a33758b5d1a6 100644 (file)
@@ -45,7 +45,7 @@ struct internal_reloc;
 #define TC_COFF_FIX2RTYPE(fixP) abort ();
 
 #define BFD_ARCH bfd_arch_h8300
-#define COFF_MAGIC ( Smode ? 0x8302 : Hmode ? 0x8301 : 0x8300)
+#define COFF_MAGIC ( Smode && Nmode ? 0x8304 : Hmode && Nmode ? 0x8303 : Smode ? 0x8302 : Hmode ? 0x8301 : 0x8300)
 #define TC_COUNT_RELOC(x) (1)
 #define IGNORE_NONSTANDARD_ESCAPES
 
@@ -92,5 +92,6 @@ extern void tc_reloc_mangle
 
 extern int Hmode;
 extern int Smode;
+extern int Nmode;
 
 #define md_operand(x)
index cf3c213f6ef274bf51fa6c07118fd36a6fecacf8..4ea8383af07bf57295935e6191edf85e20383bf2 100644 (file)
@@ -134,8 +134,8 @@ with other development tools.
 @cindex machine directives, H8/300 (none)
 @cindex @code{word} directive, H8/300
 @cindex @code{int} directive, H8/300
-@code{@value{AS}} has only one machine-dependent directive for the
-H8/300:
+@code{@value{AS}} has the following machine-dependent directives for
+the H8/300:
 
 @table @code
 @cindex H8/300H, assembling for
@@ -143,6 +143,21 @@ H8/300:
 Recognize and emit additional instructions for the H8/300H variant, and
 also make @code{.int} emit 32-bit numbers rather than the usual (16-bit)
 for the H8/300 family.
+
+@item .h8300s
+Recognize and emit additional instructions for the H8S variant, and
+also make @code{.int} emit 32-bit numbers rather than the usual (16-bit)
+for the H8/300 family.
+
+@item .h8300hn
+Recognize and emit additional instructions for the H8/300H variant in
+normal mode, and also make @code{.int} emit 32-bit numbers rather than 
+the usual (16-bit) for the H8/300 family.
+
+@item .h8300sn
+Recognize and emit additional instructions for the H8S variant in
+normal mode, and also make @code{.int} emit 32-bit numbers rather than 
+the usual (16-bit) for the H8/300 family.
 @end table
 
 On the H8/300 family (including the H8/300H) @samp{.word} directives
index 353eb599149dcde8529facbad637436a840fec9c..b6db3064d4f84a18868d9bc9c332181849f37d40 100644 (file)
@@ -1,3 +1,8 @@
+2003-04-24 Dhananjay Deshpande <dhananjayd@kpitcummins.com> 
+
+       * coff/h8300.h (H8300HNMAGIC, H8300SNMAGIC): New.
+       (H8300HNBADMAG, H8300SNBADMAG): New.
+
 2003-04-15  Rohit Kumar Srivastava <rohits@kpitcummins.com>
 
        * sh.h: Replace occurrances of 'Hitachi' with 'Renesas'.
index c30dc00970945d27a57e05080a9d095e31e2a4b6..908848c181f4f2cd58fba516b23fc98bd08de390 100644 (file)
 #define        H8300MAGIC      0x8300
 #define        H8300HMAGIC     0x8301
 #define        H8300SMAGIC     0x8302
+#define        H8300HNMAGIC    0x8303
+#define        H8300SNMAGIC    0x8304
 
-#define H8300BADMAG(x)  (((x).f_magic != H8300MAGIC))
-#define H8300HBADMAG(x) (((x).f_magic != H8300HMAGIC))
-#define H8300SBADMAG(x) (((x).f_magic != H8300SMAGIC))
+#define H8300BADMAG(x)   (((x).f_magic != H8300MAGIC))
+#define H8300HBADMAG(x)  (((x).f_magic != H8300HMAGIC))
+#define H8300SBADMAG(x)  (((x).f_magic != H8300SMAGIC))
+#define H8300HNBADMAG(x) (((x).f_magic != H8300HNMAGIC))
+#define H8300SNBADMAG(x) (((x).f_magic != H8300SNMAGIC))
 
-/********************** RELOCATION DIRECTIVES **********************/
+/* Relocation directives.  */
 
 /* The external reloc has an offset field, because some of the reloc
    types on the h8 don't have room in the instruction for the entire
index 3f7849d7023973aa8d4eb2b0a24d6dbde48eccde..945ce63bc71f0b95ac0648ab8a02f812ea22756f 100644 (file)
@@ -1,3 +1,7 @@
+2003-04-24 Dhananjay Deshpande <dhananjayd@kpitcummins.com> 
+
+       * elf/h8.h (E_H8_MACH_H8300HN, E_H8_MACH_H8300SN): New
+
 2003-04-23  J"orn Rennecke <joern.rennecke@superh.com>
 
        * common.h (EM_SH): Amend comment to refer to SuperH.
index ac9db566a483fb8f2393cfc3556f14919133e0f7..5fdf62c500e4229c531e41c9f17d3354781f4b9b 100644 (file)
@@ -1,5 +1,5 @@
 /* H8300/h8500 ELF support for BFD.
-   Copyright 2001 Free Software Foundation, Inc.
+   Copyright 2001, 2003 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -92,5 +92,7 @@ END_RELOC_NUMBERS (R_H8_max)
 #define E_H8_MACH_H8300                0x00800000
 #define E_H8_MACH_H8300H       0x00810000
 #define E_H8_MACH_H8300S       0x00820000
+#define E_H8_MACH_H8300HN      0x00830000
+#define E_H8_MACH_H8300SN      0x00840000
 
 #endif
index 1bbbc66e4327572e3081e60a1132417f6dcd8d12..b215a3733be16f411be899b486d5ddbf4853b669 100644 (file)
@@ -1,3 +1,16 @@
+2003-04-23 Dhananjay Deshpande <dhananjayd@kpitcummins.com> 
+       
+       * Makefile.am (ALL_EMULATIONS): Add eh8300hn.o, eh8300sn.o, 
+       eh8300hnelf.o, eh8300snelf.o and respective rules.
+       * Makefile.in: Regenerate.
+       * configure.tgt: Add h8300hn, h8300sn, h8300hnelf, h8300snelf
+       * emulparams/h8300hn.sh: New
+       * emulparams/h8300sn.sh: New
+       * emulparams/h8300hnelf.sh: New 
+       * emulparams/h8300snelf.sh: New
+       * scripttempl/h8300hn.sc: new
+       * scripttempl/h8300sn.sc: new
+
 2003-04-23  H.J. Lu <hjl@gnu.org>
 
        * ldmain.c (link_callbacks): Initialize error_handler.
index 6e35d38ee6e452d53dfb4fe029705583c3384216..1cee856f486048708f97fe4b4e7c468ad0c73382 100644 (file)
@@ -196,8 +196,12 @@ ALL_EMULATIONS = \
        eh8300h.o \
        eh8300s.o \
        eh8300elf.o \
+       eh8300hn.o \
+       eh8300sn.o \
        eh8300helf.o \
        eh8300self.o \
+       eh8300hnelf.o \
+       eh8300snelf.o \
        eh8500.o \
        eh8500b.o \
        eh8500c.o \
@@ -821,6 +825,12 @@ eh8300h.c: $(srcdir)/emulparams/h8300h.sh \
 eh8300s.c: $(srcdir)/emulparams/h8300s.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300s.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} h8300s "$(tdir_h8300s)"
+eh8300hn.c: $(srcdir)/emulparams/h8300hn.sh \
+  $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300hn.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} h8300hn "$(tdir_h8300hn)"
+eh8300sn.c: $(srcdir)/emulparams/h8300sn.sh \
+  $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300sn.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} h8300sn "$(tdir_h8300sn)"
 eh8300elf.c: $(srcdir)/emulparams/h8300elf.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} h8300elf "$(tdir_h8300elf)"
@@ -832,6 +842,14 @@ eh8300self.c: $(srcdir)/emulparams/h8300self.sh \
   $(srcdir)/emulparams/h8300elf.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} h8300self "$(tdir_h8300self)"
+eh8300hnelf.c: $(srcdir)/emulparams/h8300hnelf.sh \
+  $(srcdir)/emulparams/h8300elf.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} h8300hnelf "$(tdir_h8300hnelf)"
+eh8300snelf.c: $(srcdir)/emulparams/h8300snelf.sh \
+  $(srcdir)/emulparams/h8300elf.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} h8300snelf "$(tdir_h8300snelf)"
 eh8500.c: $(srcdir)/emulparams/h8500.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8500.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} h8500 "$(tdir_h8500)"
index dc226af557437b751da0aae80157b1077241a247..cb2e2a41a1120ddc2e264445e353c63e67dfe783 100644 (file)
@@ -310,8 +310,12 @@ ALL_EMULATIONS = \
        eh8300h.o \
        eh8300s.o \
        eh8300elf.o \
+       eh8300hn.o \
+       eh8300sn.o \
        eh8300helf.o \
        eh8300self.o \
+       eh8300hnelf.o \
+       eh8300snelf.o \
        eh8500.o \
        eh8500b.o \
        eh8500c.o \
@@ -1547,6 +1551,12 @@ eh8300h.c: $(srcdir)/emulparams/h8300h.sh \
 eh8300s.c: $(srcdir)/emulparams/h8300s.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300s.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} h8300s "$(tdir_h8300s)"
+eh8300hn.c: $(srcdir)/emulparams/h8300hn.sh \
+  $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300hn.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} h8300hn "$(tdir_h8300hn)"
+eh8300sn.c: $(srcdir)/emulparams/h8300sn.sh \
+  $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300sn.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} h8300sn "$(tdir_h8300sn)"
 eh8300elf.c: $(srcdir)/emulparams/h8300elf.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} h8300elf "$(tdir_h8300elf)"
@@ -1558,6 +1568,14 @@ eh8300self.c: $(srcdir)/emulparams/h8300self.sh \
   $(srcdir)/emulparams/h8300elf.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} h8300self "$(tdir_h8300self)"
+eh8300hnelf.c: $(srcdir)/emulparams/h8300hnelf.sh \
+  $(srcdir)/emulparams/h8300elf.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} h8300hnelf "$(tdir_h8300hnelf)"
+eh8300snelf.c: $(srcdir)/emulparams/h8300snelf.sh \
+  $(srcdir)/emulparams/h8300elf.sh \
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} h8300snelf "$(tdir_h8300snelf)"
 eh8500.c: $(srcdir)/emulparams/h8500.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8500.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} h8500 "$(tdir_h8500)"
index b43c76c739d3757858ef1220c44fc8e50ce5c487..410f9c26e5646a2f545dcecffd5b0e68c8c612c4 100755 (executable)
@@ -1580,7 +1580,7 @@ irix5* | irix6*)
 # This must be Linux ELF.
 linux-gnu*)
   case $host_cpu in
-  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
+  alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* )
     lt_cv_deplibs_check_method=pass_all ;;
   *)
     # glibc up to 2.1.1 does not perform some relocations on ARM
index 8a1456149912cbab10bc2f512a523797d2506bd9..66f2f5e7d8bda7f6653338ccb6ebe40600b894ed 100644 (file)
@@ -261,11 +261,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"
+                       targ_emul=h8300; targ_extra_emuls="h8300h h8300s h8300hn h8300sn"
                        ;;
 h8300-*-elf*)
                        targ_emul=h8300elf;
-                       targ_extra_emuls="h8300helf h8300self"
+                       targ_extra_emuls="h8300helf h8300self h8300hnelf h8300snelf"
                        ;;
 h8500-*-hms* | h8500-*-coff* | h8500-*-rtems*)
                        targ_emul=h8500
index f9120ba80df194ffde900ed6eba9d217e0afb8cf..1fdf30c8fd559063fd8b7d540f008b0d27bafcd9 100644 (file)
@@ -38,10 +38,16 @@ SECTIONS
          *(.vectors)
        } ${RELOCATING+ > vectors}
 
+.init :
+       { 
+         *(.init)
+       } ${RELOCATING+ > ram}
+
 .text :
        {
          *(.rodata)
          *(.text)
+         *(.text.*)
          *(.strings)
          ${RELOCATING+ _etext = . ; }
        } ${RELOCATING+ > ram}
@@ -51,6 +57,7 @@ ${CONSTRUCTING+${TORS}}
 .data :
        {
          *(.data)
+         *(.data.*)
          *(.tiny)
          ${RELOCATING+ _edata = . ; }
        } ${RELOCATING+ > ram}