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]