Here is update against Version: 2.15-5.

With help of Hirokazu Takata, we now have four patches for M32R.
I've updated 123_m32r_gotoff.dpatch to fix a bug which introduced
in original 123_m32r_gotoff.dpatch.
I've updated the patch of debian/rules, to fix a bug which
introduced by the patch sent the other day (NEWS and README.Debian).

  * debian/patches/126_m32r_support_no_bitinst.dpatch: New file.
  * debian/patches/125_m32r_fix_infinite_loop.dpatch: New file.
  * debian/patches/124_pcrel.dpatch: New file.
  * debian/patches/123_m32r_gotoff.dpatch: New file.
  * debian/rules (configure-multi-stamp): Support m32r-linux.
  * debian/rules: Run 'make check' only if build == host.

--- binutils-2.15/debian/patches/00list
+++ binutils-2.15/debian/patches/00list
@@ -17,0 +18,5 @@
+123_m32r_gotoff
+124_m32r_pcrel
+125_m32r_fix_infinite_loop
+126_m32r_support_no_bitinst
+127_config_update
--- binutils-2.15/debian/rules
+++ binutils-2.15/debian/rules
@@ -89,7 +89,9 @@
        $(checkdir)
        -rm -fr builddir-multi builddir-single builddir-hppa64
        -find . -name \*.gmo -o -name \*~ | xargs rm -f
+ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
        -rm -f $(pwd)/test-summary
+endif
        -rm -fr $(d_bin) $(d_dev) $(d_mul) $(d_doc) $(d_hppa64)
        -rm -rf debian/patched debian/tmp debian/files debian/substvars
        -rm -f gas/doc/as.info
@@ -115,11 +117,13 @@
        $(MAKE) -C builddir-single/bfd headers
        $(MAKE) -C builddir-single \
                CFLAGS="$(CFLAGS)"
+ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
        -$(MAKE) -C builddir-single -k \
                CFLAGS="$(CFLAGS)" check
        cat builddir-single/binutils/binutils.sum \
            builddir-single/gas/testsuite/gas.sum \
            builddir-single/ld/ld.sum >> $(pwd)/test-summary
+endif
        touch build-single-stamp
 
 
################################################################################
@@ -135,7 +139,7 @@
        mkdir builddir-multi
        cd builddir-multi \
            && env CC="$(CC)" ../configure $(CONFARGS) \
-               
--enable-targets=alpha-linux,arm-linux,hppa-linux,i386-gnu,i386-linux,ia64-linux,m68k-linux,m68k-rtems,mips-linux,mipsel-linux,mips64-linux,mips64el-linux,powerpc-linux,powerpc64-linux,s390-linux,s390x-linux,sh-linux,sparc-linux,sparc64-linux,x86_64-linux
+               
--enable-targets=alpha-linux,arm-linux,hppa-linux,i386-gnu,i386-linux,ia64-linux,m68k-linux,m68k-rtems,mips-linux,mipsel-linux,mips64-linux,mips64el-linux,powerpc-linux,powerpc64-linux,s390-linux,s390x-linux,sh-linux,sparc-linux,sparc64-linux,x86_64-linux,m32r-linux
        $(MAKE) -C builddir-multi configure-host
        touch configure-multi-stamp
 
@@ -376,8 +380,11 @@
        ln -sf $(p_bin) $(d_hppa64)/usr/share/doc/$(p_hppa64)
 endif
 
-       $(install_file) $(pwd)/test-summary binutils/NEWS  \
-                       debian/README.Debian $(d_bin)/usr/share/doc/$(p_bin)/
+ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+       $(install_file) $(pwd)/test-summary $(d_bin)/usr/share/doc/$(p_bin)/
+endif
+       $(install_file) binutils/NEWS debian/README.Debian \
+                       $(d_bin)/usr/share/doc/$(p_bin)/
 
        $(install_file) binutils/ChangeLog 
$(d_bin)/usr/share/doc/$(p_bin)/changelog
 
