Hi,

I was looking at upgrading sysutils/opensbi to version 1.2, and then
realized that our current gcc/binutils fail to compile it because of
some instruction set errors (which I forgot to write down).

So I figured maybe we should update the toolchain to GCC 12.2.0 and
binutils 2.40.  Unfortunately that breaks the old U-Boot we have in
our tree, but there's an easy fix one can cherry pick from upstream:

https://source.denx.de/u-boot/u-boot/-/commit/1dde977518f13824b847e23275001191139bc384

Thoughts?

Cheers,
Patrick

diff --git a/devel/riscv-elf/binutils/Makefile 
b/devel/riscv-elf/binutils/Makefile
index d66ec64485a..19344dd842d 100644
--- a/devel/riscv-elf/binutils/Makefile
+++ b/devel/riscv-elf/binutils/Makefile
@@ -1,6 +1,6 @@
 COMMENT=       binutils for riscv-elf cross-development
 
-V=             2.31.1
+V=             2.40
 DISTNAME=      binutils-${V}
 
 HOMEPAGE=      https://www.gnu.org/software/binutils/
@@ -10,6 +10,7 @@ WANTLIB=      c
 MASTER_SITES=  ${MASTER_SITE_GNU:=binutils/}
 DIST_SUBDIR=   binutils
 
+USE_GMAKE=     Yes
 USE_LIBTOOL=   No
 
 CONFIGURE_ARGS+=--enable-commonbfdlib=no \
diff --git a/devel/riscv-elf/binutils/distinfo 
b/devel/riscv-elf/binutils/distinfo
index e3af0893907..aa03d28255d 100644
--- a/devel/riscv-elf/binutils/distinfo
+++ b/devel/riscv-elf/binutils/distinfo
@@ -1,2 +1,2 @@
-SHA256 (binutils/binutils-2.31.1.tar.xz) = 
XSAIbs9XUsx9kTQkbpWI+iAXQNVA9+uE15Wx96k7yoY=
-SIZE (binutils/binutils-2.31.1.tar.xz) = 20467996
+SHA256 (binutils/binutils-2.40.tar.xz) = 
D4pMJy1/F/Np3tEKSsoouOMEgo6VUm2kgrDMxN/J2OE=
+SIZE (binutils/binutils-2.40.tar.xz) = 25241484
diff --git a/devel/riscv-elf/binutils/patches/patch-bfd_Makefile_in 
b/devel/riscv-elf/binutils/patches/patch-bfd_Makefile_in
new file mode 100644
index 00000000000..0e55e0a6605
--- /dev/null
+++ b/devel/riscv-elf/binutils/patches/patch-bfd_Makefile_in
@@ -0,0 +1,12 @@
+Index: bfd/Makefile.in
+--- bfd/Makefile.in.orig
++++ bfd/Makefile.in
+@@ -266,7 +266,7 @@ am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V
+ am__v_texidevnull_0 = > /dev/null
+ am__v_texidevnull_1 = 
+ am__dirstamp = $(am__leading_dot)dirstamp
+-INFO_DEPS = doc/bfd.info
++INFO_DEPS =
+ am__TEXINFO_TEX_DIR = $(srcdir)
+ DVIS = doc/bfd.dvi
+ PDFS = doc/bfd.pdf
diff --git a/devel/riscv-elf/binutils/patches/patch-bfd_doc_Makefile_in 
b/devel/riscv-elf/binutils/patches/patch-bfd_doc_Makefile_in
deleted file mode 100644
index 636b2f3c3ac..00000000000
--- a/devel/riscv-elf/binutils/patches/patch-bfd_doc_Makefile_in
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: bfd/doc/Makefile.in
---- bfd/doc/Makefile.in.orig
-+++ bfd/doc/Makefile.in
-@@ -174,7 +174,7 @@ AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
- am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
- am__v_texidevnull_0 = > /dev/null
- am__v_texidevnull_1 = 
--INFO_DEPS = bfd.info
-+INFO_DEPS =
- am__TEXINFO_TEX_DIR = $(srcdir)
- DVIS = bfd.dvi
- PDFS = bfd.pdf
diff --git a/devel/riscv-elf/binutils/patches/patch-binutils_Makefile_in 
b/devel/riscv-elf/binutils/patches/patch-binutils_Makefile_in
new file mode 100644
index 00000000000..88356d74858
--- /dev/null
+++ b/devel/riscv-elf/binutils/patches/patch-binutils_Makefile_in
@@ -0,0 +1,12 @@
+Index: binutils/Makefile.in
+--- binutils/Makefile.in.orig
++++ binutils/Makefile.in
+@@ -404,7 +404,7 @@ AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
+ am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
+ am__v_texidevnull_0 = > /dev/null
+ am__v_texidevnull_1 = 
+-INFO_DEPS = doc/binutils.info
++INFO_DEPS =
+ am__TEXINFO_TEX_DIR = $(srcdir)
+ DVIS = doc/binutils.dvi
+ PDFS = doc/binutils.pdf
diff --git a/devel/riscv-elf/binutils/patches/patch-binutils_doc_Makefile_in 
b/devel/riscv-elf/binutils/patches/patch-binutils_doc_Makefile_in
deleted file mode 100644
index c3a0c562359..00000000000
--- a/devel/riscv-elf/binutils/patches/patch-binutils_doc_Makefile_in
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: binutils/doc/Makefile.in
---- binutils/doc/Makefile.in.orig
-+++ binutils/doc/Makefile.in
-@@ -177,7 +177,7 @@ AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
- am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
- am__v_texidevnull_0 = > /dev/null
- am__v_texidevnull_1 = 
--INFO_DEPS = binutils.info
-+INFO_DEPS =
- am__TEXINFO_TEX_DIR = $(srcdir)
- DVIS = binutils.dvi
- PDFS = binutils.pdf
diff --git a/devel/riscv-elf/binutils/patches/patch-gas_Makefile_in 
b/devel/riscv-elf/binutils/patches/patch-gas_Makefile_in
new file mode 100644
index 00000000000..a6c27d79763
--- /dev/null
+++ b/devel/riscv-elf/binutils/patches/patch-gas_Makefile_in
@@ -0,0 +1,12 @@
+Index: gas/Makefile.in
+--- gas/Makefile.in.orig
++++ gas/Makefile.in
+@@ -270,7 +270,7 @@ AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
+ am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
+ am__v_texidevnull_0 = > /dev/null
+ am__v_texidevnull_1 = 
+-INFO_DEPS = doc/as.info
++INFO_DEPS =
+ TEXINFO_TEX = $(top_srcdir)/../texinfo.tex
+ am__TEXINFO_TEX_DIR = $(top_srcdir)/..
+ DVIS = doc/as.dvi
diff --git a/devel/riscv-elf/binutils/patches/patch-gas_doc_Makefile_in 
b/devel/riscv-elf/binutils/patches/patch-gas_doc_Makefile_in
deleted file mode 100644
index c0b90327cf8..00000000000
--- a/devel/riscv-elf/binutils/patches/patch-gas_doc_Makefile_in
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: gas/doc/Makefile.in
---- gas/doc/Makefile.in.orig
-+++ gas/doc/Makefile.in
-@@ -174,7 +174,7 @@ AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
- am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
- am__v_texidevnull_0 = > /dev/null
- am__v_texidevnull_1 = 
--INFO_DEPS = as.info
-+INFO_DEPS =
- TEXINFO_TEX = $(top_srcdir)/../texinfo.tex
- am__TEXINFO_TEX_DIR = $(top_srcdir)/..
- DVIS = as.dvi
diff --git a/devel/riscv-elf/binutils/patches/patch-gprof_Makefile_in 
b/devel/riscv-elf/binutils/patches/patch-gprof_Makefile_in
index a495ad02021..d9f5f7bd534 100644
--- a/devel/riscv-elf/binutils/patches/patch-gprof_Makefile_in
+++ b/devel/riscv-elf/binutils/patches/patch-gprof_Makefile_in
@@ -1,7 +1,7 @@
 Index: gprof/Makefile.in
 --- gprof/Makefile.in.orig
 +++ gprof/Makefile.in
-@@ -216,7 +216,7 @@ AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
+@@ -217,7 +217,7 @@ AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
  am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
  am__v_texidevnull_0 = > /dev/null
  am__v_texidevnull_1 = 
diff --git a/devel/riscv-elf/binutils/patches/patch-ld_Makefile_in 
b/devel/riscv-elf/binutils/patches/patch-ld_Makefile_in
index 6c5f11522cb..a4d808180c7 100644
--- a/devel/riscv-elf/binutils/patches/patch-ld_Makefile_in
+++ b/devel/riscv-elf/binutils/patches/patch-ld_Makefile_in
@@ -1,7 +1,7 @@
 Index: ld/Makefile.in
 --- ld/Makefile.in.orig
 +++ ld/Makefile.in
-@@ -273,7 +273,7 @@ AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
+@@ -301,7 +301,7 @@ AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
  am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
  am__v_texidevnull_0 = > /dev/null
  am__v_texidevnull_1 = 
diff --git 
a/devel/riscv-elf/binutils/patches/patch-ld_emulparams_elf32lriscv-defs_sh 
b/devel/riscv-elf/binutils/patches/patch-ld_emulparams_elf32lriscv-defs_sh
index 70aa0c223a2..fab1f6d374b 100644
--- a/devel/riscv-elf/binutils/patches/patch-ld_emulparams_elf32lriscv-defs_sh
+++ b/devel/riscv-elf/binutils/patches/patch-ld_emulparams_elf32lriscv-defs_sh
@@ -19,5 +19,5 @@ Index: ld/emulparams/elf32lriscv-defs.sh
 +GENERATE_SHLIB_SCRIPT=yes
 +GENERATE_PIE_SCRIPT=yes
  
+ IREL_IN_PLT=
  TEXT_START_ADDR=0x10000
- MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
diff --git a/devel/riscv-elf/binutils/patches/patch-libiberty_Makefile_in 
b/devel/riscv-elf/binutils/patches/patch-libiberty_Makefile_in
index cb228f7d473..1d096201bfd 100644
--- a/devel/riscv-elf/binutils/patches/patch-libiberty_Makefile_in
+++ b/devel/riscv-elf/binutils/patches/patch-libiberty_Makefile_in
@@ -1,7 +1,7 @@
 Index: libiberty/Makefile.in
 --- libiberty/Makefile.in.orig
 +++ libiberty/Makefile.in
-@@ -355,7 +355,7 @@ libiberty.html : $(srcdir)/libiberty.texi $(TEXISRC)
+@@ -376,7 +376,7 @@ libiberty.html : $(srcdir)/libiberty.texi $(TEXISRC)
  @MAINT@       echo stamp > stamp-functions
  
  INSTALL_DEST = @INSTALL_DEST@
diff --git a/devel/riscv-elf/binutils/pkg/PLIST 
b/devel/riscv-elf/binutils/pkg/PLIST
index 0a308f759e7..bfdfc295a3b 100644
--- a/devel/riscv-elf/binutils/pkg/PLIST
+++ b/devel/riscv-elf/binutils/pkg/PLIST
@@ -14,6 +14,10 @@
 @bin bin/${CONFIG}-size
 @bin bin/${CONFIG}-strings
 @bin bin/${CONFIG}-strip
+@info info/ctf-spec.info
+@info info/sframe-spec.info
+lib/bfd-plugins/
+@static-lib lib/bfd-plugins/libdep.a
 @man man/man1/${CONFIG}-addr2line.1
 @man man/man1/${CONFIG}-ar.1
 @man man/man1/${CONFIG}-as.1
