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]