commit:     f8242e6e0e9cdc3d92df08fcdc168021c11203ff
Author:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 28 09:59:10 2019 +0000
Commit:     Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sun Apr 28 09:59:10 2019 +0000
URL:        https://gitweb.gentoo.org/proj/riscv.git/commit/?id=f8242e6e

sys-devel/gcc: Copy unmodified gcc-8.3.0-r1 from main tree

Package-Manager: Portage-2.3.62, Repoman-2.3.12
Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>

 sys-devel/gcc/Manifest                           |   2 +
 sys-devel/gcc/files/awk/fixlafiles.awk           | 313 +++++++++++++++++++++
 sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la | 334 +++++++++++++++++++++++
 sys-devel/gcc/files/c89                          |  20 ++
 sys-devel/gcc/files/c99                          |  21 ++
 sys-devel/gcc/files/fix_libtool_files.sh         |  66 +++++
 sys-devel/gcc/files/gcc-4.9.4-bootstrap.patch    |  66 +++++
 sys-devel/gcc/files/gcc-configure-LANG.patch     |  64 +++++
 sys-devel/gcc/files/gcc-configure-texinfo.patch  |  16 ++
 sys-devel/gcc/files/gcc-spec-env-r1.patch        |  87 ++++++
 sys-devel/gcc/files/gcc-spec-env.patch           |  42 +++
 sys-devel/gcc/gcc-8.3.0-r1.ebuild                |  19 ++
 sys-devel/gcc/metadata.xml                       |  33 +++
 13 files changed, 1083 insertions(+)

diff --git a/sys-devel/gcc/Manifest b/sys-devel/gcc/Manifest
new file mode 100644
index 0000000..179a22a
--- /dev/null
+++ b/sys-devel/gcc/Manifest
@@ -0,0 +1,2 @@
+DIST gcc-8.3.0-patches-1.1.tar.bz2 14430 BLAKE2B 
c702fbdb18c3c952cdb9adead3a193c948d78a4cb4b041beaa51a06b907fd357bb10a2f8d47d55978ebb08590fd7c9a6ec3df8e7a007173e20a55d251d947c72
 SHA512 
9e2284f597bab6f78ca24ead358b1f50495aefc9e0a416ace24c94723db7b2fb82d48426876138d00c82bcaf9c2f8b4674885988448dcf16dee1b764face9af4
+DIST gcc-8.3.0.tar.xz 63694700 BLAKE2B 
71df2ff5bd6874d57519c2e9af6b22152c8c4d7fab906a5f427b41bc4e8e742127592a8684120d9d3c9ce6241439531850be08ec0a4f29dbfdee95435655fdca
 SHA512 
1811337ae3add9680cec64968a2509d085b6dc5b6783fc1e8c295e3e47416196fd1a3ad8dfe7e10be2276b4f62c357659ce2902f239f60a8648548231b4b5802