@@ -46,6 +50,28 @@ ${CONFIG}/bin/
 @bin ${CONFIG}/bin/strip
 ${CONFIG}/lib/
 ${CONFIG}/lib/ldscripts/
+${CONFIG}/lib/ldscripts/elf32briscv.x
+${CONFIG}/lib/ldscripts/elf32briscv.xbn
+${CONFIG}/lib/ldscripts/elf32briscv.xc
+${CONFIG}/lib/ldscripts/elf32briscv.xce
+${CONFIG}/lib/ldscripts/elf32briscv.xd
+${CONFIG}/lib/ldscripts/elf32briscv.xdc
+${CONFIG}/lib/ldscripts/elf32briscv.xdce
+${CONFIG}/lib/ldscripts/elf32briscv.xde
+${CONFIG}/lib/ldscripts/elf32briscv.xdw
+${CONFIG}/lib/ldscripts/elf32briscv.xdwe
+${CONFIG}/lib/ldscripts/elf32briscv.xe
+${CONFIG}/lib/ldscripts/elf32briscv.xn
+${CONFIG}/lib/ldscripts/elf32briscv.xr
+${CONFIG}/lib/ldscripts/elf32briscv.xs
+${CONFIG}/lib/ldscripts/elf32briscv.xsc
+${CONFIG}/lib/ldscripts/elf32briscv.xsce
+${CONFIG}/lib/ldscripts/elf32briscv.xse
+${CONFIG}/lib/ldscripts/elf32briscv.xsw
+${CONFIG}/lib/ldscripts/elf32briscv.xswe
+${CONFIG}/lib/ldscripts/elf32briscv.xu
+${CONFIG}/lib/ldscripts/elf32briscv.xw
+${CONFIG}/lib/ldscripts/elf32briscv.xwe
 ${CONFIG}/lib/ldscripts/elf32lriscv.x
 ${CONFIG}/lib/ldscripts/elf32lriscv.xbn
 ${CONFIG}/lib/ldscripts/elf32lriscv.xc
@@ -68,6 +94,28 @@ ${CONFIG}/lib/ldscripts/elf32lriscv.xswe
 ${CONFIG}/lib/ldscripts/elf32lriscv.xu
 ${CONFIG}/lib/ldscripts/elf32lriscv.xw
 ${CONFIG}/lib/ldscripts/elf32lriscv.xwe
+${CONFIG}/lib/ldscripts/elf64briscv.x
+${CONFIG}/lib/ldscripts/elf64briscv.xbn
+${CONFIG}/lib/ldscripts/elf64briscv.xc
+${CONFIG}/lib/ldscripts/elf64briscv.xce
+${CONFIG}/lib/ldscripts/elf64briscv.xd
+${CONFIG}/lib/ldscripts/elf64briscv.xdc
+${CONFIG}/lib/ldscripts/elf64briscv.xdce
+${CONFIG}/lib/ldscripts/elf64briscv.xde
+${CONFIG}/lib/ldscripts/elf64briscv.xdw
+${CONFIG}/lib/ldscripts/elf64briscv.xdwe
+${CONFIG}/lib/ldscripts/elf64briscv.xe
+${CONFIG}/lib/ldscripts/elf64briscv.xn
+${CONFIG}/lib/ldscripts/elf64briscv.xr
+${CONFIG}/lib/ldscripts/elf64briscv.xs
+${CONFIG}/lib/ldscripts/elf64briscv.xsc
+${CONFIG}/lib/ldscripts/elf64briscv.xsce
+${CONFIG}/lib/ldscripts/elf64briscv.xse
+${CONFIG}/lib/ldscripts/elf64briscv.xsw
+${CONFIG}/lib/ldscripts/elf64briscv.xswe
+${CONFIG}/lib/ldscripts/elf64briscv.xu
+${CONFIG}/lib/ldscripts/elf64briscv.xw
+${CONFIG}/lib/ldscripts/elf64briscv.xwe
 ${CONFIG}/lib/ldscripts/elf64lriscv.x
 ${CONFIG}/lib/ldscripts/elf64lriscv.xbn
 ${CONFIG}/lib/ldscripts/elf64lriscv.xc
diff --git a/devel/riscv-elf/gcc/Makefile b/devel/riscv-elf/gcc/Makefile
index 33e6396c211..0c52745b3e9 100644
--- a/devel/riscv-elf/gcc/Makefile
+++ b/devel/riscv-elf/gcc/Makefile
@@ -1,9 +1,8 @@
 COMMENT=       gcc for riscv-elf cross-development
 
-VERSION=       8.1.0
+VERSION=       12.2.0
 DISTNAME=      gcc-${VERSION}
 PKGNAME=       riscv-elf-gcc-${VERSION}
-REVISION=      3
 
 SUBST_VARS+=   VERSION
 
diff --git a/devel/riscv-elf/gcc/distinfo b/devel/riscv-elf/gcc/distinfo
index 7f7017cc78e..6cf177ba496 100644
--- a/devel/riscv-elf/gcc/distinfo
+++ b/devel/riscv-elf/gcc/distinfo
@@ -1,2 +1,2 @@
-SHA256 (gcc/gcc-8.1.0.tar.xz) = HRhm+ZJibmE0mhzNC41SU4FiIs3BM5Dc+qdLCTqisVM=
-SIZE (gcc/gcc-8.1.0.tar.xz) = 63372320
+SHA256 (gcc/gcc-12.2.0.tar.xz) = 5UnPnPNZSgDie2WJ1DItcOByDN0hPzm+tBgeBpJiMP8=
+SIZE (gcc/gcc-12.2.0.tar.xz) = 84645292
diff --git a/devel/riscv-elf/gcc/patches/patch-Makefile_in 
b/devel/riscv-elf/gcc/patches/patch-Makefile_in
index 62098442b23..4905d8d235c 100644
--- a/devel/riscv-elf/gcc/patches/patch-Makefile_in
+++ b/devel/riscv-elf/gcc/patches/patch-Makefile_in
@@ -1,13 +1,12 @@
 Index: Makefile.in
 --- Makefile.in.orig
 +++ Makefile.in
-@@ -989,30 +989,8 @@ configure-host:  \
-     maybe-configure-gotools
+@@ -1116,29 +1116,8 @@ configure-host:  \
+     maybe-configure-libctf
  .PHONY: configure-target
  configure-target:  \
 -    maybe-configure-target-libstdc++-v3 \
 -    maybe-configure-target-libsanitizer \
--    maybe-configure-target-libmpx \
 -    maybe-configure-target-libvtv \
 -    maybe-configure-target-liboffloadmic \
 -    maybe-configure-target-libssp \
@@ -18,7 +17,7 @@ Index: Makefile.in
 -    maybe-configure-target-libgfortran \
 -    maybe-configure-target-libobjc \
 -    maybe-configure-target-libgo \
--    maybe-configure-target-libhsail-rt \
+-    maybe-configure-target-libphobos \
 -    maybe-configure-target-libtermcap \
 -    maybe-configure-target-winsup \
 -    maybe-configure-target-libgloss \
@@ -33,7 +32,7 @@ Index: Makefile.in
  
  # The target built for a native non-bootstrap build.
  .PHONY: all
-@@ -1144,42 +1122,10 @@ all-host: maybe-all-gotools
+@@ -1296,47 +1275,10 @@ all-host: maybe-all-libctf
  
  .PHONY: all-target
  
@@ -43,9 +42,6 @@ Index: Makefile.in
 -@if target-libsanitizer-no-bootstrap
 -all-target: maybe-all-target-libsanitizer
 -@endif target-libsanitizer-no-bootstrap
--@if target-libmpx-no-bootstrap
--all-target: maybe-all-target-libmpx
--@endif target-libmpx-no-bootstrap
 -@if target-libvtv-no-bootstrap
 -all-target: maybe-all-target-libvtv
 -@endif target-libvtv-no-bootstrap
@@ -55,34 +51,41 @@ Index: Makefile.in
  @if target-libgcc-no-bootstrap
  all-target: maybe-all-target-libgcc
  @endif target-libgcc-no-bootstrap
+-@if target-libbacktrace-no-bootstrap
 -all-target: maybe-all-target-libbacktrace
+-@endif target-libbacktrace-no-bootstrap
 -all-target: maybe-all-target-libquadmath
 -all-target: maybe-all-target-libgfortran
 -all-target: maybe-all-target-libobjc
 -all-target: maybe-all-target-libgo
--all-target: maybe-all-target-libhsail-rt
+-@if target-libphobos-no-bootstrap
+-all-target: maybe-all-target-libphobos
+-@endif target-libphobos-no-bootstrap
 -all-target: maybe-all-target-libtermcap
 -all-target: maybe-all-target-winsup
 -all-target: maybe-all-target-libgloss
 -all-target: maybe-all-target-libffi
+-@if target-zlib-no-bootstrap
 -all-target: maybe-all-target-zlib
+-@endif target-zlib-no-bootstrap
 -all-target: maybe-all-target-rda
 -all-target: maybe-all-target-libada
 -@if target-libgomp-no-bootstrap
 -all-target: maybe-all-target-libgomp
 -@endif target-libgomp-no-bootstrap
 -all-target: maybe-all-target-libitm
+-@if target-libatomic-no-bootstrap
 -all-target: maybe-all-target-libatomic
+-@endif target-libatomic-no-bootstrap
  
  # Do a target for all the subdirectories.  A ``make do-X'' will do a
  # ``make X'' in all subdirectories (because, in general, there is a
-@@ -1246,30 +1192,8 @@ info-host: maybe-info-gotools
+@@ -1409,29 +1351,8 @@ info-host: maybe-info-libctf
  
  .PHONY: info-target
  
 -info-target: maybe-info-target-libstdc++-v3
 -info-target: maybe-info-target-libsanitizer
--info-target: maybe-info-target-libmpx
 -info-target: maybe-info-target-libvtv
 -info-target: maybe-info-target-liboffloadmic
 -info-target: maybe-info-target-libssp
@@ -93,7 +96,7 @@ Index: Makefile.in
 -info-target: maybe-info-target-libgfortran
 -info-target: maybe-info-target-libobjc
 -info-target: maybe-info-target-libgo
--info-target: maybe-info-target-libhsail-rt
+-info-target: maybe-info-target-libphobos
 -info-target: maybe-info-target-libtermcap
 -info-target: maybe-info-target-winsup
 -info-target: maybe-info-target-libgloss
@@ -107,13 +110,12 @@ Index: Makefile.in
  
  .PHONY: do-dvi
  do-dvi:
-@@ -1331,30 +1255,8 @@ dvi-host: maybe-dvi-gotools
+@@ -1499,29 +1420,8 @@ dvi-host: maybe-dvi-libctf
  
  .PHONY: dvi-target
  
 -dvi-target: maybe-dvi-target-libstdc++-v3
 -dvi-target: maybe-dvi-target-libsanitizer
--dvi-target: maybe-dvi-target-libmpx
 -dvi-target: maybe-dvi-target-libvtv
 -dvi-target: maybe-dvi-target-liboffloadmic
 -dvi-target: maybe-dvi-target-libssp
@@ -124,7 +126,7 @@ Index: Makefile.in
 -dvi-target: maybe-dvi-target-libgfortran
 -dvi-target: maybe-dvi-target-libobjc
 -dvi-target: maybe-dvi-target-libgo
--dvi-target: maybe-dvi-target-libhsail-rt
+-dvi-target: maybe-dvi-target-libphobos
 -dvi-target: maybe-dvi-target-libtermcap
 -dvi-target: maybe-dvi-target-winsup
 -dvi-target: maybe-dvi-target-libgloss
@@ -138,13 +140,12 @@ Index: Makefile.in
  
  .PHONY: do-pdf
  do-pdf:
