anchor.diff:    isGNU =
         stdenv.system == "i686-gnu"
         || (stdenv ? cross && stdenv.cross.config == "i586-pc-gnu");
  +
   in
   
   assert isGNU -> mig != null && hurd != null;
  
positive.code:   name = basename + stdenv.lib.optionalString (target != null)
        ("-" + target.config);
  
    src =
      if bleedingEdgeVersion
      then fetchgit {
          url = "git://sourceware.org/git/gdb.git";
          rev = "refs/tags/gdb_7_3-2011-07-26-release";
        }
      else fetchurl {
          url = "mirror://gnu/gdb/${basename}.tar.bz2";
          # md5 is provided by the annoucement page
          # http://www.gnu.org/s/gdb/download/ANNOUNCEMENT
          md5 = "8854d34691087ec127d934692639855f";
        };
  
    # I think python is not a native input, but I leave it
    # here while I will not need it cross building
    buildNativeInputs = [ texinfo python ]
      ++ stdenv.lib.optional isGNU mig
      ++ stdenv.lib.optionals bleedingEdgeVersion [ flex bison ];
  
    buildInputs = [ ncurses readline gmp mpfr expat ]
      ++ stdenv.lib.optional isGNU hurd
      ++ stdenv.lib.optional doCheck dejagnu;
  
    configureFlags = with stdenv.lib;
      '' --with-gmp=${gmp} --with-mpfr=${mpfr} --with-system-readline
         --with-expat --with-libexpat-prefix=${expat}
      ''
      + optionalString (target != null) " --target=${target.config}"
      + optionalString (elem stdenv.system platforms.cygwin) "  --without-python"
    ;
  
    crossAttrs = {
      # Do not add --with-python here to avoid cross building it.
  
negative.code: { fetchurl, fetchgit, stdenv, ncurses, readline, gmp, mpfr, expat, texinfo
  , dejagnu, python, target ? null
  
  # Additional dependencies for GNU/Hurd.
  , mig ? null, hurd ? null
  
  }:
  
  let
  
    basename = "gdb-7.4.1";
  
    # Whether (cross-)building for GNU/Hurd.  This is an approximation since
    # having `stdenv ? cross' doesn't tell us if we're building `hostDrv' and
  