diff --git a/sys-devel/gcc/files/awk/fixlafiles.awk 
b/sys-devel/gcc/files/awk/fixlafiles.awk
new file mode 100644
index 0000000..ee71d15
--- /dev/null
+++ b/sys-devel/gcc/files/awk/fixlafiles.awk
@@ -0,0 +1,313 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+#
+# Helper functions
+#
+function printn(string) {
+       printf("%s", string)
+}
+function einfo(string) {
+       printf(" \033[32;01m*\033[0m %s\n", string)
+}
+function einfon(string) {
+       printf(" \033[32;01m*\033[0m %s", string)
+}
+function ewarn(string) {
+       printf(" \033[33;01m*\033[0m %s\n", string)
+}
+function ewarnn(string) {
+       printf(" \033[33;01m*\033[0m %s", string)
+}
+function eerror(string) {
+       printf(" \033[31;01m*\033[0m %s\n", string)
+}
+
+#
+# assert(condition, errmsg)
+#   assert that a condition is true.  Otherwise exit.
+#
+function assert(condition, string) {
+       if (! condition) {
+               printf("%s:%d: assertion failed: %s\n",
+                      FILENAME, FNR, string) > "/dev/stderr"
+               _assert_exit = 1
+               exit 1
+       }
+}
+
+#
+# system(command, return)
+#   wrapper that normalizes return codes ...
+#
+function dosystem(command, ret) {
+       ret = 0
+       ret = system(command)
+       if (ret == 0)
+               return 1
+       else
+               return 0
+}
+
+BEGIN {
+       #
+       # Get our variables from environment
+       #
+       OLDVER = ENVIRON["OLDVER"]
+       OLDCHOST = ENVIRON["OLDCHOST"]
+
+       if (OLDVER == "") {
+               eerror("Could not get OLDVER!");
+               exit 1
+       }
+
+       # Setup some sane defaults
+       LIBCOUNT = 2
+       HAVE_GCC34 = 0
+       DIRLIST[1] = "/lib"
+       DIRLIST[2] = "/usr/lib"
+
+       #
+       # Walk /etc/ld.so.conf to discover all our library paths
+       #
+       pipe = "cat /etc/ld.so.conf | sort 2>/dev/null"
+       while(((pipe) | getline ldsoconf_data) > 0) {
+               if (ldsoconf_data !~ /^[[:space:]]*#/) {
+                       if (ldsoconf_data == "") continue
+
+                       # Remove any trailing comments
+                       sub(/#.*$/, "", ldsoconf_data)
+                       # Remove any trailing spaces
+                       sub(/[[:space:]]+$/, "", ldsoconf_data)
+
+                       # If there's more than one path per line, split 
+                       # it up as if they were sep lines
+                       split(ldsoconf_data, nodes, /[:,[:space:]]/)
+
+                       # Now add the rest from ld.so.conf
+                       for (x in nodes) {
+                               # wtf does this line do ?
+                               sub(/=.*/, "", nodes[x])
+                               # Prune trailing /
+                               sub(/\/$/, "", nodes[x])
+
+                               if (nodes[x] == "") continue
+
+                               #
+                               # Drop the directory if its a child directory of
+                               # one that was already added ...
+                               # For example, if we have:
+                               #   /usr/lib /usr/libexec /usr/lib/mozilla 
/usr/lib/nss
+                               # We really just want to save /usr/lib 
/usr/libexec
+                               #
+                               CHILD = 0
+                               for (y in DIRLIST) {
+                                       if (nodes[x] ~ "^" DIRLIST[y] "(/|$)") {
+                                               CHILD = 1
+                                               break
+                                       }
+                               }
+                               if (CHILD) continue
+
+                               DIRLIST[++LIBCOUNT] = nodes[x]
+                       }
+               }
+       }
+       close(pipe)
+
+       #
+       # Get line from gcc's output containing CHOST
+       #
+       pipe = "gcc -print-file-name=libgcc.a 2>/dev/null"
+       if ((!((pipe) | getline TMP_CHOST)) || (TMP_CHOST == "")) {
+               close(pipe)
+
+               # If we fail to get the CHOST, see if we can get the CHOST
+               # portage thinks we are using ...
+               pipe = "/usr/bin/portageq envvar 'CHOST'"
+               assert(((pipe) | getline CHOST), "(" pipe ") | getline CHOST")
+       } else {
+               # Check pre gcc-3.4.x versions
+               CHOST = gensub("^.+lib/gcc-lib/([^/]+)/[0-9]+.+$", "\\1", 1, 
TMP_CHOST)
+
+               if (CHOST == TMP_CHOST || CHOST == "") {
+                       # Check gcc-3.4.x or later
+                       CHOST = gensub("^.+lib/gcc/([^/]+)/[0-9]+.+$", "\\1", 
1, TMP_CHOST);
+
+                       if (CHOST == TMP_CHOST || CHOST == "")
+                               CHOST = ""
+                       else
+                               HAVE_GCC34 = 1
+               }
+       }
+       close(pipe)
+
+       if (CHOST == "") {
+               eerror("Could not get gcc's CHOST!")
+               exit 1
+       }
+
+       if (OLDCHOST != "")
+               if (OLDCHOST == CHOST)
+                       OLDCHOST = ""
+
+       GCCLIBPREFIX_OLD = "/usr/lib/gcc-lib/"
+       GCCLIBPREFIX_NEW = "/usr/lib/gcc/"
+
+       if (HAVE_GCC34)
+               GCCLIBPREFIX = GCCLIBPREFIX_NEW
+       else
+               GCCLIBPREFIX = GCCLIBPREFIX_OLD
+
+       GCCLIB = GCCLIBPREFIX CHOST
+
+       if (OLDCHOST != "") {
+               OLDGCCLIB1 = GCCLIBPREFIX_OLD OLDCHOST
+               OLDGCCLIB2 = GCCLIBPREFIX_NEW OLDCHOST
+       }
+
+       # Get current gcc's version
+       pipe = "gcc -dumpversion"
+       assert(((pipe) | getline NEWVER), "(" pipe ") | getline NEWVER)")
+       close(pipe)
+
+       if (NEWVER == "") {
+               eerror("Could not get gcc's version!")
+               exit 1
+       }
+
+       # Nothing to do ?
+       if ((OLDVER == NEWVER) && (OLDCHOST == ""))
+               exit 0
+
+       #
+       # Ok, now let's scan for the .la files and actually fix them up
+       #
+       for (x = 1; x <= LIBCOUNT; x++) {
+               # Do nothing if the target dir is gcc's internal library path
+               if (DIRLIST[x] ~ GCCLIBPREFIX_OLD ||
+                   DIRLIST[x] ~ GCCLIBPREFIX_NEW)
+                       continue
+
+               einfo("  [" x "/" LIBCOUNT "] Scanning " DIRLIST[x] " ...")
+
+               pipe = "find " DIRLIST[x] "/ -name '*.la' 2>/dev/null"
+               while (((pipe) | getline la_files) > 0) {
+
+                       # Do nothing if the .la file is located in gcc's 
internal lib path
+                       if (la_files ~ GCCLIBPREFIX_OLD ||
+                           la_files ~ GCCLIBPREFIX_NEW)
+                               continue
+
+                       CHANGED = 0
+                       CHOST_CHANGED = 0
+
+                       # See if we need to fix the .la file
+                       while ((getline la_data < (la_files)) > 0) {
+                               if (OLDCHOST != "") {
+                                       if ((gsub(OLDGCCLIB1 "[/[:space:]]+",
+                                                 GCCLIB, la_data) > 0) ||
+                                           (gsub(OLDGCCLIB2 "[/[:space:]]+",
+                                                 GCCLIB, la_data) > 0)) {
+                                               CHANGED = 1
+                                               CHOST_CHANGED = 1
+                                       }
+                               }
+                               if (OLDVER != NEWVER) {
+                                       if ((gsub(GCCLIBPREFIX_OLD CHOST "/" 
OLDVER "[/[:space:]]*",
+                                                 GCCLIB "/" NEWVER, la_data) > 
0) ||
+                                           (gsub(GCCLIBPREFIX_NEW CHOST "/" 
OLDVER "[/[:space:]]*",
+                                                 GCCLIB "/" NEWVER, la_data) > 
0))
+                                               CHANGED = 1
+                               }
+                       }
+                       close(la_files)
+
+                       # Do the actual changes in a second loop, as we can then
+                       # verify that CHOST_CHANGED among things is correct ...
+                       if (CHANGED) {
+                               ewarnn("    FIXING: " la_files " ...")
+
+                               if (CHANGED)
+                                       printn("[")
+
+                               # Clear the temp file (removing rather than 
'>foo' is better
+                               # out of a security point of view?)
+                               dosystem("rm -f " la_files ".new")
+
+                               while ((getline la_data < (la_files)) > 0) {
+                                       if (OLDCHOST != "") {
+                                               tmpstr = gensub(OLDGCCLIB1 
"([/[:space:]]+)",
+                                                               GCCLIB "\\1", 
"g", la_data)
+                                               tmpstr = gensub(OLDGCCLIB2 
"([/[:space:]]+)",
+                                                               GCCLIB "\\1", 
"g", tmpstr)
+
+                                               if (la_data != tmpstr) {
+                                                       printn("c")
+                                                       la_data = tmpstr
+                                               }
+
+                                               if (CHOST_CHANGED > 0) {
+                                                       # We try to be careful 
about CHOST changes outside
+                                                       # the gcc library path 
(meaning we cannot match it
+                                                       # via /GCCLIBPREFIX 
CHOST/) ...
+
+                                                       # Catch:
+                                                       #
+                                                       #  dependency_libs=' 
-L/usr/CHOST/{bin,lib}'
+                                                       #
+                                                       gsub("-L/usr/" OLDCHOST 
"/",
+                                                            "-L/usr/" CHOST 
"/", la_data)
+                                                       # Catch:
+                                                       #
+                                                       #  dependency_libs=' 
-L/usr/lib/gcc-lib/CHOST/VER/../../../../CHOST/lib'
+                                                       #
+                                                       la_data = gensub("(" 
GCCLIB "/[^[:space:]]+)/" OLDCHOST "/",
+                                                                        "\\1/" 
CHOST "/", "g", la_data)
+                                               }
+                                       }
+
+                                       if (OLDVER != NEWVER) {
+                                               # Catch:
+                                               #
+                                               #  dependency_libs=' 
-L/usr/lib/gcc/CHOST/VER'
+                                               #
+                                               tmpstr = 
gensub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "([/[:space:]]+)",
+                                                               GCCLIB "/" 
NEWVER "\\1", "g", la_data)
+                                               tmpstr = 
gensub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "([/[:space:]]+)",
+                                                               GCCLIB "/" 
NEWVER "\\1", "g", tmpstr)
+
+                                               if (la_data != tmpstr) {
+                                                       # Catch:
+                                                       #
+                                                       #  dependency_libs=' 
-L/usr/lib/gcc-lib/../../CHOST/lib'
+                                                       #
+                                                       # in cases where we 
have gcc34
+                                                       tmpstr = 
gensub(GCCLIBPREFIX_OLD "(../../" CHOST "/lib)",
+                                                                       
GCCLIBPREFIX "\\1", "g", tmpstr)
+                                                       tmpstr = 
gensub(GCCLIBPREFIX_NEW "(../../" CHOST "/lib)",
+                                                                       
GCCLIBPREFIX "\\1", "g", tmpstr)
+                                                       printn("v")
+                                                       la_data = tmpstr
+                                               }
+                                       }
+
+                                       print la_data >> (la_files ".new")
+                               }
+
+                               if (CHANGED)
+                                       print "]"
+
+                               close(la_files)
+                               close(la_files ".new")
+
+                               assert(dosystem("mv -f " la_files ".new " 
la_files),
+                                      "dosystem(\"mv -f " la_files ".new " 
la_files "\")")
+                       }
+               }
+
+               close(pipe)
+       }
+}
+
+# vim:ts=4