-@@ -1416,30 +1318,8 @@ pdf-host: maybe-pdf-gotools
+@@ -1589,29 +1489,8 @@ pdf-host: maybe-pdf-libctf
  
  .PHONY: pdf-target
  
 -pdf-target: maybe-pdf-target-libstdc++-v3
 -pdf-target: maybe-pdf-target-libsanitizer
--pdf-target: maybe-pdf-target-libmpx
 -pdf-target: maybe-pdf-target-libvtv
 -pdf-target: maybe-pdf-target-liboffloadmic
 -pdf-target: maybe-pdf-target-libssp
@@ -155,7 +156,7 @@ Index: Makefile.in
 -pdf-target: maybe-pdf-target-libgfortran
 -pdf-target: maybe-pdf-target-libobjc
 -pdf-target: maybe-pdf-target-libgo
--pdf-target: maybe-pdf-target-libhsail-rt
+-pdf-target: maybe-pdf-target-libphobos
 -pdf-target: maybe-pdf-target-libtermcap
 -pdf-target: maybe-pdf-target-winsup
 -pdf-target: maybe-pdf-target-libgloss
@@ -169,13 +170,12 @@ Index: Makefile.in
  
  .PHONY: do-html
  do-html:
-@@ -1501,30 +1381,8 @@ html-host: maybe-html-gotools
+@@ -1679,29 +1558,8 @@ html-host: maybe-html-libctf
  
  .PHONY: html-target
  
 -html-target: maybe-html-target-libstdc++-v3
 -html-target: maybe-html-target-libsanitizer
--html-target: maybe-html-target-libmpx
 -html-target: maybe-html-target-libvtv
 -html-target: maybe-html-target-liboffloadmic
 -html-target: maybe-html-target-libssp
@@ -186,7 +186,7 @@ Index: Makefile.in
 -html-target: maybe-html-target-libgfortran
 -html-target: maybe-html-target-libobjc
 -html-target: maybe-html-target-libgo
--html-target: maybe-html-target-libhsail-rt
+-html-target: maybe-html-target-libphobos
 -html-target: maybe-html-target-libtermcap
 -html-target: maybe-html-target-winsup
 -html-target: maybe-html-target-libgloss
@@ -200,13 +200,12 @@ Index: Makefile.in
  
  .PHONY: do-TAGS
  do-TAGS:
-@@ -1586,30 +1444,8 @@ TAGS-host: maybe-TAGS-gotools
+@@ -1769,29 +1627,8 @@ TAGS-host: maybe-TAGS-libctf
  
  .PHONY: TAGS-target
  
 -TAGS-target: maybe-TAGS-target-libstdc++-v3
 -TAGS-target: maybe-TAGS-target-libsanitizer
--TAGS-target: maybe-TAGS-target-libmpx
 -TAGS-target: maybe-TAGS-target-libvtv
 -TAGS-target: maybe-TAGS-target-liboffloadmic
 -TAGS-target: maybe-TAGS-target-libssp
@@ -217,7 +216,7 @@ Index: Makefile.in
 -TAGS-target: maybe-TAGS-target-libgfortran
 -TAGS-target: maybe-TAGS-target-libobjc
 -TAGS-target: maybe-TAGS-target-libgo
--TAGS-target: maybe-TAGS-target-libhsail-rt
+-TAGS-target: maybe-TAGS-target-libphobos
 -TAGS-target: maybe-TAGS-target-libtermcap
 -TAGS-target: maybe-TAGS-target-winsup
 -TAGS-target: maybe-TAGS-target-libgloss
@@ -231,13 +230,12 @@ Index: Makefile.in
  
  .PHONY: do-install-info
  do-install-info:
-@@ -1671,30 +1507,8 @@ install-info-host: maybe-install-info-gotools
+@@ -1859,29 +1696,8 @@ install-info-host: maybe-install-info-libctf
  
  .PHONY: install-info-target
  
 -install-info-target: maybe-install-info-target-libstdc++-v3
 -install-info-target: maybe-install-info-target-libsanitizer
--install-info-target: maybe-install-info-target-libmpx
 -install-info-target: maybe-install-info-target-libvtv
 -install-info-target: maybe-install-info-target-liboffloadmic
 -install-info-target: maybe-install-info-target-libssp
@@ -248,7 +246,7 @@ Index: Makefile.in
 -install-info-target: maybe-install-info-target-libgfortran
 -install-info-target: maybe-install-info-target-libobjc
 -install-info-target: maybe-install-info-target-libgo
--install-info-target: maybe-install-info-target-libhsail-rt
+-install-info-target: maybe-install-info-target-libphobos
 -install-info-target: maybe-install-info-target-libtermcap
 -install-info-target: maybe-install-info-target-winsup
 -install-info-target: maybe-install-info-target-libgloss
@@ -260,15 +258,14 @@ Index: Makefile.in
 -install-info-target: maybe-install-info-target-libitm
 -install-info-target: maybe-install-info-target-libatomic
  
- .PHONY: do-install-pdf
- do-install-pdf:
-@@ -1756,30 +1570,8 @@ install-pdf-host: maybe-install-pdf-gotools
+ .PHONY: do-install-dvi
+ do-install-dvi:
+@@ -2039,29 +1855,8 @@ install-pdf-host: maybe-install-pdf-libctf
  
  .PHONY: install-pdf-target
  
 -install-pdf-target: maybe-install-pdf-target-libstdc++-v3
 -install-pdf-target: maybe-install-pdf-target-libsanitizer
--install-pdf-target: maybe-install-pdf-target-libmpx
 -install-pdf-target: maybe-install-pdf-target-libvtv
 -install-pdf-target: maybe-install-pdf-target-liboffloadmic
 -install-pdf-target: maybe-install-pdf-target-libssp
@@ -279,7 +276,7 @@ Index: Makefile.in
 -install-pdf-target: maybe-install-pdf-target-libgfortran
 -install-pdf-target: maybe-install-pdf-target-libobjc
 -install-pdf-target: maybe-install-pdf-target-libgo
--install-pdf-target: maybe-install-pdf-target-libhsail-rt
+-install-pdf-target: maybe-install-pdf-target-libphobos
 -install-pdf-target: maybe-install-pdf-target-libtermcap
 -install-pdf-target: maybe-install-pdf-target-winsup
 -install-pdf-target: maybe-install-pdf-target-libgloss
@@ -293,13 +290,12 @@ Index: Makefile.in
  
  .PHONY: do-install-html
  do-install-html:
-@@ -1841,30 +1633,8 @@ install-html-host: maybe-install-html-gotools
+@@ -2129,29 +1924,8 @@ install-html-host: maybe-install-html-libctf
  
  .PHONY: install-html-target
  
 -install-html-target: maybe-install-html-target-libstdc++-v3
 -install-html-target: maybe-install-html-target-libsanitizer
--install-html-target: maybe-install-html-target-libmpx
 -install-html-target: maybe-install-html-target-libvtv
 -install-html-target: maybe-install-html-target-liboffloadmic
 -install-html-target: maybe-install-html-target-libssp
@@ -310,7 +306,7 @@ Index: Makefile.in
 -install-html-target: maybe-install-html-target-libgfortran
 -install-html-target: maybe-install-html-target-libobjc
 -install-html-target: maybe-install-html-target-libgo
--install-html-target: maybe-install-html-target-libhsail-rt
+-install-html-target: maybe-install-html-target-libphobos
 -install-html-target: maybe-install-html-target-libtermcap
 -install-html-target: maybe-install-html-target-winsup
 -install-html-target: maybe-install-html-target-libgloss
@@ -324,13 +320,12 @@ Index: Makefile.in
  
  .PHONY: do-installcheck
  do-installcheck:
-@@ -1926,30 +1696,8 @@ installcheck-host: maybe-installcheck-gotools
+@@ -2219,29 +1993,8 @@ installcheck-host: maybe-installcheck-libctf
  
  .PHONY: installcheck-target
  
 -installcheck-target: maybe-installcheck-target-libstdc++-v3
 -installcheck-target: maybe-installcheck-target-libsanitizer
--installcheck-target: maybe-installcheck-target-libmpx
 -installcheck-target: maybe-installcheck-target-libvtv
 -installcheck-target: maybe-installcheck-target-liboffloadmic
 -installcheck-target: maybe-installcheck-target-libssp
@@ -341,7 +336,7 @@ Index: Makefile.in
 -installcheck-target: maybe-installcheck-target-libgfortran
 -installcheck-target: maybe-installcheck-target-libobjc
 -installcheck-target: maybe-installcheck-target-libgo
--installcheck-target: maybe-installcheck-target-libhsail-rt
+-installcheck-target: maybe-installcheck-target-libphobos
 -installcheck-target: maybe-installcheck-target-libtermcap
 -installcheck-target: maybe-installcheck-target-winsup
 -installcheck-target: maybe-installcheck-target-libgloss
@@ -355,13 +350,12 @@ Index: Makefile.in
  
  .PHONY: do-mostlyclean
  do-mostlyclean:
-@@ -2011,30 +1759,8 @@ mostlyclean-host: maybe-mostlyclean-gotools
+@@ -2309,29 +2062,8 @@ mostlyclean-host: maybe-mostlyclean-libctf
  
  .PHONY: mostlyclean-target
  
 -mostlyclean-target: maybe-mostlyclean-target-libstdc++-v3
 -mostlyclean-target: maybe-mostlyclean-target-libsanitizer
--mostlyclean-target: maybe-mostlyclean-target-libmpx
 -mostlyclean-target: maybe-mostlyclean-target-libvtv
 -mostlyclean-target: maybe-mostlyclean-target-liboffloadmic
 -mostlyclean-target: maybe-mostlyclean-target-libssp
@@ -372,7 +366,7 @@ Index: Makefile.in
 -mostlyclean-target: maybe-mostlyclean-target-libgfortran
 -mostlyclean-target: maybe-mostlyclean-target-libobjc
 -mostlyclean-target: maybe-mostlyclean-target-libgo
--mostlyclean-target: maybe-mostlyclean-target-libhsail-rt
+-mostlyclean-target: maybe-mostlyclean-target-libphobos
 -mostlyclean-target: maybe-mostlyclean-target-libtermcap
 -mostlyclean-target: maybe-mostlyclean-target-winsup
 -mostlyclean-target: maybe-mostlyclean-target-libgloss
@@ -386,13 +380,12 @@ Index: Makefile.in
  
  .PHONY: do-clean
  do-clean:
-@@ -2096,30 +1822,8 @@ clean-host: maybe-clean-gotools
+@@ -2399,29 +2131,8 @@ clean-host: maybe-clean-libctf
  
  .PHONY: clean-target
  
 -clean-target: maybe-clean-target-libstdc++-v3
 -clean-target: maybe-clean-target-libsanitizer
--clean-target: maybe-clean-target-libmpx
 -clean-target: maybe-clean-target-libvtv
 -clean-target: maybe-clean-target-liboffloadmic
 -clean-target: maybe-clean-target-libssp
@@ -403,7 +396,7 @@ Index: Makefile.in
 -clean-target: maybe-clean-target-libgfortran
 -clean-target: maybe-clean-target-libobjc
 -clean-target: maybe-clean-target-libgo
--clean-target: maybe-clean-target-libhsail-rt
+-clean-target: maybe-clean-target-libphobos
 -clean-target: maybe-clean-target-libtermcap
 -clean-target: maybe-clean-target-winsup
 -clean-target: maybe-clean-target-libgloss
@@ -417,13 +410,12 @@ Index: Makefile.in
  
  .PHONY: do-distclean
  do-distclean:
