diff --git a/Golden_Repo/g/GCCcore/GCCcore-11.3.0_fuse-ld-mold.patch b/Golden_Repo/g/GCCcore/GCCcore-11.3.0_fuse-ld-mold.patch
new file mode 100644
index 0000000000000000000000000000000000000000..72d3a1ace1d8c1d8c7b47d9f6bb3253deaf40fcc
--- /dev/null
+++ b/Golden_Repo/g/GCCcore/GCCcore-11.3.0_fuse-ld-mold.patch
@@ -0,0 +1,126 @@
+From ad964f7eaef9c03ce68a01cfdd7fde9d56524868 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Tue, 21 Dec 2021 17:43:55 +0100
+Subject: [PATCH] Support ld.mold linker.
+
+gcc/ChangeLog:
+
+        * collect2.c (main): Add ld.mold.
+        * common.opt: Add -fuse-ld=mold.
+        * doc/invoke.texi: Document it.
+        * gcc.c (driver_handle_option): Handle -fuse-ld=mold.
+        * opts.c (common_handle_option): Likewise.
+---
+ gcc/collect2.c      | 10 +++++++---
+ gcc/common.opt      |  4 ++++
+ gcc/doc/invoke.texi |  4 ++++
+ gcc/gcc.c           |  4 ++++
+ gcc/opts.c          |  1 +
+ 5 files changed, 20 insertions(+), 3 deletions(-)
+
+diff --git a/gcc/collect2.c b/gcc/collect2.c
+index d47fe3f91959c..b322527847c70 100644
+--- a/gcc/collect2.c
++++ b/gcc/collect2.c
+@@ -785,6 +785,7 @@
+       USE_GOLD_LD,
+       USE_BFD_LD,
+       USE_LLD_LD,
++      USE_MOLD_LD,
+       USE_LD_MAX
+     } selected_linker = USE_DEFAULT_LD;
+   static const char *const ld_suffixes[USE_LD_MAX] =
+@@ -793,7 +794,8 @@
+       PLUGIN_LD_SUFFIX,
+       "ld.gold",
+       "ld.bfd",
+-      "ld.lld"
++      "ld.lld",
++      "ld.mold"
+     };
+   static const char *const real_ld_suffix = "real-ld";
+   static const char *const collect_ld_suffix = "collect-ld";
+@@ -970,6 +972,8 @@
+ 	  selected_linker = USE_GOLD_LD;
+ 	else if (strcmp (argv[i], "-fuse-ld=lld") == 0)
+ 	  selected_linker = USE_LLD_LD;
++	else if (strcmp (argv[i], "-fuse-ld=mold") == 0)
++	  selected_linker = USE_MOLD_LD;
+ 	else if (strncmp (argv[i], "-o", 2) == 0)
+ 	  {
+ 	    /* Parse the output filename if it's given so that we can make
+@@ -1082,7 +1086,7 @@
+   ld_file_name = 0;
+ #ifdef DEFAULT_LINKER
+   if (selected_linker == USE_BFD_LD || selected_linker == USE_GOLD_LD ||
+-      selected_linker == USE_LLD_LD)
++      selected_linker == USE_LLD_LD || selected_linker == USE_MOLD_LD)
+     {
+       char *linker_name;
+ # ifdef HOST_EXECUTABLE_SUFFIX
+@@ -1317,7 +1321,7 @@
+ 	      else if (!use_collect_ld
+ 		       && strncmp (arg, "-fuse-ld=", 9) == 0)
+ 		{
+-		  /* Do not pass -fuse-ld={bfd|gold|lld} to the linker. */
++		  /* Do not pass -fuse-ld={bfd|gold|lld|mold} to the linker. */
+ 		  ld1--;
+ 		  ld2--;
+ 		}
+diff --git a/gcc/common.opt b/gcc/common.opt
+index 2ed818d6057de..dba3fa886f9c6 100644
+--- a/gcc/common.opt
++++ b/gcc/common.opt
+@@ -3046,6 +3046,10 @@ fuse-ld=lld
+ Common Driver Negative(fuse-ld=lld)
+ Use the lld LLVM linker instead of the default linker.
+ 
++fuse-ld=mold
++Common Driver Negative(fuse-ld=mold)
++Use the Modern linker (MOLD) linker instead of the default linker.
++
+ fuse-linker-plugin
+ Common Undocumented Var(flag_use_linker_plugin)
+ 
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index e644c63767b88..54fa75ba138ea 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -16266,6 +16266,10 @@ Use the @command{gold} linker instead of the default linker.
+ @opindex fuse-ld=lld
+ Use the LLVM @command{lld} linker instead of the default linker.
+ 
++@item -fuse-ld=mold
++@opindex fuse-ld=mold
++Use the Modern Linker (@command{mold}) instead of the default linker.
++
+ @cindex Libraries
+ @item -l@var{library}
+ @itemx -l @var{library}
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index b75b50b87b2bf..06e18a75b52cc 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -4282,6 +4282,10 @@ driver_handle_option (struct gcc_options *opts,
+        use_ld = ".gold";
+        break;
+ 
++    case OPT_fuse_ld_mold:
++       use_ld = ".mold";
++       break;
++
+     case OPT_fcompare_debug_second:
+       compare_debug_second = 1;
+       break;
+diff --git a/gcc/opts.c b/gcc/opts.c
+index e4e47ff77b3d7..f820052307c36 100644
+--- a/gcc/opts.c
++++ b/gcc/opts.c
+@@ -3105,6 +3105,7 @@ common_handle_option (struct gcc_options *opts,
+     case OPT_fuse_ld_bfd:
+     case OPT_fuse_ld_gold:
+     case OPT_fuse_ld_lld:
++    case OPT_fuse_ld_mold:
+     case OPT_fuse_linker_plugin:
+       /* No-op. Used by the driver and passed to us because it starts with f.*/
+       break;
diff --git a/Golden_Repo/g/GCCcore/GCCcore-6.2.0-fix-find-isl.patch b/Golden_Repo/g/GCCcore/GCCcore-6.2.0-fix-find-isl.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6334b6be3527921cba381caf0277f360482d93cf
--- /dev/null
+++ b/Golden_Repo/g/GCCcore/GCCcore-6.2.0-fix-find-isl.patch
@@ -0,0 +1,14 @@
+# Don't use libmpc and libmpfr to find libisl
+# by wpoely86@gmail.com
+diff -ur gcc-6.1.0.orig/configure gcc-6.1.0/configure
+--- gcc-6.1.0.orig/configure	2016-08-26 17:51:48.470524515 +0200
++++ gcc-6.1.0/configure	2016-03-17 23:54:19.000000000 +0100
+@@ -6018,7 +6018,7 @@
+     _isl_saved_LIBS=$LIBS
+
+     CFLAGS="${_isl_saved_CFLAGS} ${islinc} ${gmpinc}"
+-    LDFLAGS="${_isl_saved_LDFLAGS} ${isllibs} ${gmplibs}"
++    LDFLAGS="${_isl_saved_LDFLAGS} ${isllibs}"
+     LIBS="${_isl_saved_LIBS} -lisl -lgmp"
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isl 0.16, 0.15, or deprecated 0.14" >&5
diff --git a/Golden_Repo/g/GCCcore/GCCcore-9.3.0_gmp-c99.patch b/Golden_Repo/g/GCCcore/GCCcore-9.3.0_gmp-c99.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7c4c567c8469324c43ca4e82095e4455e597ca89
--- /dev/null
+++ b/Golden_Repo/g/GCCcore/GCCcore-9.3.0_gmp-c99.patch
@@ -0,0 +1,67 @@
+add -std=c99 when building GMP, to avoid compilation errors with older GCC system compilers
+author: Kenneth Hoste (HPC-UGent)
+--- gcc-9.3.0-RC-20200305/Makefile.in.orig	2020-03-10 20:30:39.851898414 +0100
++++ gcc-9.3.0-RC-20200305/Makefile.in	2020-03-10 20:33:13.011735787 +0100
+@@ -12891,7 +12891,7 @@
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS)  \
+ 	(cd $(HOST_SUBDIR)/gmp && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" \
+ 		$(TARGET-gmp))
+ @endif gmp
+ 
+@@ -12922,7 +12922,7 @@
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS)  \
+-		$(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" \
++		$(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" \
+ 		TFLAGS="$(STAGE1_TFLAGS)"  \
+ 		$(TARGET-stage1-gmp)
+ 
+@@ -12937,7 +12937,7 @@
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/gmp && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS)  \
+-	$(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" clean
++	$(STAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" clean
+ @endif gmp-bootstrap
+ 
+ 
+@@ -12966,7 +12966,7 @@
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+-		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" \
++		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" \
+ 		TFLAGS="$(STAGE2_TFLAGS)"  \
+ 		$(TARGET-stage2-gmp)
+ 
+@@ -12980,7 +12980,7 @@
+ 	  $(MAKE) stage2-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/gmp && \
+-	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" clean
++	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" clean
+ @endif gmp-bootstrap
+ 
+ 
+@@ -13009,7 +13009,7 @@
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+-		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" \
++		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" \
+ 		TFLAGS="$(STAGE3_TFLAGS)"  \
+ 		$(TARGET-stage3-gmp)
+ 
+@@ -13023,7 +13023,7 @@
+ 	  $(MAKE) stage3-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/gmp && \
+-	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM" clean
++	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) AM_CFLAGS="-DNO_ASM -std=c99" clean
+ @endif gmp-bootstrap
+ 
+ 
diff --git a/Golden_Repo/g/GCCcore/GCCcore-9.x-11.x_fix-unsigned-fpe-traps.patch b/Golden_Repo/g/GCCcore/GCCcore-9.x-11.x_fix-unsigned-fpe-traps.patch
new file mode 100644
index 0000000000000000000000000000000000000000..411f035218c7935c9b2f9ab992fcf6a15beef7e8
--- /dev/null
+++ b/Golden_Repo/g/GCCcore/GCCcore-9.x-11.x_fix-unsigned-fpe-traps.patch
@@ -0,0 +1,33 @@
+From 99b520f031c0e491d7e170916df11dd645d60617 Mon Sep 17 00:00:00 2001
+From: Andrew Pinski <apinski@marvell.com>
+Date: Thu, 29 Jul 2021 19:48:46 -0700
+Subject: [PATCH] Fix PR 101683: FP exceptions for float->unsigned
+
+Just like the old bug PR9651, unsigned_fix rtl should
+also be handled as a trapping instruction.
+
+OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.
+
+gcc/ChangeLog:
+
+	PR rtl-optimization/101683
+	* rtlanal.c (may_trap_p_1): Handle UNSIGNED_FIX.
+---
+ gcc/rtlanal.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
+index 3b8d88afd4d..f7f3acb75db 100644
+--- a/gcc/rtlanal.c
++++ b/gcc/rtlanal.c
+@@ -3261,6 +3261,7 @@ may_trap_p_1 (const_rtx x, unsigned flags)
+       break;
+ 
+     case FIX:
++    case UNSIGNED_FIX:
+       /* Conversion of floating point might trap.  */
+       if (flag_trapping_math && HONOR_NANS (XEXP (x, 0)))
+ 	return 1;
+-- 
+2.27.0
+
diff --git a/Golden_Repo/z/zlib/zlib-1.2.12_fix-CC-logic-in-configure.patch b/Golden_Repo/z/zlib/zlib-1.2.12_fix-CC-logic-in-configure.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f34c40445de6b1db4c18302069ec5d7cc9c84cdb
--- /dev/null
+++ b/Golden_Repo/z/zlib/zlib-1.2.12_fix-CC-logic-in-configure.patch
@@ -0,0 +1,43 @@
+From 80d086357a55b94a13e43756cf3e131f25eef0e4 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Mon, 28 Mar 2022 08:40:45 +0100
+Subject: [PATCH] Fix CC logic in configure
+
+In https://github.com/madler/zlib/commit/e9a52aa129efe3834383e415580716a7c4027f8d,
+the logic was changed to try check harder for GCC, but it dropped
+the default setting of cc=${CC}. It was throwing away any pre-set CC value as
+a result.
+
+The rest of the script then cascades down a bad path because it's convinced
+it's not GCC or a GCC-like compiler.
+
+This led to e.g. misdetection of inability to build shared libs
+for say, multilib cases (w/ CC being one thing from the environment being used
+for one test (e.g. x86_64-unknown-linux-gnu-gcc -m32 and then 'cc' used for
+shared libs (but missing "-m32"!)). Obviously just one example of how
+the old logic could break.
+
+This restores the old default of 'CC' if nothing overrides it later
+in configure.
+
+Bug: https://bugs.gentoo.org/836308
+Signed-off-by: Sam James <sam@gentoo.org>
+---
+ configure | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/configure b/configure
+index 52ff4a04e..3fa3e8618 100755
+--- a/configure
++++ b/configure
+@@ -174,7 +174,10 @@ if test -z "$CC"; then
+   else
+     cc=${CROSS_PREFIX}cc
+   fi
++else
++  cc=${CC}
+ fi
++
+ cflags=${CFLAGS-"-O3"}
+ # to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
+ case "$cc" in