--- a/gcc.SlackBuild	2021-08-25 11:09:51.000000000 +0300
+++ b/gcc.SlackBuild	2022-01-18 21:38:52.908852553 +0200
@@ -116,6 +116,14 @@
   SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16"
   LIBDIRSUFFIX=""
   LIB_ARCH=armv7hl
+elif [ "$ARCH" = "aarch64" ]; then
+  SLKCFLAGS="-O2 -fPIC"
+  LIBDIRSUFFIX="64"
+  LIB_ARCH=$ARCH
+elif [ "$ARCH" = "riscv64" ]; then
+  SLKCFLAGS="-O2 -fPIC"
+  LIBDIRSUFFIX="64"
+  LIB_ARCH=$ARCH
 else
   SLKCFLAGS="-O2"
   LIBDIRSUFFIX=""
@@ -144,7 +152,7 @@
 PKG6=$TMP/package-gcc-objc
 #PKG7=$TMP/package-gcc-g++-gch
 PKG8=$TMP/package-gcc-go
-PKG9=$TMP/package-gcc-brig
+#PKG9=$TMP/package-gcc-brig
 PKG10=$TMP/package-gcc-gdc
 
 # Clear the build locations:
@@ -160,7 +168,7 @@
 cat $CWD/slack-desc.gcc-objc > $PKG6/install/slack-desc
 #cat $CWD/slack-desc.gcc-g++-gch > $PKG7/install/slack-desc
 cat $CWD/slack-desc.gcc-go > $PKG8/install/slack-desc
-cat $CWD/slack-desc.gcc-brig > $PKG9/install/slack-desc
+#cat $CWD/slack-desc.gcc-brig > $PKG9/install/slack-desc
 cat $CWD/slack-desc.gcc-gdc > $PKG10/install/slack-desc
 
 cd gcc-$SRCVER || exit 1
@@ -178,6 +186,12 @@
 # https://github.com/golang/go/issues/47771
 zcat $CWD/patches/7185690.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
 
+# Redefine dynamic linker for aarch64 from /lib to /lib64:
+xzcat $CWD/redefine-dynamic-linker-for-aarch64.patch.xz | patch -p1 --verbose || exit 1
+
+# Redefine dynamic linker for riscv64 from /lib to /lib64:
+xzcat $CWD/redefine-dynamic-linker-for-riscv64.patch.xz | patch -p1 --verbose || exit 1
+
 # Fix perms/owners:
 chown -R root:root .
 find . \
@@ -266,13 +280,13 @@
   $PKG8/usr/doc/gcc-${VERSION}/gcc/go
 )
 
-mkdir -p $PKG9/usr/doc/gcc-${VERSION}/gcc/brig
-( cd gcc/brig || exit 0
-  if [ -r ChangeLog ]; then
-    cat ChangeLog | head -n 1000 > $PKG9/usr/doc/gcc-${VERSION}/gcc/brig/ChangeLog
-    touch -r ChangeLog $PKG9/usr/doc/gcc-${VERSION}/gcc/brig/ChangeLog
-  fi
-)
+#mkdir -p $PKG9/usr/doc/gcc-${VERSION}/gcc/brig
+#( cd gcc/brig || exit 0
+#  if [ -r ChangeLog ]; then
+#    cat ChangeLog | head -n 1000 > $PKG9/usr/doc/gcc-${VERSION}/gcc/brig/ChangeLog
+#    touch -r ChangeLog $PKG9/usr/doc/gcc-${VERSION}/gcc/brig/ChangeLog
+#  fi
+#)
 
 mkdir -p $PKG10/usr/doc/gcc-${VERSION}/gcc/d
 ( cd gcc/d || exit 0
@@ -345,6 +359,9 @@
   else
     GCC_ARCHOPTS="--disable-multilib"
   fi
+
+  [[ "$ARCH" == "aarch64" ]] && GCC_ARCHOPTS="--enable-multilib"
+  [[ "$ARCH" == "riscv64" ]] && GCC_ARCHOPTS="--disable-multilib --with-slibdir=/lib$LIBDIRSUFFIX"
  
   CFLAGS="$SLKCFLAGS" \
   CXXFLAGS="$SLKCFLAGS" \
@@ -354,7 +371,7 @@
      --infodir=/usr/info \
      --enable-shared \
      --enable-bootstrap \
-     --enable-languages=ada,brig,c,c++,d,fortran,go,lto,objc,obj-c++ \
+     --enable-languages=ada,c,c++,d,fortran,go,lto,objc,obj-c++ \
      --enable-threads=posix \
      --enable-checking=release \
      --enable-objc-gc \
@@ -415,7 +432,7 @@
   fi
 
   # Make our 64bit gcc look for 32bit gcc binaries in ./32 subdirectory:
-  if [ "$ARCH" = "x86_64" ]; then
+  if [ "${LIBDIRSUFFIX}" = "64" ]; then
     sed -i 's#;.\(:../lib !m64 m32;\)$#;32\1#' \
       $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs
   fi
@@ -603,16 +620,16 @@
 ) || exit 1
 
 # gcc-brig:
-( cd $PKG9
-  mkdir -p usr/bin
-  mv $PKG1/usr/bin/*brig* usr/bin
-  mkdir -p usr/lib${LIBDIRSUFFIX}
-  mv $PKG1/usr/lib${LIBDIRSUFFIX}/libhsail* usr/lib${LIBDIRSUFFIX}
-  mkdir -p usr/libexec/gcc/$TARGET/$VERSION
-  mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/brig1 usr/libexec/gcc/$TARGET/$VERSION
-  mkdir -p usr/man/man1
-  mv $PKG1/usr/man/man1/gccbrig.1.gz usr/man/man1
-) || exit 1
+#( cd $PKG9
+#  mkdir -p usr/bin
+#  mv $PKG1/usr/bin/*brig* usr/bin
+#  mkdir -p usr/lib${LIBDIRSUFFIX}
+#  mv $PKG1/usr/lib${LIBDIRSUFFIX}/libhsail* usr/lib${LIBDIRSUFFIX}
+#  mkdir -p usr/libexec/gcc/$TARGET/$VERSION
+#  mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/brig1 usr/libexec/gcc/$TARGET/$VERSION
+#  mkdir -p usr/man/man1
+#  mv $PKG1/usr/man/man1/gccbrig.1.gz usr/man/man1
+#) || exit 1
 
 # gcc-gdc:
 ( cd $PKG10
@@ -650,8 +667,8 @@
   makepkg -l y -c n $TMP/gcc-objc-$VERSION-$ARCH-$BUILD.txz )
 ( cd $PKG8
   makepkg -l y -c n $TMP/gcc-go-$VERSION-$ARCH-$BUILD.txz )
-( cd $PKG9
-  makepkg -l y -c n $TMP/gcc-brig-$VERSION-$ARCH-$BUILD.txz )
+#( cd $PKG9
+#  makepkg -l y -c n $TMP/gcc-brig-$VERSION-$ARCH-$BUILD.txz )
 ( cd $PKG10
   makepkg -l y -c n $TMP/gcc-gdc-$VERSION-$ARCH-$BUILD.txz )