Gentoo Archives: gentoo-commits

From: Aric Belsito <lluixhi@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/musl:master commit in: sys-devel/gcc/files/4.9.4/, sys-devel/gcc/, sys-devel/gcc/files/6.3.0/, ...
Date: Mon, 26 Dec 2016 00:14:03
Message-Id: 1482711157.63cf5574539585efa0eb030239547774771cdf44.lluixhi@gentoo
1 commit: 63cf5574539585efa0eb030239547774771cdf44
2 Author: Aric Belsito <lluixhi <AT> gmail <DOT> com>
3 AuthorDate: Mon Dec 26 00:12:37 2016 +0000
4 Commit: Aric Belsito <lluixhi <AT> gmail <DOT> com>
5 CommitDate: Mon Dec 26 00:12:37 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=63cf5574
7
8 sys-devel/gcc: Add 5.4.0 and 6.3.0
9
10 Remove 6.1.0 (Upstream no longer supports it)
11
12 Use a backported 6.1.0 patchset in 5.4.0
13
14 Sync with upstream.
15
16 sys-devel/gcc/Manifest | 26 +-
17 sys-devel/gcc/files/4.9.4/boehm_gc.patch | 104 +++++
18 sys-devel/gcc/files/4.9.4/gthread.patch | 37 ++
19 sys-devel/gcc/files/4.9.4/posix_memalign.patch | 29 ++
20 sys-devel/gcc/files/5.4.0/cilkrts.patch | 46 +++
21 sys-devel/gcc/files/5.4.0/linker_path.patch | 213 +++++++++++
22 sys-devel/gcc/files/5.4.0/musl.patch | 502 +++++++++++++++++++++++++
23 sys-devel/gcc/files/5.4.0/ppc-secure_plt.patch | 59 +++
24 sys-devel/gcc/files/6.3.0/musl.patch | 63 ++++
25 sys-devel/gcc/files/fix_libtool_files.sh | 9 +-
26 sys-devel/gcc/files/gcc-5.4.0-pr68470.patch | 57 +++
27 sys-devel/gcc/files/gcc-6.1.0-musl-cpu.patch | 32 --
28 sys-devel/gcc/files/mkinfodir | 233 ------------
29 sys-devel/gcc/gcc-5.4.0.ebuild | 61 +++
30 sys-devel/gcc/gcc-6.1.0.ebuild | 44 ---
31 sys-devel/gcc/gcc-6.3.0.ebuild | 32 ++
32 sys-devel/gcc/metadata.xml | 11 +-
33 17 files changed, 1233 insertions(+), 325 deletions(-)
34
35 diff --git a/sys-devel/gcc/Manifest b/sys-devel/gcc/Manifest
36 index 8ab3bd7..ef57c6d 100644
37 --- a/sys-devel/gcc/Manifest
38 +++ b/sys-devel/gcc/Manifest
39 @@ -1,8 +1,16 @@
40 +AUX 4.9.4/boehm_gc.patch 4398 SHA256 9aaeb05dacefbca5fedd0a16850c00ad9fbf22ae4d0bd6e74fc8b81de27efe2f SHA512 8f201e6075e20b432c56ff5b610a79024b67335643a9c36426479f5b876d19d5f0e914ad38f3e68ff80243f560001c5245b2b6716285142d27cc7d8d719834ca WHIRLPOOL 5165c273e075ee74248250337b4d69b903d112370fa3c0c243cc8cfcb3103ea0e7c50e3495170454271fdf06b54d57e54a872abbc10e2e2f604b6307cc7b647d
41 +AUX 4.9.4/gthread.patch 1751 SHA256 9616018c2c4eb4a9b4d813ad7640c0017a82071e604ec4c095e84aa073aa58ee SHA512 cd04309f74b115aaf15c1a1ea53e5ed9549454fca3b4f68bf2f5077fc028c5a6fda90db21037fd7a9a9cedb8d636781d7ca23dc12afb536fcde9df060952ac16 WHIRLPOOL 161bff5293a58d376ee66c791626d84e461a1a7df28f08629178a4535cd5506ffd752bbca76d0283c31dc7cc864f245da630a262a6f9ebd6f62a72b797816907
42 +AUX 4.9.4/posix_memalign.patch 1155 SHA256 a8a340f44d3ae67832925b854c79d8d57ca3e63d860f84f2e45981fc6861c32e SHA512 7dec7a092320fcf770e137cfd501237cc76e72606d56d947081ed9c269e0e60756e6fc0b08a0af100987d4c5c021827ff0c157f4fddf1d46fc44fc8604e639a1 WHIRLPOOL c19901b9a5618774c5ba2578f3c3b2b8a214858e73cd474816c21f364a650f14e498b299a4d618ac45877363770771e021f9cb857aef3e83d1a8a7f4e264997e
43 +AUX 5.4.0/cilkrts.patch 1798 SHA256 a8d859d2be3b86f1fa14bd85ee10b3ef250ab24acc782b7a572c72204c04ccbe SHA512 1779793b90e8e8fb4532fc17d488e211a8c7c193d13c5ee99f5295ffa1e3516b07f4341fd6821e502602db470ae3ffd12eb2e9c07f4cbce796879616e39a2c1e WHIRLPOOL a5ef7b28c71150e8a8c817917aeb5710096c8c3b8b28dccc77a7a13585e6b73cf41d599938ac8c851d1ea179d00580ca828adaa02029eb122935e35b386a28b2
44 +AUX 5.4.0/linker_path.patch 9241 SHA256 e1c9479807a186ba1fd5cf4de2fa025fb72ae038b66721e2aa8eee45e9c741c6 SHA512 f5997d46772517f9538cabbfd01f78225301f6747a8106198c9fe0a591e53ed1c490bf89310848ae89135079928c8325880294c766d4983394b0eec0fcfd8046 WHIRLPOOL 4010e23e4cf306e29ba774788192261c74d1fee98dcdc1cc82d9267dd128345773c46db65224b42bcb161d32691e83467a0c8f7453d02123116486ad5f5f5ce6
45 +AUX 5.4.0/musl.patch 19066 SHA256 537dd351a7695fb6335cf943e5845578f325fb6fc8fbdf02a312ee7ef79c2a0d SHA512 56020b6759929053e0256150dbf5ba824fc0c1d4f574e1f4af066d6cdcb8199d8b8986008aaf46727454054091f7e9c4bd33bd2dd4e27c21a60fcbc4312103bc WHIRLPOOL 7ae62962e269e0032d3ed1446e876387d711bec310c2fbbfbec04e62e2f416ebe0486016d2520dd05157dd527af4eda05e886e63cd9b77817f4ed10639b33fa7
46 +AUX 5.4.0/ppc-secure_plt.patch 2161 SHA256 40649792d02e98717fb9a361004f332a98bebf77b5ad83b05678f13760337dd3 SHA512 4ba9780f4cbbe30afe9e40831f2ee57d9979ada093dc15511bef6ec69f97198034a8d07a8efa0884b66d904c7ad5b86a69b52a0ba41c3110680bf01d7b051388 WHIRLPOOL dedc5db47ef2b405a268b417a0323cf3c2f7b5956c1fdb5722f14628f32657f92b381a70c6412b940b0ed740037ee20cbedf8032ef093a62deba847249288975
47 +AUX 6.3.0/musl.patch 2559 SHA256 0d53a7b29f8ea6e337444e412cd07e80a620446eca0763edf1674e1544311acc SHA512 764437a1c86bf97598a93aaa1a41cf9252350bcb6bfa5d70140e56387b230287875c5e4cb361ff8eb8f8e2f7ae6af8f5667c3e090ee7d6331bc4fb5daac9f023 WHIRLPOOL 35ecf4c3fd7c81c24775663a578f1befb6866545372313a1d0e961605ff065538b1e5c267d3db9a7853a75ddec880750bd4ede76eb13f078e4a8f29001bf2cf2
48 AUX awk/fixlafiles.awk 7700 SHA256 5289279eb5df3dce696c56ce253980b9a9ae0968703f200970bbc24396a1ae62 SHA512 5ed208e116769741dda7274f15c5b3bdfd482cd926261038bc696644b73aa0d0e950d7fbfc0eb1a90529dd134fa548c46499a18c77470a05d87ae76bc1b3acd2 WHIRLPOOL 06826b65ffdbcc1c624ffed16104301bebc47f4b44358197fd7f0f78d0805a5228e346a8eaf5ee79355e1921878f94d3dd527d39e2975ea3b919140139d884e0
49 AUX awk/fixlafiles.awk-no_gcc_la 8480 SHA256 9697196d45cc47d3846021c0dfd0a24208a75b10d32c74cef53aa253031f2efb SHA512 7487115a3c4d6cf0edaf4b0ffeb87225d8fbcb7e595e2e99974582e0cce5868d7e292044db2631380c185553866554763eac4c3024347dbdb2cbf68679923294 WHIRLPOOL 24ac7f49bff29cc0abc5c4e502112e3dc2f42517244b8c9a4b8fdf73c9a31fcecdcc42989bbda8faa5feb54dde37c1d7374e1360a0c4de8c136b0523107c6ad4
50 AUX c89 412 SHA256 29ad5dd697135c2892067e780447894dc1cd071708157e46d21773ab99c5022c SHA512 71d33a147339d8d70a62aa22a95d3e70e445d8435d6ac05893f7da19ae851b89bea851f6ce213fbd22470f13572ae13b83cf02f0621333f07d7b0c68a79b7924 WHIRLPOOL d9707a2be8da7a709b54fcb1154cfa05e479f8c3bdd6173822ee1f1bc265b2a0d04741c0685bfb0db68e1e4297fb032d2f8ff94da88014575d947054474d8295
51 AUX c99 446 SHA256 057b348cf5be9b4fb9db99a4549f6433c89d21e5f91dc5e46b0b4dc6b70432f5 SHA512 bf3b0eb1125d5e89b433954fcbf805cd86dec5a6eeb23df685ebf3ff83a610573f2ffcec65d893244c845936a73918387cba026710c65c854b2c94a78b007989 WHIRLPOOL b888038b96615c7a0363555b407a3de2c1f17e34428fa16dfbf56fcf68875d6bcdecbc61b545d7f71842ff1909a3ffeff17165fa7f56b48f95adae22f5f8bff1
52 -AUX fix_libtool_files.sh 1570 SHA256 e6980432f080b596409ded003190aedf3242eb2582800291d0930473fb69825b SHA512 c661ba178272a080d62e565a92a3ffab4d832fba484435e0acb30a1be82c1db14bcb548f32b5143a6d72b021a70344c12a62d7246c59cd0d2db5de79dbcac82f WHIRLPOOL 90347250c55ea9a387b9f5d1cec28dd657d60cbeeca6fea1b8763e61ab6cabde512f206e087f9b41d5c2531ae5cf420e336b1babdc086ed001de3b41609a72cf
53 +AUX fix_libtool_files.sh 1528 SHA256 ed1fd90b31c2865fa78e24166f5523dfd8a79baa932ba9b2e1b34031dd17ac82 SHA512 c0698e7af969a701d7a2fa68cabb728d6271aeb7cca4d53bbb306906dc1b6a30a756ec01df2eae03712fd21865ff2779a0cd92e44c15774a812f935e7fb308ae WHIRLPOOL 5ffa5cbb84edc4e7ecac0bcb6a1d375a9a5ce0369a609f32d7136dccb08f2a82c9baaef8e360c3ccd5e2d3ae7e2bf62ad24ad258c3d16091aaa7cd0ad29f0fea
54 AUX gcc-4.7.3-musl-linker-path.patch 3097 SHA256 dbc140267f3ccaf7dce4dbb153920d90018c453ffbc531864cc73a2dc5f002a2 SHA512 2c33899aa8bb8a8b1ad974c3da9039984aa52fe2d2f52d0f6ddf3aa6386419ee32907f40f60db552abcd0e1dee04cae91a029e37fe531938614f9c66e9518cd7 WHIRLPOOL d4f8a1a6abb083566d4ceb5deed31c2c35bd06f4b786ecd365d19606413c5e7f8579fac05a990a12157a139c243286ebcb7c61108ed69ae6477ef20f579cec86
55 AUX gcc-4.7.3-powerpc-libc-stack-end.patch 5374 SHA256 880028136d6a3352e74664d0fccda293fe078a5adb58ddb84cbf4d301aee01c7 SHA512 c66b561cb8db68f86b9c001625fb5599db268e576ac163eb47226976e81dc97b3d4ad3cd9f9b0ef44cac0ca9d353be3ae4709e75ed319ff08175ff4e1b1aa174 WHIRLPOOL c7ae1a535410ca5c7d5a8e3b2f8f2bcaeaceaf1cc9c20b3426efd09422b3a957cca7527842f720655a94b5bc8c82642eef0d693003071bd7f80a381d58be848b
56 AUX gcc-4.7.4-secure-plt.patch 1915 SHA256 668c57298064abf6d58857126cdbcefab6d3117726198185ca4f24855c3f7180 SHA512 0e23385b9e654acc296e5b3f333b5859174dea852f38bc5acb182ce15d6ac568dc588c69407b066dc0b91ffb48a1f1c0d8d25720d3ab268da8a56d1c6c40492a WHIRLPOOL 9e061026ea0f87416ea0cd39dc64c074d79001f26d513ec2a6777b42caf47b6bf250bedebcace52c351cf95710318012039da58fdc7d2ef59e51fffc445e3edf
57 @@ -16,12 +24,11 @@ AUX gcc-4.9.3-musl-res_state.patch 699 SHA256 822990f5075b65dc2d1c03722daa5a2153
58 AUX gcc-4.9.3-pr68470.patch 2053 SHA256 9ca76f063735fb87ee01aa9321f714a04db2dd394381c5a659f7081eec9b45e3 SHA512 5950b4782034add9ded16ab4b6d7b2d5e2bbda1a3ae7f465d50c6a95469359d287126c1a57ac9d8c6ea2c61d7b18ff880b2ac2b25eec48f038452f87f0e24393 WHIRLPOOL f216b046bfe55003af384b573ca0be977d310064f31fb9d8cc15badd6e4b4922b761004c02b44fe04460ece1f82d55eb5c35f09c006015b97cb7968347877dcf
59 AUX gcc-4.9.3-secure-plt.patch 1478 SHA256 b9435e19c3193e872bfdce8f635755655cf6e88889c57d21c7afa118d7068e95 SHA512 95f04716bad41fe3f290d44d21d1dad35548b801b56de331acac8bdf56019583a04681418a805a0b4dbfe19e9b51cecceff984cea257be58d3e7780c6cfc58a5 WHIRLPOOL 8af1f0cfaf0e8197754d841d1cd2b25615968cc503344574cd9ec6b644804e029687a4ded18f6e1efd584c8c99277eceb6f1012c6519a2747bddc400d8909c1e
60 AUX gcc-4.9.3-tree-vect-data-refs-correctness.patch 315 SHA256 904ae5ce2ecd5a2f7786c54d148a7562d0bb6f51fe60761038c2f57b8cf70356 SHA512 88d93c061ef72035522270ab60c8c2ec04e2fa2d69763f45b9eab0c37b19c23920484358d7556ad885775071ac04cf94684a2cd8ed93418d5f0c54ac3a045c9d WHIRLPOOL 2b9c281401abc111d53467c51b6238c6f4c430a73d8833f161766f973138ffe3b4fa1ffe5cc5813b5e2f8a81dee2cdcaaff2b9a8f8e13089f993f3ab3d69ccbd
61 -AUX gcc-6.1.0-musl-cpu.patch 1277 SHA256 6c7a28ccc5edc226fc6f3f6b9b0562fb873a9c88dfb25b608b5acd827f239c08 SHA512 b11c5933c02dda63b40273f6cee394d52c68265931817cfeea3645e971b9c822cc841242a7c74fcd07729171bc0723c2af0db21743bf92dd3dba3430ee6627a1 WHIRLPOOL e0f6068a8028052f88cef840026baa459ae77a43d9144258fe7739a80b5dade852a2aa640feb5bce51dd54d6d35e0c8df99a8c9bdc140f9ae473f16ffb2e9af7
62 +AUX gcc-5.4.0-pr68470.patch 2012 SHA256 f8949e1d35bf7bba80aec50bdcd5d6b008f731679b06f3d89e6d8a4eb98e492e SHA512 dea9ab12a37b88308424af2882b4755366745c204cd74e6892374d4aeb0981487f9fa1d44ab4d4e6184c83547c3ea30ed731719fa074bea62bdf8bfcf1dfbca0 WHIRLPOOL 2f66cd0d2dcaf237fd730eefe6f477970db14c237a8309925f799984a010f5470f6fc0f6a735316c7eab4de9dc958d773a4ffa14eea7093158690e9ff8f1847e
63 AUX gcc-configure-LANG.patch 2052 SHA256 63de6d2dcfe14f21d147abeb1390405b9220c03f8e968f482d4b4c1cf279c88b SHA512 a694c7ac2f45cc657097ff5b0cf1356ac88a9c06035c9ba15167e9d444844d0d8a478eb1b9b62195dd063774f79697b9148b9cdb6c261640b472c291061b2129 WHIRLPOOL 3cc1ec912fb192ff1058de5b93e49a994ba30d1501a932290dd5b3df1cd783875621cda56edeb41894cd5fa10c04917e693a40a60be8d742ddd7992bf5d8afeb
64 AUX gcc-configure-texinfo.patch 337 SHA256 74b73a7ecec2d88889876b4db480cd173632f49d5396bb8e5b3c93673f9b5b98 SHA512 a15fba8bf2ff02bdeca54d6f186bfa08c1079c6a8ba0a3beef154483ce5c1b8c497e7ffeec32371968f0037e0ff8384609eb0c367d0155a4e5a7eef8aad084d5 WHIRLPOOL 39d008aad06f7621e4e5db15f5e85a59e583b43f8d247029bd4944466bb60a9795bda157d185c45c329294078e282703a243aad5c468d90c77665dd6336870d4
65 AUX gcc-spec-env-r1.patch 3148 SHA256 da0a6442eb42bce58cbdc7858b110a2e65fc5bd5b4b780b9b491033de6e302fa SHA512 ecae71577543772cfe1711f1b4a8815c0b5d706ebd01edacd1f07586637d4805e25771f970a6e6d1bb696d4b1b5ef3e0036088a96a9f6beff7ddaee704175d16 WHIRLPOOL 3535605998eabccdee71ba396ed5cefbb8b0a8cb073101f6444c7d01233f3b3904c1b29f4daf0a3417c68de8dbd62a0b7dc367cacfcbfa0c4ee1b69b7df8c6fb
66 AUX gcc-spec-env.patch 1544 SHA256 64b01f29fb853fee5ecda998b66eeaa7ec86ff1fc3b21432bfd69eb543c93e6a SHA512 ce9c1f923e2c6d17347ec2d3d8482351a9644194b2753627389294d43bb4f11b9c2ef41eda1b46ad83d09901a0bedebd5b6b8a57a198646030ab61e8d2d8cb48 WHIRLPOOL b88c9c18e20868b3ff535c3390408ebe8f1304bcec6e70b6472781f684671265860dff4335f2301d3b4d3b73395283b29673f0f5da62414e1094cfcb8130e8d8
67 -AUX mkinfodir 7324 SHA256 0565353e767e253207adb8b5c9be9ba215a628447e075a4dc7bb3183ed099d2a SHA512 a05f9130d98e4cb4d3254b757de06d772d0a965ac4b5a9a15082b1cb694a2fd32c9c8f550745a9423ba3cfdd1c5e87b6d568a809301772a24cc6e1a414d5f98b WHIRLPOOL 4001ae3f7fb666a84e12432a1a41eacf62ebf922181c279e4d06dad32e44d0b499d13e098e794fdd19a9cff5c438a28e5e9e125fb78e72bb913fa5ddd8e44bae
68 AUX musl-gcc-patches-4.9.3/aarch64.diff 447 SHA256 73acdb1aaec6874236ae23a3283c55ed7675f32d5561f583bab9315b3c85dab7 SHA512 748de2e03e7974b89e0201f1908b3825192ac8d7a2fbe7f5390cb663cee22aa3776162e30e6abd8d7203ad772d2186ff67adf20e9618a1bdda2f25a671cfe4af WHIRLPOOL 50f548b344c33bfbc186fbbd1b385cbbd2651cad07bc531f387b109db736a9f2a293614697aaee6e98a3c21f0a709c9d93b1e4f50c56cca138775514892f354f
69 AUX musl-gcc-patches-4.9.3/arm.diff 1682 SHA256 872312775232ae0e35a94631f67a3163db4e0767206a103ad42edf6b4ca1ed84 SHA512 743f5118c2bc083214cea40f24e641ec31354cafe792c5244a2a8305eafabb88efe03a55c275d69c93073a4dd9cfff82d81ab68bea6faa2da326dbba0644063c WHIRLPOOL a94b6249d24a3e15f7bb450f9405ca6e8f2ae9f2135f2df494454168b8cb6d4a3ba644f9d1014aecc0c8c1db418671ef5e48eb2c942307911a975f376167b05c
70 AUX musl-gcc-patches-4.9.3/gcc-autoconf-musl.diff 2361 SHA256 0b49f18b67a91d809d26b2dab187ae196000549d3837382cf6f70ef605360fcd SHA512 0b7351361a947448e4aa3d022e317523c8cce3f69691e78fae5fb6941d410622d44fb3ade9d8a0ee06fa2212e9fc0abf2b86470592e92dca41d312bf320c07c6 WHIRLPOOL 45dcf5bf5c8a40b7fb1e83d54b4731d834c6fde59a7d6613b7af26e6a8c6ff15b302f9f2f786a0de42a30b34f2271c5c99634a0fecc55118e5513bd199d50559
71 @@ -57,8 +64,12 @@ DIST gcc-4.9.4-patches-1.0.tar.bz2 22266 SHA256 1a394abb77c75e2212896ad3a62ae1f6
72 DIST gcc-4.9.4-piepatches-v0.6.4.tar.bz2 14414 SHA256 c67b56f04c653e6a19e36abed8391f8b6bed426bfcfc907237cc37f02dbb5015 SHA512 243fa272ea0e49f700a76508bab3e03bbb353bcb930581b2f87f9a47df5cd3880e29f20b71612b21190adc463849e1e6ac2a38a49c0002b562d93d436f538285 WHIRLPOOL 1e5959441210af6f690398efab96444ab11d136238a9428912e8441eaf0509fe6db359a8aca92a446fce0c75777385475af73b20165a8593f9969e3a25fd0b0f
73 DIST gcc-4.9.4-uclibc-patches-1.0.tar.bz2 2618 SHA256 95f290d0b68114d835515afc424d6096476a45665671784aa71a7a506296e465 SHA512 5a1f44caa9261f4947101379628143869b31dec67fa28605e8e1f3894d4b7120c3f68ba6deb59da7a74fa906e27ab32cd3767761837dc3dfebc37865d349d6db WHIRLPOOL e46b08737cfdc235bfb80117e0389f3969167adf59bcba2a0a1094a20eab2b62f0c952dac44781e43957cb1507cd4e80f37bd8aecbc55dbda6382d93b3a4cf94
74 DIST gcc-4.9.4.tar.bz2 90097606 SHA256 6c11d292cd01b294f9f84c9a59c230d80e9e4a47e5c6355f046bb36d4f358092 SHA512 93abb78e16277454f41a8e9810f41f66c0fdffdc539a762ff6b67d3037f78db971378683fd2ebf707d1d51c059fad2161fe42d110c330027f40214b7db0f3efe WHIRLPOOL e20045126c21a3edea1fa4a2185ec2bc5feec77ddf967ab9d1e8c33322ad4eafe013bfcaab1ed4e35971d3b70ef373ea3585ebb089c9bbf91bbfca1f1da71236
75 -DIST gcc-6.1.0-patches-1.0.tar.bz2 4193 SHA256 48882d00b3327fe6578e421d4d90d5f03c22fe30ee80542fc828432ba505dc77 SHA512 ff3fc21bdbc5391058759d7e61e9636665d0cbeb3f3fdb724e1bd09e4d6ae778f7c836e59e8b21540458bde99b503428b190736d3ee7a3764f56ddc1da754d39 WHIRLPOOL 4b648a92aadbdb4bf72652ba83cdd8352ef992449b089311c8e20760317dc0fd008dcc2f797880c869dd1b79cf1162943a323681954dea490f09e7682f28b3cb
76 -DIST gcc-6.1.0.tar.bz2 99267556 SHA256 09c4c85cabebb971b1de732a0219609f93fc0af5f86f6e437fd8d7f832f1a351 SHA512 eeed3e2018b8c012aabce419e8d718fde701e5c3c179b4486c61ba46e5736eecc8fccdd18b01fcd973a42c6ad3116dbbe2ee247fe3757d622d373f93ebaf8d2e WHIRLPOOL fa11fca6c85a31f7c896f0ded40a9208a8588c2b3fddd2cca51f440c712ff83374528b7d1571f8d98dad96e24cb5b14b6af624ef42aff2a85ae99e8621c9b479
77 +DIST gcc-5.4.0-patches-1.0.tar.bz2 28227 SHA256 ff600369f150129754108322338c3f4f0064d222843a2d82778537f94a22ecbb SHA512 70cd83b142abaa3c22d67d5d58185da2cfa178737ec963e230cc03ea8dc6dc757665c711fae91af4cd91062d3136c6f31a5ee3c4c7440ed9485c6f3632731940 WHIRLPOOL 84a69d2dde582fd486f6c60f78ce9f8c7cc5b480c2989cc1804617eb6526a4a17d20d2ed010bd9fc78019d69caa665428970234090b21f9d4b97217011d4fcd6
78 +DIST gcc-5.4.0-piepatches-v0.6.5.tar.bz2 14551 SHA256 495eb9110244dac17408cd0eb6977a593577eeb0437e72b60339b8ec394f2fb0 SHA512 4890f0713d261982ab81a20f93c5f65193aa1dfa171e3f9e5867f0b80ec7c1e76c5a997b1a4e6f47f8ce36af54ac91125c5bff8bf6d971b7d77c65a57a40a3c0 WHIRLPOOL 13b74b1ca75cc94f9624fe1b52221a953962c918c2cb932302a3078b6deba4f3e501647ad8a2915edef6301e64c820ed612a6fbb9e1178cf1711fe0045686969
79 +DIST gcc-5.4.0-uclibc-patches-1.0.tar.bz2 3731 SHA256 a3145faa6c81c0753ba754b735834c38987c356dadaa7c4a625c738e374604b5 SHA512 009f34197e79c5e8c6497a0db01ac45cc657e92e56a663b4f3281661d108b2a129cd977fab5f0064f225d6812ae91e82bab22a2b10ae02c486881eeed85ec7a3 WHIRLPOOL a3598ce0aad7e9110db156005190739abc5b4ceea3c327cb9c747c4cf1b99589c1a9fac170aea346eae030b09ee563f9f990e031ad7dfa1aa19b895898bf2608
80 +DIST gcc-5.4.0.tar.bz2 95661481 SHA256 608df76dec2d34de6558249d8af4cbee21eceddbcb580d666f7a5a583ca3303a SHA512 2941cc950c8f2409a314df497631f9b0266211aa74746c1839c46e04f1c7c299afe2528d1ef16ea39def408a644ba48f97519ec7a7dd37d260c3e9423514265b WHIRLPOOL ec81c8143e48bc8d9d0bbdc0fa3ca553c805193f53ac46c86127b54565894780dd97281485e396a130567464c753f043458c8e450018c957813f50ff90a40708
81 +DIST gcc-6.3.0-patches-1.0.tar.bz2 7596 SHA256 6c880468ffa4ad2b324fd18c762dbdf10646089c8ab865c228e166f99a0e049c SHA512 8fc96086bd3da3726687ee9d180d3b5d0a7d5814141d44eac8eb01566a783ec780c8fb8f55f75d6e9c9006b2e407e20cdb5835d541b0b66a47dd60642861734c WHIRLPOOL b1bce94d6134db6c9aff4298c6c7af003e39d0411aa40cd027d2c7d6a256971c81fb557e85b25f1107e9a474cb7d772c3bc62a7a4ab7ff7fca5eeae5b2ca0c94
82 +DIST gcc-6.3.0.tar.bz2 99903185 SHA256 f06ae7f3f790fbf0f018f6d40e844451e6bc3b7bc96e128e63b09825c1f8b29f SHA512 234dd9b1bdc9a9c6e352216a7ef4ccadc6c07f156006a59759c5e0e6a69f0abcdc14630eff11e3826dd6ba5933a8faa43043f3d1d62df6bd5ab1e82862f9bf78 WHIRLPOOL e79a2d6ad199396b6efd835c1129d049a367174ea33dd3b6247d72461f117c2dd81e5a66f3dd6427ce500e768d3a4453efd0debcb56966d00c7df79d05d54b7d
83 EBUILD gcc-4.7.4-r99.ebuild 2071 SHA256 67b45e6941cd3d7b4b075884295da5ed7cae18f4a0ab4630ac8e64cda70c3aab SHA512 383a1986e74a1ef333a666f298200d7ab9423f30c25da9cf460986fe5bf95f6c43ecf829f90313076108508b2f64f06e188dda8fec9f014f861adca27d876e9b WHIRLPOOL 9dbe06a64f35a0d5f12a968274152e95cf332b87c9e8b689d70a99db6a93a097960604c363dc608932c96250cd634ce65dc544368b4e361ed5bfef535243f3c7
84 EBUILD gcc-4.8.5-r99.ebuild 2139 SHA256 0b762e2fb8c2bf92488b598c01977b07a3786afe77ce3fe81d4fa7310699567c SHA512 7a5efbefe0a518677d5b7c6552621377cb332a1e91ee57ded0c5095c06a7a5dc1c63c29f726c3cab29aaa12d908e90e6bb30b3e03b70c259b76ec0ed1534de1d WHIRLPOOL d8c2baec3deb6ba4875c9acb3b15ba1ee757744fce41847b7120b76671699ed92204910c7bbb9063f6d6d049b89d54b7e9d34e4e6d210f075994cc00e3c73850
85 EBUILD gcc-4.8.5-r999.ebuild 2185 SHA256 7b8b261c0d3ea2e34a2f099b4f0a23a5bfd61e814dead44aeb4e45071be2c3f1 SHA512 e8f6e8bba4fd7818c30a555adcf25acbe818919c98204f91e27be04566aa267b9394547045e05e5486437853ceb1b75229d86089f69409a626a9e81e363c12db WHIRLPOOL 872e4f0e40e2b9a0a51002c64e682eca1990c2b968c8917b9a1a7c309075a048ceffd7925bf7f67cb3f304badbf29ee5e94772f5a86503e1e5e42fa7682fb87e
86 @@ -66,5 +77,6 @@ EBUILD gcc-4.9.3-r99.ebuild 2195 SHA256 3f5be66ffc6fb064e14a24cb9005d1835685573f
87 EBUILD gcc-4.9.3-r999.ebuild 1794 SHA256 514b9f6cddb5e6a43c53f866aa501812319bfccf7fb7713316563d55cb139aff SHA512 c7f4aad21658d6acb99f14b3b51707a74387206b9fc3629d962c755a7eb8a963b3df844ba60172305fc2e753fc7178d4723f02a487aeae643c85ff00062b4bd3 WHIRLPOOL c6372f1014c5b8d22023f04b7223db4ae5d898f450f3d5cf286ccd82553f916978fba8d0910dc72fd5cdd1d92ecce9749597b09e252a58ff898d3616221af685
88 EBUILD gcc-4.9.4-r100.ebuild 2320 SHA256 62a7b580317230c294b8103b2acbfb5ca49afdaf1fd6f2fedbb778a02be65d13 SHA512 fcbc99e45c09a77a4869328df5136c9530297ea810baad10d28faaaab5ec15dcde2b105fe3b30a5190b86740b7bd962a302d9b4c8e65551f226fb2fd00eb4c2e WHIRLPOOL 6b73fa54aa7edc1e44a2b1bbb76f13e8135a21301a7203343e226b2112437749e12f5503a71f3cacc221ebda2d99c8db45b882d1cd014b8731acf3433f5c7c7b
89 EBUILD gcc-4.9.4-r99.ebuild 2268 SHA256 fdb60343669f5a03820920f9ee06d54e42def02475613f3c0221e4234f7cfcc6 SHA512 3b8df38d0600b5e006293e69265f3e9603dab01e40ba5391fc8e517d185388c3fcbcff571a7babb729e19a86ea37fca5b45f800fbf856c4d2c01d3506c5c32b5 WHIRLPOOL 2ae8860e5106d4e4b3680a7a885bdb80e5c5381e9cd608a6f55f6fcb69c9407b675ea2d18a2e8960be4408dea35228c5bc80f14d27a68e1d53f2e4fbfefed0fd
90 -EBUILD gcc-6.1.0.ebuild 1076 SHA256 6d5acd2030e949af48922a3da83541c0720037212c71c1867e5de8373e8bc0b0 SHA512 7f4c657c930a7cb0cfdd34ff8fa811eb2e62834ed0ec094db6bbc5123ea8c86b72df1cf32d6660c0ef2dc3863276081665b95af0a1c47a1ba14802a5559e776d WHIRLPOOL 73f9a4277585013050291df58b6d0c7db7fa65baed51c0a1b9462c212281de9d98d50c63be9d703fd45efb61e596fb74861aa41e17f4ac1917adb4f44961c18a
91 -MISC metadata.xml 2039 SHA256 b200834baf1ac8adf966540ee7e50dbf1397248f08eeff35a8bde6bb16dbcc50 SHA512 b8fe281c88017b4d5d2ac05ea4e074d740b3943bc0d4cd361ec4f161f2549fb6401a2fa7881c06a4eae33ffd9755b6ebc4fa608654ec04838bff49ff22ee74a8 WHIRLPOOL e063f7657a00a1e675a57000fed2fac1c05e986488f3a705c95909ac7a2e74ca8f97c6fb8bfffdb81388a967228a78adbcfa93b166d4095aade5875aaf350fa0
92 +EBUILD gcc-5.4.0.ebuild 1902 SHA256 bf257d5a8b62951d0aec2b99e23cd6c06ac592ac051f9ee919ddf0b2a5974d90 SHA512 3e8fda17cba283674080d20d2310680a0a9732961eff4bd16bcd17432791c843cd237a08945f93ff3c1d0fea23acb92413eab0f278de97520493f8c8342e34f5 WHIRLPOOL 328a3e6043fc8ff972a4a15e51161d7c95b2308de1e709720d40ed115f848c6087a298bfa0be73df7465633f0cbbbd0f958548180b8baaaa6024fb03f10c2993
93 +EBUILD gcc-6.3.0.ebuild 793 SHA256 9136dfbecb7e14e89c0ff081f567dfadab5a5ffc414720d1757fe31c6f2b829e SHA512 64be9f178c98322baaf829b93e5721c6392d5350c10137f00fbee243c653e71ae859f24f773ce24fe9daafe0e975aa22c608b352dbe41853b172c5810f8d0dec WHIRLPOOL 65fece4b2e805e0016f7f5acab64cd223e14f11b04eee996b1181d00bb7493d370e44a465a0021224399cf848f922fd05c3e66190f4e124728db7c650f2026a0
94 +MISC metadata.xml 2442 SHA256 6937e475cde4e13feee8cbe7ff2913a6a5f865bf0bdb5b01fae7e962b3a0af54 SHA512 0215827852bdb43aa26d8bf0e9d9adc6453b98da48c7db78fc48bb96e707e207356db9f4c221104964e5ae3100767dc99db324f45f08f0dba020ea9e38b84d4f WHIRLPOOL 4f9efa23af2765ce3a9965f1d2280d06688959aca037c90ccab06913199612d8854fea2f160547f79a793c990699da9c586e13bbc364a2f1084a9c2a7744af79
95
96 diff --git a/sys-devel/gcc/files/4.9.4/boehm_gc.patch b/sys-devel/gcc/files/4.9.4/boehm_gc.patch
97 new file mode 100644
98 index 0000000..75b921a
99 --- /dev/null
100 +++ b/sys-devel/gcc/files/4.9.4/boehm_gc.patch
101 @@ -0,0 +1,104 @@
102 +diff -Naur gcc-4.9.4.orig/boehm-gc/dyn_load.c gcc-4.9.4/boehm-gc/dyn_load.c
103 +--- gcc-4.9.4.orig/boehm-gc/dyn_load.c 2012-11-04 14:56:02.000000000 -0800
104 ++++ gcc-4.9.4/boehm-gc/dyn_load.c 2016-12-25 13:22:28.000677992 -0800
105 +@@ -459,10 +459,7 @@
106 + /* For glibc 2.2.4+. Unfortunately, it doesn't work for older */
107 + /* versions. Thanks to Jakub Jelinek for most of the code. */
108 +
109 +-# if (defined(LINUX) || defined (__GLIBC__)) /* Are others OK here, too? */ \
110 +- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
111 +- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
112 +-
113 ++#if defined(LINUX)
114 + /* We have the header files for a glibc that includes dl_iterate_phdr. */
115 + /* It may still not be available in the library on the target system. */
116 + /* Thus we also treat it as a weak symbol. */
117 +diff -Naur gcc-4.9.4.orig/boehm-gc/include/private/gcconfig.h gcc-4.9.4/boehm-gc/include/private/gcconfig.h
118 +--- gcc-4.9.4.orig/boehm-gc/include/private/gcconfig.h 2013-12-21 12:42:39.000000000 -0800
119 ++++ gcc-4.9.4/boehm-gc/include/private/gcconfig.h 2016-12-25 13:22:28.001678000 -0800
120 +@@ -696,9 +696,7 @@
121 + # ifdef __ELF__
122 + # define DYNAMIC_LOADING
123 + # include <features.h>
124 +-# if defined(__GLIBC__)&& __GLIBC__>=2
125 +-# define SEARCH_FOR_DATA_START
126 +-# else /* !GLIBC2 */
127 ++# if defined(__GLIBC__) && __GLIBC__ < 2
128 + extern char **__environ;
129 + # define DATASTART ((ptr_t)(&__environ))
130 + /* hideous kludge: __environ is the first */
131 +@@ -709,6 +707,8 @@
132 + /* would include .rodata, which may */
133 + /* contain large read-only data tables */
134 + /* that we'd rather not scan. */
135 ++# else
136 ++# define SEARCH_FOR_DATA_START
137 + # endif /* !GLIBC2 */
138 + extern int _end[];
139 + # define DATAEND (_end)
140 +@@ -1167,9 +1167,7 @@
141 + # define DATASTART ((ptr_t)((((word) (_etext)) + 0xfff) & ~0xfff))
142 + # endif
143 + # include <features.h>
144 +-# if defined(__GLIBC__) && __GLIBC__ >= 2
145 +-# define SEARCH_FOR_DATA_START
146 +-# else
147 ++# if defined(__GLIBC__) && __GLIBC__ < 2
148 + extern char **__environ;
149 + # define DATASTART ((ptr_t)(&__environ))
150 + /* hideous kludge: __environ is the first */
151 +@@ -1180,6 +1178,8 @@
152 + /* would include .rodata, which may */
153 + /* contain large read-only data tables */
154 + /* that we'd rather not scan. */
155 ++# else
156 ++# define SEARCH_FOR_DATA_START
157 + # endif
158 + extern int _end[];
159 + # define DATAEND (_end)
160 +@@ -1387,10 +1387,10 @@
161 + # define HBLKSIZE 4096
162 + # endif
163 + # define USE_GENERIC_PUSH_REGS
164 +-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2 || __GLIBC__ > 2
165 +-# define LINUX_STACKBOTTOM
166 +-# else
167 ++# if __GLIBC__ == 2 && __GLIBC_MINOR__ < 2 || __GLIBC__ < 2
168 + # define STACKBOTTOM 0x80000000
169 ++# else
170 ++# define LINUX_STACKBOTTOM
171 + # endif
172 + # endif /* Linux */
173 + # ifdef EWS4800
174 +@@ -1904,9 +1904,7 @@
175 + # ifdef __ELF__
176 + # define DYNAMIC_LOADING
177 + # include <features.h>
178 +-# if defined(__GLIBC__) && __GLIBC__ >= 2
179 +-# define SEARCH_FOR_DATA_START
180 +-# else
181 ++# if defined(__GLIBC__) && __GLIBC__ < 2
182 + extern char **__environ;
183 + # define DATASTART ((ptr_t)(&__environ))
184 + /* hideous kludge: __environ is the first */
185 +@@ -1917,6 +1915,8 @@
186 + /* would include .rodata, which may */
187 + /* contain large read-only data tables */
188 + /* that we'd rather not scan. */
189 ++# else
190 ++# define SEARCH_FOR_DATA_START
191 + # endif
192 + extern int _end[];
193 + # define DATAEND (_end)
194 +diff -Naur gcc-4.9.4.orig/boehm-gc/os_dep.c gcc-4.9.4/boehm-gc/os_dep.c
195 +--- gcc-4.9.4.orig/boehm-gc/os_dep.c 2013-03-06 07:08:58.000000000 -0800
196 ++++ gcc-4.9.4/boehm-gc/os_dep.c 2016-12-25 13:22:28.002678009 -0800
197 +@@ -26,7 +26,7 @@
198 + # define __KERNEL__
199 + # include <asm/signal.h>
200 + # undef __KERNEL__
201 +-# else
202 ++# elif defined(__GLIBC__)
203 + /* Kernels prior to 2.1.1 defined struct sigcontext_struct instead of */
204 + /* struct sigcontext. libc6 (glibc2) uses "struct sigcontext" in */
205 + /* prototypes, so we have to include the top-level sigcontext.h to */
206
207 diff --git a/sys-devel/gcc/files/4.9.4/gthread.patch b/sys-devel/gcc/files/4.9.4/gthread.patch
208 new file mode 100644
209 index 0000000..48aeff1
210 --- /dev/null
211 +++ b/sys-devel/gcc/files/4.9.4/gthread.patch
212 @@ -0,0 +1,37 @@
213 +diff -Naur gcc-4.9.4.orig/libgfortran/acinclude.m4 gcc-4.9.4/libgfortran/acinclude.m4
214 +--- gcc-4.9.4.orig/libgfortran/acinclude.m4 2016-12-24 16:16:53.481696091 -0800
215 ++++ gcc-4.9.4/libgfortran/acinclude.m4 2016-12-24 16:42:52.045622116 -0800
216 +@@ -100,7 +100,7 @@
217 + [Define to 1 if the target supports #pragma weak])
218 + fi
219 + case "$host" in
220 +- *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* )
221 ++ *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* )
222 + AC_DEFINE(GTHREAD_USE_WEAK, 0,
223 + [Define to 0 if the target shouldn't use #pragma weak])
224 + ;;
225 +diff -Naur gcc-4.9.4.orig/libgfortran/configure gcc-4.9.4/libgfortran/configure
226 +--- gcc-4.9.4.orig/libgfortran/configure 2016-12-24 16:16:53.557696818 -0800
227 ++++ gcc-4.9.4/libgfortran/configure 2016-12-24 16:43:06.557762874 -0800
228 +@@ -26355,7 +26355,7 @@
229 +
230 + fi
231 + case "$host" in
232 +- *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* )
233 ++ *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* )
234 +
235 + $as_echo "#define GTHREAD_USE_WEAK 0" >>confdefs.h
236 +
237 +diff -Naur gcc-4.9.4.orig/libstdc++-v3/config/os/generic/os_defines.h gcc-4.9.4/libstdc++-v3/config/os/generic/os_defines.h
238 +--- gcc-4.9.4.orig/libstdc++-v3/config/os/generic/os_defines.h 2016-12-24 16:16:55.523715643 -0800
239 ++++ gcc-4.9.4/libstdc++-v3/config/os/generic/os_defines.h 2016-12-24 16:44:10.273380874 -0800
240 +@@ -33,4 +33,9 @@
241 + // System-specific #define, typedefs, corrections, etc, go here. This
242 + // file will come before all others.
243 +
244 ++// Disable the weak reference logic in gthr.h for os/generic because it
245 ++// is broken on every platform unless there is implementation specific
246 ++// workaround in gthr-posix.h and at link-time for static linking.
247 ++#define _GLIBCXX_GTHREAD_USE_WEAK 0
248 ++
249 + #endif
250
251 diff --git a/sys-devel/gcc/files/4.9.4/posix_memalign.patch b/sys-devel/gcc/files/4.9.4/posix_memalign.patch
252 new file mode 100644
253 index 0000000..716aad4
254 --- /dev/null
255 +++ b/sys-devel/gcc/files/4.9.4/posix_memalign.patch
256 @@ -0,0 +1,29 @@
257 +diff -Naur gcc-4.9.4.orig/gcc/config/i386/pmm_malloc.h gcc-4.9.4/gcc/config/i386/pmm_malloc.h
258 +--- gcc-4.9.4.orig/gcc/config/i386/pmm_malloc.h 2016-12-24 16:17:07.001825547 -0800
259 ++++ gcc-4.9.4/gcc/config/i386/pmm_malloc.h 2016-12-24 16:20:25.242723710 -0800
260 +@@ -27,12 +27,13 @@
261 + #include <stdlib.h>
262 +
263 + /* We can't depend on <stdlib.h> since the prototype of posix_memalign
264 +- may not be visible. */
265 ++ may not be visible and we can't pollute the namespace either. */
266 + #ifndef __cplusplus
267 +-extern int posix_memalign (void **, size_t, size_t);
268 ++extern int __gcc_posix_memalign (void **, size_t, size_t)
269 + #else
270 +-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
271 ++extern "C" int __gcc_posix_memalign (void **, size_t, size_t) throw ()
272 + #endif
273 ++__asm__("posix_memalign");
274 +
275 + static __inline void *
276 + _mm_malloc (size_t size, size_t alignment)
277 +@@ -42,7 +43,7 @@
278 + return malloc (size);
279 + if (alignment == 2 || (sizeof (void *) == 8 && alignment == 4))
280 + alignment = sizeof (void *);
281 +- if (posix_memalign (&ptr, alignment, size) == 0)
282 ++ if (__gcc_posix_memalign (&ptr, alignment, size) == 0)
283 + return ptr;
284 + else
285 + return NULL;
286
287 diff --git a/sys-devel/gcc/files/5.4.0/cilkrts.patch b/sys-devel/gcc/files/5.4.0/cilkrts.patch
288 new file mode 100644
289 index 0000000..8fed5c2
290 --- /dev/null
291 +++ b/sys-devel/gcc/files/5.4.0/cilkrts.patch
292 @@ -0,0 +1,46 @@
293 +diff -Naur gcc-5.4.0.orig/libcilkrts/runtime/os-unix.c gcc-5.4.0/libcilkrts/runtime/os-unix.c
294 +--- gcc-5.4.0.orig/libcilkrts/runtime/os-unix.c 2014-05-21 04:08:58.000000000 -0700
295 ++++ gcc-5.4.0/libcilkrts/runtime/os-unix.c 2016-12-24 15:35:14.225647627 -0800
296 +@@ -51,6 +51,7 @@
297 + #if defined __linux__
298 + # include <sys/sysinfo.h>
299 + # include <sys/syscall.h>
300 ++# include <sched.h>
301 + #elif defined __APPLE__
302 + # include <sys/sysctl.h>
303 + // Uses sysconf(_SC_NPROCESSORS_ONLN) in verbose output
304 +@@ -400,28 +401,19 @@
305 +
306 + COMMON_SYSDEP void __cilkrts_yield(void)
307 + {
308 +-#if __APPLE__ || __FreeBSD__ || __VXWORKS__
309 +- // On MacOS, call sched_yield to yield quantum. I'm not sure why we
310 +- // don't do this on Linux also.
311 +- sched_yield();
312 +-#elif defined(__DragonFly__)
313 +- // On DragonFly BSD, call sched_yield to yield quantum.
314 +- sched_yield();
315 +-#elif defined(__MIC__)
316 ++#if defined(__MIC__)
317 + // On MIC, pthread_yield() really trashes things. Arch's measurements
318 + // showed that calling _mm_delay_32() (or doing nothing) was a better
319 + // option. Delaying 1024 clock cycles is a reasonable compromise between
320 + // giving up the processor and latency starting up when work becomes
321 + // available
322 + _mm_delay_32(1024);
323 +-#elif defined(__ANDROID__) || (defined(__sun__) && defined(__svr4__))
324 +- // On Android and Solaris, call sched_yield to yield quantum. I'm not
325 +- // sure why we don't do this on Linux also.
326 +- sched_yield();
327 +-#else
328 +- // On Linux, call pthread_yield (which in turn will call sched_yield)
329 +- // to yield quantum.
330 ++#elif defined(__sun__) && !defined(__svr4__)
331 ++ // On old SunOS call pthread_yield to yield a quantum.
332 + pthread_yield();
333 ++#else
334 ++ // On other platforms call sched_yield to yield a quantum.
335 ++ sched_yield();
336 + #endif
337 + }
338 +
339
340 diff --git a/sys-devel/gcc/files/5.4.0/linker_path.patch b/sys-devel/gcc/files/5.4.0/linker_path.patch
341 new file mode 100644
342 index 0000000..a2584d4
343 --- /dev/null
344 +++ b/sys-devel/gcc/files/5.4.0/linker_path.patch
345 @@ -0,0 +1,213 @@
346 +diff -Naur gcc-5.4.0.orig/gcc/config/aarch64/aarch64-linux.h gcc-5.4.0/gcc/config/aarch64/aarch64-linux.h
347 +--- gcc-5.4.0.orig/gcc/config/aarch64/aarch64-linux.h 2015-07-24 09:00:26.000000000 -0700
348 ++++ gcc-5.4.0/gcc/config/aarch64/aarch64-linux.h 2016-12-24 14:48:44.236623207 -0800
349 +@@ -23,6 +23,9 @@
350 +
351 + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
352 +
353 ++#undef MUSL_DYNAMIC_LINKER
354 ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
355 ++
356 + #undef ASAN_CC1_SPEC
357 + #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
358 +
359 +diff -Naur gcc-5.4.0.orig/gcc/config/arm/linux-eabi.h gcc-5.4.0/gcc/config/arm/linux-eabi.h
360 +--- gcc-5.4.0.orig/gcc/config/arm/linux-eabi.h 2016-12-24 15:27:49.152307307 -0800
361 ++++ gcc-5.4.0/gcc/config/arm/linux-eabi.h 2016-12-24 14:50:04.522429254 -0800
362 +@@ -77,6 +77,23 @@
363 + %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
364 + %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
365 +
366 ++/* For ARM musl currently supports four dynamic linkers:
367 ++ - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
368 ++ - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
369 ++ - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
370 ++ - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
371 ++ musl does not support the legacy OABI mode.
372 ++ All the dynamic linkers live in /lib.
373 ++ We default to soft-float, EL. */
374 ++#undef MUSL_DYNAMIC_LINKER
375 ++#if TARGET_BIG_ENDIAN_DEFAULT
376 ++#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
377 ++#else
378 ++#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
379 ++#endif
380 ++#define MUSL_DYNAMIC_LINKER \
381 ++ "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
382 ++
383 + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
384 + use the GNU/Linux version, not the generic BPABI version. */
385 + #undef LINK_SPEC
386 +diff -Naur gcc-5.4.0.orig/gcc/config/i386/linux.h gcc-5.4.0/gcc/config/i386/linux.h
387 +--- gcc-5.4.0.orig/gcc/config/i386/linux.h 2015-01-05 04:33:28.000000000 -0800
388 ++++ gcc-5.4.0/gcc/config/i386/linux.h 2016-12-24 14:50:54.802934056 -0800
389 +@@ -21,3 +21,6 @@
390 +
391 + #define GNU_USER_LINK_EMULATION "elf_i386"
392 + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
393 ++
394 ++#undef MUSL_DYNAMIC_LINKER
395 ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
396 +diff -Naur gcc-5.4.0.orig/gcc/config/i386/linux64.h gcc-5.4.0/gcc/config/i386/linux64.h
397 +--- gcc-5.4.0.orig/gcc/config/i386/linux64.h 2015-01-05 04:33:28.000000000 -0800
398 ++++ gcc-5.4.0/gcc/config/i386/linux64.h 2016-12-24 14:51:15.579142643 -0800
399 +@@ -30,3 +30,10 @@
400 + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
401 + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
402 + #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
403 ++
404 ++#undef MUSL_DYNAMIC_LINKER32
405 ++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
406 ++#undef MUSL_DYNAMIC_LINKER64
407 ++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
408 ++#undef MUSL_DYNAMIC_LINKERX32
409 ++#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
410 +diff -Naur gcc-5.4.0.orig/gcc/config/microblaze/linux.h gcc-5.4.0/gcc/config/microblaze/linux.h
411 +--- gcc-5.4.0.orig/gcc/config/microblaze/linux.h 2015-05-28 07:08:19.000000000 -0700
412 ++++ gcc-5.4.0/gcc/config/microblaze/linux.h 2016-12-24 14:58:26.290647241 -0800
413 +@@ -28,10 +28,20 @@
414 + #undef TLS_NEEDS_GOT
415 + #define TLS_NEEDS_GOT 1
416 +
417 +-#define DYNAMIC_LINKER "/lib/ld.so.1"
418 ++#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
419 ++
420 ++#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */
421 ++#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:;:el}"
422 ++#else
423 ++#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:el}"
424 ++#endif
425 ++
426 ++#undef MUSL_DYNAMIC_LINKER
427 ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1"
428 ++
429 + #undef SUBTARGET_EXTRA_SPECS
430 + #define SUBTARGET_EXTRA_SPECS \
431 +- { "dynamic_linker", DYNAMIC_LINKER }
432 ++ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
433 +
434 + #undef LINK_SPEC
435 + #define LINK_SPEC "%{shared:-shared} \
436 +diff -Naur gcc-5.4.0.orig/gcc/config/mips/linux.h gcc-5.4.0/gcc/config/mips/linux.h
437 +--- gcc-5.4.0.orig/gcc/config/mips/linux.h 2015-01-05 04:33:28.000000000 -0800
438 ++++ gcc-5.4.0/gcc/config/mips/linux.h 2016-12-24 15:01:34.093670361 -0800
439 +@@ -37,7 +37,13 @@
440 + #define UCLIBC_DYNAMIC_LINKERN32 \
441 + "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}"
442 +
443 ++#undef MUSL_DYNAMIC_LINKER32
444 ++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-mips%{EL:el}%{msoft-float:-sf}.so.1"
445 ++#undef MUSL_DYNAMIC_LINKER64
446 ++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-mips64%{EL:el}%{msoft-float:-sf}.so.1"
447 ++#define MUSL_DYNAMIC_LINKERN32 "/lib/ld-musl-mipsn32%{EL:el}%{msoft-float:-sf}.so.1"
448 ++
449 + #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
450 + #define GNU_USER_DYNAMIC_LINKERN32 \
451 + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
452 +- BIONIC_DYNAMIC_LINKERN32)
453 ++ BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKERN32)
454 +diff -Naur gcc-5.4.0.orig/gcc/config/rs6000/linux64.h gcc-5.4.0/gcc/config/rs6000/linux64.h
455 +--- gcc-5.4.0.orig/gcc/config/rs6000/linux64.h 2015-03-09 16:18:57.000000000 -0700
456 ++++ gcc-5.4.0/gcc/config/rs6000/linux64.h 2016-12-24 15:03:44.985080397 -0800
457 +@@ -363,19 +367,32 @@
458 + #else
459 + #define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:/lib64/ld64.so.2;:/lib64/ld64.so.1}"
460 + #endif
461 ++
462 ++#define MUSL_DYNAMIC_LINKER32 \
463 ++ "/lib/ld-musl-powerpc" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-sf}.so.1"
464 ++#define MUSL_DYNAMIC_LINKER64 \
465 ++ "/lib/ld-musl-powerpc64" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-sf}.so.1"
466 ++
467 + #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
468 + #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
469 + #if DEFAULT_LIBC == LIBC_UCLIBC
470 +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
471 ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) \
472 ++ "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
473 + #elif DEFAULT_LIBC == LIBC_GLIBC
474 +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
475 ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) \
476 ++ "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
477 ++#elif DEFAULT_LIBC == LIBC_MUSL
478 ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) \
479 ++ "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
480 + #else
481 + #error "Unsupported DEFAULT_LIBC"
482 + #endif
483 + #define GNU_USER_DYNAMIC_LINKER32 \
484 +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
485 ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
486 ++ MUSL_DYNAMIC_LINKER32)
487 + #define GNU_USER_DYNAMIC_LINKER64 \
488 +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
489 ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
490 ++ MUSL_DYNAMIC_LINKER64)
491 +
492 + #undef DEFAULT_ASM_ENDIAN
493 + #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
494 +diff -Naur gcc-5.4.0.orig/gcc/config/rs6000/sysv4.h gcc-5.4.0/gcc/config/rs6000/sysv4.h
495 +--- gcc-5.4.0.orig/gcc/config/rs6000/sysv4.h 2015-09-24 06:46:45.000000000 -0700
496 ++++ gcc-5.4.0/gcc/config/rs6000/sysv4.h 2016-12-24 15:08:38.507113094 -0800
497 +@@ -757,17 +762,27 @@
498 +
499 + #define LINK_START_LINUX_SPEC ""
500 +
501 ++#define MUSL_DYNAMIC_LINKER_E ENDIAN_SELECT("","le","")
502 ++
503 + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
504 + #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
505 ++#define MUSL_DYNAMIC_LINKER \
506 ++ "/lib/ld-musl-powerpc" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-sf}.so.1"
507 + #if DEFAULT_LIBC == LIBC_UCLIBC
508 +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
509 ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) \
510 ++ "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
511 ++#elif DEFAULT_LIBC == LIBC_MUSL
512 ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) \
513 ++ "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
514 + #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
515 +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
516 ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) \
517 ++ "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
518 + #else
519 + #error "Unsupported DEFAULT_LIBC"
520 + #endif
521 + #define GNU_USER_DYNAMIC_LINKER \
522 +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
523 ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
524 ++ MUSL_DYNAMIC_LINKER)
525 +
526 + #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
527 + %{rdynamic:-export-dynamic} \
528 +diff -Naur gcc-5.4.0.orig/gcc/config/sh/linux.h gcc-5.4.0/gcc/config/sh/linux.h
529 +--- gcc-5.4.0.orig/gcc/config/sh/linux.h 2015-01-05 04:33:28.000000000 -0800
530 ++++ gcc-5.4.0/gcc/config/sh/linux.h 2016-12-24 15:09:54.568853072 -0800
531 +@@ -43,6 +43,27 @@
532 +
533 + #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
534 +
535 ++#if TARGET_ENDIAN_DEFAULT == MASK_LITTLE_ENDIAN
536 ++#define MUSL_DYNAMIC_LINKER_E "%{mb:eb}"
537 ++#else
538 ++#define MUSL_DYNAMIC_LINKER_E "%{!ml:eb}"
539 ++#endif
540 ++
541 ++#if TARGET_CPU_DEFAULT & (MASK_HARD_SH2A_DOUBLE | MASK_SH4)
542 ++/* "-nofpu" if any nofpu option is specified. */
543 ++#define MUSL_DYNAMIC_LINKER_FP \
544 ++ "%{m1|m2|m2a-nofpu|m3|m4-nofpu|m4-100-nofpu|m4-200-nofpu|m4-300-nofpu|" \
545 ++ "m4-340|m4-400|m4-500|m4al:-nofpu}"
546 ++#else
547 ++/* "-nofpu" if none of the hard fpu options are specified. */
548 ++#define MUSL_DYNAMIC_LINKER_FP "%{m2a|m4|m4-100|m4-200|m4-300|m4a:;:-nofpu}"
549 ++#endif
550 ++
551 ++#undef MUSL_DYNAMIC_LINKER
552 ++#define MUSL_DYNAMIC_LINKER \
553 ++ "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E MUSL_DYNAMIC_LINKER_FP \
554 ++ "%{mfdpic:-fdpic}.so.1"
555 ++
556 + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
557 +
558 + #undef SUBTARGET_LINK_EMUL_SUFFIX
559
560 diff --git a/sys-devel/gcc/files/5.4.0/musl.patch b/sys-devel/gcc/files/5.4.0/musl.patch
561 new file mode 100644
562 index 0000000..c1541b2
563 --- /dev/null
564 +++ b/sys-devel/gcc/files/5.4.0/musl.patch
565 @@ -0,0 +1,502 @@
566 +diff -Naur gcc-5.4.0.orig/fixincludes/mkfixinc.sh gcc-5.4.0/fixincludes/mkfixinc.sh
567 +--- gcc-5.4.0.orig/fixincludes/mkfixinc.sh 2012-10-28 14:42:48.000000000 -0700
568 ++++ gcc-5.4.0/fixincludes/mkfixinc.sh 2016-12-24 14:47:04.324620119 -0800
569 +@@ -19,7 +19,8 @@
570 + powerpc-*-eabi* | \
571 + powerpc-*-rtems* | \
572 + powerpcle-*-eabisim* | \
573 +- powerpcle-*-eabi* )
574 ++ powerpcle-*-eabi* | \
575 ++ *-musl* )
576 + # IF there is no include fixing,
577 + # THEN create a no-op fixer and exit
578 + (echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
579 +diff -Naur gcc-5.4.0.orig/gcc/config/glibc-stdint.h gcc-5.4.0/gcc/config/glibc-stdint.h
580 +--- gcc-5.4.0.orig/gcc/config/glibc-stdint.h 2015-01-05 04:33:28.000000000 -0800
581 ++++ gcc-5.4.0/gcc/config/glibc-stdint.h 2016-12-24 15:24:46.234527766 -0800
582 +@@ -22,6 +22,12 @@
583 + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
584 + <http://www.gnu.org/licenses/>. */
585 +
586 ++/* Systems using musl libc should use this header and make sure
587 ++ OPTION_MUSL is defined correctly before using the TYPE macros. */
588 ++#ifndef OPTION_MUSL
589 ++#define OPTION_MUSL 0
590 ++#endif
591 ++
592 + #define SIG_ATOMIC_TYPE "int"
593 +
594 + #define INT8_TYPE "signed char"
595 +@@ -43,12 +49,12 @@
596 + #define UINT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
597 +
598 + #define INT_FAST8_TYPE "signed char"
599 +-#define INT_FAST16_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
600 +-#define INT_FAST32_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
601 ++#define INT_FAST16_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long int" : "int")
602 ++#define INT_FAST32_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long int" : "int")
603 + #define INT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
604 + #define UINT_FAST8_TYPE "unsigned char"
605 +-#define UINT_FAST16_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int")
606 +-#define UINT_FAST32_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int")
607 ++#define UINT_FAST16_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long unsigned int" : "unsigned int")
608 ++#define UINT_FAST32_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long unsigned int" : "unsigned int")
609 + #define UINT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
610 +
611 + #define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
612 +diff -Naur gcc-5.4.0.orig/gcc/config/linux.c gcc-5.4.0/gcc/config/linux.c
613 +--- gcc-5.4.0.orig/gcc/config/linux.c 2015-01-05 04:33:28.000000000 -0800
614 ++++ gcc-5.4.0/gcc/config/linux.c 2016-12-24 15:35:58.913083568 -0800
615 +@@ -26,7 +26,7 @@
616 + bool
617 + linux_libc_has_function (enum function_class fn_class)
618 + {
619 +- if (OPTION_GLIBC)
620 ++ if (OPTION_GLIBC || OPTION_MUSL)
621 + return true;
622 + if (OPTION_BIONIC)
623 + if (fn_class == function_c94
624 +diff -Naur gcc-5.4.0.orig/gcc/config/linux.h gcc-5.4.0/gcc/config/linux.h
625 +--- gcc-5.4.0.orig/gcc/config/linux.h 2015-01-05 04:33:28.000000000 -0800
626 ++++ gcc-5.4.0/gcc/config/linux.h 2016-12-24 14:55:26.718712791 -0800
627 +@@ -32,10 +32,14 @@
628 + #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
629 + #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
630 + #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
631 ++#undef OPTION_MUSL
632 ++#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
633 + #else
634 + #define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
635 + #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
636 + #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
637 ++#undef OPTION_MUSL
638 ++#define OPTION_MUSL (linux_libc == LIBC_MUSL)
639 + #endif
640 +
641 + #define GNU_USER_TARGET_OS_CPP_BUILTINS() \
642 +@@ -50,21 +54,25 @@
643 + } while (0)
644 +
645 + /* Determine which dynamic linker to use depending on whether GLIBC or
646 +- uClibc or Bionic is the default C library and whether
647 +- -muclibc or -mglibc or -mbionic has been passed to change the default. */
648 ++ uClibc or Bionic or musl is the default C library and whether
649 ++ -muclibc or -mglibc or -mbionic or -mmusl has been passed to change
650 ++ the default. */
651 +
652 +-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
653 +- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
654 ++#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
655 ++ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
656 +
657 + #if DEFAULT_LIBC == LIBC_GLIBC
658 +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
659 +- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
660 ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
661 ++ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
662 + #elif DEFAULT_LIBC == LIBC_UCLIBC
663 +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
664 +- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
665 ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
666 ++ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
667 + #elif DEFAULT_LIBC == LIBC_BIONIC
668 +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
669 +- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
670 ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
671 ++ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
672 ++#elif DEFAULT_LIBC == LIBC_MUSL
673 ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
674 ++ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
675 + #else
676 + #error "Unsupported DEFAULT_LIBC"
677 + #endif /* DEFAULT_LIBC */
678 +@@ -81,24 +89,101 @@
679 + #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
680 + #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
681 + #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
682 ++/* Should be redefined for each target that supports musl. */
683 ++#define MUSL_DYNAMIC_LINKER "/dev/null"
684 ++#define MUSL_DYNAMIC_LINKER32 "/dev/null"
685 ++#define MUSL_DYNAMIC_LINKER64 "/dev/null"
686 ++#define MUSL_DYNAMIC_LINKERX32 "/dev/null"
687 +
688 + #define GNU_USER_DYNAMIC_LINKER \
689 + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
690 +- BIONIC_DYNAMIC_LINKER)
691 ++ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
692 + #define GNU_USER_DYNAMIC_LINKER32 \
693 + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
694 +- BIONIC_DYNAMIC_LINKER32)
695 ++ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
696 + #define GNU_USER_DYNAMIC_LINKER64 \
697 + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
698 +- BIONIC_DYNAMIC_LINKER64)
699 ++ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
700 + #define GNU_USER_DYNAMIC_LINKERX32 \
701 + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
702 +- BIONIC_DYNAMIC_LINKERX32)
703 ++ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
704 +
705 + /* Whether we have Bionic libc runtime */
706 + #undef TARGET_HAS_BIONIC
707 + #define TARGET_HAS_BIONIC (OPTION_BIONIC)
708 +
709 ++/* musl avoids problematic includes by rearranging the include directories.
710 ++ * Unfortunately, this is mostly duplicated from cppdefault.c */
711 ++#if DEFAULT_LIBC == LIBC_MUSL
712 ++#define INCLUDE_DEFAULTS_MUSL_GPP \
713 ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \
714 ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \
715 ++ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \
716 ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \
717 ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \
718 ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
719 ++
720 ++#ifdef LOCAL_INCLUDE_DIR
721 ++#define INCLUDE_DEFAULTS_MUSL_LOCAL \
722 ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \
723 ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
724 ++#else
725 ++#define INCLUDE_DEFAULTS_MUSL_LOCAL
726 ++#endif
727 ++
728 ++#ifdef PREFIX_INCLUDE_DIR
729 ++#define INCLUDE_DEFAULTS_MUSL_PREFIX \
730 ++ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
731 ++#else
732 ++#define INCLUDE_DEFAULTS_MUSL_PREFIX
733 ++#endif
734 ++
735 ++#ifdef CROSS_INCLUDE_DIR
736 ++#define INCLUDE_DEFAULTS_MUSL_CROSS \
737 ++ { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
738 ++#else
739 ++#define INCLUDE_DEFAULTS_MUSL_CROSS
740 ++#endif
741 ++
742 ++#ifdef TOOL_INCLUDE_DIR
743 ++#define INCLUDE_DEFAULTS_MUSL_TOOL \
744 ++ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
745 ++#else
746 ++#define INCLUDE_DEFAULTS_MUSL_TOOL
747 ++#endif
748 ++
749 ++#ifdef NATIVE_SYSTEM_HEADER_DIR
750 ++#define INCLUDE_DEFAULTS_MUSL_NATIVE \
751 ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
752 ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
753 ++#else
754 ++#define INCLUDE_DEFAULTS_MUSL_NATIVE
755 ++#endif
756 ++
757 ++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
758 ++# undef INCLUDE_DEFAULTS_MUSL_LOCAL
759 ++# define INCLUDE_DEFAULTS_MUSL_LOCAL
760 ++# undef INCLUDE_DEFAULTS_MUSL_NATIVE
761 ++# define INCLUDE_DEFAULTS_MUSL_NATIVE
762 ++#else
763 ++# undef INCLUDE_DEFAULTS_MUSL_CROSS
764 ++# define INCLUDE_DEFAULTS_MUSL_CROSS
765 ++#endif
766 ++
767 ++#undef INCLUDE_DEFAULTS
768 ++#define INCLUDE_DEFAULTS \
769 ++ { \
770 ++ INCLUDE_DEFAULTS_MUSL_GPP \
771 ++ INCLUDE_DEFAULTS_MUSL_LOCAL \
772 ++ INCLUDE_DEFAULTS_MUSL_PREFIX \
773 ++ INCLUDE_DEFAULTS_MUSL_CROSS \
774 ++ INCLUDE_DEFAULTS_MUSL_TOOL \
775 ++ INCLUDE_DEFAULTS_MUSL_NATIVE \
776 ++ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
777 ++ { 0, 0, 0, 0, 0, 0 } \
778 ++ }
779 ++#endif
780 ++
781 + #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
782 + /* This is a *uclinux* target. We don't define below macros to normal linux
783 + versions, because doing so would require *uclinux* targets to include
784 +diff -Naur gcc-5.4.0.orig/gcc/config/linux.opt gcc-5.4.0/gcc/config/linux.opt
785 +--- gcc-5.4.0.orig/gcc/config/linux.opt 2015-01-05 04:33:28.000000000 -0800
786 ++++ gcc-5.4.0/gcc/config/linux.opt 2016-12-24 14:56:23.784327534 -0800
787 +@@ -28,5 +28,9 @@
788 + Use GNU C library
789 +
790 + muclibc
791 +-Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
792 ++Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mmusl)
793 + Use uClibc C library
794 ++
795 ++mmusl
796 ++Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mbionic)
797 ++Use musl C library.
798 +diff -Naur gcc-5.4.0.orig/gcc/config/rs6000/linux64.h gcc-5.4.0/gcc/config/rs6000/linux64.h
799 +--- gcc-5.4.0.orig/gcc/config/rs6000/linux64.h 2015-03-09 16:18:57.000000000 -0700
800 ++++ gcc-5.4.0/gcc/config/rs6000/linux64.h 2016-12-24 15:03:44.985080397 -0800
801 +@@ -299,10 +299,14 @@
802 + #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
803 + #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
804 + #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
805 ++#undef OPTION_MUSL
806 ++#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
807 + #else
808 + #define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
809 + #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
810 + #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
811 ++#undef OPTION_MUSL
812 ++#define OPTION_MUSL (linux_libc == LIBC_MUSL)
813 + #endif
814 +
815 + /* Determine what functions are present at the runtime;
816 +diff -Naur gcc-5.4.0.orig/gcc/config/rs6000/sysv4.h gcc-5.4.0/gcc/config/rs6000/sysv4.h
817 +--- gcc-5.4.0.orig/gcc/config/rs6000/sysv4.h 2015-09-24 06:46:45.000000000 -0700
818 ++++ gcc-5.4.0/gcc/config/rs6000/sysv4.h 2016-12-24 15:08:38.507113094 -0800
819 +@@ -943,3 +959,73 @@
820 + /* This target uses the sysv4.opt file. */
821 + #define TARGET_USES_SYSV4_OPT 1
822 +
823 ++/* Include order changes for musl, same as in generic linux.h. */
824 ++#if DEFAULT_LIBC == LIBC_MUSL
825 ++#define INCLUDE_DEFAULTS_MUSL_GPP \
826 ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \
827 ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \
828 ++ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \
829 ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \
830 ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \
831 ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
832 ++
833 ++#ifdef LOCAL_INCLUDE_DIR
834 ++#define INCLUDE_DEFAULTS_MUSL_LOCAL \
835 ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \
836 ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
837 ++#else
838 ++#define INCLUDE_DEFAULTS_MUSL_LOCAL
839 ++#endif
840 ++
841 ++#ifdef PREFIX_INCLUDE_DIR
842 ++#define INCLUDE_DEFAULTS_MUSL_PREFIX \
843 ++ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
844 ++#else
845 ++#define INCLUDE_DEFAULTS_MUSL_PREFIX
846 ++#endif
847 ++
848 ++#ifdef CROSS_INCLUDE_DIR
849 ++#define INCLUDE_DEFAULTS_MUSL_CROSS \
850 ++ { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
851 ++#else
852 ++#define INCLUDE_DEFAULTS_MUSL_CROSS
853 ++#endif
854 ++
855 ++#ifdef TOOL_INCLUDE_DIR
856 ++#define INCLUDE_DEFAULTS_MUSL_TOOL \
857 ++ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
858 ++#else
859 ++#define INCLUDE_DEFAULTS_MUSL_TOOL
860 ++#endif
861 ++
862 ++#ifdef NATIVE_SYSTEM_HEADER_DIR
863 ++#define INCLUDE_DEFAULTS_MUSL_NATIVE \
864 ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
865 ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
866 ++#else
867 ++#define INCLUDE_DEFAULTS_MUSL_NATIVE
868 ++#endif
869 ++
870 ++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
871 ++# undef INCLUDE_DEFAULTS_MUSL_LOCAL
872 ++# define INCLUDE_DEFAULTS_MUSL_LOCAL
873 ++# undef INCLUDE_DEFAULTS_MUSL_NATIVE
874 ++# define INCLUDE_DEFAULTS_MUSL_NATIVE
875 ++#else
876 ++# undef INCLUDE_DEFAULTS_MUSL_CROSS
877 ++# define INCLUDE_DEFAULTS_MUSL_CROSS
878 ++#endif
879 ++
880 ++#undef INCLUDE_DEFAULTS
881 ++#define INCLUDE_DEFAULTS \
882 ++ { \
883 ++ INCLUDE_DEFAULTS_MUSL_GPP \
884 ++ INCLUDE_DEFAULTS_MUSL_LOCAL \
885 ++ INCLUDE_DEFAULTS_MUSL_PREFIX \
886 ++ INCLUDE_DEFAULTS_MUSL_CROSS \
887 ++ INCLUDE_DEFAULTS_MUSL_TOOL \
888 ++ INCLUDE_DEFAULTS_MUSL_NATIVE \
889 ++ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
890 ++ { 0, 0, 0, 0, 0, 0 } \
891 ++ }
892 ++#endif
893 +diff -Naur gcc-5.4.0.orig/gcc/config.gcc gcc-5.4.0/gcc/config.gcc
894 +--- gcc-5.4.0.orig/gcc/config.gcc 2016-12-24 15:28:09.922509373 -0800
895 ++++ gcc-5.4.0/gcc/config.gcc 2016-12-24 15:39:19.482040184 -0800
896 +@@ -575,7 +575,7 @@
897 + esac
898 +
899 + # Common C libraries.
900 +-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
901 ++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
902 +
903 + # 32-bit x86 processors supported by --with-arch=. Each processor
904 + # MUST be separated by exactly one space.
905 +@@ -720,6 +720,9 @@
906 + *-*-*uclibc*)
907 + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
908 + ;;
909 ++ *-*-*musl*)
910 ++ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
911 ++ ;;
912 + *)
913 + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
914 + ;;
915 +@@ -1438,7 +1441,7 @@
916 + extra_options="${extra_options} linux-android.opt"
917 + # Assume modern glibc if not targeting Android nor uclibc.
918 + case ${target} in
919 +- *-*-*android*|*-*-*uclibc*)
920 ++ *-*-*android*|*-*-*uclibc*|*-*-*musl*)
921 + ;;
922 + *)
923 + default_gnu_indirect_function=yes
924 +@@ -1507,7 +1510,7 @@
925 + extra_options="${extra_options} linux-android.opt"
926 + # Assume modern glibc if not targeting Android nor uclibc.
927 + case ${target} in
928 +- *-*-*android*|*-*-*uclibc*)
929 ++ *-*-*android*|*-*-*uclibc*|*-*-*musl*)
930 + ;;
931 + *)
932 + default_gnu_indirect_function=yes
933 +diff -Naur gcc-5.4.0.orig/gcc/configure gcc-5.4.0/gcc/configure
934 +--- gcc-5.4.0.orig/gcc/configure 2016-12-24 15:28:54.117939552 -0800
935 ++++ gcc-5.4.0/gcc/configure 2016-12-24 15:13:46.057105137 -0800
936 +@@ -27837,6 +27837,9 @@
937 + else
938 + gcc_cv_libc_provides_ssp=no
939 + case "$target" in
940 ++ *-*-musl*)
941 ++ # All versions of musl provide stack protector
942 ++ gcc_cv_libc_provides_ssp=yes;;
943 + *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
944 + # glibc 2.4 and later provides __stack_chk_fail and
945 + # either __stack_chk_guard, or TLS access to stack guard canary.
946 +@@ -27869,6 +27872,7 @@
947 + # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
948 + # simply assert that glibc does provide this, which is true for all
949 + # realistically usable GNU/Hurd configurations.
950 ++ # All supported versions of musl provide it as well
951 + gcc_cv_libc_provides_ssp=yes;;
952 + *-*-darwin* | *-*-freebsd*)
953 + ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail"
954 +@@ -27965,6 +27969,9 @@
955 + gcc_cv_target_dl_iterate_phdr=no
956 + fi
957 + ;;
958 ++ *-linux-musl*)
959 ++ gcc_cv_target_dl_iterate_phdr=yes
960 ++ ;;
961 + esac
962 +
963 + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
964 +diff -Naur gcc-5.4.0.orig/gcc/configure.ac gcc-5.4.0/gcc/configure.ac
965 +--- gcc-5.4.0.orig/gcc/configure.ac 2016-12-24 15:28:32.129725419 -0800
966 ++++ gcc-5.4.0/gcc/configure.ac 2016-12-24 15:14:52.372750299 -0800
967 +@@ -5287,6 +5287,9 @@
968 + gcc_cv_libc_provides_ssp,
969 + [gcc_cv_libc_provides_ssp=no
970 + case "$target" in
971 ++ *-*-musl*)
972 ++ # All versions of musl provide stack protector
973 ++ gcc_cv_libc_provides_ssp=yes;;
974 + *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
975 + # glibc 2.4 and later provides __stack_chk_fail and
976 + # either __stack_chk_guard, or TLS access to stack guard canary.
977 +@@ -5313,6 +5316,7 @@
978 + # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
979 + # simply assert that glibc does provide this, which is true for all
980 + # realistically usable GNU/Hurd configurations.
981 ++ # All supported versions of musl provide it as well
982 + gcc_cv_libc_provides_ssp=yes;;
983 + *-*-darwin* | *-*-freebsd*)
984 + AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
985 +@@ -5386,6 +5390,9 @@
986 + gcc_cv_target_dl_iterate_phdr=no
987 + fi
988 + ;;
989 ++ *-linux-musl*)
990 ++ gcc_cv_target_dl_iterate_phdr=yes
991 ++ ;;
992 + esac
993 + GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
994 + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
995 +diff -Naur gcc-5.4.0.orig/libgcc/unwind-dw2-fde-dip.c gcc-5.4.0/libgcc/unwind-dw2-fde-dip.c
996 +--- gcc-5.4.0.orig/libgcc/unwind-dw2-fde-dip.c 2015-01-27 02:02:26.000000000 -0800
997 ++++ gcc-5.4.0/libgcc/unwind-dw2-fde-dip.c 2016-12-24 15:16:56.850961302 -0800
998 +@@ -59,6 +59,12 @@
999 +
1000 + #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
1001 + && defined(TARGET_DL_ITERATE_PHDR) \
1002 ++ && defined(__linux__)
1003 ++# define USE_PT_GNU_EH_FRAME
1004 ++#endif
1005 ++
1006 ++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
1007 ++ && defined(TARGET_DL_ITERATE_PHDR) \
1008 + && (defined(__DragonFly__) || defined(__FreeBSD__))
1009 + # define ElfW __ElfN
1010 + # define USE_PT_GNU_EH_FRAME
1011 +diff -Naur gcc-5.4.0.orig/libitm/config/arm/hwcap.cc gcc-5.4.0/libitm/config/arm/hwcap.cc
1012 +--- gcc-5.4.0.orig/libitm/config/arm/hwcap.cc 2015-01-05 04:33:28.000000000 -0800
1013 ++++ gcc-5.4.0/libitm/config/arm/hwcap.cc 2016-12-24 15:19:01.076169845 -0800
1014 +@@ -40,7 +40,7 @@
1015 +
1016 + #ifdef __linux__
1017 + #include <unistd.h>
1018 +-#include <sys/fcntl.h>
1019 ++#include <fcntl.h>
1020 + #include <elf.h>
1021 +
1022 + static void __attribute__((constructor))
1023 +diff -Naur gcc-5.4.0.orig/libitm/config/linux/x86/tls.h gcc-5.4.0/libitm/config/linux/x86/tls.h
1024 +--- gcc-5.4.0.orig/libitm/config/linux/x86/tls.h 2015-01-05 04:33:28.000000000 -0800
1025 ++++ gcc-5.4.0/libitm/config/linux/x86/tls.h 2016-12-24 15:20:21.897956131 -0800
1026 +@@ -25,16 +25,19 @@
1027 + #ifndef LIBITM_X86_TLS_H
1028 + #define LIBITM_X86_TLS_H 1
1029 +
1030 +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
1031 ++#if defined(__GLIBC_PREREQ)
1032 ++#if __GLIBC_PREREQ(2, 10)
1033 + /* Use slots in the TCB head rather than __thread lookups.
1034 + GLIBC has reserved words 10 through 13 for TM. */
1035 + #define HAVE_ARCH_GTM_THREAD 1
1036 + #define HAVE_ARCH_GTM_THREAD_DISP 1
1037 + #endif
1038 ++#endif
1039 +
1040 + #include "config/generic/tls.h"
1041 +
1042 +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
1043 ++#if defined(__GLIBC_PREREQ)
1044 ++#if __GLIBC_PREREQ(2, 10)
1045 + namespace GTM HIDDEN {
1046 +
1047 + #ifdef __x86_64__
1048 +@@ -101,5 +104,6 @@
1049 +
1050 + } // namespace GTM
1051 + #endif /* >= GLIBC 2.10 */
1052 ++#endif
1053 +
1054 + #endif // LIBITM_X86_TLS_H
1055 +diff -Naur gcc-5.4.0.orig/libstdc++-v3/configure.host gcc-5.4.0/libstdc++-v3/configure.host
1056 +--- gcc-5.4.0.orig/libstdc++-v3/configure.host 2015-06-24 02:59:28.000000000 -0700
1057 ++++ gcc-5.4.0/libstdc++-v3/configure.host 2016-12-24 15:21:16.012482591 -0800
1058 +@@ -273,6 +273,9 @@
1059 + freebsd*)
1060 + os_include_dir="os/bsd/freebsd"
1061 + ;;
1062 ++ linux-musl*)
1063 ++ os_include_dir="os/generic"
1064 ++ ;;
1065 + gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
1066 + if [ "$uclibc" = "yes" ]; then
1067 + os_include_dir="os/uclibc"
1068
1069 diff --git a/sys-devel/gcc/files/5.4.0/ppc-secure_plt.patch b/sys-devel/gcc/files/5.4.0/ppc-secure_plt.patch
1070 new file mode 100644
1071 index 0000000..4e7f9d4
1072 --- /dev/null
1073 +++ b/sys-devel/gcc/files/5.4.0/ppc-secure_plt.patch
1074 @@ -0,0 +1,59 @@
1075 +diff -Naur gcc-5.4.0.orig/gcc/config/rs6000/secureplt.h gcc-5.4.0/gcc/config/rs6000/secureplt.h
1076 +--- gcc-5.4.0.orig/gcc/config/rs6000/secureplt.h 2015-01-05 04:33:28.000000000 -0800
1077 ++++ gcc-5.4.0/gcc/config/rs6000/secureplt.h 2016-12-24 15:04:26.850531396 -0800
1078 +@@ -18,3 +18,4 @@
1079 + <http://www.gnu.org/licenses/>. */
1080 +
1081 + #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
1082 ++#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
1083 +diff -Naur gcc-5.4.0.orig/gcc/config/rs6000/sysv4.h gcc-5.4.0/gcc/config/rs6000/sysv4.h
1084 +--- gcc-5.4.0.orig/gcc/config/rs6000/sysv4.h 2015-09-24 06:46:45.000000000 -0700
1085 ++++ gcc-5.4.0/gcc/config/rs6000/sysv4.h 2016-12-24 15:08:38.507113094 -0800
1086 +@@ -537,6 +537,9 @@
1087 + #ifndef CC1_SECURE_PLT_DEFAULT_SPEC
1088 + #define CC1_SECURE_PLT_DEFAULT_SPEC ""
1089 + #endif
1090 ++#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
1091 ++#define LINK_SECURE_PLT_DEFAULT_SPEC ""
1092 ++#endif
1093 +
1094 + /* Pass -G xxx to the compiler. */
1095 + #undef CC1_SPEC
1096 +@@ -567,6 +570,7 @@
1097 + : %(link_start_default) }"
1098 +
1099 + #define LINK_START_DEFAULT_SPEC ""
1100 ++#define LINK_SECURE_PLT_SPEC LINK_SECURE_PLT_DEFAULT_SPEC
1101 +
1102 + #undef LINK_SPEC
1103 + #define LINK_SPEC "\
1104 +@@ -574,6 +578,7 @@
1105 + %{R*} \
1106 + %(link_shlib) \
1107 + %{!T*: %(link_start) } \
1108 ++%{!static: %{!mbss-plt: %(link_secure_plt)}} \
1109 + %(link_os)"
1110 +
1111 + /* Shared libraries are not default. */
1112 +@@ -889,6 +904,7 @@
1113 + { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \
1114 + { "link_os_default", LINK_OS_DEFAULT_SPEC }, \
1115 + { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
1116 ++ { "link_secure_plt", LINK_SECURE_PLT_SPEC }, \
1117 + { "cpp_os_ads", CPP_OS_ADS_SPEC }, \
1118 + { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
1119 + { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
1120 +diff -Naur gcc-5.4.0.orig/gcc/config.gcc gcc-5.4.0/gcc/config.gcc
1121 +--- gcc-5.4.0.orig/gcc/config.gcc 2016-12-24 15:28:09.922509373 -0800
1122 ++++ gcc-5.4.0/gcc/config.gcc 2016-12-24 15:39:19.482040184 -0800
1123 +@@ -2413,6 +2416,10 @@
1124 + powerpc*-*-linux*paired*)
1125 + tm_file="${tm_file} rs6000/750cl.h" ;;
1126 + esac
1127 ++ case ${target} in
1128 ++ *-linux*-musl*)
1129 ++ enable_secureplt=yes ;;
1130 ++ esac
1131 + if test x${enable_secureplt} = xyes; then
1132 + tm_file="rs6000/secureplt.h ${tm_file}"
1133 + fi
1134
1135 diff --git a/sys-devel/gcc/files/6.3.0/musl.patch b/sys-devel/gcc/files/6.3.0/musl.patch
1136 new file mode 100644
1137 index 0000000..03a5dc2
1138 --- /dev/null
1139 +++ b/sys-devel/gcc/files/6.3.0/musl.patch
1140 @@ -0,0 +1,63 @@
1141 +diff -Naur gcc-6.2.0.orig/gcc/config/i386/i386.c gcc-6.2.0/gcc/config/i386/i386.c
1142 +--- gcc-6.2.0.orig/gcc/config/i386/i386.c 2016-12-24 15:55:23.355343088 -0800
1143 ++++ gcc-6.2.0/gcc/config/i386/i386.c 2016-12-24 15:55:58.718681693 -0800
1144 +@@ -40325,10 +40325,10 @@
1145 + {
1146 + case IX86_BUILTIN_CPU_INIT:
1147 + {
1148 +- /* Make it call __cpu_indicator_init in libgcc. */
1149 ++ /* Make it call __cpu_indicator_init_local in libgcc. */
1150 + tree call_expr, fndecl, type;
1151 + type = build_function_type_list (integer_type_node, NULL_TREE);
1152 +- fndecl = build_fn_decl ("__cpu_indicator_init", type);
1153 ++ fndecl = build_fn_decl ("__cpu_indicator_init_local", type);
1154 + call_expr = build_call_expr (fndecl, 0);
1155 + return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
1156 + }
1157 +diff -Naur gcc-6.2.0.orig/gcc/config/linux.c gcc-6.2.0/gcc/config/linux.c
1158 +--- gcc-6.2.0.orig/gcc/config/linux.c 2016-12-24 15:55:23.308342638 -0800
1159 ++++ gcc-6.2.0/gcc/config/linux.c 2016-12-24 16:00:51.852488459 -0800
1160 +@@ -26,7 +26,7 @@
1161 + bool
1162 + linux_libc_has_function (enum function_class fn_class)
1163 + {
1164 +- if (OPTION_GLIBC)
1165 ++ if (OPTION_GLIBC || OPTION_MUSL)
1166 + return true;
1167 + if (OPTION_BIONIC)
1168 + if (fn_class == function_c94
1169 +diff -Naur gcc-6.2.0.orig/gcc/config.gcc gcc-6.2.0/gcc/config.gcc
1170 +--- gcc-6.2.0.orig/gcc/config.gcc 2016-12-24 15:55:15.957272251 -0800
1171 ++++ gcc-6.2.0/gcc/config.gcc 2016-12-24 16:02:12.297258721 -0800
1172 +@@ -1484,7 +1484,7 @@
1173 + extra_options="${extra_options} linux-android.opt"
1174 + # Assume modern glibc if not targeting Android nor uclibc.
1175 + case ${target} in
1176 +- *-*-*android*|*-*-*uclibc*)
1177 ++ *-*-*android*|*-*-*uclibc*|*-*-*musl*)
1178 + ;;
1179 + *)
1180 + default_gnu_indirect_function=yes
1181 +@@ -1553,7 +1553,7 @@
1182 + extra_options="${extra_options} linux-android.opt"
1183 + # Assume modern glibc if not targeting Android nor uclibc.
1184 + case ${target} in
1185 +- *-*-*android*|*-*-*uclibc*)
1186 ++ *-*-*android*|*-*-*uclibc*|*-*-*musl*)
1187 + ;;
1188 + *)
1189 + default_gnu_indirect_function=yes
1190 +diff -Naur gcc-6.2.0.orig/libgcc/config/i386/cpuinfo.c gcc-6.2.0/libgcc/config/i386/cpuinfo.c
1191 +--- gcc-6.2.0.orig/libgcc/config/i386/cpuinfo.c 2016-12-24 15:55:15.817270911 -0800
1192 ++++ gcc-6.2.0/libgcc/config/i386/cpuinfo.c 2016-12-24 15:57:05.399320163 -0800
1193 +@@ -485,7 +485,7 @@
1194 + return 0;
1195 + }
1196 +
1197 +-#if defined SHARED && defined USE_ELF_SYMVER
1198 +-__asm__ (".symver __cpu_indicator_init, __cpu_indicator_init@GCC_4.8.0");
1199 +-__asm__ (".symver __cpu_model, __cpu_model@GCC_4.8.0");
1200 ++#ifndef SHARED
1201 ++int __cpu_indicator_init_local (void)
1202 ++ __attribute__ ((weak, alias ("__cpu_indicator_init")));
1203 + #endif
1204
1205 diff --git a/sys-devel/gcc/files/fix_libtool_files.sh b/sys-devel/gcc/files/fix_libtool_files.sh
1206 index 97fb91c..eb96df2 100644
1207 --- a/sys-devel/gcc/files/fix_libtool_files.sh
1208 +++ b/sys-devel/gcc/files/fix_libtool_files.sh
1209 @@ -1,5 +1,5 @@
1210 #!/bin/sh
1211 -# Copyright 1999-2012 Gentoo Foundation
1212 +# Copyright 1999-2014 Gentoo Foundation
1213 # Distributed under the terms of the GNU General Public License v2
1214 # $Id$
1215
1216 @@ -38,10 +38,9 @@ ARGV2=$2
1217 ARGV3=$3
1218
1219 . /etc/profile || exit 1
1220 -. /etc/init.d/functions.sh || exit 1
1221
1222 if [ ${EUID:-0} -ne 0 ] ; then
1223 - eerror "${0##*/}: Must be root."
1224 + echo "${0##*/}: Must be root."
1225 exit 1
1226 fi
1227
1228 @@ -54,7 +53,7 @@ OLDCHOST=
1229 AWKDIR="/usr/share/gcc-data"
1230
1231 if [ ! -r "${AWKDIR}/fixlafiles.awk" ] ; then
1232 - eerror "${0##*/}: ${AWKDIR}/fixlafiles.awk does not exist!"
1233 + echo "${0##*/}: ${AWKDIR}/fixlafiles.awk does not exist!"
1234 exit 1
1235 fi
1236
1237 @@ -62,7 +61,7 @@ OLDVER=${ARGV1}
1238
1239 export OLDVER OLDCHOST
1240
1241 -einfo "Scanning libtool files for hardcoded gcc library paths..."
1242 +echo "Scanning libtool files for hardcoded gcc library paths..."
1243 exec gawk -f "${AWKDIR}/fixlafiles.awk"
1244
1245 # vim:ts=4
1246
1247 diff --git a/sys-devel/gcc/files/gcc-5.4.0-pr68470.patch b/sys-devel/gcc/files/gcc-5.4.0-pr68470.patch
1248 new file mode 100644
1249 index 0000000..7f314cf
1250 --- /dev/null
1251 +++ b/sys-devel/gcc/files/gcc-5.4.0-pr68470.patch
1252 @@ -0,0 +1,57 @@
1253 +diff -Naur gcc-5.4.0.orig/gcc/ipa-split.c gcc-5.4.0/gcc/ipa-split.c
1254 +--- gcc-5.4.0.orig/gcc/ipa-split.c 2016-03-30 05:27:12.000000000 -0700
1255 ++++ gcc-5.4.0/gcc/ipa-split.c 2016-12-24 17:10:50.205152721 -0800
1256 +@@ -1246,7 +1246,6 @@
1257 + edge e;
1258 + edge_iterator ei;
1259 + tree retval = NULL, real_retval = NULL, retbnd = NULL;
1260 +- bool split_part_return_p = false;
1261 + bool with_bounds = chkp_function_instrumented_p (current_function_decl);
1262 + gimple last_stmt = NULL;
1263 + unsigned int i;
1264 +@@ -1287,12 +1286,28 @@
1265 + args_to_pass.safe_push (arg);
1266 + }
1267 +
1268 +- /* See if the split function will return. */
1269 ++ /* See if the split function or the main part will return. */
1270 ++ bool main_part_return_p = false;
1271 ++ bool split_part_return_p = false;
1272 + FOR_EACH_EDGE (e, ei, return_bb->preds)
1273 +- if (bitmap_bit_p (split_point->split_bbs, e->src->index))
1274 +- break;
1275 +- if (e)
1276 +- split_part_return_p = true;
1277 ++ {
1278 ++ if (bitmap_bit_p (split_point->split_bbs, e->src->index))
1279 ++ split_part_return_p = true;
1280 ++ else
1281 ++ main_part_return_p = true;
1282 ++ }
1283 ++ /* The main part also returns if we we split on a fallthru edge
1284 ++ and the split part returns. */
1285 ++ if (split_part_return_p)
1286 ++ FOR_EACH_EDGE (e, ei, split_point->entry_bb->preds)
1287 ++ {
1288 ++ if (! bitmap_bit_p (split_point->split_bbs, e->src->index)
1289 ++ && single_succ_p (e->src))
1290 ++ {
1291 ++ main_part_return_p = true;
1292 ++ break;
1293 ++ }
1294 ++ }
1295 +
1296 + /* Add return block to what will become the split function.
1297 + We do not return; no return block is needed. */
1298 +@@ -1336,6 +1351,11 @@
1299 + else
1300 + bitmap_set_bit (split_point->split_bbs, return_bb->index);
1301 +
1302 ++ /* If the main part doesn't return pretend the return block wasn't
1303 ++ found for all of the following. */
1304 ++ if (! main_part_return_p)
1305 ++ return_bb = EXIT_BLOCK_PTR_FOR_FN (cfun);
1306 ++
1307 + /* If RETURN_BB has virtual operand PHIs, they must be removed and the
1308 + virtual operand marked for renaming as we change the CFG in a way that
1309 + tree-inline is not able to compensate for.
1310
1311 diff --git a/sys-devel/gcc/files/gcc-6.1.0-musl-cpu.patch b/sys-devel/gcc/files/gcc-6.1.0-musl-cpu.patch
1312 deleted file mode 100644
1313 index c11afb5..0000000
1314 --- a/sys-devel/gcc/files/gcc-6.1.0-musl-cpu.patch
1315 +++ /dev/null
1316 @@ -1,32 +0,0 @@
1317 -diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
1318 -index 3d044e8..82523e1 100644
1319 ---- a/gcc/config/i386/i386.c
1320 -+++ b/gcc/config/i386/i386.c
1321 -@@ -40269,10 +40269,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
1322 - {
1323 - case IX86_BUILTIN_CPU_INIT:
1324 - {
1325 -- /* Make it call __cpu_indicator_init in libgcc. */
1326 -+ /* Make it call __cpu_indicator_init_local in libgcc.a. */
1327 - tree call_expr, fndecl, type;
1328 - type = build_function_type_list (integer_type_node, NULL_TREE);
1329 -- fndecl = build_fn_decl ("__cpu_indicator_init", type);
1330 -+ fndecl = build_fn_decl ("__cpu_indicator_init_local", type);
1331 - call_expr = build_call_expr (fndecl, 0);
1332 - return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
1333 - }
1334 -diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c
1335 -index 8c2248d..6c82f15 100644
1336 ---- a/libgcc/config/i386/cpuinfo.c
1337 -+++ b/libgcc/config/i386/cpuinfo.c
1338 -@@ -485,7 +485,7 @@ __cpu_indicator_init (void)
1339 - return 0;
1340 - }
1341 -
1342 --#if defined SHARED && defined USE_ELF_SYMVER
1343 --__asm__ (".symver __cpu_indicator_init, __cpu_indicator_init@GCC_4.8.0");
1344 --__asm__ (".symver __cpu_model, __cpu_model@GCC_4.8.0");
1345 -+#ifndef SHARED
1346 -+int __cpu_indicator_init_local (void)
1347 -+ __attribute__ ((weak, alias ("__cpu_indicator_init")));
1348 - #endif
1349
1350 diff --git a/sys-devel/gcc/files/mkinfodir b/sys-devel/gcc/files/mkinfodir
1351 deleted file mode 100644
1352 index a62840e..0000000
1353 --- a/sys-devel/gcc/files/mkinfodir
1354 +++ /dev/null
1355 @@ -1,233 +0,0 @@
1356 -#!/bin/bash
1357 -# $Id: mkinfodir,v 1.1 2001/09/01 07:56:19 drobbins Exp $
1358 -# Generate the top-level Info node, given a directory of Info files
1359 -# and (optionally) a skeleton file. The output will be suitable for a
1360 -# top-level dir file. The skeleton file contains info topic names in the
1361 -# order they should appear in the output. There are three special
1362 -# lines that alter the behavior: a line consisting of just "--" causes
1363 -# the next line to be echoed verbatim to the output. A line
1364 -# containing just "%%" causes all the remaining filenames (wildcards
1365 -# allowed) in the rest of the file to be ignored. A line containing
1366 -# just "!!" exits the script when reached (unless preceded by a line
1367 -# containing just "--"). Once the script reaches the end of the
1368 -# skeleton file, it goes through the remaining files in the directory
1369 -# in order, putting their entries at the end. The script will use the
1370 -# ENTRY information in each info file if it exists. Otherwise it will
1371 -# make a minimal entry.
1372 -
1373 -# sent by Jeffrey Osier <jeffrey@××××××.com>, who thinks it came from
1374 -# zoo@×××××××××.com (david d `zoo' zuhn)
1375 -
1376 -# modified 7 April 1995 by Joe Harrington <jh@××××××××××××××××.gov> to
1377 -# take special flags
1378 -
1379 -INFODIR=$1
1380 -if [ $# = 2 ] ; then
1381 - SKELETON=$2
1382 -else
1383 - SKELETON=/dev/null
1384 -fi
1385 -
1386 -skip=
1387 -
1388 -if [ $# -gt 2 ] ; then
1389 - echo usage: $0 info-directory [ skeleton-file ] 1>&2
1390 - exit 1
1391 -elif [ -z "${INFODIR}" ] ; then
1392 - INFODIR="%%DEFAULT_INFO_DIR%%"
1393 -else
1394 - true
1395 -fi
1396 -
1397 -if [ ! -d ${INFODIR} ] ; then
1398 - echo "$0: first argument must specify a directory"
1399 - exit 1
1400 -fi
1401 -
1402 -### output the dir header
1403 -echo "-*- Text -*-"
1404 -echo "This file was generated automatically by $0."
1405 -echo "This version was generated on `date`"
1406 -echo "by `whoami`@`hostname` for `(cd ${INFODIR}; pwd)`"
1407 -
1408 -cat << moobler
1409 -\$Id: mkinfodir,v 1.1 2001/09/01 07:56:19 drobbins Exp $
1410 -This is the file .../info/dir, which contains the topmost node of the
1411 -Info hierarchy. The first time you invoke Info you start off
1412 -looking at that node, which is (dir)Top.
1413 -
1414 -File: dir Node: Top This is the top of the INFO tree
1415 -
1416 - This (the Directory node) gives a menu of major topics.
1417 - Typing "q" exits, "?" lists all Info commands, "d" returns here,
1418 - "h" gives a primer for first-timers,
1419 - "mEmacs<Return>" visits the Emacs topic, etc.
1420 -
1421 - In Emacs, you can click mouse button 2 on a menu item or cross reference
1422 - to select it.
1423 -
1424 -* Menu: The list of major topics begins on the next line.
1425 -
1426 -moobler
1427 -
1428 -### go through the list of files in the skeleton. If an info file
1429 -### exists, grab the ENTRY information from it. If an entry exists
1430 -### use it, otherwise create a minimal dir entry.
1431 -###
1432 -### Then remove that file from the list of existing files. If any
1433 -### additional files remain (ones that don't have a skeleton entry),
1434 -### then generate entries for those in the same way, putting the info for
1435 -### those at the end....
1436 -
1437 -infofiles=`(cd ${INFODIR}; /bin/ls | grep -v '\-[0-9]*\.gz$' | grep -v '\-[0-9]*$' | egrep -v '^dir$|^dir\.info$|^dir\.orig$')`
1438 -
1439 -# echoing gets clobbered by backquotes; we do it the hard way...
1440 -lines=`wc $SKELETON | awk '{print $1}'`
1441 -line=1
1442 -while [ $lines -ge $line ] ; do
1443 - # Read one line from the file. This is so that we can echo lines with
1444 - # whitespace and quoted characters in them.
1445 - fileline=`awk NR==$line $SKELETON`
1446 -
1447 - # flag fancy features
1448 - if [ ! -z "$echoline" ] ; then # echo line
1449 - echo "$fileline"
1450 - fileline=
1451 - echoline=
1452 - elif [ "${fileline}" = "--" ] ; then # should we echo the next line?
1453 - echoline=1
1454 - elif [ "${fileline}" = "%%" ] ; then # eliminate remaining files from dir?
1455 - skip=1
1456 - elif [ "${fileline}" = "!!" ] ; then # quit now
1457 - exit 0
1458 - fi
1459 -
1460 - # handle files if they exist
1461 - for file in $fileline"" ; do # expand wildcards ("" handles blank lines)
1462 -
1463 - fname=
1464 -
1465 - if [ -z "$echoline" -a ! -z "$file" ] ; then
1466 -
1467 - # Find the file to operate upon. Check both possible names.
1468 - infoname=`echo $file | sed 's/\.gz$//'`
1469 - infoname=`echo $infoname | sed 's/\.info$//'`
1470 - noext=
1471 - ext=
1472 - if [ -f ${INFODIR}/$infoname ] ; then
1473 - noext=$infoname
1474 - fi
1475 - if [ -f ${INFODIR}/${infoname}.info ] ; then
1476 - ext=${infoname}.info
1477 - fi
1478 - if [ -f ${INFODIR}/${infoname}.info.gz ] ; then
1479 - ext=${infoname}.info.gz
1480 - fi
1481 - # If it exists with both names take what was said in the file.
1482 - if [ ! -z "$ext" -a ! -z "$noext" ]; then
1483 - fname=$file
1484 - warn="### Warning: $ext and $noext both exist! Using ${file}. ###"
1485 - elif [ ! \( -z "$ext" -a -z "$noext" \) ]; then
1486 - # just take the name if it exists only once
1487 - fname=${noext}${ext}
1488 - fi
1489 -
1490 - # if we found something and aren't skipping, do the entry
1491 - if [ ! -z "$fname" ] ; then
1492 - if [ -z "$skip" ] ; then
1493 -
1494 - if [ ! -z "$warn" ] ; then # issue any warning
1495 - echo $warn
1496 - warn=
1497 - fi
1498 - if [ "${fname##*.}" = "gz" ] ; then
1499 - entry=`zcat ${INFODIR}/${fname} | sed -e '1,/START-INFO-DIR-ENTRY/d' \
1500 - -e '/END-INFO-DIR-ENTRY/,$d' `
1501 - else
1502 - entry=`sed -e '1,/START-INFO-DIR-ENTRY/d' \
1503 - -e '/END-INFO-DIR-ENTRY/,$d' ${INFODIR}/$fname`
1504 - fi
1505 - if [ ! -z "${entry}" ] ; then
1506 - echo "${entry}"
1507 - else
1508 - echo "* ${infoname}: (${infoname})."
1509 - fi
1510 - fi
1511 -
1512 - # remove the name from the directory listing
1513 - infofiles=`echo "" ${infofiles} "" | sed -e "s/ ${fname} / /" -e "s/ / /g"`
1514 -
1515 - fi
1516 -
1517 - fi
1518 -
1519 - done
1520 -
1521 - line=`expr $line + 1`
1522 -done
1523 -
1524 -if [ -z "${infofiles}" ] ; then
1525 - exit 0
1526 -elif [ $lines -gt 0 ]; then
1527 - echo
1528 -fi
1529 -
1530 -# Sort remaining files by INFO-DIR-SECTION.
1531 -prevsect=
1532 -filesectdata=`(cd ${INFODIR}; fgrep INFO-DIR-SECTION /dev/null ${infofiles} | \
1533 - fgrep -v 'INFO-DIR-SECTION Miscellaneous' | \
1534 - sort -t: -k2 -k1 | tr ' ' '_')`
1535 -for sectdata in ${filesectdata}; do
1536 - file=`echo ${sectdata} | cut -d: -f1`
1537 - section=`sed -n -e 's/^INFO-DIR-SECTION //p' ${INFODIR}/${file}`
1538 - infofiles=`echo "" ${infofiles} "" | sed -e "s/ ${file} / /" -e "s/ / /g"`
1539 -
1540 - if [ "${prevsect}" != "${section}" ] ; then
1541 - if [ ! -z "${prevsect}" ] ; then
1542 - echo ""
1543 - fi
1544 - echo "${section}"
1545 - prevsect="${section}"
1546 - fi
1547 - infoname=`echo $file | sed 's/\.gz$//'`
1548 - infoname=`echo $infoname | sed 's/\.info$//'`
1549 - if [ "${file##*.}" = "gz" ] ; then
1550 - entry=`zcat ${INFODIR}/$file | sed -e '1,/START-INFO-DIR-ENTRY/d' \
1551 - -e '/END-INFO-DIR-ENTRY/,$d' `
1552 - else
1553 - entry=`sed -e '1,/START-INFO-DIR-ENTRY/d' \
1554 - -e '/END-INFO-DIR-ENTRY/,$d' ${INFODIR}/$file`
1555 - fi
1556 - if [ ! -z "${entry}" ] ; then
1557 - echo "${entry}"
1558 - elif [ ! -d "${INFODIR}/${file}" ] ; then
1559 - echo "* ${infoname}: (${infoname})."
1560 - fi
1561 -done
1562 -
1563 -# Process miscellaneous files.
1564 -for file in ${infofiles}; do
1565 - if [ ! -z "${prevsect}" ] ; then
1566 - echo ""
1567 - echo "Miscellaneous"
1568 - prevsect=""
1569 - fi
1570 -
1571 - infoname=`echo $file | sed 's/\.gz$//'`
1572 - infoname=`echo $infoname | sed 's/\.info$//'`
1573 - if [ "${file##*.}" = "gz" ] ; then
1574 - entry=`zcat ${INFODIR}/${file} | sed -e '1,/START-INFO-DIR-ENTRY/d' \
1575 - -e '/END-INFO-DIR-ENTRY/,$d'`
1576 - else
1577 - entry=`sed -e '1,/START-INFO-DIR-ENTRY/d' \
1578 - -e '/END-INFO-DIR-ENTRY/,$d' ${INFODIR}/$file`
1579 - fi
1580 -
1581 -
1582 - if [ ! -z "${entry}" ] ; then
1583 - echo "${entry}"
1584 - elif [ ! -d "${INFODIR}/${file}" ] ; then
1585 - echo "* ${infoname}: (${infoname})."
1586 - fi
1587 -done
1588 -
1589
1590 diff --git a/sys-devel/gcc/gcc-5.4.0.ebuild b/sys-devel/gcc/gcc-5.4.0.ebuild
1591 new file mode 100644
1592 index 0000000..8dc1a67
1593 --- /dev/null
1594 +++ b/sys-devel/gcc/gcc-5.4.0.ebuild
1595 @@ -0,0 +1,61 @@
1596 +# Copyright 1999-2016 Gentoo Foundation
1597 +# Distributed under the terms of the GNU General Public License v2
1598 +# $Id$
1599 +
1600 +EAPI="4"
1601 +
1602 +PATCH_VER="1.0"
1603 +UCLIBC_VER="1.0"
1604 +
1605 +# Hardened gcc 4 stuff
1606 +PIE_VER="0.6.5"
1607 +SPECS_VER="0.2.0"
1608 +SPECS_GCC_VER="4.4.3"
1609 +# arch/libc configurations known to be stable with {PIE,SSP}-by-default
1610 +PIE_GLIBC_STABLE="x86 amd64 mips ppc ppc64 arm ia64"
1611 +PIE_UCLIBC_STABLE="x86 arm amd64 mips ppc ppc64"
1612 +SSP_STABLE="amd64 x86 mips ppc ppc64 arm"
1613 +# uclibc need tls and nptl support for SSP support
1614 +# uclibc need to be >= 0.9.33
1615 +SSP_UCLIBC_STABLE="x86 amd64 mips ppc ppc64 arm"
1616 +PIE_MUSL_STABLE="amd64 arm ppc mips x86"
1617 +SSP_MUSL_STABLE="amd64 arm ppc mips"
1618 +#end Hardened stuff
1619 +
1620 +inherit eutils toolchain
1621 +
1622 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
1623 +
1624 +RDEPEND=""
1625 +DEPEND="${RDEPEND}
1626 + elibc_glibc? ( >=sys-libs/glibc-2.8 )
1627 + >=${CATEGORY}/binutils-2.20"
1628 +
1629 +if [[ ${CATEGORY} != cross-* ]] ; then
1630 + PDEPEND="${PDEPEND} elibc_glibc? ( >=sys-libs/glibc-2.8 )"
1631 +fi
1632 +
1633 +src_prepare() {
1634 + if has_version '<sys-libs/glibc-2.12' ; then
1635 + ewarn "Your host glibc is too old; disabling automatic fortify."
1636 + ewarn "Please rebuild gcc after upgrading to >=glibc-2.12 #362315"
1637 + EPATCH_EXCLUDE+=" 10_all_default-fortify-source.patch"
1638 + fi
1639 + is_crosscompile && EPATCH_EXCLUDE+=" 05_all_gcc-spec-env.patch"
1640 +
1641 + toolchain_src_prepare
1642 +
1643 + # Upstream Patch
1644 + epatch "${FILESDIR}"/${PN}-4.9.3-tree-vect-data-refs-correctness.patch
1645 + epatch "${FILESDIR}"/${PN}-5.4.0-pr68470.patch
1646 +
1647 + if use elibc_musl || [[ ${CATEGORY} = cross-*-musl ]]; then
1648 + epatch "${FILESDIR}"/4.9.4/gthread.patch
1649 + epatch "${FILESDIR}"/4.9.4/boehm_gc.patch
1650 + epatch "${FILESDIR}"/4.9.4/posix_memalign.patch
1651 + epatch "${FILESDIR}"/5.4.0/cilkrts.patch
1652 + epatch "${FILESDIR}"/5.4.0/linker_path.patch
1653 + epatch "${FILESDIR}"/5.4.0/musl.patch
1654 + epatch "${FILESDIR}"/5.4.0/ppc-secure_plt.patch
1655 + fi
1656 +}
1657
1658 diff --git a/sys-devel/gcc/gcc-6.1.0.ebuild b/sys-devel/gcc/gcc-6.1.0.ebuild
1659 deleted file mode 100644
1660 index 837ef48..0000000
1661 --- a/sys-devel/gcc/gcc-6.1.0.ebuild
1662 +++ /dev/null
1663 @@ -1,44 +0,0 @@
1664 -# Copyright 1999-2016 Gentoo Foundation
1665 -# Distributed under the terms of the GNU General Public License v2
1666 -# $Id$
1667 -
1668 -EAPI="4"
1669 -
1670 -PATCH_VER="1.0"
1671 -#UCLIBC_VER="1.0"
1672 -
1673 -# Hardened gcc 4 stuff
1674 -#PIE_VER="0.6.5"
1675 -#SPECS_VER="0.2.0"
1676 -#SPECS_GCC_VER="4.4.3"
1677 -# arch/libc configurations known to be stable with {PIE,SSP}-by-default
1678 -#PIE_GLIBC_STABLE="x86 amd64 mips ppc ppc64 arm ia64"
1679 -#PIE_UCLIBC_STABLE="x86 arm amd64 mips ppc ppc64"
1680 -#SSP_STABLE="amd64 x86 mips ppc ppc64 arm"
1681 -# uclibc need tls and nptl support for SSP support
1682 -# uclibc need to be >= 0.9.33
1683 -#SSP_UCLIBC_STABLE="x86 amd64 mips ppc ppc64 arm"
1684 -PIE_MUSL_STABLE="amd64 arm ppc mips x86"
1685 -SSP_MUSL_STABLE="amd64 arm ppc mips"
1686 -#end Hardened stuff
1687 -
1688 -inherit toolchain
1689 -
1690 -KEYWORDS=""
1691 -
1692 -RDEPEND=""
1693 -DEPEND="${RDEPEND}
1694 - elibc_glibc? ( >=sys-libs/glibc-2.8 )
1695 - >=${CATEGORY}/binutils-2.20"
1696 -
1697 -if [[ ${CATEGORY} != cross-* ]] ; then
1698 - PDEPEND="${PDEPEND} elibc_glibc? ( >=sys-libs/glibc-2.8 )"
1699 -fi
1700 -
1701 -src_prepare() {
1702 -
1703 - toolchain_src_prepare
1704 - if use elibc_musl || [[ ${CATEGORY} = cross-*-musl ]]; then
1705 - epatch "${FILESDIR}"/${P}-musl-cpu.patch
1706 - fi
1707 -}
1708
1709 diff --git a/sys-devel/gcc/gcc-6.3.0.ebuild b/sys-devel/gcc/gcc-6.3.0.ebuild
1710 new file mode 100644
1711 index 0000000..cffb62e
1712 --- /dev/null
1713 +++ b/sys-devel/gcc/gcc-6.3.0.ebuild
1714 @@ -0,0 +1,32 @@
1715 +# Copyright 1999-2016 Gentoo Foundation
1716 +# Distributed under the terms of the GNU General Public License v2
1717 +# $Id$
1718 +
1719 +EAPI="4"
1720 +
1721 +PATCH_VER="1.0"
1722 +#UCLIBC_VER="1.0"
1723 +
1724 +inherit eutils toolchain
1725 +
1726 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
1727 +
1728 +RDEPEND=""
1729 +DEPEND="${RDEPEND}
1730 + elibc_glibc? ( >=sys-libs/glibc-2.13 )
1731 + >=${CATEGORY}/binutils-2.20"
1732 +
1733 +if [[ ${CATEGORY} != cross-* ]] ; then
1734 + PDEPEND="${PDEPEND} elibc_glibc? ( >=sys-libs/glibc-2.13 )"
1735 +fi
1736 +
1737 +src_prepare() {
1738 + toolchain_src_prepare
1739 +
1740 + if use elibc_musl || [[ ${CATEGORY} = cross-*-musl ]]; then
1741 + epatch "${FILESDIR}"/4.9.4/boehm_gc.patch
1742 + epatch "${FILESDIR}"/4.9.4/posix_memalign.patch
1743 + epatch "${FILESDIR}"/5.4.0/cilkrts.patch
1744 + epatch "${FILESDIR}"/6.3.0/musl.patch
1745 + fi
1746 +}
1747
1748 diff --git a/sys-devel/gcc/metadata.xml b/sys-devel/gcc/metadata.xml
1749 index e875d77..43abab0 100644
1750 --- a/sys-devel/gcc/metadata.xml
1751 +++ b/sys-devel/gcc/metadata.xml
1752 @@ -9,25 +9,28 @@
1753 <flag name="awt">Useful only when building GCJ, this enables Abstract Window Toolkit
1754 (AWT) peer support on top of GTK+</flag>
1755 <flag name="cilk">Support the Cilk Plus language (C/C++ based languages for parallel programming)</flag>
1756 + <flag name="d">Enable support for the D programming language</flag>
1757 <flag name="fixed-point">Enable fixed-point arithmetic support for MIPS targets
1758 in gcc (Warning: significantly increases compile time!)</flag>
1759 <flag name="go">Build the GCC Go language frontend.</flag>
1760 <flag name="graphite">Add support for the framework for loop
1761 optimizations based on a polyhedral intermediate representation</flag>
1762 + <flag name="jit">Enable libgccjit so other applications can embed gcc for Just-In-Time compilation.
1763 + This will slow down the compiler a bit as it forces all of the toolchain to be shared libs.</flag>
1764 <flag name="libssp">Build SSP support into a dedicated library rather than use the
1765 code in the C library (DO NOT ENABLE THIS IF YOU DON'T KNOW WHAT IT DOES)</flag>
1766 + <flag name="mpx">Enable support for Intel Memory Protection Extensions (MPX)</flag>
1767 <flag name="mudflap">Add support for mudflap, a pointer use checking library</flag>
1768 - <flag name="multislot">Allow for SLOTs to include minor version (3.3.4
1769 - instead of just 3.3)</flag>
1770 <flag name="nopie">Disable PIE support (NOT FOR GENERAL USE)</flag>
1771 <flag name="nossp">Disable SSP support (NOT FOR GENERAL USE)</flag>
1772 - <flag name="ssp">Enable SSP support</flag>
1773 <flag name="objc">Build support for the Objective C code language</flag>
1774 <flag name="objc++">Build support for the Objective C++ language</flag>
1775 <flag name="objc-gc">Build support for the Objective C code language Garbage
1776 Collector</flag>
1777 <flag name="regression-test">Run the testsuite and install the results (requires FEATURES=test)</flag>
1778 - <flag name="sanitize">Build support various sanitizer functions (ASAN/TSAN/etc...)</flag>
1779 + <flag name="sanitize">Build support for various sanitizer functions (ASAN/TSAN/etc...)</flag>
1780 + <flag name="ssp">Build packages with stack smashing protector on by default</flag>
1781 + <flag name="vtv">Build support for virtual table verification (a C++ hardening feature)</flag>
1782 </use>
1783 <upstream>
1784 <remote-id type="cpe">cpe:/a:gnu:gcc</remote-id>