-@@ -2181,30 +1885,8 @@ distclean-host: maybe-distclean-gotools
+@@ -2489,29 +2200,8 @@ distclean-host: maybe-distclean-libctf
  
  .PHONY: distclean-target
  
 -distclean-target: maybe-distclean-target-libstdc++-v3
 -distclean-target: maybe-distclean-target-libsanitizer
--distclean-target: maybe-distclean-target-libmpx
 -distclean-target: maybe-distclean-target-libvtv
 -distclean-target: maybe-distclean-target-liboffloadmic
 -distclean-target: maybe-distclean-target-libssp
@@ -434,7 +426,7 @@ Index: Makefile.in
 -distclean-target: maybe-distclean-target-libgfortran
 -distclean-target: maybe-distclean-target-libobjc
 -distclean-target: maybe-distclean-target-libgo
--distclean-target: maybe-distclean-target-libhsail-rt
+-distclean-target: maybe-distclean-target-libphobos
 -distclean-target: maybe-distclean-target-libtermcap
 -distclean-target: maybe-distclean-target-winsup
 -distclean-target: maybe-distclean-target-libgloss
@@ -448,13 +440,12 @@ Index: Makefile.in
  
  .PHONY: do-maintainer-clean
  do-maintainer-clean:
-@@ -2266,30 +1948,8 @@ maintainer-clean-host: maybe-maintainer-clean-gotools
+@@ -2579,29 +2269,8 @@ maintainer-clean-host: maybe-maintainer-clean-libctf
  
  .PHONY: maintainer-clean-target
  
 -maintainer-clean-target: maybe-maintainer-clean-target-libstdc++-v3
 -maintainer-clean-target: maybe-maintainer-clean-target-libsanitizer
--maintainer-clean-target: maybe-maintainer-clean-target-libmpx
 -maintainer-clean-target: maybe-maintainer-clean-target-libvtv
 -maintainer-clean-target: maybe-maintainer-clean-target-liboffloadmic
 -maintainer-clean-target: maybe-maintainer-clean-target-libssp
@@ -465,7 +456,7 @@ Index: Makefile.in
 -maintainer-clean-target: maybe-maintainer-clean-target-libgfortran
 -maintainer-clean-target: maybe-maintainer-clean-target-libobjc
 -maintainer-clean-target: maybe-maintainer-clean-target-libgo
--maintainer-clean-target: maybe-maintainer-clean-target-libhsail-rt
+-maintainer-clean-target: maybe-maintainer-clean-target-libphobos
 -maintainer-clean-target: maybe-maintainer-clean-target-libtermcap
 -maintainer-clean-target: maybe-maintainer-clean-target-winsup
 -maintainer-clean-target: maybe-maintainer-clean-target-libgloss
@@ -479,13 +470,12 @@ Index: Makefile.in
  
  
  # Here are the targets which correspond to the do-X targets.
-@@ -2407,30 +2067,8 @@ check-host:  \
+@@ -2727,29 +2396,8 @@ check-host:  \
  
  .PHONY: check-target
  check-target:  \
 -    maybe-check-target-libstdc++-v3 \
 -    maybe-check-target-libsanitizer \
--    maybe-check-target-libmpx \
 -    maybe-check-target-libvtv \
 -    maybe-check-target-liboffloadmic \
 -    maybe-check-target-libssp \
@@ -496,7 +486,7 @@ Index: Makefile.in
 -    maybe-check-target-libgfortran \
 -    maybe-check-target-libobjc \
 -    maybe-check-target-libgo \
--    maybe-check-target-libhsail-rt \
+-    maybe-check-target-libphobos \
 -    maybe-check-target-libtermcap \
 -    maybe-check-target-winsup \
 -    maybe-check-target-libgloss \
@@ -511,13 +501,12 @@ Index: Makefile.in
  
  do-check:
        @: $(MAKE); $(unstage)
-@@ -2588,30 +2226,8 @@ install-host:  \
+@@ -2919,29 +2567,8 @@ install-host:  \
  
  .PHONY: install-target
  install-target:  \
 -    maybe-install-target-libstdc++-v3 \
 -    maybe-install-target-libsanitizer \
--    maybe-install-target-libmpx \
 -    maybe-install-target-libvtv \
 -    maybe-install-target-liboffloadmic \
 -    maybe-install-target-libssp \
@@ -528,7 +517,7 @@ Index: Makefile.in
 -    maybe-install-target-libgfortran \
 -    maybe-install-target-libobjc \
 -    maybe-install-target-libgo \
--    maybe-install-target-libhsail-rt \
+-    maybe-install-target-libphobos \
 -    maybe-install-target-libtermcap \
 -    maybe-install-target-winsup \
 -    maybe-install-target-libgloss \
@@ -543,13 +532,12 @@ Index: Makefile.in
  
  uninstall:
        @echo "the uninstall target is not supported in this tree"
-@@ -2693,31 +2309,8 @@ install-strip-host:  \
+@@ -3029,30 +2656,8 @@ install-strip-host:  \
  
  .PHONY: install-strip-target
  install-strip-target:  \
 -    maybe-install-strip-target-libstdc++-v3 \
 -    maybe-install-strip-target-libsanitizer \
--    maybe-install-strip-target-libmpx \
 -    maybe-install-strip-target-libvtv \
 -    maybe-install-strip-target-liboffloadmic \
 -    maybe-install-strip-target-libssp \
@@ -560,7 +548,7 @@ Index: Makefile.in
 -    maybe-install-strip-target-libgfortran \
 -    maybe-install-strip-target-libobjc \
 -    maybe-install-strip-target-libgo \
--    maybe-install-strip-target-libhsail-rt \
+-    maybe-install-strip-target-libphobos \
 -    maybe-install-strip-target-libtermcap \
 -    maybe-install-strip-target-winsup \
 -    maybe-install-strip-target-libgloss \
