Reverting the patch that disabled using the 'binutils snapshot', because it's

needed for the fuloong minipc. It was not enough having the loongson2f patches;
only having the patches, we got troubles building cups with a segfault on the
dynamic loader running their 'genstrings' program.  And if sysvinit needs newer
binutils (I can't remember why, but I wrote it in the all-packages.nix before),
then let's use the snapshot.

As a note about "why this snapshot" (civodul was interested), when I knew that
we needed an unreleased version of binutils I went to download the snapshot of
the day. And it worked. This is all the story.

svn path=/nixpkgs/branches/stdenv-updates/; revision=24229
This commit is contained in:
Lluís Batlle i Rossell 2010-10-11 23:18:00 +00:00
parent 427d99ee1e
commit 18372e5a56
5 changed files with 69 additions and 514 deletions

View File

@ -2,13 +2,9 @@
let
basename = "binutils-2.20.1";
targetIsMips = stdenv.system == "mips64-linux" || (cross != null && cross.arch == "mips");
in
stdenv.mkDerivation rec {
# In the case of targetIsMips we apply a version-bump patch
name = (if targetIsMips then "binutils-2.20.51" else
basename) + stdenv.lib.optionalString (cross != null) "-${cross.config}";
name = basename + stdenv.lib.optionalString (cross != null) "-${cross.config}";
src = fetchurl {
url = "mirror://gnu/binutils/${basename}.tar.bz2";
@ -20,11 +16,7 @@ stdenv.mkDerivation rec {
# RUNPATH instead of RPATH on binaries. This is important because
# RUNPATH can be overriden using LD_LIBRARY_PATH at runtime.
./new-dtags.patch
]
# For loongson2f (the only mips running nixos now) we need these patches for
# linux to build. It checks the binutils version, so we have even to udpate the
# version.
++ stdenv.lib.optionals targetIsMips [ ./loongson2f.patch ./version-bump.patch ];
];
inherit noSysDirs;

View File

@ -1,487 +0,0 @@
From 43ec71bb4c761538a3c8813856654de756661cce Mon Sep 17 00:00:00 2001
From: Nick Clifton <nickc@redhat.com>
Date: Thu, 25 Feb 2010 11:15:46 +0000
Subject: [PATCH] * config/tc-mips.c (mips_fix_loongson2f, mips_fix_loongson2f_nop,
mips_fix_loongson2f_jump): New variables.
(md_longopts): Add New options -mfix-loongson2f-nop/jump,
-mno-fix-loongson2f-nop/jump.
(md_parse_option): Initialize variables via above options.
(options): New enums for the above options.
(md_begin): Initialize nop_insn from LOONGSON2F_NOP_INSN.
(fix_loongson2f, fix_loongson2f_nop, fix_loongson2f_jump):
New functions.
(append_insn): call fix_loongson2f().
(mips_handle_align): Replace the implicit nops.
* config/tc-mips.h (MAX_MEM_FOR_RS_ALIGN_CODE): Modified
for the new mips_handle_align().
* doc/c-mips.texi: Document the new options.
* gas/mips/loongson-2f-2.s: New test of -mfix-loongson2f-nop.
* gas/mips/loongson-2f-2.d: Likewise.
* gas/mips/loongson-2f-3.s: New test of -mfix-loongson2f-jump.
* gas/mips/loongson-2f-3.d: Likewise.
* gas/mips/mips.exp: Run the new tests.
* opcode/mips.h (LOONGSON2F_NOP_INSN): New macro.
---
gas/ChangeLog | 17 ++++
gas/config/tc-mips.c | 130 +++++++++++++++++++++++++++++---
gas/config/tc-mips.h | 4 +-
gas/doc/c-mips.texi | 18 ++++-
gas/testsuite/ChangeLog | 8 ++
gas/testsuite/gas/mips/loongson-2f-2.d | 18 +++++
gas/testsuite/gas/mips/loongson-2f-2.s | 10 +++
gas/testsuite/gas/mips/loongson-2f-3.d | 35 +++++++++
gas/testsuite/gas/mips/loongson-2f-3.s | 23 ++++++
gas/testsuite/gas/mips/mips.exp | 2 +
include/opcode/ChangeLog | 4 +
include/opcode/mips.h | 6 +-
12 files changed, 258 insertions(+), 17 deletions(-)
create mode 100644 gas/testsuite/gas/mips/loongson-2f-2.d
create mode 100644 gas/testsuite/gas/mips/loongson-2f-2.s
create mode 100644 gas/testsuite/gas/mips/loongson-2f-3.d
create mode 100644 gas/testsuite/gas/mips/loongson-2f-3.s
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 94128fe..f901ae4 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -1,6 +1,7 @@
/* tc-mips.c -- assemble code for a MIPS chip.
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Free Software Foundation, Inc.
Contributed by the OSF and Ralph Campbell.
Written by Keith Knowles and Ralph Campbell, working independently.
Modified for ECOFF and R4000 support by Ian Lance Taylor of Cygnus
@@ -751,7 +752,8 @@ static const unsigned int mips16_to_32_reg_map[] =
/* Classifies the kind of instructions we're interested in when
implementing -mfix-vr4120. */
-enum fix_vr4120_class {
+enum fix_vr4120_class
+{
FIX_VR4120_MACC,
FIX_VR4120_DMACC,
FIX_VR4120_MULT,
@@ -761,6 +763,15 @@ enum fix_vr4120_class {
NUM_FIX_VR4120_CLASSES
};
+/* ...likewise -mfix-loongson2f-jump. */
+static bfd_boolean mips_fix_loongson2f_jump;
+
+/* ...likewise -mfix-loongson2f-nop. */
+static bfd_boolean mips_fix_loongson2f_nop;
+
+/* True if -mfix-loongson2f-nop or -mfix-loongson2f-jump passed. */
+static bfd_boolean mips_fix_loongson2f;
+
/* Given two FIX_VR4120_* values X and Y, bit Y of element X is set if
there must be at least one other instruction between an instruction
of type X and an instruction of type Y. */
@@ -1048,8 +1059,9 @@ static struct {
enum mips_regclass { MIPS_GR_REG, MIPS_FP_REG, MIPS16_REG };
static void append_insn
- (struct mips_cl_insn *ip, expressionS *p, bfd_reloc_code_real_type *r);
+ (struct mips_cl_insn *, expressionS *, bfd_reloc_code_real_type *);
static void mips_no_prev_insn (void);
+static void macro_build (expressionS *, const char *, const char *, ...);
static void mips16_macro_build
(expressionS *, const char *, const char *, va_list);
static void load_register (int, expressionS *, int);
@@ -1918,6 +1930,8 @@ md_begin (void)
if (nop_insn.insn_mo == NULL && strcmp (name, "nop") == 0)
{
create_insn (&nop_insn, mips_opcodes + i);
+ if (mips_fix_loongson2f_nop)
+ nop_insn.insn_opcode = LOONGSON2F_NOP_INSN;
nop_insn.fixed_p = 1;
}
}
@@ -2731,6 +2745,54 @@ nops_for_insn_or_target (const struct mips_cl_insn *hist,
return nops;
}
+/* Fix NOP issue: Replace nops by "or at,at,zero". */
+
+static void
+fix_loongson2f_nop (struct mips_cl_insn * ip)
+{
+ if (strcmp (ip->insn_mo->name, "nop") == 0)
+ ip->insn_opcode = LOONGSON2F_NOP_INSN;
+}
+
+/* Fix Jump Issue: Eliminate instruction fetch from outside 256M region
+ jr target pc &= 'hffff_ffff_cfff_ffff. */
+
+static void
+fix_loongson2f_jump (struct mips_cl_insn * ip)
+{
+ if (strcmp (ip->insn_mo->name, "j") == 0
+ || strcmp (ip->insn_mo->name, "jr") == 0
+ || strcmp (ip->insn_mo->name, "jalr") == 0)
+ {
+ int sreg;
+ expressionS ep;
+
+ if (! mips_opts.at)
+ return;
+
+ sreg = EXTRACT_OPERAND (RS, *ip);
+ if (sreg == ZERO || sreg == KT0 || sreg == KT1 || sreg == ATREG)
+ return;
+
+ ep.X_op = O_constant;
+ ep.X_add_number = 0xcfff0000;
+ macro_build (&ep, "lui", "t,u", ATREG, BFD_RELOC_HI16);
+ ep.X_add_number = 0xffff;
+ macro_build (&ep, "ori", "t,r,i", ATREG, ATREG, BFD_RELOC_LO16);
+ macro_build (NULL, "and", "d,v,t", sreg, sreg, ATREG);
+ }
+}
+
+static void
+fix_loongson2f (struct mips_cl_insn * ip)
+{
+ if (mips_fix_loongson2f_nop)
+ fix_loongson2f_nop (ip);
+
+ if (mips_fix_loongson2f_jump)
+ fix_loongson2f_jump (ip);
+}
+
/* Output an instruction. IP is the instruction information.
ADDRESS_EXPR is an operand of the instruction to be used with
RELOC_TYPE. */
@@ -2744,6 +2806,9 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
bfd_boolean relaxed_branch = FALSE;
segment_info_type *si = seg_info (now_seg);
+ if (mips_fix_loongson2f)
+ fix_loongson2f (ip);
+
/* Mark instruction labels in mips16 mode. */
mips16_mark_labels ();
@@ -11216,6 +11281,10 @@ enum options
OPTION_MNO_7000_HILO_FIX,
OPTION_FIX_24K,
OPTION_NO_FIX_24K,
+ OPTION_FIX_LOONGSON2F_JUMP,
+ OPTION_NO_FIX_LOONGSON2F_JUMP,
+ OPTION_FIX_LOONGSON2F_NOP,
+ OPTION_NO_FIX_LOONGSON2F_NOP,
OPTION_FIX_VR4120,
OPTION_NO_FIX_VR4120,
OPTION_FIX_VR4130,
@@ -11304,6 +11373,10 @@ struct option md_longopts[] =
{"mfix7000", no_argument, NULL, OPTION_M7000_HILO_FIX},
{"no-fix-7000", no_argument, NULL, OPTION_MNO_7000_HILO_FIX},
{"mno-fix7000", no_argument, NULL, OPTION_MNO_7000_HILO_FIX},
+ {"mfix-loongson2f-jump", no_argument, NULL, OPTION_FIX_LOONGSON2F_JUMP},
+ {"mno-fix-loongson2f-jump", no_argument, NULL, OPTION_NO_FIX_LOONGSON2F_JUMP},
+ {"mfix-loongson2f-nop", no_argument, NULL, OPTION_FIX_LOONGSON2F_NOP},
+ {"mno-fix-loongson2f-nop", no_argument, NULL, OPTION_NO_FIX_LOONGSON2F_NOP},
{"mfix-vr4120", no_argument, NULL, OPTION_FIX_VR4120},
{"mno-fix-vr4120", no_argument, NULL, OPTION_NO_FIX_VR4120},
{"mfix-vr4130", no_argument, NULL, OPTION_FIX_VR4130},
@@ -11571,6 +11644,22 @@ md_parse_option (int c, char *arg)
mips_fix_24k = 0;
break;
+ case OPTION_FIX_LOONGSON2F_JUMP:
+ mips_fix_loongson2f_jump = TRUE;
+ break;
+
+ case OPTION_NO_FIX_LOONGSON2F_JUMP:
+ mips_fix_loongson2f_jump = FALSE;
+ break;
+
+ case OPTION_FIX_LOONGSON2F_NOP:
+ mips_fix_loongson2f_nop = TRUE;
+ break;
+
+ case OPTION_NO_FIX_LOONGSON2F_NOP:
+ mips_fix_loongson2f_nop = FALSE;
+ break;
+
case OPTION_FIX_VR4120:
mips_fix_vr4120 = 1;
break;
@@ -11785,6 +11874,8 @@ md_parse_option (int c, char *arg)
return 0;
}
+ mips_fix_loongson2f = mips_fix_loongson2f_nop || mips_fix_loongson2f_jump;
+
return 1;
}
@@ -14790,6 +14881,8 @@ void
mips_handle_align (fragS *fragp)
{
char *p;
+ int bytes, size, excess;
+ valueT opcode;
if (fragp->fr_type != rs_align_code)
return;
@@ -14797,17 +14890,28 @@ mips_handle_align (fragS *fragp)
p = fragp->fr_literal + fragp->fr_fix;
if (*p)
{
- int bytes;
+ opcode = mips16_nop_insn.insn_opcode;
+ size = 2;
+ }
+ else
+ {
+ opcode = nop_insn.insn_opcode;
+ size = 4;
+ }
- bytes = fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix;
- if (bytes & 1)
- {
- *p++ = 0;
- fragp->fr_fix++;
- }
- md_number_to_chars (p, mips16_nop_insn.insn_opcode, 2);
- fragp->fr_var = 2;
+ bytes = fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix;
+ excess = bytes % size;
+ if (excess != 0)
+ {
+ /* If we're not inserting a whole number of instructions,
+ pad the end of the fixed part of the frag with zeros. */
+ memset (p, 0, excess);
+ p += excess;
+ fragp->fr_fix += excess;
}
+
+ md_number_to_chars (p, opcode, size);
+ fragp->fr_var = size;
}
static void
@@ -15519,6 +15623,8 @@ MIPS options:\n\
-mmt generate MT instructions\n\
-mno-mt do not generate MT instructions\n"));
fprintf (stream, _("\
+-mfix-loongson2f-jump work around Loongson2F JUMP instructions\n\
+-mfix-loongson2f-nop work around Loongson2F NOP errata\n\
-mfix-vr4120 work around certain VR4120 errata\n\
-mfix-vr4130 work around VR4130 mflo/mfhi errata\n\
-mfix-24k insert a nop after ERET and DERET instructions\n\
diff --git a/gas/config/tc-mips.h b/gas/config/tc-mips.h
index 4bdf807..502fa8e 100644
--- a/gas/config/tc-mips.h
+++ b/gas/config/tc-mips.h
@@ -1,6 +1,6 @@
/* tc-mips.h -- header file for tc-mips.c.
Copyright 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by the OSF and Ralph Campbell.
Written by Keith Knowles and Ralph Campbell, working independently.
Modified for ECOFF support by Ian Lance Taylor of Cygnus Support.
@@ -59,7 +59,7 @@ extern char mips_nop_opcode (void);
extern void mips_handle_align (struct frag *);
#define HANDLE_ALIGN(fragp) mips_handle_align (fragp)
-#define MAX_MEM_FOR_RS_ALIGN_CODE (1 + 2)
+#define MAX_MEM_FOR_RS_ALIGN_CODE (3 + 4)
struct insn_label_list;
struct mips_segment_info {
diff --git a/gas/doc/c-mips.texi b/gas/doc/c-mips.texi
index 34fa694..641e60f 100644
--- a/gas/doc/c-mips.texi
+++ b/gas/doc/c-mips.texi
@@ -1,5 +1,5 @@
@c Copyright 1991, 1992, 1993, 1994, 1995, 1997, 1999, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
@c Free Software Foundation, Inc.
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.
@@ -78,7 +78,7 @@ VxWorks-style position-independent macro expansions.
@itemx -mips2
@itemx -mips3
@itemx -mips4
-@itemx -mips5
+@itemx -mips5xo
@itemx -mips32
@itemx -mips32r2
@itemx -mips64
@@ -172,6 +172,20 @@ This tells the assembler to accept MT instructions.
Cause nops to be inserted if the read of the destination register
of an mfhi or mflo instruction occurs in the following two instructions.
+@item -mfix-loongson2f-jump
+@itemx -mno-fix-loongson2f-jump
+Eliminate instruction fetch from outside 256M region to work around the
+Loongson2F @samp{jump} instructions. Without it, under extreme cases,
+the kernel may crash. The issue has been solved in latest processor
+batches, but this fix has no side effect to them.
+
+@item -mfix-loongson2f-nop
+@itemx -mno-fix-loongson2f-nop
+Replace nops by @code{or at,at,zero} to work around the Loongson2F
+@samp{nop} errata. Without it, under extreme cases, cpu might
+deadlock. The issue has been solved in latest loongson2f batches, but
+this fix has no side effect to them.
+
@item -mfix-vr4120
@itemx -mno-fix-vr4120
Insert nops to work around certain VR4120 errata. This option is
diff --git a/gas/testsuite/gas/mips/loongson-2f-2.d b/gas/testsuite/gas/mips/loongson-2f-2.d
new file mode 100644
index 0000000..f5267a8
--- /dev/null
+++ b/gas/testsuite/gas/mips/loongson-2f-2.d
@@ -0,0 +1,18 @@
+#as: -mfix-loongson2f-nop
+#objdump: -M reg-names=numeric -dr
+#name: ST Microelectronics Loongson-2F workarounds of nop issue
+
+.*: file format .*
+
+
+Disassembly of section .text:
+
+00000000 <loongson2f_nop_insn>:
+ 0: 00200825 move \$1,\$1
+ 4: 00200825 move \$1,\$1
+ 8: 00200825 move \$1,\$1
+ c: 00200825 move \$1,\$1
+ 10: 00200825 move \$1,\$1
+ 14: 00200825 move \$1,\$1
+ 18: 00200825 move \$1,\$1
+ 1c: 00200825 move \$1,\$1
diff --git a/gas/testsuite/gas/mips/loongson-2f-2.s b/gas/testsuite/gas/mips/loongson-2f-2.s
new file mode 100644
index 0000000..842e157
--- /dev/null
+++ b/gas/testsuite/gas/mips/loongson-2f-2.s
@@ -0,0 +1,10 @@
+# Test the work around of the NOP issue of loongson2F
+ .text
+ .set noreorder
+
+ .align 5 # Test _implicit_ nops
+loongson2f_nop_insn:
+ nop # Test _explicit_ nops
+
+# align section end to 16-byte boundary for easier testing on multiple targets
+ .p2align 4
diff --git a/gas/testsuite/gas/mips/loongson-2f-3.d b/gas/testsuite/gas/mips/loongson-2f-3.d
new file mode 100644
index 0000000..99844d3
--- /dev/null
+++ b/gas/testsuite/gas/mips/loongson-2f-3.d
@@ -0,0 +1,35 @@
+#as: -mfix-loongson2f-jump
+#objdump: -M reg-names=numeric -dr
+#name: ST Microelectronics Loongson-2F workarounds of Jump Instruction issue
+
+.*: file format .*
+
+
+Disassembly of section .text:
+
+00000000 <.text>:
+ 0: 3c01cfff lui \$1,0xcfff
+ 4: 3421ffff ori \$1,\$1,0xffff
+ 8: 03c1f024 and \$30,\$30,\$1
+ c: 03c00008 jr \$30
+ 10: 00000000 nop
+
+ 14: 3c01cfff lui \$1,0xcfff
+ 18: 3421ffff ori \$1,\$1,0xffff
+ 1c: 03e1f824 and \$31,\$31,\$1
+ 20: 03e00008 jr \$31
+ 24: 00000000 nop
+
+ 28: 3c01cfff lui \$1,0xcfff
+ 2c: 3421ffff ori \$1,\$1,0xffff
+ 30: 03c1f024 and \$30,\$30,\$1
+ 34: 03c0f809 jalr \$30
+ 38: 00000000 nop
+
+ 3c: 00200008 jr \$1
+ 40: 00000000 nop
+
+ 44: 08000000 j 0x0
+ 44: R_MIPS_26 external_label
+ 48: 00000000 nop
+ 4c: 00000000 nop
diff --git a/gas/testsuite/gas/mips/loongson-2f-3.s b/gas/testsuite/gas/mips/loongson-2f-3.s
new file mode 100644
index 0000000..cbb73de
--- /dev/null
+++ b/gas/testsuite/gas/mips/loongson-2f-3.s
@@ -0,0 +1,23 @@
+# Test the work around of the Jump instruction Issue of Loongson2F
+ .text
+ .set noreorder
+
+ j $30 # j with register
+ nop
+
+ jr $31 # jr
+ nop
+
+ jalr $30 # jalr
+ nop
+
+ .set noat
+ jr $1 # jr with at register and .set annotation
+ nop
+ .set at
+
+ j external_label # j with label
+ nop
+
+# align section end to 16-byte boundary for easier testing on multiple targets
+ .p2align 4
diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp
index 14ce5cc..34bb5ea 100644
--- a/gas/testsuite/gas/mips/mips.exp
+++ b/gas/testsuite/gas/mips/mips.exp
@@ -789,6 +789,8 @@ if { [istarget mips*-*-vxworks*] } {
run_dump_test "loongson-2e"
run_dump_test "loongson-2f"
+ run_dump_test "loongson-2f-2"
+ run_dump_test "loongson-2f-3"
run_dump_test_arches "octeon" [mips_arch_list_matching octeon]
run_list_test_arches "octeon-ill" "" \
diff --git a/include/opcode/mips.h b/include/opcode/mips.h
index 27d10e6..d6b3cf4 100644
--- a/include/opcode/mips.h
+++ b/include/opcode/mips.h
@@ -1,6 +1,6 @@
/* mips.h. Mips opcode list for GDB, the GNU debugger.
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2008, 2009
+ 2003, 2004, 2005, 2008, 2009, 2010
Free Software Foundation, Inc.
Contributed by Ralph Campbell and OSF
Commented and modified by Ian Lance Taylor, Cygnus Support
@@ -1106,4 +1106,8 @@ extern int bfd_mips_num_opcodes;
extern const struct mips_opcode mips16_opcodes[];
extern const int bfd_mips16_num_opcodes;
+/* A NOP insn impemented as "or at,at,zero".
+ Used to implement -mfix-loongson2f. */
+#define LOONGSON2F_NOP_INSN 0x00200825
+
#endif /* _MIPS_H_ */
--
1.6.5.GIT

View File

@ -0,0 +1,59 @@
{stdenv, fetchurl, noSysDirs, cross ? null}:
let
basename = "binutils-2.20.51";
in
stdenv.mkDerivation rec {
name = basename + stdenv.lib.optionalString (cross != null) "-${cross.config}";
src = fetchurl {
url = http://nixos.org/tarballs/binutils-2.20.51-pre-20100901.tar.bz2;
sha256 = "1872fdnbnq5z5svq7mvc0vyyad8pknwvx2glxq1bbk0xv7arp72y";
};
patches = [
# Turn on --enable-new-dtags by default to make the linker set
# RUNPATH instead of RPATH on binaries. This is important because
# RUNPATH can be overriden using LD_LIBRARY_PATH at runtime.
./new-dtags.patch
];
inherit noSysDirs;
preConfigure = ''
# Clear the default library search path.
if test "$noSysDirs" = "1"; then
echo 'NATIVE_LIB_DIRS=' >> ld/configure.tgt
fi
# Use symlinks instead of hard links to save space ("strip" in the
# fixup phase strips each hard link separately).
for i in binutils/Makefile.in gas/Makefile.in ld/Makefile.in; do
substituteInPlace $i --replace 'ln ' 'ln -s '
done
'';
configureFlags = "--disable-werror" # needed for dietlibc build
+ stdenv.lib.optionalString (stdenv.system == "mips64-linux")
" --enable-fix-loongson2f-nop"
+ stdenv.lib.optionalString (cross != null) " --target=${cross.config}";
meta = {
description = "GNU Binutils, tools for manipulating binaries (linker, assembler, etc.)";
longDescription = ''
The GNU Binutils are a collection of binary tools. The main
ones are `ld' (the GNU linker) and `as' (the GNU assembler).
They also include the BFD (Binary File Descriptor) library,
`gprof', `nm', `strip', etc.
'';
homepage = http://www.gnu.org/software/binutils/;
license = "GPLv3+";
/* Give binutils a lower priority than gcc-wrapper to prevent a
collision due to the ld/as wrappers/symlinks in the latter. */
priority = "10";
};
}

View File

@ -1,16 +0,0 @@
diff --git a/bfd/configure.in b/bfd/configure.in
index 0a8d486..a3cc89a 100644
--- a/bfd/configure.in
+++ b/bfd/configure.in
@@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c])
AC_CANONICAL_TARGET
AC_ISC_POSIX
-AM_INIT_AUTOMAKE(bfd, 2.20.1)
+AM_INIT_AUTOMAKE(bfd, 2.20.51)
dnl These must be called before LT_INIT, because it may want
dnl to call AC_CHECK_PROG.
--
1.6.5.GIT

View File

@ -2291,10 +2291,17 @@ let
avrdude = callPackage ../development/tools/misc/avrdude { };
binutils = callPackage ../development/tools/misc/binutils {
binutils_release = callPackage ../development/tools/misc/binutils {
inherit noSysDirs;
};
binutils_snapshot = callPackage ../development/tools/misc/binutils/snapshot.nix {
inherit noSysDirs;
};
# We are waiting for a release. Meanwhile, sysvinit and the loongson2f need it.
binutils = binutils_snapshot;
binutilsCross = forceBuildDrv (import ../development/tools/misc/binutils {
inherit stdenv fetchurl;
noSysDirs = true;