--- binutils-2.15.orig/debian/patches/123_m32r_gotoff.dpatch
+++ binutils-2.15/debian/patches/123_m32r_gotoff.dpatch
@@ -0,0 +1,667 @@
+#!/bin/sh -e
+## 123_m32r_gotoff.dpatch
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Description: Identify this version of binutils as being from Debian.
+## DP: Author: Kazuhiro Inaoka  <[EMAIL PROTECTED]>
+## DP: Upstream status: included
+## DP: Date: 2004-06-25
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+case "$1" in
+       -patch) patch $patch_opts -p1 < $0;;
+       -unpatch) patch $patch_opts -p1 -R < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as 
argument"
+                exit 1;;
+esac
+
+exit 0
+
[EMAIL PROTECTED]@
+
+--- binutils-2.15/gas/config/tc-m32r.c 2004-06-09 15:45:26.000000000 +0900
++++ binutils-040909/gas/config/tc-m32r.c       2004-06-26 01:11:09.000000000 
+0900
+@@ -489,6 +489,69 @@
+   { NULL, NULL, 0 }
+ };
+ 
++#define GOT_NAME "_GLOBAL_OFFSET_TABLE_"
++symbolS * GOT_symbol;
++
++static inline int
++m32r_PIC_related_p (symbolS *sym)
++{
++  expressionS *exp;
++
++  if (! sym)
++    return 0;
++
++  if (sym == GOT_symbol)
++    return 1;
++
++  exp = symbol_get_value_expression (sym);
++
++  return (exp->X_op == O_PIC_reloc
++          || exp->X_md == BFD_RELOC_M32R_26_PLTREL
++          || m32r_PIC_related_p (exp->X_add_symbol)
++          || m32r_PIC_related_p (exp->X_op_symbol));
++}
++
++static inline int
++m32r_check_fixup (expressionS *main_exp, bfd_reloc_code_real_type *r_type_p)
++{
++  expressionS *exp = main_exp;
++
++  if (exp->X_op == O_add && m32r_PIC_related_p (exp->X_op_symbol))
++    return 1;
++
++  if (exp->X_op == O_symbol && exp->X_add_symbol)
++    {
++      if (exp->X_add_symbol == GOT_symbol)
++        {
++          *r_type_p = BFD_RELOC_M32R_GOTPC24;
++          return 0;
++        }
++    }
++  else if (exp->X_op == O_add)
++    {
++      exp = symbol_get_value_expression (exp->X_add_symbol);
++      if (! exp)
++        return 0;
++    }
++
++  if (exp->X_op == O_PIC_reloc || exp->X_md != BFD_RELOC_UNUSED)
++    {
++      *r_type_p = exp->X_md;
++      if (exp == main_exp)
++        exp->X_op = O_symbol;
++      else
++       {
++          main_exp->X_add_symbol = exp->X_add_symbol;
++          main_exp->X_add_number += exp->X_add_number;
++       }
++    }
++  else
++    return (m32r_PIC_related_p (exp->X_add_symbol)
++            || m32r_PIC_related_p (exp->X_op_symbol));
++
++  return 0;
++}
++
+ /* FIXME: Should be machine generated.  */
+ #define NOP_INSN     0x7000
+ #define PAR_NOP_INSN 0xf000 /* Can only be used in 2nd slot.  */
+@@ -1888,23 +1951,28 @@
+       || S_IS_EXTERNAL (fragP->fr_symbol)
+       || S_IS_WEAK (fragP->fr_symbol))
+     {
++      fixS *fixP;
++
+       assert (fragP->fr_subtype != 1);
+       assert (fragP->fr_cgen.insn != 0);
+-      gas_cgen_record_fixup (fragP,
+-                           /* Offset of branch insn in frag.  */
+-                           fragP->fr_fix + extension - 4,
+-                           fragP->fr_cgen.insn,
+-                           4 /* Length.  */,
+-                           /* FIXME: quick hack.  */
++
++      fixP = gas_cgen_record_fixup (fragP,
++                                  /* Offset of branch insn in frag.  */
++                                  fragP->fr_fix + extension - 4,
++                                  fragP->fr_cgen.insn,
++                                  4 /* Length.  */,
++                                  /* FIXME: quick hack.  */
+ #if 0
+-                           cgen_operand_lookup_by_num (gas_cgen_cpu_desc,
+-                                                       
fragP->fr_cgen.opindex),
++                                  cgen_operand_lookup_by_num 
(gas_cgen_cpu_desc,
++                                                              
fragP->fr_cgen.opindex),
+ #else
+-                           cgen_operand_lookup_by_num (gas_cgen_cpu_desc,
+-                                                       M32R_OPERAND_DISP24),
++                                  cgen_operand_lookup_by_num 
(gas_cgen_cpu_desc,
++                                                              
M32R_OPERAND_DISP24),
+ #endif
+-                           fragP->fr_cgen.opinfo,
+-                           fragP->fr_symbol, fragP->fr_offset);
++                                  fragP->fr_cgen.opinfo,
++                                  fragP->fr_symbol, fragP->fr_offset);
++      if (fragP->fr_cgen.opinfo)
++        fixP->fx_r_type = fragP->fr_cgen.opinfo;
+     }
+ 
+ #define SIZE_FROM_RELAX_STATE(n) ((n) == 1 ? 1 : 3)
+@@ -2006,8 +2074,14 @@
+      int opinfo;
+      expressionS *exp;
+ {
+-  fixS *fixP = gas_cgen_record_fixup_exp (frag, where, insn, length,
+-                                        operand, opinfo, exp);
++  fixS *fixP;
++  bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
++
++  if (m32r_check_fixup (exp, &r_type))
++    as_bad (_("Invalid PIC expression."));
++
++  fixP = gas_cgen_record_fixup_exp (frag, where, insn, length,
++                                  operand, opinfo, exp);
+ 
+   switch (operand->type)
+     {
+@@ -2017,11 +2091,49 @@
+         || fixP->fx_cgen.opinfo == BFD_RELOC_M32R_HI16_ULO)
+       m32r_record_hi16 (fixP->fx_cgen.opinfo, fixP, now_seg);
+       break;
++
+     default:
+-      /* Avoid -Wall warning */
++      /* Avoid -Wall warning.  */
++      break;
++    }
++
++  switch (r_type)
++    {
++    case BFD_RELOC_UNUSED:
++    default:
++      return fixP;
++
++    case BFD_RELOC_M32R_GOTPC24:
++      if (fixP->fx_cgen.opinfo == BFD_RELOC_M32R_HI16_SLO)
++        r_type = BFD_RELOC_M32R_GOTPC_HI_SLO;
++      else if (fixP->fx_cgen.opinfo == BFD_RELOC_M32R_HI16_ULO)
++        r_type = BFD_RELOC_M32R_GOTPC_HI_ULO;
++      else if (fixP->fx_cgen.opinfo == BFD_RELOC_M32R_LO16)
++        r_type = BFD_RELOC_M32R_GOTPC_LO;
++      break;
++    case BFD_RELOC_M32R_GOT24:
++      if (fixP->fx_cgen.opinfo == BFD_RELOC_M32R_HI16_SLO)
++        r_type = BFD_RELOC_M32R_GOT16_HI_SLO;
++      else if (fixP->fx_cgen.opinfo == BFD_RELOC_M32R_HI16_ULO)
++        r_type = BFD_RELOC_M32R_GOT16_HI_ULO;
++      else if (fixP->fx_cgen.opinfo == BFD_RELOC_M32R_LO16)
++        r_type = BFD_RELOC_M32R_GOT16_LO;
++      break;
++    case BFD_RELOC_M32R_GOTOFF:
++      if (fixP->fx_cgen.opinfo == BFD_RELOC_M32R_HI16_SLO)
++        r_type = BFD_RELOC_M32R_GOTOFF_HI_SLO;
++      else if (fixP->fx_cgen.opinfo == BFD_RELOC_M32R_HI16_ULO)
++        r_type = BFD_RELOC_M32R_GOTOFF_HI_ULO;
++      else if (fixP->fx_cgen.opinfo == BFD_RELOC_M32R_LO16)
++        r_type = BFD_RELOC_M32R_GOTOFF_LO;
++      break;
++    case BFD_RELOC_M32R_26_PLTREL:
++      as_bad (_("Invalid PIC expression."));
+       break;
+     }
+ 
++  fixP->fx_r_type = r_type;
++
+   return fixP;
+ }
+ 
+@@ -2261,6 +2373,16 @@
+           || reloc_type == BFD_RELOC_M32R_LO16))
+     return 0;
+ 
++  if (reloc_type == BFD_RELOC_M32R_GOT24
++      || reloc_type == BFD_RELOC_M32R_26_PLTREL
++      || reloc_type == BFD_RELOC_M32R_GOTPC_HI_SLO
++      || reloc_type == BFD_RELOC_M32R_GOTPC_HI_ULO
++      || reloc_type == BFD_RELOC_M32R_GOTPC_LO
++      || reloc_type == BFD_RELOC_M32R_GOT16_HI_SLO
++      || reloc_type == BFD_RELOC_M32R_GOT16_HI_ULO
++      || reloc_type == BFD_RELOC_M32R_GOT16_LO)
++    return 0;
++
+   /* We need the symbol name for the VTABLE entries.  */
+   if (reloc_type == BFD_RELOC_VTABLE_INHERIT
+       || reloc_type == BFD_RELOC_VTABLE_ENTRY)
+@@ -2270,17 +2392,16 @@
+ }
+ 
+ void
+-m32r_elf_final_processing ()
++m32r_elf_final_processing (void)
+ {
+   if (use_parallel)
+     m32r_flags |= E_M32R_HAS_PARALLEL;
+   elf_elfheader (stdoutput)->e_flags |= m32r_flags;
+ }
+ 
+-#define GOT_NAME "_GLOBAL_OFFSET_TABLE_"
+- 
+ /* Translate internal representation of relocation info to BFD target
+    format. */
++
+ arelent *
+ tc_gen_reloc (section, fixP)
+      asection * section;
+@@ -2354,21 +2475,124 @@
+       return NULL;
+     }
+  
+-  /* Use fx_offset for these cases */
++  /* Use fx_offset for these cases.  */
+   if (   fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY
+       || fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT)
+     reloc->addend  = fixP->fx_offset;
+-  else if (!pic_code
++  else if ((!pic_code
++            && code != BFD_RELOC_M32R_26_PLTREL)
+            && fixP->fx_pcrel
+            && fixP->fx_addsy != NULL
+            && (S_GET_SEGMENT(fixP->fx_addsy) != section)
+            && S_IS_DEFINED (fixP->fx_addsy)
+            && ! S_IS_EXTERNAL(fixP->fx_addsy)
+            && ! S_IS_WEAK(fixP->fx_addsy))
+-    /* already used fx_offset in the opcode field itseld. */
++    /* Already used fx_offset in the opcode field itseld.  */
+     reloc->addend  = 0;
+   else
+     reloc->addend  = fixP->fx_addnumber;
+  
+   return reloc;
+ }
++
++inline static char *
++m32r_end_of_match (char *cont, char *what)
++{
++  int len = strlen (what);
++
++  if (strncasecmp (cont, what, strlen (what)) == 0
++      && ! is_part_of_name (cont[len]))
++    return cont + len;
++
++  return NULL;
++}
++
++int
++m32r_parse_name (char const *name, expressionS *exprP, char *nextcharP)
++{
++  char *next = input_line_pointer;
++  char *next_end;
++  int reloc_type;
++  operatorT op_type;
++  segT segment;
++
++  exprP->X_op_symbol = NULL;
++  exprP->X_md = BFD_RELOC_UNUSED;
++
++  if (strcmp (name, GOT_NAME) == 0)
++    {
++      if (! GOT_symbol)
++      GOT_symbol = symbol_find_or_make (name);
++
++      exprP->X_add_symbol = GOT_symbol;
++    no_suffix:
++      /* If we have an absolute symbol or a
++       reg, then we know its value now.  */
++      segment = S_GET_SEGMENT (exprP->X_add_symbol);
++      if (segment == absolute_section)
++      {
++        exprP->X_op = O_constant;
++        exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
++        exprP->X_add_symbol = NULL;
++      }
++      else if (segment == reg_section)
++      {
++        exprP->X_op = O_register;
++        exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol);
++        exprP->X_add_symbol = NULL;
++      }
++      else
++      {
++        exprP->X_op = O_symbol;
++        exprP->X_add_number = 0;
++      }
++
++      return 1;
++    }
++
++  exprP->X_add_symbol = symbol_find_or_make (name);
++
++  if (*nextcharP != '@')
++    goto no_suffix;
++  else if ((next_end = m32r_end_of_match (next + 1, "GOTOFF")))
++    {
++      reloc_type = BFD_RELOC_M32R_GOTOFF;
++      op_type = O_PIC_reloc;
++    }
++  else if ((next_end = m32r_end_of_match (next + 1, "GOT")))
++    {
++      reloc_type = BFD_RELOC_M32R_GOT24;
++      op_type = O_PIC_reloc;
++    }
++  else if ((next_end = m32r_end_of_match (next + 1, "PLT")))
++    {
++      reloc_type = BFD_RELOC_M32R_26_PLTREL;
++      op_type = O_PIC_reloc;
++    }
++  else
++    goto no_suffix;
++
++  *input_line_pointer = *nextcharP;
++  input_line_pointer = next_end;
++  *nextcharP = *input_line_pointer;
++  *input_line_pointer = '\0';
++
++  exprP->X_op = op_type;
++  exprP->X_add_number = 0;
++  exprP->X_md = reloc_type;
++
++  return 1;
++}
++
++int
++m32r_cgen_parse_fix_exp(int opinfo, expressionS *exp)
++{
++  if (exp->X_op == O_PIC_reloc
++      && exp->X_md == BFD_RELOC_M32R_26_PLTREL)
++    {
++      exp->X_op = O_symbol;
++      opinfo = exp->X_md;
++    }
++
++  return opinfo;
++}
+--- binutils-2.15/gas/config/tc-m32r.h 2003-12-19 20:43:37.000000000 +0900
++++ binutils-040909/gas/config/tc-m32r.h       2004-06-26 01:11:09.000000000 
+0900
+@@ -1,5 +1,5 @@
+ /* tc-m32r.h -- Header file for tc-m32r.c.
+-   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+    Free Software Foundation, Inc.
+ 
+    This file is part of GAS, the GNU Assembler.
+@@ -131,3 +131,15 @@
+                                                                               
    
+ #define elf_tc_final_processing       m32r_elf_final_processing
+ extern void m32r_elf_final_processing PARAMS ((void));
++
++#define md_parse_name(name, exprP, nextcharP) \
++  m32r_parse_name ((name), (exprP), (nextcharP))
++extern int m32r_parse_name (char const *, expressionS *, char *);
++
++/* This is used to construct expressions out of @GOTOFF, @PLT and @GOT
++   symbols.  The relocation type is stored in X_md.  */
++#define O_PIC_reloc O_md1
++
++#define TC_CGEN_PARSE_FIX_EXP(opinfo, exp) \
++  m32r_cgen_parse_fix_exp(opinfo, exp)
++extern int m32r_cgen_parse_fix_exp(int, expressionS *);
+--- binutils-2.15/gas/cgen.c   2003-11-21 10:52:16.000000000 +0900
++++ binutils-040909/gas/cgen.c 2004-06-26 01:11:09.000000000 +0900
+@@ -1,5 +1,5 @@
+ /* GAS interface for targets using CGEN: Cpu tools GENerator.
+-   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+    Free Software Foundation, Inc.
+ 
+    This file is part of GAS, the GNU Assembler.
+@@ -355,6 +355,10 @@
+   *strP = input_line_pointer;
+   input_line_pointer = hold;
+ 
++#ifdef TC_CGEN_PARSE_FIX_EXP
++  opinfo = TC_CGEN_PARSE_FIX_EXP (opinfo, & exp);
++#endif 
++
+   /* FIXME: Need to check `want'.  */
+ 
+   switch (exp.X_op)
+--- binutils-2.15/bfd/elf32-m32r.c     2004-05-18 04:35:59.000000000 +0900
++++ binutils-040909/bfd/elf32-m32r.c   2004-08-26 08:40:55.000000000 +0900
+@@ -669,7 +669,7 @@
+        0,                     /* bitpos */
+        complain_overflow_bitfield, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+-       "R_M32R_RELATIVE",             /* name */
++       "R_M32R_RELATIVE",     /* name */
+        FALSE,                 /* partial_inplace */
+        0xffffffff,            /* src_mask */
+        0xffffffff,            /* dst_mask */
+@@ -678,15 +678,15 @@
+   HOWTO (R_M32R_GOTOFF,       /* type */
+        0,                     /* rightshift */
+        2,                     /* size (0 = byte, 1 = short, 2 = long) */
+-       32,                    /* bitsize */
++       24,                    /* bitsize */
+        FALSE,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_bitfield, /* complain_on_overflow */
+        bfd_elf_generic_reloc, /* special_function */
+-       "R_M32R_GOTOFF",               /* name */
++       "R_M32R_GOTOFF",       /* name */
+        FALSE,                 /* partial_inplace */
+-       0xffffffff,            /* src_mask */
+-       0xffffffff,            /* dst_mask */
++       0xffffff,              /* src_mask */
++       0xffffff,              /* dst_mask */
+        FALSE),                /* pcrel_offset */
+ 
+   /* An PC Relative 24-bit relocation used when setting PIC offset
+@@ -803,6 +803,48 @@
+        0x0000ffff,            /* src_mask */
+        0x0000ffff,            /* dst_mask */
+        TRUE),                 /* pcrel_offset */
++
++  HOWTO (R_M32R_GOTOFF_HI_ULO,        /* type */
++       16,                    /* rightshift */
++       2,                     /* size (0 = byte, 1 = short, 2 = long) */
++       16,                    /* bitsize */
++       FALSE,                 /* pc_relative */
++       0,                     /* bitpos */
++       complain_overflow_dont, /* complain_on_overflow */
++       bfd_elf_generic_reloc, /* special_function */
++       "R_M32R_GOTOFF_HI_ULO",/* name */
++       FALSE,                 /* partial_inplace */
++       0x0000ffff,            /* src_mask */
++       0x0000ffff,            /* dst_mask */
++       FALSE),                /* pcrel_offset */
++
++  HOWTO (R_M32R_GOTOFF_HI_SLO,        /* type */
++       16,                    /* rightshift */
++       2,                     /* size (0 = byte, 1 = short, 2 = long) */
++       16,                    /* bitsize */
++       FALSE,                 /* pc_relative */
++       0,                     /* bitpos */
++       complain_overflow_dont, /* complain_on_overflow */
++       bfd_elf_generic_reloc, /* special_function */
++       "R_M32R_GOTOFF_HI_SLO",/* name */
++       FALSE,                 /* partial_inplace */
++       0x0000ffff,            /* src_mask */
++       0x0000ffff,            /* dst_mask */
++       FALSE),                /* pcrel_offset */
++
++  HOWTO (R_M32R_GOTOFF_LO,    /* type */
++       0,                     /* rightshift */
++       2,                     /* size (0 = byte, 1 = short, 2 = long) */
++       16,                    /* bitsize */
++       FALSE,                 /* pc_relative */
++       0,                     /* bitpos */
++       complain_overflow_dont, /* complain_on_overflow */
++       bfd_elf_generic_reloc, /* special_function */
++       "R_M32R_GOTOFF_LO",    /* name */
++       FALSE,                 /* partial_inplace */
++       0x0000ffff,            /* src_mask */
++       0x0000ffff,            /* dst_mask */
++       FALSE),                /* pcrel_offset */
+ };
+ 
+ /* Handle the R_M32R_10_PCREL reloc.  */
+@@ -1263,6 +1305,9 @@
+   { BFD_RELOC_M32R_GOTPC_HI_ULO, R_M32R_GOTPC_HI_ULO },
+   { BFD_RELOC_M32R_GOTPC_HI_SLO, R_M32R_GOTPC_HI_SLO },
+   { BFD_RELOC_M32R_GOTPC_LO, R_M32R_GOTPC_LO },
++  { BFD_RELOC_M32R_GOTOFF_HI_ULO, R_M32R_GOTOFF_HI_ULO },
++  { BFD_RELOC_M32R_GOTOFF_HI_SLO, R_M32R_GOTOFF_HI_SLO },
++  { BFD_RELOC_M32R_GOTOFF_LO, R_M32R_GOTOFF_LO },
+ };
+ 
+ static reloc_howto_type *
+@@ -2787,6 +2832,31 @@
+ 
+         switch ((int) r_type)
+           {
++            case R_M32R_GOTOFF:
++              /* Relocation is relative to the start of the global offset
++                 table (for ld24 rx, #uimm24). eg access at label+addend
++               
++                 ld24 rx. [EMAIL PROTECTED] + addend
++                 sub  rx, r12.  */
++
++              BFD_ASSERT (sgot != NULL);
++
++              relocation = -(relocation - sgot->output_section->vma);
++              rel->r_addend = -rel->r_addend;
++              break;
++
++            case R_M32R_GOTOFF_HI_ULO:
++            case R_M32R_GOTOFF_HI_SLO:
++            case R_M32R_GOTOFF_LO:
++            BFD_ASSERT (sgot != NULL);
++
++            relocation -= sgot->output_section->vma;
++
++            if ((r_type == R_M32R_GOTOFF_HI_SLO)
++                && ((relocation + rel->r_addend) & 0x8000))
++              rel->r_addend += 0x10000;
++            break;
++
+             case R_M32R_GOTPC24:
+               /* .got(_GLOBAL_OFFSET_TABLE_) - pc relocation
+                  ld24 rx,#_GLOBAL_OFFSET_TABLE_
+@@ -2961,7 +3031,6 @@
+             case R_M32R_26_PCREL_RELA:
+             case R_M32R_HI16_ULO_RELA:
+             case R_M32R_LO16_RELA:
+-            case R_M32R_SDA16_RELA:
+               if (info->shared
+                   && r_symndx != 0
+                   && (input_section->flags & SEC_ALLOC) != 0
+@@ -3094,6 +3163,7 @@
+ 
+               goto check_reloc;
+ 
++            case (int) R_M32R_SDA16_RELA:
+           case (int) R_M32R_SDA16 :
+             {
+               const char *name;
+@@ -4313,6 +4366,10 @@
+       case R_M32R_GOT16_HI_ULO:
+       case R_M32R_GOT16_HI_SLO:
+       case R_M32R_GOT16_LO:
++      case R_M32R_GOTOFF:
++      case R_M32R_GOTOFF_HI_ULO:
++      case R_M32R_GOTOFF_HI_SLO:
++      case R_M32R_GOTOFF_LO:
+       case R_M32R_GOT24:
+       case R_M32R_GOTPC_HI_ULO:
+       case R_M32R_GOTPC_HI_SLO:
+@@ -4442,6 +4499,10 @@
+             {
+             case R_M32R_GOT16_HI_ULO:
+             case R_M32R_GOT16_HI_SLO:
++            case R_M32R_GOTOFF:
++            case R_M32R_GOTOFF_HI_ULO:
++            case R_M32R_GOTOFF_HI_SLO:
++            case R_M32R_GOTOFF_LO:
+             case R_M32R_GOT16_LO:
+             case R_M32R_GOTPC24:
+             case R_M32R_GOTPC_HI_ULO:
+--- binutils-2.15/bfd/reloc.c  2004-01-21 20:17:53.000000000 +0900
++++ binutils-040909/bfd/reloc.c        2004-08-25 21:54:14.000000000 +0900
+@@ -1647,6 +1645,11 @@
+ The 24-bit relocation is used in some Intel 960 configurations.
+ 
+ ENUM
++  BFD_RELOC_32_SECREL
++ENUMDOC
++  Section relative relocations.  Some targets need this for DWARF2.
++
++ENUM
+   BFD_RELOC_32_GOT_PCREL
+ ENUMX
+   BFD_RELOC_16_GOT_PCREL
+@@ -2954,6 +2978,12 @@
+ ENUMX
+   BFD_RELOC_M32R_GOTOFF
+ ENUMX
++  BFD_RELOC_M32R_GOTOFF_HI_ULO
++ENUMX
++  BFD_RELOC_M32R_GOTOFF_HI_SLO
++ENUMX
++  BFD_RELOC_M32R_GOTOFF_LO
++ENUMX
+   BFD_RELOC_M32R_GOTPC24
+ ENUMX
+   BFD_RELOC_M32R_GOT16_HI_ULO
+--- binutils-2.15/bfd/bfd-in2.h        2004-05-18 04:35:56.000000000 +0900
++++ binutils-040909/bfd/bfd-in2.h      2004-08-28 12:05:18.000000000 +0900
+@@ -2023,6 +2090,9 @@
+   BFD_RELOC_12_PCREL,
+   BFD_RELOC_8_PCREL,
+ 
++/* Section relative relocations.  Some targets need this for DWARF2.  */
++  BFD_RELOC_32_SECREL,
++
+ /* For ELF.  */
+   BFD_RELOC_32_GOT_PCREL,
+   BFD_RELOC_16_GOT_PCREL,
+@@ -2789,6 +2871,9 @@
+   BFD_RELOC_M32R_JMP_SLOT,
+   BFD_RELOC_M32R_RELATIVE,
+   BFD_RELOC_M32R_GOTOFF,
++  BFD_RELOC_M32R_GOTOFF_HI_ULO,
++  BFD_RELOC_M32R_GOTOFF_HI_SLO,
++  BFD_RELOC_M32R_GOTOFF_LO,
+   BFD_RELOC_M32R_GOTPC24,
+   BFD_RELOC_M32R_GOT16_HI_ULO,
+   BFD_RELOC_M32R_GOT16_HI_SLO,
+--- binutils-2.15/bfd/libbfd.h 2004-02-12 08:23:20.000000000 +0900
++++ binutils-040909/bfd/libbfd.h       2004-08-28 12:05:18.000000000 +0900
+@@ -699,6 +759,7 @@
+   "BFD_RELOC_16_PCREL",
+   "BFD_RELOC_12_PCREL",
+   "BFD_RELOC_8_PCREL",
++  "BFD_RELOC_32_SECREL",
+   "BFD_RELOC_32_GOT_PCREL",
+   "BFD_RELOC_16_GOT_PCREL",
+   "BFD_RELOC_8_GOT_PCREL",
+@@ -1195,6 +1265,9 @@
+   "BFD_RELOC_M32R_JMP_SLOT",
+   "BFD_RELOC_M32R_RELATIVE",
+   "BFD_RELOC_M32R_GOTOFF",
++  "BFD_RELOC_M32R_GOTOFF_HI_ULO",
++  "BFD_RELOC_M32R_GOTOFF_HI_SLO",
++  "BFD_RELOC_M32R_GOTOFF_LO",
+   "BFD_RELOC_M32R_GOTPC24",
+   "BFD_RELOC_M32R_GOT16_HI_ULO",
+   "BFD_RELOC_M32R_GOT16_HI_SLO",
+--- binutils-2.15/include/elf/m32r.h   2003-12-19 20:44:00.000000000 +0900
++++ binutils-040909/include/elf/m32r.h 2004-06-26 01:11:09.000000000 +0900
+@@ -1,5 +1,5 @@
+ /* M32R ELF support for BFD.
+-   Copyright 1996, 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
++   Copyright 1996, 1997, 1998, 1999, 2000, 2003, 2004 Free Software 
Foundation, Inc.
+ 
+    This file is part of BFD, the Binary File Descriptor library.
+ 
+@@ -67,6 +67,9 @@
+   RELOC_NUMBER (R_M32R_GOTPC_HI_ULO, 59)
+   RELOC_NUMBER (R_M32R_GOTPC_HI_SLO, 60)
+   RELOC_NUMBER (R_M32R_GOTPC_LO, 61)
++  RELOC_NUMBER (R_M32R_GOTOFF_HI_ULO, 62)
++  RELOC_NUMBER (R_M32R_GOTOFF_HI_SLO, 63)
++  RELOC_NUMBER (R_M32R_GOTOFF_LO, 64)
+ END_RELOC_NUMBERS (R_M32R_max)
+ 
+ /* Processor specific section indices.  These sections do not actually
--- binutils-2.15.orig/debian/patches/124_m32r_pcrel.dpatch
+++ binutils-2.15/debian/patches/124_m32r_pcrel.dpatch
@@ -0,0 +1,126 @@
+#!/bin/sh -e
+## 124_m32r_pcrel.dpatch
+##
+## DP: Description: PCREL handling fix
+## DP: Author: Kazuhiro Inaoka  <[EMAIL PROTECTED]>
+## DP: Upstream status: included
+## DP: Date: 2004-11-29
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+case "$1" in
+       -patch) patch $patch_opts -p1 < $0;;
+       -unpatch) patch $patch_opts -p1 -R < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as 
argument"
+                exit 1;;
+esac
+
+exit 0
+
[EMAIL PROTECTED]@
+
+2004-11-29  Kazuhiro Inaoka <[EMAIL PROTECTED]>
+       * config/tc-m32r.c (md_pcrel_from_section): Fixed a pcrel
+       relocation miss between different sections in a same module.
+       (tc_gen_reloc): Ditto.
+       * testsuite/gas/m32r/rela-1.s: New file.
+       * testsuite/gas/m32r/rela-1.d: New file.
+       * testsuite/gas/m32r/m32r.exp: Add new file.
+       * testsuite/gas/m32r/relax-1.d: Update file.
+
+--- binutils-2.15/gas/config/tc-m32r.c~        2004-11-12 19:02:36.000000000 
+0900
++++ binutils-2.15/gas/config/tc-m32r.c 2004-11-30 12:48:52.000000000 +0900
+@@ -1971,6 +1971,12 @@ md_pcrel_from_section (fixP, sec)
+           || S_IS_EXTERNAL (fixP->fx_addsy)
+           || S_IS_WEAK (fixP->fx_addsy)))
+     {
++      if (S_GET_SEGMENT(fixP->fx_addsy) != sec
++          && S_IS_DEFINED (fixP->fx_addsy)
++          && ! S_IS_EXTERNAL(fixP->fx_addsy)
++          && ! S_IS_WEAK(fixP->fx_addsy))
++        return fixP->fx_offset;
++
+       /* The symbol is undefined (or is defined but not in this section).
+        Let the linker figure it out.  */
+       return 0;
+@@ -2460,7 +2466,7 @@ printf(" => %s\n",reloc->howto->name);
+            && ! S_IS_EXTERNAL(fixP->fx_addsy)
+            && ! S_IS_WEAK(fixP->fx_addsy))
+     /* Already used fx_offset in the opcode field itseld.  */
+-    reloc->addend  = 0;
++    reloc->addend  = fixP->fx_offset;
+   else
+     reloc->addend  = fixP->fx_addnumber;
+  
+--- binutils-2.15/gas/testsuite/gas/m32r/m32r.exp~     2003-04-08 
21:47:08.000000000 +0900
++++ binutils-2.15/gas/testsuite/gas/m32r/m32r.exp      2004-11-30 
12:51:18.000000000 +0900
+@@ -6,4 +6,5 @@ if [istarget m32r*-*-*] {
+     run_dump_test "uppercase"
+     run_dump_test "fslot"
+     run_dump_test "signed-relocs"
++    run_dump_test "rela-1"
+ }
+--- binutils-2.15/gas/testsuite/gas/m32r/rela-1.d~     2004-11-30 
12:53:20.000000000 +0900
++++ binutils-2.15/gas/testsuite/gas/m32r/rela-1.d      2004-11-30 
12:51:58.000000000 +0900
+@@ -0,0 +1,24 @@
++#as:
++#objdump: -dr
++#name: rela-1
++
++.*: +file format .*
++
++Disassembly of section .text:
++
++0+0000 <.text>:
++   0: fe 00 00 00     bl 0 <.text>
++                      0: R_M32R_26_PCREL_RELA .text2\+0x8
++   4: fe 00 00 00     bl 4 <.text\+0x4>
++                      4: R_M32R_26_PCREL_RELA .text2\+0x8
++   8: 7e 00 f0 00     bl 8 <.text\+0x8> \|\| nop
++                      8: R_M32R_10_PCREL_RELA .text2\+0x8
++   c: b0 90 00 00     bnez r0,c <.text\+0xc>
++                      c: R_M32R_18_PCREL_RELA .text2\+0x8
++  10: 10 80 7e 00     mv r0,r0 -> bl 10 <.text\+0x10>
++                      12: R_M32R_10_PCREL_RELA        .text2\+0x8
++Disassembly of section .text2:
++
++0+0000 <label-0x8>:
++   0: 70 00 70 00     nop -> nop
++   4: 70 00 70 00     nop -> nop
+--- binutils-2.15/gas/testsuite/gas/m32r/rela-1.s~     2004-11-30 
12:53:20.000000000 +0900
++++ binutils-2.15/gas/testsuite/gas/m32r/rela-1.s      2004-11-30 
12:52:14.000000000 +0900
+@@ -0,0 +1,18 @@
++
++      .section .text
++      bl      label
++      bl.l    label
++      bl.s    label
++      bnez    r0,label
++      mv      r0,r0
++      bl.s    label
++
++      .section .text2, "ax" 
++      nop
++      nop
++      nop
++      nop
++label:
++      .end
++
++
+--- binutils-2.15/gas/testsuite/gas/m32r/relax-1.d~    2004-11-30 
12:54:03.000000000 +0900
++++ binutils-2.15/gas/testsuite/gas/m32r/relax-1.d     2004-11-30 
12:52:51.000000000 +0900
+@@ -14,5 +14,5 @@ Disassembly of section .text:
+ Disassembly of section .branch:
+ 
+ 0* <branch>:
+- *0:  ff 00 00 01     bra 4 <Work>
+-[     ]*0: R_M32R_26_PCREL_RELA       .text
++ *0:  ff 00 00 00     bra 0 <branch>
++[     ]*0: R_M32R_26_PCREL_RELA       .text\+0x4
--- binutils-2.15.orig/debian/patches/125_m32r_fix_infinite_loop.dpatch
+++ binutils-2.15/debian/patches/125_m32r_fix_infinite_loop.dpatch
@@ -0,0 +1,67 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 125_m32r_fix_infinite_loop.dpatch by Hirokazu Takata <[EMAIL PROTECTED]>
+##
+## DP: Description: Fix infinite loop for -m32r2 -O
+## DP: Author: Kazuhiro Inaoka  <[EMAIL PROTECTED]>
+## DP: Upstream status: included
+## DP: Date: 2005-01-06
+
[EMAIL PROTECTED]@
+diff -urNad binutils-2.15/gas/config/tc-m32r.c 
/tmp/dpep.QB6aJW/binutils-2.15/gas/config/tc-m32r.c
+--- binutils-2.15/gas/config/tc-m32r.c 2003-12-19 20:43:36.000000000 +0900
++++ /tmp/dpep.QB6aJW/binutils-2.15/gas/config/tc-m32r.c        2005-01-06 
13:25:51.000000000 +0900
+@@ -1,5 +1,5 @@
+ /* tc-m32r.c -- Assembler for the Renesas M32R.
+-   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+    Free Software Foundation, Inc.
+ 
+    This file is part of GAS, the GNU Assembler.
+@@ -1374,6 +1382,14 @@
+        prev_insn.insn is NULL when we're on a 32 bit boundary.  */
+       on_32bit_boundary_p = prev_insn.insn == NULL;
+ 
++      /* Change a frag to, if each insn to swap is in a different frag.
++         It must keep only one instruction in a frag.  */
++      if (parallel() && on_32bit_boundary_p)
++        {
++          frag_wane (frag_now);
++          frag_new (0);
++        }
++
+       /* Look to see if this instruction can be combined with the
+        previous instruction to make one, parallel, 32 bit instruction.
+        If the previous instruction (potentially) changed the flow of
+@@ -1434,13 +1450,25 @@
+         else if (insn.frag->fr_opcode == insn.addr)
+           insn.frag->fr_opcode = prev_insn.addr;
+ 
+-        /* Update the addresses in any fixups.
+-           Note that we don't have to handle the case where each insn is in
+-           a different frag as we ensure they're in the same frag above.  */
+-        for (i = 0; i < prev_insn.num_fixups; ++i)
+-          prev_insn.fixups[i]->fx_where += 2;
+-        for (i = 0; i < insn.num_fixups; ++i)
+-          insn.fixups[i]->fx_where -= 2;
++          /* Change a frag to, if each insn is in a different frag.
++           It must keep only one instruction in a frag.  */
++          if (prev_insn.frag != insn.frag)
++            {
++              for (i = 0; i < prev_insn.num_fixups; ++i)
++                prev_insn.fixups[i]->fx_frag = insn.frag;
++              for (i = 0; i < insn.num_fixups; ++i)
++                insn.fixups[i]->fx_frag = prev_insn.frag;
++            }
++          else
++          {
++            /* Update the addresses in any fixups.
++               Note that we don't have to handle the case where each insn is 
in
++               a different frag as we ensure they're in the same frag above.  
*/
++            for (i = 0; i < prev_insn.num_fixups; ++i)
++              prev_insn.fixups[i]->fx_where += 2;
++            for (i = 0; i < insn.num_fixups; ++i)
++              insn.fixups[i]->fx_where -= 2;
++          }
+       }
+ 
+       /* Keep track of whether we've seen a pair of 16 bit insns.
--- binutils-2.15.orig/debian/patches/126_m32r_support_no_bitinst.dpatch
+++ binutils-2.15/debian/patches/126_m32r_support_no_bitinst.dpatch
@@ -0,0 +1,59 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 126_m32r_support_no_bitinst.dpatch by Hirokazu Takata <[EMAIL PROTECTED]>
+##
+## DP: Description: Support -no-bitinst
+## DP: Author: Kazuhiro Inaoka  <[EMAIL PROTECTED]>
+## DP: Upstream status: included
+## DP: Date: 2005-01-06
+
[EMAIL PROTECTED]@
+diff -urNad binutils-2.15/gas/config/tc-m32r.c 
/tmp/dpep.QB6aJW/binutils-2.15/gas/config/tc-m32r.c
+--- binutils-2.15/gas/config/tc-m32r.c 2003-12-19 20:43:36.000000000 +0900
++++ /tmp/dpep.QB6aJW/binutils-2.15/gas/config/tc-m32r.c        2005-01-06 
13:25:51.000000000 +0900
+@@ -109,7 +109,7 @@
+ 
+ /* Non-zero if -bitinst has been specified, in which case support
+    for extended M32R bit-field instruction set should be enabled.  */
+-static int enable_special_m32r = 0;
++static int enable_special_m32r = 1;
+ 
+ /* Non-zero if -float has been specified, in which case support for
+    extended M32R floating point instruction set should be enabled.  */
+@@ -216,7 +216,8 @@
+ #define OPTION_NO_IGNORE_PARALLEL (OPTION_IGNORE_PARALLEL + 1)
+ #define OPTION_SPECIAL                  (OPTION_NO_IGNORE_PARALLEL + 1)
+ #define OPTION_SPECIAL_M32R       (OPTION_SPECIAL + 1)
+-#define OPTION_SPECIAL_FLOAT      (OPTION_SPECIAL_M32R + 1)
++#define OPTION_NO_SPECIAL_M32R    (OPTION_SPECIAL_M32R + 1)
++#define OPTION_SPECIAL_FLOAT      (OPTION_NO_SPECIAL_M32R + 1)
+ #define OPTION_WARN_UNMATCHED           (OPTION_SPECIAL_FLOAT + 1)
+ #define OPTION_NO_WARN_UNMATCHED  (OPTION_WARN_UNMATCHED + 1)
+   {"m32r",  no_argument, NULL, OPTION_M32R},
+@@ -238,6 +239,7 @@
+   {"nIp", no_argument, NULL, OPTION_NO_IGNORE_PARALLEL},
+   {"hidden", no_argument, NULL, OPTION_SPECIAL},
+   {"bitinst", no_argument, NULL, OPTION_SPECIAL_M32R},
++  {"no-bitinst", no_argument, NULL, OPTION_NO_SPECIAL_M32R},
+   {"float", no_argument, NULL, OPTION_SPECIAL_FLOAT},
+   /* Sigh.  I guess all warnings must now have both variants.  */
+   {"warn-unmatched-high", no_argument, NULL, OPTION_WARN_UNMATCHED},
+@@ -353,6 +355,10 @@
+       enable_special_m32r = 1;
+       break;
+ 
++    case OPTION_NO_SPECIAL_M32R:
++      enable_special_m32r = 0;
++      break;
++
+     case OPTION_SPECIAL_FLOAT:
+       enable_special_float = 1;
+       break;
+@@ -410,6 +416,8 @@
+   fprintf (stream, _("\
+   -no-parallel            disable -parallel\n"));
+   fprintf (stream, _("\
++  -no-bitinst             disallow the M32R2's extended bit-field 
instructions\n"));
++  fprintf (stream, _("\
+   -O                      try to optimize code.  Implies -parallel\n"));
+ 
+   fprintf (stream, _("\
--- binutils-2.15.orig/debian/patches/127_config_update.dpatch
+++ binutils-2.15/debian/patches/127_config_update.dpatch
@@ -0,0 +1,449 @@
+#!/bin/sh -e
+## 127_config_update.dpatch
+##
+## DP: Description: config.{sub,guess} update
+## DP: Date: 2005-01-12
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+
+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
+
+case "$1" in
+       -patch) patch $patch_opts -p1 < $0;;
+       -unpatch) patch $patch_opts -p1 -R < $0;;
+        *)
+                echo >&2 "`basename $0`: script expects -patch|-unpatch as 
argument"
+                exit 1;;
+esac
+
+exit 0
+
[EMAIL PROTECTED]@
+--- binutils-2.15/config.guess 2004-05-18 04:36:20.000000000 +0900
++++ binutils-2.15/config.guess 2004-12-24 11:40:32.000000000 +0900
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Attempt to guess a canonical system name.
+ #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++#   2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ 
+-timestamp='2004-02-16'
++timestamp='2004-11-12'
+ 
+ # This file is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU General Public License as published by
+@@ -53,7 +53,7 @@
+ GNU config.guess ($timestamp)
+ 
+ Originally written by Per Bothner.
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 
2002, 2003, 2004
+ Free Software Foundation, Inc.
+ 
+ This is free software; see the source for copying conditions.  There is NO
+@@ -203,15 +203,15 @@
+     amiga:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+-    arc:OpenBSD:*:*)
+-      echo mipsel-unknown-openbsd${UNAME_RELEASE}
+-      exit 0 ;;
+     cats:OpenBSD:*:*)
+       echo arm-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+     hp300:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
++    luna88k:OpenBSD:*:*)
++      echo m88k-unknown-openbsd${UNAME_RELEASE}
++      exit 0 ;;
+     mac68k:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+@@ -227,21 +227,12 @@
+     mvmeppc:OpenBSD:*:*)
+       echo powerpc-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+-    pegasos:OpenBSD:*:*)
+-      echo powerpc-unknown-openbsd${UNAME_RELEASE}
+-      exit 0 ;;
+-    pmax:OpenBSD:*:*)
+-      echo mipsel-unknown-openbsd${UNAME_RELEASE}
+-      exit 0 ;;
+     sgi:OpenBSD:*:*)
+-      echo mipseb-unknown-openbsd${UNAME_RELEASE}
++      echo mips64-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+     sun3:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+-    wgrisc:OpenBSD:*:*)
+-      echo mipsel-unknown-openbsd${UNAME_RELEASE}
+-      exit 0 ;;
+     *:OpenBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+@@ -255,9 +246,14 @@
+       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+       exit 0 ;;
+     alpha:OSF1:*:*)
+-      if test $UNAME_RELEASE = "V4.0"; then
++      case $UNAME_RELEASE in
++      *4.0)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+-      fi
++              ;;
++      *5.*)
++              UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
++              ;;
++      esac
+       # According to Compaq, /usr/sbin/psrinfo has been available on
+       # OSF/1 and Tru64 systems produced since 1995.  I hope that
+       # covers most systems running today.  This code pipes the CPU
+@@ -295,14 +291,12 @@
+           "EV7.9 (21364A)")
+               UNAME_MACHINE="alphaev79" ;;
+       esac
++      # A Pn.n version is a patched version.
+       # A Vn.n version is a released version.
+       # A Tn.n version is a released field test version.
+       # A Xn.n version is an unreleased experimental baselevel.
+       # 1.2 uses "1.2" for uname -r.
+-      echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 
's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+-      exit 0 ;;
+-    Alpha*:OpenVMS:*:*)
+-      echo alpha-hp-vms
++      echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 
's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       exit 0 ;;
+     Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+@@ -325,6 +319,9 @@
+     *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit 0 ;;
++    *:z/VM:*:*)
++      echo s390-ibm-zvmoe
++      exit 0 ;;
+     *:OS400:*:*)
+         echo powerpc-ibm-os400
+       exit 0 ;;
+@@ -348,7 +345,7 @@
+     DRS?6000:unix:4.0:6*)
+       echo sparc-icl-nx6
+       exit 0 ;;
+-    DRS?6000:UNIX_SV:4.2*:7*)
++    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+       case `/usr/bin/uname -p` in
+           sparc) echo sparc-icl-nx7 && exit 0 ;;
+       esac ;;
+@@ -758,7 +755,7 @@
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+     *:UNICOS/mp:*:*)
+-      echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++      echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
'abcdefghijklmnopqrstuvwxyz'`
+@@ -781,21 +778,7 @@
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+     *:FreeBSD:*:*)
+-      # Determine whether the default compiler uses glibc.
+-      eval $set_cc_for_build
+-      sed 's/^        //' << EOF >$dummy.c
+-      #include <features.h>
+-      #if __GLIBC__ >= 2
+-      LIBC=gnu
+-      #else
+-      LIBC=
+-      #endif
+-EOF
+-      eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+-      # GNU/KFreeBSD systems have a "k" prefix to indicate we are using
+-      # FreeBSD's kernel, but not the complete OS.
+-      case ${LIBC} in gnu) kernel_only='k' ;; esac
+-      echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo 
${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
++      echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 
's/[-(].*//'`
+       exit 0 ;;
+     i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+@@ -844,9 +827,18 @@
+     cris:Linux:*:*)
+       echo cris-axis-linux-gnu
+       exit 0 ;;
++    crisv32:Linux:*:*)
++      echo crisv32-axis-linux-gnu
++      exit 0 ;;
++    frv:Linux:*:*)
++      echo frv-unknown-linux-gnu
++      exit 0 ;;
+     ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
++    m32r*:Linux:*:*)
++      echo ${UNAME_MACHINE}-unknown-linux-gnu
++      exit 0 ;;
+     m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+@@ -1087,9 +1079,9 @@
+     M680?0:D-NIX:5.3:*)
+       echo m68k-diab-dnix
+       exit 0 ;;
+-    M68*:*:R3V[567]*:*)
++    M68*:*:R3V[5678]*:*)
+       test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 
3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | 
SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
++    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 
3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | 
SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+       OS_REL=''
+       test -r /etc/.relid \
+       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+@@ -1187,9 +1179,10 @@
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+     *:Darwin:*:*)
+-      case `uname -p` in
++      UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
++      case $UNAME_PROCESSOR in
+           *86) UNAME_PROCESSOR=i686 ;;
+-          powerpc) UNAME_PROCESSOR=powerpc ;;
++          unknown) UNAME_PROCESSOR=powerpc ;;
+       esac
+       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       exit 0 ;;
+@@ -1251,6 +1244,16 @@
+     *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 
's/[-(].*//'`
+       exit 0 ;;
++    *:*VMS:*:*)
++      UNAME_MACHINE=`(uname -p) 2>/dev/null`
++      case "${UNAME_MACHINE}" in
++          A*) echo alpha-dec-vms && exit 0 ;;
++          I*) echo ia64-dec-vms && exit 0 ;;
++          V*) echo vax-dec-vms && exit 0 ;;
++      esac ;;
++    *:XENIX:*:SysV)
++      echo i386-pc-xenix
++      exit 0 ;;
+ esac
+ 
+ #echo '(No uname command or uname output not recognized.)' 1>&2
+--- binutils-2.15/config.sub   2004-05-18 04:36:20.000000000 +0900
++++ binutils-2.15/config.sub   2004-12-24 11:40:32.000000000 +0900
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Configuration validation subroutine script.
+ #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++#   2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ 
+-timestamp='2004-02-16'
++timestamp='2004-11-30'
+ 
+ # This file is (in principle) common to ALL GNU software.
+ # The presence of a machine in this file suggests that SOME GNU software
+@@ -70,7 +70,7 @@
+ version="\
+ GNU config.sub ($timestamp)
+ 
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 
2002, 2003, 2004
+ Free Software Foundation, Inc.
+ 
+ This is free software; see the source for copying conditions.  There is NO
+@@ -145,7 +145,7 @@
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+-      -apple | -axis)
++      -apple | -axis | -knuth | -cray)
+               os=
+               basic_machine=$1
+               ;;
+@@ -237,7 +237,7 @@
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | i370 | i860 | i960 | ia64 \
+       | ip2k | iq2000 \
+-      | m32r | m68000 | m68k | m88k | mcore \
++      | m32r | m32rle | m68000 | m68k | m88k | mcore \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+@@ -262,12 +262,12 @@
+       | pyramid \
+       | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | 
sh3ele \
+       | sh64 | sh64le \
+-      | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | 
sparcv9b \
++      | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 
| sparcv9b \
+       | strongarm \
+       | tahoe | thumb | tic4x | tic80 | tron \
+       | v850 | v850e \
+       | we32k \
+-      | x86 | xscale | xstormy16 | xtensa \
++      | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+       | z8k)
+               basic_machine=$basic_machine-unknown
+               ;;
+@@ -300,7 +300,7 @@
+       | avr-* \
+       | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+-      | clipper-* | cydra-* \
++      | clipper-* | craynv-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+@@ -308,7 +308,7 @@
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | ip2k-* | iq2000-* \
+-      | m32r-* \
++      | m32r-* | m32rle-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | mcore-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+@@ -326,8 +326,9 @@
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipstx39-* | mipstx39el-* \
++      | mmix-* \
+       | msp430-* \
+-      | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
++      | none-* | np1-* | ns16k-* | ns32k-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+@@ -336,14 +337,14 @@
+       | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+-      | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
++      | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+       | tahoe-* | thumb-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tron-* \
+       | v850-* | v850e-* | vax-* \
+       | we32k-* \
+-      | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+-      | xtensa-* \
++      | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
++      | xstormy16-* | xtensa-* \
+       | ymp-* \
+       | z8k-*)
+               ;;
+@@ -445,6 +446,10 @@
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
++      craynv)
++              basic_machine=craynv-cray
++              os=-unicosmp
++              ;;
+       cr16c)
+               basic_machine=cr16c-unknown
+               os=-elf
+@@ -452,9 +457,16 @@
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
++      crisv32 | crisv32-* | etraxfs*)
++              basic_machine=crisv32-axis
++              ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
++      crx)
++              basic_machine=crx-unknown
++              os=-elf
++              ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+@@ -477,6 +489,10 @@
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
++      djgpp)
++              basic_machine=i586-pc
++              os=-msdosdjgpp
++              ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
+@@ -655,10 +671,6 @@
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 
's/mips3/mips64/'`-unknown
+               ;;
+-      mmix*)
+-              basic_machine=mmix-knuth
+-              os=-mmixware
+-              ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+@@ -739,10 +751,6 @@
+       np1)
+               basic_machine=np1-gould
+               ;;
+-      nv1)
+-              basic_machine=nv1-cray
+-              os=-unicosmp
+-              ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+@@ -1025,6 +1033,10 @@
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
++      xbox)
++              basic_machine=i686-pc
++              os=-mingw32
++              ;;
+       xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+@@ -1055,6 +1067,9 @@
+       romp)
+               basic_machine=romp-ibm
+               ;;
++      mmix)
++              basic_machine=mmix-knuth
++              ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+@@ -1077,7 +1092,7 @@
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+-      sparc | sparcv9 | sparcv9b)
++      sparc | sparcv8 | sparcv9 | sparcv9b)
+               basic_machine=sparc-sun
+               ;;
+       cydra)
+@@ -1290,6 +1305,9 @@
+       -kaos*)
+               os=-kaos
+               ;;
++      -zvmoe)
++              os=-zvmoe
++              ;;
+       -none)
+               ;;
+       *)
+@@ -1370,6 +1388,9 @@
+       *-ibm)
+               os=-aix
+               ;;
++      *-knuth)
++              os=-mmixware
++              ;;
+       *-wec)
+               os=-proelf
+               ;;


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to