summaryrefslogtreecommitdiff
path: root/sys-devel
diff options
context:
space:
mode:
authorBlackNoxis <steven.darklight@gmail.com>2015-02-09 02:44:26 +0200
committerBlackNoxis <steven.darklight@gmail.com>2015-02-09 02:44:47 +0200
commit53f00c6cbd9bce5c017558117cf8386aa1dc038b (patch)
treecadf5f797aadf1fd13342b8180a5c92a1f0798f3 /sys-devel
parentaae850e1eb992615148bf876f82fac95dcffc111 (diff)
Addeed base-gcc new versions
Diffstat (limited to 'sys-devel')
-rw-r--r--sys-devel/base-gcc/Manifest45
-rw-r--r--sys-devel/base-gcc/base-gcc-4.6.4.ebuild225
-rw-r--r--sys-devel/base-gcc/base-gcc-4.7.3-r1.ebuild209
-rw-r--r--sys-devel/base-gcc/base-gcc-4.7.3.ebuild231
-rw-r--r--sys-devel/base-gcc/base-gcc-4.7.4.ebuild211
-rw-r--r--sys-devel/base-gcc/base-gcc-4.8.3.ebuild211
-rw-r--r--sys-devel/base-gcc/files/gcc-spec-env-r1.patch87
7 files changed, 1193 insertions, 26 deletions
diff --git a/sys-devel/base-gcc/Manifest b/sys-devel/base-gcc/Manifest
index bb905ce5..82d34af4 100644
--- a/sys-devel/base-gcc/Manifest
+++ b/sys-devel/base-gcc/Manifest
@@ -1,26 +1,19 @@
-AUX awk/fixlafiles.awk 7807 RMD160 749402c9c0a0f1e8755067c0e001f69d73edb09f SHA1 5fc91ce11eb93e989ae64470dba602fe534ac409 SHA256 3cae4890a295adef50c6cf8a7e14d1be4e7a2356479c073e5c29433c3cdf9c5c
-AUX awk/fixlafiles.awk-no_gcc_la 8596 RMD160 d34279d732586514b220ec0d583c5e634b5d97ef SHA1 95f07ff4d6c3196e682371f02e6d2207d921a1b5 SHA256 91e36c29133b6ff854bc84acd6cd2e9d07be6eaa73ef9b23e4f7bc6371107fab
-AUX fix_libtool_files.sh 1735 RMD160 5035cd4a9995ea6207a8de95815921c3939395bd SHA1 57cd1babab4c6b142dd8cc58b36943442ff2af13 SHA256 b8d86b1db9453dff4c62b3467887bf1e04ecb483120185102122bda2581ed3f5
-AUX gcc-configure-LANG.patch 2052 RMD160 91f5b90600dfccb10c4e2308a5a1485275fdfeee SHA1 56ecd1d6f2e4bd0b35ac108be72a4f6f60212c38 SHA256 63de6d2dcfe14f21d147abeb1390405b9220c03f8e968f482d4b4c1cf279c88b
-AUX gcc-configure-texinfo.patch 337 RMD160 d0e872a9f0ccb5ab51d10f129acd7a19d76a7b75 SHA1 7e267fac540175ce848e563539db8c951cab557b SHA256 74b73a7ecec2d88889876b4db480cd173632f49d5396bb8e5b3c93673f9b5b98
-AUX gcc-spec-env.patch 1544 RMD160 1f7747546513a6d8e16bd82c2824969b9a739dfb SHA1 bdc2736377813da4046ceea77922620dd69d8658 SHA256 64b01f29fb853fee5ecda998b66eeaa7ec86ff1fc3b21432bfd69eb543c93e6a
-AUX mkinfodir 7324 RMD160 96bbe8860ae8c0a50db42fea01cc1c2216bd36c8 SHA1 3b8316da1a0fa94943e6b71be709827563af7058 SHA256 0565353e767e253207adb8b5c9be9ba215a628447e075a4dc7bb3183ed099d2a
-AUX pro-police-docs.patch 3287 RMD160 eef412d92bed145db05bffa3a3e54e2ba74ee50d SHA1 ca58eda97d80f3d51f4e383ad3053fcb13f7a91b SHA256 ec012aed77285545b9d993cba1bc5fdb402c8dc9a17040f48b8b354746ede627
-DIST ecj-4.5.jar 1470676 RMD160 d3f4da657f086b6423f74e93f001132f4855368a SHA1 58c1d79c64c8cd718550f32a932ccfde8d1e6449 SHA256 98fd128f1d374d9e42fd9d4836bdd249c6d511ebc6c0df17fbc1b9df96c3d781
-DIST gcc-4.4.3-specs-0.2.0.tar.bz2 2004 RMD160 0a013f95029a170eeea3cb6ccbfd65f64b66f465 SHA1 61bd3c13400772ec4d5d4fcee297e3d86adbd065 SHA256 f6c7cb99beead66dd4d06f7004c5731a9360330cbe878ce79792c618e008eed2
-DIST gcc-4.5.3-patches-1.1.tar.bz2 20627 RMD160 432101fa66d4be008b6a4c606aea98bd4ae217d3 SHA1 0272e461a5e511d9998085f2b6387d917a151a17 SHA256 171348adbdbf3eeb26f47be414a47591eb332271995a052ef57fccb5742361ec
-DIST gcc-4.5.3-piepatches-v0.4.7.tar.bz2 14638 RMD160 3976e2390acb6d0ada68b697150522fa4bc67682 SHA1 326d230873059c635daf8120afeaeeef1bd3cd52 SHA256 fe3414a85b6b0a1e4ff758c008bbefc7411148ccb9af70cb1a0af179eba55a32
-DIST gcc-4.5.3-uclibc-patches-1.0.tar.bz2 3015 RMD160 af8fad2ca0a948f25bff2b4f4f9868a99c7ceae7 SHA1 679698942814c9b3caaa5d220d672c87df50fa26 SHA256 7ddb8ac57b42c0de07a9afb3338c05d884da3c606f80cf21ee767f9c4682e3f6
-DIST gcc-4.5.3.tar.bz2 66374586 RMD160 d07aa90f2186b4e082dfd5ad5d5188c097fb6247 SHA1 73c45dfda5eef6b124be53e56828b5925198cc1b SHA256 0a8847af44a9b33813b199997a73139517c96adfd519eaf24c79d4d9d09f65de
-DIST gcc-4.6.2-patches-1.0.tar.bz2 12374 RMD160 84aa2e55a8762e2d38161943e1661fd7a89683a8 SHA1 582f0c4bf7b734bb5798b0b8b9deac898557789d SHA256 a6fd308469094095891ba003b9c3c2d4c8bf35713df987609b675f04a43e83df
-DIST gcc-4.6.2-piepatches-v0.4.5.tar.bz2 14156 RMD160 101546367ae798f9080d111e4f9ccc0914ec74c8 SHA1 2ad14aa580d65cbc7dd35b5d05977890e9fb1679 SHA256 a18bea1bc2cad2efde5481a5777a97cf539d206dcbca33758d56d7fbdb43a554
-DIST gcc-4.6.2-uclibc-patches-1.0.tar.bz2 3019 RMD160 7e991775c15d4126bd8d85aceb677c675559606f SHA1 0d316aaf94966cc52b1582282723a932ac065639 SHA256 25e902a6d2db7181394df5ad11fafaad064bf28a6ffebd889033f744613ac201
-DIST gcc-4.6.2.tar.bz2 71995338 RMD160 e7041933b39629f9524848dcf81a1a4c02a225c6 SHA1 691974613b1c1f15ed0182ec539fa54a12dd6f93 SHA256 60b05463dfe18d40d68fb8a71b25b408a01f86cc6ceaf5e6b22238b6b0f450c2
-DIST gcc-4.6.3-patches-1.3.tar.bz2 83071 RMD160 4e8c94ce83421ed1138439f946321763803b3157 SHA1 b05f96f1741828fb13ca23f0bd057223de1908ab SHA256 0acc8494932259dbadc118587626bb2505fc565e1a862bb792116e08961c141a
-DIST gcc-4.6.3-piepatches-v0.5.2.tar.bz2 15002 RMD160 75f25287ded26fd8ae88516b0b72d21fc0f17296 SHA1 8a1848819bc9c3e00513e68abded115410f25f78 SHA256 6606d47a8bbaa9cba0dd3b022cbf6ed14325b8560dd17f7601dbaa4697df3691
-DIST gcc-4.6.3-uclibc-patches-1.0.tar.bz2 3023 RMD160 6487e89d892687c51f4d764979c90133ae4c0a07 SHA1 26581caab046ba4a03041557db641f2899d518af SHA256 4219a3582c5f98bf8437bfc3feb8c264f8aabd8078caaddef46dd38be33f089f
-DIST gcc-4.6.3.tar.bz2 71999439 RMD160 9abb2f940d08fc84f2d91b6a6ce8d662ca889269 SHA1 ce317ca5c8185b58bc9300182b534608c578637f SHA256 e8f5853d4eec2f5ebaf8a72ae4d53c436aacf98153b2499f8635b48c4718a093
-EBUILD base-gcc-4.5.3-r2.ebuild 4481 RMD160 253e913d84ea216f1f6f4ce6ba22db93b0158eab SHA1 fae5c11e489e17b4a3c8eeb19dad7a253d8ac259 SHA256 c3a139f9d4f8a96f96b50921ffd5aff131e949807dcad60480d883721cfcffff
-EBUILD base-gcc-4.6.2.ebuild 4605 RMD160 b49258fd5e27cd84a2ea7b4ad0202daacd3f611a SHA1 fc5db91c140f26c995caf709239104f9460c92bc SHA256 ccd02cc3a9d6c8bac9ae9ee294c0744bc5173b92007d96b6bd9d0836225e7b1a
-EBUILD base-gcc-4.6.3.ebuild 5972 RMD160 77181ebd015794f73c04aac7dd6e0f97f8618bee SHA1 889e2eefe229c4e3c51762065e3375ad7e4943a5 SHA256 5550e6d45454b2396704b0dfae3dbb856c4ef8fefe79492d5111192f9b226ee7
-MISC metadata.xml 1780 RMD160 0fa658c47436e17235cd03b5a9a3cbd8448e474b SHA1 127adff4704c040ee42d43bd9ea8218b408203cf SHA256 57d7428c3d0ef34e72e780a3cfa7a059202b5c80f2d61cc12f90f0d1e8f5f12e
+DIST ecj-4.5.jar 1470676 SHA256 98fd128f1d374d9e42fd9d4836bdd249c6d511ebc6c0df17fbc1b9df96c3d781 SHA512 d4e1bf7538ace56e3d69fa91da5bbd16c272923b4de0a9d8dee23ea2b75f9f38c603de72fc4061df49285c450b63f3df211cee5270e9fffc5447445d1a9c9e4e WHIRLPOOL db54206cfd5eba935e707b8d36ebac40f3c4ed3c1f06ede794288cbdd9c7da9d90c0898e8c98b383af276ea4c1b40c861ebd9e1fc1dce712946184321339d3ad
+DIST gcc-4.4.3-specs-0.2.0.tar.bz2 2004 SHA256 f6c7cb99beead66dd4d06f7004c5731a9360330cbe878ce79792c618e008eed2 SHA512 779ecb0a064d2138b54569c8ae501975b8a6b72e5a3acbf8597619a8db77ee42ef9b0e62608d5192a15e4393e7dfc009bb50b994782236faa744b2c46b5fe517 WHIRLPOOL 8a1e45aad9d306cb19de93c63b5854a97e629d90852feb6861dcfca042b6257705304fc13ad65655a4cb227d36b83fc6063648c94f270821574ee0e85307094e
+DIST gcc-4.6.4-patches-1.0.tar.bz2 18687 SHA256 f751e2e701c48bc30d3047b87b5d08fb15095de3bb5b83c9662c08f5e5449a92 SHA512 8dd580faa9bcffcdeb1843a8d3d3bd8db492891d855c17bba3cc019673d814a5d24a927055694307be6438cb2c041bc799646a483c019f3840e4e1ca33b7ccb5 WHIRLPOOL 695fd821f347062bed01305fa1aca8c0cf4085391ad63f31df4afa3f4eaeb57eba7cebae02caac788dc9b290a57d675e66667ee3e15522d7d2909cbcbf1e6982
+DIST gcc-4.6.4-piepatches-v0.5.2.tar.bz2 14888 SHA256 a6a853197fb0de66c07e6183e686dbdb1f4b55108efd4c8363662cb2b971f43c SHA512 2fd1993b0dc7fc2096e17198f70ff6328ac4d3b7c0db597e3bc119df10eb0b9744f8e6cc659ae1ddd8afdb14f94cb85fdd12033a5d76026c7f84aca44ce9c9b8 WHIRLPOOL 61babd71167114a3f8579e8fb4bba5ed0c217cff4f3760b89de8a67d69c05de43b49bd9f567e6417b69874a878ecdc0e98d807a0e25a9dc80ef5c67594e15a0d
+DIST gcc-4.6.4-uclibc-patches-1.0.tar.bz2 3010 SHA256 946334cc62c0afa2f50a435dffbed12fd32c170f0850bbdce47df188a1eb8918 SHA512 fd289089a30c768b0ec4e3459cf494bc5e9d4ecf87056dc183277c712f7d69ac4cf900950270d8eacfe686b4aa906e1ece87cae52f2cb00642e96c0b95dcf133 WHIRLPOOL 2ce7f308a21fb5072d08a640390eb3f453ad8d811df897b0f9d3e917eef4680fce6cce231159ffe96e371f3c299264eaa51cd110124a3a126f04fb6d8531639e
+DIST gcc-4.6.4.tar.bz2 72006076 SHA256 35af16afa0b67af9b8eb15cafb76d2bc5f568540552522f5dc2c88dd45d977e8 SHA512 b5a5395782e0b9e61cda052f6e00c8575d1aa0b7e8db9e34c06e4e45f12ff37b436018536b7fa69a04a4235b5b368895652e3ed8fab2fe11763f9782ed9161dc WHIRLPOOL ab1b035f43aec669640b36037e65ae0edceb3b13b1ce4f7900aeff5ee06686dc2d66c3dd81156f53c4e9a9a806e4becd4462f72a6c4ad7e646b632c10c23356c
+DIST gcc-4.7.3-patches-1.0.tar.bz2 39969 SHA256 c9a5d7c6da7d056f7fca15b33eb7f399bb7ed5a2d0a892b97e0c7609146a2a24 SHA512 d5c3151eca135bb08511955d81c7727adbf8fc33043b64a4431b0fe95d2cac1bf3c5410fa9616373d6b3d932604195ff29f6321e61a3de69a7704f1d1cb1759f WHIRLPOOL 315578ef5a7226ed66c4831b25c79647120453dc169dc8ecd291e099500ae52284ffa451164522d6d55d11c440a7aa353a283c07e28c103c522df0c2e2f43fff
+DIST gcc-4.7.3-patches-1.4.tar.bz2 43148 SHA256 bfafbd4c1cdd589858c18072f8e06c537370169cce1788aba869f35096174e57 SHA512 6dfc5b405e2eca70642f42974d7d3183ff8f0eed3e9f29fbf197e8959bc1795a1ba54df99e4f73df1017332f46bdf3d1c10d4b0f89fea71d604dd5ebda488c22 WHIRLPOOL 2fbd05323dd803a1b2b7c09a3b44cc8f23d4662f61a89b9365a5d505b4a605ac168fc940bae5992e2ad6b821f93d0f6651092d3301b15fdfd14ccf608fa241e6
+DIST gcc-4.7.3-piepatches-v0.5.5.tar.bz2 15378 SHA256 b6f6b6709e7b13f6c05090f3bf68f3a64db19d52593a870cc7717c5c128b05a2 SHA512 d0189d2e4049d471dedaddcba319fe2c2b29855f7b33e84b26051504ead2936c852ef7870a1d19d755bb343c9b121b0ce5295665ab4ff1e448436bd448c08e1f WHIRLPOOL ccceedb41d48da69f5a423b6b73436c9fbb7b1e382456abfcef954f25666e1b7caf926bc5eb977e934502359a356d623c439d80825e87d9fe46b5ae78a74bde3
+DIST gcc-4.7.3-uclibc-patches-1.0.tar.bz2 3013 SHA256 731c518f31db8debd08bea92db8e3bf1e9962552909407452dc2ac3c491cf11c SHA512 6119159300e76be87732f2a44b1a9388228235d7832370dbae531c2c96694ea42ed4c75acf7abca98ec0035fbc50a8bf84225574505358c2739e64b0f3fd6a95 WHIRLPOOL 4a874a5684937907720aa5a4a1dbc237aa7d985292befd1c591cf0789c71e0da22ced5b7f7e049731bc2d6496e959cbe3c9010047ceb1b05675e61865004c71a
+DIST gcc-4.7.3.tar.bz2 82904224 SHA256 2f7c37eb4fc14422ff2358a9ef59c974a75ab41204ef0e49fc34ab1d8981a9c3 SHA512 5671a2dd3b6ac0d23f305cb11a796aebd823c1462b873136b412e660966143f4e07439bd8926c1443b78442beb6ae370ef91d819ec615920294875b722b7b0bd WHIRLPOOL cb3408e3e251833f38ae7cf2388a1ddce864614fe1c68de9729a1a9a1f8f028ab92c0f2b863e7fa3ac16dbf443306ac864e74c9cce90690230c081ee2ac309d3
+DIST gcc-4.7.4-patches-1.2.tar.bz2 41732 SHA256 6885f63b7cd37a0f4fb9584a15e3144c5a08abd2b1fdcc485f43daba576f162c SHA512 ee42ca54ee8a3b03c20870493ac91ceb224c74c8f6c92e9bec43a2e4c46a0179a349faa14e3d6583367dec6e001cb2071a31d2eeadb4902ea97a7cf9a3958b6b WHIRLPOOL 04672dd9f9e481e591d0cb4a7bd2f65d7e78c3a44b91d982db3e78d1c9a3b29a544726a89d34ea4f4c9791595f21da2ad97ec87c719e5334b6eb7100df6e28b3
+DIST gcc-4.7.4-piepatches-v0.5.5.tar.bz2 15358 SHA256 6b568bd204e3ffb177df1830e5a888be3987491b4183bdb6ad75ad83c642a348 SHA512 f5e078bf4c17f7b5be102f1e3358d91c72e80363b5e055a92461f78399a1bf27bf6cb690d41900719bb260b6529f5d1aac999e613fda6ac5e4efa27f622510e6 WHIRLPOOL 42e348d5925cf4d43697a6dc06c911cc617f89037949ce1d8f7aa0fa93405f460e7416d6cd00e8fb2aac54c6f26fcae00691917f1517fcfb6891925efa3d3400
+DIST gcc-4.7.4-uclibc-patches-1.0.tar.bz2 3019 SHA256 cbdfe2947f653e11ac391dded461416e5cef1ff8900cf8fe92672de797b4018b SHA512 c2e6c96b74365f8233f6106fa03d94075b60f6f77c683aa2e27aceb007da723243f8e3ddea8b178e6a0f7939b8e35615165534dc74e5050f87680ab261a31c52 WHIRLPOOL 53c8bd64336eb55d8e3d62a33267d3d99c0239d5c818985a9830fd776d766aabf4b0bce630949c5b522580566e2eeba1b59bfc1b8388dee7ec6c990512d2c499
+DIST gcc-4.7.4.tar.bz2 82935453 SHA256 92e61c6dc3a0a449e62d72a38185fda550168a86702dea07125ebd3ec3996282 SHA512 dfcb737073191e628231031a3571ec77ee760a59377630f4a6e4fdfa66f9ddad39fde47e3f0f227eb43cdf90e0d34cde5abdc9ac892c1e111a911062a66c9189 WHIRLPOOL df8408e80634ce28f105f9abcdcf38fba5c130795cbe48428527a68819abebc3bc7152bb6ad714e40c71450a08986b48ddd630c887e1b2faf07c3babfe720969
+DIST gcc-4.8.3-patches-1.1.tar.bz2 19882 SHA256 019cbe76f20f4e294b900ccb99a6b52553ed04fa0d2993798b3a07b0e4a8f90a SHA512 8512ec54fb2d482e08ca54042e11c6334d653ec850cc7c920ed95654575222ac0303caa35cd46e80f1985d86cd229f35e26e0eaca1ae623fd8d336940148801c WHIRLPOOL d7b8d6278b6f79aa00fcd29ed6142cad3002def33edb0be44e638d50cb3b1fa8da72fa62a7276c81c94cd873c872dd0e7fd602022420d9601fde8f2b04872ece
+DIST gcc-4.8.3-piepatches-v0.5.9.tar.bz2 13310 SHA256 d08e3770453edb728216243ecaf639ff7bc8aa77560fffdd561b2a0859d0b869 SHA512 d9d7dc4b7d8f52cce48dff36ee32db5346baed50968a1cacafa9a426849c5df5387061b26c8a0d2363bf91e5f55cb459cb4a176c5652690f914916047c0437f8 WHIRLPOOL 1e5cb3556b695de7f42ab44636194e86128f80bdffbe049fc1d4ee17b772bc1ea2089b3fe88bec60c52aab4bf5301344be27fd11be3c6cc8ef798d6441285c8b
+DIST gcc-4.8.3-uclibc-patches-1.0.tar.bz2 3014 SHA256 75f089ed44e33be8923f82eaa1d231f71d2cded475fb10938eded386647c5e04 SHA512 7e74fefae6136d2e132ee37905adbdf7f528d31a7bb67ed97bc99b6208f177a6105ef0f0e0c77eb87368359f7da49de768ff98ec07a569e19bfdd00f67a445a8 WHIRLPOOL 6fd766ba280fc0b96f1823315b5098a36d361dc9c8d179b2e262d72156508b70c560ef5095f3556bb5c922e495cc7eefb4bd5d970b2e4dff9e9ce654703fddc5
+DIST gcc-4.8.3.tar.bz2 86126808 SHA256 6a8e4f11b185f4fe2ed9d7fc053e80f8c7e73f800c045f51f9d8bea33f080f1e SHA512 2b40d231e8445f9c1654137df509f09ce1187b475138ca7f648f710d922a1718f740b2d8a37c26e16b5e27900c60358be98229ae884a6f1f70e9df44ad24d02b WHIRLPOOL 6dd3bd4b51bb9b8c52fb743bba28cde8612ff7090b71e56bf02d3613b91cd4c3c4dd91dbcb672985f22400d776870ba55550e1fc44afae9737092ceca5f83ebd
diff --git a/sys-devel/base-gcc/base-gcc-4.6.4.ebuild b/sys-devel/base-gcc/base-gcc-4.6.4.ebuild
new file mode 100644
index 00000000..b9cd301c
--- /dev/null
+++ b/sys-devel/base-gcc/base-gcc-4.6.4.ebuild
@@ -0,0 +1,225 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+PATCH_VER="1.0"
+UCLIBC_VER="1.0"
+
+# Hardened gcc 4 stuff
+PIE_VER="0.5.2"
+SPECS_VER="0.2.0"
+SPECS_GCC_VER="4.4.3"
+# arch/libc configurations known to be stable with {PIE,SSP}-by-default
+PIE_GLIBC_STABLE="x86 amd64 mips ppc ppc64 arm ia64"
+PIE_UCLIBC_STABLE="x86 arm amd64 ppc ppc64"
+SSP_STABLE="amd64 x86 mips ppc ppc64 arm"
+# uclibc need tls and nptl support for SSP support
+# uclibc need to be >= 0.9.32
+SSP_UCLIBC_STABLE="x86 amd64 ppc ppc64 arm"
+#end Hardened stuff
+
+inherit eutils toolchain
+
+# This is here to redeclare is_gcc() in toolchain.eclass
+# We don't even want to build gcj, which is a real hog
+# on memory constrained hardware. base-gcc doesn't actually
+# ship with it atm.
+is_gcj() {
+ return 1
+}
+
+DESCRIPTION="The GNU Compiler Collection"
+
+LICENSE="GPL-3 LGPL-3 || ( GPL-3 libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.2"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+
+RDEPEND=">=sys-libs/zlib-1.1.4
+ virtual/libiconv
+ >=dev-libs/gmp-4.3.2
+ >=dev-libs/mpfr-2.4.2
+ >=dev-libs/mpc-0.8.1
+ graphite? (
+ >=dev-libs/cloog-ppl-0.15.10
+ >=dev-libs/ppl-0.11
+ )
+ !build? (
+ nls? ( sys-devel/gettext )
+ )"
+
+DEPEND="${RDEPEND}
+ test? (
+ >=dev-util/dejagnu-1.4.4
+ >=sys-devel/autogen-5.5.4
+ )
+ >=sys-apps/texinfo-4.8
+ >=sys-devel/bison-1.875
+ >=sys-devel/flex-2.5.4
+ >=${CATEGORY}/binutils-2.18"
+
+## Check for valid gcc profile.
+src_unpack() {
+ # Since Sabayon's gcc ebuild are split into two parts, we have to
+ # build gcc with a different version of gcc, or terrible breakage
+ # will occur after sys-devel/base-gcc is installed, but the
+ # partner sys-devel/gcc still needs to be built.
+
+ # While it is possible to rebuild Sabayon's split gcc from
+ # the same version, we have to disallow this also since
+ # we have no way of discerning if a configuration change
+ # is significant enough to cause breakage.
+
+ GCC_PROFILE_VER=$(cat ${ROOT}/etc/env.d/gcc/config-$CHOST | awk -F- '{ print $NF }')
+ einfo "Checking for valid gcc profile to build ${P}"
+
+ # Construct the Slot of the gcc version in the active profile.
+ GCC_PROFILE_SLOT_MAJOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $1 }')
+ GCC_PROFILE_SLOT_MINOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $2 }')
+ GCC_PROFILE_SLOT="${GCC_PROFILE_SLOT_MAJOR}.${GCC_PROFILE_SLOT_MINOR}"
+ einfo "Current gcc profile version Slot is: ${GCC_PROFILE_SLOT}"
+ if [[ "${GCC_PROFILE_SLOT}" = "${SLOT}" ]] ; then
+ eerror "Error!"
+ eerror "The active gcc-profile is for sys-devel/gcc slot ${SLOT}."
+ eerror "Sabayon's split sys-devel/gcc package MUST be built"
+ eerror "with another slotted version of sys-devel/gcc active."
+ ebeep 10
+ fi
+
+ toolchain_src_unpack
+
+ use vanilla && return 0
+
+ [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch
+}
+
+pkg_setup() {
+ toolchain_pkg_setup
+
+ ewarn
+ ewarn "LTO support is still experimental and unstable."
+ ewarn "Any bugs resulting from the use of LTO will not be fixed."
+ ewarn
+}
+
+## Just install libgcc stuff
+src_install() {
+ cd "${WORKDIR}/build"
+ S="${WORKDIR}"/build \
+ emake -j1 -C "${CTARGET}/libgcc" DESTDIR="${D}" install-shared || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgcc" DESTDIR="${D}" \
+ install-shared || die
+ fi
+
+ if use mudflap; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libmudflap" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libmudflap" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+ fi
+
+ if use openmp; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgomp" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+ fi
+
+ S="${WORKDIR}"/build \
+ emake -j1 -C "${CTARGET}/libstdc++-v3/src" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libstdc++-v3/src" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libstdc++-v3/po" DESTDIR="${D}" install || die
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" install-info || die
+
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libquadmath || die
+ if use fortran; then
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libgfortran || die
+ fi
+ # TODO: what to do with USE objc++ and objc-gc ?
+ if use objc; then
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libobjc || die
+ fi
+
+ # from toolchain.eclass yay
+ gcc_movelibs
+
+ dodir /etc/env.d/gcc
+ create_gcc_env_entry
+
+ # Setup the gcc_env_entry for hardened gcc 4 with minispecs
+ if want_minispecs ; then
+ copy_minispecs_gcc_specs
+ fi
+
+ # drop any .la, .a
+ find "${D}" -name *.a -delete
+ find "${D}" -name *.la -delete
+
+ # drop any include
+ rm "${D}${LIBPATH}"/include -rf
+ # drop specs as well, provided by sys-devel/gcc-${PV}:${SLOT}
+ # unfortunately, the spec shit above does create the env.d/
+ # file content...
+ rm "${D}${LIBPATH}"/{32/,}*.spec{s,} -rf
+ rm "${D}${LIBPATH}"/specs -rf
+
+ # Now do the fun stripping stuff
+ env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}"
+
+ cd "${S}"
+ if ! is_crosscompile; then
+ has noinfo ${FEATURES} \
+ && rm -r "${D}/${DATAPATH}"/info \
+ || prepinfo "${DATAPATH}"
+ fi
+
+ # use gid of 0 because some stupid ports don't have
+ # the group 'root' set to gid 0
+ chown -R root:0 "${D}"${LIBPATH}
+}
+
+## Do nothing!
+pkg_preinst() {
+ :
+}
+
+pkg_postinst() {
+ # Sabayon specific bits to always force the latest gcc profile
+ local gcc_atom=$(best_version sys-devel/base-gcc)
+ local gcc_ver=
+ if [ -n "${gcc_atom}" ]; then
+ elog "Found latest base-gcc to be: ${gcc_atom}, forcing this profile"
+ gcc_ver=$(portageq metadata "${ROOT}" installed "${gcc_atom}" PV)
+ else
+ eerror "No sys-devel/base-gcc installed"
+ fi
+
+ if [ -n "${gcc_ver}" ]; then
+ local target="${CTARGET:${CHOST}}-${gcc_ver}"
+ local env_target="${ROOT}/etc/env.d/gcc/${target}"
+ [[ -e "${env_target}-vanilla" ]] && find_target="${target}-vanilla"
+
+ elog "Setting: ${target} GCC profile"
+ gcc-config "${target}"
+ else
+ eerror "No sys-devel/base-gcc version installed? Cannot set a proper GCC profile"
+ fi
+}
+
+## Do nothing!
+pkg_prerm() {
+ :
+}
+
+## Do nothing!
+pkg_postrm() {
+ :
+}
diff --git a/sys-devel/base-gcc/base-gcc-4.7.3-r1.ebuild b/sys-devel/base-gcc/base-gcc-4.7.3-r1.ebuild
new file mode 100644
index 00000000..9f47e9d4
--- /dev/null
+++ b/sys-devel/base-gcc/base-gcc-4.7.3-r1.ebuild
@@ -0,0 +1,209 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+PATCH_VER="1.4"
+UCLIBC_VER="1.0"
+
+# Hardened gcc 4 stuff
+PIE_VER="0.5.5"
+SPECS_VER="0.2.0"
+SPECS_GCC_VER="4.4.3"
+# arch/libc configurations known to be stable with {PIE,SSP}-by-default
+PIE_GLIBC_STABLE="x86 amd64 ppc ppc64 arm ia64"
+PIE_UCLIBC_STABLE="x86 arm amd64 ppc ppc64"
+SSP_STABLE="amd64 x86 ppc ppc64 arm"
+# uclibc need tls and nptl support for SSP support
+# uclibc need to be >= 0.9.33
+SSP_UCLIBC_STABLE="x86 amd64 ppc ppc64 arm"
+#end Hardened stuff
+
+inherit eutils toolchain
+
+# This is here to redeclare is_gcc() in toolchain.eclass
+# We don't even want to build gcj, which is a real hog
+# on memory constrained hardware. base-gcc doesn't actually
+# ship with it atm.
+is_gcj() {
+ return 1
+}
+
+DESCRIPTION="The GNU Compiler Collection"
+
+LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+"
+KEYWORDS="alpha amd64 arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 -amd64-fbsd -x86-fbsd"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ elibc_glibc? ( >=sys-libs/glibc-2.8 )
+ >=${CATEGORY}/binutils-2.18"
+
+src_unpack() {
+ # Since Sabayon's gcc ebuild are split into two parts, we have to
+ # build gcc with a different version of gcc, or terrible breakage
+ # will occur after sys-devel/base-gcc is installed, but the
+ # partner sys-devel/gcc still needs to be built.
+
+ # While it is possible to rebuild Sabayon's split gcc from
+ # the same version, we have to disallow this also since
+ # we have no way of discerning if a configuration change
+ # is significant enough to cause breakage.
+
+ GCC_PROFILE_VER=$(cat ${ROOT}/etc/env.d/gcc/config-$CHOST | awk -F- '{ print $NF }')
+ einfo "Checking for valid gcc profile to build ${P}"
+
+ # Construct the Slot of the gcc version in the active profile.
+ GCC_PROFILE_SLOT_MAJOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $1 }')
+ GCC_PROFILE_SLOT_MINOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $2 }')
+ GCC_PROFILE_SLOT="${GCC_PROFILE_SLOT_MAJOR}.${GCC_PROFILE_SLOT_MINOR}"
+ einfo "Current gcc profile version Slot is: ${GCC_PROFILE_SLOT}"
+ if [[ "${GCC_PROFILE_SLOT}" = "${SLOT}" ]] ; then
+ eerror "Error!"
+ eerror "The active gcc-profile is for sys-devel/gcc slot ${SLOT}."
+ eerror "Sabayon's split sys-devel/gcc package MUST be built"
+ eerror "with another slotted version of sys-devel/gcc active."
+ ebeep 10
+ fi
+
+ if has_version '<sys-libs/glibc-2.12' ; then
+ ewarn "Your host glibc is too old; disabling automatic fortify."
+ ewarn "Please rebuild gcc after upgrading to >=glibc-2.12 #362315"
+ EPATCH_EXCLUDE+=" 10_all_default-fortify-source.patch"
+ fi
+
+ # drop the x32 stuff once 4.7 goes stable
+ if [[ ${CTARGET} != x86_64* ]] || ! has x32 $(get_all_abis TARGET) ; then
+ EPATCH_EXCLUDE+=" 90_all_gcc-4.7-x32.patch"
+ fi
+
+ toolchain_src_unpack
+
+ use vanilla && return 0
+
+ [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch
+}
+
+## Just install libgcc stuff
+src_install() {
+ cd "${WORKDIR}/build"
+ S="${WORKDIR}"/build \
+ emake -j1 -C "${CTARGET}/libgcc" DESTDIR="${D}" install-shared || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgcc" DESTDIR="${D}" \
+ install-shared || die
+ fi
+
+ if use mudflap; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libmudflap" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libmudflap" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+ fi
+
+ if use openmp; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgomp" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+ fi
+
+ S="${WORKDIR}"/build \
+ emake -j1 -C "${CTARGET}/libstdc++-v3/src" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libstdc++-v3/src" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libstdc++-v3/po" DESTDIR="${D}" install || die
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" install-info || die
+
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libquadmath || die
+ if use fortran; then
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libgfortran || die
+ fi
+ # TODO: what to do with USE objc++ and objc-gc ?
+ if use objc; then
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libobjc || die
+ fi
+
+ # from toolchain.eclass yay
+ gcc_movelibs
+
+ dodir /etc/env.d/gcc
+ create_gcc_env_entry
+
+ # Setup the gcc_env_entry for hardened gcc 4 with minispecs
+ if want_minispecs ; then
+ copy_minispecs_gcc_specs
+ fi
+
+ # drop any .la, .a
+ find "${D}" -name *.a -delete
+ find "${D}" -name *.la -delete
+
+ # drop any include
+ rm "${D}${LIBPATH}"/include -rf
+ # drop specs as well, provided by sys-devel/gcc-${PV}:${SLOT}
+ # unfortunately, the spec shit above does create the env.d/
+ # file content...
+ rm "${D}${LIBPATH}"/{32/,}*.spec{s,} -rf
+ rm "${D}${LIBPATH}"/specs -rf
+
+ # Now do the fun stripping stuff
+ env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}"
+
+ cd "${S}"
+ if ! is_crosscompile; then
+ has noinfo ${FEATURES} \
+ && rm -r "${D}/${DATAPATH}"/info \
+ || prepinfo "${DATAPATH}"
+ fi
+
+ # use gid of 0 because some stupid ports don't have
+ # the group 'root' set to gid 0
+ chown -R root:0 "${D}"${LIBPATH}
+}
+
+## Do nothing!
+pkg_preinst() {
+ :
+}
+
+## Do (almost) nothing!
+pkg_postinst() {
+ # Sabayon specific bits to always force the latest gcc profile
+ local gcc_atom=$(best_version sys-devel/base-gcc)
+ local gcc_ver=
+ if [ -n "${gcc_atom}" ]; then
+ elog "Found latest base-gcc to be: ${gcc_atom}, forcing this profile"
+ gcc_ver=$(portageq metadata "${ROOT}" installed "${gcc_atom}" PV)
+ else
+ eerror "No sys-devel/base-gcc installed"
+ fi
+
+ if [ -n "${gcc_ver}" ]; then
+ local target="${CTARGET:${CHOST}}-${gcc_ver}"
+ local env_target="${ROOT}/etc/env.d/gcc/${target}"
+ [[ -e "${env_target}-vanilla" ]] && find_target="${target}-vanilla"
+
+ elog "Setting: ${target} GCC profile"
+ gcc-config "${target}"
+ else
+ eerror "No sys-devel/base-gcc version installed? Cannot set a proper GCC profile"
+ fi
+}
+
+## Do nothing!
+pkg_prerm() {
+ :
+}
+
+## Do nothing!
+pkg_postrm() {
+ :
+}
diff --git a/sys-devel/base-gcc/base-gcc-4.7.3.ebuild b/sys-devel/base-gcc/base-gcc-4.7.3.ebuild
new file mode 100644
index 00000000..72aff96f
--- /dev/null
+++ b/sys-devel/base-gcc/base-gcc-4.7.3.ebuild
@@ -0,0 +1,231 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+PATCH_VER="1.0"
+UCLIBC_VER="1.0"
+
+# Hardened gcc 4 stuff
+PIE_VER="0.5.5"
+SPECS_VER="0.2.0"
+SPECS_GCC_VER="4.4.3"
+# arch/libc configurations known to be stable with {PIE,SSP}-by-default
+PIE_GLIBC_STABLE="x86 amd64 ppc ppc64 arm ia64"
+PIE_UCLIBC_STABLE="x86 arm amd64 ppc ppc64"
+SSP_STABLE="amd64 x86 ppc ppc64 arm"
+# uclibc need tls and nptl support for SSP support
+# uclibc need to be >= 0.9.33
+SSP_UCLIBC_STABLE="x86 amd64 ppc ppc64 arm"
+#end Hardened stuff
+
+inherit eutils toolchain
+
+# This is here to redeclare is_gcc() in toolchain.eclass
+# We don't even want to build gcj, which is a real hog
+# on memory constrained hardware. base-gcc doesn't actually
+# ship with it atm.
+is_gcj() {
+ return 1
+}
+
+DESCRIPTION="The GNU Compiler Collection"
+
+LICENSE="GPL-3 LGPL-3 || ( GPL-3 libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.2"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+
+RDEPEND=">=sys-libs/zlib-1.1.4
+ virtual/libiconv
+ >=dev-libs/gmp-4.3.2
+ >=dev-libs/mpfr-2.4.2
+ >=dev-libs/mpc-0.8.1
+ graphite? (
+ >=dev-libs/cloog-ppl-0.15.10
+ >=dev-libs/ppl-0.11
+ )
+ !build? (
+ nls? ( sys-devel/gettext )
+ )"
+
+DEPEND="${RDEPEND}
+ test? (
+ >=dev-util/dejagnu-1.4.4
+ >=sys-devel/autogen-5.5.4
+ )
+ >=sys-apps/texinfo-4.8
+ >=sys-devel/bison-1.875
+ >=sys-devel/flex-2.5.4
+ >=${CATEGORY}/binutils-2.18"
+
+## Check for valid gcc profile.
+src_unpack() {
+ # Since Sabayon's gcc ebuild are split into two parts, we have to
+ # build gcc with a different version of gcc, or terrible breakage
+ # will occur after sys-devel/base-gcc is installed, but the
+ # partner sys-devel/gcc still needs to be built.
+
+ # While it is possible to rebuild Sabayon's split gcc from
+ # the same version, we have to disallow this also since
+ # we have no way of discerning if a configuration change
+ # is significant enough to cause breakage.
+
+ GCC_PROFILE_VER=$(cat ${ROOT}/etc/env.d/gcc/config-$CHOST | awk -F- '{ print $NF }')
+ einfo "Checking for valid gcc profile to build ${P}"
+
+ # Construct the Slot of the gcc version in the active profile.
+ GCC_PROFILE_SLOT_MAJOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $1 }')
+ GCC_PROFILE_SLOT_MINOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $2 }')
+ GCC_PROFILE_SLOT="${GCC_PROFILE_SLOT_MAJOR}.${GCC_PROFILE_SLOT_MINOR}"
+ einfo "Current gcc profile version Slot is: ${GCC_PROFILE_SLOT}"
+ if [[ "${GCC_PROFILE_SLOT}" = "${SLOT}" ]] ; then
+ eerror "Error!"
+ eerror "The active gcc-profile is for sys-devel/gcc slot ${SLOT}."
+ eerror "Sabayon's split sys-devel/gcc package MUST be built"
+ eerror "with another slotted version of sys-devel/gcc active."
+ ebeep 10
+ fi
+
+ # drop the x32 stuff once 4.7 goes stable
+ if [[ ${CTARGET} != x86_64* ]] || ! has x32 $(get_all_abis TARGET) ; then
+ EPATCH_EXCLUDE+=" 90_all_gcc-4.7-x32.patch"
+ fi
+
+ toolchain_src_unpack
+
+ use vanilla && return 0
+
+ [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch
+}
+
+pkg_setup() {
+ toolchain_pkg_setup
+
+ ewarn
+ ewarn "LTO support is still experimental and unstable."
+ ewarn "Any bugs resulting from the use of LTO will not be fixed."
+ ewarn
+}
+
+## Just install libgcc stuff
+src_install() {
+ cd "${WORKDIR}/build"
+ S="${WORKDIR}"/build \
+ emake -j1 -C "${CTARGET}/libgcc" DESTDIR="${D}" install-shared || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgcc" DESTDIR="${D}" \
+ install-shared || die
+ fi
+
+ if use mudflap; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libmudflap" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libmudflap" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+ fi
+
+ if use openmp; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgomp" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+ fi
+
+ S="${WORKDIR}"/build \
+ emake -j1 -C "${CTARGET}/libstdc++-v3/src" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libstdc++-v3/src" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libstdc++-v3/po" DESTDIR="${D}" install || die
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" install-info || die
+
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libquadmath || die
+ if use fortran; then
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libgfortran || die
+ fi
+ # TODO: what to do with USE objc++ and objc-gc ?
+ if use objc; then
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libobjc || die
+ fi
+
+ # from toolchain.eclass yay
+ gcc_movelibs
+
+ dodir /etc/env.d/gcc
+ create_gcc_env_entry
+
+ # Setup the gcc_env_entry for hardened gcc 4 with minispecs
+ if want_minispecs ; then
+ copy_minispecs_gcc_specs
+ fi
+
+ # drop any .la, .a
+ find "${D}" -name *.a -delete
+ find "${D}" -name *.la -delete
+
+ # drop any include
+ rm "${D}${LIBPATH}"/include -rf
+ # drop specs as well, provided by sys-devel/gcc-${PV}:${SLOT}
+ # unfortunately, the spec shit above does create the env.d/
+ # file content...
+ rm "${D}${LIBPATH}"/{32/,}*.spec{s,} -rf
+ rm "${D}${LIBPATH}"/specs -rf
+
+ # Now do the fun stripping stuff
+ env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}"
+
+ cd "${S}"
+ if ! is_crosscompile; then
+ has noinfo ${FEATURES} \
+ && rm -r "${D}/${DATAPATH}"/info \
+ || prepinfo "${DATAPATH}"
+ fi
+
+ # use gid of 0 because some stupid ports don't have
+ # the group 'root' set to gid 0
+ chown -R root:0 "${D}"${LIBPATH}
+}
+
+## Do nothing!
+pkg_preinst() {
+ :
+}
+
+## Do nothing!
+pkg_postinst() {
+ # Sabayon specific bits to always force the latest gcc profile
+ local gcc_atom=$(best_version sys-devel/base-gcc)
+ local gcc_ver=
+ if [ -n "${gcc_atom}" ]; then
+ elog "Found latest base-gcc to be: ${gcc_atom}, forcing this profile"
+ gcc_ver=$(portageq metadata "${ROOT}" installed "${gcc_atom}" PV)
+ else
+ eerror "No sys-devel/base-gcc installed"
+ fi
+
+ if [ -n "${gcc_ver}" ]; then
+ local target="${CTARGET:${CHOST}}-${gcc_ver}"
+ local env_target="${ROOT}/etc/env.d/gcc/${target}"
+ [[ -e "${env_target}-vanilla" ]] && find_target="${target}-vanilla"
+
+ elog "Setting: ${target} GCC profile"
+ gcc-config "${target}"
+ else
+ eerror "No sys-devel/base-gcc version installed? Cannot set a proper GCC profile"
+ fi
+}
+
+## Do nothing!
+pkg_prerm() {
+ :
+}
+
+## Do nothing!
+pkg_postrm() {
+ :
+}
diff --git a/sys-devel/base-gcc/base-gcc-4.7.4.ebuild b/sys-devel/base-gcc/base-gcc-4.7.4.ebuild
new file mode 100644
index 00000000..cf2f3ead
--- /dev/null
+++ b/sys-devel/base-gcc/base-gcc-4.7.4.ebuild
@@ -0,0 +1,211 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="4"
+
+PATCH_VER="1.2"
+UCLIBC_VER="1.0"
+
+# Hardened gcc 4 stuff
+PIE_VER="0.5.5"
+SPECS_VER="0.2.0"
+SPECS_GCC_VER="4.4.3"
+# arch/libc configurations known to be stable with {PIE,SSP}-by-default
+PIE_GLIBC_STABLE="x86 amd64 ppc ppc64 arm ia64"
+PIE_UCLIBC_STABLE="x86 arm amd64 ppc ppc64"
+SSP_STABLE="amd64 x86 ppc ppc64 arm"
+# uclibc need tls and nptl support for SSP support
+# uclibc need to be >= 0.9.33
+SSP_UCLIBC_STABLE="x86 amd64 ppc ppc64 arm"
+#end Hardened stuff
+
+inherit eutils toolchain
+
+# This is here to redeclare is_gcc() in toolchain.eclass
+# We don't even want to build gcj, which is a real hog
+# on memory constrained hardware. base-gcc doesn't actually
+# ship with it atm.
+is_gcj() {
+ return 1
+}
+
+DESCRIPTION="The GNU Compiler Collection"
+
+LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+"
+KEYWORDS="alpha amd64 arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 -amd64-fbsd -x86-fbsd"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ elibc_glibc? ( >=sys-libs/glibc-2.8 )
+ >=${CATEGORY}/binutils-2.18"
+
+src_prepare() {
+ # Since Sabayon's gcc ebuild are split into two parts, we have to
+ # build gcc with a different version of gcc, or terrible breakage
+ # will occur after sys-devel/base-gcc is installed, but the
+ # partner sys-devel/gcc still needs to be built.
+
+ # While it is possible to rebuild Sabayon's split gcc from
+ # the same version, we have to disallow this also since
+ # we have no way of discerning if a configuration change
+ # is significant enough to cause breakage.
+
+ GCC_PROFILE_VER=$(cat ${ROOT}/etc/env.d/gcc/config-$CHOST | awk -F- '{ print $NF }')
+ einfo "Checking for valid gcc profile to build ${P}"
+
+ # Construct the Slot of the gcc version in the active profile.
+ GCC_PROFILE_SLOT_MAJOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $1 }')
+ GCC_PROFILE_SLOT_MINOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $2 }')
+ GCC_PROFILE_SLOT="${GCC_PROFILE_SLOT_MAJOR}.${GCC_PROFILE_SLOT_MINOR}"
+ einfo "Current gcc profile version Slot is: ${GCC_PROFILE_SLOT}"
+ if [[ "${GCC_PROFILE_SLOT}" = "${SLOT}" ]] ; then
+ eerror "Error!"
+ eerror "The active gcc-profile is for sys-devel/gcc slot ${SLOT}."
+ eerror "Sabayon's split sys-devel/gcc package MUST be built"
+ eerror "with another slotted version of sys-devel/gcc active."
+ ebeep 10
+ fi
+
+ if has_version '<sys-libs/glibc-2.12' ; then
+ ewarn "Your host glibc is too old; disabling automatic fortify."
+ ewarn "Please rebuild gcc after upgrading to >=glibc-2.12 #362315"
+ EPATCH_EXCLUDE+=" 10_all_default-fortify-source.patch"
+ fi
+
+ # drop the x32 stuff once 4.7 goes stable
+ if [[ ${CTARGET} != x86_64* ]] || ! has x32 $(get_all_abis TARGET) ; then
+ EPATCH_EXCLUDE+=" 90_all_gcc-4.7-x32.patch"
+ fi
+
+ toolchain_src_prepare
+
+ use vanilla && return 0
+
+ [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch
+}
+
+## Just install libgcc stuff
+src_install() {
+ cd "${WORKDIR}/build"
+ S="${WORKDIR}"/build \
+ emake -j1 -C "${CTARGET}/libgcc" DESTDIR="${D}" install-shared || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgcc" DESTDIR="${D}" \
+ install-shared || die
+ fi
+
+ if use mudflap; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libmudflap" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libmudflap" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+ fi
+
+ if use openmp; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgomp" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+ fi
+
+ S="${WORKDIR}"/build \
+ emake -j1 -C "${CTARGET}/libstdc++-v3/src" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libstdc++-v3/src" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libstdc++-v3/po" DESTDIR="${D}" install || die
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" install-info || die
+
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libquadmath || die
+ if use fortran; then
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libgfortran || die
+ fi
+ # TODO: what to do with USE objc++ and objc-gc ?
+ if use objc; then
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libobjc || die
+ fi
+
+ # from toolchain.eclass yay
+ gcc_movelibs
+
+ dodir /etc/env.d/gcc
+ create_gcc_env_entry
+
+ # Setup the gcc_env_entry for hardened gcc 4 with minispecs
+ if want_minispecs ; then
+ copy_minispecs_gcc_specs
+ fi
+
+ # drop any .la, .a
+ find "${D}" -name *.a -delete
+ find "${D}" -name *.la -delete
+
+ # drop any include
+ rm "${D}${LIBPATH}"/include -rf
+ # drop specs as well, provided by sys-devel/gcc-${PV}:${SLOT}
+ # unfortunately, the spec shit above does create the env.d/
+ # file content...
+ rm "${D}${LIBPATH}"/{32/,}*.spec{s,} -rf
+ rm "${D}${LIBPATH}"/specs -rf
+
+ # Now do the fun stripping stuff
+ env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}"
+
+ cd "${S}"
+ if ! is_crosscompile; then
+ has noinfo ${FEATURES} \
+ && rm -r "${D}/${DATAPATH}"/info \
+ || prepinfo "${DATAPATH}"
+ fi
+
+ # use gid of 0 because some stupid ports don't have
+ # the group 'root' set to gid 0
+ chown -R root:0 "${D}"${LIBPATH}
+}
+
+## Do nothing!
+pkg_preinst() {
+ :
+}
+
+## Do (almost) nothing!
+pkg_postinst() {
+ # Sabayon specific bits to always force the latest gcc profile
+ local gcc_atom=$(best_version sys-devel/base-gcc)
+ local gcc_ver=
+ if [ -n "${gcc_atom}" ]; then
+ elog "Found latest base-gcc to be: ${gcc_atom}, forcing this profile"
+ gcc_ver=$(portageq metadata "${ROOT}" installed "${gcc_atom}" PV)
+ else
+ eerror "No sys-devel/base-gcc installed"
+ fi
+
+ if [ -n "${gcc_ver}" ]; then
+ local target="${CTARGET:${CHOST}}-${gcc_ver}"
+ local env_target="${ROOT}/etc/env.d/gcc/${target}"
+ [[ -e "${env_target}-vanilla" ]] && find_target="${target}-vanilla"
+
+ elog "Setting: ${target} GCC profile"
+ gcc-config "${target}"
+ else
+ eerror "No sys-devel/base-gcc version installed? Cannot set a proper GCC profile"
+ fi
+}
+
+## Do nothing!
+pkg_prerm() {
+ :
+}
+
+## Do nothing!
+pkg_postrm() {
+ :
+}
diff --git a/sys-devel/base-gcc/base-gcc-4.8.3.ebuild b/sys-devel/base-gcc/base-gcc-4.8.3.ebuild
new file mode 100644
index 00000000..2a4b1f80
--- /dev/null
+++ b/sys-devel/base-gcc/base-gcc-4.8.3.ebuild
@@ -0,0 +1,211 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="4"
+
+PATCH_VER="1.1"
+UCLIBC_VER="1.0"
+
+# Hardened gcc 4 stuff
+PIE_VER="0.5.9"
+SPECS_VER="0.2.0"
+SPECS_GCC_VER="4.4.3"
+# arch/libc configurations known to be stable with {PIE,SSP}-by-default
+PIE_GLIBC_STABLE="x86 amd64 ppc ppc64 arm ia64"
+PIE_UCLIBC_STABLE="x86 arm amd64 ppc ppc64"
+SSP_STABLE="amd64 x86 ppc ppc64 arm"
+# uclibc need tls and nptl support for SSP support
+# uclibc need to be >= 0.9.33
+SSP_UCLIBC_STABLE="x86 amd64 ppc ppc64 arm"
+#end Hardened stuff
+
+inherit eutils toolchain
+
+# This is here to redeclare is_gcc() in toolchain.eclass
+# We don't even want to build gcj, which is a real hog
+# on memory constrained hardware. base-gcc doesn't actually
+# ship with it atm.
+is_gcj() {
+ return 1
+}
+
+DESCRIPTION="The GNU Compiler Collection"
+
+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.8 )
+ >=${CATEGORY}/binutils-2.20"
+
+src_prepare() {
+ # Since Sabayon's gcc ebuild are split into two parts, we have to
+ # build gcc with a different version of gcc, or terrible breakage
+ # will occur after sys-devel/base-gcc is installed, but the
+ # partner sys-devel/gcc still needs to be built.
+
+ # While it is possible to rebuild Sabayon's split gcc from
+ # the same version, we have to disallow this also since
+ # we have no way of discerning if a configuration change
+ # is significant enough to cause breakage.
+
+ GCC_PROFILE_VER=$(cat ${ROOT}/etc/env.d/gcc/config-$CHOST | awk -F- '{ print $NF }')
+ einfo "Checking for valid gcc profile to build ${P}"
+
+ # Construct the Slot of the gcc version in the active profile.
+ GCC_PROFILE_SLOT_MAJOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $1 }')
+ GCC_PROFILE_SLOT_MINOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $2 }')
+ GCC_PROFILE_SLOT="${GCC_PROFILE_SLOT_MAJOR}.${GCC_PROFILE_SLOT_MINOR}"
+ einfo "Current gcc profile version Slot is: ${GCC_PROFILE_SLOT}"
+ if [[ "${GCC_PROFILE_SLOT}" = "${SLOT}" ]] ; then
+ eerror "Error!"
+ eerror "The active gcc-profile is for sys-devel/gcc slot ${SLOT}."
+ eerror "Sabayon's split sys-devel/gcc package MUST be built"
+ eerror "with another slotted version of sys-devel/gcc active."
+ ebeep 10
+ fi
+
+ if has_version '<sys-libs/glibc-2.12' ; then
+ ewarn "Your host glibc is too old; disabling automatic fortify."
+ ewarn "Please rebuild gcc after upgrading to >=glibc-2.12 #362315"
+ EPATCH_EXCLUDE+=" 10_all_default-fortify-source.patch"
+ fi
+
+ # drop the x32 stuff once 4.7 goes stable
+ if [[ ${CTARGET} != x86_64* ]] || ! has x32 $(get_all_abis TARGET) ; then
+ EPATCH_EXCLUDE+=" 90_all_gcc-4.7-x32.patch"
+ fi
+
+ toolchain_src_prepare
+
+ use vanilla && return 0
+
+ #Use -r1 for newer piepatchet that use DRIVER_SELF_SPECS for the hardened specs.
+ [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env-r1.patch
+}
+
+## Just install libgcc stuff
+src_install() {
+ cd "${WORKDIR}/build"
+ S="${WORKDIR}"/build \
+ emake -j1 -C "${CTARGET}/libgcc" DESTDIR="${D}" install-shared || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgcc" DESTDIR="${D}" \
+ install-shared || die
+ fi
+
+ if use mudflap; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libmudflap" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libmudflap" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+ fi
+
+ if use openmp; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgomp" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+ fi
+
+ S="${WORKDIR}"/build \
+ emake -j1 -C "${CTARGET}/libstdc++-v3/src" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ if use multilib; then
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libstdc++-v3/src" DESTDIR="${D}" \
+ install-toolexeclibLTLIBRARIES || die
+ fi
+
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libstdc++-v3/po" DESTDIR="${D}" install || die
+ S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" install-info || die
+
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libquadmath || die
+ if use fortran; then
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libgfortran || die
+ fi
+ # TODO: what to do with USE objc++ and objc-gc ?
+ if use objc; then
+ S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libobjc || die
+ fi
+
+ # from toolchain.eclass yay
+ gcc_movelibs
+
+ dodir /etc/env.d/gcc
+ create_gcc_env_entry
+
+ # Setup the gcc_env_entry for hardened gcc 4 with minispecs
+ if want_minispecs ; then
+ copy_minispecs_gcc_specs
+ fi
+
+ # drop any .la, .a
+ find "${D}" -name *.a -delete
+ find "${D}" -name *.la -delete
+
+ # drop any include
+ rm "${D}${LIBPATH}"/include -rf
+ # drop specs as well, provided by sys-devel/gcc-${PV}:${SLOT}
+ # unfortunately, the spec shit above does create the env.d/
+ # file content...
+ rm "${D}${LIBPATH}"/{32/,}*.spec{s,} -rf
+ rm "${D}${LIBPATH}"/specs -rf
+
+ # Now do the fun stripping stuff
+ env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}"
+
+ cd "${S}"
+ if ! is_crosscompile; then
+ has noinfo ${FEATURES} \
+ && rm -r "${D}/${DATAPATH}"/info \
+ || prepinfo "${DATAPATH}"
+ fi
+
+ # use gid of 0 because some stupid ports don't have
+ # the group 'root' set to gid 0
+ chown -R root:0 "${D}"${LIBPATH}
+}
+
+## Do nothing!
+pkg_preinst() {
+ :
+}
+
+## Do (almost) nothing!
+pkg_postinst() {
+ # Sabayon specific bits to always force the latest gcc profile
+ local gcc_atom=$(best_version sys-devel/base-gcc)
+ local gcc_ver=
+ if [ -n "${gcc_atom}" ]; then
+ elog "Found latest base-gcc to be: ${gcc_atom}, forcing this profile"
+ gcc_ver=$(portageq metadata "${ROOT}" installed "${gcc_atom}" PV)
+ else
+ eerror "No sys-devel/base-gcc installed"
+ fi
+
+ if [ -n "${gcc_ver}" ]; then
+ local target="${CTARGET:${CHOST}}-${gcc_ver}"
+ local env_target="${ROOT}/etc/env.d/gcc/${target}"
+ [[ -e "${env_target}-vanilla" ]] && find_target="${target}-vanilla"
+
+ elog "Setting: ${target} GCC profile"
+ gcc-config "${target}"
+ else
+ eerror "No sys-devel/base-gcc version installed? Cannot set a proper GCC profile"
+ fi
+}
+
+## Do nothing!
+pkg_prerm() {
+ :
+}
+
+## Do nothing!
+pkg_postrm() {
+ :
+}
diff --git a/sys-devel/base-gcc/files/gcc-spec-env-r1.patch b/sys-devel/base-gcc/files/gcc-spec-env-r1.patch
new file mode 100644
index 00000000..a5892683
--- /dev/null
+++ b/sys-devel/base-gcc/files/gcc-spec-env-r1.patch
@@ -0,0 +1,87 @@
+2013-08-22 Magnus Granberg <zorry@gentoo.org>
+
+ * 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;