diff --git a/sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la 
b/sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la
new file mode 100644
index 0000000..4265a54
--- /dev/null
+++ b/sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la
@@ -0,0 +1,334 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+#
+# Helper functions
+#
+function printn(string) {
+       printf("%s", string)
+}
+function einfo(string) {
+       printf(" \033[32;01m*\033[0m %s\n", string)
+}
+function einfon(string) {
+       printf(" \033[32;01m*\033[0m %s", string)
+}
+function ewarn(string) {
+       printf(" \033[33;01m*\033[0m %s\n", string)
+}
+function ewarnn(string) {
+       printf(" \033[33;01m*\033[0m %s", string)
+}
+function eerror(string) {
+       printf(" \033[31;01m*\033[0m %s\n", string)
+}
+
+#
+# assert(condition, errmsg)
+#   assert that a condition is true.  Otherwise exit.
+#
+function assert(condition, string) {
+       if (! condition) {
+               printf("%s:%d: assertion failed: %s\n",
+                      FILENAME, FNR, string) > "/dev/stderr"
+               _assert_exit = 1
+               exit 1
+       }
+}
+
+#
+# system(command, return)
+#   wrapper that normalizes return codes ...
+#
+function dosystem(command, ret) {
+       ret = 0
+       ret = system(command)
+       if (ret == 0)
+               return 1
+       else
+               return 0
+}
+
+#
+# parse_ld_conf(config_file)
+#
+function parse_ld_conf(conf,    pipe, ldsoconf_data, CHILD, y) {
+       pipe = "cd /etc; cat " conf " | sort 2>/dev/null"
+       while(((pipe) | getline ldsoconf_data) > 0) {
+               if (ldsoconf_data ~ /^[[:space:]]*#/)
+                       continue
+               if (ldsoconf_data == "")
+                       continue
+
+               # Handle the "include" keyword
+               if (ldsoconf_data ~ /^include /) {
+                       sub(/^include /, "", ldsoconf_data)
+                       parse_ld_conf(ldsoconf_data)
+                       continue
+               }
+
+               # Remove any trailing comments
+               sub(/#.*$/, "", ldsoconf_data)
+               # Remove any trailing spaces
+               sub(/[[:space:]]+$/, "", ldsoconf_data)
+               # Eat duplicate slashes
+               sub(/\/\//, "/", ldsoconf_data)
+               # Prune trailing /
+               sub(/\/$/, "", ldsoconf_data)
+
+               #
+               # Drop the directory if its a child directory of
+               # one that was already added ...
+               # For example, if we have:
+               #   /usr/lib /usr/libexec /usr/lib/mozilla /usr/lib/nss
+               # We really just want to save /usr/lib /usr/libexec
+               #
+               CHILD = 0
+               for (y in DIRLIST) {
+                       if (ldsoconf_data ~ "^" DIRLIST[y] "(/|$)") {
+                               CHILD = 1
+                               break
+                       }
+               }
+               if (CHILD) continue
+
+               DIRLIST[++LIBCOUNT] = ldsoconf_data
+       }
+       close(pipe)
+}
+
+BEGIN {
+       #
+       # Get our variables from environment
+       #
+       OLDVER = ENVIRON["OLDVER"]
+       OLDCHOST = ENVIRON["OLDCHOST"]
+
+       if (OLDVER == "") {
+               eerror("Could not get OLDVER!");
+               exit 1
+       }
+
+       # Setup some sane defaults
+       LIBCOUNT = 2
+       HAVE_GCC34 = 0
+       DIRLIST[1] = "/lib"
+       DIRLIST[2] = "/usr/lib"
+
+       #
+       # Walk /etc/ld.so.conf to discover all our library paths
+       #
+       parse_ld_conf("/etc/ld.so.conf")
+
+       #
+       # Get line from gcc's output containing CHOST
+       #
+       pipe = "gcc -print-file-name=libgcc.a 2>/dev/null"
+       if ((!((pipe) | getline TMP_CHOST)) || (TMP_CHOST == "")) {
+               close(pipe)
+
+               # If we fail to get the CHOST, see if we can get the CHOST
+               # portage thinks we are using ...
+               pipe = "/usr/bin/portageq envvar 'CHOST'"
+               assert(((pipe) | getline CHOST), "(" pipe ") | getline CHOST")
+       } else {
+               # Check pre gcc-3.4.x versions
+               CHOST = gensub("^.+lib/gcc-lib/([^/]+)/[0-9]+.+$", "\\1", 1, 
TMP_CHOST)
+
+               if (CHOST == TMP_CHOST || CHOST == "") {
+                       # Check gcc-3.4.x or later
+                       CHOST = gensub("^.+lib/gcc/([^/]+)/[0-9]+.+$", "\\1", 
1, TMP_CHOST);
+
+                       if (CHOST == TMP_CHOST || CHOST == "")
+                               CHOST = ""
+                       else
+                               HAVE_GCC34 = 1
+               }
+       }
+       close(pipe)
+
+       if (CHOST == "") {
+               eerror("Could not get gcc's CHOST!")
+               exit 1
+       }
+
+       if (OLDCHOST != "")
+               if (OLDCHOST == CHOST)
+                       OLDCHOST = ""
+
+       GCCLIBPREFIX_OLD = "/usr/lib/gcc-lib/"
+       GCCLIBPREFIX_NEW = "/usr/lib/gcc/"
+
+       if (HAVE_GCC34)
+               GCCLIBPREFIX = GCCLIBPREFIX_NEW
+       else
+               GCCLIBPREFIX = GCCLIBPREFIX_OLD
+
+       GCCLIB = GCCLIBPREFIX CHOST
+
+       if (OLDCHOST != "") {
+               OLDGCCLIB1 = GCCLIBPREFIX_OLD OLDCHOST
+               OLDGCCLIB2 = GCCLIBPREFIX_NEW OLDCHOST
+       }
+
+       # Get current gcc's version
+       pipe = "gcc -dumpversion"
+       assert(((pipe) | getline NEWVER), "(" pipe ") | getline NEWVER)")
+       close(pipe)
+
+       if (NEWVER == "") {
+               eerror("Could not get gcc's version!")
+               exit 1
+       }
+
+       # Nothing to do ?
+       # NB: Do not check for (OLDVER == NEWVER) anymore, as we might need to
+       #     replace libstdc++.la ....
+       if ((OLDVER == "") && (OLDCHOST == ""))
+               exit 0
+
+       #
+       # Ok, now let's scan for the .la files and actually fix them up
+       #
+       for (x = 1; x <= LIBCOUNT; x++) {
+               # Do nothing if the target dir is gcc's internal library path
+               if (DIRLIST[x] ~ GCCLIBPREFIX_OLD ||
+                   DIRLIST[x] ~ GCCLIBPREFIX_NEW)
+                       continue
+
+               einfo("  [" x "/" LIBCOUNT "] Scanning " DIRLIST[x] " ...")
+
+               pipe = "find " DIRLIST[x] "/ -name '*.la' 2>/dev/null"
+               while (((pipe) | getline la_files) > 0) {
+
+                       # Do nothing if the .la file is located in gcc's 
internal lib path
+                       if (la_files ~ GCCLIBPREFIX_OLD ||
+                           la_files ~ GCCLIBPREFIX_NEW)
+                               continue
+
+                       CHANGED = 0
+                       CHOST_CHANGED = 0
+
+                       # See if we need to fix the .la file
+                       while ((getline la_data < (la_files)) > 0) {
+                               if (OLDCHOST != "") {
+                                       if ((gsub(OLDGCCLIB1 "[/[:space:]]+",
+                                                 GCCLIB, la_data) > 0) ||
+                                           (gsub(OLDGCCLIB2 "[/[:space:]]+",
+                                                 GCCLIB, la_data) > 0)) {
+                                               CHANGED = 1
+                                               CHOST_CHANGED = 1
+                                       }
+                               }
+                               if (OLDVER != NEWVER) {
+                                       if ((gsub(GCCLIBPREFIX_OLD CHOST "/" 
OLDVER "[/[:space:]]*",
+                                                 GCCLIB "/" NEWVER, la_data) > 
0) ||
+                                           (gsub(GCCLIBPREFIX_NEW CHOST "/" 
OLDVER "[/[:space:]]*",
+                                                 GCCLIB "/" NEWVER, la_data) > 
0))
+                                               CHANGED = 1
+                               }
+                               # We now check if we have libstdc++.la, as we 
remove the
+                               # libtool linker scripts for gcc ...
+                               # We do this last, as we only match the new 
paths
+                               if (gsub(GCCLIB "/" NEWVER 
"/libstdc\\+\\+\\.la",
+                                        "-lstdc++", la_data) > 0)
+                                       CHANGED = 1
+                       }
+                       close(la_files)
+
+                       # Do the actual changes in a second loop, as we can then
+                       # verify that CHOST_CHANGED among things is correct ...
+                       if (CHANGED) {
+                               ewarnn("    FIXING: " la_files " ...[")
+
+                               # Clear the temp file (removing rather than 
'>foo' is better
+                               # out of a security point of view?)
+                               dosystem("rm -f " la_files ".new")
+
+                               while ((getline la_data < (la_files)) > 0) {
+                                       if (OLDCHOST != "") {
+                                               tmpstr = gensub(OLDGCCLIB1 
"([/[:space:]]+)",
+                                                               GCCLIB "\\1", 
"g", la_data)
+                                               tmpstr = gensub(OLDGCCLIB2 
"([/[:space:]]+)",
+                                                               GCCLIB "\\1", 
"g", tmpstr)
+
+                                               if (la_data != tmpstr) {
+                                                       printn("c")
+                                                       la_data = tmpstr
+                                               }
+
+                                               if (CHOST_CHANGED > 0) {
+                                                       # We try to be careful 
about CHOST changes outside
+                                                       # the gcc library path 
(meaning we cannot match it
+                                                       # via /GCCLIBPREFIX 
CHOST/) ...
+
+                                                       # Catch:
+                                                       #
+                                                       #  dependency_libs=' 
-L/usr/CHOST/{bin,lib}'
+                                                       #
+                                                       gsub("-L/usr/" OLDCHOST 
"/",
+                                                            "-L/usr/" CHOST 
"/", la_data)
+                                                       # Catch:
+                                                       #
+                                                       #  dependency_libs=' 
-L/usr/lib/gcc-lib/CHOST/VER/../../../../CHOST/lib'
+                                                       #
+                                                       la_data = gensub("(" 
GCCLIB "/[^[:space:]]+)/" OLDCHOST "/",
+                                                                        "\\1/" 
CHOST "/", "g", la_data)
+                                               }
+                                       }
+
+                                       if (OLDVER != NEWVER) {
+                                               # Catch:
+                                               #
+                                               #  dependency_libs=' 
-L/usr/lib/gcc/CHOST/VER'
+                                               #
+                                               tmpstr = 
gensub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "([/[:space:]]+)",
+                                                               GCCLIB "/" 
NEWVER "\\1", "g", la_data)
+                                               tmpstr = 
gensub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "([/[:space:]]+)",
+                                                               GCCLIB "/" 
NEWVER "\\1", "g", tmpstr)
+
+                                               if (la_data != tmpstr) {
+                                                       # Catch:
+                                                       #
+                                                       #  dependency_libs=' 
-L/usr/lib/gcc-lib/../../CHOST/lib'
+                                                       #
+                                                       # in cases where we 
have gcc34
+                                                       tmpstr = 
gensub(GCCLIBPREFIX_OLD "(../../" CHOST "/lib)",
+                                                                       
GCCLIBPREFIX "\\1", "g", tmpstr)
+                                                       tmpstr = 
gensub(GCCLIBPREFIX_NEW "(../../" CHOST "/lib)",
+                                                                       
GCCLIBPREFIX "\\1", "g", tmpstr)
+                                                       printn("v")
+                                                       la_data = tmpstr
+                                               }
+                                       }
+
+                                       # We now check if we have libstdc++.la, 
as we remove the
+                                       # libtool linker scripts for gcc and 
any referencese in any
+                                       # libtool linker scripts.
+                                       # We do this last, as we only match the 
new paths
+                                       tmpstr = gensub(GCCLIB "/" NEWVER 
"/libstdc\\+\\+\\.la",
+                                                       "-lstdc++", "g", 
la_data);
+                                       if (la_data != tmpstr) {
+                                               printn("l")
+                                               la_data = tmpstr
+                                       }
+                                       
+                                       print la_data >> (la_files ".new")
+                               }
+
+                               if (CHANGED)
+                                       print "]"
+
+                               close(la_files)
+                               close(la_files ".new")
+
+                               assert(dosystem("mv -f " la_files ".new " 
la_files),
+                                      "dosystem(\"mv -f " la_files ".new " 
la_files "\")")
+                       }
+               }
+
+               close(pipe)
+       }
+}
+
+# vim:ts=4

diff --git a/sys-devel/gcc/files/c89 b/sys-devel/gcc/files/c89
new file mode 100644
index 0000000..cee0325
--- /dev/null
+++ b/sys-devel/gcc/files/c89
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+# Call the appropriate C compiler with options to accept ANSI/ISO C
+# The following options are the same (as of gcc-2.95):
+#      -ansi
+#      -std=c89
+#      -std=iso9899:1990
+
+for i; do
+    case "$i" in
+       -ansi|-std=c89|-std=iso9899:1990)
+           ;;
+       -std=*)
+           echo >&2 "`basename $0` called with non ANSI/ISO C90 option $i"
+           exit 1
+           ;;
+    esac
+done
+
+exec gcc -std=c89 -pedantic -U_FORTIFY_SOURCE "$@"