diff --git a/devel/riscv-elf/gcc/patches/patch-Makefile_in.orig 
b/devel/riscv-elf/gcc/patches/patch-Makefile_in.orig
new file mode 100644
index 00000000000..0240e139bf5
--- /dev/null
+++ b/devel/riscv-elf/gcc/patches/patch-Makefile_in.orig
@@ -0,0 +1,568 @@
+Index: Makefile.in
+--- Makefile.in.orig
++++ Makefile.in
+@@ -1116,29 +1116,8 @@ configure-host:  \
+     maybe-configure-libctf
+ .PHONY: configure-target
+ configure-target:  \
+-    maybe-configure-target-libstdc++-v3 \
+-    maybe-configure-target-libsanitizer \
+-    maybe-configure-target-libvtv \
+-    maybe-configure-target-liboffloadmic \
+-    maybe-configure-target-libssp \
+     maybe-configure-target-newlib \
+-    maybe-configure-target-libgcc \
+-    maybe-configure-target-libbacktrace \
+-    maybe-configure-target-libquadmath \
+-    maybe-configure-target-libgfortran \
+-    maybe-configure-target-libobjc \
+-    maybe-configure-target-libgo \
+-    maybe-configure-target-libphobos \
+-    maybe-configure-target-libtermcap \
+-    maybe-configure-target-winsup \
+-    maybe-configure-target-libgloss \
+-    maybe-configure-target-libffi \
+-    maybe-configure-target-zlib \
+-    maybe-configure-target-rda \
+-    maybe-configure-target-libada \
+-    maybe-configure-target-libgomp \
+-    maybe-configure-target-libitm \
+-    maybe-configure-target-libatomic
++    maybe-configure-target-libgcc
+ 
+ # The target built for a native non-bootstrap build.
+ .PHONY: all
+@@ -1296,47 +1275,10 @@ all-host: maybe-all-libctf
+ 
+ .PHONY: all-target
+ 
+-@if target-libstdc++-v3-no-bootstrap
+-all-target: maybe-all-target-libstdc++-v3
+-@endif target-libstdc++-v3-no-bootstrap
+-@if target-libsanitizer-no-bootstrap
+-all-target: maybe-all-target-libsanitizer
+-@endif target-libsanitizer-no-bootstrap
+-@if target-libvtv-no-bootstrap
+-all-target: maybe-all-target-libvtv
+-@endif target-libvtv-no-bootstrap
+-all-target: maybe-all-target-liboffloadmic
+-all-target: maybe-all-target-libssp
+ all-target: maybe-all-target-newlib
+ @if target-libgcc-no-bootstrap
+ all-target: maybe-all-target-libgcc
+ @endif target-libgcc-no-bootstrap
+-@if target-libbacktrace-no-bootstrap
+-all-target: maybe-all-target-libbacktrace
+-@endif target-libbacktrace-no-bootstrap
+-all-target: maybe-all-target-libquadmath
+-all-target: maybe-all-target-libgfortran
+-all-target: maybe-all-target-libobjc
+-all-target: maybe-all-target-libgo
+-@if target-libphobos-no-bootstrap
+-all-target: maybe-all-target-libphobos
+-@endif target-libphobos-no-bootstrap
+-all-target: maybe-all-target-libtermcap
+-all-target: maybe-all-target-winsup
+-all-target: maybe-all-target-libgloss
+-all-target: maybe-all-target-libffi
+-@if target-zlib-no-bootstrap
+-all-target: maybe-all-target-zlib
+-@endif target-zlib-no-bootstrap
+-all-target: maybe-all-target-rda
+-all-target: maybe-all-target-libada
+-@if target-libgomp-no-bootstrap
+-all-target: maybe-all-target-libgomp
+-@endif target-libgomp-no-bootstrap
+-all-target: maybe-all-target-libitm
+-@if target-libatomic-no-bootstrap
+-all-target: maybe-all-target-libatomic
+-@endif target-libatomic-no-bootstrap
+ 
+ # Do a target for all the subdirectories.  A ``make do-X'' will do a
+ # ``make X'' in all subdirectories (because, in general, there is a
+@@ -1409,29 +1351,8 @@ info-host: maybe-info-libctf
+ 
+ .PHONY: info-target
+ 
+-info-target: maybe-info-target-libstdc++-v3
+-info-target: maybe-info-target-libsanitizer
+-info-target: maybe-info-target-libvtv
+-info-target: maybe-info-target-liboffloadmic
+-info-target: maybe-info-target-libssp
+ info-target: maybe-info-target-newlib
+ info-target: maybe-info-target-libgcc
+-info-target: maybe-info-target-libbacktrace
+-info-target: maybe-info-target-libquadmath
+-info-target: maybe-info-target-libgfortran
+-info-target: maybe-info-target-libobjc
+-info-target: maybe-info-target-libgo
+-info-target: maybe-info-target-libphobos
+-info-target: maybe-info-target-libtermcap
+-info-target: maybe-info-target-winsup
+-info-target: maybe-info-target-libgloss
+-info-target: maybe-info-target-libffi
+-info-target: maybe-info-target-zlib
+-info-target: maybe-info-target-rda
+-info-target: maybe-info-target-libada
+-info-target: maybe-info-target-libgomp
+-info-target: maybe-info-target-libitm
+-info-target: maybe-info-target-libatomic
+ 
+ .PHONY: do-dvi
+ do-dvi:
+@@ -1499,30 +1420,10 @@ dvi-host: maybe-dvi-libctf
+ 
+ .PHONY: dvi-target
+ 
+-dvi-target: maybe-dvi-target-libstdc++-v3
+-dvi-target: maybe-dvi-target-libsanitizer
+-dvi-target: maybe-dvi-target-libvtv
+-dvi-target: maybe-dvi-target-liboffloadmic
+-dvi-target: maybe-dvi-target-libssp
+ dvi-target: maybe-dvi-target-newlib
+ dvi-target: maybe-dvi-target-libgcc
+-dvi-target: maybe-dvi-target-libbacktrace
+-dvi-target: maybe-dvi-target-libquadmath
+-dvi-target: maybe-dvi-target-libgfortran
+-dvi-target: maybe-dvi-target-libobjc
+-dvi-target: maybe-dvi-target-libgo
+-dvi-target: maybe-dvi-target-libphobos
+-dvi-target: maybe-dvi-target-libtermcap
+-dvi-target: maybe-dvi-target-winsup
+-dvi-target: maybe-dvi-target-libgloss
+-dvi-target: maybe-dvi-target-libffi
+-dvi-target: maybe-dvi-target-zlib
+-dvi-target: maybe-dvi-target-rda
+-dvi-target: maybe-dvi-target-libada
+-dvi-target: maybe-dvi-target-libgomp
+-dvi-target: maybe-dvi-target-libitm
+-dvi-target: maybe-dvi-target-libatomic
+ 
++
+ .PHONY: do-pdf
+ do-pdf:
+       @: $(MAKE); $(unstage)
+@@ -1589,29 +1490,8 @@ pdf-host: maybe-pdf-libctf
+ 
+ .PHONY: pdf-target
+ 
+-pdf-target: maybe-pdf-target-libstdc++-v3
+-pdf-target: maybe-pdf-target-libsanitizer
+-pdf-target: maybe-pdf-target-libvtv
+-pdf-target: maybe-pdf-target-liboffloadmic
+-pdf-target: maybe-pdf-target-libssp
+ pdf-target: maybe-pdf-target-newlib
+ pdf-target: maybe-pdf-target-libgcc
+-pdf-target: maybe-pdf-target-libbacktrace
+-pdf-target: maybe-pdf-target-libquadmath
+-pdf-target: maybe-pdf-target-libgfortran
+-pdf-target: maybe-pdf-target-libobjc
+-pdf-target: maybe-pdf-target-libgo
+-pdf-target: maybe-pdf-target-libphobos
+-pdf-target: maybe-pdf-target-libtermcap
+-pdf-target: maybe-pdf-target-winsup
+-pdf-target: maybe-pdf-target-libgloss
+-pdf-target: maybe-pdf-target-libffi
+-pdf-target: maybe-pdf-target-zlib
+-pdf-target: maybe-pdf-target-rda
+-pdf-target: maybe-pdf-target-libada
+-pdf-target: maybe-pdf-target-libgomp
+-pdf-target: maybe-pdf-target-libitm
+-pdf-target: maybe-pdf-target-libatomic
+ 
+ .PHONY: do-html
+ do-html:
+@@ -1678,30 +1558,8 @@ html-host: maybe-html-gotools
+ html-host: maybe-html-libctf
+ 
+ .PHONY: html-target
+-
+-html-target: maybe-html-target-libstdc++-v3
+-html-target: maybe-html-target-libsanitizer
+-html-target: maybe-html-target-libvtv
+-html-target: maybe-html-target-liboffloadmic
+-html-target: maybe-html-target-libssp
+ html-target: maybe-html-target-newlib
+ html-target: maybe-html-target-libgcc
+-html-target: maybe-html-target-libbacktrace
+-html-target: maybe-html-target-libquadmath
+-html-target: maybe-html-target-libgfortran
+-html-target: maybe-html-target-libobjc
+-html-target: maybe-html-target-libgo
+-html-target: maybe-html-target-libphobos
+-html-target: maybe-html-target-libtermcap
+-html-target: maybe-html-target-winsup
+-html-target: maybe-html-target-libgloss
+-html-target: maybe-html-target-libffi
+-html-target: maybe-html-target-zlib
+-html-target: maybe-html-target-rda
+-html-target: maybe-html-target-libada
+-html-target: maybe-html-target-libgomp
+-html-target: maybe-html-target-libitm
+-html-target: maybe-html-target-libatomic
+ 
+ .PHONY: do-TAGS
+ do-TAGS:
+@@ -1769,29 +1627,8 @@ TAGS-host: maybe-TAGS-libctf
+ 
+ .PHONY: TAGS-target
+ 
+-TAGS-target: maybe-TAGS-target-libstdc++-v3
+-TAGS-target: maybe-TAGS-target-libsanitizer
+-TAGS-target: maybe-TAGS-target-libvtv
+-TAGS-target: maybe-TAGS-target-liboffloadmic
+-TAGS-target: maybe-TAGS-target-libssp
+ TAGS-target: maybe-TAGS-target-newlib
+ TAGS-target: maybe-TAGS-target-libgcc
+-TAGS-target: maybe-TAGS-target-libbacktrace
+-TAGS-target: maybe-TAGS-target-libquadmath
+-TAGS-target: maybe-TAGS-target-libgfortran
+-TAGS-target: maybe-TAGS-target-libobjc
+-TAGS-target: maybe-TAGS-target-libgo
+-TAGS-target: maybe-TAGS-target-libphobos
+-TAGS-target: maybe-TAGS-target-libtermcap
+-TAGS-target: maybe-TAGS-target-winsup
+-TAGS-target: maybe-TAGS-target-libgloss
+-TAGS-target: maybe-TAGS-target-libffi
+-TAGS-target: maybe-TAGS-target-zlib
+-TAGS-target: maybe-TAGS-target-rda
+-TAGS-target: maybe-TAGS-target-libada
+-TAGS-target: maybe-TAGS-target-libgomp
+-TAGS-target: maybe-TAGS-target-libitm
+-TAGS-target: maybe-TAGS-target-libatomic
+ 
+ .PHONY: do-install-info
+ do-install-info:
+@@ -1859,29 +1696,8 @@ install-info-host: maybe-install-info-libctf
+ 
+ .PHONY: install-info-target
+ 
+-install-info-target: maybe-install-info-target-libstdc++-v3
+-install-info-target: maybe-install-info-target-libsanitizer
+-install-info-target: maybe-install-info-target-libvtv
+-install-info-target: maybe-install-info-target-liboffloadmic
+-install-info-target: maybe-install-info-target-libssp
+ install-info-target: maybe-install-info-target-newlib
+ install-info-target: maybe-install-info-target-libgcc
+-install-info-target: maybe-install-info-target-libbacktrace
+-install-info-target: maybe-install-info-target-libquadmath
+-install-info-target: maybe-install-info-target-libgfortran
+-install-info-target: maybe-install-info-target-libobjc
+-install-info-target: maybe-install-info-target-libgo
+-install-info-target: maybe-install-info-target-libphobos
+-install-info-target: maybe-install-info-target-libtermcap
+-install-info-target: maybe-install-info-target-winsup
+-install-info-target: maybe-install-info-target-libgloss
+-install-info-target: maybe-install-info-target-libffi
+-install-info-target: maybe-install-info-target-zlib
+-install-info-target: maybe-install-info-target-rda
+-install-info-target: maybe-install-info-target-libada
+-install-info-target: maybe-install-info-target-libgomp
+-install-info-target: maybe-install-info-target-libitm
+-install-info-target: maybe-install-info-target-libatomic
+ 
+ .PHONY: do-install-dvi
+ do-install-dvi:
+@@ -2039,29 +1855,8 @@ install-pdf-host: maybe-install-pdf-libctf
+ 
+ .PHONY: install-pdf-target
+ 
+-install-pdf-target: maybe-install-pdf-target-libstdc++-v3
+-install-pdf-target: maybe-install-pdf-target-libsanitizer
+-install-pdf-target: maybe-install-pdf-target-libvtv
+-install-pdf-target: maybe-install-pdf-target-liboffloadmic
+-install-pdf-target: maybe-install-pdf-target-libssp
+ install-pdf-target: maybe-install-pdf-target-newlib
+ install-pdf-target: maybe-install-pdf-target-libgcc
+-install-pdf-target: maybe-install-pdf-target-libbacktrace
+-install-pdf-target: maybe-install-pdf-target-libquadmath
+-install-pdf-target: maybe-install-pdf-target-libgfortran
+-install-pdf-target: maybe-install-pdf-target-libobjc
+-install-pdf-target: maybe-install-pdf-target-libgo
+-install-pdf-target: maybe-install-pdf-target-libphobos
+-install-pdf-target: maybe-install-pdf-target-libtermcap
+-install-pdf-target: maybe-install-pdf-target-winsup
+-install-pdf-target: maybe-install-pdf-target-libgloss
+-install-pdf-target: maybe-install-pdf-target-libffi
+-install-pdf-target: maybe-install-pdf-target-zlib
+-install-pdf-target: maybe-install-pdf-target-rda
+-install-pdf-target: maybe-install-pdf-target-libada
+-install-pdf-target: maybe-install-pdf-target-libgomp
+-install-pdf-target: maybe-install-pdf-target-libitm
+-install-pdf-target: maybe-install-pdf-target-libatomic
+ 
+ .PHONY: do-install-html
+ do-install-html:
+@@ -2129,29 +1924,8 @@ install-html-host: maybe-install-html-libctf
+ 
+ .PHONY: install-html-target
+ 
+-install-html-target: maybe-install-html-target-libstdc++-v3
+-install-html-target: maybe-install-html-target-libsanitizer
+-install-html-target: maybe-install-html-target-libvtv
+-install-html-target: maybe-install-html-target-liboffloadmic
+-install-html-target: maybe-install-html-target-libssp
+ install-html-target: maybe-install-html-target-newlib
+ install-html-target: maybe-install-html-target-libgcc
+-install-html-target: maybe-install-html-target-libbacktrace
+-install-html-target: maybe-install-html-target-libquadmath
+-install-html-target: maybe-install-html-target-libgfortran
+-install-html-target: maybe-install-html-target-libobjc
+-install-html-target: maybe-install-html-target-libgo
+-install-html-target: maybe-install-html-target-libphobos
+-install-html-target: maybe-install-html-target-libtermcap
+-install-html-target: maybe-install-html-target-winsup
+-install-html-target: maybe-install-html-target-libgloss
+-install-html-target: maybe-install-html-target-libffi
+-install-html-target: maybe-install-html-target-zlib
+-install-html-target: maybe-install-html-target-rda
+-install-html-target: maybe-install-html-target-libada
+-install-html-target: maybe-install-html-target-libgomp
+-install-html-target: maybe-install-html-target-libitm
+-install-html-target: maybe-install-html-target-libatomic
+ 
+ .PHONY: do-installcheck
+ do-installcheck:
+@@ -2219,29 +1993,8 @@ installcheck-host: maybe-installcheck-libctf
+ 
+ .PHONY: installcheck-target
+ 
+-installcheck-target: maybe-installcheck-target-libstdc++-v3
+-installcheck-target: maybe-installcheck-target-libsanitizer
+-installcheck-target: maybe-installcheck-target-libvtv
+-installcheck-target: maybe-installcheck-target-liboffloadmic
+-installcheck-target: maybe-installcheck-target-libssp
+ installcheck-target: maybe-installcheck-target-newlib
+ installcheck-target: maybe-installcheck-target-libgcc
+-installcheck-target: maybe-installcheck-target-libbacktrace
+-installcheck-target: maybe-installcheck-target-libquadmath
+-installcheck-target: maybe-installcheck-target-libgfortran
+-installcheck-target: maybe-installcheck-target-libobjc
+-installcheck-target: maybe-installcheck-target-libgo
+-installcheck-target: maybe-installcheck-target-libphobos
+-installcheck-target: maybe-installcheck-target-libtermcap
+-installcheck-target: maybe-installcheck-target-winsup
+-installcheck-target: maybe-installcheck-target-libgloss
+-installcheck-target: maybe-installcheck-target-libffi
+-installcheck-target: maybe-installcheck-target-zlib
+-installcheck-target: maybe-installcheck-target-rda
+-installcheck-target: maybe-installcheck-target-libada
+-installcheck-target: maybe-installcheck-target-libgomp
+-installcheck-target: maybe-installcheck-target-libitm
+-installcheck-target: maybe-installcheck-target-libatomic
+ 
+ .PHONY: do-mostlyclean
+ do-mostlyclean:
+@@ -2309,29 +2062,8 @@ mostlyclean-host: maybe-mostlyclean-libctf
+ 
+ .PHONY: mostlyclean-target
+ 
+-mostlyclean-target: maybe-mostlyclean-target-libstdc++-v3
+-mostlyclean-target: maybe-mostlyclean-target-libsanitizer
+-mostlyclean-target: maybe-mostlyclean-target-libvtv
+-mostlyclean-target: maybe-mostlyclean-target-liboffloadmic
+-mostlyclean-target: maybe-mostlyclean-target-libssp
+ mostlyclean-target: maybe-mostlyclean-target-newlib
+ mostlyclean-target: maybe-mostlyclean-target-libgcc
+-mostlyclean-target: maybe-mostlyclean-target-libbacktrace
+-mostlyclean-target: maybe-mostlyclean-target-libquadmath
+-mostlyclean-target: maybe-mostlyclean-target-libgfortran
+-mostlyclean-target: maybe-mostlyclean-target-libobjc
+-mostlyclean-target: maybe-mostlyclean-target-libgo
+-mostlyclean-target: maybe-mostlyclean-target-libphobos
+-mostlyclean-target: maybe-mostlyclean-target-libtermcap
+-mostlyclean-target: maybe-mostlyclean-target-winsup
+-mostlyclean-target: maybe-mostlyclean-target-libgloss
+-mostlyclean-target: maybe-mostlyclean-target-libffi
+-mostlyclean-target: maybe-mostlyclean-target-zlib
+-mostlyclean-target: maybe-mostlyclean-target-rda
+-mostlyclean-target: maybe-mostlyclean-target-libada
+-mostlyclean-target: maybe-mostlyclean-target-libgomp
+-mostlyclean-target: maybe-mostlyclean-target-libitm
+-mostlyclean-target: maybe-mostlyclean-target-libatomic
+ 
+ .PHONY: do-clean
+ do-clean:
+@@ -2399,29 +2131,8 @@ clean-host: maybe-clean-libctf
+ 
+ .PHONY: clean-target
+ 
+-clean-target: maybe-clean-target-libstdc++-v3
+-clean-target: maybe-clean-target-libsanitizer
+-clean-target: maybe-clean-target-libvtv
+-clean-target: maybe-clean-target-liboffloadmic
+-clean-target: maybe-clean-target-libssp
+ clean-target: maybe-clean-target-newlib
+ clean-target: maybe-clean-target-libgcc
+-clean-target: maybe-clean-target-libbacktrace
+-clean-target: maybe-clean-target-libquadmath
+-clean-target: maybe-clean-target-libgfortran
+-clean-target: maybe-clean-target-libobjc
+-clean-target: maybe-clean-target-libgo
+-clean-target: maybe-clean-target-libphobos
+-clean-target: maybe-clean-target-libtermcap
+-clean-target: maybe-clean-target-winsup
+-clean-target: maybe-clean-target-libgloss
+-clean-target: maybe-clean-target-libffi
+-clean-target: maybe-clean-target-zlib
+-clean-target: maybe-clean-target-rda
+-clean-target: maybe-clean-target-libada
+-clean-target: maybe-clean-target-libgomp
+-clean-target: maybe-clean-target-libitm
+-clean-target: maybe-clean-target-libatomic
+ 
+ .PHONY: do-distclean
+ do-distclean:
+@@ -2489,29 +2200,8 @@ distclean-host: maybe-distclean-libctf
+ 
+ .PHONY: distclean-target
+ 
+-distclean-target: maybe-distclean-target-libstdc++-v3
+-distclean-target: maybe-distclean-target-libsanitizer
+-distclean-target: maybe-distclean-target-libvtv
+-distclean-target: maybe-distclean-target-liboffloadmic
+-distclean-target: maybe-distclean-target-libssp
+ distclean-target: maybe-distclean-target-newlib
+ distclean-target: maybe-distclean-target-libgcc
+-distclean-target: maybe-distclean-target-libbacktrace
+-distclean-target: maybe-distclean-target-libquadmath
+-distclean-target: maybe-distclean-target-libgfortran
+-distclean-target: maybe-distclean-target-libobjc
+-distclean-target: maybe-distclean-target-libgo
+-distclean-target: maybe-distclean-target-libphobos
+-distclean-target: maybe-distclean-target-libtermcap
+-distclean-target: maybe-distclean-target-winsup
+-distclean-target: maybe-distclean-target-libgloss
+-distclean-target: maybe-distclean-target-libffi
+-distclean-target: maybe-distclean-target-zlib
+-distclean-target: maybe-distclean-target-rda
+-distclean-target: maybe-distclean-target-libada
+-distclean-target: maybe-distclean-target-libgomp
+-distclean-target: maybe-distclean-target-libitm
+-distclean-target: maybe-distclean-target-libatomic
+ 
+ .PHONY: do-maintainer-clean
+ do-maintainer-clean:
+@@ -2579,29 +2269,8 @@ maintainer-clean-host: maybe-maintainer-clean-libctf
+ 
+ .PHONY: maintainer-clean-target
+ 
+-maintainer-clean-target: maybe-maintainer-clean-target-libstdc++-v3
+-maintainer-clean-target: maybe-maintainer-clean-target-libsanitizer
+-maintainer-clean-target: maybe-maintainer-clean-target-libvtv
+-maintainer-clean-target: maybe-maintainer-clean-target-liboffloadmic
+-maintainer-clean-target: maybe-maintainer-clean-target-libssp
+ maintainer-clean-target: maybe-maintainer-clean-target-newlib
+ maintainer-clean-target: maybe-maintainer-clean-target-libgcc
+-maintainer-clean-target: maybe-maintainer-clean-target-libbacktrace
+-maintainer-clean-target: maybe-maintainer-clean-target-libquadmath
+-maintainer-clean-target: maybe-maintainer-clean-target-libgfortran
+-maintainer-clean-target: maybe-maintainer-clean-target-libobjc
+-maintainer-clean-target: maybe-maintainer-clean-target-libgo
+-maintainer-clean-target: maybe-maintainer-clean-target-libphobos
+-maintainer-clean-target: maybe-maintainer-clean-target-libtermcap
+-maintainer-clean-target: maybe-maintainer-clean-target-winsup
+-maintainer-clean-target: maybe-maintainer-clean-target-libgloss
+-maintainer-clean-target: maybe-maintainer-clean-target-libffi
+-maintainer-clean-target: maybe-maintainer-clean-target-zlib
+-maintainer-clean-target: maybe-maintainer-clean-target-rda
+-maintainer-clean-target: maybe-maintainer-clean-target-libada
+-maintainer-clean-target: maybe-maintainer-clean-target-libgomp
+-maintainer-clean-target: maybe-maintainer-clean-target-libitm
+-maintainer-clean-target: maybe-maintainer-clean-target-libatomic
+ 
+ 
+ # Here are the targets which correspond to the do-X targets.
+@@ -2727,29 +2396,8 @@ check-host:  \
+ 
+ .PHONY: check-target
+ check-target:  \
+-    maybe-check-target-libstdc++-v3 \
+-    maybe-check-target-libsanitizer \
+-    maybe-check-target-libvtv \
+-    maybe-check-target-liboffloadmic \
+-    maybe-check-target-libssp \
+     maybe-check-target-newlib \
+-    maybe-check-target-libgcc \
+-    maybe-check-target-libbacktrace \
+-    maybe-check-target-libquadmath \
+-    maybe-check-target-libgfortran \
+-    maybe-check-target-libobjc \
+-    maybe-check-target-libgo \
+-    maybe-check-target-libphobos \
+-    maybe-check-target-libtermcap \
+-    maybe-check-target-winsup \
+-    maybe-check-target-libgloss \
+-    maybe-check-target-libffi \
+-    maybe-check-target-zlib \
+-    maybe-check-target-rda \
+-    maybe-check-target-libada \
+-    maybe-check-target-libgomp \
+-    maybe-check-target-libitm \
+-    maybe-check-target-libatomic
++    maybe-check-target-libgcc
+ 
+ do-check:
+       @: $(MAKE); $(unstage)
+@@ -2919,29 +2567,8 @@ install-host:  \
+ 
+ .PHONY: install-target
+ install-target:  \
+-    maybe-install-target-libstdc++-v3 \
+-    maybe-install-target-libsanitizer \
+-    maybe-install-target-libvtv \
+-    maybe-install-target-liboffloadmic \
+-    maybe-install-target-libssp \
+     maybe-install-target-newlib \
+-    maybe-install-target-libgcc \
+-    maybe-install-target-libbacktrace \
+-    maybe-install-target-libquadmath \
+-    maybe-install-target-libgfortran \
+-    maybe-install-target-libobjc \
+-    maybe-install-target-libgo \
+-    maybe-install-target-libphobos \
+-    maybe-install-target-libtermcap \
+-    maybe-install-target-winsup \
+-    maybe-install-target-libgloss \
+-    maybe-install-target-libffi \
+-    maybe-install-target-zlib \
+-    maybe-install-target-rda \
+-    maybe-install-target-libada \
+-    maybe-install-target-libgomp \
+-    maybe-install-target-libitm \
+-    maybe-install-target-libatomic
++    maybe-install-target-libgcc
+ 
+ uninstall:
+       @echo "the uninstall target is not supported in this tree"
+@@ -3029,29 +2656,8 @@ install-strip-host:  \
+ 
+ .PHONY: install-strip-target
+ install-strip-target:  \
+-    maybe-install-strip-target-libstdc++-v3 \
+-    maybe-install-strip-target-libsanitizer \
+-    maybe-install-strip-target-libvtv \
+-    maybe-install-strip-target-liboffloadmic \
+-    maybe-install-strip-target-libssp \
+     maybe-install-strip-target-newlib \
+-    maybe-install-strip-target-libgcc \
+-    maybe-install-strip-target-libbacktrace \
+-    maybe-install-strip-target-libquadmath \
+-    maybe-install-strip-target-libgfortran \
+-    maybe-install-strip-target-libobjc \
+-    maybe-install-strip-target-libgo \
+-    maybe-install-strip-target-libphobos \
+-    maybe-install-strip-target-libtermcap \
+-    maybe-install-strip-target-winsup \
+-    maybe-install-strip-target-libgloss \
+-    maybe-install-strip-target-libffi \
+-    maybe-install-strip-target-zlib \
+-    maybe-install-strip-target-rda \
+-    maybe-install-strip-target-libada \
+-    maybe-install-strip-target-libgomp \
+-    maybe-install-strip-target-libitm \
+-    maybe-install-strip-target-libatomic
++    maybe-install-strip-target-libgcc
+ 
+ 
+ ### other supporting targets
diff --git a/devel/riscv-elf/gcc/patches/patch-gcc_Makefile_in 
b/devel/riscv-elf/gcc/patches/patch-gcc_Makefile_in
index 733f861f011..67ca004ec32 100644
--- a/devel/riscv-elf/gcc/patches/patch-gcc_Makefile_in
+++ b/devel/riscv-elf/gcc/patches/patch-gcc_Makefile_in
@@ -1,7 +1,7 @@
 Index: gcc/Makefile.in
 --- gcc/Makefile.in.orig
 +++ gcc/Makefile.in
