about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/compilers/gcc
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-08-23 10:09:14 +0000
committerAlyssa Ross <hi@alyssa.is>2023-08-26 09:07:03 +0000
commit63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f (patch)
treed58934cb48f9c953b19a0d0d5cffc0d0c5561471 /nixpkgs/pkgs/development/compilers/gcc
parentc4eef3dacb2a3d359561f30917d9e3cc4e041be9 (diff)
parent91a22f76cd1716f9d0149e8a5c68424bb691de15 (diff)
downloadnixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.gz
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.bz2
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.lz
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.xz
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.zst
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.zip
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts:
	nixpkgs/pkgs/build-support/go/module.nix
	nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/gcc')
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/10/default.nix299
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/11/default.nix313
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/11/fix-struct-redefinition-on-glibc-2.36.patch41
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/12/default.nix359
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/13/default.nix353
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/4.8/default.nix327
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/4.9/default.nix354
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/6/default.nix372
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/7/default.nix306
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/8/default.nix281
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/9/default.nix296
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/builder.sh290
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/common/builder.nix284
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix37
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/common/libgcc.nix14
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix49
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/default.nix457
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/10/Added-mcf-thread-model-support-from-mcfgthread.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/10/Added-mcf-thread-model-support-from-mcfgthread.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/11/Added-mcf-thread-model-support-from-mcfgthread.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/11/Added-mcf-thread-model-support-from-mcfgthread.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/11/avr-gcc-11.3-darwin.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/11/avr-gcc-11.3-darwin.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/11/gcc-issue-103910.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/11/gcc-issue-103910.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/12/Added-mcf-thread-model-support-from-mcfgthread.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/12/Added-mcf-thread-model-support-from-mcfgthread.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/12/lambda-ICE-PR109241.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/12/lambda-ICE-PR109241.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/13/no-sys-dirs-riscv.patch13
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/4.9/libsanitizer.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/4.9/libsanitizer.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/4.9/parallel-strsignal.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/4.9/parallel-strsignal.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/6/0001-Fix-build-for-glibc-2.31.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/6/0001-Fix-build-for-glibc-2.31.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/6/Added-mcf-thread-model-support-from-mcfgthread.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/6/Added-mcf-thread-model-support-from-mcfgthread.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/6/fix-objdump-check.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/6/fix-objdump-check.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/6/gnat-glibc234.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/6/gnat-glibc234.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/6/gogcc-workaround-glibc-2.36.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/6/gogcc-workaround-glibc-2.36.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/7/0001-Fix-build-for-glibc-2.31.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/7/0001-Fix-build-for-glibc-2.31.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/7/Added-mcf-thread-model-support-from-mcfgthread.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/7/Added-mcf-thread-model-support-from-mcfgthread.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/7/gcc8-asan-glibc-2.34.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/7/gcc8-asan-glibc-2.34.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/7/riscv-no-relax.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/7/riscv-no-relax.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/7/riscv-pthread-reentrant.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/7/riscv-pthread-reentrant.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/8/Added-mcf-thread-model-support-from-mcfgthread.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/8/Added-mcf-thread-model-support-from-mcfgthread.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/9/Added-mcf-thread-model-support-from-mcfgthread.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/9/Added-mcf-thread-model-support-from-mcfgthread.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/9/avoid-cycling-subreg-reloads.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/9/avoid-cycling-subreg-reloads.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/9/fix-struct-redefinition-on-glibc-2.36.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/9/fix-struct-redefinition-on-glibc-2.36.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/9/gcc9-asan-glibc-2.34.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/9/gcc9-asan-glibc-2.34.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/ada-cctools-as-detection-configure.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/ada-cctools-as-detection-configure.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/default.nix245
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/fix-bug-80431.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/fix-bug-80431.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/gcc-12-gfortran-driving.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/gcc-12-gfortran-driving.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/gcc-12-no-sys-dirs.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/gcc-12-no-sys-dirs.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/gfortran-darwin-NXConstStr.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/gfortran-darwin-NXConstStr.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/gfortran-driving.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/gfortran-driving.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/gnat-cflags-11.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/gnat-cflags-11.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/gnat-cflags.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/gnat-cflags.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/gnat-darwin-dylib-install-name.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/gnat-darwin-dylib-install-name.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/libgomp-dont-force-initial-exec.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/libgomp-dont-force-initial-exec.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/libphobos.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/libphobos.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/libsanitizer-no-cyclades-9.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/libsanitizer-no-cyclades-9.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/libsanitizer-no-cyclades.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/libsanitizer-no-cyclades.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/libstdc++-netbsd-ctypes.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/libstdc++-netbsd-ctypes.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/libstdc++-target.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/libstdc++-target.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv-gcc9.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs-riscv-gcc9.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs-riscv.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/parallel-bconfig.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/parallel-bconfig.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/ppc-musl.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/ppc-musl.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/res_state-not-declared.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/res_state-not-declared.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/sigsegv-not-declared.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/sigsegv-not-declared.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/struct-sigaltstack-4.9.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/struct-sigaltstack-4.9.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/struct-sigaltstack.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/struct-sigaltstack.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-4.5.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-4.5.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-4.8.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-4.8.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-libjava.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-libjava.patch)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/struct-ucontext.patch)0
-rwxr-xr-xnixpkgs/pkgs/development/compilers/gcc/patches/update-mcfgthread-patches.sh (renamed from nixpkgs/pkgs/development/compilers/gcc/update-mcfgthread-patches.sh)0
-rw-r--r--nixpkgs/pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch (renamed from nixpkgs/pkgs/development/compilers/gcc/use-source-date-epoch.patch)0
72 files changed, 1044 insertions, 3646 deletions
diff --git a/nixpkgs/pkgs/development/compilers/gcc/10/default.nix b/nixpkgs/pkgs/development/compilers/gcc/10/default.nix
deleted file mode 100644
index c61093c67c03..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/10/default.nix
+++ /dev/null
@@ -1,299 +0,0 @@
-{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs
-, langC ? true, langCC ? true, langFortran ? false
-, langAda ? false
-, langObjC ? stdenv.targetPlatform.isDarwin
-, langObjCpp ? stdenv.targetPlatform.isDarwin
-, langD ? false
-, langGo ? false
-, reproducibleBuild ? true
-, profiledCompiler ? false
-, langJit ? false
-, staticCompiler ? false
-, enableShared ? stdenv.targetPlatform.hasSharedLibraries
-, enableLTO ? stdenv.hostPlatform.hasSharedLibraries
-, texinfo ? null
-, perl ? null # optional, for texi2pod (then pod2man)
-, gmp, mpfr, libmpc, gettext, which, patchelf, binutils
-, isl ? null # optional, for the Graphite optimization framework.
-, zlib ? null
-, gnat-bootstrap ? null
-, enableMultilib ? false
-, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins
-, name ? "gcc"
-, libcCross ? null
-, threadsCross ? null # for MinGW
-, withoutTargetLibc ? false
-, gnused ? null
-, cloog ? null # unused; just for compat with gcc4, as we override the parameter on some places
-, buildPackages
-, libxcrypt
-, callPackage
-}:
-
-# Make sure we get GNU sed.
-assert stdenv.buildPlatform.isDarwin -> gnused != null;
-
-# The go frontend is written in c++
-assert langGo -> langCC;
-assert langAda -> gnat-bootstrap != null;
-
-# threadsCross is just for MinGW
-assert threadsCross != {} -> stdenv.targetPlatform.isWindows;
-
-# profiledCompiler builds inject non-determinism in one of the compilation stages.
-# If turned on, we can't provide reproducible builds anymore
-assert reproducibleBuild -> profiledCompiler == false;
-
-with lib;
-with builtins;
-
-let majorVersion = "10";
-    version = "${majorVersion}.4.0";
-
-    inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-    patches = [
-      # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431
-      ../fix-bug-80431.patch
-      ../11/fix-struct-redefinition-on-glibc-2.36.patch
-    ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
-      ++ optional noSysDirs ../no-sys-dirs.patch
-      ++ optional (noSysDirs && hostPlatform.isRiscV) ../no-sys-dirs-riscv.patch
-      /* ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied
-        url = "https://git.busybox.net/buildroot/plain/package/gcc/${version}/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02";
-        sha256 = ""; # TODO: uncomment and check hash when available.
-      }) */
-      ++ optional langAda ../gnat-cflags.patch
-      ++ optional langD ../libphobos.patch
-      ++ optional langFortran ../gfortran-driving.patch
-      ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch
-
-      # Obtain latest patch with ../update-mcfgthread-patches.sh
-      ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch
-
-      ++ optional (buildPlatform.system == "aarch64-darwin" && targetPlatform != buildPlatform) (fetchpatch {
-        url = "https://raw.githubusercontent.com/richard-vd/musl-cross-make/5e9e87f06fc3220e102c29d3413fbbffa456fcd6/patches/gcc-${version}/0008-darwin-aarch64-self-host-driver.patch";
-        sha256 = "sha256-XtykrPd5h/tsnjY1wGjzSOJ+AyyNLsfnjuOZ5Ryq9vA=";
-      });
-
-    /* Cross-gcc settings (build == host != target) */
-    crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
-    stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final";
-    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
-
-    callFile = lib.callPackageWith {
-      # lets
-      inherit
-        majorVersion
-        version
-        buildPlatform
-        hostPlatform
-        targetPlatform
-        patches
-        crossMingw
-        stageNameAddon
-        crossNameAddon
-      ;
-      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc10.cc.override)" | jq '.[]' --raw-output'
-      inherit
-        binutils
-        buildPackages
-        cloog
-        withoutTargetLibc
-        enableLTO
-        enableMultilib
-        enablePlugin
-        enableShared
-        fetchpatch
-        fetchurl
-        gettext
-        gmp
-        gnat-bootstrap
-        gnused
-        isl
-        langAda
-        langC
-        langCC
-        langD
-        langFortran
-        langGo
-        langJit
-        langObjC
-        langObjCpp
-        lib
-        libcCross
-        libmpc
-        libxcrypt
-        mpfr
-        name
-        noSysDirs
-        patchelf
-        perl
-        profiledCompiler
-        reproducibleBuild
-        staticCompiler
-        stdenv
-        targetPackages
-        texinfo
-        threadsCross
-        which
-        zip
-        zlib
-      ;
-    };
-
-in
-
-lib.pipe (stdenv.mkDerivation ({
-  pname = "${crossNameAddon}${name}";
-  inherit version;
-
-  builder = ../builder.sh;
-
-  src = fetchurl {
-    url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz";
-    sha256 = "1wg4xdizkksmwi66mvv2v4pk3ja8x64m7v9gzhykzd3wrmdpsaf9";
-  };
-
-  inherit patches;
-
-  outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib";
-  setOutputFlags = false;
-  NIX_NO_SELF_RPATH = true;
-
-  libc_dev = stdenv.cc.libc_dev;
-
-  hardeningDisable = [ "format" "pie" ];
-
-  postPatch = ''
-    configureScripts=$(find . -name configure)
-    for configureScript in $configureScripts; do
-      patchShebangs $configureScript
-    done
-  ''
-  # This should kill all the stdinc frameworks that gcc and friends like to
-  # insert into default search paths.
-  + lib.optionalString hostPlatform.isDarwin ''
-    substituteInPlace gcc/config/darwin-c.c \
-      --replace 'if (stdinc)' 'if (0)'
-
-    substituteInPlace libgcc/config/t-slibgcc-darwin \
-      --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
-
-    substituteInPlace libgfortran/configure \
-      --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
-  ''
-  + (
-    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
-      # On NixOS, use the right path to the dynamic linker instead of
-      # `/lib/ld*.so'.
-      (let
-        libc = if libcCross != null then libcCross else stdenv.cc.libc;
-      in
-        (
-        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER', \`UCLIBC_DYNAMIC_LINKER', and \`MUSL_DYNAMIC_LINKER' macros..."
-           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
-           do
-             grep -q _DYNAMIC_LINKER "$header" || continue
-             echo "  fixing \`$header'..."
-             sed -i "$header" \
-                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g' \
-                 -e 's|define[[:blank:]]*MUSL_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define MUSL_DYNAMIC_LINKER\1 "${libc.out}\2"|g'
-           done
-        ''
-        + lib.optionalString (targetPlatform.libc == "musl")
-        ''
-            sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
-        ''
-        ))
-      )
-      + lib.optionalString targetPlatform.isAvr ''
-            makeFlagsArray+=(
-               '-s' # workaround for hitting hydra log limit
-               'LIMITS_H_TEST=false'
-            )
-          '';
-
-  inherit noSysDirs staticCompiler withoutTargetLibc
-    libcCross crossMingw;
-
-  inherit (callFile ../common/dependencies.nix { })
-    depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
-
-  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm";
-
-  preConfigure = (callFile ../common/pre-configure.nix { }) + ''
-    ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h
-  '';
-
-  dontDisableStatic = true;
-
-  configurePlatforms = [ "build" "host" "target" ];
-
-  configureFlags = callFile ../common/configure-flags.nix { };
-
-  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
-
-  buildFlags = optional
-    (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
-    (if profiledCompiler then "profiledbootstrap" else "bootstrap");
-
-  # https://gcc.gnu.org/PR109898
-  enableParallelInstalling = false;
-
-  inherit (callFile ../common/strip-attributes.nix { })
-    stripDebugList
-    stripDebugListTarget
-    preFixup;
-
-  # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
-  ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64";
-
-  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
-  # library headers and binaries, regarless of the language being compiled.
-  #
-  # Likewise, the LTO code doesn't find zlib.
-  #
-  # Cross-compiling, we need gcc not to read ./specs in order to build the g++
-  # compiler (after the specs for the cross-gcc are created). Having
-  # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
-
-  CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
-    ++ optional (zlib != null) zlib
-  ));
-
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
-
-  inherit (callFile ../common/extra-target-flags.nix { })
-    EXTRA_FLAGS_FOR_TARGET
-    EXTRA_LDFLAGS_FOR_TARGET
-    ;
-
-  passthru = {
-    inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version;
-    isGNU = true;
-    hardeningUnsupportedFlags = [ "fortify3" ];
-  };
-
-  enableParallelBuilding = true;
-  inherit enableMultilib enableShared;
-
-  meta = {
-    inherit (callFile ../common/meta.nix { })
-      homepage
-      license
-      description
-      longDescription
-      platforms
-      maintainers
-    ;
-    badPlatforms = [ "aarch64-darwin" ];
-  };
-
-}
-
-// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
-))
-[
-  (callPackage ../common/libgcc.nix   { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; })
-]
diff --git a/nixpkgs/pkgs/development/compilers/gcc/11/default.nix b/nixpkgs/pkgs/development/compilers/gcc/11/default.nix
deleted file mode 100644
index 92abdebe49b3..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/11/default.nix
+++ /dev/null
@@ -1,313 +0,0 @@
-{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs
-, langC ? true, langCC ? true, langFortran ? false
-, langAda ? false
-, langObjC ? stdenv.targetPlatform.isDarwin
-, langObjCpp ? stdenv.targetPlatform.isDarwin
-, langD ? false
-, langGo ? false
-, reproducibleBuild ? true
-, profiledCompiler ? false
-, langJit ? false
-, staticCompiler ? false
-, enableShared ? stdenv.targetPlatform.hasSharedLibraries
-, enableLTO ? stdenv.hostPlatform.hasSharedLibraries
-, texinfo ? null
-, perl ? null # optional, for texi2pod (then pod2man)
-, gmp, mpfr, libmpc, gettext, which, patchelf, binutils
-, isl ? null # optional, for the Graphite optimization framework.
-, zlib ? null
-, gnat-bootstrap ? null
-, enableMultilib ? false
-, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins
-, name ? "gcc"
-, libcCross ? null
-, threadsCross ? null # for MinGW
-, withoutTargetLibc ? false
-, gnused ? null
-, cloog # unused; just for compat with gcc4, as we override the parameter on some places
-, buildPackages
-, libxcrypt
-, disableGdbPlugin ? !enablePlugin
-, nukeReferences
-, callPackage
-}:
-
-# Make sure we get GNU sed.
-assert stdenv.buildPlatform.isDarwin -> gnused != null;
-
-# The go frontend is written in c++
-assert langGo -> langCC;
-assert langAda -> gnat-bootstrap != null;
-
-# threadsCross is just for MinGW
-assert threadsCross != {} -> stdenv.targetPlatform.isWindows;
-
-# profiledCompiler builds inject non-determinism in one of the compilation stages.
-# If turned on, we can't provide reproducible builds anymore
-assert reproducibleBuild -> profiledCompiler == false;
-
-with lib;
-with builtins;
-
-let majorVersion = "11";
-    version = "${majorVersion}.4.0";
-    disableBootstrap = !stdenv.hostPlatform.isDarwin;
-
-    inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-    patches = [
-      # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431
-      ../fix-bug-80431.patch
-    ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
-      ++ optional noSysDirs ../no-sys-dirs.patch
-      ++ optional (noSysDirs && hostPlatform.isRiscV) ../no-sys-dirs-riscv.patch
-      /* ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied
-        url = "https://git.busybox.net/buildroot/plain/package/gcc/${version}/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02";
-        sha256 = ""; # TODO: uncomment and check hash when available.
-      }) */
-      ++ optional langAda ../gnat-cflags-11.patch
-      ++ optional langD ../libphobos.patch
-      ++ optional langFortran ../gfortran-driving.patch
-      ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch
-
-      ++ optionals stdenv.isDarwin [
-        (fetchpatch {
-          # There are no upstream release tags in https://github.com/iains/gcc-11-branch.
-          # ff4bf32 is the commit from https://github.com/gcc-mirror/gcc/releases/tag/releases%2Fgcc-11.4.0
-          url = "https://github.com/iains/gcc-11-branch/compare/ff4bf326d03e750a8d4905ea49425fe7d15a04b8..gcc-11.4-darwin-r0.diff";
-          hash = "sha256-6prPgR2eGVJs7vKd6iM1eZsEPCD1ShzLns2Z+29vlt4=";
-        })
-      ]
-      # https://github.com/osx-cross/homebrew-avr/issues/280#issuecomment-1272381808
-      ++ optional (stdenv.isDarwin && targetPlatform.isAvr) ./avr-gcc-11.3-darwin.patch
-
-      # Obtain latest patch with ../update-mcfgthread-patches.sh
-      ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch
-
-      # openjdk build fails without this on -march=opteron; is upstream in gcc12
-      ++ [ ./gcc-issue-103910.patch ];
-
-    /* Cross-gcc settings (build == host != target) */
-    crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
-    stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final";
-    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
-
-    callFile = lib.callPackageWith {
-      # lets
-      inherit
-        majorVersion
-        version
-        buildPlatform
-        hostPlatform
-        targetPlatform
-        patches
-        crossMingw
-        stageNameAddon
-        crossNameAddon
-      ;
-      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc11.cc.override)" | jq '.[]' --raw-output'
-      inherit
-        binutils
-        buildPackages
-        cloog
-        withoutTargetLibc
-        enableLTO
-        enableMultilib
-        enablePlugin
-        disableGdbPlugin
-        enableShared
-        disableBootstrap
-        fetchpatch
-        fetchurl
-        gettext
-        gmp
-        gnat-bootstrap
-        gnused
-        isl
-        langAda
-        langC
-        langCC
-        langD
-        langFortran
-        langGo
-        langJit
-        langObjC
-        langObjCpp
-        lib
-        libcCross
-        libmpc
-        libxcrypt
-        mpfr
-        name
-        noSysDirs
-        patchelf
-        perl
-        profiledCompiler
-        reproducibleBuild
-        staticCompiler
-        stdenv
-        targetPackages
-        texinfo
-        threadsCross
-        which
-        zip
-        zlib
-      ;
-    };
-
-in
-
-lib.pipe (stdenv.mkDerivation ({
-  pname = "${crossNameAddon}${name}";
-  inherit version;
-
-  builder = ../builder.sh;
-
-  src = fetchurl {
-    url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz";
-    hash = "sha256-Py2yIrAH6KSiPNW6VnJu8I6LHx6yBV7nLBQCzqc6jdk=";
-  };
-
-  inherit patches;
-
-  outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib";
-  setOutputFlags = false;
-  NIX_NO_SELF_RPATH = true;
-
-  libc_dev = stdenv.cc.libc_dev;
-
-  hardeningDisable = [ "format" "pie" ]
-    ++ optional langAda "fortify3";
-
-  postPatch = ''
-    configureScripts=$(find . -name configure)
-    for configureScript in $configureScripts; do
-      patchShebangs $configureScript
-    done
-  ''
-  # This should kill all the stdinc frameworks that gcc and friends like to
-  # insert into default search paths.
-  + lib.optionalString hostPlatform.isDarwin ''
-    substituteInPlace gcc/config/darwin-c.c \
-      --replace 'if (stdinc)' 'if (0)'
-
-    substituteInPlace libgcc/config/t-slibgcc-darwin \
-      --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
-
-    substituteInPlace libgfortran/configure \
-      --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
-  ''
-  + (
-    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
-      # On NixOS, use the right path to the dynamic linker instead of
-      # `/lib/ld*.so'.
-      (let
-        libc = if libcCross != null then libcCross else stdenv.cc.libc;
-      in
-        (
-        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER', \`UCLIBC_DYNAMIC_LINKER', and \`MUSL_DYNAMIC_LINKER' macros..."
-           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
-           do
-             grep -q _DYNAMIC_LINKER "$header" || continue
-             echo "  fixing \`$header'..."
-             sed -i "$header" \
-                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g' \
-                 -e 's|define[[:blank:]]*MUSL_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define MUSL_DYNAMIC_LINKER\1 "${libc.out}\2"|g'
-           done
-        ''
-        + lib.optionalString (targetPlatform.libc == "musl")
-        ''
-            sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
-        ''
-        ))
-    )
-      + lib.optionalString targetPlatform.isAvr ''
-            makeFlagsArray+=(
-               '-s' # workaround for hitting hydra log limit
-               'LIMITS_H_TEST=false'
-            )
-          '';
-
-  inherit noSysDirs staticCompiler withoutTargetLibc
-    libcCross crossMingw;
-
-  inherit (callFile ../common/dependencies.nix { })
-    depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
-
-  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm";
-
-  preConfigure = (callFile ../common/pre-configure.nix { }) + ''
-    ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h
-  '';
-
-  dontDisableStatic = true;
-
-  configurePlatforms = [ "build" "host" "target" ];
-
-  configureFlags = callFile ../common/configure-flags.nix { };
-
-  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
-
-  buildFlags =
-    let target = lib.optionalString (profiledCompiler) "profiled"
-      + lib.optionalString (targetPlatform == hostPlatform && hostPlatform == buildPlatform && !disableBootstrap) "bootstrap";
-    in lib.optional (target != "") target;
-
-  # https://gcc.gnu.org/PR109898
-  enableParallelInstalling = false;
-
-  inherit (callFile ../common/strip-attributes.nix { })
-    stripDebugList
-    stripDebugListTarget
-    preFixup;
-
-  # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
-  ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64";
-
-  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
-  # library headers and binaries, regarless of the language being compiled.
-  #
-  # Likewise, the LTO code doesn't find zlib.
-  #
-  # Cross-compiling, we need gcc not to read ./specs in order to build the g++
-  # compiler (after the specs for the cross-gcc are created). Having
-  # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
-
-  CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
-    ++ optional (zlib != null) zlib
-  ));
-
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
-
-  inherit (callFile ../common/extra-target-flags.nix { })
-    EXTRA_FLAGS_FOR_TARGET
-    EXTRA_LDFLAGS_FOR_TARGET
-    ;
-
-  passthru = {
-    inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version;
-    isGNU = true;
-    hardeningUnsupportedFlags = [ "fortify3" ];
-  };
-
-  enableParallelBuilding = true;
-  inherit enableShared enableMultilib;
-
-  meta = {
-    inherit (callFile ../common/meta.nix { })
-      homepage
-      license
-      description
-      longDescription
-      platforms
-      maintainers
-    ;
-  };
-}
-
-// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
-))
-[
-  (callPackage ../common/libgcc.nix   { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; })
-  (callPackage ../common/checksum.nix { inherit langC langCC; })
-]
diff --git a/nixpkgs/pkgs/development/compilers/gcc/11/fix-struct-redefinition-on-glibc-2.36.patch b/nixpkgs/pkgs/development/compilers/gcc/11/fix-struct-redefinition-on-glibc-2.36.patch
deleted file mode 100644
index 3f5f64a3d074..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/11/fix-struct-redefinition-on-glibc-2.36.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From d2356ebb0084a0d80dbfe33040c9afe938c15d19 Mon Sep 17 00:00:00 2001
-From: Martin Liska <mliska@suse.cz>
-Date: Mon, 11 Jul 2022 22:03:14 +0200
-Subject: [PATCH] libsanitizer: cherry-pick 9cf13067cb5088626ba7 from upstream
-
-9cf13067cb5088626ba7ee1ec4c42ec59c7995a0 [sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr conflict with glibc 2.36
-
-(cherry picked from commit 2701442d0cf6292f6624443c15813d6d1a3562fe)
----
- .../sanitizer_platform_limits_posix.cpp                | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
-index 025e575b5bc7..5743516c0460 100644
---- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
-+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
-@@ -72,7 +72,9 @@
- #include <sys/vt.h>
- #include <linux/cdrom.h>
- #include <linux/fd.h>
-+#if SANITIZER_ANDROID
- #include <linux/fs.h>
-+#endif
- #include <linux/hdreg.h>
- #include <linux/input.h>
- #include <linux/ioctl.h>
-@@ -828,10 +830,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
-   unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT;
-   unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT;
- #endif
--  unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS;
--  unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION;
--  unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS;
--  unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION;
-+  unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long);
-+  unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long);
-+  unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long);
-+  unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long);
-   unsigned IOCTL_GIO_CMAP = GIO_CMAP;
-   unsigned IOCTL_GIO_FONT = GIO_FONT;
-   unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP;
diff --git a/nixpkgs/pkgs/development/compilers/gcc/12/default.nix b/nixpkgs/pkgs/development/compilers/gcc/12/default.nix
deleted file mode 100644
index 9665c2a9fe85..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/12/default.nix
+++ /dev/null
@@ -1,359 +0,0 @@
-{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs
-, langC ? true, langCC ? true, langFortran ? false
-, langAda ? false
-, langObjC ? stdenv.targetPlatform.isDarwin
-, langObjCpp ? stdenv.targetPlatform.isDarwin
-, langD ? false
-, langGo ? false
-, reproducibleBuild ? true
-, profiledCompiler ? false
-, langJit ? false
-, staticCompiler ? false
-, enableShared ? stdenv.targetPlatform.hasSharedLibraries
-, enableLTO ? stdenv.hostPlatform.hasSharedLibraries
-, texinfo ? null
-, perl ? null # optional, for texi2pod (then pod2man)
-, gmp, mpfr, libmpc, gettext, which, patchelf, binutils
-, isl ? null # optional, for the Graphite optimization framework.
-, zlib ? null
-, libucontext ? null
-, gnat-bootstrap ? null
-, enableMultilib ? false
-, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins
-, name ? "gcc"
-, libcCross ? null
-, threadsCross ? null # for MinGW
-, withoutTargetLibc ? false
-, gnused ? null
-, cloog # unused; just for compat with gcc4, as we override the parameter on some places
-, buildPackages
-, libxcrypt
-, disableGdbPlugin ? !enablePlugin
-, nukeReferences
-, callPackage
-}:
-
-# Make sure we get GNU sed.
-assert stdenv.buildPlatform.isDarwin -> gnused != null;
-
-# The go frontend is written in c++
-assert langGo -> langCC;
-assert langAda -> gnat-bootstrap != null;
-
-# TODO: fixup D bootstapping, probably by using gdc11 (and maybe other changes).
-#   error: GDC is required to build d
-assert !langD;
-
-# threadsCross is just for MinGW
-assert threadsCross != {} -> stdenv.targetPlatform.isWindows;
-
-# profiledCompiler builds inject non-determinism in one of the compilation stages.
-# If turned on, we can't provide reproducible builds anymore
-assert reproducibleBuild -> profiledCompiler == false;
-
-with lib;
-with builtins;
-
-let majorVersion = "12";
-    version = "${majorVersion}.3.0";
-    disableBootstrap = !stdenv.hostPlatform.isDarwin && !profiledCompiler;
-
-    inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-    patches =
-         optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
-      ++ optional noSysDirs ../gcc-12-no-sys-dirs.patch
-      ++ optional noSysDirs ../no-sys-dirs-riscv.patch
-      ++ [
-        ../gnat-cflags-11.patch
-        ../gcc-12-gfortran-driving.patch
-        ../ppc-musl.patch
-
-        # backport ICE fix on ccache code
-        ./lambda-ICE-PR109241.patch
-      ]
-      # We only apply this patch when building a native toolchain for aarch64-darwin, as it breaks building
-      # a foreign one: https://github.com/iains/gcc-12-branch/issues/18
-      ++ optionals (stdenv.isDarwin && stdenv.isAarch64 && buildPlatform == hostPlatform && hostPlatform == targetPlatform) [
-        (fetchurl {
-          name = "gcc-12-darwin-aarch64-support.patch";
-          url = "https://raw.githubusercontent.com/Homebrew/formula-patches/f1188b90d610e2ed170b22512ff7435ba5c891e2/gcc/gcc-12.3.0.diff";
-          sha256 = "sha256-naL5ZNiurqfDBiPSU8PTbTmLqj25B+vjjiqc4fAFgYs=";
-        })
-      ] ++ optional langD ../libphobos.patch
-
-      # backport fixes to build gccgo with musl libc
-      ++ optionals (langGo && stdenv.hostPlatform.isMusl) [
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/cf79b1117bd177d3d4c6ed24b6fa243c3628ac2d.diff";
-          hash = "sha256-mS5ZiYi5D8CpGXrWg3tXlbhp4o86ew1imCTwaHLfl+I=";
-        })
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/7f195a2270910a6ed08bd76e3a16b0a6503f9faf.diff";
-          hash = "sha256-Ze/cFM0dQofKH00PWPDoklXUlwWhwA1nyTuiDAZ6FKo=";
-        })
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/762fd5e5547e464e25b4bee435db6df4eda0de90.diff";
-          hash = "sha256-o28upwTcHAnHG2Iq0OewzwSBEhHs+XpBGdIfZdT81pk=";
-        })
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/e73d9fcafbd07bc3714fbaf8a82db71d50015c92.diff";
-          hash = "sha256-1SjYCVHLEUihdON2TOC3Z2ufM+jf2vH0LvYtZL+c1Fo=";
-        })
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/b6c6a3d64f2e4e9347733290aca3c75898c44b2e.diff";
-          hash = "sha256-RycJ3YCHd3MXtYFjxP0zY2Wuw7/C4bWoBAQtTKJZPOQ=";
-        })
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/2b1a604a9b28fbf4f382060bebd04adb83acc2f9.diff";
-          hash = "sha256-WiBQG0Xbk75rHk+AMDvsbrm+dc7lDH0EONJXSdEeMGE=";
-        })
-        (fetchpatch {
-          url = "https://github.com/gcc-mirror/gcc/commit/c86b726c048eddc1be320c0bf64a897658bee13d.diff";
-          hash = "sha256-QSIlqDB6JRQhbj/c3ejlmbfWz9l9FurdSWxpwDebnlI=";
-        })
-      ]
-
-      # Fix detection of bootstrap compiler Ada support (cctools as) on Nix Darwin
-      ++ optional (stdenv.isDarwin && langAda) ../ada-cctools-as-detection-configure.patch
-
-      # Use absolute path in GNAT dylib install names on Darwin
-      ++ optional (stdenv.isDarwin && langAda) ../gnat-darwin-dylib-install-name.patch
-
-      # Obtain latest patch with ../update-mcfgthread-patches.sh
-      ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch;
-
-    /* Cross-gcc settings (build == host != target) */
-    crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
-    stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final";
-    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
-
-    callFile = lib.callPackageWith {
-      # lets
-      inherit
-        majorVersion
-        version
-        buildPlatform
-        hostPlatform
-        targetPlatform
-        patches
-        crossMingw
-        stageNameAddon
-        crossNameAddon
-      ;
-      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc12.cc.override)" | jq '.[]' --raw-output'
-      inherit
-        binutils
-        buildPackages
-        cloog
-        withoutTargetLibc
-        disableBootstrap
-        disableGdbPlugin
-        enableLTO
-        enableMultilib
-        enablePlugin
-        enableShared
-        fetchpatch
-        fetchurl
-        gettext
-        gmp
-        gnat-bootstrap
-        gnused
-        isl
-        langAda
-        langC
-        langCC
-        langD
-        langFortran
-        langGo
-        langJit
-        langObjC
-        langObjCpp
-        lib
-        libcCross
-        libmpc
-        libucontext
-        libxcrypt
-        mpfr
-        name
-        noSysDirs
-        nukeReferences
-        patchelf
-        perl
-        profiledCompiler
-        reproducibleBuild
-        staticCompiler
-        stdenv
-        targetPackages
-        texinfo
-        threadsCross
-        which
-        zip
-        zlib
-      ;
-    };
-
-in
-
-lib.pipe (stdenv.mkDerivation ({
-  pname = "${crossNameAddon}${name}";
-  inherit version;
-
-  builder = ../builder.sh;
-
-  src = fetchurl {
-    url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz";
-    sha256 = "sha256-lJpdT5nnhkIak7Uysi/6tVeN5zITaZdbka7Jet/ajDs=";
-  };
-
-  inherit patches;
-
-  outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib";
-  setOutputFlags = false;
-  NIX_NO_SELF_RPATH = true;
-
-  libc_dev = stdenv.cc.libc_dev;
-
-  hardeningDisable = [ "format" "pie" ];
-
-  postPatch = ''
-    configureScripts=$(find . -name configure)
-    for configureScript in $configureScripts; do
-      patchShebangs $configureScript
-    done
-  ''
-  # This should kill all the stdinc frameworks that gcc and friends like to
-  # insert into default search paths.
-  + lib.optionalString hostPlatform.isDarwin ''
-    substituteInPlace gcc/config/darwin-c.cc \
-      --replace 'if (stdinc)' 'if (0)'
-
-    substituteInPlace libgcc/config/t-slibgcc-darwin \
-      --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
-
-    substituteInPlace libgfortran/configure \
-      --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
-  ''
-  + (
-    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
-      # On NixOS, use the right path to the dynamic linker instead of
-      # `/lib/ld*.so'.
-      (let
-        libc = if libcCross != null then libcCross else stdenv.cc.libc;
-      in
-        (
-        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER', \`UCLIBC_DYNAMIC_LINKER', and \`MUSL_DYNAMIC_LINKER' macros..."
-           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
-           do
-             grep -q _DYNAMIC_LINKER "$header" || continue
-             echo "  fixing \`$header'..."
-             sed -i "$header" \
-                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g' \
-                 -e 's|define[[:blank:]]*MUSL_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define MUSL_DYNAMIC_LINKER\1 "${libc.out}\2"|g'
-           done
-        ''
-        + lib.optionalString (targetPlatform.libc == "musl")
-        ''
-            sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
-        ''
-        )
-    ))
-      + lib.optionalString targetPlatform.isAvr ''
-            makeFlagsArray+=(
-               '-s' # workaround for hitting hydra log limit
-               'LIMITS_H_TEST=false'
-            )
-          '';
-
-  inherit noSysDirs staticCompiler withoutTargetLibc
-    libcCross crossMingw;
-
-  inherit (callFile ../common/dependencies.nix { }) depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
-
-  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm";
-
-
-  preConfigure = (callFile ../common/pre-configure.nix { }) + ''
-    ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h
-  '';
-
-  dontDisableStatic = true;
-
-  configurePlatforms = [ "build" "host" "target" ];
-
-  configureFlags = callFile ../common/configure-flags.nix { };
-
-  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
-
-  buildFlags =
-    # we do not yet have Nix-driven profiling
-    assert profiledCompiler -> !disableBootstrap;
-    let target =
-          lib.optionalString (profiledCompiler) "profiled" +
-          lib.optionalString (targetPlatform == hostPlatform && hostPlatform == buildPlatform && !disableBootstrap) "bootstrap";
-    in lib.optional (target != "") target;
-
-  # https://gcc.gnu.org/PR109898
-  enableParallelInstalling = false;
-
-  inherit (callFile ../common/strip-attributes.nix { })
-    stripDebugList
-    stripDebugListTarget
-    preFixup;
-
-  # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
-  ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64";
-
-  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
-  # library headers and binaries, regarless of the language being compiled.
-  #
-  # Likewise, the LTO code doesn't find zlib.
-  #
-  # Cross-compiling, we need gcc not to read ./specs in order to build the g++
-  # compiler (after the specs for the cross-gcc are created). Having
-  # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
-
-  CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
-    ++ optional (zlib != null) zlib
-  ));
-
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
-
-  inherit (callFile ../common/extra-target-flags.nix { })
-    EXTRA_FLAGS_FOR_TARGET
-    EXTRA_LDFLAGS_FOR_TARGET
-    ;
-
-  passthru = {
-    inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version;
-    isGNU = true;
-  };
-
-  enableParallelBuilding = true;
-  inherit enableShared enableMultilib;
-
-  meta = {
-    inherit (callFile ../common/meta.nix { })
-      homepage
-      license
-      description
-      longDescription
-      platforms
-      maintainers
-    ;
-  };
-}
-
-// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
-))
-[
-  (callPackage ../common/libgcc.nix   { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; })
-  (callPackage ../common/checksum.nix { inherit langC langCC; })
-]
-
diff --git a/nixpkgs/pkgs/development/compilers/gcc/13/default.nix b/nixpkgs/pkgs/development/compilers/gcc/13/default.nix
deleted file mode 100644
index 1b73c251ce6f..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/13/default.nix
+++ /dev/null
@@ -1,353 +0,0 @@
-{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs
-, langC ? true, langCC ? true, langFortran ? false
-, langAda ? false
-, langObjC ? stdenv.targetPlatform.isDarwin
-, langObjCpp ? stdenv.targetPlatform.isDarwin
-, langD ? false
-, langGo ? false
-, reproducibleBuild ? true
-, profiledCompiler ? false
-, langJit ? false
-, staticCompiler ? false
-, enableShared ? stdenv.targetPlatform.hasSharedLibraries
-, enableLTO ? stdenv.hostPlatform.hasSharedLibraries
-, texinfo ? null
-, perl ? null # optional, for texi2pod (then pod2man)
-, gmp, mpfr, libmpc, gettext, which, patchelf, binutils
-, isl ? null # optional, for the Graphite optimization framework.
-, zlib ? null
-, libucontext ? null
-, gnat-bootstrap ? null
-, enableMultilib ? false
-, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins
-, name ? "gcc"
-, libcCross ? null
-, threadsCross ? null # for MinGW
-, withoutTargetLibc ? false
-, gnused ? null
-, cloog # unused; just for compat with gcc4, as we override the parameter on some places
-, buildPackages
-, libxcrypt
-, disableGdbPlugin ? !enablePlugin
-, nukeReferences
-, callPackage
-}:
-
-# Make sure we get GNU sed.
-assert stdenv.buildPlatform.isDarwin -> gnused != null;
-
-# The go frontend is written in c++
-assert langGo -> langCC;
-assert langAda -> gnat-bootstrap != null;
-
-# TODO: fixup D bootstapping, probably by using gdc11 (and maybe other changes).
-#   error: GDC is required to build d
-assert !langD;
-
-# threadsCross is just for MinGW
-assert threadsCross != {} -> stdenv.targetPlatform.isWindows;
-
-# profiledCompiler builds inject non-determinism in one of the compilation stages.
-# If turned on, we can't provide reproducible builds anymore
-assert reproducibleBuild -> profiledCompiler == false;
-
-with lib;
-with builtins;
-
-let majorVersion = "13";
-    version = "${majorVersion}.1.0";
-    disableBootstrap = !stdenv.hostPlatform.isDarwin && !profiledCompiler;
-
-    inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-    patches =
-         optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
-      ++ optional noSysDirs ../gcc-12-no-sys-dirs.patch
-      ++ optional noSysDirs ../no-sys-dirs-riscv.patch
-      ++ [
-        ../gnat-cflags-11.patch
-        ../gcc-12-gfortran-driving.patch
-        ../ppc-musl.patch
-      ]
-      # We only apply this patch when building a native toolchain for aarch64-darwin, as it breaks building
-      # a foreign one: https://github.com/iains/gcc-12-branch/issues/18
-      ++ optional (stdenv.isDarwin && stdenv.isAarch64 && buildPlatform == hostPlatform && hostPlatform == targetPlatform) (fetchpatch {
-        name = "gcc-13-darwin-aarch64-support.patch";
-        url = "https://github.com/Homebrew/formula-patches/raw/5c206c47e2a08d522ec9795bb314346fff5fc4c5/gcc/gcc-13.1.0.diff";
-        sha256 = "sha256-sMgA7nwE2ULa54t5g6VE6eJQYa69XvQrefi9U9f2t4g=";
-      })
-      ++ optional langD ../libphobos.patch
-
-      # backport fixes to build gccgo with musl libc
-      ++ optionals (langGo && stdenv.hostPlatform.isMusl) [
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/cf79b1117bd177d3d4c6ed24b6fa243c3628ac2d.diff";
-          hash = "sha256-mS5ZiYi5D8CpGXrWg3tXlbhp4o86ew1imCTwaHLfl+I=";
-        })
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/7f195a2270910a6ed08bd76e3a16b0a6503f9faf.diff";
-          hash = "sha256-Ze/cFM0dQofKH00PWPDoklXUlwWhwA1nyTuiDAZ6FKo=";
-        })
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/762fd5e5547e464e25b4bee435db6df4eda0de90.diff";
-          hash = "sha256-o28upwTcHAnHG2Iq0OewzwSBEhHs+XpBGdIfZdT81pk=";
-        })
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/e73d9fcafbd07bc3714fbaf8a82db71d50015c92.diff";
-          hash = "sha256-1SjYCVHLEUihdON2TOC3Z2ufM+jf2vH0LvYtZL+c1Fo=";
-        })
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/b6c6a3d64f2e4e9347733290aca3c75898c44b2e.diff";
-          hash = "sha256-RycJ3YCHd3MXtYFjxP0zY2Wuw7/C4bWoBAQtTKJZPOQ=";
-        })
-        (fetchpatch {
-          excludes = [ "gcc/go/gofrontend/MERGE" ];
-          url = "https://github.com/gcc-mirror/gcc/commit/2b1a604a9b28fbf4f382060bebd04adb83acc2f9.diff";
-          hash = "sha256-WiBQG0Xbk75rHk+AMDvsbrm+dc7lDH0EONJXSdEeMGE=";
-        })
-        (fetchpatch {
-          url = "https://github.com/gcc-mirror/gcc/commit/c86b726c048eddc1be320c0bf64a897658bee13d.diff";
-          hash = "sha256-QSIlqDB6JRQhbj/c3ejlmbfWz9l9FurdSWxpwDebnlI=";
-        })
-      ]
-
-      # Fix detection of bootstrap compiler Ada support (cctools as) on Nix Darwin
-      ++ optional (stdenv.isDarwin && langAda) ../ada-cctools-as-detection-configure.patch
-
-      # Use absolute path in GNAT dylib install names on Darwin
-      ++ optional (stdenv.isDarwin && langAda) ../gnat-darwin-dylib-install-name.patch
-    ;
-
-    /* Cross-gcc settings (build == host != target) */
-    crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
-    stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final";
-    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
-
-    callFile = lib.callPackageWith {
-      # lets
-      inherit
-        majorVersion
-        version
-        buildPlatform
-        hostPlatform
-        targetPlatform
-        patches
-        crossMingw
-        stageNameAddon
-        crossNameAddon
-      ;
-      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc13.cc.override)" | jq '.[]' --raw-output'
-      inherit
-        binutils
-        buildPackages
-        cloog
-        withoutTargetLibc
-        disableBootstrap
-        disableGdbPlugin
-        enableLTO
-        enableMultilib
-        enablePlugin
-        enableShared
-        fetchpatch
-        fetchurl
-        gettext
-        gmp
-        gnat-bootstrap
-        gnused
-        isl
-        langAda
-        langC
-        langCC
-        langD
-        langFortran
-        langGo
-        langJit
-        langObjC
-        langObjCpp
-        lib
-        libcCross
-        libmpc
-        libucontext
-        libxcrypt
-        mpfr
-        name
-        noSysDirs
-        nukeReferences
-        patchelf
-        perl
-        profiledCompiler
-        reproducibleBuild
-        staticCompiler
-        stdenv
-        targetPackages
-        texinfo
-        threadsCross
-        which
-        zip
-        zlib
-      ;
-    };
-
-in
-
-lib.pipe (stdenv.mkDerivation ({
-  pname = "${crossNameAddon}${name}";
-  inherit version;
-
-  builder = ../builder.sh;
-
-  src = fetchurl {
-    url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz";
-    sha256 = "sha256-YdaE8Kpedqxlha2ImKJCeq3ol57V5/hUkihsTfwT7oY=";
-  };
-
-  inherit patches;
-
-  outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib";
-  setOutputFlags = false;
-  NIX_NO_SELF_RPATH = true;
-
-  libc_dev = stdenv.cc.libc_dev;
-
-  hardeningDisable = [ "format" "pie" ];
-
-  postPatch = ''
-    configureScripts=$(find . -name configure)
-    for configureScript in $configureScripts; do
-      patchShebangs $configureScript
-    done
-  ''
-  # This should kill all the stdinc frameworks that gcc and friends like to
-  # insert into default search paths.
-  + lib.optionalString hostPlatform.isDarwin ''
-    substituteInPlace gcc/config/darwin-c.cc \
-      --replace 'if (stdinc)' 'if (0)'
-
-    substituteInPlace libgcc/config/t-slibgcc-darwin \
-      --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
-
-    substituteInPlace libgfortran/configure \
-      --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
-  ''
-  + (
-    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
-      # On NixOS, use the right path to the dynamic linker instead of
-      # `/lib/ld*.so'.
-      (let
-        libc = if libcCross != null then libcCross else stdenv.cc.libc;
-      in
-        (
-        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER', \`UCLIBC_DYNAMIC_LINKER', and \`MUSL_DYNAMIC_LINKER' macros..."
-           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
-           do
-             grep -q _DYNAMIC_LINKER "$header" || continue
-             echo "  fixing \`$header'..."
-             sed -i "$header" \
-                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g' \
-                 -e 's|define[[:blank:]]*MUSL_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define MUSL_DYNAMIC_LINKER\1 "${libc.out}\2"|g'
-           done
-        ''
-        + lib.optionalString (targetPlatform.libc == "musl")
-        ''
-            sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
-        ''
-        )
-    ))
-      + lib.optionalString targetPlatform.isAvr ''
-            makeFlagsArray+=(
-               '-s' # workaround for hitting hydra log limit
-               'LIMITS_H_TEST=false'
-            )
-          '';
-
-  inherit noSysDirs staticCompiler withoutTargetLibc
-    libcCross crossMingw;
-
-  inherit (callFile ../common/dependencies.nix { }) depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
-
-  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm";
-
-
-  preConfigure = (callFile ../common/pre-configure.nix { }) + ''
-    ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h
-  '';
-
-  dontDisableStatic = true;
-
-  configurePlatforms = [ "build" "host" "target" ];
-
-  configureFlags = callFile ../common/configure-flags.nix { };
-
-  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
-
-  buildFlags =
-    # we do not yet have Nix-driven profiling
-    assert profiledCompiler -> !disableBootstrap;
-    let target =
-          lib.optionalString (profiledCompiler) "profiled" +
-          lib.optionalString (targetPlatform == hostPlatform && hostPlatform == buildPlatform && !disableBootstrap) "bootstrap";
-    in lib.optional (target != "") target;
-
-  inherit (callFile ../common/strip-attributes.nix { })
-    stripDebugList
-    stripDebugListTarget
-    preFixup;
-
-  # https://gcc.gnu.org/PR109898
-  enableParallelInstalling = false;
-
-  # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
-  ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64";
-
-  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
-  # library headers and binaries, regarless of the language being compiled.
-  #
-  # Likewise, the LTO code doesn't find zlib.
-  #
-  # Cross-compiling, we need gcc not to read ./specs in order to build the g++
-  # compiler (after the specs for the cross-gcc are created). Having
-  # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
-
-  CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
-    ++ optional (zlib != null) zlib
-  ));
-
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
-
-  inherit (callFile ../common/extra-target-flags.nix { })
-    EXTRA_FLAGS_FOR_TARGET
-    EXTRA_LDFLAGS_FOR_TARGET
-    ;
-
-  passthru = {
-    inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version;
-    isGNU = true;
-  };
-
-  enableParallelBuilding = true;
-  inherit enableShared enableMultilib;
-
-  meta = {
-    inherit (callFile ../common/meta.nix { })
-      homepage
-      license
-      description
-      longDescription
-      platforms
-      maintainers
-    ;
-  };
-}
-
-// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
-))
-[
-  (callPackage ../common/libgcc.nix   { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; })
-  (callPackage ../common/checksum.nix { inherit langC langCC; })
-]
-
diff --git a/nixpkgs/pkgs/development/compilers/gcc/4.8/default.nix b/nixpkgs/pkgs/development/compilers/gcc/4.8/default.nix
deleted file mode 100644
index fa856eff96e5..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/4.8/default.nix
+++ /dev/null
@@ -1,327 +0,0 @@
-{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs
-, langC ? true, langCC ? true, langFortran ? false
-, langObjC ? stdenv.targetPlatform.isDarwin
-, langObjCpp ? stdenv.targetPlatform.isDarwin
-, langJava ? false
-, langGo ? false
-, reproducibleBuild ? true
-, profiledCompiler ? false
-, langJit ? false
-, staticCompiler ? false
-, enableShared ? stdenv.targetPlatform.hasSharedLibraries
-, enableLTO ? stdenv.hostPlatform.hasSharedLibraries
-, texinfo ? null
-, perl ? null # optional, for texi2pod (then pod2man); required for Java
-, gmp, mpfr, libmpc, gettext, which, patchelf, binutils
-, cloog ? null, isl ? null # optional, for the Graphite optimization framework.
-, zlib ? null, boehmgc ? null
-, zip ? null, unzip ? null, pkg-config ? null
-, gtk2 ? null, libart_lgpl ? null
-, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null
-, libXrender ? null, xorgproto ? null
-, libXrandr ? null, libXi ? null
-, x11Support ? langJava
-, enableMultilib ? false
-, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins
-, name ? "gcc"
-, libcCross ? null
-, threadsCross ? null # for MinGW
-, withoutTargetLibc ? false
-, gnused ? null
-, buildPackages
-, callPackage
-}:
-
-assert langJava     -> zip != null && unzip != null
-                       && zlib != null && boehmgc != null
-                       && perl != null;  # for `--enable-java-home'
-
-# We enable the isl cloog backend.
-assert cloog != null -> isl != null;
-
-# Make sure we get GNU sed.
-assert stdenv.buildPlatform.isDarwin -> gnused != null;
-
-# The go frontend is written in c++
-assert langGo -> langCC;
-
-# threadsCross is just for MinGW
-assert threadsCross != {} -> stdenv.targetPlatform.isWindows;
-
-# profiledCompiler builds inject non-determinism in one of the compilation stages.
-# If turned on, we can't provide reproducible builds anymore
-assert reproducibleBuild -> profiledCompiler == false;
-
-with lib;
-with builtins;
-
-let majorVersion = "4";
-    version = "${majorVersion}.8.5";
-
-    inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-    patches = [ ../parallel-bconfig.patch ]
-      ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
-      ++ optional noSysDirs ../no-sys-dirs.patch
-      ++ optional langFortran ../gfortran-driving.patch
-      ++ optional hostPlatform.isDarwin ../gfortran-darwin-NXConstStr.patch
-      ++ [(fetchpatch {
-          name = "libc_name_p.diff"; # needed to build with gcc6
-          url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=ec1cc0263f1";
-          sha256 = "01jd7pdarh54ki498g6sz64ijl9a1l5f9v8q2696aaxalvh2vwzl";
-          excludes = [ "gcc/cp/ChangeLog" ];
-        })]
-      ++ [ # glibc-2.26
-        ../struct-ucontext-4.8.patch
-        ../sigsegv-not-declared.patch
-        ../res_state-not-declared.patch
-        # gcc-11 compatibility
-        (fetchpatch {
-          name = "gcc4-char-reload.patch";
-          url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=d57c99458933a21fdf94f508191f145ad8d5ec58";
-          includes = [ "gcc/reload.h" ];
-          sha256 = "sha256-66AMP7/ajunGKAN5WJz/yPn42URZ2KN51yPrFdsxEuM=";
-        })
-      ];
-
-    javaEcj = fetchurl {
-      # The `$(top_srcdir)/ecj.jar' file is automatically picked up at
-      # `configure' time.
-
-      # XXX: Eventually we might want to take it from upstream.
-      url = "ftp://sourceware.org/pub/java/ecj-4.3.jar";
-      sha256 = "0jz7hvc0s6iydmhgh5h2m15yza7p2rlss2vkif30vm9y77m97qcx";
-    };
-
-    # Antlr (optional) allows the Java `gjdoc' tool to be built.  We want a
-    # binary distribution here to allow the whole chain to be bootstrapped.
-    javaAntlr = fetchurl {
-      url = "https://www.antlr.org/download/antlr-4.4-complete.jar";
-      sha256 = "02lda2imivsvsis8rnzmbrbp8rh1kb8vmq4i67pqhkwz7lf8y6dz";
-    };
-
-    xlibs = [
-      libX11 libXt libSM libICE libXtst libXrender libXrandr libXi
-      xorgproto
-    ];
-
-    javaAwtGtk = langJava && x11Support;
-
-    /* Cross-gcc settings (build == host != target) */
-    crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
-    stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final";
-    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
-
-    callFile = lib.callPackageWith {
-      # lets
-      inherit
-        majorVersion
-        version
-        buildPlatform
-        hostPlatform
-        targetPlatform
-        patches
-        javaEcj
-        javaAntlr
-        xlibs
-        javaAwtGtk
-        crossMingw
-        stageNameAddon
-        crossNameAddon
-      ;
-      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc48.cc.override)" | jq '.[]' --raw-output'
-      inherit
-        binutils
-        boehmgc
-        buildPackages
-        cloog
-        withoutTargetLibc
-        enableLTO
-        enableMultilib
-        enablePlugin
-        enableShared
-        fetchpatch
-        fetchurl
-        gettext
-        gmp
-        gnused
-        gtk2
-        isl
-        langC
-        langCC
-        langFortran
-        langGo
-        langJava
-        langJit
-        langObjC
-        langObjCpp
-        lib
-        libICE
-        libSM
-        libX11
-        libXi
-        libXrandr
-        libXrender
-        libXt
-        libXtst
-        libart_lgpl
-        libcCross threadsCross
-        libmpc
-        mpfr
-        name
-        noSysDirs
-        patchelf
-        perl
-        pkg-config
-        profiledCompiler
-        reproducibleBuild
-        staticCompiler
-        stdenv
-        targetPackages
-        texinfo
-        unzip
-        which
-        x11Support
-        xorgproto
-        zip
-        zlib
-      ;
-    };
-
-in
-
-# We need all these X libraries when building AWT with GTK.
-assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
-
-lib.pipe (stdenv.mkDerivation ({
-  pname = "${crossNameAddon}${name}";
-  inherit version;
-
-  builder = ../builder.sh;
-
-  src = fetchurl {
-    url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2";
-    sha256 = "08yggr18v373a1ihj0rg2vd6psnic42b518xcgp3r9k81xz1xyr2";
-  };
-
-  inherit patches;
-
-  hardeningDisable = [ "format" "pie" ];
-
-  outputs = [ "out" "lib" "man" "info" ];
-  setOutputFlags = false;
-  NIX_NO_SELF_RPATH = true;
-
-  libc_dev = stdenv.cc.libc_dev;
-
-  postPatch =
-    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
-      # On NixOS, use the right path to the dynamic linker instead of
-      # `/lib/ld*.so'.
-      let
-        libc = if libcCross != null then libcCross else stdenv.cc.libc;
-      in
-        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER' and \`UCLIBC_DYNAMIC_LINKER' macros..."
-           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
-           do
-             grep -q LIBC_DYNAMIC_LINKER "$header" || continue
-             echo "  fixing \`$header'..."
-             sed -i "$header" \
-                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g'
-           done
-        ''
-    else null;
-
-  inherit noSysDirs staticCompiler langJava withoutTargetLibc
-    libcCross crossMingw;
-
-  inherit (callFile ../common/dependencies.nix { })
-    depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
-
-  preConfigure = callFile ../common/pre-configure.nix { };
-
-  dontDisableStatic = true;
-
-  configurePlatforms = [ "build" "host" "target" ];
-
-  configureFlags = callFile ../common/configure-flags.nix { };
-
-  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
-
-  buildFlags = optional
-    (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
-    (if profiledCompiler then "profiledbootstrap" else "bootstrap");
-
-  inherit (callFile ../common/strip-attributes.nix { })
-    stripDebugList
-    stripDebugListTarget
-    preFixup;
-
-  # https://gcc.gnu.org/PR109898
-  enableParallelInstalling = false;
-
-  doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv
-
-  # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
-  ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64";
-
-  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
-  # library headers and binaries, regarless of the language being compiled.
-  #
-  # Note: When building the Java AWT GTK peer, the build system doesn't honor
-  # `--with-gmp' et al., e.g., when building
-  # `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add
-  # them to $CPATH and $LIBRARY_PATH in this case.
-  #
-  # Likewise, the LTO code doesn't find zlib.
-  #
-  # Cross-compiling, we need gcc not to read ./specs in order to build the g++
-  # compiler (after the specs for the cross-gcc are created). Having
-  # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
-
-  CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
-    ++ optional (zlib != null) zlib
-    ++ optional langJava boehmgc
-    ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ]
-  ));
-
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
-    ++ optional (zlib != null) zlib
-    ++ optional langJava boehmgc
-    ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ]
-  ));
-
-  inherit (callFile ../common/extra-target-flags.nix { })
-    EXTRA_FLAGS_FOR_TARGET
-    EXTRA_LDFLAGS_FOR_TARGET
-    ;
-
-  passthru = {
-    inherit langC langCC langObjC langObjCpp langFortran langGo version;
-    isGNU = true;
-    hardeningUnsupportedFlags = [ "stackprotector" "fortify3" ];
-  };
-
-  enableParallelBuilding = true;
-  inherit enableShared enableMultilib;
-
-  meta = {
-    inherit (callFile ../common/meta.nix { })
-      homepage
-      license
-      description
-      longDescription
-      platforms
-      maintainers
-    ;
-    badPlatforms = lib.platforms.darwin;
-  };
-}
-
-// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
-))
-[
-  (callPackage ../common/libgcc.nix   { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; })
-]
diff --git a/nixpkgs/pkgs/development/compilers/gcc/4.9/default.nix b/nixpkgs/pkgs/development/compilers/gcc/4.9/default.nix
deleted file mode 100644
index bab79f968db3..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/4.9/default.nix
+++ /dev/null
@@ -1,354 +0,0 @@
-{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs
-, langC ? true, langCC ? true, langFortran ? false
-, langObjC ? stdenv.targetPlatform.isDarwin
-, langObjCpp ? stdenv.targetPlatform.isDarwin
-, langJava ? false
-, langGo ? false
-, reproducibleBuild ? true
-, profiledCompiler ? false
-, langJit ? false
-, staticCompiler ? false
-, enableShared ? stdenv.targetPlatform.hasSharedLibraries
-, enableLTO ? stdenv.hostPlatform.hasSharedLibraries
-, texinfo ? null
-, perl ? null # optional, for texi2pod (then pod2man); required for Java
-, gmp, mpfr, libmpc, gettext, which, patchelf, binutils
-, cloog ? null, isl ? null # optional, for the Graphite optimization framework.
-, zlib ? null, boehmgc ? null
-, zip ? null, unzip ? null, pkg-config ? null
-, gtk2 ? null, libart_lgpl ? null
-, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null
-, libXrender ? null, xorgproto ? null
-, libXrandr ? null, libXi ? null
-, x11Support ? langJava
-, enableMultilib ? false
-, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins
-, name ? "gcc"
-, libcCross ? null
-, threadsCross ? null # for MinGW
-, withoutTargetLibc ? false
-, gnused ? null
-, buildPackages
-, callPackage
-}:
-
-assert langJava     -> zip != null && unzip != null
-                       && zlib != null && boehmgc != null
-                       && perl != null;  # for `--enable-java-home'
-
-# We enable the isl cloog backend.
-assert cloog != null -> isl != null;
-
-# Make sure we get GNU sed.
-assert stdenv.buildPlatform.isDarwin -> gnused != null;
-
-# The go frontend is written in c++
-assert langGo -> langCC;
-
-# threadsCross is just for MinGW
-assert threadsCross != {} -> stdenv.targetPlatform.isWindows;
-
-# profiledCompiler builds inject non-determinism in one of the compilation stages.
-# If turned on, we can't provide reproducible builds anymore
-assert reproducibleBuild -> profiledCompiler == false;
-
-with lib;
-with builtins;
-
-let majorVersion = "4";
-    version = "${majorVersion}.9.4";
-
-    inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-    patches =
-      [ ../9/fix-struct-redefinition-on-glibc-2.36.patch ../use-source-date-epoch.patch
-        ../parallel-bconfig.patch ./parallel-strsignal.patch
-        ./libsanitizer.patch
-        (fetchpatch {
-          name = "avoid-ustat-glibc-2.28.patch";
-          url = "https://gitweb.gentoo.org/proj/gcc-patches.git/plain/4.9.4/gentoo/100_all_avoid-ustat-glibc-2.28.patch?id=55fcb515620a8f7d3bb77eba938aa0fcf0d67c96";
-          sha256 = "0b32sb4psv5lq0ij9fwhi1b4pjbwdjnv24nqprsk14dsc6xmi1g0";
-        })
-      ]
-      ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
-      ++ optional noSysDirs ../no-sys-dirs.patch
-      ++ optional langFortran ../gfortran-driving.patch
-      ++ [ ../struct-ucontext.patch ../struct-sigaltstack-4.9.patch ] # glibc-2.26
-      # Retpoline patches pulled from the branch hjl/indirect/gcc-4_9-branch (by H.J. Lu, the author of GCC upstream retpoline commits)
-      ++ builtins.map ({commit, sha256}: fetchpatch {url = "https://github.com/hjl-tools/gcc/commit/${commit}.patch"; inherit sha256;})
-         [{ commit = "e623d21608e96ecd6b65f0d06312117d20488a38"; sha256 = "1ix8i4d2r3ygbv7npmsdj790rhxqrnfwcqzv48b090r9c3ij8ay3"; }
-          { commit = "2015a09e332309f12de1dadfe179afa6a29368b8"; sha256 = "0xcfs0cbb63llj2gbcdrvxim79ax4k4aswn0a3yjavxsj71s1n91"; }
-          { commit = "6b11591f4494f705e8746e7d58b7f423191f4e92"; sha256 = "0aydyhsm2ig0khgbp27am7vq7liyqrq6kfhfi2ki0ij0ab1hfbga"; }
-          { commit = "203c7d9c3e9cb0f88816b481ef8e7e87b3ecc373"; sha256 = "0wqn16y7wy5kg8ngfcni5qdwfphl01axczibbk49bxclwnzvldqa"; }
-          { commit = "f039c6f284b2c9ce97c8353d6034978795c4872e"; sha256 = "13fkgdb17lpyxfksz1zanxhgpsm0jrss9w61nbl7an4im22hz7ci"; }
-          { commit = "ed42606bdab1c5d9e5ad828cd6fe1a0557f193b7"; sha256 = "0gdnn8v3p03imj3qga2mzdhpgbmjcklkxdl97jvz5xia2ikzknxm"; }
-          { commit = "5278e062ef292fd2fbf987d25389785f4c5c0f99"; sha256 = "0j81x758wf8v7j4rx5wc1cy7yhkvhlhv3wmnarwakxiwsspq0vrs"; }
-          { commit = "76f1ffbbb6cd9f6ecde6c82cd16e20a27242e890"; sha256 = "1py56y6gp7fjf4f8bbsfwh5bs1gnmlqda1ycsmnwlzfm0cshdp0c"; }
-          { commit = "4ca48b2b688b135c0390f54ea9077ef10aedd52c"; sha256 = "15r019pzr3k0lpgyvdc92c8fayw8b5lrzncna4bqmamcsdz7vsaw"; }
-          { commit = "98c7bf9ddc80db965d69d61521b1c7a1cec32d9a"; sha256 = "1d7pfdv1q23nf0wadw7jbp6d6r7pnzjpbyxgbdfv7j1vr9l1bp60"; }
-          { commit = "3dc76b53ad896494ca62550a7a752fecbca3f7a2"; sha256 = "0jvdzfpvfdmklfcjwqblwq1i22iqis7ljpvm7adra5d7zf2xk7xz"; }
-          { commit = "1e961ed49b18e176c7457f53df2433421387c23b"; sha256 = "04dnqqs4qsvz4g8cq6db5id41kzys7hzhcaycwmc9rpqygs2ajwz"; }
-          { commit = "e137c72d099f9b3b47f4cc718aa11eab14df1a9c"; sha256 = "1ms0dmz74yf6kwgjfs4d2fhj8y6mcp2n184r3jk44wx2xc24vgb2"; }]
-
-      ++ [
-        ../libsanitizer-no-cyclades-9.patch
-        # gcc-11 compatibility
-        (fetchpatch {
-          name = "gcc4-char-reload.patch";
-          url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=d57c99458933a21fdf94f508191f145ad8d5ec58";
-          includes = [ "gcc/reload.h" ];
-          sha256 = "sha256-66AMP7/ajunGKAN5WJz/yPn42URZ2KN51yPrFdsxEuM=";
-        })
-      ];
-
-    javaEcj = fetchurl {
-      # The `$(top_srcdir)/ecj.jar' file is automatically picked up at
-      # `configure' time.
-
-      # XXX: Eventually we might want to take it from upstream.
-      url = "ftp://sourceware.org/pub/java/ecj-4.3.jar";
-      sha256 = "0jz7hvc0s6iydmhgh5h2m15yza7p2rlss2vkif30vm9y77m97qcx";
-    };
-
-    # Antlr (optional) allows the Java `gjdoc' tool to be built.  We want a
-    # binary distribution here to allow the whole chain to be bootstrapped.
-    javaAntlr = fetchurl {
-      url = "https://www.antlr.org/download/antlr-4.4-complete.jar";
-      sha256 = "02lda2imivsvsis8rnzmbrbp8rh1kb8vmq4i67pqhkwz7lf8y6dz";
-    };
-
-    xlibs = [
-      libX11 libXt libSM libICE libXtst libXrender libXrandr libXi
-      xorgproto
-    ];
-
-    javaAwtGtk = langJava && x11Support;
-
-    /* Cross-gcc settings (build == host != target) */
-    crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
-    stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final";
-    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
-
-    callFile = lib.callPackageWith {
-      # lets
-      inherit
-        majorVersion
-        version
-        buildPlatform
-        hostPlatform
-        targetPlatform
-        patches
-        javaEcj
-        javaAntlr
-        xlibs
-        javaAwtGtk
-        crossMingw
-        stageNameAddon
-        crossNameAddon
-      ;
-      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc49.cc.override)" | jq '.[]' --raw-output'
-      inherit
-        binutils
-        boehmgc
-        buildPackages
-        cloog
-        withoutTargetLibc
-        enableLTO
-        enableMultilib
-        enablePlugin
-        enableShared
-        fetchpatch
-        fetchurl
-        gettext
-        gmp
-        gnused
-        gtk2
-        isl
-        langC
-        langCC
-        langFortran
-        langGo
-        langJava
-        langJit
-        langObjC
-        langObjCpp
-        lib
-        libICE
-        libSM
-        libX11
-        libXi
-        libXrandr
-        libXrender
-        libXt
-        libXtst
-        libart_lgpl
-        libcCross threadsCross
-        libmpc
-        mpfr
-        name
-        noSysDirs
-        patchelf
-        perl
-        pkg-config
-        profiledCompiler
-        reproducibleBuild
-        staticCompiler
-        stdenv
-        targetPackages
-        texinfo
-        unzip
-        which
-        x11Support
-        xorgproto
-        zip
-        zlib
-      ;
-    };
-
-in
-
-# We need all these X libraries when building AWT with GTK.
-assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
-
-lib.pipe (stdenv.mkDerivation ({
-  pname = "${crossNameAddon}${name}";
-  inherit version;
-
-  builder = ../builder.sh;
-
-  src = fetchurl {
-    url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2";
-    sha256 = "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc";
-  };
-
-  inherit patches;
-
-  hardeningDisable = [ "format" "pie" ];
-
-  # When targeting darwin, libgcc_ext.10.{4,5}.dylib are created as
-  # MH_DYLIB_STUB files, which install_name_tool can't change, so we
-  # get a cycle between $out and $lib.
-  outputs = if langJava || langGo || targetPlatform.isDarwin then ["out" "man" "info"]
-    else [ "out" "lib" "man" "info" ];
-  setOutputFlags = false;
-  NIX_NO_SELF_RPATH = true;
-
-  libc_dev = stdenv.cc.libc_dev;
-
-  postPatch =
-    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
-      # On NixOS, use the right path to the dynamic linker instead of
-      # `/lib/ld*.so'.
-      let
-        libc = if libcCross != null then libcCross else stdenv.cc.libc;
-      in
-        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER' and \`UCLIBC_DYNAMIC_LINKER' macros..."
-           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
-           do
-             grep -q LIBC_DYNAMIC_LINKER "$header" || continue
-             echo "  fixing \`$header'..."
-             sed -i "$header" \
-                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g'
-           done
-        ''
-    else null;
-
-  inherit noSysDirs staticCompiler langJava withoutTargetLibc
-    libcCross crossMingw;
-
-  inherit (callFile ../common/dependencies.nix { })
-    depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
-
-  preConfigure = callFile ../common/pre-configure.nix { };
-
-  dontDisableStatic = true;
-
-  configurePlatforms = [ "build" "host" "target" ];
-
-  configureFlags = callFile ../common/configure-flags.nix { };
-
-  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
-
-  buildFlags = optional
-    (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
-    (if profiledCompiler then "profiledbootstrap" else "bootstrap");
-
-  # https://gcc.gnu.org/PR109898
-  enableParallelInstalling = false;
-
-  inherit (callFile ../common/strip-attributes.nix { })
-    stripDebugList
-    stripDebugListTarget
-    preFixup;
-
-  doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv
-
-  # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
-  ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64";
-
-  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
-  # library headers and binaries, regarless of the language being compiled.
-  #
-  # Note: When building the Java AWT GTK peer, the build system doesn't honor
-  # `--with-gmp' et al., e.g., when building
-  # `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add
-  # them to $CPATH and $LIBRARY_PATH in this case.
-  #
-  # Likewise, the LTO code doesn't find zlib.
-  #
-  # Cross-compiling, we need gcc not to read ./specs in order to build the g++
-  # compiler (after the specs for the cross-gcc are created). Having
-  # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
-
-  CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
-    ++ optional (zlib != null) zlib
-    ++ optional langJava boehmgc
-    ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ]
-  ));
-
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
-    ++ optional (zlib != null) zlib
-    ++ optional langJava boehmgc
-    ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ]
-  ));
-
-  inherit (callFile ../common/extra-target-flags.nix { })
-    EXTRA_FLAGS_FOR_TARGET
-    EXTRA_LDFLAGS_FOR_TARGET
-    ;
-
-  passthru = {
-    inherit langC langCC langObjC langObjCpp langFortran langGo version;
-    isGNU = true;
-    hardeningUnsupportedFlags = [ "fortify3" ];
-  };
-
-  enableParallelBuilding = true;
-  inherit enableShared enableMultilib;
-
-  meta = {
-    inherit (callFile ../common/meta.nix { })
-      homepage
-      license
-      description
-      longDescription
-      platforms
-      maintainers
-    ;
-    badPlatforms = [ "aarch64-darwin" ];
-  };
-}
-
-// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
-
-// optionalAttrs (langJava) {
-     postFixup = ''
-       target="$(echo "$out/libexec/gcc"/*/*/ecj*)"
-       patchelf --set-rpath "$(patchelf --print-rpath "$target"):$out/lib" "$target"
-     '';}
-))
-[
-  (callPackage ../common/libgcc.nix   { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; })
-]
diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/default.nix b/nixpkgs/pkgs/development/compilers/gcc/6/default.nix
deleted file mode 100644
index f443babb4b70..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/6/default.nix
+++ /dev/null
@@ -1,372 +0,0 @@
-{ lib, stdenv, targetPackages, fetchurl, fetchpatch, fetchFromGitHub, noSysDirs
-, langC ? true, langCC ? true, langFortran ? false
-, langAda ? false
-, langObjC ? stdenv.targetPlatform.isDarwin
-, langObjCpp ? stdenv.targetPlatform.isDarwin
-, langJava ? false
-, langGo ? false
-, reproducibleBuild ? true
-, profiledCompiler ? false
-, langJit ? false
-, staticCompiler ? false
-, enableShared ? stdenv.targetPlatform.hasSharedLibraries
-, enableLTO ? stdenv.hostPlatform.hasSharedLibraries
-, texinfo ? null
-, flex
-, perl ? null # optional, for texi2pod (then pod2man); required for Java
-, gmp, mpfr, libmpc, gettext, which, patchelf, binutils
-, isl ? null # optional, for the Graphite optimization framework.
-, zlib ? null, boehmgc ? null
-, gnat-bootstrap ? null
-, zip ? null, unzip ? null, pkg-config ? null
-, gtk2 ? null, libart_lgpl ? null
-, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null
-, libXrender ? null, xorgproto ? null
-, libXrandr ? null, libXi ? null
-, x11Support ? langJava
-, enableMultilib ? false
-, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins
-, name ? "gcc"
-, libcCross ? null
-, threadsCross ? null # for MinGW
-, withoutTargetLibc ? false
-, gnused ? null
-, cloog ? null # unused; just for compat with gcc4, as we override the parameter on some places
-, buildPackages
-, callPackage
-}:
-
-assert langJava     -> zip != null && unzip != null
-                       && zlib != null && boehmgc != null
-                       && perl != null;  # for `--enable-java-home'
-
-# Make sure we get GNU sed.
-assert stdenv.buildPlatform.isDarwin -> gnused != null;
-
-# The go frontend is written in c++
-assert langGo -> langCC;
-
-assert langAda -> gnat-bootstrap != null;
-
-# threadsCross is just for MinGW
-assert threadsCross != {} -> stdenv.targetPlatform.isWindows;
-
-# profiledCompiler builds inject non-determinism in one of the compilation stages.
-# If turned on, we can't provide reproducible builds anymore
-assert reproducibleBuild -> profiledCompiler == false;
-
-with lib;
-with builtins;
-
-let majorVersion = "6";
-    version = "${majorVersion}.5.0";
-
-    inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-    patches = [ ../9/fix-struct-redefinition-on-glibc-2.36.patch ]
-    ++ optionals (!stdenv.targetPlatform.isRedox) [
-      ../use-source-date-epoch.patch ./0001-Fix-build-for-glibc-2.31.patch
-
-      # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431
-      ../fix-bug-80431.patch
-    ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
-      ++ optional noSysDirs ../no-sys-dirs.patch
-      ++ optional langAda ../gnat-cflags.patch
-      ++ optional langAda ./gnat-glibc234.patch
-      ++ optional langFortran ../gfortran-driving.patch
-      ++ optional (targetPlatform.libc == "musl") ../libgomp-dont-force-initial-exec.patch
-      ++ optional langGo ./gogcc-workaround-glibc-2.36.patch
-
-      # Obtain latest patch with ../update-mcfgthread-patches.sh
-      ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch
-      ++ optional (targetPlatform.libc == "musl" && targetPlatform.isx86_32) (fetchpatch {
-        url = "https://git.alpinelinux.org/aports/plain/main/gcc/gcc-6.1-musl-libssp.patch?id=5e4b96e23871ee28ef593b439f8c07ca7c7eb5bb";
-        sha256 = "1jf1ciz4gr49lwyh8knfhw6l5gvfkwzjy90m7qiwkcbsf4a3fqn2";
-      })
-
-      ++ [ ../libsanitizer-no-cyclades-9.patch ];
-
-    javaEcj = fetchurl {
-      # The `$(top_srcdir)/ecj.jar' file is automatically picked up at
-      # `configure' time.
-
-      # XXX: Eventually we might want to take it from upstream.
-      url = "ftp://sourceware.org/pub/java/ecj-4.3.jar";
-      sha256 = "0jz7hvc0s6iydmhgh5h2m15yza7p2rlss2vkif30vm9y77m97qcx";
-    };
-
-    # Antlr (optional) allows the Java `gjdoc' tool to be built.  We want a
-    # binary distribution here to allow the whole chain to be bootstrapped.
-    javaAntlr = fetchurl {
-      url = "https://www.antlr.org/download/antlr-4.4-complete.jar";
-      sha256 = "02lda2imivsvsis8rnzmbrbp8rh1kb8vmq4i67pqhkwz7lf8y6dz";
-    };
-
-    xlibs = [
-      libX11 libXt libSM libICE libXtst libXrender libXrandr libXi
-      xorgproto
-    ];
-
-    javaAwtGtk = langJava && x11Support;
-
-    /* Cross-gcc settings (build == host != target) */
-    crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
-    stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final";
-    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
-
-    callFile = lib.callPackageWith {
-      # lets
-      inherit
-        majorVersion
-        version
-        buildPlatform
-        hostPlatform
-        targetPlatform
-        patches
-        javaEcj
-        javaAntlr
-        xlibs
-        javaAwtGtk
-        crossMingw
-        stageNameAddon
-        crossNameAddon
-      ;
-      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc6.cc.override)" | jq '.[]' --raw-output'
-      inherit
-        binutils
-        boehmgc
-        buildPackages
-        cloog
-        withoutTargetLibc
-        enableLTO
-        enableMultilib
-        enablePlugin
-        enableShared
-        fetchFromGitHub
-        fetchpatch
-        fetchurl
-        flex
-        gettext
-        gmp
-        gnat-bootstrap
-        gnused
-        gtk2
-        isl
-        langAda
-        langC
-        langCC
-        langFortran
-        langGo
-        langJava
-        langJit
-        langObjC
-        langObjCpp
-        lib
-        libICE
-        libSM
-        libX11
-        libXi
-        libXrandr
-        libXrender
-        libXt
-        libXtst
-        libart_lgpl
-        libcCross
-        libmpc
-        mpfr
-        name
-        noSysDirs
-        patchelf
-        perl
-        pkg-config
-        profiledCompiler
-        reproducibleBuild
-        staticCompiler
-        stdenv
-        targetPackages
-        texinfo
-        threadsCross
-        unzip
-        which
-        x11Support
-        xorgproto
-        zip
-        zlib
-      ;
-    };
-in
-
-# We need all these X libraries when building AWT with GTK.
-assert x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == [];
-
-lib.pipe (stdenv.mkDerivation ({
-  pname = "${crossNameAddon}${name}";
-  inherit version;
-
-  builder = ../builder.sh;
-
-  src = if stdenv.targetPlatform.isVc4 then fetchFromGitHub {
-    owner = "itszor";
-    repo = "gcc-vc4";
-    rev = "e90ff43f9671c760cf0d1dd62f569a0fb9bf8918";
-    sha256 = "0gxf66hwqk26h8f853sybphqa5ca0cva2kmrw5jsiv6139g0qnp8";
-  } else if stdenv.targetPlatform.isRedox then fetchFromGitHub {
-    owner = "redox-os";
-    repo = "gcc";
-    rev = "f360ac095028d286fc6dde4d02daed48f59813fa"; # `redox` branch
-    sha256 = "1an96h8l58pppyh3qqv90g8hgcfd9hj7igvh2gigmkxbrx94khfl";
-  } else fetchurl {
-    url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.xz";
-    sha256 = "0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby";
-  };
-
-  inherit patches;
-
-  outputs = if langJava || langGo || langJit then ["out" "man" "info"]
-    else [ "out" "lib" "man" "info" ];
-  setOutputFlags = false;
-  NIX_NO_SELF_RPATH = true;
-
-  libc_dev = stdenv.cc.libc_dev;
-
-  hardeningDisable = [ "format" "pie" ];
-
-  postPatch =
-    # This should kill all the stdinc frameworks that gcc and friends like to
-    # insert into default search paths.
-    lib.optionalString hostPlatform.isDarwin ''
-      substituteInPlace gcc/config/darwin-c.c \
-        --replace 'if (stdinc)' 'if (0)'
-
-      substituteInPlace libgcc/config/t-slibgcc-darwin \
-        --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
-
-      substituteInPlace libgfortran/configure \
-        --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
-    ''
-  + (
-    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
-      # On NixOS, use the right path to the dynamic linker instead of
-      # `/lib/ld*.so'.
-      (let
-        libc = if libcCross != null then libcCross else stdenv.cc.libc;
-      in
-        (
-        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER', \`UCLIBC_DYNAMIC_LINKER', and \`MUSL_DYNAMIC_LINKER' macros..."
-           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
-           do
-             grep -q _DYNAMIC_LINKER "$header" || continue
-             echo "  fixing \`$header'..."
-             sed -i "$header" \
-                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g' \
-                 -e 's|define[[:blank:]]*MUSL_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define MUSL_DYNAMIC_LINKER\1 "${libc.out}\2"|g'
-           done
-        ''
-        + lib.optionalString (targetPlatform.libc == "musl")
-        ''
-            sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
-        ''
-        ))
-    );
-
-  inherit noSysDirs staticCompiler langJava withoutTargetLibc
-    libcCross crossMingw;
-
-  inherit (callFile ../common/dependencies.nix { })
-    depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
-
-  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm";
-
-  preConfigure = callFile ../common/pre-configure.nix { };
-
-  dontDisableStatic = true;
-
-  configurePlatforms = [ "build" "host" "target" ];
-
-  configureFlags = callFile ../common/configure-flags.nix { };
-
-  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
-
-  buildFlags = optional
-    (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
-    (if profiledCompiler then "profiledbootstrap" else "bootstrap");
-
-  # https://gcc.gnu.org/PR109898
-  enableParallelInstalling = false;
-
-  inherit (callFile ../common/strip-attributes.nix { })
-    stripDebugList
-    stripDebugListTarget
-    preFixup;
-
-  doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv
-
-  # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
-  ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64";
-
-  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
-  # library headers and binaries, regarless of the language being compiled.
-  #
-  # Note: When building the Java AWT GTK peer, the build system doesn't honor
-  # `--with-gmp' et al., e.g., when building
-  # `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add
-  # them to $CPATH and $LIBRARY_PATH in this case.
-  #
-  # Likewise, the LTO code doesn't find zlib.
-  #
-  # Cross-compiling, we need gcc not to read ./specs in order to build the g++
-  # compiler (after the specs for the cross-gcc are created). Having
-  # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
-
-  CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
-    ++ optional (zlib != null) zlib
-    ++ optional langJava boehmgc
-    ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ]
-  ));
-
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
-    ++ optional (zlib != null) zlib
-    ++ optional langJava boehmgc
-    ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ]
-  ));
-
-  inherit (callFile ../common/extra-target-flags.nix { })
-    EXTRA_FLAGS_FOR_TARGET
-    EXTRA_LDFLAGS_FOR_TARGET
-    ;
-
-  passthru = {
-    inherit langC langCC langObjC langObjCpp langFortran langAda langGo version;
-    isGNU = true;
-    hardeningUnsupportedFlags = [ "fortify3" ];
-  };
-
-  enableParallelBuilding = true;
-  inherit enableShared enableMultilib;
-
-  meta = {
-    inherit (callFile ../common/meta.nix { })
-      homepage
-      license
-      description
-      longDescription
-      platforms
-      maintainers
-    ;
-    badPlatforms = [ "aarch64-darwin" ];
-  };
-}
-
-// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
-
-// optionalAttrs (langJava && !stdenv.hostPlatform.isDarwin) {
-     postFixup = ''
-       target="$(echo "$out/libexec/gcc"/*/*/ecj*)"
-       patchelf --set-rpath "$(patchelf --print-rpath "$target"):$out/lib" "$target"
-     '';}
-))
-[
-  (callPackage ../common/libgcc.nix   { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; })
-]
diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/default.nix b/nixpkgs/pkgs/development/compilers/gcc/7/default.nix
deleted file mode 100644
index 5b6ea7ead50a..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/7/default.nix
+++ /dev/null
@@ -1,306 +0,0 @@
-{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs
-, langC ? true, langCC ? true, langFortran ? false
-, langObjC ? stdenv.targetPlatform.isDarwin
-, langObjCpp ? stdenv.targetPlatform.isDarwin
-, langGo ? false
-, reproducibleBuild ? true
-, profiledCompiler ? false
-, langJit ? false
-, staticCompiler ? false
-, enableShared ? stdenv.targetPlatform.hasSharedLibraries
-, enableLTO ? stdenv.hostPlatform.hasSharedLibraries
-, texinfo ? null
-, perl ? null # optional, for texi2pod (then pod2man)
-, gmp, mpfr, libmpc, gettext, which, patchelf, binutils
-, isl ? null # optional, for the Graphite optimization framework.
-, zlib ? null
-, enableMultilib ? false
-, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins
-, name ? "gcc"
-, libcCross ? null
-, threadsCross ? null # for MinGW
-, withoutTargetLibc ? false
-, gnused ? null
-, cloog ? null # unused; just for compat with gcc4, as we override the parameter on some places
-, buildPackages
-, callPackage
-}:
-
-# Make sure we get GNU sed.
-assert stdenv.buildPlatform.isDarwin -> gnused != null;
-
-# The go frontend is written in c++
-assert langGo -> langCC;
-
-# threadsCross is just for MinGW
-assert threadsCross != {} -> stdenv.targetPlatform.isWindows;
-
-# profiledCompiler builds inject non-determinism in one of the compilation stages.
-# If turned on, we can't provide reproducible builds anymore
-assert reproducibleBuild -> profiledCompiler == false;
-
-with lib;
-with builtins;
-
-let majorVersion = "7";
-    version = "${majorVersion}.5.0";
-
-    inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-    patches =
-      [ # https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00633.html
-        ./riscv-pthread-reentrant.patch
-        # https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00297.html
-        ./riscv-no-relax.patch
-        # Fix for asan w/glibc-2.34. Although there's no upstream backport to v7,
-        # the patch from gcc 8 seems to work perfectly fine.
-        ./gcc8-asan-glibc-2.34.patch
-
-        ./0001-Fix-build-for-glibc-2.31.patch
-
-        # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431
-        ../fix-bug-80431.patch
-
-        ../9/fix-struct-redefinition-on-glibc-2.36.patch
-      ]
-      ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
-      ++ optionals targetPlatform.isNetBSD [
-        ../libstdc++-netbsd-ctypes.patch
-      ]
-      ++ optional noSysDirs ../no-sys-dirs.patch
-      ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied
-        url = "https://git.busybox.net/buildroot/plain/package/gcc/7.1.0/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02";
-        sha256 = "0mrvxsdwip2p3l17dscpc1x8vhdsciqw1z5q9i6p5g9yg1cqnmgs";
-      })
-      ++ optional langFortran ../gfortran-driving.patch
-      ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch
-      ++ optional (targetPlatform.libc == "musl" && targetPlatform.isx86_32) (fetchpatch {
-        url = "https://git.alpinelinux.org/aports/plain/main/gcc/gcc-6.1-musl-libssp.patch?id=5e4b96e23871ee28ef593b439f8c07ca7c7eb5bb";
-        sha256 = "1jf1ciz4gr49lwyh8knfhw6l5gvfkwzjy90m7qiwkcbsf4a3fqn2";
-      })
-      ++ optional (targetPlatform.libc == "musl") ../libgomp-dont-force-initial-exec.patch
-
-      # Obtain latest patch with ../update-mcfgthread-patches.sh
-      ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch
-
-      ++ [ ../libsanitizer-no-cyclades-9.patch ];
-
-    /* Cross-gcc settings (build == host != target) */
-    crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
-    stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final";
-    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
-
-    callFile = lib.callPackageWith {
-      # lets
-      inherit
-        majorVersion
-        version
-        buildPlatform
-        hostPlatform
-        targetPlatform
-        patches
-        crossMingw
-        stageNameAddon
-        crossNameAddon
-      ;
-      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc7.cc.override)" | jq '.[]' --raw-output'
-      inherit
-        binutils
-        buildPackages
-        cloog
-        withoutTargetLibc
-        enableLTO
-        enableMultilib
-        enablePlugin
-        enableShared
-        fetchpatch
-        fetchurl
-        gettext
-        gmp
-        gnused
-        isl
-        langC
-        langCC
-        langFortran
-        langGo
-        langJit
-        langObjC
-        langObjCpp
-        lib
-        libcCross
-        libmpc
-        mpfr
-        name
-        noSysDirs
-        patchelf
-        perl
-        profiledCompiler
-        reproducibleBuild
-        staticCompiler
-        stdenv
-        targetPackages
-        texinfo
-        threadsCross
-        which
-        zip
-        zlib
-      ;
-    };
-
-in
-
-lib.pipe (stdenv.mkDerivation ({
-  pname = "${crossNameAddon}${name}";
-  inherit version;
-
-  builder = ../builder.sh;
-
-  src = fetchurl {
-    url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz";
-    sha256 = "0qg6kqc5l72hpnj4vr6l0p69qav0rh4anlkk3y55540zy3klc6dq";
-  };
-
-  inherit patches;
-
-  outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib";
-  setOutputFlags = false;
-  NIX_NO_SELF_RPATH = true;
-
-  libc_dev = stdenv.cc.libc_dev;
-
-  hardeningDisable = [ "format" "pie" ];
-
-  postPatch = ''
-    configureScripts=$(find . -name configure)
-    for configureScript in $configureScripts; do
-      patchShebangs $configureScript
-    done
-  ''
-  # This should kill all the stdinc frameworks that gcc and friends like to
-  # insert into default search paths.
-  + lib.optionalString hostPlatform.isDarwin ''
-    substituteInPlace gcc/config/darwin-c.c \
-      --replace 'if (stdinc)' 'if (0)'
-
-    substituteInPlace libgcc/config/t-slibgcc-darwin \
-      --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
-
-    substituteInPlace libgfortran/configure \
-      --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
-  ''
-  + (
-    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
-      # On NixOS, use the right path to the dynamic linker instead of
-      # `/lib/ld*.so'.
-      (let
-        libc = if libcCross != null then libcCross else stdenv.cc.libc;
-      in
-        (
-        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER', \`UCLIBC_DYNAMIC_LINKER', and \`MUSL_DYNAMIC_LINKER' macros..."
-           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
-           do
-             grep -q _DYNAMIC_LINKER "$header" || continue
-             echo "  fixing \`$header'..."
-             sed -i "$header" \
-                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g' \
-                 -e 's|define[[:blank:]]*MUSL_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define MUSL_DYNAMIC_LINKER\1 "${libc.out}\2"|g'
-           done
-        ''
-        + lib.optionalString (targetPlatform.libc == "musl")
-        ''
-            sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
-        ''
-        ))
-    )
-      + lib.optionalString targetPlatform.isAvr ''
-        makeFlagsArray+=(
-           'LIMITS_H_TEST=false'
-        )
-      '';
-
-  inherit noSysDirs staticCompiler withoutTargetLibc
-    libcCross crossMingw;
-
-  inherit (callFile ../common/dependencies.nix { })
-    depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
-
-  env.NIX_CFLAGS_COMPILE = lib.optionalString (stdenv.cc.isClang && langFortran) "-Wno-unused-command-line-argument";
-  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm";
-
-  preConfigure = callFile ../common/pre-configure.nix { };
-
-  dontDisableStatic = true;
-
-  configurePlatforms = [ "build" "host" "target" ];
-
-  configureFlags = (callFile ../common/configure-flags.nix { })
-    ++ optional (targetPlatform.isAarch64) "--enable-fix-cortex-a53-843419"
-    ++ optional targetPlatform.isNetBSD "--disable-libcilkrts"
-  ;
-
-  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
-
-  buildFlags = optional
-    (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
-    (if profiledCompiler then "profiledbootstrap" else "bootstrap");
-
-  # https://gcc.gnu.org/PR109898
-  enableParallelInstalling = false;
-
-  inherit (callFile ../common/strip-attributes.nix { })
-    stripDebugList
-    stripDebugListTarget
-    preFixup;
-
-  doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv
-
-  # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
-  ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64";
-
-  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
-  # library headers and binaries, regarless of the language being compiled.
-  #
-  # Likewise, the LTO code doesn't find zlib.
-  #
-  # Cross-compiling, we need gcc not to read ./specs in order to build the g++
-  # compiler (after the specs for the cross-gcc are created). Having
-  # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
-
-  CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
-    ++ optional (zlib != null) zlib
-  ));
-
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
-
-  inherit (callFile ../common/extra-target-flags.nix { })
-    EXTRA_FLAGS_FOR_TARGET
-    EXTRA_LDFLAGS_FOR_TARGET
-    ;
-
-  passthru = {
-    inherit langC langCC langObjC langObjCpp langFortran langGo version;
-    isGNU = true;
-    hardeningUnsupportedFlags = [ "fortify3" ];
-  };
-
-  enableParallelBuilding = true;
-  inherit enableShared enableMultilib;
-
-  meta = {
-    inherit (callFile ../common/meta.nix { })
-      homepage
-      license
-      description
-      longDescription
-      platforms
-      maintainers
-    ;
-    badPlatforms = [ "aarch64-darwin" ];
-  };
-}
-
-// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
-))
-[
-  (callPackage ../common/libgcc.nix   { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; })
-]
diff --git a/nixpkgs/pkgs/development/compilers/gcc/8/default.nix b/nixpkgs/pkgs/development/compilers/gcc/8/default.nix
deleted file mode 100644
index f903e264b0af..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/8/default.nix
+++ /dev/null
@@ -1,281 +0,0 @@
-{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs
-, langC ? true, langCC ? true, langFortran ? false
-, langObjC ? stdenv.targetPlatform.isDarwin
-, langObjCpp ? stdenv.targetPlatform.isDarwin
-, langGo ? false
-, reproducibleBuild ? true
-, profiledCompiler ? false
-, langJit ? false
-, staticCompiler ? false
-, enableShared ? stdenv.targetPlatform.hasSharedLibraries
-, enableLTO ? stdenv.hostPlatform.hasSharedLibraries
-, texinfo ? null
-, perl ? null # optional, for texi2pod (then pod2man)
-, gmp, mpfr, libmpc, gettext, which, patchelf, binutils
-, isl ? null # optional, for the Graphite optimization framework.
-, zlib ? null
-, enableMultilib ? false
-, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins
-, name ? "gcc"
-, libcCross ? null
-, threadsCross ? null # for MinGW
-, withoutTargetLibc ? false
-, gnused ? null
-, cloog ? null # unused; just for compat with gcc4, as we override the parameter on some places
-, buildPackages
-, callPackage
-}:
-
-# Make sure we get GNU sed.
-assert stdenv.buildPlatform.isDarwin -> gnused != null;
-
-# The go frontend is written in c++
-assert langGo -> langCC;
-
-# threadsCross is just for MinGW
-assert threadsCross != {} -> stdenv.targetPlatform.isWindows;
-
-# profiledCompiler builds inject non-determinism in one of the compilation stages.
-# If turned on, we can't provide reproducible builds anymore
-assert reproducibleBuild -> profiledCompiler == false;
-
-with lib;
-with builtins;
-
-let majorVersion = "8";
-    version = "${majorVersion}.5.0";
-
-    inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-    patches = [
-      # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431
-      ../fix-bug-80431.patch
-      ../9/fix-struct-redefinition-on-glibc-2.36.patch
-    ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
-      ++ optional targetPlatform.isNetBSD ../libstdc++-netbsd-ctypes.patch
-      ++ optional noSysDirs ../no-sys-dirs.patch
-      /* ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied
-        url = "https://git.busybox.net/buildroot/plain/package/gcc/${version}/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02";
-        sha256 = ""; # TODO: uncomment and check hash when available.
-      }) */
-      ++ optional langFortran ../gfortran-driving.patch
-      ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch
-      ++ optional (targetPlatform.libc == "musl") ../libgomp-dont-force-initial-exec.patch
-
-      # Obtain latest patch with ../update-mcfgthread-patches.sh
-      ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch
-      ++ [ ../libsanitizer-no-cyclades-9.patch ];
-
-    /* Cross-gcc settings (build == host != target) */
-    crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
-    stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final";
-    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
-
-    callFile = lib.callPackageWith {
-      # lets
-      inherit
-        majorVersion
-        version
-        buildPlatform
-        hostPlatform
-        targetPlatform
-        patches
-        crossMingw
-        stageNameAddon
-        crossNameAddon
-      ;
-      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc8.cc.override)" | jq '.[]' --raw-output'
-      inherit
-        binutils
-        buildPackages
-        cloog
-        withoutTargetLibc
-        enableLTO
-        enableMultilib
-        enablePlugin
-        enableShared
-        fetchpatch
-        fetchurl
-        gettext
-        gmp
-        gnused
-        isl
-        langC
-        langCC
-        langFortran
-        langGo
-        langJit
-        langObjC
-        langObjCpp
-        lib
-        libcCross
-        libmpc
-        mpfr
-        name
-        noSysDirs
-        patchelf
-        perl
-        profiledCompiler
-        reproducibleBuild
-        staticCompiler
-        stdenv
-        targetPackages
-        texinfo
-        threadsCross
-        which
-        zip
-        zlib
-      ;
-    };
-
-in
-
-lib.pipe (stdenv.mkDerivation ({
-  pname = "${crossNameAddon}${name}";
-  inherit version;
-
-  builder = ../builder.sh;
-
-  src = fetchurl {
-    url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz";
-    sha256 = "0l7d4m9jx124xsk6xardchgy2k5j5l2b15q322k31f0va4d8826k";
-  };
-
-  inherit patches;
-
-  outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib";
-  setOutputFlags = false;
-  NIX_NO_SELF_RPATH = true;
-
-  libc_dev = stdenv.cc.libc_dev;
-
-  hardeningDisable = [ "format" "pie" ];
-
-  postPatch = ''
-    configureScripts=$(find . -name configure)
-    for configureScript in $configureScripts; do
-      patchShebangs $configureScript
-    done
-  ''
-  # This should kill all the stdinc frameworks that gcc and friends like to
-  # insert into default search paths.
-  + lib.optionalString hostPlatform.isDarwin ''
-    substituteInPlace gcc/config/darwin-c.c \
-      --replace 'if (stdinc)' 'if (0)'
-
-    substituteInPlace libgcc/config/t-slibgcc-darwin \
-      --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
-
-    substituteInPlace libgfortran/configure \
-      --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
-  ''
-  + (
-    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
-      # On NixOS, use the right path to the dynamic linker instead of
-      # `/lib/ld*.so'.
-      (let
-        libc = if libcCross != null then libcCross else stdenv.cc.libc;
-      in
-        (
-        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER', \`UCLIBC_DYNAMIC_LINKER', and \`MUSL_DYNAMIC_LINKER' macros..."
-           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
-           do
-             grep -q _DYNAMIC_LINKER "$header" || continue
-             echo "  fixing \`$header'..."
-             sed -i "$header" \
-                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g' \
-                 -e 's|define[[:blank:]]*MUSL_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define MUSL_DYNAMIC_LINKER\1 "${libc.out}\2"|g'
-           done
-        ''
-        + lib.optionalString (targetPlatform.libc == "musl")
-        ''
-            sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
-        ''
-        ))
-    )
-      + lib.optionalString targetPlatform.isAvr ''
-            makeFlagsArray+=(
-               'LIMITS_H_TEST=false'
-            )
-          '';
-
-  inherit noSysDirs staticCompiler withoutTargetLibc
-    libcCross crossMingw;
-
-  inherit (callFile ../common/dependencies.nix { })
-    depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
-
-  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm";
-
-  preConfigure = callFile ../common/pre-configure.nix { };
-
-  dontDisableStatic = true;
-
-  configurePlatforms = [ "build" "host" "target" ];
-
-  configureFlags = callFile ../common/configure-flags.nix { };
-
-  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
-
-  buildFlags = optional
-    (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
-    (if profiledCompiler then "profiledbootstrap" else "bootstrap");
-
-  # https://gcc.gnu.org/PR109898
-  enableParallelInstalling = false;
-
-  inherit (callFile ../common/strip-attributes.nix { })
-    stripDebugList
-    stripDebugListTarget
-    preFixup;
-
-  # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
-  ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64";
-
-  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
-  # library headers and binaries, regarless of the language being compiled.
-  #
-  # Likewise, the LTO code doesn't find zlib.
-  #
-  # Cross-compiling, we need gcc not to read ./specs in order to build the g++
-  # compiler (after the specs for the cross-gcc are created). Having
-  # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
-
-  CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
-    ++ optional (zlib != null) zlib
-  ));
-
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
-
-  inherit (callFile ../common/extra-target-flags.nix { })
-    EXTRA_FLAGS_FOR_TARGET
-    EXTRA_LDFLAGS_FOR_TARGET
-    ;
-
-  passthru = {
-    inherit langC langCC langObjC langObjCpp langFortran langGo version;
-    isGNU = true;
-    hardeningUnsupportedFlags = [ "fortify3" ];
-  };
-
-  enableParallelBuilding = true;
-  inherit enableShared enableMultilib;
-
-  meta = {
-    inherit (callFile ../common/meta.nix { })
-      homepage
-      license
-      description
-      longDescription
-      platforms
-      maintainers
-    ;
-    badPlatforms = [ "aarch64-darwin" ];
-  };
-}
-
-// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
-))
-[
-  (callPackage ../common/libgcc.nix   { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; })
-]
diff --git a/nixpkgs/pkgs/development/compilers/gcc/9/default.nix b/nixpkgs/pkgs/development/compilers/gcc/9/default.nix
deleted file mode 100644
index 289212a13635..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/9/default.nix
+++ /dev/null
@@ -1,296 +0,0 @@
-{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs
-, langC ? true, langCC ? true, langFortran ? false
-, langAda ? false
-, langObjC ? stdenv.targetPlatform.isDarwin
-, langObjCpp ? stdenv.targetPlatform.isDarwin
-, langD ? false
-, langGo ? false
-, reproducibleBuild ? true
-, profiledCompiler ? false
-, langJit ? false
-, staticCompiler ? false
-, enableShared ? stdenv.targetPlatform.hasSharedLibraries
-, enableLTO ? stdenv.hostPlatform.hasSharedLibraries
-, texinfo ? null
-, perl ? null # optional, for texi2pod (then pod2man)
-, gmp, mpfr, libmpc, gettext, which, patchelf, binutils
-, isl ? null # optional, for the Graphite optimization framework.
-, zlib ? null
-, gnat-bootstrap ? null
-, enableMultilib ? false
-, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins
-, name ? "gcc"
-, libcCross ? null
-, threadsCross ? null # for MinGW
-, withoutTargetLibc ? false
-, gnused ? null
-, cloog # unused; just for compat with gcc4, as we override the parameter on some places
-, buildPackages
-, callPackage
-}:
-
-# Note: this package is used for bootstrapping fetchurl, and thus
-# cannot use fetchpatch! All mutable patches (generated by GitHub or
-# cgit) that are needed here should be included directly in Nixpkgs as
-# files.
-
-# Make sure we get GNU sed.
-assert stdenv.buildPlatform.isDarwin -> gnused != null;
-
-# The go frontend is written in c++
-assert langGo -> langCC;
-assert langAda -> gnat-bootstrap != null;
-
-# threadsCross is just for MinGW
-assert threadsCross != {} -> stdenv.targetPlatform.isWindows;
-
-# profiledCompiler builds inject non-determinism in one of the compilation stages.
-# If turned on, we can't provide reproducible builds anymore
-assert reproducibleBuild -> profiledCompiler == false;
-
-with lib;
-with builtins;
-
-let majorVersion = "9";
-    version = "${majorVersion}.5.0";
-
-    inherit (stdenv) buildPlatform hostPlatform targetPlatform;
-
-    patches = [
-      ./fix-struct-redefinition-on-glibc-2.36.patch
-      # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431
-      ../fix-bug-80431.patch
-    ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
-      ++ optional targetPlatform.isNetBSD ../libstdc++-netbsd-ctypes.patch
-      ++ optional noSysDirs ../no-sys-dirs.patch
-      ++ optional (noSysDirs && hostPlatform.isRiscV) ../no-sys-dirs-riscv-gcc9.patch
-      /* ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied
-        url = "https://git.busybox.net/buildroot/plain/package/gcc/${version}/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02";
-        sha256 = ""; # TODO: uncomment and check hash when available.
-      }) */
-      ++ optional langAda ../gnat-cflags.patch
-      ++ optional langD ../libphobos.patch
-      ++ optional langFortran ../gfortran-driving.patch
-      ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch
-
-      # Obtain latest patch with ../update-mcfgthread-patches.sh
-      ++ optional (!withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch
-      ;
-
-    /* Cross-gcc settings (build == host != target) */
-    crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
-    stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final";
-    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
-
-    callFile = lib.callPackageWith {
-      # lets
-      inherit
-        majorVersion
-        version
-        buildPlatform
-        hostPlatform
-        targetPlatform
-        patches
-        crossMingw
-        stageNameAddon
-        crossNameAddon
-      ;
-      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc9.cc.override)" | jq '.[]' --raw-output'
-      inherit
-        binutils
-        buildPackages
-        cloog
-        withoutTargetLibc
-        enableLTO
-        enableMultilib
-        enablePlugin
-        enableShared
-        fetchpatch
-        fetchurl
-        gettext
-        gmp
-        gnat-bootstrap
-        gnused
-        isl
-        langAda
-        langC
-        langCC
-        langD
-        langFortran
-        langGo
-        langJit
-        langObjC
-        langObjCpp
-        lib
-        libcCross
-        libmpc
-        mpfr
-        name
-        noSysDirs
-        patchelf
-        perl
-        profiledCompiler
-        reproducibleBuild
-        staticCompiler
-        stdenv
-        targetPackages
-        texinfo
-        threadsCross
-        which
-        zip
-        zlib
-      ;
-    };
-
-in
-
-lib.pipe (stdenv.mkDerivation ({
-  pname = "${crossNameAddon}${name}";
-  inherit version;
-
-  builder = ../builder.sh;
-
-  src = fetchurl {
-    url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz";
-    sha256 = "13ygjmd938m0wmy946pxdhz9i1wq7z4w10l6pvidak0xxxj9yxi7";
-  };
-
-  inherit patches;
-
-  outputs = [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib";
-  setOutputFlags = false;
-  NIX_NO_SELF_RPATH = true;
-
-  libc_dev = stdenv.cc.libc_dev;
-
-  hardeningDisable = [ "format" "pie" ];
-
-  postPatch = ''
-    configureScripts=$(find . -name configure)
-    for configureScript in $configureScripts; do
-      patchShebangs $configureScript
-    done
-  ''
-  # This should kill all the stdinc frameworks that gcc and friends like to
-  # insert into default search paths.
-  + lib.optionalString hostPlatform.isDarwin ''
-    substituteInPlace gcc/config/darwin-c.c \
-      --replace 'if (stdinc)' 'if (0)'
-
-    substituteInPlace libgcc/config/t-slibgcc-darwin \
-      --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
-
-    substituteInPlace libgfortran/configure \
-      --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
-  ''
-  + (
-    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
-      # On NixOS, use the right path to the dynamic linker instead of
-      # `/lib/ld*.so'.
-      (let
-        libc = if libcCross != null then libcCross else stdenv.cc.libc;
-      in
-        (
-        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER', \`UCLIBC_DYNAMIC_LINKER', and \`MUSL_DYNAMIC_LINKER' macros..."
-           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
-           do
-             grep -q _DYNAMIC_LINKER "$header" || continue
-             echo "  fixing \`$header'..."
-             sed -i "$header" \
-                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g' \
-                 -e 's|define[[:blank:]]*MUSL_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define MUSL_DYNAMIC_LINKER\1 "${libc.out}\2"|g'
-           done
-        ''
-        + lib.optionalString (targetPlatform.libc == "musl")
-        ''
-            sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
-        ''
-        ))
-    )
-      + lib.optionalString targetPlatform.isAvr ''
-          makeFlagsArray+=(
-             'LIMITS_H_TEST=false'
-          )
-        '';
-
-  inherit noSysDirs staticCompiler withoutTargetLibc
-    libcCross crossMingw;
-
-  inherit (callFile ../common/dependencies.nix { })
-    depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
-
-  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm";
-
-  preConfigure = callFile ../common/pre-configure.nix { };
-
-  dontDisableStatic = true;
-
-  configurePlatforms = [ "build" "host" "target" ];
-
-  configureFlags = callFile ../common/configure-flags.nix { };
-
-  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
-
-  buildFlags = optional
-    (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
-    (if profiledCompiler then "profiledbootstrap" else "bootstrap");
-
-  # https://gcc.gnu.org/PR109898
-  enableParallelInstalling = false;
-
-  inherit (callFile ../common/strip-attributes.nix { })
-    stripDebugList
-    stripDebugListTarget
-    preFixup;
-
-  # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
-  ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64";
-
-  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
-  # library headers and binaries, regarless of the language being compiled.
-  #
-  # Likewise, the LTO code doesn't find zlib.
-  #
-  # Cross-compiling, we need gcc not to read ./specs in order to build the g++
-  # compiler (after the specs for the cross-gcc are created). Having
-  # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
-
-  CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
-    ++ optional (zlib != null) zlib
-  ));
-
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
-
-  inherit (callFile ../common/extra-target-flags.nix { })
-    EXTRA_FLAGS_FOR_TARGET
-    EXTRA_LDFLAGS_FOR_TARGET
-    ;
-
-  passthru = {
-    inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version;
-    isGNU = true;
-    hardeningUnsupportedFlags = [ "fortify3" ];
-  };
-
-  enableParallelBuilding = true;
-  inherit enableShared enableMultilib;
-
-  meta = {
-    inherit (callFile ../common/meta.nix { })
-      homepage
-      license
-      description
-      longDescription
-      platforms
-      maintainers
-    ;
-    badPlatforms = [ "aarch64-darwin" ];
-  };
-}
-
-
-// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
-)
-) [
-  (callPackage ../common/libgcc.nix   { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; })
-]
diff --git a/nixpkgs/pkgs/development/compilers/gcc/builder.sh b/nixpkgs/pkgs/development/compilers/gcc/builder.sh
deleted file mode 100644
index d9016c45e579..000000000000
--- a/nixpkgs/pkgs/development/compilers/gcc/builder.sh
+++ /dev/null
@@ -1,290 +0,0 @@
-if [ -e .attrs.sh ]; then source .attrs.sh; fi
-source $stdenv/setup
-
-
-oldOpts="$(shopt -po nounset)" || true
-set -euo pipefail
-
-
-export NIX_FIXINC_DUMMY="$NIX_BUILD_TOP/dummy"
-mkdir "$NIX_FIXINC_DUMMY"
-
-
-if test "$staticCompiler" = "1"; then
-    EXTRA_LDFLAGS="-static"
-else
-    EXTRA_LDFLAGS="-Wl,-rpath,${!outputLib}/lib"
-fi
-
-
-# GCC interprets empty paths as ".", which we don't want.
-if test -z "${CPATH-}"; then unset CPATH; fi
-if test -z "${LIBRARY_PATH-}"; then unset LIBRARY_PATH; fi
-echo "\$CPATH is \`${CPATH-}'"
-echo "\$LIBRARY_PATH is \`${LIBRARY_PATH-}'"
-
-if test "$noSysDirs" = "1"; then
-
-    declare \
-        EXTRA_FLAGS_FOR_BUILD EXTRA_FLAGS EXTRA_FLAGS_FOR_TARGET \
-        EXTRA_LDFLAGS_FOR_BUILD EXTRA_LDFLAGS_FOR_TARGET
-
-    # Extract flags from Bintools Wrappers
-    for post in '_FOR_BUILD' ''; do
-        curBintools="NIX_BINTOOLS${post}"
-
-        declare -a extraLDFlags=()
-        if [[ -e "${!curBintools}/nix-support/orig-libc" ]]; then
-            # Figure out what extra flags when linking to pass to the gcc
-            # compilers being generated to make sure that they use our libc.
-            extraLDFlags=($(< "${!curBintools}/nix-support/libc-ldflags") $(< "${!curBintools}/nix-support/libc-ldflags-before" || true))
-            if [ -e ${!curBintools}/nix-support/ld-set-dynamic-linker ]; then
-                extraLDFlags=-dynamic-linker=$(< ${!curBintools}/nix-support/dynamic-linker)
-            fi
-
-            # The path to the Libc binaries such as `crti.o'.
-            libc_libdir="$(< "${!curBintools}/nix-support/orig-libc")/lib"
-        else
-            # Hack: support impure environments.
-            extraLDFlags=("-L/usr/lib64" "-L/usr/lib")
-            libc_libdir="/usr/lib"
-        fi
-        extraLDFlags=("-L$libc_libdir" "-rpath" "$libc_libdir"
-                      "${extraLDFlags[@]}")
-        for i in "${extraLDFlags[@]}"; do
-            declare EXTRA_LDFLAGS${post}+=" -Wl,$i"
-        done
-    done
-
-    # Extract flags from CC Wrappers
-    for post in '_FOR_BUILD' ''; do
-        curCC="NIX_CC${post}"
-        curFIXINC="NIX_FIXINC_DUMMY${post}"
-
-        declare -a extraFlags=()
-        if [[ -e "${!curCC}/nix-support/orig-libc" ]]; then
-            # Figure out what extra compiling flags to pass to the gcc compilers
-            # being generated to make sure that they use our libc.
-            extraFlags=($(< "${!curCC}/nix-support/libc-crt1-cflags") $(< "${!curCC}/nix-support/libc-cflags"))
-
-            # The path to the Libc headers
-            libc_devdir="$(< "${!curCC}/nix-support/orig-libc-dev")"
-
-            # Use *real* header files, otherwise a limits.h is generated that
-            # does not include Libc's limits.h (notably missing SSIZE_MAX,
-            # which breaks the build).
-            declare NIX_FIXINC_DUMMY${post}="$libc_devdir/include"
-        else
-            # Hack: support impure environments.
-            extraFlags=("-isystem" "/usr/include")
-            declare NIX_FIXINC_DUMMY${post}=/usr/include
-        fi
-
-        extraFlags=("-I${!curFIXINC}" "${extraFlags[@]}")
-
-        # BOOT_CFLAGS defaults to `-g -O2'; since we override it below, make
-        # sure to explictly add them so that files compiled with the bootstrap
-        # compiler are optimized and (optionally) contain debugging information
-        # (info "(gccinstall) Building").
-        if test -n "${dontStrip-}"; then
-            extraFlags=("-O2" "-g" "${extraFlags[@]}")
-        else
-            # Don't pass `-g' at all; this saves space while building.
-            extraFlags=("-O2" "${extraFlags[@]}")
-        fi
-
-        declare EXTRA_FLAGS${post}="${extraFlags[*]}"
-    done
-
-    if test -z "${targetConfig-}"; then
-        # host = target, so the flags are the same
-        EXTRA_FLAGS_FOR_TARGET="$EXTRA_FLAGS"
-        EXTRA_LDFLAGS_FOR_TARGET="$EXTRA_LDFLAGS"
-    fi
-
-    # CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find
-    # the startfiles.
-    # FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx
-    # for the startfiles.
-    makeFlagsArray+=(
-        "BUILD_SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY_FOR_BUILD"
-        "SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY_FOR_BUILD"
-        "NATIVE_SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY"
-
-        "LDFLAGS_FOR_BUILD=$EXTRA_LDFLAGS_FOR_BUILD"
-        #"LDFLAGS=$EXTRA_LDFLAGS"
-        "LDFLAGS_FOR_TARGET=$EXTRA_LDFLAGS_FOR_TARGET"
-
-        "CFLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD"
-        "CXXFLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD"
-        "FLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD"
-
-        # It seems there is a bug in GCC 5
-        #"CFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS"
-        #"CXXFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS"
-
-        "CFLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET"
-        "CXXFLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET"
-        "FLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET"
-    )
-
-    if test -z "${targetConfig-}"; then
-        makeFlagsArray+=(
-            "BOOT_CFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS"
-            "BOOT_LDFLAGS=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET"
-        )
-    fi
-
-    if test "$withoutTargetLibc" == 1; then
-        # We don't want the gcc build to assume there will be a libc providing
-        # limits.h in this stage
-        makeFlagsArray+=(
-            'LIMITS_H_TEST=false'
-        )
-    else
-        makeFlagsArray+=(
-            'LIMITS_H_TEST=true'
-        )
-    fi
-fi
-
-eval "$oldOpts"
-
-providedPreConfigure="$preConfigure";
-preConfigure() {
-    if test -n "$newlibSrc"; then
-        tar xvf "$newlibSrc" -C ..
-        ln -s ../newlib-*/newlib newlib
-        # Patch to get armvt5el working:
-        sed -i -e 's/ arm)/ arm*)/' newlib/configure.host
-    fi
-
-    # Bug - they packaged zlib
-    if test -d "zlib"; then
-        # This breaks the build without-headers, which should build only
-        # the target libgcc as target libraries.
-        # See 'configure:5370'
-        rm -Rf zlib
-    fi
-
-    if test -n "$crossMingw" -a -n "$withoutTargetLibc"; then
-        mkdir -p ../mingw
-        # --with-build-sysroot expects that:
-        cp -R $libcCross/include ../mingw
-        configureFlags="$configureFlags --with-build-sysroot=`pwd`/.."
-    fi
-
-    # Eval the preConfigure script from nix expression.
-    eval "$providedPreConfigure"
-
-    # Perform the build in a different directory.
-    mkdir ../build
-    cd ../build
-    configureScript=../$sourceRoot/configure
-}
-
-
-postConfigure() {
-    # Avoid store paths when embedding ./configure flags into gcc.
-    # Mangled arguments are still useful when reporting bugs upstream.
-    sed -e "/TOPLEVEL_CONFIGURE_ARGUMENTS=/ s|$NIX_STORE/[a-z0-9]\{32\}-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" -i Makefile
-}
-
-
-preInstall() {
-    mkdir -p "$out/${targetConfig}/lib"
-    mkdir -p "${!outputLib}/${targetConfig}/lib"
-    # Make ‘lib64’ symlinks to ‘lib’.
-    if [ -n "$linkLib64toLib" ]; then
-        ln -s lib "$out/${targetConfig}/lib64"
-        ln -s lib "${!outputLib}/${targetConfig}/lib64"
-    fi
-    # Make ‘lib32’ symlinks to ‘lib’.
-    if [ -n "$linkLib32toLib" ]; then
-        ln -s lib "$out/${targetConfig}/lib32"
-        ln -s lib "${!outputLib}/${targetConfig}/lib32"
-    fi
-}
-
-
-postInstall() {
-    # Move runtime libraries to lib output.
-    moveToOutput "${targetConfig+$targetConfig/}lib/lib*.so*" "${!outputLib}"
-    moveToOutput "${targetConfig+$targetConfig/}lib/lib*.la"  "${!outputLib}"
-    moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dylib" "${!outputLib}"
-    moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dll.a" "${!outputLib}"
-    moveToOutput "share/gcc-*/python" "${!outputLib}"
-
-    if [ -z "$enableShared" ]; then
-        moveToOutput "${targetConfig+$targetConfig/}lib/lib*.a" "${!outputLib}"
-    fi
-
-    for i in "${!outputLib}/${targetConfig}"/lib/*.{la,py}; do
-        substituteInPlace "$i" --replace "$out" "${!outputLib}"
-    done
-
-    if [ -n "$enableMultilib" ]; then
-        moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.so*" "${!outputLib}"
-        moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.la"  "${!outputLib}"
-        moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.dylib" "${!outputLib}"
-
-        for i in "${!outputLib}/${targetConfig}"/lib64/*.{la,py}; do
-            substituteInPlace "$i" --replace "$out" "${!outputLib}"
-        done
-    fi
-
-    # Remove `fixincl' to prevent a retained dependency on the
-    # previous gcc.
-    rm -rf $out/libexec/gcc/*/*/install-tools
-    rm -rf $out/lib/gcc/*/*/install-tools
-
-    # More dependencies with the previous gcc or some libs (gccbug stores the build command line)
-    rm -rf $out/bin/gccbug
-
-    if type "install_name_tool"; then
-        for i in "${!outputLib}"/lib/*.*.dylib "${!outputLib}"/lib/*.so.[0-9]; do
-            install_name_tool -id "$i" "$i" || true
-            for old_path in $(otool -L "$i" | grep "$out" | awk '{print $1}'); do
-              new_path=`echo "$old_path" | sed "s,$out,${!outputLib},"`
-              install_name_tool -change "$old_path" "$new_path" "$i" || true
-            done
-        done
-    fi
-
-    # Cross-compiler specific:
-    # --with-headers=$dir option triggers gcc to make a private copy
-    # of $dir headers and use it later as `-isysroot`. This prevents
-    # cc-wrapper from overriding libc headers with `-idirafter`.
-    # It should be safe to drop it and rely solely on the cc-wrapper.
-    local sysinc_dir=$out/${targetConfig+$targetConfig/}sys-include
-    if [ -d "$sysinc_dir" ]; then
-        chmod -R u+w "$out/${targetConfig+$targetConfig/}sys-include"
-        rm -rfv "$out/${targetConfig+$targetConfig/}sys-include"
-    fi
-
-    # Get rid of some "fixed" header files
-    rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux,sys/mount.h,bits/statx.h}
-
-    # Replace hard links for i686-pc-linux-gnu-gcc etc. with symlinks.
-    for i in $out/bin/*-gcc*; do
-        if cmp -s $out/bin/gcc $i; then
-            ln -sfn gcc $i
-        fi
-    done
-
-    for i in $out/bin/c++ $out/bin/*-c++* $out/bin/*-g++*; do
-        if cmp -s $out/bin/g++ $i; then
-            ln -sfn g++ $i
-        fi
-    done
-
-    # Two identical man pages are shipped (moving and compressing is done later)
-    for i in "$out"/share/man/man1/*g++.1; do
-        if test -e "$i"; then
-            man_prefix=`echo "$i" | sed "s,.*/\(.*\)g++.1,\1,"`
-            ln -sf "$man_prefix"gcc.1 "$i"
-        fi
-    done
-}
-
-genericBuild
diff --git a/nixpkgs/pkgs/development/compilers/gcc/common/builder.nix b/nixpkgs/pkgs/development/compilers/gcc/common/builder.nix
new file mode 100644
index 000000000000..6df4e32ddb76
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/gcc/common/builder.nix
@@ -0,0 +1,284 @@
+{ lib
+, stdenv
+, enableMultilib
+}:
+
+let
+  forceLibgccToBuildCrtStuff =
+    import ./libgcc-buildstuff.nix { inherit lib stdenv; };
+in
+
+originalAttrs: (stdenv.mkDerivation (finalAttrs: originalAttrs // {
+  passthru = (originalAttrs.passthru or {}) // { inherit forceLibgccToBuildCrtStuff; };
+  preUnpack = ''
+    oldOpts="$(shopt -po nounset)" || true
+    set -euo pipefail
+
+    export NIX_FIXINC_DUMMY="$NIX_BUILD_TOP/dummy"
+    mkdir "$NIX_FIXINC_DUMMY"
+
+    if test "$staticCompiler" = "1"; then
+        EXTRA_LDFLAGS="-static"
+    else
+        EXTRA_LDFLAGS="-Wl,-rpath,''${!outputLib}/lib"
+    fi
+
+    # GCC interprets empty paths as ".", which we don't want.
+    if test -z "''${CPATH-}"; then unset CPATH; fi
+    if test -z "''${LIBRARY_PATH-}"; then unset LIBRARY_PATH; fi
+    echo "\$CPATH is \`''${CPATH-}'"
+    echo "\$LIBRARY_PATH is \`''${LIBRARY_PATH-}'"
+
+    if test "$noSysDirs" = "1"; then
+
+        declare -g \
+            EXTRA_FLAGS_FOR_BUILD EXTRA_FLAGS EXTRA_FLAGS_FOR_TARGET \
+            EXTRA_LDFLAGS_FOR_BUILD EXTRA_LDFLAGS_FOR_TARGET
+
+        # Extract flags from Bintools Wrappers
+        for post in '_FOR_BUILD' ""; do
+            curBintools="NIX_BINTOOLS''${post}"
+
+            declare -a extraLDFlags=()
+            if [[ -e "''${!curBintools}/nix-support/orig-libc" ]]; then
+                # Figure out what extra flags when linking to pass to the gcc
+                # compilers being generated to make sure that they use our libc.
+                extraLDFlags=($(< "''${!curBintools}/nix-support/libc-ldflags") $(< "''${!curBintools}/nix-support/libc-ldflags-before" || true))
+                if [ -e ''${!curBintools}/nix-support/ld-set-dynamic-linker ]; then
+                    extraLDFlags=-dynamic-linker=$(< ''${!curBintools}/nix-support/dynamic-linker)
+                fi
+
+                # The path to the Libc binaries such as `crti.o'.
+                libc_libdir="$(< "''${!curBintools}/nix-support/orig-libc")/lib"
+            else
+                # Hack: support impure environments.
+                extraLDFlags=("-L/usr/lib64" "-L/usr/lib")
+                libc_libdir="/usr/lib"
+            fi
+            extraLDFlags=("-L$libc_libdir" "-rpath" "$libc_libdir"
+                          "''${extraLDFlags[@]}")
+            for i in "''${extraLDFlags[@]}"; do
+                declare -g EXTRA_LDFLAGS''${post}+=" -Wl,$i"
+            done
+        done
+
+        # Extract flags from CC Wrappers
+        for post in '_FOR_BUILD' ""; do
+            curCC="NIX_CC''${post}"
+            curFIXINC="NIX_FIXINC_DUMMY''${post}"
+
+            declare -a extraFlags=()
+            if [[ -e "''${!curCC}/nix-support/orig-libc" ]]; then
+                # Figure out what extra compiling flags to pass to the gcc compilers
+                # being generated to make sure that they use our libc.
+                extraFlags=($(< "''${!curCC}/nix-support/libc-crt1-cflags") $(< "''${!curCC}/nix-support/libc-cflags"))
+
+                # The path to the Libc headers
+                libc_devdir="$(< "''${!curCC}/nix-support/orig-libc-dev")"
+
+                # Use *real* header files, otherwise a limits.h is generated that
+                # does not include Libc's limits.h (notably missing SSIZE_MAX,
+                # which breaks the build).
+                declare -g NIX_FIXINC_DUMMY''${post}="$libc_devdir/include"
+            else
+                # Hack: support impure environments.
+                extraFlags=("-isystem" "/usr/include")
+                declare -g NIX_FIXINC_DUMMY''${post}=/usr/include
+            fi
+
+            extraFlags=("-I''${!curFIXINC}" "''${extraFlags[@]}")
+
+            # BOOT_CFLAGS defaults to `-g -O2'; since we override it below, make
+            # sure to explictly add them so that files compiled with the bootstrap
+            # compiler are optimized and (optionally) contain debugging information
+            # (info "(gccinstall) Building").
+            if test -n "''${dontStrip-}"; then
+                extraFlags=("-O2" "-g" "''${extraFlags[@]}")
+            else
+                # Don't pass `-g' at all; this saves space while building.
+                extraFlags=("-O2" "''${extraFlags[@]}")
+            fi
+
+            declare -g EXTRA_FLAGS''${post}="''${extraFlags[*]}"
+        done
+
+        if test -z "''${targetConfig-}"; then
+            # host = target, so the flags are the same
+            EXTRA_FLAGS_FOR_TARGET="$EXTRA_FLAGS"
+            EXTRA_LDFLAGS_FOR_TARGET="$EXTRA_LDFLAGS"
+        fi
+
+        # CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find
+        # the startfiles.
+        # FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx
+        # for the startfiles.
+        makeFlagsArray+=(
+            "BUILD_SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY_FOR_BUILD"
+            "SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY_FOR_BUILD"
+            "NATIVE_SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY"
+
+            "LDFLAGS_FOR_BUILD=$EXTRA_LDFLAGS_FOR_BUILD"
+            #"LDFLAGS=$EXTRA_LDFLAGS"
+            "LDFLAGS_FOR_TARGET=$EXTRA_LDFLAGS_FOR_TARGET"
+
+            "CFLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD"
+            "CXXFLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD"
+            "FLAGS_FOR_BUILD=$EXTRA_FLAGS_FOR_BUILD $EXTRA_LDFLAGS_FOR_BUILD"
+
+            # It seems there is a bug in GCC 5
+            #"CFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS"
+            #"CXXFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS"
+
+            "CFLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET"
+            "CXXFLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET"
+            "FLAGS_FOR_TARGET=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET"
+        )
+
+        if test -z "''${targetConfig-}"; then
+            makeFlagsArray+=(
+                "BOOT_CFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS"
+                "BOOT_LDFLAGS=$EXTRA_FLAGS_FOR_TARGET $EXTRA_LDFLAGS_FOR_TARGET"
+            )
+        fi
+
+        if test "$withoutTargetLibc" == 1; then
+            # We don't want the gcc build to assume there will be a libc providing
+            # limits.h in this stage
+            makeFlagsArray+=(
+                'LIMITS_H_TEST=false'
+            )
+        else
+            makeFlagsArray+=(
+                'LIMITS_H_TEST=true'
+            )
+        fi
+    fi
+
+    eval "$oldOpts"
+  '';
+
+  preConfigure = (originalAttrs.preConfigure or "") + ''
+    if test -n "$newlibSrc"; then
+        tar xvf "$newlibSrc" -C ..
+        ln -s ../newlib-*/newlib newlib
+        # Patch to get armvt5el working:
+        sed -i -e 's/ arm)/ arm*)/' newlib/configure.host
+    fi
+
+    # Bug - they packaged zlib
+    if test -d "zlib"; then
+        # This breaks the build without-headers, which should build only
+        # the target libgcc as target libraries.
+        # See 'configure:5370'
+        rm -Rf zlib
+    fi
+
+    if test -n "$crossMingw" -a -n "$withoutTargetLibc"; then
+        mkdir -p ../mingw
+        # --with-build-sysroot expects that:
+        cp -R $libcCross/include ../mingw
+        configureFlags="$configureFlags --with-build-sysroot=`pwd`/.."
+    fi
+
+    # Perform the build in a different directory.
+    mkdir ../build
+    cd ../build
+    configureScript=../$sourceRoot/configure
+  '';
+
+  postConfigure = ''
+    # Avoid store paths when embedding ./configure flags into gcc.
+    # Mangled arguments are still useful when reporting bugs upstream.
+    sed -e "/TOPLEVEL_CONFIGURE_ARGUMENTS=/ s|$NIX_STORE/[a-z0-9]\{32\}-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" -i Makefile
+  '';
+
+  preInstall = ''
+    mkdir -p "$out/''${targetConfig}/lib"
+    mkdir -p "''${!outputLib}/''${targetConfig}/lib"
+  '' +
+  # Make `lib64` symlinks to `lib`.
+  lib.optionalString (!enableMultilib && stdenv.hostPlatform.is64bit && !stdenv.hostPlatform.isMips64n32) ''
+    ln -s lib "$out/''${targetConfig}/lib64"
+    ln -s lib "''${!outputLib}/''${targetConfig}/lib64"
+  '' +
+  # On mips platforms, gcc follows the IRIX naming convention:
+  #
+  #  $PREFIX/lib   = mips32
+  #  $PREFIX/lib32 = mips64n32
+  #  $PREFIX/lib64 = mips64
+  #
+  # Make `lib32` symlinks to `lib`.
+  lib.optionalString (!enableMultilib && stdenv.targetPlatform.isMips64n32) ''
+    ln -s lib "$out/''${targetConfig}/lib32"
+    ln -s lib "''${!outputLib}/''${targetConfig}/lib32"
+  '';
+
+  postInstall = ''
+    # Move runtime libraries to lib output.
+    moveToOutput "''${targetConfig+$targetConfig/}lib/lib*.so*" "''${!outputLib}"
+    moveToOutput "''${targetConfig+$targetConfig/}lib/lib*.la"  "''${!outputLib}"
+    moveToOutput "''${targetConfig+$targetConfig/}lib/lib*.dylib" "''${!outputLib}"
+    moveToOutput "''${targetConfig+$targetConfig/}lib/lib*.dll.a" "''${!outputLib}"
+    moveToOutput "share/gcc-*/python" "''${!outputLib}"
+
+    if [ -z "$enableShared" ]; then
+        moveToOutput "''${targetConfig+$targetConfig/}lib/lib*.a" "''${!outputLib}"
+    fi
+
+    for i in "''${!outputLib}/''${targetConfig}"/lib/*.{la,py}; do
+        substituteInPlace "$i" --replace "$out" "''${!outputLib}"
+    done
+
+    if [ -n "$enableMultilib" ]; then
+        moveToOutput "''${targetConfig+$targetConfig/}lib64/lib*.so*" "''${!outputLib}"
+        moveToOutput "''${targetConfig+$targetConfig/}lib64/lib*.la"  "''${!outputLib}"
+        moveToOutput "''${targetConfig+$targetConfig/}lib64/lib*.dylib" "''${!outputLib}"
+
+        for i in "''${!outputLib}/''${targetConfig}"/lib64/*.{la,py}; do
+            substituteInPlace "$i" --replace "$out" "''${!outputLib}"
+        done
+    fi
+
+    # Remove `fixincl' to prevent a retained dependency on the
+    # previous gcc.
+    rm -rf $out/libexec/gcc/*/*/install-tools
+    rm -rf $out/lib/gcc/*/*/install-tools
+
+    # More dependencies with the previous gcc or some libs (gccbug stores the build command line)
+    rm -rf $out/bin/gccbug
+
+    if type "install_name_tool"; then
+        for i in "''${!outputLib}"/lib/*.*.dylib "''${!outputLib}"/lib/*.so.[0-9]; do
+            install_name_tool -id "$i" "$i" || true
+            for old_path in $(otool -L "$i" | grep "$out" | awk '{print $1}'); do
+              new_path=`echo "$old_path" | sed "s,$out,''${!outputLib},"`
+              install_name_tool -change "$old_path" "$new_path" "$i" || true
+            done
+        done
+    fi
+
+    # Get rid of some "fixed" header files
+    rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux,sys/mount.h,bits/statx.h}
+
+    # Replace hard links for i686-pc-linux-gnu-gcc etc. with symlinks.
+    for i in $out/bin/*-gcc*; do
+        if cmp -s $out/bin/gcc $i; then
+            ln -sfn gcc $i
+        fi
+    done
+
+    for i in $out/bin/c++ $out/bin/*-c++* $out/bin/*-g++*; do
+        if cmp -s $out/bin/g++ $i; then
+            ln -sfn g++ $i
+        fi
+    done
+
+    # Two identical man pages are shipped (moving and compressing is done later)
+    for i in "$out"/share/man/man1/*g++.1; do
+        if test -e "$i"; then
+            man_prefix=`echo "$i" | sed "s,.*/\(.*\)g++.1,\1,"`
+            ln -sf "$man_prefix"gcc.1 "$i"
+        fi
+    done
+  '';
+}))
diff --git a/nixpkgs/pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix b/nixpkgs/pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix
new file mode 100644
index 000000000000..e7dc570a560c
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix
@@ -0,0 +1,37 @@
+{ lib
+, stdenv
+}:
+
+# Trick to build a gcc that is capable of emitting shared libraries *without* having the
+# targetPlatform libc available beforehand.  Taken from:
+#   https://web.archive.org/web/20170222224855/http://frank.harvard.edu/~coldwell/toolchain/
+#   https://web.archive.org/web/20170224235700/http://frank.harvard.edu/~coldwell/toolchain/t-linux.diff
+let
+  # crt{i,n}.o are the first and last (respectively) object file
+  # linked when producing an executable.  Traditionally these
+  # files are delivered as part of the C library, but on GNU
+  # systems they are in fact built by GCC.  Since libgcc needs to
+  # build before glibc, we can't wait for them to be copied by
+  # glibc.  At this early pre-glibc stage these files sometimes
+  # have different names.
+  crtstuff-ofiles =
+    if stdenv.targetPlatform.isPower
+    then "ecrti.o ecrtn.o ncrti.o ncrtn.o"
+    else "crti.o crtn.o";
+
+  # Normally, `SHLIB_LC` is set to `-lc`, which means that
+  # `libgcc_s.so` cannot be built until `libc.so` is available.
+  # The assignment below clobbers this variable, removing the
+  # `-lc`.
+  #
+  # On PowerPC we add `-mnewlib`, which means "libc has not been
+  # built yet".  This causes libgcc's Makefile to use the
+  # gcc-built `{e,n}crt{n,i}.o` instead of failing to find the
+  # versions which have been repackaged in libc as `crt{n,i}.o`
+  #
+  SHLIB_LC = lib.optionalString stdenv.targetPlatform.isPower "-mnewlib";
+
+in ''
+    echo 'libgcc.a: ${crtstuff-ofiles}' >> libgcc/Makefile.in
+    echo 'SHLIB_LC=${SHLIB_LC}' >> libgcc/Makefile.in
+  ''
diff --git a/nixpkgs/pkgs/development/compilers/gcc/common/libgcc.nix b/nixpkgs/pkgs/development/compilers/gcc/common/libgcc.nix
index b14d111e361f..4ab6eb2b3b44 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/common/libgcc.nix
+++ b/nixpkgs/pkgs/development/compilers/gcc/common/libgcc.nix
@@ -44,14 +44,14 @@ lib.optional (lib.versionAtLeast version "11.0")
     !langJit &&
     !stdenv.hostPlatform.isDarwin &&
     enableShared
-    ;
+  ;
 
-    # For some reason libgcc_s.so has major-version "2" on m68k but
-    # "1" everywhere else.  Might be worth changing this to "*".
-    libgcc_s-version-major =
-      if targetPlatform.isM68k
-      then "2"
-      else "1";
+  # For some reason libgcc_s.so has major-version "2" on m68k but
+  # "1" everywhere else.  Might be worth changing this to "*".
+  libgcc_s-version-major =
+    if targetPlatform.isM68k
+    then "2"
+    else "1";
 
 in
 (pkg: pkg.overrideAttrs (previousAttrs: lib.optionalAttrs ((!langC) || langJit || enableLibGccOutput) {
diff --git a/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix b/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix
index e386693b22c7..5cb2f186fd1d 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix
+++ b/nixpkgs/pkgs/development/compilers/gcc/common/pre-configure.nix
@@ -112,52 +112,5 @@ in lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) ''
   export inhibit_libc=true
 ''
 
-# Trick to build a gcc that is capable of emitting shared libraries *without* having the
-# targetPlatform libc available beforehand.  Taken from:
-#   https://web.archive.org/web/20170222224855/http://frank.harvard.edu/~coldwell/toolchain/
-#   https://web.archive.org/web/20170224235700/http://frank.harvard.edu/~coldwell/toolchain/t-linux.diff
 + lib.optionalString (targetPlatform != hostPlatform && withoutTargetLibc && enableShared)
-  (let
-
-    # crt{i,n}.o are the first and last (respectively) object file
-    # linked when producing an executable.  Traditionally these
-    # files are delivered as part of the C library, but on GNU
-    # systems they are in fact built by GCC.  Since libgcc needs to
-    # build before glibc, we can't wait for them to be copied by
-    # glibc.  At this early pre-glibc stage these files sometimes
-    # have different names.
-    crtstuff-ofiles =
-      if targetPlatform.isPower
-      then "ecrti.o ecrtn.o ncrti.o ncrtn.o"
-      else "crti.o crtn.o";
-
-    # Normally, `SHLIB_LC` is set to `-lc`, which means that
-    # `libgcc_s.so` cannot be built until `libc.so` is available.
-    # The assignment below clobbers this variable, removing the
-    # `-lc`.
-    #
-    # On PowerPC we add `-mnewlib`, which means "libc has not been
-    # built yet".  This causes libgcc's Makefile to use the
-    # gcc-built `{e,n}crt{n,i}.o` instead of failing to find the
-    # versions which have been repackaged in libc as `crt{n,i}.o`
-    #
-    SHLIB_LC = lib.optionalString targetPlatform.isPower "-mnewlib";
-
-  in ''
-    echo 'libgcc.a: ${crtstuff-ofiles}' >> libgcc/Makefile.in
-    echo 'SHLIB_LC=${SHLIB_LC}' >> libgcc/Makefile.in
-  '')
-
-+ lib.optionalString (!enableMultilib && hostPlatform.is64bit && !hostPlatform.isMips64n32) ''
-  export linkLib64toLib=1
-''
-
-# On mips platforms, gcc follows the IRIX naming convention:
-#
-#  $PREFIX/lib   = mips32
-#  $PREFIX/lib32 = mips64n32
-#  $PREFIX/lib64 = mips64
-#
-+ lib.optionalString (!enableMultilib && targetPlatform.isMips64n32) ''
-  export linkLib32toLib=1
-''
+  (import ./libgcc-buildstuff.nix { inherit lib stdenv; })
diff --git a/nixpkgs/pkgs/development/compilers/gcc/default.nix b/nixpkgs/pkgs/development/compilers/gcc/default.nix
new file mode 100644
index 000000000000..f467aa32f7d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/gcc/default.nix
@@ -0,0 +1,457 @@
+{ lib, stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs
+, langC ? true, langCC ? true, langFortran ? false
+, langAda ? false
+, langObjC ? stdenv.targetPlatform.isDarwin
+, langObjCpp ? stdenv.targetPlatform.isDarwin
+, langD ? false
+, langGo ? false
+, reproducibleBuild ? true
+, profiledCompiler ? false
+, langJit ? false
+, staticCompiler ? false
+, enableShared ? stdenv.targetPlatform.hasSharedLibraries
+, enableLTO ? stdenv.hostPlatform.hasSharedLibraries
+, texinfo ? null
+, perl ? null # optional, for texi2pod (then pod2man)
+, gmp, mpfr, libmpc, gettext, which, patchelf, binutils
+, isl ? null # optional, for the Graphite optimization framework.
+, zlib ? null
+, libucontext ? null
+, gnat-bootstrap ? null
+, enableMultilib ? false
+, enablePlugin ? stdenv.hostPlatform == stdenv.buildPlatform # Whether to support user-supplied plug-ins
+, name ? "gcc"
+, libcCross ? null
+, threadsCross ? null # for MinGW
+, withoutTargetLibc ? false
+, gnused ? null
+, cloog # unused; just for compat with gcc4, as we override the parameter on some places
+, buildPackages
+, libxcrypt
+, disableGdbPlugin ? !enablePlugin
+, nukeReferences
+, callPackage
+, majorMinorVersion
+
+# only for gcc<=6.x
+, langJava ? false
+, flex
+, boehmgc ? null
+, zip ? null, unzip ? null, pkg-config ? null
+, gtk2 ? null, libart_lgpl ? null
+, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null
+, libXrender ? null, xorgproto ? null
+, libXrandr ? null, libXi ? null
+, x11Support ? langJava
+}:
+
+let
+  version = {
+    "13" = "13.2.0";
+    "12" = "12.3.0";
+    "11" = "11.4.0";
+    "10" = "10.5.0";
+    "9"  =  "9.5.0";
+    "8"  =  "8.5.0";
+    "7"  =  "7.5.0";
+    "6"  =  "6.5.0";
+    "4.9"=  "4.9.4";
+    "4.8"=  "4.8.5";
+  }."${majorMinorVersion}";
+
+  majorVersion = lib.versions.major version;
+  atLeast13 = lib.versionAtLeast version "13";
+  atLeast12 = lib.versionAtLeast version "12";
+  atLeast11 = lib.versionAtLeast version "11";
+  atLeast10 = lib.versionAtLeast version "10";
+  atLeast9  = lib.versionAtLeast version  "9";
+  atLeast8  = lib.versionAtLeast version  "8";
+  atLeast7  = lib.versionAtLeast version  "7";
+  atLeast6  = lib.versionAtLeast version  "6";
+  atLeast49 = lib.versionAtLeast version  "4.9";
+  is13 = majorVersion == "13";
+  is12 = majorVersion == "12";
+  is11 = majorVersion == "11";
+  is10 = majorVersion == "10";
+  is9  = majorVersion == "9";
+  is8  = majorVersion == "8";
+  is7  = majorVersion == "7";
+  is6  = majorVersion == "6";
+  is49 = majorVersion == "4" && lib.versions.minor version == "9";
+  is48 = majorVersion == "4" && lib.versions.minor version == "8";
+in
+
+# We enable the isl cloog backend.
+assert !atLeast6 -> (cloog != null -> isl != null);
+
+assert langJava -> !atLeast7 && zip != null && unzip != null && zlib != null && boehmgc != null && perl != null;  # for `--enable-java-home'
+
+# Make sure we get GNU sed.
+assert stdenv.buildPlatform.isDarwin -> gnused != null;
+
+# The go frontend is written in c++
+assert langGo -> langCC;
+assert (atLeast6 && !is7 && !is8) -> (langAda -> gnat-bootstrap != null);
+
+# TODO: fixup D bootstapping, probably by using gdc11 (and maybe other changes).
+#   error: GDC is required to build d
+assert atLeast12 -> !langD;
+
+# threadsCross is just for MinGW
+assert threadsCross != {} -> stdenv.targetPlatform.isWindows;
+
+# profiledCompiler builds inject non-determinism in one of the compilation stages.
+# If turned on, we can't provide reproducible builds anymore
+assert reproducibleBuild -> profiledCompiler == false;
+
+with lib;
+with builtins;
+
+let inherit version;
+    disableBootstrap = atLeast11 && !stdenv.hostPlatform.isDarwin && (atLeast12 -> !profiledCompiler);
+
+    inherit (stdenv) buildPlatform hostPlatform targetPlatform;
+
+    patches = callFile ./patches {};
+
+    /* Cross-gcc settings (build == host != target) */
+    crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
+    stageNameAddon = if withoutTargetLibc then "stage-static" else "stage-final";
+    crossNameAddon = optionalString (targetPlatform != hostPlatform) "${targetPlatform.config}-${stageNameAddon}-";
+
+    javaAwtGtk = langJava && x11Support;
+    xlibs = [
+      libX11 libXt libSM libICE libXtst libXrender libXrandr libXi
+      xorgproto
+    ];
+    callFile = lib.callPackageWith ({
+      # lets
+      inherit
+        majorVersion
+        version
+        buildPlatform
+        hostPlatform
+        targetPlatform
+        patches
+        crossMingw
+        stageNameAddon
+        crossNameAddon
+      ;
+      # inherit generated with 'nix eval --json --impure --expr "with import ./. {}; lib.attrNames (lib.functionArgs gcc${majorVersion}.cc.override)" | jq '.[]' --raw-output'
+      inherit
+        binutils
+        buildPackages
+        cloog
+        withoutTargetLibc
+        disableBootstrap
+        disableGdbPlugin
+        enableLTO
+        enableMultilib
+        enablePlugin
+        enableShared
+        fetchpatch
+        fetchurl
+        gettext
+        gmp
+        gnat-bootstrap
+        gnused
+        isl
+        langAda
+        langC
+        langCC
+        langD
+        langFortran
+        langGo
+        langJit
+        langObjC
+        langObjCpp
+        lib
+        libcCross
+        libmpc
+        libucontext
+        libxcrypt
+        mpfr
+        name
+        noSysDirs
+        nukeReferences
+        patchelf
+        perl
+        profiledCompiler
+        reproducibleBuild
+        staticCompiler
+        stdenv
+        targetPackages
+        texinfo
+        threadsCross
+        which
+        zip
+        zlib
+      ;
+    } // lib.optionalAttrs (!atLeast7) {
+      inherit
+        boehmgc
+        flex
+        gnat-bootstrap
+        gtk2
+        langAda
+        langJava
+        libICE
+        libSM
+        libX11
+        libXi
+        libXrandr
+        libXrender
+        libXt
+        libXtst
+        libart_lgpl
+        pkg-config
+        unzip
+        x11Support
+        xorgproto
+        javaAwtGtk
+        xlibs
+      ;
+      javaEcj = fetchurl {
+        # The `$(top_srcdir)/ecj.jar' file is automatically picked up at
+        # `configure' time.
+
+        # XXX: Eventually we might want to take it from upstream.
+        url = "ftp://sourceware.org/pub/java/ecj-4.3.jar";
+        sha256 = "0jz7hvc0s6iydmhgh5h2m15yza7p2rlss2vkif30vm9y77m97qcx";
+      };
+
+      # Antlr (optional) allows the Java `gjdoc' tool to be built.  We want a
+      # binary distribution here to allow the whole chain to be bootstrapped.
+      javaAntlr = fetchurl {
+        url = "https://www.antlr.org/download/antlr-4.4-complete.jar";
+        sha256 = "02lda2imivsvsis8rnzmbrbp8rh1kb8vmq4i67pqhkwz7lf8y6dz";
+      };
+    });
+
+in
+
+# We need all these X libraries when building AWT with GTK.
+assert !atLeast7 -> (x11Support -> (filter (x: x == null) ([ gtk2 libart_lgpl ] ++ xlibs)) == []);
+
+lib.pipe ((callFile ./common/builder.nix {}) ({
+  pname = "${crossNameAddon}${name}";
+  inherit version;
+
+  src = if is6 && stdenv.targetPlatform.isVc4 then fetchFromGitHub {
+    owner = "itszor";
+    repo = "gcc-vc4";
+    rev = "e90ff43f9671c760cf0d1dd62f569a0fb9bf8918";
+    sha256 = "0gxf66hwqk26h8f853sybphqa5ca0cva2kmrw5jsiv6139g0qnp8";
+  } else if is6 && stdenv.targetPlatform.isRedox then fetchFromGitHub {
+    owner = "redox-os";
+    repo = "gcc";
+    rev = "f360ac095028d286fc6dde4d02daed48f59813fa"; # `redox` branch
+    sha256 = "1an96h8l58pppyh3qqv90g8hgcfd9hj7igvh2gigmkxbrx94khfl";
+  } else fetchurl {
+    url = if atLeast7
+          then "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz"
+          else if atLeast6
+          then "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.xz"
+          else "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2";
+    ${if is10 || is11 || is13 then "hash" else "sha256"} = {
+      "13.2.0" = "sha256-4nXnZEKmBnNBon8Exca4PYYTFEAEwEE1KIY9xrXHQ9o=";
+      "12.3.0" = "sha256-lJpdT5nnhkIak7Uysi/6tVeN5zITaZdbka7Jet/ajDs=";
+      "11.4.0" = "sha256-Py2yIrAH6KSiPNW6VnJu8I6LHx6yBV7nLBQCzqc6jdk=";
+      "10.5.0" = "sha256-JRCVQ/30bzl8NHtdi3osflaUpaUczkucbh6opxyjB8E=";
+      "9.5.0"  = "13ygjmd938m0wmy946pxdhz9i1wq7z4w10l6pvidak0xxxj9yxi7";
+      "8.5.0"  = "0l7d4m9jx124xsk6xardchgy2k5j5l2b15q322k31f0va4d8826k";
+      "7.5.0"  = "0qg6kqc5l72hpnj4vr6l0p69qav0rh4anlkk3y55540zy3klc6dq";
+      "6.5.0"  = "0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby";
+      "4.9.4"  = "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc";
+      "4.8.5"  = "08yggr18v373a1ihj0rg2vd6psnic42b518xcgp3r9k81xz1xyr2";
+    }."${version}";
+  };
+
+  inherit patches;
+
+  outputs =
+    if atLeast7
+    then [ "out" "man" "info" ] ++ lib.optional (!langJit) "lib"
+    else if atLeast49 && (langJava || langGo || (if atLeast6 then langJit else targetPlatform.isDarwin)) then ["out" "man" "info"]
+    else [ "out" "lib" "man" "info" ];
+
+  setOutputFlags = false;
+  NIX_NO_SELF_RPATH = true;
+
+  libc_dev = stdenv.cc.libc_dev;
+
+  hardeningDisable = [ "format" "pie" ]
+  ++ lib.optionals (is11 && langAda) [ "fortify3" ];
+
+  postPatch = lib.optionalString atLeast7 ''
+    configureScripts=$(find . -name configure)
+    for configureScript in $configureScripts; do
+      patchShebangs $configureScript
+    done
+  ''
+  # This should kill all the stdinc frameworks that gcc and friends like to
+  # insert into default search paths.
+  + lib.optionalString (atLeast6 && hostPlatform.isDarwin) ''
+    substituteInPlace gcc/config/darwin-c.c${lib.optionalString atLeast12 "c"} \
+      --replace 'if (stdinc)' 'if (0)'
+
+    substituteInPlace libgcc/config/t-slibgcc-darwin \
+      --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
+
+    substituteInPlace libgfortran/configure \
+      --replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
+  ''
+  + (
+    lib.optionalString (targetPlatform != hostPlatform || stdenv.cc.libc != null)
+      # On NixOS, use the right path to the dynamic linker instead of
+      # `/lib/ld*.so'.
+      (let
+        libc = if libcCross != null then libcCross else stdenv.cc.libc;
+      in
+        (
+        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER'${lib.optionalString atLeast6 ", \\`UCLIBC_DYNAMIC_LINKER',"} and \`${if atLeast6 then "MUSL" else "UCLIBC"}_DYNAMIC_LINKER' macros..."
+           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
+           do
+             grep -q ${lib.optionalString (!atLeast6) "LIBC"}_DYNAMIC_LINKER "$header" || continue
+             echo "  fixing \`$header'..."
+             sed -i "$header" \
+                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g'${lib.optionalString atLeast6 " \\"}
+        '' + lib.optionalString atLeast6 ''
+${""}                -e 's|define[[:blank:]]*MUSL_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define MUSL_DYNAMIC_LINKER\1 "${libc.out}\2"|g'
+        '' + ''
+${""}          done
+        '' + lib.optionalString (atLeast6 && targetPlatform.libc == "musl") ''
+           sed -i gcc/config/linux.h -e '1i#undef LOCAL_INCLUDE_DIR'
+        ''
+        )
+    ))
+      + lib.optionalString (atLeast7 && targetPlatform.isAvr) (''
+            makeFlagsArray+=(
+          '' + (lib.optionalString atLeast10 ''
+               '-s' # workaround for hitting hydra log limit
+          '') + ''
+               'LIMITS_H_TEST=false'
+            )
+          '');
+
+  inherit noSysDirs staticCompiler withoutTargetLibc
+    libcCross crossMingw;
+
+  inherit (callFile ./common/dependencies.nix { }) depsBuildBuild nativeBuildInputs depsBuildTarget buildInputs depsTargetTarget;
+
+  preConfigure = (callFile ./common/pre-configure.nix { }) + lib.optionalString atLeast10 ''
+    ln -sf ${libxcrypt}/include/crypt.h libsanitizer/sanitizer_common/crypt.h
+  '';
+
+  dontDisableStatic = true;
+
+  configurePlatforms = [ "build" "host" "target" ];
+
+  configureFlags = (callFile ./common/configure-flags.nix { })
+    ++ optional (is7 && targetPlatform.isAarch64) "--enable-fix-cortex-a53-843419"
+    ++ optional (is7 && targetPlatform.isNetBSD) "--disable-libcilkrts";
+
+  targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
+
+  buildFlags =
+    # we do not yet have Nix-driven profiling
+    assert atLeast12 -> (profiledCompiler -> !disableBootstrap);
+    if atLeast11
+    then let target =
+               lib.optionalString (profiledCompiler) "profiled" +
+               lib.optionalString (targetPlatform == hostPlatform && hostPlatform == buildPlatform && !disableBootstrap) "bootstrap";
+         in lib.optional (target != "") target
+    else
+      optional
+        (targetPlatform == hostPlatform && hostPlatform == buildPlatform)
+        (if profiledCompiler then "profiledbootstrap" else "bootstrap");
+
+  inherit (callFile ./common/strip-attributes.nix { })
+    stripDebugList
+    stripDebugListTarget
+    preFixup;
+
+  # https://gcc.gnu.org/PR109898
+  enableParallelInstalling = false;
+
+  # https://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
+  ${if hostPlatform.system == "x86_64-solaris" then "CC" else null} = "gcc -m64";
+
+  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
+  # library headers and binaries, regarless of the language being compiled.
+  #
+  # Note: When building the Java AWT GTK peer, the build system doesn't honor
+  # `--with-gmp' et al., e.g., when building
+  # `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add
+  # them to $CPATH and $LIBRARY_PATH in this case.
+  #
+  # Likewise, the LTO code doesn't find zlib.
+  #
+  # Cross-compiling, we need gcc not to read ./specs in order to build the g++
+  # compiler (after the specs for the cross-gcc are created). Having
+  # LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
+
+  CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
+    ++ optional (zlib != null) zlib
+    ++ optional langJava boehmgc
+    ++ optionals javaAwtGtk xlibs
+    ++ optionals javaAwtGtk [ gmp mpfr ]
+  ));
+
+  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (
+    optional (zlib != null) zlib
+    ++ optional langJava boehmgc
+    ++ optionals javaAwtGtk xlibs
+    ++ optionals javaAwtGtk [ gmp mpfr ]
+  ));
+
+  inherit (callFile ./common/extra-target-flags.nix { })
+    EXTRA_FLAGS_FOR_TARGET
+    EXTRA_LDFLAGS_FOR_TARGET
+    ;
+
+  passthru = {
+    inherit langC langCC langObjC langObjCpp langAda langFortran langGo langD version;
+    isGNU = true;
+  } // lib.optionalAttrs (!atLeast12) {
+    hardeningUnsupportedFlags = lib.optionals is48 [ "stackprotector" ] ++ [ "fortify3" ];
+  };
+
+  enableParallelBuilding = true;
+  inherit enableShared enableMultilib;
+
+  meta = {
+    inherit (callFile ./common/meta.nix { })
+      homepage
+      license
+      description
+      longDescription
+      platforms
+      maintainers
+    ;
+  } // lib.optionalAttrs (!atLeast11) {
+    badPlatforms = if !is49 then [ "aarch64-darwin" ] else lib.platforms.darwin;
+  };
+} // optionalAttrs is7 {
+  env.NIX_CFLAGS_COMPILE = lib.optionalString (stdenv.cc.isClang && langFortran) "-Wno-unused-command-line-argument";
+} // optionalAttrs (!atLeast7) {
+  env.langJava = langJava;
+} // optionalAttrs atLeast6 {
+  NIX_LDFLAGS = lib.optionalString  hostPlatform.isSunOS "-lm";
+} // optionalAttrs (!atLeast8) {
+  doCheck = false; # requires a lot of tools, causes a dependency cycle for stdenv
+} // optionalAttrs enableMultilib {
+  dontMoveLib64 = true;
+} // optionalAttrs (((is49 && !stdenv.hostPlatform.isDarwin) || is6) && langJava) {
+  postFixup = ''
+    target="$(echo "$out/libexec/gcc"/*/*/ecj*)"
+    patchelf --set-rpath "$(patchelf --print-rpath "$target"):$out/lib" "$target"
+  '';
+}
+))
+([
+  (callPackage ./common/libgcc.nix   { inherit version langC langCC langJit targetPlatform hostPlatform withoutTargetLibc enableShared; })
+] ++ optionals atLeast11 [
+  (callPackage ./common/checksum.nix { inherit langC langCC; })
+])
+
diff --git a/nixpkgs/pkgs/development/compilers/gcc/10/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/10/Added-mcf-thread-model-support-from-mcfgthread.patch
index d9809e828f10..d9809e828f10 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/10/Added-mcf-thread-model-support-from-mcfgthread.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/10/Added-mcf-thread-model-support-from-mcfgthread.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/11/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/11/Added-mcf-thread-model-support-from-mcfgthread.patch
index 77202438e47d..77202438e47d 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/11/Added-mcf-thread-model-support-from-mcfgthread.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/11/Added-mcf-thread-model-support-from-mcfgthread.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/11/avr-gcc-11.3-darwin.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/11/avr-gcc-11.3-darwin.patch
index 787862fbcffa..787862fbcffa 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/11/avr-gcc-11.3-darwin.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/11/avr-gcc-11.3-darwin.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/11/gcc-issue-103910.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/11/gcc-issue-103910.patch
index c3edd960f097..c3edd960f097 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/11/gcc-issue-103910.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/11/gcc-issue-103910.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/12/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/12/Added-mcf-thread-model-support-from-mcfgthread.patch
index 77202438e47d..77202438e47d 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/12/Added-mcf-thread-model-support-from-mcfgthread.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/12/Added-mcf-thread-model-support-from-mcfgthread.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/12/lambda-ICE-PR109241.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/12/lambda-ICE-PR109241.patch
index a27a8a08d9d5..a27a8a08d9d5 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/12/lambda-ICE-PR109241.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/12/lambda-ICE-PR109241.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/patches/13/no-sys-dirs-riscv.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/13/no-sys-dirs-riscv.patch
new file mode 100644
index 000000000000..add4d59b41ae
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/13/no-sys-dirs-riscv.patch
@@ -0,0 +1,13 @@
+--- a/gcc/config/riscv/linux.h
++++ b/gcc/config/riscv/linux.h
+@@ -69,9 +69,5 @@
+ 
+ #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+ 
+-#define STARTFILE_PREFIX_SPEC 			\
+-   "/lib" XLEN_SPEC "/" ABI_SPEC "/ "		\
+-   "/usr/lib" XLEN_SPEC "/" ABI_SPEC "/ "	\
+-   "/lib/ "					\
+-   "/usr/lib/ "
++#define STARTFILE_PREFIX_SPEC ""
+ 
diff --git a/nixpkgs/pkgs/development/compilers/gcc/4.9/libsanitizer.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/4.9/libsanitizer.patch
index f1a438a4e5f0..f1a438a4e5f0 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/4.9/libsanitizer.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/4.9/libsanitizer.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/4.9/parallel-strsignal.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/4.9/parallel-strsignal.patch
index 4c98ca273a54..4c98ca273a54 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/4.9/parallel-strsignal.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/4.9/parallel-strsignal.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/0001-Fix-build-for-glibc-2.31.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/6/0001-Fix-build-for-glibc-2.31.patch
index 0cd04e218caf..0cd04e218caf 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/6/0001-Fix-build-for-glibc-2.31.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/6/0001-Fix-build-for-glibc-2.31.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/6/Added-mcf-thread-model-support-from-mcfgthread.patch
index 25e3a902cbf2..25e3a902cbf2 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/6/Added-mcf-thread-model-support-from-mcfgthread.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/6/Added-mcf-thread-model-support-from-mcfgthread.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/fix-objdump-check.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/6/fix-objdump-check.patch
index f9adbe9eb1ca..f9adbe9eb1ca 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/6/fix-objdump-check.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/6/fix-objdump-check.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/gnat-glibc234.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/6/gnat-glibc234.patch
index 2d29cd7fa77f..2d29cd7fa77f 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/6/gnat-glibc234.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/6/gnat-glibc234.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/6/gogcc-workaround-glibc-2.36.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/6/gogcc-workaround-glibc-2.36.patch
index bc11f990e5e9..bc11f990e5e9 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/6/gogcc-workaround-glibc-2.36.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/6/gogcc-workaround-glibc-2.36.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/0001-Fix-build-for-glibc-2.31.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/7/0001-Fix-build-for-glibc-2.31.patch
index d8aad14942bf..d8aad14942bf 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/7/0001-Fix-build-for-glibc-2.31.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/7/0001-Fix-build-for-glibc-2.31.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/7/Added-mcf-thread-model-support-from-mcfgthread.patch
index 0c5d0ee9e460..0c5d0ee9e460 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/7/Added-mcf-thread-model-support-from-mcfgthread.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/7/Added-mcf-thread-model-support-from-mcfgthread.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/gcc8-asan-glibc-2.34.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/7/gcc8-asan-glibc-2.34.patch
index 5645b97c1d89..5645b97c1d89 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/7/gcc8-asan-glibc-2.34.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/7/gcc8-asan-glibc-2.34.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/riscv-no-relax.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/7/riscv-no-relax.patch
index 93d9cd1d60f5..93d9cd1d60f5 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/7/riscv-no-relax.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/7/riscv-no-relax.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/7/riscv-pthread-reentrant.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/7/riscv-pthread-reentrant.patch
index c7527ffb2b16..c7527ffb2b16 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/7/riscv-pthread-reentrant.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/7/riscv-pthread-reentrant.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/8/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/8/Added-mcf-thread-model-support-from-mcfgthread.patch
index d9809e828f10..d9809e828f10 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/8/Added-mcf-thread-model-support-from-mcfgthread.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/8/Added-mcf-thread-model-support-from-mcfgthread.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/9/Added-mcf-thread-model-support-from-mcfgthread.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/9/Added-mcf-thread-model-support-from-mcfgthread.patch
index d9809e828f10..d9809e828f10 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/9/Added-mcf-thread-model-support-from-mcfgthread.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/9/Added-mcf-thread-model-support-from-mcfgthread.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/9/avoid-cycling-subreg-reloads.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/9/avoid-cycling-subreg-reloads.patch
index 17a4e0a2447b..17a4e0a2447b 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/9/avoid-cycling-subreg-reloads.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/9/avoid-cycling-subreg-reloads.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/9/fix-struct-redefinition-on-glibc-2.36.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/9/fix-struct-redefinition-on-glibc-2.36.patch
index 5b4abfd02e0b..5b4abfd02e0b 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/9/fix-struct-redefinition-on-glibc-2.36.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/9/fix-struct-redefinition-on-glibc-2.36.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/9/gcc9-asan-glibc-2.34.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/9/gcc9-asan-glibc-2.34.patch
index 1aea1f9b18a1..1aea1f9b18a1 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/9/gcc9-asan-glibc-2.34.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/9/gcc9-asan-glibc-2.34.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/ada-cctools-as-detection-configure.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/ada-cctools-as-detection-configure.patch
index e6b5b3653322..e6b5b3653322 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/ada-cctools-as-detection-configure.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/ada-cctools-as-detection-configure.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/patches/default.nix b/nixpkgs/pkgs/development/compilers/gcc/patches/default.nix
new file mode 100644
index 000000000000..79dbad30a0a9
--- /dev/null
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/default.nix
@@ -0,0 +1,245 @@
+{ lib, stdenv
+, langC
+, langAda
+, langObjC
+, langObjCpp
+, langD
+, langFortran
+, langGo
+, reproducibleBuild
+, profiledCompiler
+, langJit
+, staticCompiler
+, enableShared
+, enableLTO
+, version
+, fetchpatch
+, majorVersion
+, targetPlatform
+, hostPlatform
+, noSysDirs
+, buildPlatform
+, fetchurl
+, withoutTargetLibc
+, threadsCross
+}:
+
+let
+  atLeast13 = lib.versionAtLeast version "13";
+  atLeast12 = lib.versionAtLeast version "12";
+  atLeast11 = lib.versionAtLeast version "11";
+  atLeast10 = lib.versionAtLeast version "10";
+  atLeast9  = lib.versionAtLeast version  "9";
+  atLeast8  = lib.versionAtLeast version  "8";
+  atLeast7  = lib.versionAtLeast version  "7";
+  atLeast6  = lib.versionAtLeast version  "6";
+  atLeast49 = lib.versionAtLeast version  "4.9";
+  is13 = majorVersion == "13";
+  is12 = majorVersion == "12";
+  is11 = majorVersion == "11";
+  is10 = majorVersion == "10";
+  is9  = majorVersion == "9";
+  is8  = majorVersion == "8";
+  is7  = majorVersion == "7";
+  is6  = majorVersion == "6";
+  is49 = majorVersion == "4" && lib.versions.minor version == "9";
+  is48 = majorVersion == "4" && lib.versions.minor version == "8";
+  inherit (lib) optionals optional;
+in
+
+optionals (is49 || is6) [
+  ./9/fix-struct-redefinition-on-glibc-2.36.patch
+] ++ optionals (is49 || (is6 && !stdenv.targetPlatform.isRedox)) [
+  ./use-source-date-epoch.patch
+] ++ optionals (is6 && !stdenv.targetPlatform.isRedox) [
+  ./6/0001-Fix-build-for-glibc-2.31.patch
+] ++ optionals (!atLeast6) [
+  ./parallel-bconfig.patch
+] ++ optionals (is49) [
+  (./. + "/${lib.versions.major version}.${lib.versions.minor version}/parallel-strsignal.patch")
+  (./. + "/${lib.versions.major version}.${lib.versions.minor version}/libsanitizer.patch")
+  (fetchpatch {
+    name = "avoid-ustat-glibc-2.28.patch";
+    url = "https://gitweb.gentoo.org/proj/gcc-patches.git/plain/4.9.4/gentoo/100_all_avoid-ustat-glibc-2.28.patch?id=55fcb515620a8f7d3bb77eba938aa0fcf0d67c96";
+    sha256 = "0b32sb4psv5lq0ij9fwhi1b4pjbwdjnv24nqprsk14dsc6xmi1g0";
+  })
+] ++ optionals (is7) [
+  # https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00633.html
+  (./. + "/${majorVersion}/riscv-pthread-reentrant.patch")
+  # https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00297.html
+  (./. + "/${majorVersion}/riscv-no-relax.patch")
+  # Fix for asan w/glibc-2.34. Although there's no upstream backport to v7,
+  # the patch from gcc 8 seems to work perfectly fine.
+  (./. + "/${majorVersion}/gcc8-asan-glibc-2.34.patch")
+  (./. + "/${majorVersion}/0001-Fix-build-for-glibc-2.31.patch")
+] ++ optional (majorVersion == "9") ./9/fix-struct-redefinition-on-glibc-2.36.patch
+++ optional (atLeast6 && !atLeast12) ./fix-bug-80431.patch
+++ optional (is7 || is8) ./9/fix-struct-redefinition-on-glibc-2.36.patch
+++ optional (targetPlatform != hostPlatform) ./libstdc++-target.patch
+++ optional (atLeast7 && !atLeast10 && targetPlatform.isNetBSD) ./libstdc++-netbsd-ctypes.patch
+++ optional (noSysDirs) (if atLeast12 then ./gcc-12-no-sys-dirs.patch else ./no-sys-dirs.patch)
+++ optionals (is6 && langAda) [
+  ./gnat-cflags.patch
+  ./6/gnat-glibc234.patch
+] ++ optional (noSysDirs && atLeast10 && !atLeast13 && (is10 || (!atLeast12 -> hostPlatform.isRiscV))) ./no-sys-dirs-riscv.patch
+++ optional (noSysDirs && is13) ./13/no-sys-dirs-riscv.patch
+++ optional (noSysDirs && is9 && hostPlatform.isRiscV) ./no-sys-dirs-riscv-gcc9.patch
+++ optionals (langAda || atLeast12) [
+  ./gnat-cflags-11.patch
+] ++ optionals (langAda && (is9 || is10)) [
+  ./gnat-cflags.patch
+] ++ optionals atLeast12 [
+  ./gcc-12-gfortran-driving.patch
+  ./ppc-musl.patch
+] ++ optionals is12 [
+  # backport ICE fix on ccache code
+  ./12/lambda-ICE-PR109241.patch
+]
+# We only apply this patch when building a native toolchain for aarch64-darwin, as it breaks building
+# a foreign one: https://github.com/iains/gcc-12-branch/issues/18
+++ optionals (stdenv.isDarwin && stdenv.isAarch64 && buildPlatform == hostPlatform && hostPlatform == targetPlatform) ({
+  "13" = [ (fetchpatch {
+    name = "gcc-13-darwin-aarch64-support.patch";
+    url = "https://raw.githubusercontent.com/Homebrew/formula-patches/3c5cbc8e9cf444a1967786af48e430588e1eb481/gcc/gcc-13.2.0.diff";
+    sha256 = "sha256-Y5r3U3dwAFG6+b0TNCFd18PNxYu2+W/5zDbZ5cHvv+U=";
+  }) ];
+  "12" = [ (fetchurl {
+    name = "gcc-12-darwin-aarch64-support.patch";
+    url = "https://raw.githubusercontent.com/Homebrew/formula-patches/f1188b90d610e2ed170b22512ff7435ba5c891e2/gcc/gcc-12.3.0.diff";
+    sha256 = "sha256-naL5ZNiurqfDBiPSU8PTbTmLqj25B+vjjiqc4fAFgYs=";
+  }) ];
+}."${majorVersion}" or [])
+++ optional (atLeast9 && langD) ./libphobos.patch
+++ optional (is7 && hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied
+  url = "https://git.busybox.net/buildroot/plain/package/gcc/7.1.0/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02";
+  sha256 = "0mrvxsdwip2p3l17dscpc1x8vhdsciqw1z5q9i6p5g9yg1cqnmgs";
+})
+++ optional (!atLeast12 && langFortran) ./gfortran-driving.patch
+++ optional (!atLeast49 && hostPlatform.isDarwin) ./gfortran-darwin-NXConstStr.patch
+++ optionals (is49) [
+  # glibc-2.26
+  ./struct-ucontext.patch
+  ./struct-sigaltstack-4.9.patch
+]
+# TODO: deduplicate this with copy above -- leaving duplicated for now in order to avoid changing eval results by reordering
+++ optional (atLeast7 && !atLeast12 && targetPlatform.libc == "musl" && targetPlatform.isPower) ./ppc-musl.patch
+++ optional ((is6 || is7) && targetPlatform.libc == "musl" && targetPlatform.isx86_32) (fetchpatch {
+  url = "https://git.alpinelinux.org/aports/plain/main/gcc/gcc-6.1-musl-libssp.patch?id=5e4b96e23871ee28ef593b439f8c07ca7c7eb5bb";
+  sha256 = "1jf1ciz4gr49lwyh8knfhw6l5gvfkwzjy90m7qiwkcbsf4a3fqn2";
+})
+++ optional ((is6 || is7 || is8) && !atLeast9 && targetPlatform.libc == "musl") ./libgomp-dont-force-initial-exec.patch
+++ optional (is6 && langGo) ./gogcc-workaround-glibc-2.36.patch
+# TODO: deduplicate this with copy above -- leaving duplicated for now in order to avoid changing eval results by reordering
+++ optionals (is11 && stdenv.isDarwin) [
+  (fetchpatch {
+    # There are no upstream release tags in https://github.com/iains/gcc-11-branch.
+    # ff4bf32 is the commit from https://github.com/gcc-mirror/gcc/releases/tag/releases%2Fgcc-11.4.0
+    url = "https://github.com/iains/gcc-11-branch/compare/ff4bf326d03e750a8d4905ea49425fe7d15a04b8..gcc-11.4-darwin-r0.diff";
+    hash = "sha256-6prPgR2eGVJs7vKd6iM1eZsEPCD1ShzLns2Z+29vlt4=";
+  })
+]
+# https://github.com/osx-cross/homebrew-avr/issues/280#issuecomment-1272381808
+++ optional (is11 && stdenv.isDarwin && targetPlatform.isAvr) ./avr-gcc-11.3-darwin.patch
+
+# backport fixes to build gccgo with musl libc
+++ optionals (atLeast12 && langGo && stdenv.hostPlatform.isMusl) [
+  (fetchpatch {
+    excludes = [ "gcc/go/gofrontend/MERGE" ];
+    url = "https://github.com/gcc-mirror/gcc/commit/cf79b1117bd177d3d4c6ed24b6fa243c3628ac2d.diff";
+    hash = "sha256-mS5ZiYi5D8CpGXrWg3tXlbhp4o86ew1imCTwaHLfl+I=";
+  })
+  (fetchpatch {
+    excludes = [ "gcc/go/gofrontend/MERGE" ];
+    url = "https://github.com/gcc-mirror/gcc/commit/7f195a2270910a6ed08bd76e3a16b0a6503f9faf.diff";
+    hash = "sha256-Ze/cFM0dQofKH00PWPDoklXUlwWhwA1nyTuiDAZ6FKo=";
+  })
+  (fetchpatch {
+    excludes = [ "gcc/go/gofrontend/MERGE" ];
+    url = "https://github.com/gcc-mirror/gcc/commit/762fd5e5547e464e25b4bee435db6df4eda0de90.diff";
+    hash = "sha256-o28upwTcHAnHG2Iq0OewzwSBEhHs+XpBGdIfZdT81pk=";
+  })
+  (fetchpatch {
+    excludes = [ "gcc/go/gofrontend/MERGE" ];
+    url = "https://github.com/gcc-mirror/gcc/commit/e73d9fcafbd07bc3714fbaf8a82db71d50015c92.diff";
+    hash = "sha256-1SjYCVHLEUihdON2TOC3Z2ufM+jf2vH0LvYtZL+c1Fo=";
+  })
+  (fetchpatch {
+    excludes = [ "gcc/go/gofrontend/MERGE" ];
+    url = "https://github.com/gcc-mirror/gcc/commit/b6c6a3d64f2e4e9347733290aca3c75898c44b2e.diff";
+    hash = "sha256-RycJ3YCHd3MXtYFjxP0zY2Wuw7/C4bWoBAQtTKJZPOQ=";
+  })
+  (fetchpatch {
+    excludes = [ "gcc/go/gofrontend/MERGE" ];
+    url = "https://github.com/gcc-mirror/gcc/commit/2b1a604a9b28fbf4f382060bebd04adb83acc2f9.diff";
+    hash = "sha256-WiBQG0Xbk75rHk+AMDvsbrm+dc7lDH0EONJXSdEeMGE=";
+  })
+  (fetchpatch {
+    url = "https://github.com/gcc-mirror/gcc/commit/c86b726c048eddc1be320c0bf64a897658bee13d.diff";
+    hash = "sha256-QSIlqDB6JRQhbj/c3ejlmbfWz9l9FurdSWxpwDebnlI=";
+  })
+]
+
+# Fix detection of bootstrap compiler Ada support (cctools as) on Nix Darwin
+++ optional (atLeast12 && stdenv.isDarwin && langAda) ./ada-cctools-as-detection-configure.patch
+
+# Use absolute path in GNAT dylib install names on Darwin
+++ optional (atLeast12 && stdenv.isDarwin && langAda) ./gnat-darwin-dylib-install-name.patch
+
+# Obtain latest patch with ../update-mcfgthread-patches.sh
+++ optional (atLeast6 && !atLeast13 && !withoutTargetLibc && targetPlatform.isMinGW && threadsCross.model == "mcf")
+  (./. + "/${majorVersion}/Added-mcf-thread-model-support-from-mcfgthread.patch")
+
+# Retpoline patches pulled from the branch hjl/indirect/gcc-4_9-branch (by H.J. Lu, the author of GCC upstream retpoline commits)
+++ optionals is49
+  (builtins.map ({commit, sha256}: fetchpatch {url = "https://github.com/hjl-tools/gcc/commit/${commit}.patch"; inherit sha256;})
+  [{ commit = "e623d21608e96ecd6b65f0d06312117d20488a38"; sha256 = "1ix8i4d2r3ygbv7npmsdj790rhxqrnfwcqzv48b090r9c3ij8ay3"; }
+   { commit = "2015a09e332309f12de1dadfe179afa6a29368b8"; sha256 = "0xcfs0cbb63llj2gbcdrvxim79ax4k4aswn0a3yjavxsj71s1n91"; }
+   { commit = "6b11591f4494f705e8746e7d58b7f423191f4e92"; sha256 = "0aydyhsm2ig0khgbp27am7vq7liyqrq6kfhfi2ki0ij0ab1hfbga"; }
+   { commit = "203c7d9c3e9cb0f88816b481ef8e7e87b3ecc373"; sha256 = "0wqn16y7wy5kg8ngfcni5qdwfphl01axczibbk49bxclwnzvldqa"; }
+   { commit = "f039c6f284b2c9ce97c8353d6034978795c4872e"; sha256 = "13fkgdb17lpyxfksz1zanxhgpsm0jrss9w61nbl7an4im22hz7ci"; }
+   { commit = "ed42606bdab1c5d9e5ad828cd6fe1a0557f193b7"; sha256 = "0gdnn8v3p03imj3qga2mzdhpgbmjcklkxdl97jvz5xia2ikzknxm"; }
+   { commit = "5278e062ef292fd2fbf987d25389785f4c5c0f99"; sha256 = "0j81x758wf8v7j4rx5wc1cy7yhkvhlhv3wmnarwakxiwsspq0vrs"; }
+   { commit = "76f1ffbbb6cd9f6ecde6c82cd16e20a27242e890"; sha256 = "1py56y6gp7fjf4f8bbsfwh5bs1gnmlqda1ycsmnwlzfm0cshdp0c"; }
+   { commit = "4ca48b2b688b135c0390f54ea9077ef10aedd52c"; sha256 = "15r019pzr3k0lpgyvdc92c8fayw8b5lrzncna4bqmamcsdz7vsaw"; }
+   { commit = "98c7bf9ddc80db965d69d61521b1c7a1cec32d9a"; sha256 = "1d7pfdv1q23nf0wadw7jbp6d6r7pnzjpbyxgbdfv7j1vr9l1bp60"; }
+   { commit = "3dc76b53ad896494ca62550a7a752fecbca3f7a2"; sha256 = "0jvdzfpvfdmklfcjwqblwq1i22iqis7ljpvm7adra5d7zf2xk7xz"; }
+   { commit = "1e961ed49b18e176c7457f53df2433421387c23b"; sha256 = "04dnqqs4qsvz4g8cq6db5id41kzys7hzhcaycwmc9rpqygs2ajwz"; }
+   { commit = "e137c72d099f9b3b47f4cc718aa11eab14df1a9c"; sha256 = "1ms0dmz74yf6kwgjfs4d2fhj8y6mcp2n184r3jk44wx2xc24vgb2"; }])
+
+++ optional (atLeast49 && !atLeast9) ./libsanitizer-no-cyclades-9.patch
+++ optional (is49 && !atLeast6) [
+  # gcc-11 compatibility
+  (fetchpatch {
+    name = "gcc4-char-reload.patch";
+    url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=d57c99458933a21fdf94f508191f145ad8d5ec58";
+    includes = [ "gcc/reload.h" ];
+    sha256 = "sha256-66AMP7/ajunGKAN5WJz/yPn42URZ2KN51yPrFdsxEuM=";
+  })
+]
+
+# openjdk build fails without this on -march=opteron; is upstream in gcc12
+++ optionals (is11) [ ./11/gcc-issue-103910.patch ]
+
+++ optional (is10 && buildPlatform.system == "aarch64-darwin" && targetPlatform != buildPlatform) (fetchpatch {
+  url = "https://raw.githubusercontent.com/richard-vd/musl-cross-make/5e9e87f06fc3220e102c29d3413fbbffa456fcd6/patches/gcc-${version}/0008-darwin-aarch64-self-host-driver.patch";
+  sha256 = "sha256-XtykrPd5h/tsnjY1wGjzSOJ+AyyNLsfnjuOZ5Ryq9vA=";
+})
+++ lib.optionals is48 [
+  (fetchpatch {
+    name = "libc_name_p.diff"; # needed to build with gcc6
+    url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=ec1cc0263f1";
+    sha256 = "01jd7pdarh54ki498g6sz64ijl9a1l5f9v8q2696aaxalvh2vwzl";
+    excludes = [ "gcc/cp/ChangeLog" ];
+  })
+  # glibc-2.26
+  ./struct-ucontext-4.8.patch
+  ./sigsegv-not-declared.patch
+  ./res_state-not-declared.patch
+  # gcc-11 compatibility
+  (fetchpatch {
+    name = "gcc4-char-reload.patch";
+    url = "https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=d57c99458933a21fdf94f508191f145ad8d5ec58";
+    includes = [ "gcc/reload.h" ];
+    sha256 = "sha256-66AMP7/ajunGKAN5WJz/yPn42URZ2KN51yPrFdsxEuM=";
+  })
+]
diff --git a/nixpkgs/pkgs/development/compilers/gcc/fix-bug-80431.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/fix-bug-80431.patch
index 2d688b8c7997..2d688b8c7997 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/fix-bug-80431.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/fix-bug-80431.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/gcc-12-gfortran-driving.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gcc-12-gfortran-driving.patch
index 0ad1f256063f..0ad1f256063f 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/gcc-12-gfortran-driving.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gcc-12-gfortran-driving.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/gcc-12-no-sys-dirs.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gcc-12-no-sys-dirs.patch
index 67a94298440f..67a94298440f 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/gcc-12-no-sys-dirs.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gcc-12-no-sys-dirs.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/gfortran-darwin-NXConstStr.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gfortran-darwin-NXConstStr.patch
index a7e158ca364b..a7e158ca364b 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/gfortran-darwin-NXConstStr.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gfortran-darwin-NXConstStr.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/gfortran-driving.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gfortran-driving.patch
index 70708886b405..70708886b405 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/gfortran-driving.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gfortran-driving.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/gnat-cflags-11.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-cflags-11.patch
index 03ef28664524..03ef28664524 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/gnat-cflags-11.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-cflags-11.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/gnat-cflags.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-cflags.patch
index a16266bbf39c..a16266bbf39c 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/gnat-cflags.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-cflags.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/gnat-darwin-dylib-install-name.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-darwin-dylib-install-name.patch
index 01e5de86a438..01e5de86a438 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/gnat-darwin-dylib-install-name.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/gnat-darwin-dylib-install-name.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/libgomp-dont-force-initial-exec.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libgomp-dont-force-initial-exec.patch
index afd1f7456d32..afd1f7456d32 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/libgomp-dont-force-initial-exec.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libgomp-dont-force-initial-exec.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/libphobos.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libphobos.patch
index a16ea5416ffb..a16ea5416ffb 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/libphobos.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libphobos.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/libsanitizer-no-cyclades-9.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libsanitizer-no-cyclades-9.patch
index 072403d1495f..072403d1495f 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/libsanitizer-no-cyclades-9.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libsanitizer-no-cyclades-9.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/libsanitizer-no-cyclades.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libsanitizer-no-cyclades.patch
index e2155cd0c982..e2155cd0c982 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/libsanitizer-no-cyclades.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libsanitizer-no-cyclades.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/libstdc++-netbsd-ctypes.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libstdc++-netbsd-ctypes.patch
index 28fff80b786d..28fff80b786d 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/libstdc++-netbsd-ctypes.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libstdc++-netbsd-ctypes.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/libstdc++-target.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/libstdc++-target.patch
index fb622b395806..fb622b395806 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/libstdc++-target.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/libstdc++-target.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs-riscv-gcc9.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv-gcc9.patch
index afe3f26360e4..afe3f26360e4 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs-riscv-gcc9.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv-gcc9.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs-riscv.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv.patch
index 00e2838af6fd..00e2838af6fd 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs-riscv.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs-riscv.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs.patch
index 36df51904acf..36df51904acf 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/no-sys-dirs.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/no-sys-dirs.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/parallel-bconfig.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/parallel-bconfig.patch
index bc56ac698f5a..bc56ac698f5a 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/parallel-bconfig.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/parallel-bconfig.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/ppc-musl.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/ppc-musl.patch
index bc90888a3797..bc90888a3797 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/ppc-musl.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/ppc-musl.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/res_state-not-declared.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/res_state-not-declared.patch
index e970487786d0..e970487786d0 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/res_state-not-declared.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/res_state-not-declared.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/sigsegv-not-declared.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/sigsegv-not-declared.patch
index f9cfaec82026..f9cfaec82026 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/sigsegv-not-declared.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/sigsegv-not-declared.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-sigaltstack-4.9.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-sigaltstack-4.9.patch
index fc126b4813d6..fc126b4813d6 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/struct-sigaltstack-4.9.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-sigaltstack-4.9.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-sigaltstack.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-sigaltstack.patch
index 6e1ddb252c24..6e1ddb252c24 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/struct-sigaltstack.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-sigaltstack.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-4.5.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-4.5.patch
index a84e9ffe2681..a84e9ffe2681 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-4.5.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-4.5.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-4.8.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-4.8.patch
index 630ef6586e45..630ef6586e45 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-4.8.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-4.8.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-libjava.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-libjava.patch
index 3892a56954e0..3892a56954e0 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext-libjava.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext-libjava.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext.patch
index c7fb6d1f71cf..c7fb6d1f71cf 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/struct-ucontext.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/struct-ucontext.patch
diff --git a/nixpkgs/pkgs/development/compilers/gcc/update-mcfgthread-patches.sh b/nixpkgs/pkgs/development/compilers/gcc/patches/update-mcfgthread-patches.sh
index c4fd79b26c34..c4fd79b26c34 100755
--- a/nixpkgs/pkgs/development/compilers/gcc/update-mcfgthread-patches.sh
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/update-mcfgthread-patches.sh
diff --git a/nixpkgs/pkgs/development/compilers/gcc/use-source-date-epoch.patch b/nixpkgs/pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch
index 65a5ab028c1c..65a5ab028c1c 100644
--- a/nixpkgs/pkgs/development/compilers/gcc/use-source-date-epoch.patch
+++ b/nixpkgs/pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch