anchor.diff:  assert nativeTools -> nativePrefix != "";
   assert !nativeTools ->
     cc != null && binutils != null && coreutils != null && gnugrep != null;
  -assert !nativeLibc -> libc != null;
  +assert !(nativeLibc && noLibc);
  +assert (noLibc || nativeLibc) == (libc == null);
   
   # For ghdl (the vhdl language provider to gcc) we need zlib in the wrapper.
   assert cc.langVhdl or false -> zlib != null;
  
positive.code:   ccVersion = (builtins.parseDrvName cc.name).version;
    ccName = (builtins.parseDrvName cc.name).name;
  
    libc_bin = if nativeLibc then null else getBin libc;
    libc_dev = if nativeLibc then null else getDev libc;
    libc_lib = if nativeLibc then null else getLib libc;
    cc_solib = getLib cc;
    binutils_bin = if nativeTools then "" else getBin binutils;
    # The wrapper scripts use 'cat' and 'grep', so we may need coreutils.
  
negative.code: # script that sets up the right environment variables so that the
  # compiler and the linker just "work".
  
  { name ? "", stdenv, nativeTools, noLibc ? false, nativeLibc, nativePrefix ? ""
  , cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell
  , zlib ? null, extraPackages ? [], extraBuildCommands ? ""
  , dyld ? null # TODO: should this be a setup-hook on dyld?
  