-@@ -3630,13 +3630,7 @@ install-driver: installdirs xgcc$(exeext)
+@@ -3784,13 +3784,7 @@ install-driver: installdirs xgcc$(exeext)
  # Install the info files.
  # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir
  # to do the install.
@@ -16,15 +16,15 @@ Index: gcc/Makefile.in
  
  $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs
        rm -f $@
-@@ -3690,10 +3684,7 @@ install-man: lang.install-man \
-       $(DESTDIR)$(man1dir)/$(CPP_INSTALL_NAME)$(man1ext) \
+@@ -3857,10 +3851,7 @@ install-man: lang.install-man \
        $(DESTDIR)$(man1dir)/$(GCOV_INSTALL_NAME)$(man1ext) \
        $(DESTDIR)$(man1dir)/$(GCOV_TOOL_INSTALL_NAME)$(man1ext) \
--      $(DESTDIR)$(man1dir)/$(GCOV_DUMP_INSTALL_NAME)$(man1ext) \
+       $(DESTDIR)$(man1dir)/$(GCOV_DUMP_INSTALL_NAME)$(man1ext) \
+-      $(if $(filter 
yes,@enable_lto@),$(DESTDIR)$(man1dir)/$(LTO_DUMP_INSTALL_NAME)$(man1ext)) \
 -      $(DESTDIR)$(man7dir)/fsf-funding$(man7ext) \
 -      $(DESTDIR)$(man7dir)/gfdl$(man7ext) \
 -      $(DESTDIR)$(man7dir)/gpl$(man7ext)
