Gentoo Archives: gentoo-commits

From: Matthias Maier <tamiko@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/dev/tamiko:master commit in: sys-devel/gcc/files/awk/, sys-devel/gcc/files/, sys-devel/gcc/
Date: Tue, 30 Aug 2016 03:31:47
Message-Id: 1472521445.698c342cc40f74b2aae90c23094c959f69fd3292.tamiko@gentoo
1 commit: 698c342cc40f74b2aae90c23094c959f69fd3292
2 Author: Matthias Maier <tamiko <AT> gentoo <DOT> org>
3 AuthorDate: Tue Aug 30 01:44:05 2016 +0000
4 Commit: Matthias Maier <tamiko <AT> gentoo <DOT> org>
5 CommitDate: Tue Aug 30 01:44:05 2016 +0000
6 URL: https://gitweb.gentoo.org/repo/dev/tamiko.git/commit/?id=698c342c
7
8 sys-devel/gcc: add a gcc 6.2.0 ebuild
9
10 Package-Manager: portage-2.2.28
11 RepoMan-Options: --force
12
13 sys-devel/gcc/Manifest | 3 +
14 sys-devel/gcc/files/awk/fixlafiles.awk | 314 +++++++++++++++++++++
15 sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la | 335 +++++++++++++++++++++++
16 sys-devel/gcc/files/c89 | 20 ++
17 sys-devel/gcc/files/c99 | 21 ++
18 sys-devel/gcc/files/fix_libtool_files.sh | 67 +++++
19 sys-devel/gcc/files/gcc-configure-LANG.patch | 64 +++++
20 sys-devel/gcc/files/gcc-configure-texinfo.patch | 16 ++
21 sys-devel/gcc/files/gcc-spec-env-r1.patch | 87 ++++++
22 sys-devel/gcc/files/gcc-spec-env.patch | 42 +++
23 sys-devel/gcc/gcc-6.2.0.ebuild | 44 +++
24 sys-devel/gcc/metadata.xml | 38 +++
25 12 files changed, 1051 insertions(+)
26
27 diff --git a/sys-devel/gcc/Manifest b/sys-devel/gcc/Manifest
28 new file mode 100644
29 index 0000000..bd41b7c
30 --- /dev/null
31 +++ b/sys-devel/gcc/Manifest
32 @@ -0,0 +1,3 @@
33 +DIST ecj-4.5.jar 1470676 SHA256 98fd128f1d374d9e42fd9d4836bdd249c6d511ebc6c0df17fbc1b9df96c3d781 SHA512 d4e1bf7538ace56e3d69fa91da5bbd16c272923b4de0a9d8dee23ea2b75f9f38c603de72fc4061df49285c450b63f3df211cee5270e9fffc5447445d1a9c9e4e WHIRLPOOL db54206cfd5eba935e707b8d36ebac40f3c4ed3c1f06ede794288cbdd9c7da9d90c0898e8c98b383af276ea4c1b40c861ebd9e1fc1dce712946184321339d3ad
34 +DIST gcc-6.2.0-patches-1.0.tar.bz2 5712 SHA256 7ada7f5ce163347cb8d6470a793133fcdfdc682b85c089a200d52769f224ab31 SHA512 7d715e210a3dc122dfff82ff34a2d456b9f1c70e21e28b533287eef26b6b7b29453e390f85ae3d5cc3f5eee751c207fde08085cb2021366d2cb3a20e8b0fdd61 WHIRLPOOL a8581cb522a4140883e36a2f5cd9395b9b6891d20795f42e1f829184330d996fa6bbc16eee3ac21a253dcf2f34d038b9c8ed211ec563394455dfa49c4b6a7bc1
35 +DIST gcc-6.2.0.tar.bz2 99778648 SHA256 9944589fc722d3e66308c0ce5257788ebd7872982a718aa2516123940671b7c5 SHA512 1e8b826a3d44b9d5899309894e20c03abeb352bf3d273b8ad63af814c0ee2911f1a83ce1cd4cdd2d1cb0b3e3c34e9b7ae1b2ab83dfc649ee817ab05247c76198 WHIRLPOOL 8a96e0424c7410d8826319758ed92f1674099cf17d0590bf71328ef2bb9913f9fa8452016c509c48c93f4bf8ed811a24fffa1b6e475b5c1633d167ad844f1dca
36
37 diff --git a/sys-devel/gcc/files/awk/fixlafiles.awk b/sys-devel/gcc/files/awk/fixlafiles.awk
38 new file mode 100644
39 index 0000000..ad2c2b1
40 --- /dev/null
41 +++ b/sys-devel/gcc/files/awk/fixlafiles.awk
42 @@ -0,0 +1,314 @@
43 +# Copyright 1999-2005 Gentoo Foundation
44 +# Distributed under the terms of the GNU General Public License v2
45 +# $Id$
46 +
47 +#
48 +# Helper functions
49 +#
50 +function printn(string) {
51 + printf("%s", string)
52 +}
53 +function einfo(string) {
54 + printf(" \033[32;01m*\033[0m %s\n", string)
55 +}
56 +function einfon(string) {
57 + printf(" \033[32;01m*\033[0m %s", string)
58 +}
59 +function ewarn(string) {
60 + printf(" \033[33;01m*\033[0m %s\n", string)
61 +}
62 +function ewarnn(string) {
63 + printf(" \033[33;01m*\033[0m %s", string)
64 +}
65 +function eerror(string) {
66 + printf(" \033[31;01m*\033[0m %s\n", string)
67 +}
68 +
69 +#
70 +# assert(condition, errmsg)
71 +# assert that a condition is true. Otherwise exit.
72 +#
73 +function assert(condition, string) {
74 + if (! condition) {
75 + printf("%s:%d: assertion failed: %s\n",
76 + FILENAME, FNR, string) > "/dev/stderr"
77 + _assert_exit = 1
78 + exit 1
79 + }
80 +}
81 +
82 +#
83 +# system(command, return)
84 +# wrapper that normalizes return codes ...
85 +#
86 +function dosystem(command, ret) {
87 + ret = 0
88 + ret = system(command)
89 + if (ret == 0)
90 + return 1
91 + else
92 + return 0
93 +}
94 +
95 +BEGIN {
96 + #
97 + # Get our variables from environment
98 + #
99 + OLDVER = ENVIRON["OLDVER"]
100 + OLDCHOST = ENVIRON["OLDCHOST"]
101 +
102 + if (OLDVER == "") {
103 + eerror("Could not get OLDVER!");
104 + exit 1
105 + }
106 +
107 + # Setup some sane defaults
108 + LIBCOUNT = 2
109 + HAVE_GCC34 = 0
110 + DIRLIST[1] = "/lib"
111 + DIRLIST[2] = "/usr/lib"
112 +
113 + #
114 + # Walk /etc/ld.so.conf to discover all our library paths
115 + #
116 + pipe = "cat /etc/ld.so.conf | sort 2>/dev/null"
117 + while(((pipe) | getline ldsoconf_data) > 0) {
118 + if (ldsoconf_data !~ /^[[:space:]]*#/) {
119 + if (ldsoconf_data == "") continue
120 +
121 + # Remove any trailing comments
122 + sub(/#.*$/, "", ldsoconf_data)
123 + # Remove any trailing spaces
124 + sub(/[[:space:]]+$/, "", ldsoconf_data)
125 +
126 + # If there's more than one path per line, split
127 + # it up as if they were sep lines
128 + split(ldsoconf_data, nodes, /[:,[:space:]]/)
129 +
130 + # Now add the rest from ld.so.conf
131 + for (x in nodes) {
132 + # wtf does this line do ?
133 + sub(/=.*/, "", nodes[x])
134 + # Prune trailing /
135 + sub(/\/$/, "", nodes[x])
136 +
137 + if (nodes[x] == "") continue
138 +
139 + #
140 + # Drop the directory if its a child directory of
141 + # one that was already added ...
142 + # For example, if we have:
143 + # /usr/lib /usr/libexec /usr/lib/mozilla /usr/lib/nss
144 + # We really just want to save /usr/lib /usr/libexec
145 + #
146 + CHILD = 0
147 + for (y in DIRLIST) {
148 + if (nodes[x] ~ "^" DIRLIST[y] "(/|$)") {
149 + CHILD = 1
150 + break
151 + }
152 + }
153 + if (CHILD) continue
154 +
155 + DIRLIST[++LIBCOUNT] = nodes[x]
156 + }
157 + }
158 + }
159 + close(pipe)
160 +
161 + #
162 + # Get line from gcc's output containing CHOST
163 + #
164 + pipe = "gcc -print-file-name=libgcc.a 2>/dev/null"
165 + if ((!((pipe) | getline TMP_CHOST)) || (TMP_CHOST == "")) {
166 + close(pipe)
167 +
168 + # If we fail to get the CHOST, see if we can get the CHOST
169 + # portage thinks we are using ...
170 + pipe = "/usr/bin/portageq envvar 'CHOST'"
171 + assert(((pipe) | getline CHOST), "(" pipe ") | getline CHOST")
172 + } else {
173 + # Check pre gcc-3.4.x versions
174 + CHOST = gensub("^.+lib/gcc-lib/([^/]+)/[0-9]+.+$", "\\1", 1, TMP_CHOST)
175 +
176 + if (CHOST == TMP_CHOST || CHOST == "") {
177 + # Check gcc-3.4.x or later
178 + CHOST = gensub("^.+lib/gcc/([^/]+)/[0-9]+.+$", "\\1", 1, TMP_CHOST);
179 +
180 + if (CHOST == TMP_CHOST || CHOST == "")
181 + CHOST = ""
182 + else
183 + HAVE_GCC34 = 1
184 + }
185 + }
186 + close(pipe)
187 +
188 + if (CHOST == "") {
189 + eerror("Could not get gcc's CHOST!")
190 + exit 1
191 + }
192 +
193 + if (OLDCHOST != "")
194 + if (OLDCHOST == CHOST)
195 + OLDCHOST = ""
196 +
197 + GCCLIBPREFIX_OLD = "/usr/lib/gcc-lib/"
198 + GCCLIBPREFIX_NEW = "/usr/lib/gcc/"
199 +
200 + if (HAVE_GCC34)
201 + GCCLIBPREFIX = GCCLIBPREFIX_NEW
202 + else
203 + GCCLIBPREFIX = GCCLIBPREFIX_OLD
204 +
205 + GCCLIB = GCCLIBPREFIX CHOST
206 +
207 + if (OLDCHOST != "") {
208 + OLDGCCLIB1 = GCCLIBPREFIX_OLD OLDCHOST
209 + OLDGCCLIB2 = GCCLIBPREFIX_NEW OLDCHOST
210 + }
211 +
212 + # Get current gcc's version
213 + pipe = "gcc -dumpversion"
214 + assert(((pipe) | getline NEWVER), "(" pipe ") | getline NEWVER)")
215 + close(pipe)
216 +
217 + if (NEWVER == "") {
218 + eerror("Could not get gcc's version!")
219 + exit 1
220 + }
221 +
222 + # Nothing to do ?
223 + if ((OLDVER == NEWVER) && (OLDCHOST == ""))
224 + exit 0
225 +
226 + #
227 + # Ok, now let's scan for the .la files and actually fix them up
228 + #
229 + for (x = 1; x <= LIBCOUNT; x++) {
230 + # Do nothing if the target dir is gcc's internal library path
231 + if (DIRLIST[x] ~ GCCLIBPREFIX_OLD ||
232 + DIRLIST[x] ~ GCCLIBPREFIX_NEW)
233 + continue
234 +
235 + einfo(" [" x "/" LIBCOUNT "] Scanning " DIRLIST[x] " ...")
236 +
237 + pipe = "find " DIRLIST[x] "/ -name '*.la' 2>/dev/null"
238 + while (((pipe) | getline la_files) > 0) {
239 +
240 + # Do nothing if the .la file is located in gcc's internal lib path
241 + if (la_files ~ GCCLIBPREFIX_OLD ||
242 + la_files ~ GCCLIBPREFIX_NEW)
243 + continue
244 +
245 + CHANGED = 0
246 + CHOST_CHANGED = 0
247 +
248 + # See if we need to fix the .la file
249 + while ((getline la_data < (la_files)) > 0) {
250 + if (OLDCHOST != "") {
251 + if ((gsub(OLDGCCLIB1 "[/[:space:]]+",
252 + GCCLIB, la_data) > 0) ||
253 + (gsub(OLDGCCLIB2 "[/[:space:]]+",
254 + GCCLIB, la_data) > 0)) {
255 + CHANGED = 1
256 + CHOST_CHANGED = 1
257 + }
258 + }
259 + if (OLDVER != NEWVER) {
260 + if ((gsub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "[/[:space:]]*",
261 + GCCLIB "/" NEWVER, la_data) > 0) ||
262 + (gsub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "[/[:space:]]*",
263 + GCCLIB "/" NEWVER, la_data) > 0))
264 + CHANGED = 1
265 + }
266 + }
267 + close(la_files)
268 +
269 + # Do the actual changes in a second loop, as we can then
270 + # verify that CHOST_CHANGED among things is correct ...
271 + if (CHANGED) {
272 + ewarnn(" FIXING: " la_files " ...")
273 +
274 + if (CHANGED)
275 + printn("[")
276 +
277 + # Clear the temp file (removing rather than '>foo' is better
278 + # out of a security point of view?)
279 + dosystem("rm -f " la_files ".new")
280 +
281 + while ((getline la_data < (la_files)) > 0) {
282 + if (OLDCHOST != "") {
283 + tmpstr = gensub(OLDGCCLIB1 "([/[:space:]]+)",
284 + GCCLIB "\\1", "g", la_data)
285 + tmpstr = gensub(OLDGCCLIB2 "([/[:space:]]+)",
286 + GCCLIB "\\1", "g", tmpstr)
287 +
288 + if (la_data != tmpstr) {
289 + printn("c")
290 + la_data = tmpstr
291 + }
292 +
293 + if (CHOST_CHANGED > 0) {
294 + # We try to be careful about CHOST changes outside
295 + # the gcc library path (meaning we cannot match it
296 + # via /GCCLIBPREFIX CHOST/) ...
297 +
298 + # Catch:
299 + #
300 + # dependency_libs=' -L/usr/CHOST/{bin,lib}'
301 + #
302 + gsub("-L/usr/" OLDCHOST "/",
303 + "-L/usr/" CHOST "/", la_data)
304 + # Catch:
305 + #
306 + # dependency_libs=' -L/usr/lib/gcc-lib/CHOST/VER/../../../../CHOST/lib'
307 + #
308 + la_data = gensub("(" GCCLIB "/[^[:space:]]+)/" OLDCHOST "/",
309 + "\\1/" CHOST "/", "g", la_data)
310 + }
311 + }
312 +
313 + if (OLDVER != NEWVER) {
314 + # Catch:
315 + #
316 + # dependency_libs=' -L/usr/lib/gcc/CHOST/VER'
317 + #
318 + tmpstr = gensub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "([/[:space:]]+)",
319 + GCCLIB "/" NEWVER "\\1", "g", la_data)
320 + tmpstr = gensub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "([/[:space:]]+)",
321 + GCCLIB "/" NEWVER "\\1", "g", tmpstr)
322 +
323 + if (la_data != tmpstr) {
324 + # Catch:
325 + #
326 + # dependency_libs=' -L/usr/lib/gcc-lib/../../CHOST/lib'
327 + #
328 + # in cases where we have gcc34
329 + tmpstr = gensub(GCCLIBPREFIX_OLD "(../../" CHOST "/lib)",
330 + GCCLIBPREFIX "\\1", "g", tmpstr)
331 + tmpstr = gensub(GCCLIBPREFIX_NEW "(../../" CHOST "/lib)",
332 + GCCLIBPREFIX "\\1", "g", tmpstr)
333 + printn("v")
334 + la_data = tmpstr
335 + }
336 + }
337 +
338 + print la_data >> (la_files ".new")
339 + }
340 +
341 + if (CHANGED)
342 + print "]"
343 +
344 + close(la_files)
345 + close(la_files ".new")
346 +
347 + assert(dosystem("mv -f " la_files ".new " la_files),
348 + "dosystem(\"mv -f " la_files ".new " la_files "\")")
349 + }
350 + }
351 +
352 + close(pipe)
353 + }
354 +}
355 +
356 +# vim:ts=4
357
358 diff --git a/sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la b/sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la
359 new file mode 100644
360 index 0000000..2776c72
361 --- /dev/null
362 +++ b/sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la
363 @@ -0,0 +1,335 @@
364 +# Copyright 1999-2005 Gentoo Foundation
365 +# Distributed under the terms of the GNU General Public License v2
366 +# $Id$
367 +
368 +#
369 +# Helper functions
370 +#
371 +function printn(string) {
372 + printf("%s", string)
373 +}
374 +function einfo(string) {
375 + printf(" \033[32;01m*\033[0m %s\n", string)
376 +}
377 +function einfon(string) {
378 + printf(" \033[32;01m*\033[0m %s", string)
379 +}
380 +function ewarn(string) {
381 + printf(" \033[33;01m*\033[0m %s\n", string)
382 +}
383 +function ewarnn(string) {
384 + printf(" \033[33;01m*\033[0m %s", string)
385 +}
386 +function eerror(string) {
387 + printf(" \033[31;01m*\033[0m %s\n", string)
388 +}
389 +
390 +#
391 +# assert(condition, errmsg)
392 +# assert that a condition is true. Otherwise exit.
393 +#
394 +function assert(condition, string) {
395 + if (! condition) {
396 + printf("%s:%d: assertion failed: %s\n",
397 + FILENAME, FNR, string) > "/dev/stderr"
398 + _assert_exit = 1
399 + exit 1
400 + }
401 +}
402 +
403 +#
404 +# system(command, return)
405 +# wrapper that normalizes return codes ...
406 +#
407 +function dosystem(command, ret) {
408 + ret = 0
409 + ret = system(command)
410 + if (ret == 0)
411 + return 1
412 + else
413 + return 0
414 +}
415 +
416 +#
417 +# parse_ld_conf(config_file)
418 +#
419 +function parse_ld_conf(conf, pipe, ldsoconf_data, CHILD, y) {
420 + pipe = "cd /etc; cat " conf " | sort 2>/dev/null"
421 + while(((pipe) | getline ldsoconf_data) > 0) {
422 + if (ldsoconf_data ~ /^[[:space:]]*#/)
423 + continue
424 + if (ldsoconf_data == "")
425 + continue
426 +
427 + # Handle the "include" keyword
428 + if (ldsoconf_data ~ /^include /) {
429 + sub(/^include /, "", ldsoconf_data)
430 + parse_ld_conf(ldsoconf_data)
431 + continue
432 + }
433 +
434 + # Remove any trailing comments
435 + sub(/#.*$/, "", ldsoconf_data)
436 + # Remove any trailing spaces
437 + sub(/[[:space:]]+$/, "", ldsoconf_data)
438 + # Eat duplicate slashes
439 + sub(/\/\//, "/", ldsoconf_data)
440 + # Prune trailing /
441 + sub(/\/$/, "", ldsoconf_data)
442 +
443 + #
444 + # Drop the directory if its a child directory of
445 + # one that was already added ...
446 + # For example, if we have:
447 + # /usr/lib /usr/libexec /usr/lib/mozilla /usr/lib/nss
448 + # We really just want to save /usr/lib /usr/libexec
449 + #
450 + CHILD = 0
451 + for (y in DIRLIST) {
452 + if (ldsoconf_data ~ "^" DIRLIST[y] "(/|$)") {
453 + CHILD = 1
454 + break
455 + }
456 + }
457 + if (CHILD) continue
458 +
459 + DIRLIST[++LIBCOUNT] = ldsoconf_data
460 + }
461 + close(pipe)
462 +}
463 +
464 +BEGIN {
465 + #
466 + # Get our variables from environment
467 + #
468 + OLDVER = ENVIRON["OLDVER"]
469 + OLDCHOST = ENVIRON["OLDCHOST"]
470 +
471 + if (OLDVER == "") {
472 + eerror("Could not get OLDVER!");
473 + exit 1
474 + }
475 +
476 + # Setup some sane defaults
477 + LIBCOUNT = 2
478 + HAVE_GCC34 = 0
479 + DIRLIST[1] = "/lib"
480 + DIRLIST[2] = "/usr/lib"
481 +
482 + #
483 + # Walk /etc/ld.so.conf to discover all our library paths
484 + #
485 + parse_ld_conf("/etc/ld.so.conf")
486 +
487 + #
488 + # Get line from gcc's output containing CHOST
489 + #
490 + pipe = "gcc -print-file-name=libgcc.a 2>/dev/null"
491 + if ((!((pipe) | getline TMP_CHOST)) || (TMP_CHOST == "")) {
492 + close(pipe)
493 +
494 + # If we fail to get the CHOST, see if we can get the CHOST
495 + # portage thinks we are using ...
496 + pipe = "/usr/bin/portageq envvar 'CHOST'"
497 + assert(((pipe) | getline CHOST), "(" pipe ") | getline CHOST")
498 + } else {
499 + # Check pre gcc-3.4.x versions
500 + CHOST = gensub("^.+lib/gcc-lib/([^/]+)/[0-9]+.+$", "\\1", 1, TMP_CHOST)
501 +
502 + if (CHOST == TMP_CHOST || CHOST == "") {
503 + # Check gcc-3.4.x or later
504 + CHOST = gensub("^.+lib/gcc/([^/]+)/[0-9]+.+$", "\\1", 1, TMP_CHOST);
505 +
506 + if (CHOST == TMP_CHOST || CHOST == "")
507 + CHOST = ""
508 + else
509 + HAVE_GCC34 = 1
510 + }
511 + }
512 + close(pipe)
513 +
514 + if (CHOST == "") {
515 + eerror("Could not get gcc's CHOST!")
516 + exit 1
517 + }
518 +
519 + if (OLDCHOST != "")
520 + if (OLDCHOST == CHOST)
521 + OLDCHOST = ""
522 +
523 + GCCLIBPREFIX_OLD = "/usr/lib/gcc-lib/"
524 + GCCLIBPREFIX_NEW = "/usr/lib/gcc/"
525 +
526 + if (HAVE_GCC34)
527 + GCCLIBPREFIX = GCCLIBPREFIX_NEW
528 + else
529 + GCCLIBPREFIX = GCCLIBPREFIX_OLD
530 +
531 + GCCLIB = GCCLIBPREFIX CHOST
532 +
533 + if (OLDCHOST != "") {
534 + OLDGCCLIB1 = GCCLIBPREFIX_OLD OLDCHOST
535 + OLDGCCLIB2 = GCCLIBPREFIX_NEW OLDCHOST
536 + }
537 +
538 + # Get current gcc's version
539 + pipe = "gcc -dumpversion"
540 + assert(((pipe) | getline NEWVER), "(" pipe ") | getline NEWVER)")
541 + close(pipe)
542 +
543 + if (NEWVER == "") {
544 + eerror("Could not get gcc's version!")
545 + exit 1
546 + }
547 +
548 + # Nothing to do ?
549 + # NB: Do not check for (OLDVER == NEWVER) anymore, as we might need to
550 + # replace libstdc++.la ....
551 + if ((OLDVER == "") && (OLDCHOST == ""))
552 + exit 0
553 +
554 + #
555 + # Ok, now let's scan for the .la files and actually fix them up
556 + #
557 + for (x = 1; x <= LIBCOUNT; x++) {
558 + # Do nothing if the target dir is gcc's internal library path
559 + if (DIRLIST[x] ~ GCCLIBPREFIX_OLD ||
560 + DIRLIST[x] ~ GCCLIBPREFIX_NEW)
561 + continue
562 +
563 + einfo(" [" x "/" LIBCOUNT "] Scanning " DIRLIST[x] " ...")
564 +
565 + pipe = "find " DIRLIST[x] "/ -name '*.la' 2>/dev/null"
566 + while (((pipe) | getline la_files) > 0) {
567 +
568 + # Do nothing if the .la file is located in gcc's internal lib path
569 + if (la_files ~ GCCLIBPREFIX_OLD ||
570 + la_files ~ GCCLIBPREFIX_NEW)
571 + continue
572 +
573 + CHANGED = 0
574 + CHOST_CHANGED = 0
575 +
576 + # See if we need to fix the .la file
577 + while ((getline la_data < (la_files)) > 0) {
578 + if (OLDCHOST != "") {
579 + if ((gsub(OLDGCCLIB1 "[/[:space:]]+",
580 + GCCLIB, la_data) > 0) ||
581 + (gsub(OLDGCCLIB2 "[/[:space:]]+",
582 + GCCLIB, la_data) > 0)) {
583 + CHANGED = 1
584 + CHOST_CHANGED = 1
585 + }
586 + }
587 + if (OLDVER != NEWVER) {
588 + if ((gsub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "[/[:space:]]*",
589 + GCCLIB "/" NEWVER, la_data) > 0) ||
590 + (gsub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "[/[:space:]]*",
591 + GCCLIB "/" NEWVER, la_data) > 0))
592 + CHANGED = 1
593 + }
594 + # We now check if we have libstdc++.la, as we remove the
595 + # libtool linker scripts for gcc ...
596 + # We do this last, as we only match the new paths
597 + if (gsub(GCCLIB "/" NEWVER "/libstdc\\+\\+\\.la",
598 + "-lstdc++", la_data) > 0)
599 + CHANGED = 1
600 + }
601 + close(la_files)
602 +
603 + # Do the actual changes in a second loop, as we can then
604 + # verify that CHOST_CHANGED among things is correct ...
605 + if (CHANGED) {
606 + ewarnn(" FIXING: " la_files " ...[")
607 +
608 + # Clear the temp file (removing rather than '>foo' is better
609 + # out of a security point of view?)
610 + dosystem("rm -f " la_files ".new")
611 +
612 + while ((getline la_data < (la_files)) > 0) {
613 + if (OLDCHOST != "") {
614 + tmpstr = gensub(OLDGCCLIB1 "([/[:space:]]+)",
615 + GCCLIB "\\1", "g", la_data)
616 + tmpstr = gensub(OLDGCCLIB2 "([/[:space:]]+)",
617 + GCCLIB "\\1", "g", tmpstr)
618 +
619 + if (la_data != tmpstr) {
620 + printn("c")
621 + la_data = tmpstr
622 + }
623 +
624 + if (CHOST_CHANGED > 0) {
625 + # We try to be careful about CHOST changes outside
626 + # the gcc library path (meaning we cannot match it
627 + # via /GCCLIBPREFIX CHOST/) ...
628 +
629 + # Catch:
630 + #
631 + # dependency_libs=' -L/usr/CHOST/{bin,lib}'
632 + #
633 + gsub("-L/usr/" OLDCHOST "/",
634 + "-L/usr/" CHOST "/", la_data)
635 + # Catch:
636 + #
637 + # dependency_libs=' -L/usr/lib/gcc-lib/CHOST/VER/../../../../CHOST/lib'
638 + #
639 + la_data = gensub("(" GCCLIB "/[^[:space:]]+)/" OLDCHOST "/",
640 + "\\1/" CHOST "/", "g", la_data)
641 + }
642 + }
643 +
644 + if (OLDVER != NEWVER) {
645 + # Catch:
646 + #
647 + # dependency_libs=' -L/usr/lib/gcc/CHOST/VER'
648 + #
649 + tmpstr = gensub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "([/[:space:]]+)",
650 + GCCLIB "/" NEWVER "\\1", "g", la_data)
651 + tmpstr = gensub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "([/[:space:]]+)",
652 + GCCLIB "/" NEWVER "\\1", "g", tmpstr)
653 +
654 + if (la_data != tmpstr) {
655 + # Catch:
656 + #
657 + # dependency_libs=' -L/usr/lib/gcc-lib/../../CHOST/lib'
658 + #
659 + # in cases where we have gcc34
660 + tmpstr = gensub(GCCLIBPREFIX_OLD "(../../" CHOST "/lib)",
661 + GCCLIBPREFIX "\\1", "g", tmpstr)
662 + tmpstr = gensub(GCCLIBPREFIX_NEW "(../../" CHOST "/lib)",
663 + GCCLIBPREFIX "\\1", "g", tmpstr)
664 + printn("v")
665 + la_data = tmpstr
666 + }
667 + }
668 +
669 + # We now check if we have libstdc++.la, as we remove the
670 + # libtool linker scripts for gcc and any referencese in any
671 + # libtool linker scripts.
672 + # We do this last, as we only match the new paths
673 + tmpstr = gensub(GCCLIB "/" NEWVER "/libstdc\\+\\+\\.la",
674 + "-lstdc++", "g", la_data);
675 + if (la_data != tmpstr) {
676 + printn("l")
677 + la_data = tmpstr
678 + }
679 +
680 + print la_data >> (la_files ".new")
681 + }
682 +
683 + if (CHANGED)
684 + print "]"
685 +
686 + close(la_files)
687 + close(la_files ".new")
688 +
689 + assert(dosystem("mv -f " la_files ".new " la_files),
690 + "dosystem(\"mv -f " la_files ".new " la_files "\")")
691 + }
692 + }
693 +
694 + close(pipe)
695 + }
696 +}
697 +
698 +# vim:ts=4
699
700 diff --git a/sys-devel/gcc/files/c89 b/sys-devel/gcc/files/c89
701 new file mode 100644
702 index 0000000..cee0325
703 --- /dev/null
704 +++ b/sys-devel/gcc/files/c89
705 @@ -0,0 +1,20 @@
706 +#! /bin/sh
707 +
708 +# Call the appropriate C compiler with options to accept ANSI/ISO C
709 +# The following options are the same (as of gcc-2.95):
710 +# -ansi
711 +# -std=c89
712 +# -std=iso9899:1990
713 +
714 +for i; do
715 + case "$i" in
716 + -ansi|-std=c89|-std=iso9899:1990)
717 + ;;
718 + -std=*)
719 + echo >&2 "`basename $0` called with non ANSI/ISO C90 option $i"
720 + exit 1
721 + ;;
722 + esac
723 +done
724 +
725 +exec gcc -std=c89 -pedantic -U_FORTIFY_SOURCE "$@"
726
727 diff --git a/sys-devel/gcc/files/c99 b/sys-devel/gcc/files/c99
728 new file mode 100644
729 index 0000000..c954209
730 --- /dev/null
731 +++ b/sys-devel/gcc/files/c99
732 @@ -0,0 +1,21 @@
733 +#! /bin/sh
734 +
735 +# Call the appropriate C compiler with options to accept ANSI/ISO C
736 +# The following options are the same (as of gcc-3.3):
737 +# -std=c99
738 +# -std=c9x
739 +# -std=iso9899:1999
740 +# -std=iso9899:199x
741 +
742 +for i; do
743 + case "$i" in
744 + -std=c9[9x]|-std=iso9899:199[9x])
745 + ;;
746 + -ansi|-std=*)
747 + echo >&2 "`basename $0` called with non ANSI/ISO C99 option $i"
748 + exit 1
749 + ;;
750 + esac
751 +done
752 +
753 +exec gcc -std=c99 -pedantic -U_FORTIFY_SOURCE ${1+"$@"}
754
755 diff --git a/sys-devel/gcc/files/fix_libtool_files.sh b/sys-devel/gcc/files/fix_libtool_files.sh
756 new file mode 100644
757 index 0000000..eb96df2
758 --- /dev/null
759 +++ b/sys-devel/gcc/files/fix_libtool_files.sh
760 @@ -0,0 +1,67 @@
761 +#!/bin/sh
762 +# Copyright 1999-2014 Gentoo Foundation
763 +# Distributed under the terms of the GNU General Public License v2
764 +# $Id$
765 +
766 +usage() {
767 +cat << "USAGE_END"
768 +Usage: fix_libtool_files.sh <old-gcc-version> [--oldarch <old-CHOST>]
769 +
770 + Where <old-gcc-version> is the version number of the
771 + previous gcc version. For example, if you updated to
772 + gcc-3.2.1, and you had gcc-3.2 installed, run:
773 +
774 + # fix_libtool_files.sh 3.2
775 +
776 + If you updated to gcc-3.2.3, and the old CHOST was i586-pc-linux-gnu
777 + but you now have CHOST as i686-pc-linux-gnu, run:
778 +
779 + # fix_libtool_files.sh 3.2 --oldarch i586-pc-linux-gnu
780 +
781 + Note that if only the CHOST and not the version changed, you can run
782 + it with the current version and the '--oldarch <old-CHOST>' arguments,
783 + and it will do the expected:
784 +
785 + # fix_libtool_files.sh `gcc -dumpversion` --oldarch i586-pc-linux-gnu
786 +
787 +USAGE_END
788 + exit 1
789 +}
790 +
791 +case $2 in
792 +--oldarch) [ $# -ne 3 ] && usage ;;
793 +*) [ $# -ne 1 ] && usage ;;
794 +esac
795 +
796 +ARGV1=$1
797 +ARGV2=$2
798 +ARGV3=$3
799 +
800 +. /etc/profile || exit 1
801 +
802 +if [ ${EUID:-0} -ne 0 ] ; then
803 + echo "${0##*/}: Must be root."
804 + exit 1
805 +fi
806 +
807 +# make sure the files come out sane
808 +umask 0022
809 +
810 +OLDCHOST=
811 +[ "${ARGV2}" = "--oldarch" ] && OLDCHOST=${ARGV3}
812 +
813 +AWKDIR="/usr/share/gcc-data"
814 +
815 +if [ ! -r "${AWKDIR}/fixlafiles.awk" ] ; then
816 + echo "${0##*/}: ${AWKDIR}/fixlafiles.awk does not exist!"
817 + exit 1
818 +fi
819 +
820 +OLDVER=${ARGV1}
821 +
822 +export OLDVER OLDCHOST
823 +
824 +echo "Scanning libtool files for hardcoded gcc library paths..."
825 +exec gawk -f "${AWKDIR}/fixlafiles.awk"
826 +
827 +# vim:ts=4
828
829 diff --git a/sys-devel/gcc/files/gcc-configure-LANG.patch b/sys-devel/gcc/files/gcc-configure-LANG.patch
830 new file mode 100644
831 index 0000000..d1b1b03
832 --- /dev/null
833 +++ b/sys-devel/gcc/files/gcc-configure-LANG.patch
834 @@ -0,0 +1,64 @@
835 +The LANG vars aren't reset early enough so when sed tries to use [a-zA-Z] in
836 +option parsing, it may break.
837 +
838 +http://bugs.gentoo.org/103483
839 +
840 +--- configure
841 ++++ configure
842 +@@ -54,6 +54,19 @@
843 + infodir='${prefix}/info'
844 + mandir='${prefix}/man'
845 +
846 ++# NLS nuisances.
847 ++for as_var in \
848 ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
849 ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
850 ++ LC_TELEPHONE LC_TIME
851 ++do
852 ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
853 ++ eval $as_var=C; export $as_var
854 ++ else
855 ++ unset $as_var
856 ++ fi
857 ++done
858 ++
859 + # Initialize some other variables.
860 + subdirs=
861 + MFLAGS= MAKEFLAGS=
862 +@@ -452,16 +463,6 @@
863 + esac
864 + done
865 +
866 +-# NLS nuisances.
867 +-# Only set these to C if already set. These must not be set unconditionally
868 +-# because not all systems understand e.g. LANG=C (notably SCO).
869 +-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
870 +-# Non-C LC_CTYPE values break the ctype check.
871 +-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
872 +-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
873 +-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
874 +-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
875 +-
876 + # confdefs.h avoids OS command line length limits that DEFS can exceed.
877 + rm -rf conftest* confdefs.h
878 + # AIX cpp loses on an empty file, so make sure it contains at least a newline.
879 +@@ -1850,6 +1850,19 @@
880 + # Compiler output produced by configure, useful for debugging
881 + # configure, is in ./config.log if it exists.
882 +
883 ++# NLS nuisances.
884 ++for as_var in \
885 ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
886 ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
887 ++ LC_TELEPHONE LC_TIME
888 ++do
889 ++ if (set +x; test -z "`(eval \$as_var=C; export \$as_var) 2>&1`"); then
890 ++ eval \$as_var=C; export \$as_var
891 ++ else
892 ++ unset \$as_var
893 ++ fi
894 ++done
895 ++
896 + ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
897 + for ac_option
898 + do
899
900 diff --git a/sys-devel/gcc/files/gcc-configure-texinfo.patch b/sys-devel/gcc/files/gcc-configure-texinfo.patch
901 new file mode 100644
902 index 0000000..ddc098d
903 --- /dev/null
904 +++ b/sys-devel/gcc/files/gcc-configure-texinfo.patch
905 @@ -0,0 +1,16 @@
906 +Chances are quite good that the installed makeinfo is sufficient.
907 +So ignore false positives where the makeinfo installed is so new
908 +that it violates the cheesy version grep.
909 +
910 +http://bugs.gentoo.org/198182
911 +
912 +--- configure
913 ++++ configure
914 +@@ -3573,6 +3573,6 @@
915 + :
916 + else
917 +- MAKEINFO="$MISSING makeinfo"
918 ++ :
919 + fi
920 + ;;
921 +
922
923 diff --git a/sys-devel/gcc/files/gcc-spec-env-r1.patch b/sys-devel/gcc/files/gcc-spec-env-r1.patch
924 new file mode 100644
925 index 0000000..a589268
926 --- /dev/null
927 +++ b/sys-devel/gcc/files/gcc-spec-env-r1.patch
928 @@ -0,0 +1,87 @@
929 +2013-08-22 Magnus Granberg <zorry@g.o>
930 +
931 + * gcc/gcc.c (main): Add support for external spec file via the GCC_SPECS env var
932 + and move the process of the user specifed specs.
933 +
934 + This allows us to easily control pie/ssp defaults with gcc-config profiles.
935 + Original patch by Rob Holland
936 + Extended to support multiple entries separated by ':' by Kevin F. Quinn
937 + Modified to use getenv instead of poisoned GET_ENVIRONMENT by Ryan Hill
938 + Modified to process the GCC_SPECS env var befor DRIVER_SELF_SPECS by Magnus Granberg
939 +
940 +--- gcc-4.8-20130210/gcc/gcc.c 2013-02-05 16:55:31.000000000 +0100
941 ++++ gcc-4.8-20130210-work/gcc/gcc.c 2013-07-26 02:32:14.625089864 +0200
942 +@@ -6427,6 +6428,48 @@ main (int argc, char **argv)
943 + do_option_spec (option_default_specs[i].name,
944 + option_default_specs[i].spec);
945 +
946 ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS) || defined (WIN32))
947 ++ /* Add specs listed in GCC_SPECS. Note; in the process of separating
948 ++ * each spec listed, the string is overwritten at token boundaries
949 ++ * (':') with '\0', an effect of strtok_r().
950 ++ */
951 ++ specs_file = getenv ("GCC_SPECS");
952 ++ if (specs_file && (strlen(specs_file) > 0))
953 ++ {
954 ++ char *spec, *saveptr;
955 ++ for (spec=strtok_r(specs_file,":",&saveptr);
956 ++ spec!=NULL;
957 ++ spec=strtok_r(NULL,":",&saveptr))
958 ++ {
959 ++ struct user_specs *user = (struct user_specs *)
960 ++ xmalloc (sizeof (struct user_specs));
961 ++ user->next = (struct user_specs *) 0;
962 ++ user->filename = spec;
963 ++ if (user_specs_tail)
964 ++ user_specs_tail->next = user;
965 ++ else
966 ++ user_specs_head = user;
967 ++ user_specs_tail = user;
968 ++ }
969 ++ }
970 ++#endif
971 ++ /* Process any user specified specs in the order given on the command
972 ++ * line. */
973 ++ for (uptr = user_specs_head; uptr; uptr = uptr->next)
974 ++ {
975 ++ char *filename = find_a_file (&startfile_prefixes, uptr->filename,
976 ++ R_OK, true);
977 ++ read_specs (filename ? filename : uptr->filename, false, true);
978 ++ }
979 ++ /* Process any user self specs. */
980 ++ {
981 ++ struct spec_list *sl;
982 ++ for (sl = specs; sl; sl = sl->next)
983 ++ if (sl->name_len == sizeof "self_spec" - 1
984 ++ && !strcmp (sl->name, "self_spec"))
985 ++ do_self_spec (*sl->ptr_spec);
986 ++ }
987 ++
988 + /* Process DRIVER_SELF_SPECS, adding any new options to the end
989 + of the command line. */
990 +
991 +@@ -6535,24 +6578,6 @@ main (int argc, char **argv)
992 + PREFIX_PRIORITY_LAST, 0, 1);
993 + }
994 +
995 +- /* Process any user specified specs in the order given on the command
996 +- line. */
997 +- for (uptr = user_specs_head; uptr; uptr = uptr->next)
998 +- {
999 +- char *filename = find_a_file (&startfile_prefixes, uptr->filename,
1000 +- R_OK, true);
1001 +- read_specs (filename ? filename : uptr->filename, false, true);
1002 +- }
1003 +-
1004 +- /* Process any user self specs. */
1005 +- {
1006 +- struct spec_list *sl;
1007 +- for (sl = specs; sl; sl = sl->next)
1008 +- if (sl->name_len == sizeof "self_spec" - 1
1009 +- && !strcmp (sl->name, "self_spec"))
1010 +- do_self_spec (*sl->ptr_spec);
1011 +- }
1012 +-
1013 + if (compare_debug)
1014 + {
1015 + enum save_temps save;
1016
1017 diff --git a/sys-devel/gcc/files/gcc-spec-env.patch b/sys-devel/gcc/files/gcc-spec-env.patch
1018 new file mode 100644
1019 index 0000000..57e7567
1020 --- /dev/null
1021 +++ b/sys-devel/gcc/files/gcc-spec-env.patch
1022 @@ -0,0 +1,42 @@
1023 + Add support for external spec file via the GCC_SPECS env var. This
1024 + allows us to easily control pie/ssp defaults with gcc-config profiles.
1025 +
1026 + Original patch by Rob Holland
1027 + Extended to support multiple entries separated by ':' by Kevin F. Quinn
1028 + Modified to use getenv instead of poisoned GET_ENVIRONMENT by Ryan Hill
1029 +
1030 +--- gcc-4/gcc/gcc.c
1031 ++++ gcc-4/gcc/gcc.c
1032 +@@ -6482,6 +6482,32 @@
1033 +
1034 + /* Process any user specified specs in the order given on the command
1035 + line. */
1036 ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS) || defined (WIN32))
1037 ++ /* Add specs listed in GCC_SPECS. Note; in the process of separating
1038 ++ * each spec listed, the string is overwritten at token boundaries
1039 ++ * (':') with '\0', an effect of strtok_r().
1040 ++ */
1041 ++ specs_file = getenv ("GCC_SPECS");
1042 ++ if (specs_file && (strlen(specs_file) > 0))
1043 ++ {
1044 ++ char *spec, *saveptr;
1045 ++ for (spec=strtok_r(specs_file,":",&saveptr);
1046 ++ spec!=NULL;
1047 ++ spec=strtok_r(NULL,":",&saveptr))
1048 ++ {
1049 ++ struct user_specs *user = (struct user_specs *)
1050 ++ xmalloc (sizeof (struct user_specs));
1051 ++
1052 ++ user->next = (struct user_specs *) 0;
1053 ++ user->filename = spec;
1054 ++ if (user_specs_tail)
1055 ++ user_specs_tail->next = user;
1056 ++ else
1057 ++ user_specs_head = user;
1058 ++ user_specs_tail = user;
1059 ++ }
1060 ++ }
1061 ++#endif
1062 + for (uptr = user_specs_head; uptr; uptr = uptr->next)
1063 + {
1064 + char *filename = find_a_file (&startfile_prefixes, uptr->filename,
1065
1066 diff --git a/sys-devel/gcc/gcc-6.2.0.ebuild b/sys-devel/gcc/gcc-6.2.0.ebuild
1067 new file mode 100644
1068 index 0000000..21c572a
1069 --- /dev/null
1070 +++ b/sys-devel/gcc/gcc-6.2.0.ebuild
1071 @@ -0,0 +1,44 @@
1072 +# Copyright 1999-2016 Gentoo Foundation
1073 +# Distributed under the terms of the GNU General Public License v2
1074 +# $Id$
1075 +
1076 +EAPI="4"
1077 +
1078 +PATCH_VER="1.0"
1079 +# UCLIBC_VER="1.0"
1080 +
1081 +# Hardened gcc 4 stuff
1082 +# PIE_VER="0.6.5"
1083 +# SPECS_VER="0.2.0"
1084 +# SPECS_GCC_VER="4.4.3"
1085 +# arch/libc configurations known to be stable with {PIE,SSP}-by-default
1086 +# PIE_GLIBC_STABLE="x86 amd64 mips ppc ppc64 arm ia64"
1087 +# PIE_UCLIBC_STABLE="x86 arm amd64 mips ppc ppc64"
1088 +# SSP_STABLE="amd64 x86 mips ppc ppc64 arm"
1089 +# uclibc need tls and nptl support for SSP support
1090 +# uclibc need to be >= 0.9.33
1091 +# SSP_UCLIBC_STABLE="x86 amd64 mips ppc ppc64 arm"
1092 +# end Hardened stuff
1093 +
1094 +inherit toolchain
1095 +
1096 +KEYWORDS="~amd64 ~x86"
1097 +
1098 +RDEPEND=""
1099 +DEPEND="${RDEPEND}
1100 + elibc_glibc? ( >=sys-libs/glibc-2.8 )
1101 + >=${CATEGORY}/binutils-2.20"
1102 +
1103 +if [[ ${CATEGORY} != cross-* ]] ; then
1104 + PDEPEND="${PDEPEND} elibc_glibc? ( >=sys-libs/glibc-2.8 )"
1105 +fi
1106 +
1107 +src_prepare() {
1108 + if has_version '<sys-libs/glibc-2.12' ; then
1109 + ewarn "Your host glibc is too old; disabling automatic fortify."
1110 + ewarn "Please rebuild gcc after upgrading to >=glibc-2.12 #362315"
1111 + EPATCH_EXCLUDE+=" 10_all_default-fortify-source.patch"
1112 + fi
1113 +
1114 + toolchain_src_prepare
1115 +}
1116
1117 diff --git a/sys-devel/gcc/metadata.xml b/sys-devel/gcc/metadata.xml
1118 new file mode 100644
1119 index 0000000..38f4396
1120 --- /dev/null
1121 +++ b/sys-devel/gcc/metadata.xml
1122 @@ -0,0 +1,38 @@
1123 +<?xml version="1.0" encoding="UTF-8"?>
1124 +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
1125 +<pkgmetadata>
1126 + <maintainer type="project">
1127 + <email>toolchain@g.o</email>
1128 + <name>Gentoo Toolchain Project</name>
1129 + </maintainer>
1130 + <use>
1131 + <flag name="awt">Useful only when building GCJ, this enables Abstract Window Toolkit
1132 + (AWT) peer support on top of GTK+</flag>
1133 + <flag name="cilk">Support the Cilk Plus language (C/C++ based languages for parallel programming)</flag>
1134 + <flag name="d">Enable support for the D programming language</flag>
1135 + <flag name="fixed-point">Enable fixed-point arithmetic support for MIPS targets
1136 + in gcc (Warning: significantly increases compile time!)</flag>
1137 + <flag name="go">Build the GCC Go language frontend.</flag>
1138 + <flag name="graphite">Add support for the framework for loop
1139 + optimizations based on a polyhedral intermediate representation</flag>
1140 + <flag name="jit">Enable libgccjit so other applications can embed gcc for Just-In-Time compilation.
1141 + This will slow down the compiler a bit as it forces all of the toolchain to be shared libs.</flag>
1142 + <flag name="libssp">Build SSP support into a dedicated library rather than use the
1143 + code in the C library (DO NOT ENABLE THIS IF YOU DON'T KNOW WHAT IT DOES)</flag>
1144 + <flag name="mpx">Enable support for Intel Memory Protection Extensions (MPX)</flag>
1145 + <flag name="mudflap">Add support for mudflap, a pointer use checking library</flag>
1146 + <flag name="nopie">Disable PIE support (NOT FOR GENERAL USE)</flag>
1147 + <flag name="nossp">Disable SSP support (NOT FOR GENERAL USE)</flag>
1148 + <flag name="objc">Build support for the Objective C code language</flag>
1149 + <flag name="objc++">Build support for the Objective C++ language</flag>
1150 + <flag name="objc-gc">Build support for the Objective C code language Garbage
1151 + Collector</flag>
1152 + <flag name="regression-test">Run the testsuite and install the results (requires FEATURES=test)</flag>
1153 + <flag name="sanitize">Build support for various sanitizer functions (ASAN/TSAN/etc...)</flag>
1154 + <flag name="vtv">Build support for virtual table verification (a C++ hardening feature)</flag>
1155 + </use>
1156 + <upstream>
1157 + <remote-id type="cpe">cpe:/a:gnu:gcc</remote-id>
1158 + <remote-id type="sourceforge">dgcc</remote-id>
1159 + </upstream>
1160 +</pkgmetadata>