diff --git a/sys-devel/gcc/files/c99 b/sys-devel/gcc/files/c99
new file mode 100644
index 0000000..c954209
--- /dev/null
+++ b/sys-devel/gcc/files/c99
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+# Call the appropriate C compiler with options to accept ANSI/ISO C
+# The following options are the same (as of gcc-3.3):
+#      -std=c99
+#      -std=c9x
+#      -std=iso9899:1999
+#      -std=iso9899:199x
+
+for i; do
+    case "$i" in
+       -std=c9[9x]|-std=iso9899:199[9x])
+           ;;
+       -ansi|-std=*)
+           echo >&2 "`basename $0` called with non ANSI/ISO C99 option $i"
+           exit 1
+           ;;
+    esac
+done
+
+exec gcc -std=c99 -pedantic -U_FORTIFY_SOURCE ${1+"$@"}

diff --git a/sys-devel/gcc/files/fix_libtool_files.sh 
b/sys-devel/gcc/files/fix_libtool_files.sh
new file mode 100644
index 0000000..c6c84e9
--- /dev/null
+++ b/sys-devel/gcc/files/fix_libtool_files.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+usage() {
+cat << "USAGE_END"
+Usage: fix_libtool_files.sh <old-gcc-version> [--oldarch <old-CHOST>]
+
+    Where <old-gcc-version> is the version number of the
+    previous gcc version.  For example, if you updated to
+    gcc-3.2.1, and you had gcc-3.2 installed, run:
+
+      # fix_libtool_files.sh 3.2
+
+    If you updated to gcc-3.2.3, and the old CHOST was i586-pc-linux-gnu
+    but you now have CHOST as i686-pc-linux-gnu, run:
+
+      # fix_libtool_files.sh 3.2 --oldarch i586-pc-linux-gnu
+
+    Note that if only the CHOST and not the version changed, you can run
+    it with the current version and the '--oldarch <old-CHOST>' arguments,
+    and it will do the expected:
+
+      # fix_libtool_files.sh `gcc -dumpversion` --oldarch i586-pc-linux-gnu
+
+USAGE_END
+       exit 1
+}
+
+case $2 in
+--oldarch) [ $# -ne 3 ] && usage ;;
+*)         [ $# -ne 1 ] && usage ;;
+esac
+
+ARGV1=$1
+ARGV2=$2
+ARGV3=$3
+
+. /etc/profile || exit 1
+
+if [ ${EUID:-0} -ne 0   -a   "${EPREFIX}" = '' ] ; then
+       echo "${0##*/}: Must be root."
+       exit 1
+fi
+
+# make sure the files come out sane
+umask 0022
+
+OLDCHOST=
+[ "${ARGV2}" = "--oldarch" ] && OLDCHOST=${ARGV3}
+
+AWKDIR="/usr/share/gcc-data"
+
+if [ ! -r "${AWKDIR}/fixlafiles.awk" ] ; then
+       echo "${0##*/}: ${AWKDIR}/fixlafiles.awk does not exist!"
+       exit 1
+fi
+
+OLDVER=${ARGV1}
+
+export OLDVER OLDCHOST
+
+echo "Scanning libtool files for hardcoded gcc library paths..."
+exec gawk -f "${AWKDIR}/fixlafiles.awk"
+
+# vim:ts=4

diff --git a/sys-devel/gcc/files/gcc-4.9.4-bootstrap.patch 
b/sys-devel/gcc/files/gcc-4.9.4-bootstrap.patch
new file mode 100644
index 0000000..aed1ad0
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-4.9.4-bootstrap.patch
@@ -0,0 +1,66 @@
+From 41a4aa66eac45c8862a79351647ec06dd03bd1f5 Mon Sep 17 00:00:00 2001
+From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Sat, 13 Dec 2014 11:24:37 +0000
+Subject: [PATCH]       PR bootstrap/64023      * Makefile.tpl
+ (EXTRA_TARGET_FLAGS): Set STAGE1_LDFLAGS      to POSTSTAGE1_LDFLAGS and
+ STAGE1_LIBS to POSTSTAGE1_LIBS.       Add -B to libstdc++-v3/src/.libs and
+ libstdc++-v3/libsupc++/.libs  to CXX.         * Makefile.in: Regenerated.
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218705 
138bc75d-0d04-0410-961f-82ee72b054a4
+---
+ ChangeLog    | 9 +++++++++
+ Makefile.in  | 6 +++++-
+ Makefile.tpl | 6 +++++-
+ 3 files changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index ba5ae4c2ecb..8ffc313f157 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -835,7 +835,9 @@ EXTRA_TARGET_FLAGS = \
+       'AS=$(COMPILER_AS_FOR_TARGET)' \
+       'CC=$$(CC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+       'CFLAGS=$$(CFLAGS_FOR_TARGET)' \
+-      'CXX=$$(CXX_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
++      'CXX=$$(CXX_FOR_TARGET) -B$$r/$$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
++       -B$$r/$$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \
++       $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+       'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \
+       'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
+       'GCJ=$$(GCJ_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+@@ -853,6 +855,8 @@ EXTRA_TARGET_FLAGS = \
+       'WINDRES=$$(WINDRES_FOR_TARGET)' \
+       'WINDMC=$$(WINDMC_FOR_TARGET)' \
+       'XGCC_FLAGS_FOR_TARGET=$(XGCC_FLAGS_FOR_TARGET)' \
++      'STAGE1_LDFLAGS=$$(POSTSTAGE1_LDFLAGS)' \
++      'STAGE1_LIBS=$$(POSTSTAGE1_LIBS)' \
+       "TFLAGS=$$TFLAGS"
+ 
+ TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)
+diff --git a/Makefile.tpl b/Makefile.tpl
+index dcbc6b1b143..bb8227eaafa 100644
+--- a/Makefile.tpl
++++ b/Makefile.tpl
+@@ -641,7 +641,9 @@ EXTRA_TARGET_FLAGS = \
+       'AS=$(COMPILER_AS_FOR_TARGET)' \
+       'CC=$$(CC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+       'CFLAGS=$$(CFLAGS_FOR_TARGET)' \
+-      'CXX=$$(CXX_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
++      'CXX=$$(CXX_FOR_TARGET) -B$$r/$$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
++       -B$$r/$$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \
++       $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+       'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \
+       'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
+       'GCJ=$$(GCJ_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+@@ -659,6 +661,8 @@ EXTRA_TARGET_FLAGS = \
+       'WINDRES=$$(WINDRES_FOR_TARGET)' \
+       'WINDMC=$$(WINDMC_FOR_TARGET)' \
+       'XGCC_FLAGS_FOR_TARGET=$(XGCC_FLAGS_FOR_TARGET)' \
++      'STAGE1_LDFLAGS=$$(POSTSTAGE1_LDFLAGS)' \
++      'STAGE1_LIBS=$$(POSTSTAGE1_LIBS)' \
+       "TFLAGS=$$TFLAGS"
+ 
+ TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)
+-- 
+2.15.0
+

diff --git a/sys-devel/gcc/files/gcc-configure-LANG.patch 
b/sys-devel/gcc/files/gcc-configure-LANG.patch
new file mode 100644
index 0000000..d1b1b03
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-configure-LANG.patch
@@ -0,0 +1,64 @@
+The LANG vars aren't reset early enough so when sed tries to use [a-zA-Z] in 
+option parsing, it may break.
+
+http://bugs.gentoo.org/103483
+
+--- configure
++++ configure
+@@ -54,6 +54,19 @@
+ infodir='${prefix}/info'
+ mandir='${prefix}/man'
+ 
++# NLS nuisances.
++for as_var in \
++  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
++  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
++  LC_TELEPHONE LC_TIME
++do
++  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
++    eval $as_var=C; export $as_var
++  else
++    unset $as_var
++  fi
++done
++
+ # Initialize some other variables.
+ subdirs=
+ MFLAGS= MAKEFLAGS=
+@@ -452,16 +463,6 @@
+   esac
+ done
+ 
+-# NLS nuisances.
+-# Only set these to C if already set.  These must not be set unconditionally
+-# because not all systems understand e.g. LANG=C (notably SCO).
+-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+-# Non-C LC_CTYPE values break the ctype check.
+-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+-
+ # confdefs.h avoids OS command line length limits that DEFS can exceed.
+ rm -rf conftest* confdefs.h
+ # AIX cpp loses on an empty file, so make sure it contains at least a newline.
+@@ -1850,6 +1850,19 @@
+ # Compiler output produced by configure, useful for debugging
+ # configure, is in ./config.log if it exists.
+ 
++# NLS nuisances.
++for as_var in \
++  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
++  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
++  LC_TELEPHONE LC_TIME
++do
++  if (set +x; test -z "`(eval \$as_var=C; export \$as_var) 2>&1`"); then
++    eval \$as_var=C; export \$as_var
++  else
++    unset \$as_var
++  fi
++done
++
+ ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+ for ac_option
+ do

diff --git a/sys-devel/gcc/files/gcc-configure-texinfo.patch 
b/sys-devel/gcc/files/gcc-configure-texinfo.patch
new file mode 100644
index 0000000..ddc098d
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-configure-texinfo.patch
@@ -0,0 +1,16 @@
+Chances are quite good that the installed makeinfo is sufficient.
+So ignore false positives where the makeinfo installed is so new
+that it violates the cheesy version grep.
+
+http://bugs.gentoo.org/198182
+
+--- configure
++++ configure
+@@ -3573,6 +3573,6 @@
+       :
+     else
+-      MAKEINFO="$MISSING makeinfo"
++      :
+     fi
+     ;;
+ 

diff --git a/sys-devel/gcc/files/gcc-spec-env-r1.patch 
b/sys-devel/gcc/files/gcc-spec-env-r1.patch
new file mode 100644
index 0000000..a589268
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-spec-env-r1.patch
@@ -0,0 +1,87 @@
+2013-08-22  Magnus Granberg <[email protected]>
+
+       * gcc/gcc.c (main): Add support for external spec file via the 
GCC_SPECS env var
+       and move the process of the user specifed specs.
+
+    This allows us to easily control pie/ssp defaults with gcc-config profiles.
+    Original patch by Rob Holland
+    Extended to support multiple entries separated by ':' by Kevin F. Quinn
+    Modified to use getenv instead of poisoned GET_ENVIRONMENT by Ryan Hill
+    Modified to process the GCC_SPECS env var befor DRIVER_SELF_SPECS by 
Magnus Granberg
+
+--- gcc-4.8-20130210/gcc/gcc.c 2013-02-05 16:55:31.000000000 +0100
++++ gcc-4.8-20130210-work/gcc/gcc.c    2013-07-26 02:32:14.625089864 +0200
+@@ -6427,6 +6428,48 @@ main (int argc, char **argv)
+     do_option_spec (option_default_specs[i].name,
+                   option_default_specs[i].spec);
+ 
++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS) || defined 
(WIN32))
++  /* Add specs listed in GCC_SPECS.  Note; in the process of separating
++   * each spec listed, the string is overwritten at token boundaries
++   * (':') with '\0', an effect of strtok_r().
++   */
++  specs_file = getenv ("GCC_SPECS");
++  if (specs_file && (strlen(specs_file) > 0))
++    {
++      char *spec, *saveptr;
++      for (spec=strtok_r(specs_file,":",&saveptr);
++           spec!=NULL;
++           spec=strtok_r(NULL,":",&saveptr))
++        {
++          struct user_specs *user = (struct user_specs *)
++            xmalloc (sizeof (struct user_specs));
++          user->next = (struct user_specs *) 0;
++          user->filename = spec;
++          if (user_specs_tail)
++            user_specs_tail->next = user;
++          else
++            user_specs_head = user;
++          user_specs_tail = user;
++        }
++    }
++#endif
++  /* Process any user specified specs in the order given on the command
++   *     line.  */
++  for (uptr = user_specs_head; uptr; uptr = uptr->next)
++    {
++      char *filename = find_a_file (&startfile_prefixes, uptr->filename,
++        R_OK, true);
++      read_specs (filename ? filename : uptr->filename, false, true);
++    }
++  /* Process any user self specs.  */
++  {
++    struct spec_list *sl;
++    for (sl = specs; sl; sl = sl->next)
++      if (sl->name_len == sizeof "self_spec" - 1
++          && !strcmp (sl->name, "self_spec"))
++        do_self_spec (*sl->ptr_spec);
++  }
++
+   /* Process DRIVER_SELF_SPECS, adding any new options to the end
+      of the command line.  */
+ 
+@@ -6535,24 +6578,6 @@ main (int argc, char **argv)
+                             PREFIX_PRIORITY_LAST, 0, 1);
+     }
+ 
+-  /* Process any user specified specs in the order given on the command
+-     line.  */
+-  for (uptr = user_specs_head; uptr; uptr = uptr->next)
+-    {
+-      char *filename = find_a_file (&startfile_prefixes, uptr->filename,
+-                                  R_OK, true);
+-      read_specs (filename ? filename : uptr->filename, false, true);
+-    }
+-
+-  /* Process any user self specs.  */
+-  {
+-    struct spec_list *sl;
+-    for (sl = specs; sl; sl = sl->next)
+-      if (sl->name_len == sizeof "self_spec" - 1
+-        && !strcmp (sl->name, "self_spec"))
+-      do_self_spec (*sl->ptr_spec);
+-  }
+-
+   if (compare_debug)
+     {
+       enum save_temps save;

diff --git a/sys-devel/gcc/files/gcc-spec-env.patch 
b/sys-devel/gcc/files/gcc-spec-env.patch
new file mode 100644
index 0000000..57e7567
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-spec-env.patch
@@ -0,0 +1,42 @@
+    Add support for external spec file via the GCC_SPECS env var.  This
+    allows us to easily control pie/ssp defaults with gcc-config profiles.
+
+    Original patch by Rob Holland
+    Extended to support multiple entries separated by ':' by Kevin F. Quinn
+    Modified to use getenv instead of poisoned GET_ENVIRONMENT by Ryan Hill
+
+--- gcc-4/gcc/gcc.c
++++ gcc-4/gcc/gcc.c
+@@ -6482,6 +6482,32 @@
+ 
+   /* Process any user specified specs in the order given on the command
+      line.  */
++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS) || defined 
(WIN32))
++  /* Add specs listed in GCC_SPECS.  Note; in the process of separating
++   * each spec listed, the string is overwritten at token boundaries
++   * (':') with '\0', an effect of strtok_r().
++   */
++  specs_file = getenv ("GCC_SPECS");
++  if (specs_file && (strlen(specs_file) > 0))
++    {
++      char *spec, *saveptr;
++      for (spec=strtok_r(specs_file,":",&saveptr);
++           spec!=NULL;
++           spec=strtok_r(NULL,":",&saveptr))
++        {
++          struct user_specs *user = (struct user_specs *)
++            xmalloc (sizeof (struct user_specs));
++
++          user->next = (struct user_specs *) 0;
++          user->filename = spec;
++          if (user_specs_tail)
++            user_specs_tail->next = user;
++          else
++            user_specs_head = user;
++          user_specs_tail = user;
++        }
++    }
++#endif
+   for (uptr = user_specs_head; uptr; uptr = uptr->next)
+     {
+       char *filename = find_a_file (&startfile_prefixes, uptr->filename,

diff --git a/sys-devel/gcc/gcc-8.3.0-r1.ebuild 
b/sys-devel/gcc/gcc-8.3.0-r1.ebuild
new file mode 100644
index 0000000..aa06c78
--- /dev/null
+++ b/sys-devel/gcc/gcc-8.3.0-r1.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+PATCH_VER="1.1"
+
+inherit toolchain
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 
~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+       elibc_glibc? ( >=sys-libs/glibc-2.13 )
+       >=${CATEGORY}/binutils-2.20"
+
+if [[ ${CATEGORY} != cross-* ]] ; then
+       PDEPEND="${PDEPEND} elibc_glibc? ( >=sys-libs/glibc-2.13 )"
+fi

diff --git a/sys-devel/gcc/metadata.xml b/sys-devel/gcc/metadata.xml
new file mode 100644
index 0000000..8e530f9
--- /dev/null
+++ b/sys-devel/gcc/metadata.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+  <maintainer type="project">
+    <email>[email protected]</email>
+    <name>Gentoo Toolchain Project</name>
+  </maintainer>
+  <use>
+    <flag name="fixed-point">Enable fixed-point arithmetic support for MIPS 
targets 
+      in gcc (Warning: significantly increases compile time!)</flag>
+    <flag name="go">Build the GCC Go language frontend.</flag>
+    <flag name="graphite">Add support for the framework for loop
+      optimizations based on a polyhedral intermediate representation</flag>
+    <flag name="jit">Enable libgccjit so other applications can embed gcc for 
Just-In-Time compilation.
+      This will slow down the compiler a bit as it forces all of the toolchain 
to be shared libs.</flag>
+    <flag name="libssp">Build SSP support into a dedicated library rather than 
use the
+      code in the C library (DO NOT ENABLE THIS IF YOU DON'T KNOW WHAT IT 
DOES)</flag>
+    <flag name="mpx">Enable support for Intel Memory Protection Extensions 
(MPX)</flag>
+    <flag name="objc">Build support for the Objective C code language</flag>
+    <flag name="objc++">Build support for the Objective C++ language</flag>
+    <flag name="objc-gc">Build support for the Objective C code language 
Garbage
+      Collector</flag>
+    <flag name="pgo">Build GCC using Profile Guided Optimization (PGO)</flag>
+    <flag name="sanitize">Build support for various sanitizer functions 
(ASAN/TSAN/etc...)</flag>
+    <flag name="ssp">Build packages with stack smashing protector on by 
default</flag>
+    <flag name="systemtap">enable systemtap static probe points</flag>
+    <flag name="vtv">Build support for virtual table verification (a C++ 
hardening feature)</flag>
+  </use>
+  <upstream>
+    <remote-id type="cpe">cpe:/a:gnu:gcc</remote-id>
+    <remote-id type="sourceforge">dgcc</remote-id>
+  </upstream>
+</pkgmetadata>

Reply via email to