-+      $(DESTDIR)$(man1dir)/$(GCOV_DUMP_INSTALL_NAME)$(man1ext)
++      $(if $(filter 
yes,@enable_lto@),$(DESTDIR)$(man1dir)/$(LTO_DUMP_INSTALL_NAME)$(man1ext))
  
  $(DESTDIR)$(man7dir)/%$(man7ext): doc/%.7 installdirs
        -rm -f $@
diff --git a/devel/riscv-elf/gcc/patches/patch-gcc_configure 
b/devel/riscv-elf/gcc/patches/patch-gcc_configure
index 2bf98d61a59..0bef668b487 100644
--- a/devel/riscv-elf/gcc/patches/patch-gcc_configure
+++ b/devel/riscv-elf/gcc/patches/patch-gcc_configure
@@ -1,7 +1,7 @@
 Index: gcc/configure
 --- gcc/configure.orig
 +++ gcc/configure
-@@ -30132,14 +30132,14 @@ if test "$gcc_cv_c_no_fpie" = "yes"; then
+@@ -32456,14 +32456,14 @@ if test "$gcc_cv_c_no_fpie" = "yes"; then
  fi
  
  
@@ -11,7 +11,7 @@ Index: gcc/configure
 +# Check if -nopie works.
 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -nopie option" >&5
 +$as_echo_n "checking for -nopie option... " >&6; }
- if test "${gcc_cv_no_pie+set}" = set; then :
+ if ${gcc_cv_no_pie+:} false; then :
    $as_echo_n "(cached) " >&6
  else
    saved_LDFLAGS="$LDFLAGS"
@@ -20,7 +20,7 @@ Index: gcc/configure
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
  int main(void) {return 0;}
-@@ -30156,7 +30156,7 @@ fi
+@@ -32480,7 +32480,7 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_no_pie" >&5
  $as_echo "$gcc_cv_no_pie" >&6; }
  if test "$gcc_cv_no_pie" = "yes"; then
diff --git a/devel/riscv-elf/gcc/patches/patch-gcc_tree-vect-stmts_c 
b/devel/riscv-elf/gcc/patches/patch-gcc_tree-vect-stmts_c
deleted file mode 100644
index 45bda99102f..00000000000
--- a/devel/riscv-elf/gcc/patches/patch-gcc_tree-vect-stmts_c
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: gcc/tree-vect-stmts.c
---- gcc/tree-vect-stmts.c.orig
-+++ gcc/tree-vect-stmts.c
-@@ -3745,7 +3745,7 @@ vectorizable_simd_clone_call (gimple *stmt, gimple_stm
-       dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
-                        "not considering SIMD clones; not yet supported"
-                        " for variable-width vectors.\n");
--      return NULL;
-+      return false;
-     }
- 
-   unsigned int badness = 0;
diff --git a/devel/riscv-elf/gcc/patches/patch-libgcc_Makefile_in 
b/devel/riscv-elf/gcc/patches/patch-libgcc_Makefile_in
index cd66f3d2d1c..a874c18315e 100644
--- a/devel/riscv-elf/gcc/patches/patch-libgcc_Makefile_in
+++ b/devel/riscv-elf/gcc/patches/patch-libgcc_Makefile_in
@@ -1,7 +1,7 @@
 Index: libgcc/Makefile.in
 --- libgcc/Makefile.in.orig
 +++ libgcc/Makefile.in
-@@ -1083,7 +1083,7 @@ libgcc-extra-parts: $(EXTRA_PARTS)
+@@ -1093,7 +1093,7 @@ libgcc-extra-parts: $(EXTRA_PARTS)
        parts="$(EXTRA_PARTS)";                                 \
        for file in $$parts; do                                 \
          rm -f $(gcc_objdir)$(MULTISUBDIR)/$$file;             \
@@ -10,7 +10,7 @@ Index: libgcc/Makefile.in
          case $$file in                                        \
            *.a)                                                \
              $(RANLIB) $(gcc_objdir)$(MULTISUBDIR)/$$file ;;   \
-@@ -1113,7 +1113,7 @@ install-unwind_h-forbuild: unwind.h
+@@ -1123,7 +1123,7 @@ install-unwind_h-forbuild: unwind.h
  # internal headers are copied by gcc's install.
  install-unwind_h:
        $(mkinstalldirs) $(DESTDIR)$(libsubdir)/include
@@ -19,7 +19,7 @@ Index: libgcc/Makefile.in
  
  all: install-unwind_h-forbuild
  
-@@ -1139,7 +1139,7 @@ install-libunwind:
+@@ -1149,7 +1149,7 @@ install-libunwind:
  
        # NOTE: Maybe this should go into $(inst_libdir), but this
        # is where the old mklibgcc.in put it.
@@ -28,7 +28,7 @@ Index: libgcc/Makefile.in
        chmod 644 $(DESTDIR)$(inst_slibdir)/libunwind.a
        $(RANLIB) $(DESTDIR)$(inst_slibdir)/libunwind.a
  
-@@ -1150,7 +1150,7 @@ install-libunwind:
+@@ -1160,7 +1160,7 @@ install-libunwind:
  install-shared:
        $(mkinstalldirs) $(DESTDIR)$(inst_libdir)
  
@@ -37,24 +37,26 @@ Index: libgcc/Makefile.in
        chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
        $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
  
-@@ -1161,17 +1161,15 @@ install-shared:
+@@ -1171,19 +1171,17 @@ install-shared:
  install-leaf: $(install-shared) $(install-libunwind)
        $(mkinstalldirs) $(DESTDIR)$(inst_libdir)
  
 -      $(INSTALL_DATA) libgcc.a $(DESTDIR)$(inst_libdir)/
 -      chmod 644 $(DESTDIR)$(inst_libdir)/libgcc.a
-+      install -c libgcc.a $(DESTDIR)$(inst_libdir)/
++      install -c libgcc.a $(DESTDIR)$(inst_libdir)
        $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc.a
+ ifeq ($(enable_gcov),yes)
 -      $(INSTALL_DATA) libgcov.a $(DESTDIR)$(inst_libdir)/
 -      chmod 644 $(DESTDIR)$(inst_libdir)/libgcov.a
-+      install -c libgcov.a $(DESTDIR)$(inst_libdir)/
++      install -c libgcov.a $(DESTDIR)$(inst_libdir)
        $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcov.a
+ endif
  
        parts="$(INSTALL_PARTS)";                               \
        for file in $$parts; do                                 \
          rm -f $(DESTDIR)$(inst_libdir)/$$file;                \
 -        $(INSTALL_DATA) $$file $(DESTDIR)$(inst_libdir)/;     \
-+        install -c $$file $(DESTDIR)$(inst_libdir)/;  \
++        install -c $$file $(DESTDIR)$(inst_libdir)/;          \
          case $$file in                                        \
            *.a)                                                \
              $(RANLIB) $(gcc_objdir)$(MULTISUBDIR)/$$file ;;   \
diff --git a/devel/riscv-elf/gcc/patches/patch-libiberty_Makefile_in 
b/devel/riscv-elf/gcc/patches/patch-libiberty_Makefile_in
index cb228f7d473..1d096201bfd 100644
--- a/devel/riscv-elf/gcc/patches/patch-libiberty_Makefile_in
+++ b/devel/riscv-elf/gcc/patches/patch-libiberty_Makefile_in
@@ -1,7 +1,7 @@
 Index: libiberty/Makefile.in
 --- libiberty/Makefile.in.orig
 +++ libiberty/Makefile.in
-@@ -355,7 +355,7 @@ libiberty.html : $(srcdir)/libiberty.texi $(TEXISRC)
+@@ -376,7 +376,7 @@ libiberty.html : $(srcdir)/libiberty.texi $(TEXISRC)
  @MAINT@       echo stamp > stamp-functions
  
  INSTALL_DEST = @INSTALL_DEST@
diff --git a/devel/riscv-elf/gcc/pkg/PLIST b/devel/riscv-elf/gcc/pkg/PLIST
index 5651762fa54..ae5e7fd18cd 100644
--- a/devel/riscv-elf/gcc/pkg/PLIST
+++ b/devel/riscv-elf/gcc/pkg/PLIST
@@ -44,8 +44,8 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/install-tools/include/README
 lib/gcc/riscv64-unknown-elf/${VERSION}/install-tools/include/limits.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/install-tools/macro_list
 lib/gcc/riscv64-unknown-elf/${VERSION}/install-tools/mkheaders.conf
-lib/gcc/riscv64-unknown-elf/${VERSION}/libgcc.a
-lib/gcc/riscv64-unknown-elf/${VERSION}/libgcov.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/libgcc.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/libgcov.a
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/gtype.state
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/
@@ -54,10 +54,13 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ada/gcc-interface/
 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ada/gcc-interface/ada-tree.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/addresses.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/alias.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/align.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/all-tree.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/alloc-pool.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ansidecl.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/array-traits.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/asan.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/attr-fnspec.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/attribs.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/auto-host.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/auto-profile.h
@@ -66,7 +69,6 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/backend.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/basic-block.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/bb-reorder.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/bitmap.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/brig-builtins.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/builtin-attrs.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/builtin-types.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/builtins.def
@@ -92,7 +94,6 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/cfgloop.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/cfgloopmanip.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/cfgrtl.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/cgraph.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/chkp-builtins.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/cif-code.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/collect-utils.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/collect2-aix.h
@@ -113,6 +114,7 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/configargs.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/context.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/convert.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/coretypes.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/coroutine-builtins.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/coverage.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/cp/
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/cp/cp-tree.def
@@ -125,6 +127,9 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/cppbuiltin.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/cppdefault.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/cpplib.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/cselib.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ctfc.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/d/
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/d/d-tree.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/data-streamer.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/dbgcnt.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/dbgcnt.h
@@ -137,18 +142,27 @@ lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/df.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/dfp.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/diagnostic-color.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/diagnostic-core.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/diagnostic-event-id.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/diagnostic-metadata.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/diagnostic-path.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/diagnostic-spec.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/diagnostic-url.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/diagnostic.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/diagnostic.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/digraph.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/dojump.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/dominance.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/domwalk.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/double-int.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/dump-context.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/dumpfile.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/dwarf2asm.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/dwarf2ctf.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/dwarf2out.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/edit-context.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/emit-rtl.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/errors.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/escaped_string.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/et-forest.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/except.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/explow.h
@@ -163,6 +177,7 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/flag-types.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/flags.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/fold-const-call.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/fold-const.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/function-abi.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/function.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gcc-plugin.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gcc-rich-location.h
@@ -178,15 +193,25 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/genrtl.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gensupport.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ggc-internal.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ggc.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-array-bounds.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-builder.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-expr.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-fold.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-iterator.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-low.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-match.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-predicate-analysis.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-predict.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-pretty-print.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-range-cache.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-range-edge.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-range-fold.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-range-gori.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-range-path.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-range-trace.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-range.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-ssa-evrp-analyze.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-ssa-warn-access.h
 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-ssa-warn-restrict.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-ssa.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple-streamer.h
@@ -196,9 +221,11 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimple.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimplify-me.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gimplify.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/glimits.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gomp-constants.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/graph.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/graphds.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/graphite.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/graphviz.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gsstruct.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gstab.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/gsyms.h
@@ -216,9 +243,6 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/highlev-plugin-common.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/hooks.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/hosthooks-def.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/hosthooks.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/hsa-brig-format.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/hsa-builtins.def
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/hsa-common.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/hw-doloop.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/hwint.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ifcvt.h
@@ -226,7 +250,10 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/inchash.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/incpath.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/input.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/insn-addr.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/insn-attr-common.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/insn-attr.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/insn-codes.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/insn-config.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/insn-constants.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/insn-flags.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/insn-modes-inline.h
@@ -236,11 +263,12 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/int-vector-builder.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/internal-fn.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/internal-fn.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/intl.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ipa-chkp.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ipa-fnsummary.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ipa-icf-gimple.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ipa-icf.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ipa-inline.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ipa-modref-tree.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ipa-modref.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ipa-param-manipulation.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ipa-predicate.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ipa-prop.h
@@ -250,6 +278,8 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ipa-utils.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ira-int.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ira.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/is-a.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/iterator-utils.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/json.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/langhooks-def.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/langhooks.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/lcm.h
@@ -273,31 +303,31 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/mem-stats.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/memmodel.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/memory-block.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/mode-classes.def
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/mux-utils.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/objc/
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/objc/objc-tree.def
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/obstack-utils.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/obstack.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/omp-builtins.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/omp-expand.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/omp-general.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/omp-grid.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/omp-low.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/omp-offload.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/omp-simd-clone.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/opt-problem.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/opt-suggestions.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/optabs-libfuncs.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/optabs-query.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/optabs-tree.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/optabs.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/optabs.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/optinfo-emit-json.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/optinfo.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/options.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/opts-diagnostic.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/opts.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ordered-hash-map.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/output.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/params-enum.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/params-list.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/params-options.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/params.def
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/params.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/params.list
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/pass-instances.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/pass_manager.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/passes.def
@@ -305,6 +335,7 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/plugin-api.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/plugin-version.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/plugin.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/plugin.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/pointer-query.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/poly-int-types.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/poly-int.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/predict.def
@@ -315,6 +346,8 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/print-rtl.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/print-tree.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/profile-count.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/profile.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/range-op.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/range.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/read-md.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/read-rtl-function.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/real.h
@@ -327,11 +360,12 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/regs.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/regset.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/reload.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/resource.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/rtl-chkp.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/rtl-error.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/rtl-iter.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/rtl-ssa.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/rtl.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/rtl.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/rtlanal.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/rtlhash.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/rtlhooks-def.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/rtx-vector-builder.h
@@ -347,11 +381,13 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/selftest-diagnostic.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/selftest-rtl.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/selftest.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/sese.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/shortest-paths.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/shrink-wrap.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/signop.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/sparseset.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/spellcheck-tree.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/spellcheck.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/splay-tree-utils.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/splay-tree.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/sreal.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ssa-iterators.h
@@ -364,6 +400,8 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/streamer-hooks.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/stringpool.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/substring-locations.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/symbol-summary.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/symtab-clones.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/symtab-thunks.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/symtab.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/sync-builtins.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/system.h
@@ -386,7 +424,6 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-affine.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-cfg.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-cfgcleanup.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-check.h
-lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-chkp.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-chrec.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-core.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-data-ref.h
@@ -408,19 +445,24 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-pass.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-phinodes.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-pretty-print.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-scalar-evolution.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-sra.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-address.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-alias-compare.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-alias.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-ccp.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-coalesce.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-dce.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-dom.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-dse.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-live.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-loop-ivopts.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-loop-manip.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-loop-niter.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-loop.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-math-opts.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-operands.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-propagate.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-reassoc.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-sccvn.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-scopedtables.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa-strlen.h
@@ -431,19 +473,26 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssa.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-ssanames.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-stdarg.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-streamer.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-switch-conversion.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-vector-builder.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-vectorizer.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree-vrp.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree.def
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tree.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/treestruct.def
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tristate.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tsan.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/tsystem.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/typeclass.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/typed-splay-tree.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/ubsan.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/valtrack.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/value-pointer-equiv.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/value-prof.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/value-query.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/value-range-equiv.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/value-range.h
+lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/value-relation.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/varasm.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/vec-perm-indices.h
 lib/gcc/riscv64-unknown-elf/${VERSION}/plugin/include/vec.h
@@ -463,62 +512,63 @@ 
lib/gcc/riscv64-unknown-elf/${VERSION}/rv32i/ilp32/crtbegin.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32i/ilp32/crtend.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32i/ilp32/crti.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32i/ilp32/crtn.o
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv32i/ilp32/libgcc.a
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv32i/ilp32/libgcov.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv32i/ilp32/libgcc.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv32i/ilp32/libgcov.a
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32iac/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32iac/ilp32/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32iac/ilp32/crtbegin.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32iac/ilp32/crtend.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32iac/ilp32/crti.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32iac/ilp32/crtn.o
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv32iac/ilp32/libgcc.a
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv32iac/ilp32/libgcov.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv32iac/ilp32/libgcc.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv32iac/ilp32/libgcov.a
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32im/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32im/ilp32/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32im/ilp32/crtbegin.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32im/ilp32/crtend.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32im/ilp32/crti.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32im/ilp32/crtn.o
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv32im/ilp32/libgcc.a
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv32im/ilp32/libgcov.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv32im/ilp32/libgcc.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv32im/ilp32/libgcov.a
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imac/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imac/ilp32/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imac/ilp32/crtbegin.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imac/ilp32/crtend.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imac/ilp32/crti.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imac/ilp32/crtn.o
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imac/ilp32/libgcc.a
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imac/ilp32/libgcov.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imac/ilp32/libgcc.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imac/ilp32/libgcov.a
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imafc/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imafc/ilp32f/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imafc/ilp32f/crtbegin.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imafc/ilp32f/crtend.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imafc/ilp32f/crti.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imafc/ilp32f/crtn.o
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imafc/ilp32f/libgcc.a
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imafc/ilp32f/libgcov.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imafc/ilp32f/libgcc.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv32imafc/ilp32f/libgcov.a
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imac/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imac/lp64/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imac/lp64/crtbegin.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imac/lp64/crtend.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imac/lp64/crti.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imac/lp64/crtn.o
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imac/lp64/libgcc.a
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imac/lp64/libgcov.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imac/lp64/libgcc.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imac/lp64/libgcov.a
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imafdc/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imafdc/lp64d/
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imafdc/lp64d/crtbegin.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imafdc/lp64d/crtend.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imafdc/lp64d/crti.o
 lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imafdc/lp64d/crtn.o
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imafdc/lp64d/libgcc.a
-lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imafdc/lp64d/libgcov.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imafdc/lp64d/libgcc.a
+@static-lib lib/gcc/riscv64-unknown-elf/${VERSION}/rv64imafdc/lp64d/libgcov.a
 libexec/gcc/
 libexec/gcc/riscv64-unknown-elf/
 libexec/gcc/riscv64-unknown-elf/${VERSION}/
 @bin libexec/gcc/riscv64-unknown-elf/${VERSION}/cc1
 @bin libexec/gcc/riscv64-unknown-elf/${VERSION}/cc1plus
 @bin libexec/gcc/riscv64-unknown-elf/${VERSION}/collect2
+@bin libexec/gcc/riscv64-unknown-elf/${VERSION}/g++-mapper-server
 libexec/gcc/riscv64-unknown-elf/${VERSION}/install-tools/
 libexec/gcc/riscv64-unknown-elf/${VERSION}/install-tools/fixinc.sh
 @bin libexec/gcc/riscv64-unknown-elf/${VERSION}/install-tools/fixincl
diff --git a/sysutils/opensbi/Makefile b/sysutils/opensbi/Makefile
index f8c9fe0759d..19613c96075 100644
--- a/sysutils/opensbi/Makefile
+++ b/sysutils/opensbi/Makefile
@@ -4,15 +4,15 @@ COMMENT=      RISC-V Supervisor Binary Interface
 
 GH_ACCOUNT=    riscv
 GH_PROJECT=    opensbi
-GH_TAGNAME=    v0.9
-REVISION=      0
+GH_TAGNAME=    v1.2
 
 CATEGORIES=    sysutils
 
 # BSD
 PERMIT_PACKAGE=        Yes
 
-BUILD_DEPENDS+= devel/riscv-elf/gcc
+BUILD_DEPENDS+=        devel/riscv-elf/gcc \
+               shells/bash
 
 MAKE_ENV+= CROSS_COMPILE="riscv64-unknown-elf-"
 
diff --git a/sysutils/opensbi/distinfo b/sysutils/opensbi/distinfo
index 2ec5de0fd95..693653bfded 100644
--- a/sysutils/opensbi/distinfo
+++ b/sysutils/opensbi/distinfo
@@ -1,2 +1,2 @@
-SHA256 (opensbi-0.9.tar.gz) = YPmVyzzQPjz15kkZTTOV0P5nSZ/ZYKNs9wWKTv3mhvA=
-SIZE (opensbi-0.9.tar.gz) = 189688
+SHA256 (opensbi-1.2.tar.gz) = j8vOWYpzrMLH99VgfUa51RB9Psvt6PaPQmMdz8Je8rI=
+SIZE (opensbi-1.2.tar.gz) = 356905
diff --git a/sysutils/u-boot/patches/patch-arch_riscv_Makefile 
b/sysutils/u-boot/patches/patch-arch_riscv_Makefile
new file mode 100644
index 00000000000..5f116356ec6
--- /dev/null
+++ b/sysutils/u-boot/patches/patch-arch_riscv_Makefile
@@ -0,0 +1,21 @@
+Index: arch/riscv/Makefile
+--- arch/riscv/Makefile.orig
++++ arch/riscv/Makefile
+@@ -24,7 +24,16 @@ ifeq ($(CONFIG_CMODEL_MEDANY),y)
+       CMODEL = medany
+ endif
+ 
+-ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_C) -mabi=$(ABI) \
++RISCV_MARCH = $(ARCH_BASE)$(ARCH_A)$(ARCH_C)
++
++# Newer binutils versions default to ISA spec version 20191213 which moves 
some
++# instructions from the I extension to the Zicsr and Zifencei extensions.
++toolchain-need-zicsr-zifencei := $(call cc-option-yn, -mabi=$(ABI) 
-march=$(RISCV_MARCH)_zicsr_zifencei)
++ifeq ($(toolchain-need-zicsr-zifencei),y)
++      RISCV_MARCH := $(RISCV_MARCH)_zicsr_zifencei
++endif
++
++ARCH_FLAGS = -march=$(RISCV_MARCH) -mabi=$(ABI) \
+            -mcmodel=$(CMODEL)
+ 
+ PLATFORM_CPPFLAGS     += $(ARCH_FLAGS)


Reply via email to