From 3a343ba4c4c05e9f1e9721480c4542f64a6e9ace Mon Sep 17 00:00:00 2001 From: Yixun Lan Date: Sun, 9 Apr 2023 05:15:29 +0800 Subject: www-client/firefox: drop it, as already pushed to official portage Signed-off-by: Yixun Lan --- www-client/firefox/Manifest | 99 - .../firefox/files/disable-auto-update.policy.json | 5 - www-client/firefox/files/distribution.ini | 42 - www-client/firefox/files/firefox-r1.sh | 116 - .../firefox/files/firefox-riscv64-hack.patch | 102 - .../firefox/files/firefox-riscv64-support.patch | 3283 -------------------- www-client/firefox/files/gentoo-default-prefs.js | 12 - www-client/firefox/files/gentoo-hwaccel-prefs.js | 3 - .../firefox/files/gentoo-hwaccel-prefs.js-r2 | 5 - www-client/firefox/files/icon/firefox-r2.desktop | 236 -- www-client/firefox/files/icon/firefox-r3.desktop | 236 -- www-client/firefox/files/icon/firefox-symbolic.svg | 64 - www-client/firefox/firefox-103.0.1.ebuild | 1301 -------- www-client/firefox/metadata.xml | 40 - 14 files changed, 5544 deletions(-) delete mode 100644 www-client/firefox/Manifest delete mode 100644 www-client/firefox/files/disable-auto-update.policy.json delete mode 100644 www-client/firefox/files/distribution.ini delete mode 100644 www-client/firefox/files/firefox-r1.sh delete mode 100644 www-client/firefox/files/firefox-riscv64-hack.patch delete mode 100644 www-client/firefox/files/firefox-riscv64-support.patch delete mode 100644 www-client/firefox/files/gentoo-default-prefs.js delete mode 100644 www-client/firefox/files/gentoo-hwaccel-prefs.js delete mode 100644 www-client/firefox/files/gentoo-hwaccel-prefs.js-r2 delete mode 100644 www-client/firefox/files/icon/firefox-r2.desktop delete mode 100644 www-client/firefox/files/icon/firefox-r3.desktop delete mode 100644 www-client/firefox/files/icon/firefox-symbolic.svg delete mode 100644 www-client/firefox/firefox-103.0.1.ebuild delete mode 100644 www-client/firefox/metadata.xml diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest deleted file mode 100644 index c8e20c7..0000000 --- a/www-client/firefox/Manifest +++ /dev/null @@ -1,99 +0,0 @@ -DIST firefox-103-patches-03j.tar.xz 19152 BLAKE2B dc4080f058bccfe3e092834501ee6210f44a02291d177b3aba5ebf6909d612411c622c794f30437136a8826c2bfe94f568dabdf05360f9a8f14dbe742404d195 SHA512 6edbfa089a0dd97a987065d63c4c2cba417cacdd45e9a6081193e87cae60c38e6327b0cdef0c1f272e082e985289d9bb6807caf262c272165362e696ca974010 -DIST firefox-103.0.1-ach.xpi 454180 BLAKE2B 350e8fba5485ed23db305f149e517964a89c058f61144cdfad78c83afac291d6f3214fe480fca7b54cd66434494a79f20d4b57e8e96782973528a65759f8d680 SHA512 36efc86cab0ad0232c25645f94968c6aada5c96e693cf93ca3d244da99942bae6791b8ca8b9a689ffb7e8bac5afa0466178455215350eb3140bd2ca63d764fd5 -DIST firefox-103.0.1-af.xpi 419567 BLAKE2B 7d1d7769906e262cc135bf760fa0bdc34b5ccc3e821082be68a00770253e04f30633f61855558d13158a29c9280c6cb95bdf44488b7da79e0d00b3f0b6bba154 SHA512 e204446bc2fca06d536bce01d9d920f8c6aad2a78ea1cdd4e149582616bde6d1155e5a0aab91119e7b02052368cfe5662bf6636d5fe18c9ab147a357b35a54f5 -DIST firefox-103.0.1-an.xpi 498031 BLAKE2B e7440682fbaef6cda8d5e6f0069d8385fcc112b22613c6221cbc31f7b5ec683479458f42164275ff695ec3b765588db38dfb83a2f26afa1b1c896aad4dc3577d SHA512 35540a4ce39efc8c65282bf5e5934f3b1d932db295976a889f3086437454d0bd0987af17feb6d935154dea41476f59a32910d1196099fdeacb12507a4d067e77 -DIST firefox-103.0.1-ar.xpi 561680 BLAKE2B 606e04a5f6bd8f5b79b9d80b8cf180d21a181a4a5b15d1556879fe8fdbba80c7fc24e6055a5cc4ebf1a9c9069100f61fb670bc32ac3cac7af9c7539cfd611ef9 SHA512 156c635d58dc4283cda6ea951886732747e724228933a3aebf8c7ff1629660a529f5c2052613240dd8c9c85186b754edd26462108dbc3cb6c3951d2bceaedeab -DIST firefox-103.0.1-ast.xpi 494288 BLAKE2B c443bda216ea18aad76cabf5649977e8b1023012fbc46e986a2cdd08e6bf67b7c8f471025b1c591173749223f975ff71eef3b9bc4c5053728e76d55d22a279c2 SHA512 e8e8b71dde722dfad3360c8b578bd3ba1ea40efcb9214cc5a25e82f90c0d4fcaca16a070e346493b81237bf4265d81523c198d02ea3225eae83622b96062be59 -DIST firefox-103.0.1-az.xpi 485448 BLAKE2B d8095924cc95dee7d2aa16761d79dc6e5bb9070c25562b56c49e3415bb81bfaf773d15554f3128a8da011f860d5ccfed010f32039831b52ed701c24580d26f1a SHA512 2abcef585eaef03f6cce10bb39e9c8de05a324620762f0bdaddbe15550afe65dcc35d71d564c84c2bc263c4d1c1a0aa2119e5a1265b2a3247aa0247222e9b311 -DIST firefox-103.0.1-be.xpi 625934 BLAKE2B 85b364e2f6232afbe0e1d8a1f1837e61dd63443746f14f4129b2249de073b8834028f19a0cc2b09d7b99d01a697f157d0d9769bec919406e4f183f48138cc8a1 SHA512 c887055d8369cabaca43a401011cd4c706f0546ba6ed4648980b0824e75edf73f91673354ccda1355967efe70b289d8f8bb9f581cdc37b05ac41ed8231357e06 -DIST firefox-103.0.1-bg.xpi 574190 BLAKE2B a45d5acddc70f08999e657e5eb3055fcab55ab1b21b29e4c9f9ab67db4b96d8472859367683caa0f26069727d675f90b32e9918fcbbc0d237550fdf2e2f2dea2 SHA512 e0e0e67921bc67ef16cb40fdb6543b39c935d20940a2ed18416f70662d9504a0743a1dab841214bb087ed6472b30d944beb8479eac3986c4287ce1df758630e4 -DIST firefox-103.0.1-bn.xpi 576223 BLAKE2B bf5cdae17920b8946d641aaf78b5a1d7d8bb0c8b3a64cc56458f0c75d2063712fd28ca6955c500c5ad5aab400a2e1f9c3d66ac5dd074bc79271e06304b9e9557 SHA512 1739c3125eeb6826b016ea4d28844e71d45e0bad2f4d422b8c7677dad34b03660840ebafbaedc1fe27c7f66b9a9ed42d0a57c32bbfcc59a7c53493a0ec9e7d9d -DIST firefox-103.0.1-br.xpi 532123 BLAKE2B 38ce46e4f98ec47190aab10156d37a0589bac61cce0945734a043bfe2fd761da0596fc807592f87dab4c2c9d02ab30d9db2bcc5cf01434be2d7f89d7bad97d40 SHA512 025ea89eba79d5db4d1fe3e277aa9a1e511b8ed7dc2e613059e131575f0abb09715b04de451db552040499e2f6b29421384f315e0fbeccd7f9fecb892b44a52b -DIST firefox-103.0.1-bs.xpi 462892 BLAKE2B 97222965a6f465b797d208cdb19a7a7c3d2c5a340c5661600ad8bd5d5c10b06b8ce2837ee1af69d75c62cfac0d596f930671778bc831a2a9d013096ece9e6b9a SHA512 bb23a6361e21c2a46d1800d5628e96164db29ba2b8121ba1ca7c590920d3239bf9b5d3d09595a303a2053c9123467bfb0eaceb9dcdec7618c4e2d5fbc91bdee8 -DIST firefox-103.0.1-ca-valencia.xpi 537351 BLAKE2B f39260718b26764535ee9816f45f2fffcd22c0e13043b8243fd285b9c132a90e9e59cd30bfbf3730e29c6d96716534b4a14eb36067abe178ad7971b4a5957ae8 SHA512 dca2e423d4c6390a53eb6caa50aaf093150beb97a3f7a39a937e36235a69e1d4d0fff66629ecc60f63ca35bca3559d5e21d9b4fcd4ced40403c23317cabe543d -DIST firefox-103.0.1-ca.xpi 534088 BLAKE2B 63835ab296d47859ba2ea60fab1d8c6a1352cf48522e0587bf893291fa4e13411236ca9931a011d4f7c4a0f5e853c144faaacd87442164de236222f618691e0d SHA512 763dcaeed9adc56df75eb4632b6a9184b59b22f5518a223910d20934ade76467b5b2732148fc2f5342ba0371d9682ddf354ccd4b8a3823caedf3b918e44a4e0a -DIST firefox-103.0.1-cak.xpi 550806 BLAKE2B f01eb8c0bced05784340040546b88c089f0808e1f9b060714ef2ad0fe1ecfb5577f545133c3bf1e5090f6a9efc16dc5faa41f4a997fb3025f44021b2573e8660 SHA512 470917b8df6592f14386a502706c0da6ea787be0599b6b9bc455a4c7532d3b03fad2765fa2c100f62a9a552dab4180c23b3ca992dbda90685e6c4f62f3100851 -DIST firefox-103.0.1-cs.xpi 567609 BLAKE2B 065e5ace8afe256c5439a5661366213f488554b73a5c92b8fa2b0d57120010e5a463d67cb05f624bc7afde81c8afe4018c5517c9337c750022369cf2275b08f0 SHA512 8b60e4284e6c4bae9fa3cd67d58dee9b0ef76f8669585a6eaf8756aa0bbf1452e2c456cd377e70702a2c3407b74198aa086c94b1ea51a2ce919df938ba244ded -DIST firefox-103.0.1-cy.xpi 545481 BLAKE2B bf45c050be5435c55071e00d1bd0e88c782c75e2e939a63b962bd305a2a1ae75a955783e218c5b495d11d1bee428531c176dc66db04430150639f62286fdffe6 SHA512 a9e91cb710400b9004ac614c74398a30a2d0c811b7f5f2e470192255162a7a5b13e71c8b247ae2a19a7e5397486fbda516b33742ef4a599b57a36e5f390890b9 -DIST firefox-103.0.1-da.xpi 535886 BLAKE2B 12d78d808f512600a1514dbe01ae5dc77e92341e7157f86782a1d2ef913f1dffd9ed34ab14202de6e51fbeb89bc9f43ac0c5a47c93e5baea1a70399a2feaed25 SHA512 c54e5c9d28b709554408c762d9976bc18d2288cbee10e08b7a4ca215ed50be9033ea2f9b2c1a35e12df80fc0939a5b945dcf5cb693884fd05b9e2ac457527a15 -DIST firefox-103.0.1-de.xpi 555988 BLAKE2B 303a0be5291c9173c1d20c9b1a8cf20e77530d394bf80e071007802234577553bdce636cb791bf880924d85ce82cfb993063e9272d8e8db96ca1566c4d19c4d2 SHA512 4cce07a305c17a1516aef2eff0b525a62b37e4f0a03cba62dd54db4a53a4205fe8f908284aaf7dbeddc51f0c3b7cf4b7196fca0a058a76e402039cc790febcbc -DIST firefox-103.0.1-dsb.xpi 569472 BLAKE2B 06b0345fb26895a0f99791310ac9782244b86d059561f3dfe1273f95a3bd42312ed73ca1720822048f582931699a9c3149d85556f4508ffa0769ac5c750910a0 SHA512 6ffece90e31be81a1352fc8b3b8b25df7d7cabe4788d7398b767ddcdb49822658e0dc0de1bff74078362465ec26c8bcd1e5e35b213281ee9503ca4ace270dfed -DIST firefox-103.0.1-el.xpi 640805 BLAKE2B 044d238602aff05a75cc31446ee718e681fc93d7681f9e785020f9c774f1a2b980931e03a99942f615fcb1c7874803459b1112a2c29e180e3654b42573ecdf47 SHA512 294d31c28806632fe879350b42cb3e3fa999904c275da304aa9190a797bf5fbe479441180938cf728429e59a5e75b0be2bb59d6ba4454ba6f875ed7f9539acad -DIST firefox-103.0.1-en-CA.xpi 513842 BLAKE2B 9bffcb48c629e6031ebb67ec4a7cd2204c5426bc06dad92e975acbdbaeb17a8cd8b208bfe42a1c1373b8658a165d84c644229e7827c6ffa0274b17f159600f92 SHA512 bc786ed24bc241d226636e8154cc1750321370326d5e67eb4fa9181b6498e8cff783b2af257ef702bf29b44798ca22852589538860ae3351482e9d886b61d28f -DIST firefox-103.0.1-en-GB.xpi 514045 BLAKE2B ee925bd08b5e9d4e202337e85351129ae6983e1d83c6a7dcd2f5ac455768a356ca83eb9e9dbe286a887c23dfb1dbf9d29546b06f2ded3dd98e47b0cf1bcb1ead SHA512 54b778e963875b7063deb20d34bcf65f2a4b60050946f63ecc1c2c1119176694e453e60bc2944f8bf91e4d399e765be5d37277db249e576cb0f237ab0b1876c0 -DIST firefox-103.0.1-eo.xpi 540165 BLAKE2B 4a6540f04e0f1b247fb3fb9b0e9332ef5fd4d25fcf33d845e7a60dc46d25201151cb1601a868deec0810c0c001890e5105dda97cf6819687e8c03251d4e13568 SHA512 87bf652f5a8c14b5f029d6d229a951e5d1e513bc5a89b605d32046ae950f7fcf9cad36dcb7531b9ba6ea364161d0b5d0116b39e15c58f000cf66a17c6979a909 -DIST firefox-103.0.1-es-AR.xpi 550477 BLAKE2B 674e6f2779d0a5da638441f5cad8bcddfc095cbbe2dfccf8610e85b405dad60999f0db352aeb0bb298c0748449186f95a03b388d11ec3a331ef456cd1971d071 SHA512 5e7eda59a7ab6aaf8274d21f30863192aac640e0060b3c3874a58190483ce7db359d41115196d8dc5691c9f331e8243b6eb3c570b1c9dc4160a0b7f38a24c023 -DIST firefox-103.0.1-es-CL.xpi 549855 BLAKE2B 520a1bdada5b63de8af347520f78dfe1c30941510b9f2ab4cee215766c13f1318f938b610f06b88d346e2742eff400b847a1675a10a4c08d4604377e9394820e SHA512 b664a17962cc7341da4e2c4623b5a3869e8c028cbe1972d13ca02dcf1c3ff3da1f4426aa24e017b506eacc018c4b05b1d0f25325e2ca36a6b3175431aafa8b89 -DIST firefox-103.0.1-es-ES.xpi 541257 BLAKE2B ee8032d66e174309a8ec8457c9929ae05a3860ccd6d08b4ba5088eb2f385e6b406335a0a8b797b28db42e4bf9a4ac3f989a0740419d36194c38bdb7711b58ef6 SHA512 57eb8cd2376208cc3daf5adbcfb2c577857a8a1d6ca1c38a0d862024c1677e6b667cc18d6c99003acdc13fe56c04bc02aa425af0ff22476a0ae03128315e87e6 -DIST firefox-103.0.1-es-MX.xpi 553698 BLAKE2B 8a1c7c690915485e233de7c517688eb906c1cae737fb9be424f3809b51b0a394c656a5d3f09db975802c9c16f5b5d67e8ad3cf3a70a1ac046ad8f08fc10ff2d2 SHA512 bb7110e8370dfdc3a5386c710373fe4d38b795ef1d42896dc255609797a3009d9b94b25a45e9e600efed32c2f8b0d34e923738712026fee69a09c955f5dfe4b2 -DIST firefox-103.0.1-et.xpi 530732 BLAKE2B af9867d87c191d7f4d3bc47d3b3a8cc4fcdec651e7bc4704bbcd12c6ee5a9cef081b83ca16c9b4a31e45599bf8e749a4a9cc8bb1b90da40a618267e7a968b005 SHA512 9e848eda97cc0733a87d909bad8634c6ce2c4f993209be354b5f35d22e3a1157963d0d25fea8ebbfd6c1cc84974f5b0236cc29bcdeeaba40b8187a2eed9f3e4f -DIST firefox-103.0.1-eu.xpi 540016 BLAKE2B 23cc04352ed44180903f0873afca91740dac6855aafef6592801c32fe10df33a85b059e79cbe81cd750701a7da79023c1a477a330627c085198e25172f0a66bf SHA512 a4ff6ac7c33166a14b2cd32b8f2f0204c9278f6fd633af42868c944862064847dc13efe1080ea9ffe72fa0477a63ec980b1124960f16cc03485595953f9092c7 -DIST firefox-103.0.1-fa.xpi 561835 BLAKE2B 57a0e1881388a6d8c28eeb848783ff72946a83b3a214e9635f4c9feb03c2e6f6cc2ede18971275b66be52ef27df44f5da5ed06572ff1b1be77b7be62fb70371b SHA512 00f567229df51a5c33a55c08475ead09f1eb85029f414b6206de47d892ebfd7d4cbb303fc761cec289625f1641179305d467fb2400426c4bd31b0d4b2888847e -DIST firefox-103.0.1-ff.xpi 472339 BLAKE2B d0756543217ce5a001546de3e7c2229864aed307eb0edb1800ae598d4267a8a695cc68b24d0430052db94afa8a1ff69c7bd365f87cb218a11eae5c6b06f28867 SHA512 b42180bb24e5fee6f4ef2ad6a8404945855faf20b8bd9b552903c2a38dd0c23ba0868a8449209ae82b551288a471f5350b4f1dbb15097f0beff10f7f5e396169 -DIST firefox-103.0.1-fi.xpi 534455 BLAKE2B b901dcc37911b268a9c04279885d1fa58b706bc06e4cc6be44c1d44c553ee2cc73024cbcce43112c23c669da455cc8732b4794e845d3327b188ebffa00a7b4f7 SHA512 53951a57c1becfb18db6ad601780b49fd4d4b3b2eda24040b5cf508d465aec23abe61d9fa086d91b99debfcc2755524f488ef5a6776701d08dc7dc500cdb9f2c -DIST firefox-103.0.1-fr.xpi 561669 BLAKE2B c1609a28d03aa599805968794814747b8825845de3be33ea12e77b0f32c8a8325288e072b78879a54c644bb0631f878b4a21a92c9b1086a6ace1125367432f21 SHA512 261867c89c5f4331faec401b5ad0f9e166760e032924646bc8b6d0d77ddb82b4d150112baee565d5f7a47c195f90eba6a55656bb2f79a556c470603407cca312 -DIST firefox-103.0.1-fy-NL.xpi 546731 BLAKE2B d0aa5d376cca3f97df44af1d9f7987c169e76e07ae732ad79e0198a135c95288915bab75161da3f2205a29c99d82feffd051d07b2527ca5a1930a66b8fa5ca41 SHA512 6519b9d52a9f3ed650076c991fc6cf24713a2f203b047938e6abc642e2ba343e124ff39d8476ae58bfcca93cc99f11213d78d1710c5946ae4b62947a421492b6 -DIST firefox-103.0.1-ga-IE.xpi 471799 BLAKE2B bdd5c5d5d55b0a19b195d81081c285d66688a75291ac23fa0666c74b94a6e92c194923118ea348f4e59140d1f3ebbe4999ef5c3eeed41cdf9ca11436ccf0bace SHA512 2a0ee31afabe79e4f00f8f385953dd7cdb5f80273a4027b776396e2dd26709c0f28c48214f1a62858fd73ea8cbab7ce829f69f78781d283458af47f2a1152b4a -DIST firefox-103.0.1-gd.xpi 533648 BLAKE2B b97b0f198d86a6968220af72f0915c8c1d41bdfe950349430ebccac97cb403cf127f82978648d043f3699e1c3f6b640fad96ab8d2061953aae5e531ec0b4750b SHA512 56cb374044b5e7a5a924029dc6397601b6e87cf943af8d2f79c9e38df8c97a052d0c992f6e44158e6a23fb3b002e4d85a1592251f7d3c2e60b0f91f9f46cd600 -DIST firefox-103.0.1-gl.xpi 540057 BLAKE2B 0ec6b40c7a9175f127f96e52b79becd9882fe5623f3cf00561ce7c41c4cc73579a1e6fd6e3a9040ee3f6231778034390a86bc479d4389f57fd8f1500f57853c6 SHA512 60116df1014606b97935f36984140b4ff96fbc16e23d749965a94aadabfb43fd098aef9a650763ad30bf3c25ef394a84443e2666075a6e05bea2280955b02ec8 -DIST firefox-103.0.1-gn.xpi 561564 BLAKE2B e1a29760ebb3384d86a83acd8ec196810f57b985ba5d6e5e4dd1fd0be4bf9a265d4604c08b35b4e26b21d703a2694a21a8e41a89032ab6a40bbf68084ab742d5 SHA512 1a044632779a9d7e7040b9ab2cc1da0ab124fef35a6fb70f9fa161fe818d9d6eb9ca0063d6bc8a2d1690e52ecc4aea5226ae3f8f0ab0531df5316d6e6f14da4b -DIST firefox-103.0.1-gu-IN.xpi 526869 BLAKE2B a891065c702f8eb2137e024b2268f6a03726469575ac695d1c087716a4093f9290fa72b33b195dc708f47f55fcd2fa3fbe411da499fb73dd63e84cada772e4c4 SHA512 2177171610d3466d1c4a26932ae32728bc1363b631f6964f4bcd36cd643230f5fbbaa14ab204a493725a574cbc8a4bec8115f6bd35a17616055209c89ca1c6aa -DIST firefox-103.0.1-he.xpi 559706 BLAKE2B ce8031d8149a6270fd286012116c25d681b09d6e805623274f7fb53d7ac82117333eaf018971ab3640385a7e76d3988a3799f5e88d2e96e34bb1a16798b926f6 SHA512 2c938099d464c66d6c7e8aa5eca9fb073cc3e0728018c494bf4a01effe7cfd6e78752b2afa9a2d81024a1b7a2e738d1621d1e1690578d455719948b264af9c27 -DIST firefox-103.0.1-hi-IN.xpi 556926 BLAKE2B d2b8a700a52cf366622851ac3013b59ce9072eb7ad1f176465ffc00c101cae0dc904ed32550214e8198d0f3c6a9e5cfe29700999dca39139a63707fae3a05819 SHA512 54f76de0b86f66f0a298df11b260e7fa5c2a5c8809231a98750b9ccddb29d7be1faafe36430d1e06490a95b4b8208f830a50d75c052d298d18637f19debbc607 -DIST firefox-103.0.1-hr.xpi 530620 BLAKE2B c4523bb1337705cb7731908d130db988fad5cba3e823636abcb5dd0e968197156e8e21f38421a128fee7c749a350445980424e243521ad03c8265f25705a58be SHA512 526869c5cea7d7ad06419ad56aafbc56d397534924896510e3304ace4b023346cd4ef3ee69219b39250f6af6d826ce956cfbd0a53694b6837adeb08e9f0cdbc0 -DIST firefox-103.0.1-hsb.xpi 565694 BLAKE2B 930b452e972dc88923d3e41328e15d6d103b5d454ce7634dd4aa7a001685b336746f0b86f50581cdbd1189c4730aca92b48eed99616644003e81a7f20e5602c4 SHA512 99f2943f5502a60cbd14ed1ab9e12d3a88b134a2bfe3bebecc6564e37e1aba0ce5ef17fc535aa1f3e7834d6b85f2ef74c3b70fbd2d261d45e93bd1e6b8c39143 -DIST firefox-103.0.1-hu.xpi 568992 BLAKE2B 22c6ec23da10490925aa16b5b70c5e019dd0802e7bdfe23d231f07105c011ed5789b76a9e57116993ce533b95035d0b75990efb6628a2c6fbf7615bdf26288ab SHA512 2d8b5f6395ee51222e23f81978451b1e00aaeb8be04d053c06abd279da083ea2adedb08da6e544f0e1d7369a5b1cab8ac36c4e6113681254106d6d0b89ea371f -DIST firefox-103.0.1-hy-AM.xpi 581567 BLAKE2B 43e413889c6bf59148a7e6a1955031720a6d8ececd19bd43aefbf9588fa21a8c284255a99d90289e2170a9cfd1edc9c3d9daba9ba4f1dba83046d09b3bbb6412 SHA512 5c3576ee1ae33af189a1c694ea2be90cdd98d6fc54df583f4f27ad974ddeef55702ab1fbd370b095a5be53f6b4f94bea8358d507a01cc7abfb767d29863f0e6e -DIST firefox-103.0.1-ia.xpi 535624 BLAKE2B 443464e9cd9044abdd0db41203365a9f4836175d196392d9ea64824c63fdff00ca8a3f7e6b6dca1c83a409366dc2d3f02c7a8550196f36b841ec5e19fc4799c2 SHA512 33b67985658185065dba0e6d09df7de75d7488524158b1ee0f232a9e69ba61ec57b1dffe871ac5b316338abf292092c59b0a336e2abd6d5c7f0d0010f49a135a -DIST firefox-103.0.1-id.xpi 532811 BLAKE2B 94d704daa9d8e28bdd7e65fc2a9a6feab5f3be0c188dbd8a134727699b7ffca69a66cca0b8c613cbb30b8984c7cf81bfae08c5437c272f4f098c00e18d70b215 SHA512 172a556b4c01db3fa2907a6e874aeb1f4b448e0d747c7d6a27758b7ecc1194fe36f7b52744189b842a6204d8a1dec56dde71889519006bebf7477e3de27e4baa -DIST firefox-103.0.1-is.xpi 540847 BLAKE2B e35aa14a437a6f257b749302d1b1a1c57b5499f1c3259cd5605a72dbfdf610058878a62d01037c855ef112e61ae1cda27d6daf31ae7aa1b2d1c8541983faba8a SHA512 f88f03651e8e2d3a2787614f523e28527cdbdbd40ffda0bc1c5c43b3de0ce5755d1cc9a38e3f2d52557d14e774a42c7c967303db35cd49d48620f3857ed64504 -DIST firefox-103.0.1-it.xpi 454439 BLAKE2B 61e5148e9df3fe6797b7b6484a3936c6da29803cbeae75fe768cdbe38937fe2b98b8aaa16be8e098c36c16f8fbc28f4ec06a98474c17f1f7ba2ad3d62542e3d6 SHA512 3e96c8b7a644fa1fe8e1589a97f1100a7b400b14d1a996fc045900752af3ab4c92bdefa5b0ce9052b70fc303749fde3aabdeadf1e7b147c7640aa1a0e7731c7b -DIST firefox-103.0.1-ja.xpi 574517 BLAKE2B 6002448d6fe2946645c2fb3ebd8ee3468504a1b20b61695a80c9d203c73bb7e93d135b5dce08433b3310f47f164dae29bafccebd7b0cb07222c5928c32531dd0 SHA512 e48a75c02ecd3f3675321da8c14312ad55cb78ef3da8082a038960ec32594b2d41a0571111e579110d3cdb0083246281224a35675a04680c947371ee96927968 -DIST firefox-103.0.1-ka.xpi 594023 BLAKE2B 347e9b25912db37490b8c3b50728ffeb9795805e0f0926ab24a7bda220420ee27f5c465085eb137c8cfa5d9cd6dc2cee319fa14aff48fc82d448f802673b3d4d SHA512 99f8b45937b4693f8129b8e2678913c9766f2abe1fd8c263d6bc1f8ef273eec2a8045d6423af5dd360bd4dcc3bdd1bbcb82a2f37ba5839a1b87700b0d22aafa1 -DIST firefox-103.0.1-kab.xpi 554265 BLAKE2B 5c4a589e71bce3dae8c5e2a51f71656b1ceb7bd78cc11e557eba0b449de88d8d49ca26d9a93ece68519fd74d48df532edd1a20ef3513a822de1b8167cfe99285 SHA512 7a50ae25949c456a39d5923a07a104462029cb80418fa9db127301ad1ee524afafb005d9d709dfd9a1e2aabc681666bce5342fa3ce307b812c1ffca36089773b -DIST firefox-103.0.1-kk.xpi 616956 BLAKE2B a48871662163b31df30c3cd77a34d2529736fd3ea3875f7e71b78821b91928069fd718633c948509a5820305c0ba0ec4096c779db3dc2277d0c35efacd78132c SHA512 08f98b9a0cd0b0f02b1b42be669200706bf7aebe353cb63f1f6ee86cd8ba7436656709c587492d58f0f53b55e93e03555b588d8c872a1a236bb1fbaaf4fa286d -DIST firefox-103.0.1-km.xpi 531396 BLAKE2B ead91b703e41f62323d7b00918f6a0620f10cd6f64a2202c8abd2bca2dfedcff23516bf239d472f619027329cff82b982c6863f088d0d092a61c29058b43d79f SHA512 31f7b421c3ca5adb5bbbcc0b5fdaf5a777d2f2a1c625e02cefe3511a389d36dbf1209234e52e62cc0343b63a8ee9a506f463eba6382d43fe4ca178b5f5012547 -DIST firefox-103.0.1-kn.xpi 497493 BLAKE2B 4e022946652c166c3719e56c9a9aa710c881534e5d3eec8c593b383bba1d85503ce677a23f1607e29ead0316ef8d80152a59be4c87125b74b035fe6fca723899 SHA512 dbc5a9e2462ba7f92e86785b30fba0cd83ec409eeceda152f34870abc3ae9e38223d6192cdd47f045c5f5e85584b4353b09f7fe6933255abf45c3ad5df752f37 -DIST firefox-103.0.1-ko.xpi 581110 BLAKE2B 1ea3bf3f19cd0f6a93420466bb2d52e5f41b7787574e36b66adb84ed1dabbcff0062836d0a11eb8134cbeed56e1af2345e0a8b926e1974eeca4c6d546002b61a SHA512 87f4f1119647019ab7763bdafc6910013db0227f4fb248ba2c01d616aa5fb1613bbedfe9adfed0369e450f94f56d24029f36b775e2379029af81b6d08b97a4a4 -DIST firefox-103.0.1-lij.xpi 470256 BLAKE2B c73ec59d5babb7033807dad9b43653ca84c294da07cf7eb0b4eaddaa1db6061bedae8e7b0982b0dd34f7c237a56f15b2afad2a3c69b478f4393f7a8ef0aae492 SHA512 035d19c40a4fd22328a067a297c4e0d05277b6f671d342b3be49ff89f5224a3bea6e9abc3a639aaa2a9f895ba522a03f8f590fcd1fd7e6ce1f6e0d7cc8ff8c00 -DIST firefox-103.0.1-lt.xpi 562006 BLAKE2B 2ac04541539edc8274c5965472b3e617b963551c67a0fedc50b6911c30fc5b972ce8ba596420d957911b9e8990f3da4133787a408cae6514a31732935ccfaf33 SHA512 d71a2e9ca6084aa927b87628ec976a799045ff3cb708e01d5018b62a8e9536b7b16360b6c85c9994afa6b510ffa93b6666a771f6dcbf9558c1dd29706316325d -DIST firefox-103.0.1-lv.xpi 463409 BLAKE2B 4b74e079fa44b8693ab8a6ffd6f4d1726cac2772483129fd55c74ac137a64eb4c4f1022c5289ca04f459e92492b60054fd906a57d6e842606a0c43701f579b4a SHA512 556be9bd482cabb55edb7433b8822a7a7da1e9b16b066df131d6455e0ce04ddb72f69ce33691bb47c32ce02beb4e7d3c8e5a3035a0da10a7cb3d8cc44de35537 -DIST firefox-103.0.1-mk.xpi 474765 BLAKE2B 9c7488301b958d360077005deb5fdf677420cc8b26882e6236f03e28ac42da8ddaf8ed172678e8eb53ff0f913c507fc92d2b6749eeeab1110d582de107cbb8de SHA512 00b1e0759035e70bc47d372220b0c1985ba364808a28720f9b0f1589bf476a405c31a416dcb1fa759f4b7693629fb9f82c8e833ca5142c0e3cd47ea0b23c3f46 -DIST firefox-103.0.1-mr.xpi 530635 BLAKE2B 9d4d17c5b90de850a40abaff901d48c644cffa2dca81c8b7f57234844ce0db171cc6f03bc7beeddbd3431f44d01cf6dcd8f7d8cdfeb2776726dd6e19341a26a4 SHA512 5c2edd61b35c3689232961d22d1aa0badc3cd477a521c75a290ffc25aa2ae23788defdc56745a68727b9676163f34c4511c513aa7e87aa565eb0793bca93c89a -DIST firefox-103.0.1-ms.xpi 448400 BLAKE2B 53f287df3feefb0dc2db7e0a25caedd60d8530db36ef1bcc969a76e747581bcd8cee3e46d20147c6644263148cb5c608faf491f446632b0327912ffe7a8b67af SHA512 88d5f96298d3fd3a3774d029e150e5769bc1a6fe3fcb3201cd88517ce08184c2f470832350474249e7c14bfab6a6c635117fef5bf49849b27e4c123dc49214b1 -DIST firefox-103.0.1-my.xpi 510289 BLAKE2B 94b395d795863d28b099de316cb1e5b9bc512fbdaeb77ab98414ce8a22ca85ac949d9102129d2f4966ccde4586b217e2d4607e5da9da0dc1beec9968f00316c4 SHA512 19ff692f044f144856ff2bc1f31166e9e7fa299b5f9270a0ab533bfdc9c49ccba6ec503dc47923d3942fcc108832d29eb45bb781104332d12cbdf9156b553f8a -DIST firefox-103.0.1-nb-NO.xpi 533227 BLAKE2B 0533a374f699e295960bb7dde3b42f78c6c3182b12f4f0ec70dacded8e6bf8836ecf183168ae09c7ba43d65e9bd55a355e20b48740a444934968ef769dad49b4 SHA512 1ca36127aa29cec45a55f8de6f39d8a854d811924849d79790ff92b26f6dbd2e5eb54083e1ace22d645b7abb562b7f2a937bef9d2a0388586c2ae2644ae27d7b -DIST firefox-103.0.1-ne-NP.xpi 489027 BLAKE2B 40795a9d47f59502a3899c8a5c4611aaf963bd7b69d94127fd7b6a6bb9f45552460670a64cc4d2ec393d1baa28b4925e8b804e6d2293f025ba814c2ae72f666e SHA512 6b66658263e0128aa2c16ad1b00ef9a7353823ab420602e25133d8ef6920e0c1d8d3257a154f962e05193e1e73595e864a10eb68a524d781a5433493b0ee1908 -DIST firefox-103.0.1-nl.xpi 541036 BLAKE2B 0d38e3f8c8c06fd60d8f1655ccde9197961fddb1bd923874cead2db07e29354459195c04bcf35b6d27c73e63ad0b5cc46f2538bb16d65c4b1f1ed4d31e4a1fcf SHA512 38fe6dbb0510842cabcf100cc7ed1181a8c72066e5dd92bda3654ceeb27c563ab2132d9692ba8aa76936035f8016c6ead5981dc22ec6b0097c237fc7dd069980 -DIST firefox-103.0.1-nn-NO.xpi 535172 BLAKE2B 9b9e4e31cf95d93c610c7e223af94adcb037bf7ba8d8cee766aefc7404549b6377e4f2e48df33948a99eb08a90fe05dfd1a6a548854957167f58097008773636 SHA512 fbb1ab6977d8981472534c32ab7eba9c5b6a1aeb204a0bff21120498e47682bc446f2f867dce9eb1a85b48e3ae0e59347c76031615d47551ce083eb5895042e6 -DIST firefox-103.0.1-oc.xpi 556233 BLAKE2B 23e403faff4f44e2056a64eccf16cc338c4f19687ab6a57cb10fb1246a9aab82df2d86c61131174c22bfdf195cd36cd3087f25898d81d28bd3895c8dc12d4989 SHA512 0187396d7b42c369ad23127cc366e20756ecb459036659fe505c72ebab0818105b083f09d40ada144fd3b7b6c28f935590542047fb52df34d8cb6116b3a5eb9a -DIST firefox-103.0.1-pa-IN.xpi 599787 BLAKE2B 0210a219cf461e172265bee51f073669e69efdd7c8ebf2c0f94d9503d5130d0a81f209c4a5d973d8f33b5036783cc5eae34af95eaea3cda1fc0ed5f39d2ccab5 SHA512 b1cb03ff31eb0d9a19734840900c835508553e56204fdd4b29065f164a2ab26926c996f719bb5d55a9a159df6533e3ac13fbc0af294a47f408a57360e89ac712 -DIST firefox-103.0.1-pl.xpi 560477 BLAKE2B 93c37423eceeba464589cfdd0cd33829df9a0ff2668a75436954342207e3a82ee761046600675b9a1a867fa0a07d746c9840a344f9213f63cf0f05f40e48f220 SHA512 ec78a340d37dc33376dd27c818ce78200c39f32965d35cbdd52372a17b2537735a24e5284035aa5ef7e08c7f3c9f9632224620337482bd357f0ee443c75e9da7 -DIST firefox-103.0.1-pt-BR.xpi 545988 BLAKE2B 099124f7e1c5a001b850f0ce3c1bb25a80b30ffce1657e513c90e944f9476db2c25b9c15890d7f7ef7c5871ef3f56ebe50306c447ec855f0838caf0b3cee53ae SHA512 5f641fe0801cad00f62a635e5997cbcaacc4cc2388e2ace71a9b95af10649d6dbe1d0540bcc6a6e8397805a0be4ff909efbfc95fde282b4e585ac0a76d00abb6 -DIST firefox-103.0.1-pt-PT.xpi 550410 BLAKE2B d70f65d982c6ed3e266b792bd078a9b8ff5dc70e7bb569e740a68f419bda0e4a88edff937d8cc46cc090b9fb11ffc1868e293939bae76175d0f02585eabbb3c6 SHA512 8c7be713ad2e7da4f9eaa82c159d908628973f00f060849dc4523a24c6ea03a9bfe00ed452a48dfc26e4030f6b27061e61027908d10748c4134b1f293ce213d5 -DIST firefox-103.0.1-rm.xpi 539556 BLAKE2B 9644909af76bc6bc8c54449918e9c326ce6bd59f1b317c88faf1419565b872f3bb0d5a8045c8bf8d0692a370f50b7f891eda566863324883a407f1347c692864 SHA512 55eff37fa0f7b7dee136a144e9f6488325130b38189108fd8e1f9c2a03b2f3d4ca4553f0e5dedaba455df5d25e0acdd6cac94eb9c96e1f17c0aa1e23ea919170 -DIST firefox-103.0.1-ro.xpi 528561 BLAKE2B d25d05bd1374db69adabfce1d09438120981a09d96aeb87d9dade9392aef849ca6e7f16df356fe087579065c90b1f35e4d6992e9e195b98ab6e62787b3b42df7 SHA512 27d70d17cbb82dd0a176e8db6c1506d6d051cf3a8032a2f5dfbd0cfce31071d9d91e7f064c81c75deaf3e213de93314ab57b03559e3f45f1cf47562cf4800642 -DIST firefox-103.0.1-ru.xpi 630089 BLAKE2B 6529952c641360de1509055320587f87b945e232661409ac75cf4288ceabf083f9f028f23a66776e4f2866582df55ea6b682722e2ba827f7c85c73d6cc1d66f5 SHA512 bcf51f22b7fe4fff9c120dfb0e5d24a9692b12c2b047fd7c30c9ae516bab0475bb03e6bd8c22c126eadd4aa107b0a3e1b08a4c8ec2eb7265a491fb4d257110c4 -DIST firefox-103.0.1-sco.xpi 496685 BLAKE2B e79bc99927e87c54e5cc45c9108a9066fc324aee9da8720cc9dd7da1af4f151c66bd6c1e04a50272d7db8ebc8a1ae764183a9342428d61402004624783c9702a SHA512 9d432671efafa3b79bb325f535c382b419f143b4c8a5db38a8a672b314268ebf0de808e079fdf4b8e76759979e7bede1c8b7f61d70935079b8642b27f274509d -DIST firefox-103.0.1-si.xpi 485248 BLAKE2B 2ea6638a4ab598f61f5f089d7525ac9c4a2d543f20624f62b9dd561eaecac8e9552222e7eae1cb66fa4ad83adc87443dc85a014053a1acd7bed4cffef3cf136d SHA512 538194b27afae35733efa98cb650db34af2e21592b3e42cabe81117f95a8214cd65754b51c18420f1244d29c4c22ea32bbdeed571d8355d69c3d627035221a96 -DIST firefox-103.0.1-sk.xpi 569080 BLAKE2B 73a06a8cf41b713e6488610b8ffc8b4d1f2c6f01969e2cde8647e6afe1c1f5f227ca56774d36e3e8f51ebc45e12a6a872849e08876bbd56c55dd31b524d71dce SHA512 6626065cd619502a5decf9584f43a024198d2a842ae8aaafed01950ac51d7dfc2d658652eb619d84f0ab3651692856df1c2b8c35f97fee9b0c7da9cc379183ee -DIST firefox-103.0.1-sl.xpi 542272 BLAKE2B b05fc307336f56f1a0ceb6cf41bf95ecf38654be0477bb37e0dcdf9d1fdc7dc55db8a55d1e1c97b0b40afef2a408b85fa1547c5146dbb7ff68929bfc23042caa SHA512 d38973c1668641efb8589f3f4a668c6cb7da5d521a21b323dae438ebae6efdcf80e1baeb665ecbe39343b8165c5357a9e567df6fead89b4145f489471bad0117 -DIST firefox-103.0.1-son.xpi 426230 BLAKE2B 135d33247a6512e9e9c35c22c7156ea81e6152c545333c37676f0610480f359fec260633c7d5f3219c764f2f7ab14057c5efe4bbc611d39ac468707733168038 SHA512 272c4a0c46c43cf98298610359ed6ac8a6d66a24b50a7806bf31bc5b69060ac4334ee1db0a104fb8aaf679baa7e7d756046288eb7fe2cc36fb5ba94f149afd87 -DIST firefox-103.0.1-sq.xpi 557264 BLAKE2B e547d43e98e0c1a55031a01514a8f872907193fc6d2d9acba2e07d0de2393abba4861febf9947c367fe4bc90474e664c2d5d96e7f212f74af429eccbfabbef4a SHA512 9269d60e3e42de08ab6d6fc5fd95592eebb61b99b0fa472f714812402b277d550b858cb23ea3866c0c18676a62ad60fa4c4a70a88a5a0daca55650c4dec5262f -DIST firefox-103.0.1-sr.xpi 582540 BLAKE2B 13f792db4918ef1e143d4caa1bd6d775d6bd431385d04daa2c59ccd9bb9081edd2c872b05de4b0c065641082ad02e7c8b2d4c13b906063615ab1000738c58483 SHA512 77ecd2c9f2a2ee617c88a51391f038e868a50ad6307487cb48113717b671ab40bec11f1b53ef3587d96ba96d52caccf9c4fb5f68b28f74077a25c42e928f7242 -DIST firefox-103.0.1-sv-SE.xpi 542862 BLAKE2B 560d2f411c2ab548af5e10b88f90c0cb6c87b92c89cabdabce62fc060db91515c513664e7d34825c5313a58583ed1844da461ead91a71fa0a01635d4be53e1e5 SHA512 d361caa3f2135a9c4f4927dc5d4ebe6c0f3cc375d5b4147b6a59c9901821143a5097eb39be6c6cd01627a29e7f847c8fd72360a72a101e4d6f2347ba2b8f50f9 -DIST firefox-103.0.1-szl.xpi 508458 BLAKE2B dcd0949e26bf9112015b1e89c42340c5e45d479b4efc610b6bce3a6b9017262fce38601fa22ad53868974f0424d69ada90b3bf892e3481460c2d2bc88371b09e SHA512 75ab9ab58a8f6329ac703e157a8dc526e9b9853948016beaa086725c3deecc8593dc6fec7c7666c626f81677a8fdbe05fff61c8b4b41f8a851abf93c1090fe32 -DIST firefox-103.0.1-ta.xpi 510671 BLAKE2B 3da228200c470a5aaeeb1ad5075f671c84261c8c77eba4db862652ff6b7c5774a5522a0ce6b21a1f50fe8cb0d913d74c9e317ce7c9e13db481b8287cc6dd9774 SHA512 68ef9bf4f52b791ec36a845858f9873c80c2a66b52636d2c06b69820a097e65a3aba0aea401c5562767a8d793a40f0116cc76bb8bcc346c86949acc49e81739c -DIST firefox-103.0.1-te.xpi 551778 BLAKE2B 1566182a148aa4be855e260edab9fb79fa2623264164f49974360cc9c1adb1872dcd3a74a7b234b3633dde57bd33611ba7f61f26ca861407fe79360f810cb757 SHA512 67628764f316ae9b776885bd2a17948b4a9f1d764b484715422ee8741f1407c2db18de64c90aa4014789e074b94b6eaa585376baa5650d8711f7ed3e81d5dcc7 -DIST firefox-103.0.1-th.xpi 610646 BLAKE2B 3b9ac255f84b34b9ed1f0987e7bce8a5c95822bb302992e47cf6a02c1d5d672329aa15a899b1d4392faa691dc23a742f3b87e594e1f4633e47bfffab7272e85b SHA512 26254ef9a4f2be9b8115623867bf350c6e9023213320a8c21e6177b2d5cdeb47c8a25a34ce1dd0ff36118776aa95a663c3e93c5933e0b24dbf0da5d61e099d76 -DIST firefox-103.0.1-tl.xpi 518725 BLAKE2B 8513a21152b618393e872b3330f1ad82547a1c826ffb4cd32bcc05b8e811cc22e1117ee25299c667f4bbfc3af17f4ee974c9fb917b7191906bb72c5e97664126 SHA512 f86f3ea84f95016eba5eaa99b2d5376055d525a31d6d08b9270d7916c335abf4becdab695236497a04feb7d698f72f9e9a3f27d347e707008b21dc6f9c23c750 -DIST firefox-103.0.1-tr.xpi 555677 BLAKE2B b8a2f8b6ad0cc9cfe18ea5bd23a18eab8b73fb66ac517226d9d66506ed50095db37a45ada84fc3c7e47b12fa0a70df69435ee31e5841e5193995d83e7ff0ca37 SHA512 95f46570d96a81ab44f5ace88f64896e9dfd86acd4d98c91cb63ceaf42731dbc8e7b328b1b764eaeee4eeab4f6fbe7c57bffef5357325391ad71c698fb7ac5a6 -DIST firefox-103.0.1-trs.xpi 488885 BLAKE2B 77e2df1c47c1fffb248e865f105c27d2a09f9537355f0c7a848f33dadcac331a8b2922aa9b2f3787616c93274b61ec05df7bbbc7c9f803aaca34f29c92eab9ff SHA512 5b3bfae7765934189af3837b1591969ceaa483fd06d130ab296552511863b2be972e5a509053cff94e65c6dc176d07c6f6676579a64b30aa150423b1a73e9a9f -DIST firefox-103.0.1-uk.xpi 623498 BLAKE2B 78d0e757ad2a74d36985ef990a2f06db8d77d603dfa381d465690b46a3bcf429186bf8579dec7ce5f49eef09dc1f40d390dd459e71633d94b2c14dd1b11a1f2c SHA512 452ac5845c7c5968cf8b8450fdb716e719d110f1f29656637850883815e7e3b83983b10b1fb5c15eea65400c3648388f8ba7f4bf96d49824c83d99f08f25c46e -DIST firefox-103.0.1-ur.xpi 558770 BLAKE2B 1e37442c843df8a96cbadee34fe16ab2e11559e5d87f2d1859eb3e85f78096bc2396a801ac86a9eb7207a8ee49fccabd2376f3e8a8fab4943c4212eaa5cc3b68 SHA512 d8f693b33cde0433f1f358c49f3f1cec98725df47c852c284e0995177589c4e1efbd6279aabb020bfbedca8fd5e0a3eb53da4977d21e80f45b185ecd79eb0a7a -DIST firefox-103.0.1-uz.xpi 478410 BLAKE2B f594e6a0341f35bc737afbe614245663012e9d07a260921d7cc50cc4041d810927e37cacf74f760b201f01029bce7c92b75a1a6a25e3e9809b54efeb50754a35 SHA512 151638d3e42e41a41ea60ae2689f70a0cdcc99d505cef209ed806134a4bd8f7f586b3bbebd2b28412f49515d7619791e6c644b9de8edf3fd583c9690b9f4caca -DIST firefox-103.0.1-vi.xpi 576267 BLAKE2B d9c88a6862eedc2a6b1691e869608c7254c7999bb581f19cd5956fae0f165bc77da92ce21201bf9dfb64f8032f5bbd42989f905250f94dcb115bf9ae6c3bf1ab SHA512 9d2b180fc3561656fcf39ead2c12fd272c2cb8e5920a1b54cca534f989c93bc20d3f93e52d2fdbcd2d8c68fc6cafa89f2cf9caf2a9230cc142f663097f1726e2 -DIST firefox-103.0.1-xh.xpi 429247 BLAKE2B 299883a21a176cada6900fd778fe170cd0911fb40b6ac03e9462e83899cf47e0c092889e43690bfbb1ff2a634671f4e65289f71547df2572c41d1bb97acab6d0 SHA512 f02711153bc337bb3bbcbaf2fbe7b54f696fdb43cc4e12559c344387876293ca6826a42c229a65a7f888a86dd4b6723abade6015d32dbd845f33f2ad5164d3a1 -DIST firefox-103.0.1-zh-CN.xpi 577425 BLAKE2B da82d2b3d75a385eebcdedd769f111de4ad05bd7ea2835d4e0c1096a5774af40584d8fe5d29a768455613be03ee3de5aa8d1713cc804195517eed31a590955b4 SHA512 14f5324508a8820bdd8a248a4e989444c444a183aad99f96ef841d98804d1941189e49143ae9c96b63ac0427d277c7a29357752234b9ce0be543c491e9c03b7d -DIST firefox-103.0.1-zh-TW.xpi 578007 BLAKE2B 4cd77a1ad9046f2799a0da55831533d989b5ff7680988a96b2e9d184ff82edaaa5717830782760e3d2b3ad7a4a4efc75133e9787f5f32969bc3cc57b3674a249 SHA512 4c054aae826b5e54e5f3c5c4c2baf10b63c307684625c3f0d48f3de4ee18bc7923f0e03eff89fe74699b30fd971b80cb5fafe033d1ab2a68949a466c0be3e48c -DIST firefox-103.0.1.source.tar.xz 480380068 BLAKE2B eb9a4212e44ed835b62674e6bfba63aab0cfa76ac40010cc8da195835f3f3f8733d1de2710a1c2ed9db1b4275ad23b2022988c0592f0579f455e50756c220ef9 SHA512 cb487e1d5d602e6b07093b5e722c4e70b9bf39f42c13c25642f263f90f9d3940d02e6fdbab9e8f41b66a50f81d70300acf81c222f08a26eed3ae55777fdc6303 diff --git a/www-client/firefox/files/disable-auto-update.policy.json b/www-client/firefox/files/disable-auto-update.policy.json deleted file mode 100644 index f366220..0000000 --- a/www-client/firefox/files/disable-auto-update.policy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "policies": { - "DisableAppUpdate": true - } -} diff --git a/www-client/firefox/files/distribution.ini b/www-client/firefox/files/distribution.ini deleted file mode 100644 index 680512e..0000000 --- a/www-client/firefox/files/distribution.ini +++ /dev/null @@ -1,42 +0,0 @@ -[Global] -id=gentoo -version=1.0 -about=Mozilla Firefox for Gentoo -about.de=Mozilla Firefox für Gentoo - -[Preferences] -app.distributor="gentoo" -app.distributor.channel="gentoo" -startup.homepage_welcome_url="https://www.gentoo.org/" - -[BookmarksToolbar] -item.1.type=default -item.2.title=Gentoo's Bugzilla -item.2.link=https://bugs.gentoo.org/ -item.3.title=Gentoo Forums -item.3.link=https://forums.gentoo.org/ -item.4.title=Gentoo Packages -item.4.link=https://packages.gentoo.org/ -item.5.title=Planet Gentoo -item.5.link=https://planet.gentoo.org/ -item.6.title=Gentoo Wiki -item.6.link=https://wiki.gentoo.org/ - -[BookmarksMenu] -item.1.title=Gentoo -item.1.type=folder -item.1.folderId=1 - -[BookmarksFolder-1] -item.1.title=Gentoo Linux -item.1.link=https://www.gentoo.org/ -item.2.title=Gentoo's Bugzilla -item.2.link=https://bugs.gentoo.org/ -item.3.title=Gentoo Forums -item.3.link=https://forums.gentoo.org/ -item.4.title=Gentoo Packages -item.4.link=https://packages.gentoo.org/ -item.5.title=Planet Gentoo -item.5.link=https://planet.gentoo.org/ -item.6.title=Gentoo Wiki -item.6.link=https://wiki.gentoo.org/ diff --git a/www-client/firefox/files/firefox-r1.sh b/www-client/firefox/files/firefox-r1.sh deleted file mode 100644 index 853a4ef..0000000 --- a/www-client/firefox/files/firefox-r1.sh +++ /dev/null @@ -1,116 +0,0 @@ -#!/bin/bash - -## -## Usage: -## -## $ firefox -## -## This script is meant to run Mozilla Firefox in Gentoo. - -cmdname=$(basename "$0") - -## -## Variables -## -MOZ_ARCH=$(uname -m) -case ${MOZ_ARCH} in - x86_64|s390x|sparc64) - MOZ_LIB_DIR="@PREFIX@/lib64" - SECONDARY_LIB_DIR="@PREFIX@/lib" - ;; - *) - MOZ_LIB_DIR="@PREFIX@/lib" - SECONDARY_LIB_DIR="@PREFIX@/lib64" - ;; -esac - -MOZ_FIREFOX_FILE="firefox" - -if [[ ! -r ${MOZ_LIB_DIR}/firefox/${MOZ_FIREFOX_FILE} ]]; then - if [[ ! -r ${SECONDARY_LIB_DIR}/firefox/${MOZ_FIREFOX_FILE} ]]; then - echo "Error: ${MOZ_LIB_DIR}/firefox/${MOZ_FIREFOX_FILE} not found" >&2 - if [[ -d ${SECONDARY_LIB_DIR} ]]; then - echo " ${SECONDARY_LIB_DIR}/firefox/${MOZ_FIREFOX_FILE} not found" >&2 - fi - exit 1 - fi - MOZ_LIB_DIR="${SECONDARY_LIB_DIR}" -fi -MOZILLA_FIVE_HOME="${MOZ_LIB_DIR}/firefox" -MOZ_EXTENSIONS_PROFILE_DIR="${HOME}/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" -MOZ_PROGRAM="${MOZILLA_FIVE_HOME}/${MOZ_FIREFOX_FILE}" - -## -## Enable Wayland backend? -## -if @DEFAULT_WAYLAND@ && [[ -z ${MOZ_DISABLE_WAYLAND} ]]; then - if [[ -n "${WAYLAND_DISPLAY}" ]]; then - export MOZ_ENABLE_WAYLAND=1 - fi -fi - -## -## Use D-Bus remote exclusively when there's Wayland display. -## -if [[ -n "${WAYLAND_DISPLAY}" ]]; then - export MOZ_DBUS_REMOTE=1 -fi - -## -## Make sure that we set the plugin path -## -MOZ_PLUGIN_DIR="plugins" - -if [[ -n "${MOZ_PLUGIN_PATH}" ]]; then - MOZ_PLUGIN_PATH=${MOZ_PLUGIN_PATH}:${MOZ_LIB_DIR}/mozilla/${MOZ_PLUGIN_DIR} -else - MOZ_PLUGIN_PATH=${MOZ_LIB_DIR}/mozilla/${MOZ_PLUGIN_DIR} -fi - -if [[ -d "${SECONDARY_LIB_DIR}/mozilla/${MOZ_PLUGIN_DIR}" ]]; then - MOZ_PLUGIN_PATH=${MOZ_PLUGIN_PATH}:${SECONDARY_LIB_DIR}/mozilla/${MOZ_PLUGIN_DIR} -fi - -export MOZ_PLUGIN_PATH - -## -## Set MOZ_APP_LAUNCHER for gnome-session -## -export MOZ_APP_LAUNCHER="@PREFIX@/bin/${cmdname}" - -## -## Disable the GNOME crash dialog, Mozilla has its own -## -if [[ "${XDG_CURRENT_DESKTOP}" == "GNOME" ]]; then - GNOME_DISABLE_CRASH_DIALOG=1 - export GNOME_DISABLE_CRASH_DIALOG -fi - -## -## Enable Xinput2 (#617344) -## - -# respect user settings -MOZ_USE_XINPUT2=${MOZ_USE_XINPUT2:-auto} - -if [[ ${MOZ_USE_XINPUT2} == auto && -n ${WAYLAND_DISPLAY} ]]; then - # enabling XINPUT2 should be safe for all wayland users - MOZ_USE_XINPUT2=1 -elif [[ ${MOZ_USE_XINPUT2} == auto && ${XDG_CURRENT_DESKTOP^^} == KDE ]]; then - # XINPUT2 is known to cause problems for KWin users - MOZ_USE_XINPUT2=0 -elif [[ ${MOZ_USE_XINPUT2} == auto && ${XDG_CURRENT_DESKTOP^^} == LXQT ]]; then - # LXQt uses KWin - MOZ_USE_XINPUT2=0 -elif [[ ${MOZ_USE_XINPUT2} == auto ]]; then - # should work on Mate, Xfce, FluxBox, OpenBox and all the others ... - MOZ_USE_XINPUT2=1 -fi - -[[ ${MOZ_USE_XINPUT2} != 0 ]] && export MOZ_USE_XINPUT2=${MOZ_USE_XINPUT2} - -# Don't throw "old profile" dialog box. -export MOZ_ALLOW_DOWNGRADE=1 - -# Run the browser -exec ${MOZ_PROGRAM} "${@}" diff --git a/www-client/firefox/files/firefox-riscv64-hack.patch b/www-client/firefox/files/firefox-riscv64-hack.patch deleted file mode 100644 index b4fca4d..0000000 --- a/www-client/firefox/files/firefox-riscv64-hack.patch +++ /dev/null @@ -1,102 +0,0 @@ -Temporary hack to allow us to directly apply diff of matoko's branch. Disable -rust-vet to skip auditing third party libs in order to download/vendor rust -deps on non-git firefox src. Skip some style checks, as -macroassembler support in js/src/jit/ is not complete yet - -diff --git a/python/mozbuild/mozbuild/vendor/vendor_rust.py b/python/mozbuild/mozbuild/vendor/vendor_rust.py -index 7394ccaf40..491bd7fbdb 100644 ---- a/python/mozbuild/mozbuild/vendor/vendor_rust.py -+++ b/python/mozbuild/mozbuild/vendor/vendor_rust.py -@@ -740,38 +740,40 @@ license file's hash. - failed = True - - # Only emit warnings for cargo-vet for now. -- env = os.environ.copy() -- env["PATH"] = os.pathsep.join( -- ( -- str(Path(cargo).parent), -- os.environ["PATH"], -- ) -- ) -- flags = ["--output-format=json"] -- if "MOZ_AUTOMATION" in os.environ: -- flags.append("--locked") -- flags.append("--frozen") -- res = cargo_vet( -- self, -- flags, -- stdout=subprocess.PIPE, -- env=env, -- ) -- if res.returncode: -- vet = json.loads(res.stdout) -- for failure in vet.get("failures", []): -- failure["crate"] = failure.pop("name") -- self.log( -- logging.ERROR, -- "cargo_vet_failed", -- failure, -- "Missing audit for {crate}:{version} (requires {missing_criteria})." -- " Run `./mach cargo vet` for more information.", -- ) -- failed = True -- -- if failed: -- return False -+ #env = os.environ.copy() -+ #env["PATH"] = os.pathsep.join( -+ # ( -+ # str(Path(cargo).parent), -+ # os.environ["PATH"], -+ # ) -+ #) -+ #print(env["PATH"]) -+ #print(self.topsrcdir) -+ #flags = ["--output-format=json"] -+ #if "MOZ_AUTOMATION" in os.environ: -+ # flags.append("--locked") -+ # flags.append("--frozen") -+ #res = cargo_vet( -+ # self, -+ # flags, -+ # stdout=subprocess.PIPE, -+ # env=env, -+ #) -+ #if res.returncode: -+ # vet = json.loads(res.stdout) -+ # for failure in vet.get("failures", []): -+ # failure["crate"] = failure.pop("name") -+ # self.log( -+ # logging.ERROR, -+ # "cargo_vet_failed", -+ # failure, -+ # "Missing audit for {crate}:{version} (requires {missing_criteria})." -+ # " Run `./mach cargo vet` for more information.", -+ # ) -+ # failed = True -+ -+ #if failed: -+ # return False - - res = subprocess.run( - [cargo, "vendor", vendor_dir], cwd=self.topsrcdir, stdout=subprocess.PIPE -@@ -848,6 +848,7 @@ license file's hash. - directory=replace["directory"], - ) - ) -+ return True - - if not self._check_licenses(vendor_dir): - self.log( -diff --git a/js/src/build/moz.build b/js/src/build/moz.build -index 4c48a5c4ff..e68d79447e 100644 ---- a/js/src/build/moz.build -+++ b/js/src/build/moz.build -@@ -101,7 +101,5 @@ GeneratedFile( - inputs=[ - "!%sjs_static.%s" % (CONFIG["LIB_PREFIX"], CONFIG["LIB_SUFFIX"]), -- "/config/check_spidermonkey_style.py", -- "/config/check_macroassembler_style.py", - "/config/check_js_opcode.py", - ], - ) diff --git a/www-client/firefox/files/firefox-riscv64-support.patch b/www-client/firefox/files/firefox-riscv64-support.patch deleted file mode 100644 index 7e9abfc..0000000 --- a/www-client/firefox/files/firefox-riscv64-support.patch +++ /dev/null @@ -1,3283 +0,0 @@ -patch generated directly from https://github.com/makotokato/gecko-dev by - - git diff master..riscv64 -- . :^third_party - -:^third_party is a git feature to exclude third_party/ from diff - -diff --git a/.cargo/config.in b/.cargo/config.in -index 20b8c3fad8..34c5f9a1f4 100644 ---- a/.cargo/config.in -+++ b/.cargo/config.in -@@ -22,11 +22,6 @@ git = "https://github.com/mozilla/mp4parse-rust" - replace-with = "vendored-sources" - rev = "3bfc47d9a571d0842676043ba60716318e946c06" - --[source."https://github.com/mozilla/midir.git"] --git = "https://github.com/mozilla/midir.git" --replace-with = "vendored-sources" --rev = "4c11f0ffb5d6a10de4aff40a7b81218b33b94e6f" -- - [source."https://github.com/mozilla/cubeb-pulse-rs"] - git = "https://github.com/mozilla/cubeb-pulse-rs" - replace-with = "vendored-sources" -@@ -37,6 +32,11 @@ git = "https://github.com/mozilla/cubeb-coreaudio-rs" - replace-with = "vendored-sources" - rev = "44eca95823bb57e964cf7b6d9791ed2ccb4b2108" - -+[source."https://github.com/mozilla/authenticator-rs"] -+git = "https://github.com/mozilla/authenticator-rs" -+replace-with = "vendored-sources" -+rev = "b85bccf0527e42c877573029e8d35ff13ef06f9d" -+ - [source."https://github.com/mozilla/audioipc"] - git = "https://github.com/mozilla/audioipc" - replace-with = "vendored-sources" -diff --git a/Cargo.lock b/Cargo.lock -index 85a143565c..b4924869cb 100644 ---- a/Cargo.lock -+++ b/Cargo.lock -@@ -30,14 +30,14 @@ dependencies = [ - - [[package]] - name = "alsa" --version = "0.4.3" -+version = "0.6.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "eb213f6b3e4b1480a60931ca2035794aa67b73103d254715b1db7b70dcb3c934" -+checksum = "5915f52fe2cf65e83924d037b6c5290b7cee097c6b5c8700746e6168a343fd6b" - dependencies = [ - "alsa-sys", - "bitflags", - "libc", -- "nix", -+ "nix 0.23.1", - ] - - [[package]] -@@ -359,9 +359,8 @@ dependencies = [ - - [[package]] - name = "authenticator" --version = "0.3.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "08cee7a0952628fde958e149507c2bb321ab4fccfafd225da0b20adc956ef88a" -+version = "0.3.2" -+source = "git+https://github.com/mozilla/authenticator-rs?rev=b85bccf0527e42c877573029e8d35ff13ef06f9d#b85bccf0527e42c877573029e8d35ff13ef06f9d" - dependencies = [ - "bitflags", - "core-foundation", -@@ -369,7 +368,7 @@ dependencies = [ - "libc", - "libudev", - "log", -- "rand 0.7.999", -+ "rand 0.8.5", - "runloop", - "winapi", - ] -@@ -2204,6 +2203,7 @@ dependencies = [ - "log", - "mapped_hyph", - "mdns_service", -+ "midir", - "midir_impl", - "mio 0.8.0", - "moz_asserts", -@@ -3274,8 +3274,9 @@ dependencies = [ - - [[package]] - name = "midir" --version = "0.7.0" --source = "git+https://github.com/mozilla/midir.git?rev=4c11f0ffb5d6a10de4aff40a7b81218b33b94e6f#4c11f0ffb5d6a10de4aff40a7b81218b33b94e6f" -+version = "0.8.0" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "2c1c68e2b589cce71b14a10d7d1599a845673f9decde80fa9e8500fdccd50dca" - dependencies = [ - "alsa", - "bitflags", -@@ -3283,10 +3284,9 @@ dependencies = [ - "js-sys", - "libc", - "memalloc", -- "nix", - "wasm-bindgen", - "web-sys", -- "winapi", -+ "windows", - ] - - [[package]] -@@ -3325,7 +3325,7 @@ dependencies = [ - "libc", - "memmap2 0.2.999", - "memoffset 0.5.6", -- "nix", -+ "nix 0.15.0", - "tempfile", - "thiserror", - ] -@@ -3735,6 +3735,19 @@ dependencies = [ - "void", - ] - -+[[package]] -+name = "nix" -+version = "0.23.1" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6" -+dependencies = [ -+ "bitflags", -+ "cc", -+ "cfg-if 1.0.0", -+ "libc", -+ "memoffset 0.6.5", -+] -+ - [[package]] - name = "nom" - version = "5.999.999" -@@ -6218,6 +6231,49 @@ version = "0.4.0" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -+[[package]] -+name = "windows" -+version = "0.32.0" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "fbedf6db9096bc2364adce0ae0aa636dcd89f3c3f2cd67947062aaf0ca2a10ec" -+dependencies = [ -+ "windows_aarch64_msvc", -+ "windows_i686_gnu", -+ "windows_i686_msvc", -+ "windows_x86_64_gnu", -+ "windows_x86_64_msvc", -+] -+ -+[[package]] -+name = "windows_aarch64_msvc" -+version = "0.32.0" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" -+ -+[[package]] -+name = "windows_i686_gnu" -+version = "0.32.0" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" -+ -+[[package]] -+name = "windows_i686_msvc" -+version = "0.32.0" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" -+ -+[[package]] -+name = "windows_x86_64_gnu" -+version = "0.32.0" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" -+ -+[[package]] -+name = "windows_x86_64_msvc" -+version = "0.32.0" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" -+ - [[package]] - name = "wineventlog" - version = "0.1.0" -diff --git a/Cargo.toml b/Cargo.toml -index 2b499a0841..dcf1e401d7 100644 ---- a/Cargo.toml -+++ b/Cargo.toml -@@ -153,7 +153,6 @@ coremidi = { git = "https://github.com/chris-zen/coremidi.git", rev="fc68464b544 - fog = { path = "toolkit/components/glean/api" } - libudev-sys = { path = "dom/webauthn/libudev-sys" } - packed_simd = { package = "packed_simd_2", git = "https://github.com/hsivonen/packed_simd", rev="c149d0a519bf878567c7630096737669ec2ff15f" } --midir = { git = "https://github.com/mozilla/midir.git", rev = "4c11f0ffb5d6a10de4aff40a7b81218b33b94e6f" } - minidump_writer_linux = { git = "https://github.com/rust-minidump/minidump-writer.git", rev = "75ada456c92a429704691a85e1cb42fef8cafc0d" } - - # application-services overrides to make updating them all simpler. -diff --git a/README.riscv64.md b/README.riscv64.md -new file mode 100644 -index 0000000000..705099a3db ---- /dev/null -+++ b/README.riscv64.md -@@ -0,0 +1,69 @@ -+## Cross building -+I recommend you should use docker environment -+ -+#### Dockerfile -+```dockerfile -+FROM ubuntu:21.04 -+MAINTAINER Makoto Kato -+ -+ADD sources.list /etc/apt/ -+ENV DEBIAN_FRONTEND=noninteractive -+RUN dpkg --add-architecture riscv64 && \ -+ apt-get update && \ -+ apt-get install -y clang g++ mercurial g++-riscv64-linux-gnu curl gyp ninja-build make python-is-python3 libssl-dev zlib1g-dev nodejs build-essential libpython3-dev m4 unzip zip uuid git python3-pip && \ -+ apt-get install -y zlib1g-dev:riscv64 libssl-dev:riscv64 libffi-dev:riscv64 libasound2-dev:riscv64 libcurl4-openssl-dev:riscv64 libdbus-1-dev:riscv64 libdbus-glib-1-dev:riscv64 libdrm-dev:riscv64 libgtk-3-dev:riscv64 libpulse-dev:riscv64 libx11-xcb-dev:riscv64 libxt-dev:riscv64 xvfb:riscv64 libstdc++-10-dev:riscv64 && \ -+ apt-get clean -+WORKDIR /root -+ENV PATH="/root/.cargo/bin:${PATH}" -+RUN curl https://sh.rustup.rs -s -o install.sh && sh install.sh -y && rm install.sh && rustup target add riscv64gc-unknown-linux-gnu -+RUN cargo install cbindgen -+``` -+ -+#### sources.list -+``` -+deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ hirsute main restricted -+deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ hirsute-updates main restricted -+deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ hirsute universe -+deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ hirsute-updates universe -+deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ hirsute multiverse -+deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ hirsute-updates multiverse -+deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ hirsute-backports main restricted universe multiverse -+deb [arch=amd64] http://security.ubuntu.com/ubuntu/ hirsute-security main restricted -+deb [arch=amd64] http://security.ubuntu.com/ubuntu/ hirsute-security universe -+deb [arch=amd64] http://security.ubuntu.com/ubuntu/ hirsute-security multiverse -+ -+deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports hirsute main restricted -+deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports hirsute-updates main restricted -+deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports hirsute universe -+deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports hirsute-updates universe -+deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports hirsute multiverse -+deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports hirsute-updates multiverse -+deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports hirsute-backports main restricted universe multiverse -+deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports hirsute-security main restricted -+deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports hirsute-security universe -+deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports hirsute-security multiverse -+``` -+ -+## mozconfig -+``` -+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir -+mk_add_options AUTOCLOBBER=1 -+ -+ac_add_options --disable-debug -+ac_add_options --enable-optimize -+ -+ac_add_options --target=riscv64 -+export CC=riscv64-linux-gnu-gcc -+export CXX=riscv64-linux-gnu-g++ -+export HOST_CC=gcc -+export HOST_CXX=g++ -+ac_add_options --disable-bootstrap -+ac_add_options --without-wasm-sandboxed-libraries -+ac_add_options --enable-webrtc -+ac_add_options --disable-crashreporter -+ac_add_options --disable-jit -+``` -+ -+## How to build -+1. `./mach build` -+2. `./mach package` -diff --git a/dom/bindings/moz.build b/dom/bindings/moz.build -index cf3a8d5017..5e1388cfe5 100644 ---- a/dom/bindings/moz.build -+++ b/dom/bindings/moz.build -@@ -96,12 +96,16 @@ LOCAL_INCLUDES += [ - "/layout/xul/tree", - "/media/webrtc/", - "/netwerk/base/", -- "/third_party/libwebrtc", -- "/third_party/libwebrtc/third_party/abseil-cpp", - ] - - LOCAL_INCLUDES += ["/third_party/msgpack/include"] - -+if CONFIG["MOZ_WEBRTC"]: -+ LOCAL_INCLUDES += [ -+ "/third_party/libwebrtc", -+ "/third_party/libwebrtc/third_party/abseil-cpp", -+ ] -+ - DEFINES["GOOGLE_PROTOBUF_NO_RTTI"] = True - DEFINES["GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER"] = True - -diff --git a/dom/media/gtest/moz.build b/dom/media/gtest/moz.build -index 05803392cb..d689c7bd77 100644 ---- a/dom/media/gtest/moz.build -+++ b/dom/media/gtest/moz.build -@@ -13,10 +13,14 @@ LOCAL_INCLUDES += [ - "/dom/media/systemservices", - "/dom/media/webrtc", - "/dom/media/webrtc/common", -- "/third_party/libwebrtc", -- "/third_party/libwebrtc/third_party/abseil-cpp", - ] - -+if CONFIG["MOZ_WEBRTC"]: -+ LOCAL_INCLUDES += [ -+ "/third_party/libwebrtc", -+ "/third_party/libwebrtc/third_party/abseil-cpp", -+ ] -+ - UNIFIED_SOURCES += [ - "MockCubeb.cpp", - "MockMediaResource.cpp", -diff --git a/dom/midi/midir_impl/Cargo.toml b/dom/midi/midir_impl/Cargo.toml -index 7628fb4a68..a918ff2227 100644 ---- a/dom/midi/midir_impl/Cargo.toml -+++ b/dom/midi/midir_impl/Cargo.toml -@@ -7,7 +7,7 @@ edition = "2018" - # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - - [dependencies] --midir = "0.7.0" -+midir = "0.8.0" - nsstring = { path = "../../../xpcom/rust/nsstring/" } - uuid = { version = "0.8", features = ["v4"] } - thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } -diff --git a/ipc/glue/moz.build b/ipc/glue/moz.build -index c4b7c1d69e..775f553d05 100644 ---- a/ipc/glue/moz.build -+++ b/ipc/glue/moz.build -@@ -220,6 +220,12 @@ LOCAL_INCLUDES += [ - "/xpcom/build", - ] - -+if CONFIG["MOZ_WEBRTC"]: -+ LOCAL_INCLUDES += [ -+ "/third_party/libwebrtc", -+ "/third_party/libwebrtc/third_party/abseil-cpp", -+ ] -+ - PREPROCESSED_IPDL_SOURCES = [ - "PUtilityProcess.ipdl", - ] -diff --git a/js/moz.configure b/js/moz.configure -index 4f9bb8992f..d53c672aa0 100644 ---- a/js/moz.configure -+++ b/js/moz.configure -@@ -184,7 +184,7 @@ def report_deprecated(value): - # ======================================================= - option( - "--enable-simulator", -- choices=("arm", "arm64", "mips32", "mips64", "loong64"), -+ choices=("arm", "arm64", "mips32", "mips64", "loong64", "riscv64"), - nargs=1, - help="Enable a JIT code simulator for the specified architecture", - ) -@@ -201,7 +201,7 @@ def simulator(jit_enabled, simulator_enabled, target): - if target.cpu != "x86": - die("The %s simulator only works on x86." % sim_cpu) - -- if sim_cpu in ("arm64", "mips64", "loong64"): -+ if sim_cpu in ("arm64", "mips64", "loong64", "riscv64"): - if target.cpu != "x86_64" and target.cpu != "aarch64": - die("The %s simulator only works on x86-64 or arm64." % sim_cpu) - -@@ -214,12 +214,14 @@ set_config("JS_SIMULATOR_ARM64", simulator.arm64) - set_config("JS_SIMULATOR_MIPS32", simulator.mips32) - set_config("JS_SIMULATOR_MIPS64", simulator.mips64) - set_config("JS_SIMULATOR_LOONG64", simulator.loong64) -+set_config("JS_SIMULATOR_RISCV64", simulator.riscv64) - set_define("JS_SIMULATOR", depends_if(simulator)(lambda x: True)) - set_define("JS_SIMULATOR_ARM", simulator.arm) - set_define("JS_SIMULATOR_ARM64", simulator.arm64) - set_define("JS_SIMULATOR_MIPS32", simulator.mips32) - set_define("JS_SIMULATOR_MIPS64", simulator.mips64) - set_define("JS_SIMULATOR_LOONG64", simulator.loong64) -+set_define("JS_SIMULATOR_RISCV64", simulator.riscv64) - - - @depends("--enable-jit", simulator, target) -@@ -244,6 +246,7 @@ set_config("JS_CODEGEN_ARM64", jit_codegen.arm64) - set_config("JS_CODEGEN_MIPS32", jit_codegen.mips32) - set_config("JS_CODEGEN_MIPS64", jit_codegen.mips64) - set_config("JS_CODEGEN_LOONG64", jit_codegen.loong64) -+set_config("JS_CODEGEN_RISCV64", jit_codegen.riscv64) - set_config("JS_CODEGEN_X86", jit_codegen.x86) - set_config("JS_CODEGEN_X64", jit_codegen.x64) - set_define("JS_CODEGEN_NONE", jit_codegen.none) -@@ -252,6 +255,7 @@ set_define("JS_CODEGEN_ARM64", jit_codegen.arm64) - set_define("JS_CODEGEN_MIPS32", jit_codegen.mips32) - set_define("JS_CODEGEN_MIPS64", jit_codegen.mips64) - set_define("JS_CODEGEN_LOONG64", jit_codegen.loong64) -+set_define("JS_CODEGEN_RISCV64", jit_codegen.riscv64) - set_define("JS_CODEGEN_X86", jit_codegen.x86) - set_define("JS_CODEGEN_X64", jit_codegen.x64) - -diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp -index 2b8de6284f..1b9b4b62c7 100644 ---- a/js/src/builtin/TestingFunctions.cpp -+++ b/js/src/builtin/TestingFunctions.cpp -@@ -426,6 +426,24 @@ static bool GetBuildConfiguration(JSContext* cx, unsigned argc, Value* vp) { - return false; - } - -+#ifdef JS_CODEGEN_RISCV64 -+ value = BooleanValue(true); -+#else -+ value = BooleanValue(false); -+#endif -+ if (!JS_SetProperty(cx, info, "riscv64", value)) { -+ return false; -+ } -+ -+#ifdef JS_SIMULATOR_RISCV64 -+ value = BooleanValue(true); -+#else -+ value = BooleanValue(false); -+#endif -+ if (!JS_SetProperty(cx, info, "riscv64-simulator", value)) { -+ return false; -+ } -+ - #ifdef JS_SIMULATOR - value = BooleanValue(true); - #else -diff --git a/js/src/jit/Assembler.h b/js/src/jit/Assembler.h -index 04dcdc647e..2081f254b0 100644 ---- a/js/src/jit/Assembler.h -+++ b/js/src/jit/Assembler.h -@@ -19,6 +19,8 @@ - # include "jit/mips32/Assembler-mips32.h" - #elif defined(JS_CODEGEN_MIPS64) - # include "jit/mips64/Assembler-mips64.h" -+#elif defined(JS_CODEGEN_RISCV64) -+# include "jit/riscv64/Assembler-riscv64.h" - #elif defined(JS_CODEGEN_LOONG64) - # include "jit/loong64/Assembler-loong64.h" - #elif defined(JS_CODEGEN_NONE) -diff --git a/js/src/jit/CodeGenerator.h b/js/src/jit/CodeGenerator.h -index 67453d3cd3..82e58d2a16 100644 ---- a/js/src/jit/CodeGenerator.h -+++ b/js/src/jit/CodeGenerator.h -@@ -26,6 +26,8 @@ - # include "jit/mips64/CodeGenerator-mips64.h" - #elif defined(JS_CODEGEN_LOONG64) - # include "jit/loong64/CodeGenerator-loong64.h" -+#elif defined(JS_CODEGEN_RISCV64) -+# include "jit/riscv64/CodeGenerator-riscv64.h" - #elif defined(JS_CODEGEN_NONE) - # include "jit/none/CodeGenerator-none.h" - #else -diff --git a/js/src/jit/FlushICache.h b/js/src/jit/FlushICache.h -index 42b1fb045c..feeae3c793 100644 ---- a/js/src/jit/FlushICache.h -+++ b/js/src/jit/FlushICache.h -@@ -25,7 +25,7 @@ inline void FlushICache(void* code, size_t size, - - #elif (defined(JS_CODEGEN_ARM) || defined(JS_CODEGEN_ARM64)) || \ - (defined(JS_CODEGEN_MIPS32) || defined(JS_CODEGEN_MIPS64)) || \ -- defined(JS_CODEGEN_LOONG64) -+ defined(JS_CODEGEN_LOONG64) || defined(JS_CODEGEN_RISCV64) - - extern void FlushICache(void* code, size_t size, bool codeIsThreadLocal = true); - -diff --git a/js/src/jit/LIR.h b/js/src/jit/LIR.h -index 66c665b5ba..016c8246f7 100644 ---- a/js/src/jit/LIR.h -+++ b/js/src/jit/LIR.h -@@ -1933,6 +1933,8 @@ AnyRegister LAllocation::toRegister() const { - # include "jit/mips64/LIR-mips64.h" - # endif - # include "jit/mips-shared/LIR-mips-shared.h" -+#elif defined(JS_CODEGEN_RISCV64) -+# include "jit/riscv64/LIR-riscv64.h" - #elif defined(JS_CODEGEN_NONE) - # include "jit/none/LIR-none.h" - #else -diff --git a/js/src/jit/Lowering.h b/js/src/jit/Lowering.h -index a04d09c446..21094a616e 100644 ---- a/js/src/jit/Lowering.h -+++ b/js/src/jit/Lowering.h -@@ -23,6 +23,8 @@ - # include "jit/mips32/Lowering-mips32.h" - #elif defined(JS_CODEGEN_MIPS64) - # include "jit/mips64/Lowering-mips64.h" -+#elif defined(JS_CODEGEN_RISCV64) -+# include "jit/riscv64/Lowering-riscv64.h" - #elif defined(JS_CODEGEN_LOONG64) - # include "jit/loong64/Lowering-loong64.h" - #elif defined(JS_CODEGEN_NONE) -diff --git a/js/src/jit/MacroAssembler-inl.h b/js/src/jit/MacroAssembler-inl.h -index 5ed4ac7458..1c208e676d 100644 ---- a/js/src/jit/MacroAssembler-inl.h -+++ b/js/src/jit/MacroAssembler-inl.h -@@ -39,6 +39,8 @@ - # include "jit/mips64/MacroAssembler-mips64-inl.h" - #elif defined(JS_CODEGEN_LOONG64) - # include "jit/loong64/MacroAssembler-loong64-inl.h" -+#elif defined(JS_CODEGEN_RISCV64) -+# include "jit/riscv64/MacroAssembler-riscv64-inl.h" - #elif !defined(JS_CODEGEN_NONE) - # error "Unknown architecture!" - #endif -diff --git a/js/src/jit/MacroAssembler.cpp b/js/src/jit/MacroAssembler.cpp -index 3abc601bec..0665601509 100644 ---- a/js/src/jit/MacroAssembler.cpp -+++ b/js/src/jit/MacroAssembler.cpp -@@ -4145,6 +4145,8 @@ void MacroAssembler::emitPreBarrierFastPath(JSRuntime* rt, MIRType type, - ma_dsll(temp1, temp1, temp3); - #elif JS_CODEGEN_LOONG64 - as_sll_d(temp1, temp1, temp3); -+#elif JS_CODEGEN_RISCV64 -+ MOZ_CRASH(); - #elif JS_CODEGEN_NONE - MOZ_CRASH(); - #else -diff --git a/js/src/jit/MacroAssembler.h b/js/src/jit/MacroAssembler.h -index 5fa8f40bd1..3395a139d3 100644 ---- a/js/src/jit/MacroAssembler.h -+++ b/js/src/jit/MacroAssembler.h -@@ -25,6 +25,8 @@ - # include "jit/mips32/MacroAssembler-mips32.h" - #elif defined(JS_CODEGEN_MIPS64) - # include "jit/mips64/MacroAssembler-mips64.h" -+#elif defined(JS_CODEGEN_RISCV64) -+# include "jit/riscv64/MacroAssembler-riscv64.h" - #elif defined(JS_CODEGEN_LOONG64) - # include "jit/loong64/MacroAssembler-loong64.h" - #elif defined(JS_CODEGEN_NONE) -@@ -94,8 +96,8 @@ - // } - // ////}}} check_macroassembler_style - --#define ALL_ARCH mips32, mips64, arm, arm64, x86, x64, loong64 --#define ALL_SHARED_ARCH arm, arm64, loong64, x86_shared, mips_shared -+#define ALL_ARCH mips32, mips64, arm, arm64, x86, x64, loong64, riscv64 -+#define ALL_SHARED_ARCH arm, arm64, loong64, riscv64, x86_shared, mips_shared - - // * How this macro works: - // -@@ -142,6 +144,7 @@ - #define DEFINED_ON_mips64 - #define DEFINED_ON_mips_shared - #define DEFINED_ON_loong64 -+#define DEFINED_ON_riscv64 - #define DEFINED_ON_none - - // Specialize for each architecture. -@@ -174,6 +177,9 @@ - #elif defined(JS_CODEGEN_LOONG64) - # undef DEFINED_ON_loong64 - # define DEFINED_ON_loong64 define -+#elif defined(JS_CODEGEN_RISCV64) -+# undef DEFINED_ON_riscv64 -+# define DEFINED_ON_riscv64 define - #elif defined(JS_CODEGEN_NONE) - # undef DEFINED_ON_none - # define DEFINED_ON_none crash -@@ -491,10 +497,10 @@ class MacroAssembler : public MacroAssemblerSpecific { - - // The size of the area used by PushRegsInMask. - size_t PushRegsInMaskSizeInBytes(LiveRegisterSet set) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - void PushRegsInMask(LiveRegisterSet set) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - void PushRegsInMask(LiveGeneralRegisterSet set); - - // Like PushRegsInMask, but instead of pushing the registers, store them to -@@ -505,12 +511,12 @@ class MacroAssembler : public MacroAssemblerSpecific { - // must point to either the lowest address in the save area, or some address - // below that. - void storeRegsInMask(LiveRegisterSet set, Address dest, Register scratch) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - void PopRegsInMask(LiveRegisterSet set); - void PopRegsInMask(LiveGeneralRegisterSet set); - void PopRegsInMaskIgnore(LiveRegisterSet set, LiveRegisterSet ignore) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - // =============================================================== - // Stack manipulation functions -- single registers/values. -@@ -543,7 +549,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - void Pop(FloatRegister t) PER_SHARED_ARCH; - void Pop(const ValueOperand& val) PER_SHARED_ARCH; - void PopFlags() DEFINED_ON(x86_shared); -- void PopStackPtr() DEFINED_ON(arm, mips_shared, x86_shared, loong64); -+ void PopStackPtr() DEFINED_ON(arm, mips_shared, x86_shared, loong64, riscv64); - void popRooted(VMFunctionData::RootType rootType, Register cellReg, - const ValueOperand& valueReg); - -@@ -601,8 +607,9 @@ class MacroAssembler : public MacroAssemblerSpecific { - void callAndPushReturnAddress(Label* label) DEFINED_ON(x86_shared); - - // These do not adjust framePushed(). -- void pushReturnAddress() DEFINED_ON(mips_shared, arm, arm64, loong64); -- void popReturnAddress() DEFINED_ON(mips_shared, arm, arm64, loong64); -+ void pushReturnAddress() -+ DEFINED_ON(mips_shared, arm, arm64, loong64, riscv64); -+ void popReturnAddress() DEFINED_ON(mips_shared, arm, arm64, loong64, riscv64); - - // Useful for dealing with two-valued returns. - void moveRegPair(Register src0, Register src1, Register dst0, Register dst1, -@@ -633,10 +640,10 @@ class MacroAssembler : public MacroAssemblerSpecific { - // Note: "Near" applies to ARM64 where the target must be within 1 MB (this is - // release-asserted). - CodeOffset moveNearAddressWithPatch(Register dest) -- DEFINED_ON(x86, x64, arm, arm64, loong64, mips_shared); -+ DEFINED_ON(x86, x64, arm, arm64, loong64, mips_shared, riscv64); - static void patchNearAddressMove(CodeLocationLabel loc, - CodeLocationLabel target) -- DEFINED_ON(x86, x64, arm, arm64, loong64, mips_shared); -+ DEFINED_ON(x86, x64, arm, arm64, loong64, mips_shared, riscv64); - - public: - // =============================================================== -@@ -1045,17 +1052,17 @@ class MacroAssembler : public MacroAssemblerSpecific { - inline void addPtr(ImmWord imm, Register dest) PER_ARCH; - inline void addPtr(ImmPtr imm, Register dest); - inline void addPtr(Imm32 imm, const Address& dest) -- DEFINED_ON(mips_shared, arm, arm64, x86, x64, loong64); -+ DEFINED_ON(mips_shared, arm, arm64, x86, x64, loong64, riscv64); - inline void addPtr(Imm32 imm, const AbsoluteAddress& dest) - DEFINED_ON(x86, x64); - inline void addPtr(const Address& src, Register dest) -- DEFINED_ON(mips_shared, arm, arm64, x86, x64, loong64); -+ DEFINED_ON(mips_shared, arm, arm64, x86, x64, loong64, riscv64); - - inline void add64(Register64 src, Register64 dest) PER_ARCH; - inline void add64(Imm32 imm, Register64 dest) PER_ARCH; - inline void add64(Imm64 imm, Register64 dest) PER_ARCH; - inline void add64(const Operand& src, Register64 dest) -- DEFINED_ON(x64, mips64, loong64); -+ DEFINED_ON(x64, mips64, loong64, riscv64); - - inline void addFloat32(FloatRegister src, FloatRegister dest) PER_SHARED_ARCH; - -@@ -1074,16 +1081,16 @@ class MacroAssembler : public MacroAssemblerSpecific { - - inline void subPtr(Register src, Register dest) PER_ARCH; - inline void subPtr(Register src, const Address& dest) -- DEFINED_ON(mips_shared, arm, arm64, x86, x64, loong64); -+ DEFINED_ON(mips_shared, arm, arm64, x86, x64, loong64, riscv64); - inline void subPtr(Imm32 imm, Register dest) PER_ARCH; - inline void subPtr(ImmWord imm, Register dest) DEFINED_ON(x64); - inline void subPtr(const Address& addr, Register dest) -- DEFINED_ON(mips_shared, arm, arm64, x86, x64, loong64); -+ DEFINED_ON(mips_shared, arm, arm64, x86, x64, loong64, riscv64); - - inline void sub64(Register64 src, Register64 dest) PER_ARCH; - inline void sub64(Imm64 imm, Register64 dest) PER_ARCH; - inline void sub64(const Operand& src, Register64 dest) -- DEFINED_ON(x64, mips64, loong64); -+ DEFINED_ON(x64, mips64, loong64, riscv64); - - inline void subFloat32(FloatRegister src, FloatRegister dest) PER_SHARED_ARCH; - -@@ -1099,10 +1106,11 @@ class MacroAssembler : public MacroAssemblerSpecific { - - inline void mul64(const Operand& src, const Register64& dest) DEFINED_ON(x64); - inline void mul64(const Operand& src, const Register64& dest, -- const Register temp) DEFINED_ON(x64, mips64, loong64); -+ const Register temp) -+ DEFINED_ON(x64, mips64, loong64, riscv64); - inline void mul64(Imm64 imm, const Register64& dest) PER_ARCH; - inline void mul64(Imm64 imm, const Register64& dest, const Register temp) -- DEFINED_ON(x86, x64, arm, mips32, mips64, loong64); -+ DEFINED_ON(x86, x64, arm, mips32, mips64, loong64, riscv64); - inline void mul64(const Register64& src, const Register64& dest, - const Register temp) PER_ARCH; - inline void mul64(const Register64& src1, const Register64& src2, -@@ -1116,14 +1124,14 @@ class MacroAssembler : public MacroAssemblerSpecific { - inline void mulDouble(FloatRegister src, FloatRegister dest) PER_SHARED_ARCH; - - inline void mulDoublePtr(ImmPtr imm, Register temp, FloatRegister dest) -- DEFINED_ON(mips_shared, arm, arm64, x86, x64, loong64); -+ DEFINED_ON(mips_shared, arm, arm64, x86, x64, loong64, riscv64); - - // Perform an integer division, returning the integer part rounded toward - // zero. rhs must not be zero, and the division must not overflow. - // - // On ARM, the chip must have hardware division instructions. - inline void quotient32(Register rhs, Register srcDest, bool isUnsigned) -- DEFINED_ON(mips_shared, arm, arm64, loong64); -+ DEFINED_ON(mips_shared, arm, arm64, loong64, riscv64); - - // As above, but srcDest must be eax and tempEdx must be edx. - inline void quotient32(Register rhs, Register srcDest, Register tempEdx, -@@ -1134,7 +1142,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - // - // On ARM, the chip must have hardware division instructions. - inline void remainder32(Register rhs, Register srcDest, bool isUnsigned) -- DEFINED_ON(mips_shared, arm, arm64, loong64); -+ DEFINED_ON(mips_shared, arm, arm64, loong64, riscv64); - - // As above, but srcDest must be eax and tempEdx must be edx. - inline void remainder32(Register rhs, Register srcDest, Register tempEdx, -@@ -1149,7 +1157,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - // rhs is preserved, srdDest is clobbered. - void flexibleRemainder32(Register rhs, Register srcDest, bool isUnsigned, - const LiveRegisterSet& volatileLiveRegs) -- DEFINED_ON(mips_shared, arm, arm64, x86_shared, loong64); -+ DEFINED_ON(mips_shared, arm, arm64, x86_shared, loong64, riscv64); - - // Perform an integer division, returning the integer part rounded toward - // zero. rhs must not be zero, and the division must not overflow. -@@ -1160,7 +1168,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - // rhs is preserved, srdDest is clobbered. - void flexibleQuotient32(Register rhs, Register srcDest, bool isUnsigned, - const LiveRegisterSet& volatileLiveRegs) -- DEFINED_ON(mips_shared, arm, arm64, x86_shared, loong64); -+ DEFINED_ON(mips_shared, arm, arm64, x86_shared, loong64, riscv64); - - // Perform an integer division, returning the integer part rounded toward - // zero. rhs must not be zero, and the division must not overflow. The -@@ -1173,7 +1181,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - void flexibleDivMod32(Register rhs, Register srcDest, Register remOutput, - bool isUnsigned, - const LiveRegisterSet& volatileLiveRegs) -- DEFINED_ON(mips_shared, arm, arm64, x86_shared, loong64); -+ DEFINED_ON(mips_shared, arm, arm64, x86_shared, loong64, riscv64); - - inline void divFloat32(FloatRegister src, FloatRegister dest) PER_SHARED_ARCH; - inline void divDouble(FloatRegister src, FloatRegister dest) PER_SHARED_ARCH; -@@ -1380,7 +1388,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - - template - inline void cmp32Set(Condition cond, T1 lhs, T2 rhs, Register dest) -- DEFINED_ON(x86_shared, arm, arm64, mips32, mips64, loong64); -+ DEFINED_ON(x86_shared, arm, arm64, mips32, mips64, loong64, riscv64); - - // Only the NotEqual and Equal conditions are allowed. - inline void cmp64Set(Condition cond, Address lhs, Imm64 rhs, -@@ -1415,10 +1423,10 @@ class MacroAssembler : public MacroAssemblerSpecific { - - inline void branch32(Condition cond, const AbsoluteAddress& lhs, Register rhs, - Label* label) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - inline void branch32(Condition cond, const AbsoluteAddress& lhs, Imm32 rhs, - Label* label) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - - inline void branch32(Condition cond, const BaseIndex& lhs, Register rhs, - Label* label) DEFINED_ON(arm, x86_shared); -@@ -1432,7 +1440,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - - inline void branch32(Condition cond, wasm::SymbolicAddress lhs, Imm32 rhs, - Label* label) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - - // The supported condition are Equal, NotEqual, LessThan(orEqual), - // GreaterThan(orEqual), Below(orEqual) and Above(orEqual). When a fail label -@@ -1483,14 +1491,14 @@ class MacroAssembler : public MacroAssemblerSpecific { - - inline void branchPtr(Condition cond, const AbsoluteAddress& lhs, - Register rhs, Label* label) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - inline void branchPtr(Condition cond, const AbsoluteAddress& lhs, ImmWord rhs, - Label* label) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - - inline void branchPtr(Condition cond, wasm::SymbolicAddress lhs, Register rhs, - Label* label) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - - // Given a pointer to a GC Cell, retrieve the StoreBuffer pointer from its - // chunk header, or nullptr if it is in the tenured heap. -@@ -1498,7 +1506,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - - void branchPtrInNurseryChunk(Condition cond, Register ptr, Register temp, - Label* label) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - void branchPtrInNurseryChunk(Condition cond, const Address& address, - Register temp, Label* label) DEFINED_ON(x86); - void branchValueIsNurseryCell(Condition cond, const Address& address, -@@ -1520,10 +1528,10 @@ class MacroAssembler : public MacroAssemblerSpecific { - // x64 variants will do this only in the int64_t range. - inline void branchTruncateFloat32MaybeModUint32(FloatRegister src, - Register dest, Label* fail) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - inline void branchTruncateDoubleMaybeModUint32(FloatRegister src, - Register dest, Label* fail) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - - // Truncate a double/float32 to intptr and when it doesn't fit jump to the - // failure label. -@@ -1536,10 +1544,10 @@ class MacroAssembler : public MacroAssemblerSpecific { - // failure label. - inline void branchTruncateFloat32ToInt32(FloatRegister src, Register dest, - Label* fail) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - inline void branchTruncateDoubleToInt32(FloatRegister src, Register dest, - Label* fail) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - - inline void branchDouble(DoubleCondition cond, FloatRegister lhs, - FloatRegister rhs, Label* label) PER_SHARED_ARCH; -@@ -1596,7 +1604,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - Label* label) PER_SHARED_ARCH; - inline void branchTest32(Condition cond, const AbsoluteAddress& lhs, - Imm32 rhs, Label* label) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - - template - inline void branchTestPtr(Condition cond, Register lhs, Register rhs, -@@ -1757,7 +1765,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - inline void branchTestInt32(Condition cond, Register tag, - Label* label) PER_SHARED_ARCH; - inline void branchTestDouble(Condition cond, Register tag, Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - inline void branchTestNumber(Condition cond, Register tag, - Label* label) PER_SHARED_ARCH; - inline void branchTestBoolean(Condition cond, Register tag, -@@ -1789,7 +1797,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - Label* label) PER_SHARED_ARCH; - inline void branchTestUndefined(Condition cond, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - inline void branchTestInt32(Condition cond, const Address& address, - Label* label) PER_SHARED_ARCH; -@@ -1797,7 +1805,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - Label* label) PER_SHARED_ARCH; - inline void branchTestInt32(Condition cond, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - inline void branchTestDouble(Condition cond, const Address& address, - Label* label) PER_SHARED_ARCH; -@@ -1805,11 +1813,11 @@ class MacroAssembler : public MacroAssemblerSpecific { - Label* label) PER_SHARED_ARCH; - inline void branchTestDouble(Condition cond, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - inline void branchTestNumber(Condition cond, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - inline void branchTestBoolean(Condition cond, const Address& address, - Label* label) PER_SHARED_ARCH; -@@ -1817,7 +1825,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - Label* label) PER_SHARED_ARCH; - inline void branchTestBoolean(Condition cond, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - inline void branchTestString(Condition cond, const Address& address, - Label* label) PER_SHARED_ARCH; -@@ -1825,7 +1833,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - Label* label) PER_SHARED_ARCH; - inline void branchTestString(Condition cond, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - inline void branchTestSymbol(Condition cond, const Address& address, - Label* label) PER_SHARED_ARCH; -@@ -1833,7 +1841,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - Label* label) PER_SHARED_ARCH; - inline void branchTestSymbol(Condition cond, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - inline void branchTestBigInt(Condition cond, const Address& address, - Label* label) PER_SHARED_ARCH; -@@ -1841,7 +1849,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - Label* label) PER_SHARED_ARCH; - inline void branchTestBigInt(Condition cond, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - inline void branchTestNull(Condition cond, const Address& address, - Label* label) PER_SHARED_ARCH; -@@ -1849,7 +1857,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - Label* label) PER_SHARED_ARCH; - inline void branchTestNull(Condition cond, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - // Clobbers the ScratchReg on x64. - inline void branchTestObject(Condition cond, const Address& address, -@@ -1858,7 +1866,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - Label* label) PER_SHARED_ARCH; - inline void branchTestObject(Condition cond, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - inline void branchTestGCThing(Condition cond, const Address& address, - Label* label) PER_SHARED_ARCH; -@@ -1869,7 +1877,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - - inline void branchTestPrimitive(Condition cond, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - inline void branchTestMagic(Condition cond, const Address& address, - Label* label) PER_SHARED_ARCH; -@@ -1878,7 +1886,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - template - inline void branchTestMagic(Condition cond, const ValueOperand& value, - L label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - inline void branchTestMagic(Condition cond, const Address& valaddr, - JSWhyMagic why, Label* label) PER_ARCH; -@@ -1896,17 +1904,17 @@ class MacroAssembler : public MacroAssemblerSpecific { - // The type of the value should match the type of the method. - inline void branchTestInt32Truthy(bool truthy, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - inline void branchTestDoubleTruthy(bool truthy, FloatRegister reg, - Label* label) PER_SHARED_ARCH; - inline void branchTestBooleanTruthy(bool truthy, const ValueOperand& value, - Label* label) PER_ARCH; - inline void branchTestStringTruthy(bool truthy, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - inline void branchTestBigIntTruthy(bool truthy, const ValueOperand& value, - Label* label) -- DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared); -+ DEFINED_ON(arm, arm64, mips32, mips64, loong64, x86_shared, riscv64); - - // Create an unconditional branch to the address given as argument. - inline void branchToComputedAddress(const BaseIndex& address) PER_ARCH; -@@ -2008,11 +2016,11 @@ class MacroAssembler : public MacroAssemblerSpecific { - - inline void cmp32Move32(Condition cond, Register lhs, Register rhs, - Register src, Register dest) -- DEFINED_ON(arm, arm64, loong64, mips_shared, x86_shared); -+ DEFINED_ON(arm, arm64, loong64, mips_shared, x86_shared, riscv64); - - inline void cmp32Move32(Condition cond, Register lhs, const Address& rhs, - Register src, Register dest) -- DEFINED_ON(arm, arm64, loong64, mips_shared, x86_shared); -+ DEFINED_ON(arm, arm64, loong64, mips_shared, x86_shared, riscv64); - - inline void cmpPtrMovePtr(Condition cond, Register lhs, Register rhs, - Register src, Register dest) PER_ARCH; -@@ -2022,36 +2030,36 @@ class MacroAssembler : public MacroAssemblerSpecific { - - inline void cmp32Load32(Condition cond, Register lhs, const Address& rhs, - const Address& src, Register dest) -- DEFINED_ON(arm, arm64, loong64, mips_shared, x86_shared); -+ DEFINED_ON(arm, arm64, loong64, mips_shared, x86_shared, riscv64); - - inline void cmp32Load32(Condition cond, Register lhs, Register rhs, - const Address& src, Register dest) -- DEFINED_ON(arm, arm64, loong64, mips_shared, x86_shared); -+ DEFINED_ON(arm, arm64, loong64, mips_shared, x86_shared, riscv64); - - inline void cmp32LoadPtr(Condition cond, const Address& lhs, Imm32 rhs, - const Address& src, Register dest) -- DEFINED_ON(arm, arm64, loong64, mips_shared, x86, x64); -+ DEFINED_ON(arm, arm64, loong64, mips_shared, x86, x64, riscv64); - - inline void cmp32MovePtr(Condition cond, Register lhs, Imm32 rhs, - Register src, Register dest) -- DEFINED_ON(arm, arm64, loong64, mips_shared, x86, x64); -+ DEFINED_ON(arm, arm64, loong64, mips_shared, x86, x64, riscv64); - - inline void test32LoadPtr(Condition cond, const Address& addr, Imm32 mask, - const Address& src, Register dest) -- DEFINED_ON(arm, arm64, loong64, mips_shared, x86, x64); -+ DEFINED_ON(arm, arm64, loong64, mips_shared, x86, x64, riscv64); - - inline void test32MovePtr(Condition cond, const Address& addr, Imm32 mask, - Register src, Register dest) -- DEFINED_ON(arm, arm64, loong64, mips_shared, x86, x64); -+ DEFINED_ON(arm, arm64, loong64, mips_shared, x86, x64, riscv64); - - // Conditional move for Spectre mitigations. - inline void spectreMovePtr(Condition cond, Register src, Register dest) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - - // Zeroes dest if the condition is true. - inline void spectreZeroRegister(Condition cond, Register scratch, - Register dest) -- DEFINED_ON(arm, arm64, mips_shared, x86_shared, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86_shared, loong64, riscv64); - - // Performs a bounds check and zeroes the index register if out-of-bounds - // (to mitigate Spectre). -@@ -2063,17 +2071,17 @@ class MacroAssembler : public MacroAssemblerSpecific { - public: - inline void spectreBoundsCheck32(Register index, Register length, - Register maybeScratch, Label* failure) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - inline void spectreBoundsCheck32(Register index, const Address& length, - Register maybeScratch, Label* failure) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - - inline void spectreBoundsCheckPtr(Register index, Register length, - Register maybeScratch, Label* failure) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - inline void spectreBoundsCheckPtr(Register index, const Address& length, - Register maybeScratch, Label* failure) -- DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64); -+ DEFINED_ON(arm, arm64, mips_shared, x86, x64, loong64, riscv64); - - // ======================================================================== - // Canonicalization primitives. -@@ -2087,10 +2095,10 @@ class MacroAssembler : public MacroAssemblerSpecific { - // ======================================================================== - // Memory access primitives. - inline void storeUncanonicalizedDouble(FloatRegister src, const Address& dest) -- DEFINED_ON(x86_shared, arm, arm64, mips32, mips64, loong64); -+ DEFINED_ON(x86_shared, arm, arm64, mips32, mips64, loong64, riscv64); - inline void storeUncanonicalizedDouble(FloatRegister src, - const BaseIndex& dest) -- DEFINED_ON(x86_shared, arm, arm64, mips32, mips64, loong64); -+ DEFINED_ON(x86_shared, arm, arm64, mips32, mips64, loong64, riscv64); - inline void storeUncanonicalizedDouble(FloatRegister src, const Operand& dest) - DEFINED_ON(x86_shared); - -@@ -2104,10 +2112,10 @@ class MacroAssembler : public MacroAssemblerSpecific { - - inline void storeUncanonicalizedFloat32(FloatRegister src, - const Address& dest) -- DEFINED_ON(x86_shared, arm, arm64, mips32, mips64, loong64); -+ DEFINED_ON(x86_shared, arm, arm64, mips32, mips64, loong64, riscv64); - inline void storeUncanonicalizedFloat32(FloatRegister src, - const BaseIndex& dest) -- DEFINED_ON(x86_shared, arm, arm64, mips32, mips64, loong64); -+ DEFINED_ON(x86_shared, arm, arm64, mips32, mips64, loong64, riscv64); - inline void storeUncanonicalizedFloat32(FloatRegister src, - const Operand& dest) - DEFINED_ON(x86_shared); -@@ -3508,10 +3516,10 @@ class MacroAssembler : public MacroAssemblerSpecific { - - // temp required on x86 and x64; must be undefined on mips64 and loong64. - void convertUInt64ToFloat32(Register64 src, FloatRegister dest, Register temp) -- DEFINED_ON(arm64, mips64, loong64, x64, x86); -+ DEFINED_ON(arm64, mips64, loong64, x64, x86, riscv64); - - void convertInt64ToFloat32(Register64 src, FloatRegister dest) -- DEFINED_ON(arm64, mips64, loong64, x64, x86); -+ DEFINED_ON(arm64, mips64, loong64, x64, x86, riscv64); - - bool convertUInt64ToDoubleNeedsTemp() PER_ARCH; - -@@ -3563,19 +3571,19 @@ class MacroAssembler : public MacroAssemblerSpecific { - - void wasmBoundsCheck32(Condition cond, Register index, - Register boundsCheckLimit, Label* ok) -- DEFINED_ON(arm, arm64, mips32, mips64, x86_shared, loong64); -+ DEFINED_ON(arm, arm64, mips32, mips64, x86_shared, loong64, riscv64); - - void wasmBoundsCheck32(Condition cond, Register index, - Address boundsCheckLimit, Label* ok) -- DEFINED_ON(arm, arm64, mips32, mips64, x86_shared, loong64); -+ DEFINED_ON(arm, arm64, mips32, mips64, x86_shared, loong64, riscv64); - - void wasmBoundsCheck64(Condition cond, Register64 index, - Register64 boundsCheckLimit, Label* ok) -- DEFINED_ON(arm64, mips64, x64, x86, arm, loong64); -+ DEFINED_ON(arm64, mips64, x64, x86, arm, loong64, riscv64); - - void wasmBoundsCheck64(Condition cond, Register64 index, - Address boundsCheckLimit, Label* ok) -- DEFINED_ON(arm64, mips64, x64, x86, arm, loong64); -+ DEFINED_ON(arm64, mips64, x64, x86, arm, loong64, riscv64); - - // Each wasm load/store instruction appends its own wasm::Trap::OutOfBounds. - void wasmLoad(const wasm::MemoryAccessDesc& access, Operand srcAddr, -@@ -3668,7 +3676,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - void oolWasmTruncateCheckF64ToI32(FloatRegister input, Register output, - TruncFlags flags, wasm::BytecodeOffset off, - Label* rejoin) -- DEFINED_ON(arm, arm64, x86_shared, mips_shared, loong64); -+ DEFINED_ON(arm, arm64, x86_shared, mips_shared, loong64, riscv64); - - void wasmTruncateFloat32ToUInt32(FloatRegister input, Register output, - bool isSaturating, Label* oolEntry) PER_ARCH; -@@ -3678,35 +3686,35 @@ class MacroAssembler : public MacroAssemblerSpecific { - void oolWasmTruncateCheckF32ToI32(FloatRegister input, Register output, - TruncFlags flags, wasm::BytecodeOffset off, - Label* rejoin) -- DEFINED_ON(arm, arm64, x86_shared, mips_shared, loong64); -+ DEFINED_ON(arm, arm64, x86_shared, mips_shared, loong64, riscv64); - - // The truncate-to-int64 methods will always bind the `oolRejoin` label - // after the last emitted instruction. - void wasmTruncateDoubleToInt64(FloatRegister input, Register64 output, - bool isSaturating, Label* oolEntry, - Label* oolRejoin, FloatRegister tempDouble) -- DEFINED_ON(arm64, x86, x64, mips64, loong64); -+ DEFINED_ON(arm64, x86, x64, mips64, loong64, riscv64); - void wasmTruncateDoubleToUInt64(FloatRegister input, Register64 output, - bool isSaturating, Label* oolEntry, - Label* oolRejoin, FloatRegister tempDouble) -- DEFINED_ON(arm64, x86, x64, mips64, loong64); -+ DEFINED_ON(arm64, x86, x64, mips64, loong64, riscv64); - void oolWasmTruncateCheckF64ToI64(FloatRegister input, Register64 output, - TruncFlags flags, wasm::BytecodeOffset off, - Label* rejoin) -- DEFINED_ON(arm, arm64, x86_shared, mips_shared, loong64); -+ DEFINED_ON(arm, arm64, x86_shared, mips_shared, loong64, riscv64); - - void wasmTruncateFloat32ToInt64(FloatRegister input, Register64 output, - bool isSaturating, Label* oolEntry, - Label* oolRejoin, FloatRegister tempDouble) -- DEFINED_ON(arm64, x86, x64, mips64, loong64); -+ DEFINED_ON(arm64, x86, x64, mips64, loong64, riscv64); - void wasmTruncateFloat32ToUInt64(FloatRegister input, Register64 output, - bool isSaturating, Label* oolEntry, - Label* oolRejoin, FloatRegister tempDouble) -- DEFINED_ON(arm64, x86, x64, mips64, loong64); -+ DEFINED_ON(arm64, x86, x64, mips64, loong64, riscv64); - void oolWasmTruncateCheckF32ToI64(FloatRegister input, Register64 output, - TruncFlags flags, wasm::BytecodeOffset off, - Label* rejoin) -- DEFINED_ON(arm, arm64, x86_shared, mips_shared, loong64); -+ DEFINED_ON(arm, arm64, x86_shared, mips_shared, loong64, riscv64); - - void loadWasmGlobalPtr(uint32_t globalDataOffset, Register dest); - -@@ -3764,7 +3772,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - // convention, which requires predictable high bits. In practice, this means - // that the 32-bit value will be zero-extended or sign-extended to 64 bits as - // appropriate for the platform. -- void widenInt32(Register r) DEFINED_ON(arm64, x64, mips64, loong64); -+ void widenInt32(Register r) DEFINED_ON(arm64, x64, mips64, loong64, riscv64); - - // As enterFakeExitFrame(), but using register conventions appropriate for - // wasm stubs. -@@ -5006,7 +5014,7 @@ class MacroAssembler : public MacroAssemblerSpecific { - inline void addStackPtrTo(T t); - - void subFromStackPtr(Imm32 imm32) -- DEFINED_ON(mips32, mips64, loong64, arm, x86, x64); -+ DEFINED_ON(mips32, mips64, loong64, arm, x86, x64, riscv64); - void subFromStackPtr(Register reg); - - template -diff --git a/js/src/jit/MoveEmitter.h b/js/src/jit/MoveEmitter.h -index a51cbc100a..ea4d92bedc 100644 ---- a/js/src/jit/MoveEmitter.h -+++ b/js/src/jit/MoveEmitter.h -@@ -17,6 +17,8 @@ - # include "jit/mips32/MoveEmitter-mips32.h" - #elif defined(JS_CODEGEN_MIPS64) - # include "jit/mips64/MoveEmitter-mips64.h" -+#elif defined(JS_CODEGEN_RISCV64) -+# include "jit/riscv64/MoveEmitter-riscv64.h" - #elif defined(JS_CODEGEN_LOONG64) - # include "jit/loong64/MoveEmitter-loong64.h" - #elif defined(JS_CODEGEN_NONE) -diff --git a/js/src/jit/Registers.h b/js/src/jit/Registers.h -index 2c1cec0771..baf0630e07 100644 ---- a/js/src/jit/Registers.h -+++ b/js/src/jit/Registers.h -@@ -20,6 +20,8 @@ - # include "jit/mips32/Architecture-mips32.h" - #elif defined(JS_CODEGEN_MIPS64) - # include "jit/mips64/Architecture-mips64.h" -+#elif defined(JS_CODEGEN_RISCV64) -+# include "jit/riscv64/Architecture-riscv64.h" - #elif defined(JS_CODEGEN_LOONG64) - # include "jit/loong64/Architecture-loong64.h" - #elif defined(JS_CODEGEN_NONE) -diff --git a/js/src/jit/SharedICHelpers-inl.h b/js/src/jit/SharedICHelpers-inl.h -index 60a77956f0..242f5d3f27 100644 ---- a/js/src/jit/SharedICHelpers-inl.h -+++ b/js/src/jit/SharedICHelpers-inl.h -@@ -17,6 +17,8 @@ - # include "jit/arm64/SharedICHelpers-arm64-inl.h" - #elif defined(JS_CODEGEN_MIPS32) || defined(JS_CODEGEN_MIPS64) - # include "jit/mips-shared/SharedICHelpers-mips-shared-inl.h" -+#elif defined(JS_CODEGEN_RISCV64) -+# include "jit/riscv64/SharedICHelpers-riscv64-inl.h" - #elif defined(JS_CODEGEN_LOONG64) - # include "jit/loong64/SharedICHelpers-loong64-inl.h" - #elif defined(JS_CODEGEN_NONE) -diff --git a/js/src/jit/SharedICHelpers.h b/js/src/jit/SharedICHelpers.h -index da8378ebae..bfe4a1b672 100644 ---- a/js/src/jit/SharedICHelpers.h -+++ b/js/src/jit/SharedICHelpers.h -@@ -17,6 +17,8 @@ - # include "jit/arm64/SharedICHelpers-arm64.h" - #elif defined(JS_CODEGEN_MIPS32) || defined(JS_CODEGEN_MIPS64) - # include "jit/mips-shared/SharedICHelpers-mips-shared.h" -+#elif defined(JS_CODEGEN_RISCV64) -+# include "jit/riscv64/SharedICHelpers-riscv64.h" - #elif defined(JS_CODEGEN_LOONG64) - # include "jit/loong64/SharedICHelpers-loong64.h" - #elif defined(JS_CODEGEN_NONE) -diff --git a/js/src/jit/SharedICRegisters.h b/js/src/jit/SharedICRegisters.h -index e29f21c28d..4091d9f595 100644 ---- a/js/src/jit/SharedICRegisters.h -+++ b/js/src/jit/SharedICRegisters.h -@@ -19,6 +19,8 @@ - # include "jit/mips32/SharedICRegisters-mips32.h" - #elif defined(JS_CODEGEN_MIPS64) - # include "jit/mips64/SharedICRegisters-mips64.h" -+#elif defined(JS_CODEGEN_RISCV64) -+# include "jit/riscv64/SharedICRegisters-riscv64.h" - #elif defined(JS_CODEGEN_LOONG64) - # include "jit/loong64/SharedICRegisters-loong64.h" - #elif defined(JS_CODEGEN_NONE) -diff --git a/js/src/jit/moz.build b/js/src/jit/moz.build -index 967146e32f..1519351bbb 100644 ---- a/js/src/jit/moz.build -+++ b/js/src/jit/moz.build -@@ -212,6 +212,13 @@ elif CONFIG["JS_CODEGEN_MIPS32"] or CONFIG["JS_CODEGEN_MIPS64"]: - ] - if CONFIG["JS_SIMULATOR_MIPS64"]: - UNIFIED_SOURCES += ["mips64/Simulator-mips64.cpp"] -+elif CONFIG["JS_CODEGEN_RISCV64"]: -+ UNIFIED_SOURCES += [ -+ "riscv64/Assembler-riscv64.cpp", -+ "riscv64/Trampoline-riscv64.cpp", -+ ] -+ if CONFIG["JS_SIMULATOR_RISC64"]: -+ UNIFIED_SOURCES += ["riscv64/Simulator-riscv64.cpp"] - elif CONFIG["JS_CODEGEN_LOONG64"]: - UNIFIED_SOURCES += [ - "loong64/Architecture-loong64.cpp", -@@ -225,7 +232,6 @@ elif CONFIG["JS_CODEGEN_LOONG64"]: - if CONFIG["JS_SIMULATOR_LOONG64"]: - UNIFIED_SOURCES += ["loong64/Simulator-loong64.cpp"] - -- - # Generate jit/MIROpsGenerated.h from jit/MIROps.yaml - GeneratedFile( - "MIROpsGenerated.h", -diff --git a/js/src/jit/riscv64/Architecture-riscv64.h b/js/src/jit/riscv64/Architecture-riscv64.h -new file mode 100644 -index 0000000000..a676dc142e ---- /dev/null -+++ b/js/src/jit/riscv64/Architecture-riscv64.h -@@ -0,0 +1,404 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef jit_riscv64_Architecture_riscv64_h -+#define jit_riscv64_Architecture_riscv64_h -+ -+// JitSpewer.h is included through MacroAssembler implementations for other -+// platforms, so include it here to avoid inadvertent build bustage. -+#include "jit/JitSpewer.h" -+ -+#include "jit/shared/Architecture-shared.h" -+ -+namespace js { -+namespace jit { -+ -+static const uint32_t SimdMemoryAlignment = -+ 4; // Make it 4 to avoid a bunch of div-by-zero warnings -+static const uint32_t WasmStackAlignment = 8; -+static const uint32_t WasmTrapInstructionLength = 0; -+ -+// See comments in wasm::GenerateFunctionPrologue. -+static constexpr uint32_t WasmCheckedCallEntryOffset = 0u; -+static constexpr uint32_t WasmCheckedTailEntryOffset = 1u; -+ -+class Registers { -+ public: -+ enum RegisterID { -+ x0 = 0, -+ zero = 0, -+ x1 = 1, -+ ra = 1, -+ x2 = 2, -+ sp = 2, -+ x3 = 3, -+ gp = 3, -+ x4 = 4, -+ tp = 4, -+ x5 = 5, -+ t0 = 5, -+ x6 = 6, -+ t1 = 6, -+ x7 = 7, -+ t2 = 7, -+ x8 = 8, -+ fp = 8, -+ s0 = 8, -+ x9 = 9, -+ s1 = 9, -+ x10 = 10, -+ a0 = 10, -+ x11 = 11, -+ a1 = 11, -+ x12 = 12, -+ a2 = 12, -+ x13 = 13, -+ a3 = 13, -+ x14 = 14, -+ a4 = 14, -+ x15 = 15, -+ a5 = 15, -+ x16 = 16, -+ a6 = 16, -+ x17 = 17, -+ a7 = 17, -+ x18 = 18, -+ s2 = 18, -+ x19 = 19, -+ s3 = 19, -+ x20 = 20, -+ s4 = 20, -+ x21 = 21, -+ s5 = 21, -+ x22 = 22, -+ s6 = 22, -+ x23 = 23, -+ s7 = 23, -+ x24 = 24, -+ s8 = 24, -+ x25 = 25, -+ s9 = 25, -+ x26 = 26, -+ s10 = 26, -+ x27 = 27, -+ s11 = 27, -+ x28 = 28, -+ t3 = 28, -+ x29 = 29, -+ t4 = 29, -+ x30 = 30, -+ t5 = 30, -+ x31 = 31, -+ t6 = 31, -+ invalid_reg -+ }; -+ typedef uint8_t Code; -+ typedef RegisterID Encoding; -+ union RegisterContent { -+ uintptr_t r; -+ }; -+ -+ typedef uint32_t SetType; -+ -+ static uint32_t SetSize(SetType x) { -+ static_assert(sizeof(SetType) == 4, "SetType must be 32 bits"); -+ return mozilla::CountPopulation32(x); -+ } -+ static uint32_t FirstBit(SetType x) { -+ return mozilla::CountTrailingZeroes32(x); -+ } -+ static uint32_t LastBit(SetType x) { -+ return 31 - mozilla::CountLeadingZeroes32(x); -+ } -+ -+ static const char* GetName(uint32_t code) { -+ // clang-format off -+ static const char* const Names[] = { -+ "zero", "ra", "sp", "gp", "tp", "t0", "t1", "t2", -+ "fp", "s1", "a0", "a1", "a2", "a3", "a4", "a5", -+ "a6", "a7", "s2", "s3", "s4", "s5", "s6", "s7", -+ "s8", "s9", "s10", "s11", "t3", "t4", "t5", "t6"}; -+ // clang-format on -+ static_assert(Total == sizeof(Names) / sizeof(Names[0]), -+ "Table is the correct size"); -+ if (code >= Total) { -+ return "invalid"; -+ } -+ return Names[code]; -+ } -+ -+ static Code FromName(const char* name) { -+ for (size_t i = 0; i < Total; i++) { -+ if (strcmp(GetName(Code(i)), name) == 0) { -+ return Code(i); -+ } -+ } -+ return Invalid; -+ } -+ -+ static const Encoding StackPointer = sp; -+ static const Encoding Invalid = invalid_reg; -+ static const uint32_t Total = 32; -+ static const uint32_t TotalPhys = 32; -+ static const uint32_t Allocatable = 28; -+ static const SetType AllMask = 0xffffffff; -+ static const SetType ArgRegMask = -+ (1 << Registers::a0) | (1 << Registers::a1) | (1 << Registers::a2) | -+ (1 << Registers::a3) | (1 << Registers::a4) | (1 << Registers::a5) | -+ (1 << Registers::a6) | (1 << Registers::a7); -+ static const SetType VolatileMask = -+ (1 << Registers::a0) | (1 << Registers::a1) | (1 << Registers::a2) | -+ (1 << Registers::a3) | (1 << Registers::a4) | (1 << Registers::a5) | -+ (1 << Registers::a6) | (1 << Registers::a7) | (1 << Registers::t0) | -+ (1 << Registers::t1) | (1 << Registers::t2) | (1 << Registers::t3) | -+ (1 << Registers::t4) | (1 << Registers::t5) | (1 << Registers::t6); -+ static const SetType NonVolatileMask = -+ (1 << Registers::s0) | (1 << Registers::s1) | (1 << Registers::s2) | -+ (1 << Registers::s3) | (1 << Registers::s4) | (1 << Registers::s5) | -+ (1 << Registers::s6) | (1 << Registers::s7) | (1 << Registers::s8) | -+ (1 << Registers::s9) | (1 << Registers::s10) | (1 << Registers::s11); -+ static const SetType NonAllocatableMask = -+ (1 << Registers::zero) | (1 << Registers::sp) | (1 << Registers::tp) | -+ (1 << Registers::gp); -+ static const SetType AllocatableMask = AllMask & ~NonAllocatableMask; -+ static const SetType JSCallMask = 0; -+ static const SetType CallMask = 0; -+}; -+ -+typedef uint8_t PackedRegisterMask; -+ -+class FloatRegisters { -+ public: -+ enum FPRegisterID { -+ f0 = 0, -+ ft0 = 0, -+ f1 = 1, -+ ft1 = 1, -+ f2 = 2, -+ ft2 = 2, -+ f3 = 3, -+ ft3 = 3, -+ f4 = 4, -+ ft4 = 4, -+ f5 = 5, -+ ft5 = 5, -+ f6 = 6, -+ ft6 = 6, -+ f7 = 7, -+ ft7 = 7, -+ f8 = 8, -+ fs0 = 8, -+ f9 = 9, -+ fs1 = 9, -+ f10 = 10, -+ fa0 = 10, -+ f11 = 11, -+ fa1 = 11, -+ f12 = 12, -+ fa2 = 12, -+ f13 = 13, -+ fa3 = 13, -+ f14 = 14, -+ fa4 = 14, -+ f15 = 15, -+ fa5 = 15, -+ f16 = 16, -+ fa6 = 16, -+ f17 = 17, -+ fa7 = 17, -+ f18 = 18, -+ fs2 = 18, -+ f19 = 19, -+ fs3 = 19, -+ f20 = 20, -+ fs4 = 20, -+ f21 = 21, -+ fs5 = 21, -+ f22 = 22, -+ fs6 = 22, -+ f23 = 23, -+ fs7 = 23, -+ f24 = 24, -+ fs8 = 24, -+ f25 = 25, -+ fs9 = 25, -+ f26 = 26, -+ fs10 = 26, -+ f27 = 27, -+ fs11 = 27, -+ f28 = 28, -+ ft8 = 28, -+ f29 = 29, -+ ft9 = 29, -+ f30 = 30, -+ ft10 = 30, -+ f31 = 31, -+ ft11 = 31, -+ invalid_reg -+ }; -+ -+ typedef uint8_t Code; -+ typedef FPRegisterID Encoding; -+ typedef uint32_t SetType; -+ -+ enum Kind : uint8_t { Double, Single }; -+ -+ union RegisterContent { -+ float s; -+ double d; -+ }; -+ -+ static const char* GetName(uint32_t code) { -+ // clang-format off -+ static const char* const Names[] = { -+ "ft0", "ft1", "ft2", "ft3", "ft4", "ft5", "ft6", "ft7", -+ "fs0", "fs1", "fa0", "fa1", "fa2", "fa3", "fa4", "fa5", -+ "fa6", "fa7", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7", -+ "fs8", "fs9", "fs10", "fs11", "ft8", "ft9", "ft10", "ft11", -+ }; -+ // clang-format on -+ static_assert(Total == sizeof(Names) / sizeof(Names[0]), -+ "Table is the correct size"); -+ if (code >= Total) { -+ return "invalid"; -+ } -+ return Names[code]; -+ } -+ static Code FromName(const char* name) { -+ for (size_t i = 0; i < Total; i++) { -+ if (strcmp(GetName(i), name) == 0) { -+ return Code(i); -+ } -+ } -+ -+ return Invalid; -+ } -+ -+ static constexpr Encoding encoding(Code c) { return Encoding(c & 31); } -+ -+ static const Encoding Invalid = invalid_reg; -+ static const uint32_t Total = 32; -+ static const uint32_t TotalPhys = 32; -+ static const uint32_t Allocatable = 32; -+ static const SetType AllMask = 0xffffffff; -+ static const SetType AllDoubleMask = 0; -+ static const SetType AllSingleMask = 0; -+ static const SetType VolatileMask = -+ (1 << FloatRegisters::ft0) | (1 << FloatRegisters::ft1) | -+ (1 << FloatRegisters::ft2) | (1 << FloatRegisters::ft3) | -+ (1 << FloatRegisters::ft4) | (1 << FloatRegisters::ft5) | -+ (1 << FloatRegisters::ft6) | (1 << FloatRegisters::ft7) | -+ (1 << FloatRegisters::ft8) | (1 << FloatRegisters::ft9) | -+ (1 << FloatRegisters::ft10) | (1 << FloatRegisters::ft11) | -+ (1 << FloatRegisters::fa0) | (1 << FloatRegisters::fa1) | -+ (1 << FloatRegisters::fa2) | (1 << FloatRegisters::fa3) | -+ (1 << FloatRegisters::fa4) | (1 << FloatRegisters::fa5) | -+ (1 << FloatRegisters::fa6) | (1 << FloatRegisters::fa7); -+ static const SetType NonVolatileMask = -+ (1 << FloatRegisters::fs0) | (1 << FloatRegisters::fs1) | -+ (1 << FloatRegisters::fs2) | (1 << FloatRegisters::fs3) | -+ (1 << FloatRegisters::fs4) | (1 << FloatRegisters::fs5) | -+ (1 << FloatRegisters::fs6) | (1 << FloatRegisters::fs7) | -+ (1 << FloatRegisters::fs8) | (1 << FloatRegisters::fs9) | -+ (1 << FloatRegisters::fs10) | (1 << FloatRegisters::fs11); -+ static const SetType NonAllocatableMask = 0; -+ static const SetType AllocatableMask = AllMask & ~NonAllocatableMask; -+}; -+ -+template -+class TypedRegisterSet; -+ -+struct FloatRegister { -+ typedef FloatRegisters Codes; -+ typedef size_t Code; -+ typedef Codes::Encoding Encoding; -+ typedef Codes::SetType SetType; -+ typedef Codes::Kind Kind; -+ -+ private: -+ uint8_t encoding_; -+ uint8_t kind_; -+ bool invalid_; -+ -+ public: -+ constexpr FloatRegister(Encoding encoding) -+ : encoding_(encoding), kind_(FloatRegisters::Double), invalid_(false) {} -+ constexpr FloatRegister(Encoding encoding, Kind kind) -+ : encoding_(encoding), kind_(kind), invalid_(false) {} -+ constexpr FloatRegister() -+ : encoding_(0), kind_(FloatRegisters::Double), invalid_(true) {} -+ -+ static uint32_t FirstBit(SetType) { MOZ_CRASH(); } -+ static uint32_t LastBit(SetType) { MOZ_CRASH(); } -+ static FloatRegister FromCode(uint32_t i) { -+ return FloatRegister(FloatRegisters::encoding(i), FloatRegisters::Double); -+ } -+ bool isSingle() const { return kind_ == FloatRegisters::Single; } -+ bool isDouble() const { return kind_ == FloatRegisters::Double; } -+ bool isSimd128() const { return false; } -+ bool isInvalid() const { return invalid_; } -+ FloatRegister asSingle() const { MOZ_CRASH(); } -+ FloatRegister asDouble() const { MOZ_CRASH(); } -+ FloatRegister asSimd128() const { MOZ_CRASH(); } -+ Code code() const { MOZ_CRASH(); } -+ Encoding encoding() const { return Encoding(encoding_); } -+ const char* name() const { return FloatRegisters::GetName(code()); } -+ bool volatile_() const { MOZ_CRASH(); } -+ bool operator!=(FloatRegister) const { MOZ_CRASH(); } -+ bool operator==(FloatRegister) const { MOZ_CRASH(); } -+ bool aliases(FloatRegister) const { MOZ_CRASH(); } -+ uint32_t numAliased() const { MOZ_CRASH(); } -+ FloatRegister aliased(uint32_t) { MOZ_CRASH(); } -+ bool equiv(FloatRegister) const { MOZ_CRASH(); } -+ uint32_t size() const { MOZ_CRASH(); } -+ uint32_t numAlignedAliased() const { MOZ_CRASH(); } -+ FloatRegister alignedAliased(uint32_t) { MOZ_CRASH(); } -+ SetType alignedOrDominatedAliasedSet() const { MOZ_CRASH(); } -+ -+ static constexpr RegTypeName DefaultType = RegTypeName::Float64; -+ -+ template -+ static SetType LiveAsIndexableSet(SetType s) { -+ return SetType(0); -+ } -+ -+ template -+ static SetType AllocatableAsIndexableSet(SetType s) { -+ static_assert(Name != RegTypeName::Any, "Allocatable set are not iterable"); -+ return SetType(0); -+ } -+ -+ template -+ static T ReduceSetForPush(T) { -+ MOZ_CRASH(); -+ } -+ uint32_t getRegisterDumpOffsetInBytes() { -+ MOZ_CRASH(); -+ return 0; -+ } -+ static uint32_t SetSize(SetType x) { -+ MOZ_CRASH(); -+ return 0; -+ } -+ static Code FromName(const char* name) { return 0; } -+ -+ // This is used in static initializers, so produce a bogus value instead of -+ // crashing. -+ static uint32_t GetPushSizeInBytes(const TypedRegisterSet&) { -+ return 0; -+ } -+}; -+ -+inline bool hasUnaliasedDouble() { MOZ_CRASH(); } -+inline bool hasMultiAlias() { MOZ_CRASH(); } -+ -+static const uint32_t ShadowStackSpace = 0; -+static const uint32_t JumpImmediateRange = INT32_MAX; -+ -+} // namespace jit -+} // namespace js -+ -+#endif /* jit_riscv64_Architecture_riscv64_h */ -diff --git a/js/src/jit/riscv64/Assembler-riscv64.cpp b/js/src/jit/riscv64/Assembler-riscv64.cpp -new file mode 100644 -index 0000000000..90fa6d87a8 ---- /dev/null -+++ b/js/src/jit/riscv64/Assembler-riscv64.cpp -@@ -0,0 +1,47 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "jit/riscv64/Assembler-riscv64.h" -+ -+using namespace js; -+using namespace js::jit; -+ -+ABIArg ABIArgGenerator::next(MIRType type) { -+ switch (type) { -+ case MIRType::Int32: -+ case MIRType::Int64: -+ case MIRType::Pointer: -+ case MIRType::RefOrNull: -+ case MIRType::StackResults: -+ if (intRegIndex_ == NumIntArgRegs) { -+ current_ = ABIArg(stackOffset_); -+ stackOffset_ += sizeof(uintptr_t); -+ break; -+ } -+ current_ = ABIArg(Register::FromCode(intRegIndex_)); -+ intRegIndex_++; -+ break; -+ -+ case MIRType::Float32: -+ case MIRType::Double: -+ if (floatRegIndex_ == NumFloatArgRegs) { -+ current_ = ABIArg(stackOffset_); -+ stackOffset_ += sizeof(double); -+ break; -+ } -+ current_ = ABIArg(FloatRegister(FloatRegisters::Encoding(floatRegIndex_), -+ type == MIRType::Double -+ ? FloatRegisters::Double -+ : FloatRegisters::Single)); -+ floatRegIndex_++; -+ break; -+ -+ case MIRType::Simd128: -+ default: -+ MOZ_CRASH("Unexpected argument type"); -+ } -+ return current_; -+} -diff --git a/js/src/jit/riscv64/Assembler-riscv64.h b/js/src/jit/riscv64/Assembler-riscv64.h -new file mode 100644 -index 0000000000..a58e6c4aff ---- /dev/null -+++ b/js/src/jit/riscv64/Assembler-riscv64.h -@@ -0,0 +1,303 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef jit_riscv64_Assembler_riscv64_h -+#define jit_riscv64_Assembler_riscv64_h -+ -+#include "mozilla/Sprintf.h" -+#include -+ -+#include "jit/CompactBuffer.h" -+#include "jit/JitCode.h" -+#include "jit/JitSpewer.h" -+#include "jit/riscv64/Architecture-riscv64.h" -+#include "jit/shared/Assembler-shared.h" -+#include "jit/shared/Disassembler-shared.h" -+#include "jit/shared/IonAssemblerBuffer.h" -+#include "wasm/WasmTypeDecls.h" -+ -+namespace js { -+namespace jit { -+ -+class MacroAssembler; -+ -+static constexpr Register t0{Registers::t0}; -+static constexpr Register t1{Registers::t1}; -+static constexpr Register t2{Registers::t2}; -+static constexpr Register t3{Registers::t3}; -+static constexpr Register t4{Registers::t4}; -+static constexpr Register t5{Registers::t5}; -+static constexpr Register t6{Registers::t6}; -+static constexpr Register s0{Registers::s0}; -+static constexpr Register s4{Registers::s4}; -+ -+static constexpr Register StackPointer{Registers::sp}; -+static constexpr Register FramePointer{Registers::fp}; -+static constexpr Register ReturnReg{Registers::a0}; -+static constexpr FloatRegister InvalidFloatReg; -+static constexpr FloatRegister ReturnFloat32Reg{FloatRegisters::fa0, -+ FloatRegisters::Single}; -+static constexpr FloatRegister ReturnDoubleReg{FloatRegisters::fa0, -+ FloatRegisters::Double}; -+static constexpr FloatRegister ReturnSimd128Reg = InvalidFloatReg; -+static constexpr FloatRegister ScratchSimd128Reg = InvalidFloatReg; -+static constexpr FloatRegister ScratchFloat32Reg_ = InvalidFloatReg; -+static constexpr FloatRegister ScratchDoubleReg_ = InvalidFloatReg; -+ -+static constexpr Register ScratchRegister = t6; -+ -+// Helper class for ScratchRegister usage. Asserts that only one piece -+// of code thinks it has exclusive ownership of the scratch register. -+struct ScratchRegisterScope : public AutoRegisterScope { -+ explicit ScratchRegisterScope(MacroAssembler& masm) -+ : AutoRegisterScope(masm, ScratchRegister) {} -+}; -+ -+struct SecondScratchRegisterScope : public AutoRegisterScope { -+ explicit SecondScratchRegisterScope(MacroAssembler& masm); -+}; -+ -+struct ScratchFloat32Scope : AutoFloatRegisterScope { -+ explicit ScratchFloat32Scope(MacroAssembler& masm) -+ : AutoFloatRegisterScope(masm, ScratchFloat32Reg_) {} -+}; -+ -+struct ScratchDoubleScope : AutoFloatRegisterScope { -+ explicit ScratchDoubleScope(MacroAssembler& masm) -+ : AutoFloatRegisterScope(masm, ScratchDoubleReg_) {} -+}; -+ -+static constexpr Register OsrFrameReg{Registers::invalid_reg}; -+static constexpr Register PreBarrierReg{Registers::invalid_reg}; -+static constexpr Register InterpreterPCReg{Registers::invalid_reg}; -+static constexpr Register CallTempReg0 = t0; -+static constexpr Register CallTempReg1 = t1; -+static constexpr Register CallTempReg2 = t2; -+static constexpr Register CallTempReg3 = t3; -+static constexpr Register CallTempReg4 = t4; -+static constexpr Register CallTempReg5 = t5; -+static constexpr Register InvalidReg{Registers::invalid_reg}; -+static constexpr Register CallTempNonArgRegs[] = {t0, t1, t2, t3, t4, t5, t6}; -+static const uint32_t NumCallTempNonArgRegs = std::size(CallTempNonArgRegs); -+ -+static constexpr Register IntArgReg0{Registers::a0}; -+static constexpr Register IntArgReg1{Registers::a1}; -+static constexpr Register IntArgReg2{Registers::a2}; -+static constexpr Register IntArgReg3{Registers::a3}; -+static constexpr Register IntArgReg4{Registers::a4}; -+static constexpr Register IntArgReg5{Registers::a5}; -+static constexpr Register IntArgReg6{Registers::a6}; -+static constexpr Register IntArgReg7{Registers::a7}; -+static constexpr Register HeapReg{Registers::invalid_reg}; -+ -+// Registerd used in RegExpTester instruction (do not use ReturnReg). -+static constexpr Register RegExpTesterRegExpReg = CallTempReg0; -+static constexpr Register RegExpTesterStringReg = CallTempReg1; -+static constexpr Register RegExpTesterLastIndexReg = CallTempReg2; -+ -+// Registerd used in RegExpMatcher instruction (do not use JSReturnOperand). -+static constexpr Register RegExpMatcherRegExpReg = CallTempReg0; -+static constexpr Register RegExpMatcherStringReg = CallTempReg1; -+static constexpr Register RegExpMatcherLastIndexReg = CallTempReg2; -+ -+static constexpr Register JSReturnReg_Type{Registers::a3}; -+static constexpr Register JSReturnReg_Data{Registers::a2}; -+static constexpr Register JSReturnReg{Registers::a2}; -+ -+static constexpr Register64 ReturnReg64(ReturnReg); -+ -+static constexpr Register ABINonArgReg0{Registers::s0}; -+static constexpr Register ABINonArgReg1{Registers::s1}; -+static constexpr Register ABINonArgReg2{Registers::s2}; -+static constexpr Register ABINonArgReg3{Registers::s3}; -+static constexpr Register ABINonArgReturnReg0{Registers::s0}; -+static constexpr Register ABINonArgReturnReg1{Registers::s1}; -+static constexpr Register ABINonVolatileReg{Registers::fp}; -+static constexpr Register ABINonArgReturnVolatileReg{Registers::ra}; -+ -+static constexpr FloatRegister ABINonArgDoubleReg = InvalidFloatReg; -+ -+// Instance pointer argument register for WebAssembly functions. This must not -+// alias any other register used for passing function arguments or return -+// values. Preserved by WebAssembly functions. -+static constexpr Register InstanceReg = s4; -+ -+static constexpr Register WasmTableCallScratchReg0{Registers::invalid_reg}; -+static constexpr Register WasmTableCallScratchReg1{Registers::invalid_reg}; -+static constexpr Register WasmTableCallSigReg{Registers::invalid_reg}; -+static constexpr Register WasmTableCallIndexReg{Registers::invalid_reg}; -+static constexpr Register WasmTlsReg{Registers::invalid_reg}; -+static constexpr Register WasmJitEntryReturnScratch{Registers::invalid_reg}; -+ -+static constexpr uint32_t ABIStackAlignment = 16; -+static constexpr uint32_t CodeAlignment = 16; -+static constexpr uint32_t JitStackAlignment = 8; -+static constexpr uint32_t JitStackValueAlignment = -+ JitStackAlignment / sizeof(Value); -+ -+static const Scale ScalePointer = TimesOne; -+ -+class Instruction; -+typedef js::jit::AssemblerBuffer<1024, Instruction> RISCVBuffer; -+ -+class Assembler : public AssemblerShared { -+ public: -+ enum RISCVCondition : uint32_t { -+ EQ = 0b000, -+ NE = 0b001, -+ LT = 0b100, -+ GE = 0b101, -+ LTU = 0b110, -+ GEU = 0b111, -+ }; -+ -+ enum Condition { -+ Equal, -+ NotEqual, -+ Above, -+ AboveOrEqual, -+ Below, -+ BelowOrEqual, -+ GreaterThan, -+ GreaterThanOrEqual, -+ LessThan, -+ LessThanOrEqual, -+ Overflow, -+ CarrySet, -+ CarryClear, -+ Signed, -+ NotSigned, -+ Zero, -+ NonZero, -+ Always, -+ }; -+ -+ enum DoubleCondition { -+ DoubleOrdered, -+ DoubleEqual, -+ DoubleNotEqual, -+ DoubleGreaterThan, -+ DoubleGreaterThanOrEqual, -+ DoubleLessThan, -+ DoubleLessThanOrEqual, -+ DoubleUnordered, -+ DoubleEqualOrUnordered, -+ DoubleNotEqualOrUnordered, -+ DoubleGreaterThanOrUnordered, -+ DoubleGreaterThanOrEqualOrUnordered, -+ DoubleLessThanOrUnordered, -+ DoubleLessThanOrEqualOrUnordered -+ }; -+ -+ RISCVBuffer m_buffer; -+ -+ BufferOffset nextOffset() { return m_buffer.nextOffset(); } -+ -+ static Condition InvertCondition(Condition) { MOZ_CRASH(); } -+ -+ static DoubleCondition InvertCondition(DoubleCondition) { MOZ_CRASH(); } -+ -+ static void TraceJumpRelocations(JSTracer* trc, JitCode* code, -+ CompactBufferReader& reader); -+ static void TraceDataRelocations(JSTracer* trc, JitCode* code, -+ CompactBufferReader& reader); -+ -+ template -+ static void PatchDataWithValueCheck(CodeLocationLabel, T, S) { -+ MOZ_CRASH(); -+ } -+ static void PatchWrite_Imm32(CodeLocationLabel, Imm32) { MOZ_CRASH(); } -+ -+ static void PatchWrite_NearCall(CodeLocationLabel, CodeLocationLabel) { -+ MOZ_CRASH(); -+ } -+ static uint32_t PatchWrite_NearCallSize() { MOZ_CRASH(); } -+ -+ static void ToggleToJmp(CodeLocationLabel) { MOZ_CRASH(); } -+ static void ToggleToCmp(CodeLocationLabel) { MOZ_CRASH(); } -+ static void ToggleCall(CodeLocationLabel, bool) { MOZ_CRASH(); } -+ -+ static void Bind(uint8_t* rawCode, const CodeLabel& label) { MOZ_CRASH(); } -+ -+ static uintptr_t GetPointer(uint8_t*) { MOZ_CRASH(); } -+ -+ static bool HasRoundInstruction(RoundingMode) { return false; } -+ -+ void verifyHeapAccessDisassembly(uint32_t begin, uint32_t end, -+ const Disassembler::HeapAccess& heapAccess) { -+ MOZ_CRASH(); -+ } -+ -+ void setUnlimitedBuffer() { MOZ_CRASH(); } -+ -+ MOZ_ALWAYS_INLINE BufferOffset writeInst(uint32_t x) { -+ MOZ_ASSERT(hasCreator()); -+ return m_buffer.putInt(x); -+ } -+}; -+ -+class Instruction { -+ protected: -+ uint32_t data; -+ -+ // Standard constructor -+ Instruction(uint32_t data_) : data(data_) {} -+ -+ public: -+ uint32_t encode() const { return data; } -+ -+ void setData(uint32_t data) { this->data = data; } -+ Instruction* next(); -+ const uint32_t* raw() const { return &data; } -+ uint32_t size() const { return sizeof(data); } -+}; -+ -+class Operand { -+ public: -+ enum Kind { REG }; -+ -+ private: -+ Kind kind_ : 4; -+ uint32_t reg_ : 5; -+ int32_t offset_; -+ -+ public: -+ explicit Operand(const Register reg) -+ : kind_(REG), reg_(reg.code()), offset_(0) {} -+ explicit Operand(const FloatRegister) { MOZ_CRASH(); } -+ explicit Operand(const Address& adress) { MOZ_CRASH(); } -+ explicit Operand(Register reg, Imm32 offset) -+ : kind_(REG), reg_(reg.code()), offset_(offset.value) {} -+ explicit Operand(Register reg, int32_t offset) -+ : kind_(REG), reg_(reg.code()), offset_(offset) {} -+ -+ Kind kind() const { return kind_; } -+}; -+ -+static const uint32_t NumIntArgRegs = 8; -+static const uint32_t NumFloatArgRegs = 8; -+ -+class ABIArgGenerator { -+ public: -+ ABIArgGenerator() -+ : intRegIndex_(0), floatRegIndex_(0), stackOffset_(0), current_() {} -+ -+ ABIArg next(MIRType); -+ ABIArg& current() { return current_; } -+ uint32_t stackBytesConsumedSoFar() const { return stackOffset_; } -+ void increaseStackOffset(uint32_t bytes) { stackOffset_ += bytes; } -+ -+ private: -+ unsigned intRegIndex_; -+ unsigned floatRegIndex_; -+ uint32_t stackOffset_; -+ ABIArg current_; -+}; -+ -+} // namespace jit -+} // namespace js -+ -+#endif /* jit_riscv64_Assembler_riscv64_h */ -diff --git a/js/src/jit/riscv64/CodeGenerator-riscv64.h b/js/src/jit/riscv64/CodeGenerator-riscv64.h -new file mode 100644 -index 0000000000..db30b32283 ---- /dev/null -+++ b/js/src/jit/riscv64/CodeGenerator-riscv64.h -@@ -0,0 +1,78 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef jit_riscv64_CodeGenerator_riscv64_h -+#define jit_riscv64_CodeGenerator_riscv64_h -+ -+#include "jit/shared/CodeGenerator-shared.h" -+ -+namespace js { -+namespace jit { -+ -+class CodeGeneratorRiscv64 : public CodeGeneratorShared { -+ protected: -+ CodeGeneratorRiscv64(MIRGenerator* gen, LIRGraph* graph, MacroAssembler* masm) -+ : CodeGeneratorShared(gen, graph, masm) { -+ MOZ_CRASH(); -+ } -+ -+ MoveOperand toMoveOperand(LAllocation) const { MOZ_CRASH(); } -+ template -+ void bailoutCmp32(Assembler::Condition, T1, T2, LSnapshot*) { -+ MOZ_CRASH(); -+ } -+ template -+ void bailoutTest32(Assembler::Condition, T1, T2, LSnapshot*) { -+ MOZ_CRASH(); -+ } -+ template -+ void bailoutCmpPtr(Assembler::Condition, T1, T2, LSnapshot*) { -+ MOZ_CRASH(); -+ } -+ void bailoutTestPtr(Assembler::Condition, Register, Register, LSnapshot*) { -+ MOZ_CRASH(); -+ } -+ void bailoutIfFalseBool(Register, LSnapshot*) { MOZ_CRASH(); } -+ void bailoutFrom(Label*, LSnapshot*) { MOZ_CRASH(); } -+ void bailout(LSnapshot*) { MOZ_CRASH(); } -+ void bailoutIf(Assembler::Condition, LSnapshot*) { MOZ_CRASH(); } -+ bool generateOutOfLineCode() { MOZ_CRASH(); } -+ void testNullEmitBranch(Assembler::Condition, ValueOperand, MBasicBlock*, -+ MBasicBlock*) { -+ MOZ_CRASH(); -+ } -+ void testUndefinedEmitBranch(Assembler::Condition, ValueOperand, MBasicBlock*, -+ MBasicBlock*) { -+ MOZ_CRASH(); -+ } -+ void testObjectEmitBranch(Assembler::Condition, ValueOperand, MBasicBlock*, -+ MBasicBlock*) { -+ MOZ_CRASH(); -+ } -+ void testZeroEmitBranch(Assembler::Condition, Register, MBasicBlock*, -+ MBasicBlock*) { -+ MOZ_CRASH(); -+ } -+ void emitTableSwitchDispatch(MTableSwitch*, Register, Register) { -+ MOZ_CRASH(); -+ } -+ void emitBigIntDiv(LBigIntDiv*, Register, Register, Register, Label*) { -+ MOZ_CRASH(); -+ } -+ void emitBigIntMod(LBigIntMod*, Register, Register, Register, Label*) { -+ MOZ_CRASH(); -+ } -+ ValueOperand ToValue(LInstruction*, size_t) { MOZ_CRASH(); } -+ ValueOperand ToTempValue(LInstruction*, size_t) { MOZ_CRASH(); } -+ void generateInvalidateEpilogue() { MOZ_CRASH(); } -+}; -+ -+typedef CodeGeneratorRiscv64 CodeGeneratorSpecific; -+ -+} // namespace jit -+} // namespace js -+ -+#endif /* jit_riscv64_CodeGenerator_riscv64_h */ -diff --git a/js/src/jit/riscv64/LIR-riscv64.h b/js/src/jit/riscv64/LIR-riscv64.h -new file mode 100644 -index 0000000000..59d42c6c75 ---- /dev/null -+++ b/js/src/jit/riscv64/LIR-riscv64.h -@@ -0,0 +1,111 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef jit_riscv64_LIR_riscv64_h -+#define jit_riscv64_LIR_riscv64_h -+ -+namespace js { -+namespace jit { -+ -+class LUnboxFloatingPoint : public LInstruction { -+ public: -+ LIR_HEADER(UnboxFloatingPoint) -+ static const size_t Input = 0; -+ -+ MUnbox* mir() const { MOZ_CRASH(); } -+ -+ const LDefinition* output() const { MOZ_CRASH(); } -+ MIRType type() const { MOZ_CRASH(); } -+}; -+ -+class LTableSwitch : public LInstruction { -+ public: -+ LIR_HEADER(TableSwitch) -+ MTableSwitch* mir() { MOZ_CRASH(); } -+ -+ const LAllocation* index() { MOZ_CRASH(); } -+ const LDefinition* tempInt() { MOZ_CRASH(); } -+ const LDefinition* tempPointer() { MOZ_CRASH(); } -+}; -+ -+class LTableSwitchV : public LInstruction { -+ public: -+ LIR_HEADER(TableSwitchV) -+ MTableSwitch* mir() { MOZ_CRASH(); } -+ -+ const LDefinition* tempInt() { MOZ_CRASH(); } -+ const LDefinition* tempFloat() { MOZ_CRASH(); } -+ const LDefinition* tempPointer() { MOZ_CRASH(); } -+ -+ static const size_t InputValue = 0; -+}; -+ -+class LWasmUint32ToFloat32 : public LInstructionHelper<1, 1, 0> { -+ public: -+ explicit LWasmUint32ToFloat32(const LAllocation&) -+ : LInstructionHelper(Opcode::Invalid) { -+ MOZ_CRASH(); -+ } -+}; -+ -+class LUnbox : public LInstructionHelper<1, 2, 0> { -+ public: -+ MUnbox* mir() const { MOZ_CRASH(); } -+ const LAllocation* payload() { MOZ_CRASH(); } -+ const LAllocation* type() { MOZ_CRASH(); } -+ const char* extraName() const { MOZ_CRASH(); } -+}; -+class LDivI : public LBinaryMath<1> { -+ public: -+ LDivI(const LAllocation&, const LAllocation&, const LDefinition&) -+ : LBinaryMath(Opcode::Invalid) { -+ MOZ_CRASH(); -+ } -+ MDiv* mir() const { MOZ_CRASH(); } -+}; -+class LDivPowTwoI : public LInstructionHelper<1, 1, 0> { -+ public: -+ LDivPowTwoI(const LAllocation&, int32_t) -+ : LInstructionHelper(Opcode::Invalid) { -+ MOZ_CRASH(); -+ } -+ const LAllocation* numerator() { MOZ_CRASH(); } -+ int32_t shift() { MOZ_CRASH(); } -+ MDiv* mir() const { MOZ_CRASH(); } -+}; -+class LModI : public LBinaryMath<1> { -+ public: -+ LModI(const LAllocation&, const LAllocation&, const LDefinition&) -+ : LBinaryMath(Opcode::Invalid) { -+ MOZ_CRASH(); -+ } -+ -+ const LDefinition* callTemp() { MOZ_CRASH(); } -+ MMod* mir() const { MOZ_CRASH(); } -+}; -+class LWasmUint32ToDouble : public LInstructionHelper<1, 1, 0> { -+ public: -+ explicit LWasmUint32ToDouble(const LAllocation&) -+ : LInstructionHelper(Opcode::Invalid) { -+ MOZ_CRASH(); -+ } -+}; -+class LModPowTwoI : public LInstructionHelper<1, 1, 0> { -+ public: -+ int32_t shift() { MOZ_CRASH(); } -+ LModPowTwoI(const LAllocation& lhs, int32_t shift) -+ : LInstructionHelper(Opcode::Invalid) { -+ MOZ_CRASH(); -+ } -+ MMod* mir() const { MOZ_CRASH(); } -+}; -+ -+class LMulI : public LInstruction {}; -+ -+} // namespace jit -+} // namespace js -+ -+#endif /* jit_riscv64_LIR_riscv64_h */ -diff --git a/js/src/jit/riscv64/Lowering-riscv64.h b/js/src/jit/riscv64/Lowering-riscv64.h -new file mode 100644 -index 0000000000..a68e52b872 ---- /dev/null -+++ b/js/src/jit/riscv64/Lowering-riscv64.h -@@ -0,0 +1,130 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef jit_riscv64_Lowering_riscv64_h -+#define jit_riscv64_Lowering_riscv64_h -+ -+#include "jit/shared/Lowering-shared.h" -+ -+namespace js { -+namespace jit { -+ -+class LIRGeneratorRiscv64 : public LIRGeneratorShared { -+ protected: -+ LIRGeneratorRiscv64(MIRGenerator* gen, MIRGraph& graph, LIRGraph& lirGraph) -+ : LIRGeneratorShared(gen, graph, lirGraph) { -+ MOZ_CRASH(); -+ } -+ -+ LBoxAllocation useBoxFixed(MDefinition*, Register, Register, -+ bool useAtStart = false) { -+ MOZ_CRASH(); -+ } -+ -+ LAllocation useByteOpRegister(MDefinition*) { MOZ_CRASH(); } -+ LAllocation useByteOpRegisterAtStart(MDefinition*) { MOZ_CRASH(); } -+ LAllocation useByteOpRegisterOrNonDoubleConstant(MDefinition*) { -+ MOZ_CRASH(); -+ } -+ LDefinition tempByteOpRegister() { MOZ_CRASH(); } -+ LDefinition tempToUnbox() { MOZ_CRASH(); } -+ bool needTempForPostBarrier() { MOZ_CRASH(); } -+ void lowerUntypedPhiInput(MPhi*, uint32_t, LBlock*, size_t) { MOZ_CRASH(); } -+ void lowerInt64PhiInput(MPhi*, uint32_t, LBlock*, size_t) { MOZ_CRASH(); } -+ void defineInt64Phi(MPhi*, size_t) { MOZ_CRASH(); } -+ void lowerForShift(LInstructionHelper<1, 2, 0>*, MDefinition*, MDefinition*, -+ MDefinition*) { -+ MOZ_CRASH(); -+ } -+ void lowerUrshD(MUrsh*) { MOZ_CRASH(); } -+ void lowerPowOfTwoI(MPow*) { MOZ_CRASH(); } -+ template -+ void lowerForALU(T, MDefinition*, MDefinition*, MDefinition* v = nullptr) { -+ MOZ_CRASH(); -+ } -+ template -+ void lowerForFPU(T, MDefinition*, MDefinition*, MDefinition* v = nullptr) { -+ MOZ_CRASH(); -+ } -+ template -+ void lowerForALUInt64(T, MDefinition*, MDefinition*, -+ MDefinition* v = nullptr) { -+ MOZ_CRASH(); -+ } -+ void lowerForMulInt64(LMulI64*, MMul*, MDefinition*, -+ MDefinition* v = nullptr) { -+ MOZ_CRASH(); -+ } -+ template -+ void lowerForShiftInt64(T, MDefinition*, MDefinition*, -+ MDefinition* v = nullptr) { -+ MOZ_CRASH(); -+ } -+ void lowerForBitAndAndBranch(LBitAndAndBranch*, MInstruction*, MDefinition*, -+ MDefinition*) { -+ MOZ_CRASH(); -+ } -+ void lowerForCompareI64AndBranch(MTest*, MCompare*, JSOp, MDefinition*, -+ MDefinition*, MBasicBlock*, MBasicBlock*) { -+ MOZ_CRASH(); -+ } -+ -+ void lowerConstantDouble(double, MInstruction*) { MOZ_CRASH(); } -+ void lowerConstantFloat32(float, MInstruction*) { MOZ_CRASH(); } -+ void lowerTruncateDToInt32(MTruncateToInt32*) { MOZ_CRASH(); } -+ void lowerTruncateFToInt32(MTruncateToInt32*) { MOZ_CRASH(); } -+ void lowerBuiltinInt64ToFloatingPoint(MBuiltinInt64ToFloatingPoint* ins) { -+ MOZ_CRASH(); -+ } -+ void lowerWasmBuiltinTruncateToInt64(MWasmBuiltinTruncateToInt64* ins) { -+ MOZ_CRASH(); -+ } -+ void lowerWasmBuiltinTruncateToInt32(MWasmBuiltinTruncateToInt32* ins) { -+ MOZ_CRASH(); -+ } -+ void lowerDivI(MDiv*) { MOZ_CRASH(); } -+ void lowerModI(MMod*) { MOZ_CRASH(); } -+ void lowerDivI64(MDiv*) { MOZ_CRASH(); } -+ void lowerWasmBuiltinDivI64(MWasmBuiltinDivI64* div) { MOZ_CRASH(); } -+ void lowerModI64(MMod*) { MOZ_CRASH(); } -+ void lowerWasmBuiltinModI64(MWasmBuiltinModI64* mod) { MOZ_CRASH(); } -+ void lowerNegI(MInstruction*, MDefinition*) { MOZ_CRASH(); } -+ void lowerNegI64(MInstruction*, MDefinition*) { MOZ_CRASH(); } -+ void lowerMulI(MMul*, MDefinition*, MDefinition*) { MOZ_CRASH(); } -+ void lowerUDiv(MDiv*) { MOZ_CRASH(); } -+ void lowerUMod(MMod*) { MOZ_CRASH(); } -+ void lowerWasmSelectI(MWasmSelect* select) { MOZ_CRASH(); } -+ void lowerWasmSelectI64(MWasmSelect* select) { MOZ_CRASH(); } -+ void lowerWasmCompareAndSelect(MWasmSelect* ins, MDefinition* lhs, -+ MDefinition* rhs, MCompare::CompareType compTy, -+ JSOp jsop) { -+ MOZ_CRASH(); -+ } -+ bool canSpecializeWasmCompareAndSelect(MCompare::CompareType compTy, -+ MIRType insTy) { -+ MOZ_CRASH(); -+ } -+ -+ void lowerBigIntLsh(MBigIntLsh*) { MOZ_CRASH(); } -+ void lowerBigIntRsh(MBigIntRsh*) { MOZ_CRASH(); } -+ void lowerBigIntDiv(MBigIntDiv*) { MOZ_CRASH(); } -+ void lowerBigIntMod(MBigIntMod*) { MOZ_CRASH(); } -+ -+ void lowerAtomicLoad64(MLoadUnboxedScalar*) { MOZ_CRASH(); } -+ void lowerAtomicStore64(MStoreUnboxedScalar*) { MOZ_CRASH(); } -+ -+ LTableSwitch* newLTableSwitch(LAllocation, LDefinition, MTableSwitch*) { -+ MOZ_CRASH(); -+ } -+ LTableSwitchV* newLTableSwitchV(MTableSwitch*) { MOZ_CRASH(); } -+}; -+ -+typedef LIRGeneratorRiscv64 LIRGeneratorSpecific; -+ -+} // namespace jit -+} // namespace js -+ -+#endif /* jit_riscv64_Lowering_riscv64_h */ -diff --git a/js/src/jit/riscv64/MacroAssembler-riscv64-inl.h b/js/src/jit/riscv64/MacroAssembler-riscv64-inl.h -new file mode 100644 -index 0000000000..3dd6273d0f ---- /dev/null -+++ b/js/src/jit/riscv64/MacroAssembler-riscv64-inl.h -@@ -0,0 +1,18 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef jit_riscv64_MacroAssembler_riscv64_inl_h -+#define jit_riscv64_MacroAssembler_riscv64_inl_h -+ -+#include "jit/riscv64/MacroAssembler-riscv64.h" -+ -+namespace js { -+namespace jit { -+ -+} // namespace jit -+} // namespace js -+ -+#endif -diff --git a/js/src/jit/riscv64/MacroAssembler-riscv64.h b/js/src/jit/riscv64/MacroAssembler-riscv64.h -new file mode 100644 -index 0000000000..30ca17d359 ---- /dev/null -+++ b/js/src/jit/riscv64/MacroAssembler-riscv64.h -@@ -0,0 +1,458 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef jit_riscv64_MacroAssembler_riscv64_h -+#define jit_riscv64_MacroAssembler_riscv64_h -+ -+#include "jit/riscv64/Assembler-riscv64.h" -+#include "jit/MoveResolver.h" -+#include "wasm/WasmBuiltins.h" -+ -+namespace js { -+namespace jit { -+ -+static constexpr ValueOperand JSReturnOperand{JSReturnReg}; -+ -+class ScratchTagScope : public SecondScratchRegisterScope { -+ public: -+ ScratchTagScope(MacroAssembler& masm, const js::jit::ValueOperand&) -+ : SecondScratchRegisterScope(masm) {} -+}; -+ -+class ScratchTagScopeRelease { -+ ScratchTagScope* ts_; -+ -+ public: -+ explicit ScratchTagScopeRelease(ScratchTagScope* ts) : ts_(ts) { -+ ts_->release(); -+ } -+ -+ ~ScratchTagScopeRelease() { ts_->reacquire(); } -+}; -+ -+class MacroAssemblerRiscv64 : public Assembler { -+ protected: -+ // Perform a downcast. Should be removed by Bug 996602. -+ MacroAssembler& asMasm(); -+ const MacroAssembler& asMasm() const; -+ -+ public: -+ MacroAssemblerRiscv64() { MOZ_CRASH(); } -+ -+ MoveResolver moveResolver_; -+ -+ size_t size() const { MOZ_CRASH(); } -+ size_t bytesNeeded() const { MOZ_CRASH(); } -+ size_t jumpRelocationTableBytes() const { MOZ_CRASH(); } -+ size_t dataRelocationTableBytes() const { MOZ_CRASH(); } -+ size_t preBarrierTableBytes() const { MOZ_CRASH(); } -+ -+ size_t numCodeLabels() const { MOZ_CRASH(); } -+ CodeLabel codeLabel(size_t) { MOZ_CRASH(); } -+ -+ bool reserve(size_t size) { MOZ_CRASH(); } -+ bool appendRawCode(const uint8_t* code, size_t numBytes) { MOZ_CRASH(); } -+ bool swapBuffer(wasm::Bytes& bytes) { MOZ_CRASH(); } -+ -+ void assertNoGCThings() const { MOZ_CRASH(); } -+ -+ static bool SupportsFloatingPoint() { return false; } -+ static bool SupportsUnalignedAccesses() { return false; } -+ static bool SupportsFastUnalignedFPAccesses() { return false; } -+ -+ void executableCopy(void*, bool = true) { MOZ_CRASH(); } -+ void copyJumpRelocationTable(uint8_t*) { MOZ_CRASH(); } -+ void copyDataRelocationTable(uint8_t*) { MOZ_CRASH(); } -+ void copyPreBarrierTable(uint8_t*) { MOZ_CRASH(); } -+ void processCodeLabels(uint8_t*) { MOZ_CRASH(); } -+ -+ void flushBuffer() {} -+ -+ template -+ void bind(T) { -+ MOZ_CRASH(); -+ } -+ template -+ void j(Condition, T) { -+ MOZ_CRASH(); -+ } -+ template -+ void jump(T) { -+ MOZ_CRASH(); -+ } -+ void writeCodePointer(CodeLabel* label) { -+ MOZ_CRASH(); -+ } -+ void haltingAlign(size_t) { MOZ_CRASH(); } -+ void nopAlign(size_t) { MOZ_CRASH(); } -+ void checkStackAlignment() { MOZ_CRASH(); } -+ uint32_t currentOffset() { return nextOffset().getOffset(); } -+ -+ void nop() { MOZ_CRASH(); } -+ void breakpoint() { MOZ_CRASH(); } -+ void abiret() { MOZ_CRASH(); } -+ void ret() { MOZ_CRASH(); } -+ -+ CodeOffset toggledJump(Label*) { MOZ_CRASH(); } -+ CodeOffset toggledCall(JitCode*, bool) { MOZ_CRASH(); } -+ static size_t ToggledCallSize(uint8_t*) { MOZ_CRASH(); } -+ -+ void finish() { MOZ_CRASH(); } -+ -+ template -+ void moveValue(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void moveValue(T, S, U) { -+ MOZ_CRASH(); -+ } -+ template -+ void storeValue(const T&, const S&) { -+ MOZ_CRASH(); -+ } -+ template -+ void storeValue(T, S, U) { -+ MOZ_CRASH(); -+ } -+ template -+ void storePrivateValue(const T&, const S&) { -+ MOZ_CRASH(); -+ } -+ template -+ void loadValue(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void loadUnalignedValue(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void pushValue(const T&) { -+ MOZ_CRASH(); -+ } -+ template -+ void pushValue(T, S) { -+ MOZ_CRASH(); -+ } -+ void popValue(ValueOperand) { MOZ_CRASH(); } -+ void tagValue(JSValueType, Register, ValueOperand) { MOZ_CRASH(); } -+ void retn(Imm32 n) { MOZ_CRASH(); } -+ template -+ void push(const T&) { -+ MOZ_CRASH(); -+ } -+ template -+ void Push(T) { -+ MOZ_CRASH(); -+ } -+ template -+ void pop(T) { -+ MOZ_CRASH(); -+ } -+ template -+ void Pop(T) { -+ MOZ_CRASH(); -+ } -+ template -+ CodeOffset pushWithPatch(T) { -+ MOZ_CRASH(); -+ } -+ -+ void testNullSet(Condition, ValueOperand, Register) { MOZ_CRASH(); } -+ void testObjectSet(Condition, ValueOperand, Register) { MOZ_CRASH(); } -+ void testUndefinedSet(Condition, ValueOperand, Register) { MOZ_CRASH(); } -+ -+ template -+ void cmpPtrSet(Condition, T, S, Register) { -+ MOZ_CRASH(); -+ } -+ void cmp8Set(Condition, Address, Imm32, Register) { MOZ_CRASH(); } -+ void cmp16Set(Condition, Address, Imm32, Register) { MOZ_CRASH(); } -+ template -+ void cmp32Set(Condition, T, S, Register) { -+ MOZ_CRASH(); -+ } -+ void cmp64Set(Condition, Address, Imm64, Register) { MOZ_CRASH(); } -+ -+ template -+ void mov(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void movePtr(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void move32(const T&, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void movq(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void moveFloat32(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void moveDouble(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void move64(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ CodeOffset movWithPatch(T, Register) { -+ MOZ_CRASH(); -+ } -+ -+ template -+ void loadPtr(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void load32(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void load32Unaligned(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void loadFloat32(T, FloatRegister) { -+ MOZ_CRASH(); -+ } -+ template -+ void loadDouble(T, FloatRegister) { -+ MOZ_CRASH(); -+ } -+ template -+ void loadPrivate(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void load8SignExtend(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void load8ZeroExtend(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void load16SignExtend(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void load16UnalignedSignExtend(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void load16ZeroExtend(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void load16UnalignedZeroExtend(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void load64(T, Register64) { -+ MOZ_CRASH(); -+ } -+ template -+ void load64Unaligned(T, Register64) { -+ MOZ_CRASH(); -+ } -+ -+ template -+ void storePtr(const T&, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void store32(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void store32_NoSecondScratch(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void store32Unaligned(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void storeFloat32(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void storeDouble(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void store8(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void store16(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void store16Unaligned(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void store64(T, S) { -+ MOZ_CRASH(); -+ } -+ template -+ void store64Unaligned(T, S) { -+ MOZ_CRASH(); -+ } -+ -+ template -+ void computeEffectiveAddress(T, Register) { -+ MOZ_CRASH(); -+ } -+ -+ void splitTagForTest(ValueOperand, ScratchTagScope&) { MOZ_CRASH(); } -+ -+ void boxDouble(FloatRegister, ValueOperand, FloatRegister) { MOZ_CRASH(); } -+ void boxNonDouble(JSValueType, Register, ValueOperand) { MOZ_CRASH(); } -+ template -+ void boxDouble(FloatRegister src, const T& dest) { -+ MOZ_CRASH(); -+ } -+ template -+ void unboxInt32(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void unboxBoolean(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void unboxString(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void unboxSymbol(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void unboxBigInt(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void unboxObject(T, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void unboxDouble(T, FloatRegister) { -+ MOZ_CRASH(); -+ } -+ void unboxValue(const ValueOperand&, AnyRegister, JSValueType) { -+ MOZ_CRASH(); -+ } -+ void unboxNonDouble(const ValueOperand&, Register, JSValueType) { -+ MOZ_CRASH(); -+ } -+ void unboxNonDouble(const Address&, Register, JSValueType) { MOZ_CRASH(); } -+ template -+ void unboxGCThingForGCBarrier(const T&, Register) { -+ MOZ_CRASH(); -+ } -+ template -+ void unboxObjectOrNull(const T& src, Register dest) { -+ MOZ_CRASH(); -+ } -+ void notBoolean(ValueOperand) { MOZ_CRASH(); } -+ [[nodiscard]] Register extractObject(Address, Register) { MOZ_CRASH(); } -+ [[nodiscard]] Register extractObject(ValueOperand, Register) { MOZ_CRASH(); } -+ [[nodiscard]] Register extractSymbol(ValueOperand, Register) { MOZ_CRASH(); } -+ [[nodiscard]] Register extractInt32(ValueOperand, Register) { MOZ_CRASH(); } -+ [[nodiscard]] Register extractBoolean(ValueOperand, Register) { MOZ_CRASH(); } -+ template -+ [[nodiscard]] Register extractTag(T, Register) { -+ MOZ_CRASH(); -+ } -+ -+ void convertFloat32ToInt32(FloatRegister, Register, Label*, bool v = true) { -+ MOZ_CRASH(); -+ } -+ void convertDoubleToInt32(FloatRegister, Register, Label*, bool v = true) { -+ MOZ_CRASH(); -+ } -+ void convertDoubleToPtr(FloatRegister, Register, Label*, bool v = true) { -+ MOZ_CRASH(); -+ } -+ void convertBoolToInt32(Register, Register) { MOZ_CRASH(); } -+ -+ void convertDoubleToFloat32(FloatRegister, FloatRegister) { MOZ_CRASH(); } -+ void convertInt32ToFloat32(Register, FloatRegister) { MOZ_CRASH(); } -+ -+ template -+ void convertInt32ToDouble(T, FloatRegister) { -+ MOZ_CRASH(); -+ } -+ void convertFloat32ToDouble(FloatRegister, FloatRegister) { MOZ_CRASH(); } -+ -+ void boolValueToDouble(ValueOperand, FloatRegister) { MOZ_CRASH(); } -+ void boolValueToFloat32(ValueOperand, FloatRegister) { MOZ_CRASH(); } -+ void int32ValueToDouble(ValueOperand, FloatRegister) { MOZ_CRASH(); } -+ void int32ValueToFloat32(ValueOperand, FloatRegister) { MOZ_CRASH(); } -+ -+ void loadConstantDouble(double, FloatRegister) { MOZ_CRASH(); } -+ void loadConstantFloat32(float, FloatRegister) { MOZ_CRASH(); } -+ Condition testInt32Truthy(bool, ValueOperand) { MOZ_CRASH(); } -+ Condition testStringTruthy(bool, ValueOperand) { MOZ_CRASH(); } -+ Condition testBigIntTruthy(bool, ValueOperand) { MOZ_CRASH(); } -+ -+ template -+ void loadUnboxedValue(T, MIRType, AnyRegister) { -+ MOZ_CRASH(); -+ } -+ template -+ void storeUnboxedValue(const ConstantOrRegister&, MIRType, T, MIRType) { -+ MOZ_CRASH(); -+ } -+ template -+ void storeUnboxedPayload(ValueOperand value, T, size_t, JSValueType) { -+ MOZ_CRASH(); -+ } -+ -+ void convertUInt32ToDouble(Register, FloatRegister) { MOZ_CRASH(); } -+ void convertUInt32ToFloat32(Register, FloatRegister) { MOZ_CRASH(); } -+ void incrementInt32Value(Address) { MOZ_CRASH(); } -+ void ensureDouble(ValueOperand, FloatRegister, Label*) { MOZ_CRASH(); } -+ -+ void buildFakeExitFrame(Register, uint32_t*) { MOZ_CRASH(); } -+ bool buildOOLFakeExitFrame(void*) { MOZ_CRASH(); } -+ -+ void setPrinter(Sprinter*) { MOZ_CRASH(); } -+ Operand ToPayload(Operand base) { MOZ_CRASH(); } -+ Address ToPayload(Address) { MOZ_CRASH(); } -+ -+ Register getStackPointer() const { MOZ_CRASH(); } -+ -+ void handleFailureWithHandlerTail(Label* profilerExitTail, -+ Label* bailoutTail) { MOZ_CRASH(); } -+ -+ // Instrumentation for entering and leaving the profiler. -+ void profilerEnterFrame(Register, Register) { MOZ_CRASH(); } -+ void profilerExitFrame() { MOZ_CRASH(); } -+}; -+ -+typedef MacroAssemblerRiscv64 MacroAssemblerSpecific; -+ -+static inline bool GetTempRegForIntArg(uint32_t, uint32_t, Register*) { -+ MOZ_CRASH(); -+} -+ -+} // namespace jit -+} // namespace js -+ -+#endif /* jit_riscv64_MacroAssembler_riscv64_h */ -diff --git a/js/src/jit/riscv64/MoveEmitter-riscv64.h b/js/src/jit/riscv64/MoveEmitter-riscv64.h -new file mode 100644 -index 0000000000..24ca3aebb2 ---- /dev/null -+++ b/js/src/jit/riscv64/MoveEmitter-riscv64.h -@@ -0,0 +1,32 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef jit_riscv64_MoveEmitter_riscv64_h -+#define jit_riscv64_MoveEmitter_riscv64_h -+ -+#include "mozilla/Assertions.h" -+ -+namespace js { -+namespace jit { -+ -+class MacroAssemblerRiscv64; -+class MoveResolver; -+struct Register; -+ -+class MoveEmitterRiscv64 { -+ public: -+ explicit MoveEmitterRiscv64(MacroAssemblerRiscv64&) { MOZ_CRASH(); } -+ void emit(const MoveResolver&) { MOZ_CRASH(); } -+ void finish() { MOZ_CRASH(); } -+ void setScratchRegister(Register) { MOZ_CRASH(); } -+}; -+ -+typedef MoveEmitterRiscv64 MoveEmitter; -+ -+} // namespace jit -+} // namespace js -+ -+#endif /* jit_riscv64_MoveEmitter_riscv64_h */ -diff --git a/js/src/jit/riscv64/SharedICHelpers-riscv64-inl.h b/js/src/jit/riscv64/SharedICHelpers-riscv64-inl.h -new file mode 100644 -index 0000000000..7c6f7b7c20 ---- /dev/null -+++ b/js/src/jit/riscv64/SharedICHelpers-riscv64-inl.h -@@ -0,0 +1,34 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef jit_riscv64_SharedICHelpers_riscv64_inl_h -+#define jit_riscv64_SharedICHelpers_riscv64_inl_h -+ -+#include "jit/SharedICHelpers.h" -+ -+namespace js { -+namespace jit { -+ -+inline void EmitBaselineTailCallVM(TrampolinePtr, MacroAssembler&, uint32_t) { -+ MOZ_CRASH(); -+} -+inline void EmitBaselineCreateStubFrameDescriptor(MacroAssembler&, Register, -+ uint32_t) { -+ MOZ_CRASH(); -+} -+inline void EmitBaselineCallVM(TrampolinePtr, MacroAssembler&) { MOZ_CRASH(); } -+ -+static const uint32_t STUB_FRAME_SIZE = 0; -+static const uint32_t STUB_FRAME_SAVED_STUB_OFFSET = 0; -+ -+inline void EmitBaselineEnterStubFrame(MacroAssembler&, Register) { -+ MOZ_CRASH(); -+} -+ -+} // namespace jit -+} // namespace js -+ -+#endif /* jit_riscv64_SharedICHelpers_riscv64_inl_h */ -diff --git a/js/src/jit/riscv64/SharedICHelpers-riscv64.h b/js/src/jit/riscv64/SharedICHelpers-riscv64.h -new file mode 100644 -index 0000000000..205b6615da ---- /dev/null -+++ b/js/src/jit/riscv64/SharedICHelpers-riscv64.h -@@ -0,0 +1,35 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef jit_riscv64_SharedICHelpers_riscv64_h -+#define jit_riscv64_SharedICHelpers_riscv64_h -+ -+#include "jit/MacroAssembler.h" -+#include "jit/SharedICRegisters.h" -+ -+namespace js { -+namespace jit { -+ -+static const size_t ICStackValueOffset = 0; -+ -+inline void EmitRestoreTailCallReg(MacroAssembler&) { MOZ_CRASH(); } -+inline void EmitRepushTailCallReg(MacroAssembler&) { MOZ_CRASH(); } -+inline void EmitCallIC(MacroAssembler&, CodeOffset*) { MOZ_CRASH(); } -+inline void EmitReturnFromIC(MacroAssembler&) { MOZ_CRASH(); } -+inline void EmitBaselineLeaveStubFrame(MacroAssembler&, bool v = false) { -+ MOZ_CRASH(); -+} -+inline void EmitStubGuardFailure(MacroAssembler&) { MOZ_CRASH(); } -+ -+template -+inline void EmitPreBarrier(MacroAssembler&, T, MIRType) { -+ MOZ_CRASH(); -+} -+ -+} // namespace jit -+} // namespace js -+ -+#endif /* jit_riscv64_SharedICHelpers_riscv64_h */ -diff --git a/js/src/jit/riscv64/SharedICRegisters-riscv64.h b/js/src/jit/riscv64/SharedICRegisters-riscv64.h -new file mode 100644 -index 0000000000..f1d5f165d8 ---- /dev/null -+++ b/js/src/jit/riscv64/SharedICRegisters-riscv64.h -@@ -0,0 +1,38 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef jit_riscv64_SharedICRegisters_riscv64_h -+#define jit_riscv64_SharedICRegisters_riscv64_h -+ -+#include "jit/riscv64/Assembler-riscv64.h" -+#include "jit/Registers.h" -+#include "jit/RegisterSets.h" -+ -+namespace js { -+namespace jit { -+ -+static constexpr Register BaselineFrameReg{Registers::invalid_reg}; -+static constexpr Register BaselineStackReg{Registers::invalid_reg}; -+ -+static constexpr ValueOperand R0 = JSReturnOperand; -+static constexpr ValueOperand R1 = JSReturnOperand; -+static constexpr ValueOperand R2 = JSReturnOperand; -+ -+static constexpr Register ICTailCallReg{Registers::invalid_reg}; -+static constexpr Register ICStubReg{Registers::invalid_reg}; -+ -+static constexpr Register ExtractTemp0{Registers::invalid_reg}; -+static constexpr Register ExtractTemp1{Registers::invalid_reg}; -+ -+static constexpr FloatRegister FloatReg0; -+static constexpr FloatRegister FloatReg1; -+static constexpr FloatRegister FloatReg2; -+static constexpr FloatRegister FloatReg3; -+ -+} // namespace jit -+} // namespace js -+ -+#endif /* jit_riscv64_SharedICRegisters_riscv64_h */ -diff --git a/js/src/jit/riscv64/Trampoline-riscv64.cpp b/js/src/jit/riscv64/Trampoline-riscv64.cpp -new file mode 100644 -index 0000000000..0774254cf4 ---- /dev/null -+++ b/js/src/jit/riscv64/Trampoline-riscv64.cpp -@@ -0,0 +1,67 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- -+ * vim: set ts=8 sts=2 et sw=2 tw=80: -+ * This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "jit/Bailouts.h" -+#include "jit/BaselineIC.h" -+#include "jit/JitRuntime.h" -+#include "vm/Realm.h" -+ -+using namespace js; -+using namespace js::jit; -+ -+// This file includes stubs for generating the JIT trampolines when there is no -+// JIT backend, and also includes implementations for assorted random things -+// which can't be implemented in headers. -+ -+void JitRuntime::generateEnterJIT(JSContext*, MacroAssembler&) { MOZ_CRASH(); } -+// static -+mozilla::Maybe<::JS::ProfilingFrameIterator::RegisterState> -+JitRuntime::getCppEntryRegisters(JitFrameLayout* frameStackAddress) { -+ return mozilla::Nothing{}; -+} -+void JitRuntime::generateInvalidator(MacroAssembler&, Label*) { MOZ_CRASH(); } -+void JitRuntime::generateArgumentsRectifier(MacroAssembler&, -+ ArgumentsRectifierKind kind) { -+ MOZ_CRASH(); -+} -+JitRuntime::BailoutTable JitRuntime::generateBailoutTable(MacroAssembler&, -+ Label*, uint32_t) { -+ MOZ_CRASH(); -+} -+void JitRuntime::generateBailoutHandler(MacroAssembler&, Label*) { -+ MOZ_CRASH(); -+} -+uint32_t JitRuntime::generatePreBarrier(JSContext*, MacroAssembler&, MIRType) { -+ MOZ_CRASH(); -+} -+void JitRuntime::generateExceptionTailStub(MacroAssembler&, Label*) { -+ MOZ_CRASH(); -+} -+void JitRuntime::generateBailoutTailStub(MacroAssembler&, Label*) { -+ MOZ_CRASH(); -+} -+void JitRuntime::generateProfilerExitFrameTailStub(MacroAssembler&, Label*) { -+ MOZ_CRASH(); -+} -+ -+bool JitRuntime::generateVMWrapper(JSContext*, MacroAssembler&, -+ const VMFunctionData&, DynFn, uint32_t*) { -+ MOZ_CRASH(); -+} -+ -+FrameSizeClass FrameSizeClass::FromDepth(uint32_t) { MOZ_CRASH(); } -+FrameSizeClass FrameSizeClass::ClassLimit() { MOZ_CRASH(); } -+uint32_t FrameSizeClass::frameSize() const { MOZ_CRASH(); } -+ -+BailoutFrameInfo::BailoutFrameInfo(const JitActivationIterator& iter, -+ BailoutStack* bailout) { -+ MOZ_CRASH(); -+} -+ -+BailoutFrameInfo::BailoutFrameInfo(const JitActivationIterator& iter, -+ InvalidationBailoutStack* bailout) { -+ MOZ_CRASH(); -+} -diff --git a/js/src/jit/shared/Assembler-shared.h b/js/src/jit/shared/Assembler-shared.h -index fcabddd98b..19cf397df1 100644 ---- a/js/src/jit/shared/Assembler-shared.h -+++ b/js/src/jit/shared/Assembler-shared.h -@@ -26,13 +26,14 @@ - - #if defined(JS_CODEGEN_ARM) || defined(JS_CODEGEN_ARM64) || \ - defined(JS_CODEGEN_MIPS32) || defined(JS_CODEGEN_MIPS64) || \ -- defined(JS_CODEGEN_LOONG64) -+ defined(JS_CODEGEN_LOONG64) || defined(JS_CODEGEN_RISCV64) - // Push return addresses callee-side. - # define JS_USE_LINK_REGISTER - #endif - - #if defined(JS_CODEGEN_MIPS32) || defined(JS_CODEGEN_MIPS64) || \ -- defined(JS_CODEGEN_ARM64) || defined(JS_CODEGEN_LOONG64) -+ defined(JS_CODEGEN_ARM64) || defined(JS_CODEGEN_LOONG64) || \ -+ defined(JS_CODEGEN_RISCV64) - // JS_CODELABEL_LINKMODE gives labels additional metadata - // describing how Bind() should patch them. - # define JS_CODELABEL_LINKMODE -diff --git a/js/src/util/Poison.h b/js/src/util/Poison.h -index cb8e1abc64..a6a2d2f12b 100644 ---- a/js/src/util/Poison.h -+++ b/js/src/util/Poison.h -@@ -95,6 +95,8 @@ const uint8_t JS_SCOPE_DATA_TRAILING_NAMES_PATTERN = 0xCC; - # define JS_SWEPT_CODE_PATTERN 0x01 // undefined instruction - #elif defined(JS_CODEGEN_LOONG64) - # define JS_SWEPT_CODE_PATTERN 0x01 // undefined instruction -+#elif defined(JS_CODEGEN_RISCV64) -+# define JS_SWEPT_CODE_PATTERN 0x01 // undefined instruction - #else - # error "JS_SWEPT_CODE_PATTERN not defined for this platform" - #endif -diff --git a/js/src/wasm/WasmBCMemory.cpp b/js/src/wasm/WasmBCMemory.cpp -index 94e739090b..2c226dadd5 100644 ---- a/js/src/wasm/WasmBCMemory.cpp -+++ b/js/src/wasm/WasmBCMemory.cpp -@@ -1214,6 +1214,22 @@ static void Deallocate(BaseCompiler* bc, RegI32 rv, const Temps& temps) { - bc->maybeFree(temps.t2); - } - -+#elif defined(JS_CODEGEN_RISCV64) -+ -+struct Temps { -+ RegI32 t0; -+}; -+ -+static void PopAndAllocate(BaseCompiler* bc, ValType type, -+ Scalar::Type viewType, AtomicOp op, RegI32* rd, -+ RegI32* rv, Temps* temps) {} -+ -+static void Perform(BaseCompiler* bc, const MemoryAccessDesc& access, -+ BaseIndex srcAddr, AtomicOp op, RegI32 rv, RegI32 rd, -+ const Temps& temps) {} -+ -+static void Deallocate(BaseCompiler*, RegI32, const Temps&) {} -+ - #elif defined(JS_CODEGEN_NONE) - - using Temps = Nothing; -@@ -1375,6 +1391,17 @@ static void Deallocate(BaseCompiler* bc, AtomicOp op, RegI64 rv, RegI64 temp) { - bc->freeI64(temp); - } - -+#elif defined(JS_CODEGEN_RISCV64) -+ -+static void PopAndAllocate(BaseCompiler* bc, AtomicOp op, RegI64* rd, -+ RegI64* rv, RegI64* temp) {} -+ -+static void Perform(BaseCompiler* bc, const MemoryAccessDesc& access, -+ BaseIndex srcAddr, AtomicOp op, RegI64 rv, RegI64 temp, -+ RegI64 rd) {} -+ -+static void Deallocate(BaseCompiler* bc, AtomicOp op, RegI64 rv, RegI64 temp) {} -+ - #elif defined(JS_CODEGEN_NONE) - - static void PopAndAllocate(BaseCompiler*, AtomicOp, RegI64*, RegI64*, RegI64*) { -diff --git a/js/src/wasm/WasmCompile.cpp b/js/src/wasm/WasmCompile.cpp -index 26534bca4e..403e26414b 100644 ---- a/js/src/wasm/WasmCompile.cpp -+++ b/js/src/wasm/WasmCompile.cpp -@@ -74,6 +74,8 @@ uint32_t wasm::ObservedCPUFeatures() { - #elif defined(JS_CODEGEN_LOONG64) - MOZ_ASSERT(jit::GetLOONG64Flags() <= (UINT32_MAX >> ARCH_BITS)); - return LOONG64 | (jit::GetLOONG64Flags() << ARCH_BITS); -+#elif defined(JS_CODEGEN_RISCV64) -+ return 0; - #elif defined(JS_CODEGEN_NONE) - return 0; - #else -diff --git a/js/src/wasm/WasmFrameIter.cpp b/js/src/wasm/WasmFrameIter.cpp -index e612e05704..0ce3453287 100644 ---- a/js/src/wasm/WasmFrameIter.cpp -+++ b/js/src/wasm/WasmFrameIter.cpp -@@ -384,6 +384,12 @@ static const unsigned PushedFP = 16; - static const unsigned SetFP = 20; - static const unsigned PoppedFP = 4; - static const unsigned PoppedFPJitEntry = 0; -+#elif defined(JS_CODEGEN_RISCV64) -+static const unsigned PushedRetAddr = 0; -+static const unsigned PushedFP = 1; -+static const unsigned SetFP = 2; -+static const unsigned PoppedFP = 3; -+static const unsigned PoppedFPJitEntry = 4; - #elif defined(JS_CODEGEN_NONE) - // Synthetic values to satisfy asserts and avoid compiler warnings. - static const unsigned PushedRetAddr = 0; -diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp -index f74368b954..9521441f02 100644 ---- a/js/src/wasm/WasmSignalHandlers.cpp -+++ b/js/src/wasm/WasmSignalHandlers.cpp -@@ -157,6 +157,11 @@ using mozilla::DebugOnly; - # define R01_sig(p) ((p)->uc_mcontext.gp_regs[1]) - # define R32_sig(p) ((p)->uc_mcontext.gp_regs[32]) - # endif -+# if defined(__linux__) && defined(__riscv) && __riscv_xlen == 64 -+# define EPC_sig(p) ((p)->uc_mcontext.__gregs[0]) -+# define X02_sig(p) ((p)->uc_mcontext.__gregs[2]) -+# define X08_sig(p) ((p)->uc_mcontext.__gregs[8]) -+# endif - # if defined(__linux__) && defined(__loongarch__) - # define EPC_sig(p) ((p)->uc_mcontext.pc) - # define RRA_sig(p) ((p)->uc_mcontext.gregs[1]) -@@ -405,6 +410,10 @@ struct macos_aarch64_context { - # define FP_sig(p) RFP_sig(p) - # define SP_sig(p) RSP_sig(p) - # define LR_sig(p) RRA_sig(p) -+# elif defined(__riscv) && __riscv_xlen == 64 -+# define PC_sig(p) EPC_sig(p) -+# define SP_sig(p) X02_sig(p) -+# define FP_sig(p) X08_sig(p) - # endif - - static void SetContextPC(CONTEXT* context, uint8_t* pc) { -diff --git a/python/mozbuild/mozbuild/vendor/vendor_rust.py b/python/mozbuild/mozbuild/vendor/vendor_rust.py -index 31baea4290..7394ccaf40 100644 ---- a/python/mozbuild/mozbuild/vendor/vendor_rust.py -+++ b/python/mozbuild/mozbuild/vendor/vendor_rust.py -@@ -98,6 +98,7 @@ TOLERATED_DUPES = { - "libloading": 2, - "memoffset": 2, - "mio": 2, -+ "nix": 2, - # Transition from time 0.1 to 0.3 underway, but chrono is stuck on 0.1 - # and hasn't been updated in 1.5 years (an hypothetical update is - # expected to remove the dependency on time altogether). -diff --git a/supply-chain/config.toml b/supply-chain/config.toml -index bb3dd733e8..371cbca809 100644 ---- a/supply-chain/config.toml -+++ b/supply-chain/config.toml -@@ -1,6 +1,10 @@ - - # cargo-vet config file - -+[policy.viaduct] -+audit-as-crates-io = true -+notes = "I don't know, do as what rust-vet tells me to do" -+ - [policy.async-task] - audit-as-crates-io = true - notes = "This is the upstream code plus an extra fix that hasn't been released yet, see bug 1746533." -diff --git a/toolkit/library/rust/shared/Cargo.toml b/toolkit/library/rust/shared/Cargo.toml -index dbd7770326..ffbadcb14c 100644 ---- a/toolkit/library/rust/shared/Cargo.toml -+++ b/toolkit/library/rust/shared/Cargo.toml -@@ -38,7 +38,7 @@ tokio-reactor = { version = "=0.1.3", optional = true } - # audioipc2-client and audioipc2-server. - tokio-threadpool = { version = "=0.1.17", optional = true } - encoding_glue = { path = "../../../../intl/encoding_glue" } --authenticator = "0.3.1" -+authenticator = { git = "https://github.com/mozilla/authenticator-rs", rev = "b85bccf0527e42c877573029e8d35ff13ef06f9d" } - gkrust_utils = { path = "../../../../xpcom/rust/gkrust_utils" } - gecko_logger = { path = "../../../../xpcom/rust/gecko_logger" } - rsdparsa_capi = { path = "../../../../dom/media/webrtc/sdp/rsdparsa_capi" } -@@ -72,6 +72,7 @@ midir_impl = { path = "../../../../dom/midi/midir_impl", optional = true } - dom = { path = "../../../../dom/base/rust" } - origin-trials-ffi = { path = "../../../../dom/origin-trials/ffi" } - jog = { path = "../../../components/glean/bindings/jog" } -+midir = { version = "0.8.0" } - - # Note: `modern_sqlite` means rusqlite's bindings file be for a sqlite with - # version less than or equal to what we link to. This isn't a problem because we diff --git a/www-client/firefox/files/gentoo-default-prefs.js b/www-client/firefox/files/gentoo-default-prefs.js deleted file mode 100644 index 0407f5d..0000000 --- a/www-client/firefox/files/gentoo-default-prefs.js +++ /dev/null @@ -1,12 +0,0 @@ -pref("general.smoothScroll", true); -pref("general.autoScroll", false); -pref("browser.urlbar.hideGoButton", true); -pref("accessibility.typeaheadfind", true); -pref("browser.shell.checkDefaultBrowser", false); -pref("browser.EULA.override", true); -pref("general.useragent.locale", "chrome://global/locale/intl.properties"); -pref("intl.locale.requested", ""); -/* Disable DoH by default */ -pref("network.trr.mode", 5); -/* Disable use of Mozilla Normandy service by default */ -pref("app.normandy.enabled", false); diff --git a/www-client/firefox/files/gentoo-hwaccel-prefs.js b/www-client/firefox/files/gentoo-hwaccel-prefs.js deleted file mode 100644 index a00144a..0000000 --- a/www-client/firefox/files/gentoo-hwaccel-prefs.js +++ /dev/null @@ -1,3 +0,0 @@ -/* Force hardware accelerated rendering due to USE=hwaccel */ -pref("layers.acceleration.force-enabled", true); -pref("webgl.force-enabled", true); diff --git a/www-client/firefox/files/gentoo-hwaccel-prefs.js-r2 b/www-client/firefox/files/gentoo-hwaccel-prefs.js-r2 deleted file mode 100644 index 48025ca..0000000 --- a/www-client/firefox/files/gentoo-hwaccel-prefs.js-r2 +++ /dev/null @@ -1,5 +0,0 @@ -/* Force hardware accelerated rendering due to USE=hwaccel */ -pref("gfx.webrender.all", true); -pref("layers.acceleration.force-enabled", true); -pref("media.hardware-video-decoding.enabled", true); -pref("webgl.force-enabled", true); diff --git a/www-client/firefox/files/icon/firefox-r2.desktop b/www-client/firefox/files/icon/firefox-r2.desktop deleted file mode 100644 index 45d5f11..0000000 --- a/www-client/firefox/files/icon/firefox-r2.desktop +++ /dev/null @@ -1,236 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=@NAME@ -GenericName=Web Browser -Comment=Browse the Web -Exec=@EXEC@ %u -Icon=@ICON@ -Terminal=false -Type=Application -MimeType=application/pdf;application/vnd.mozilla.xul+xml;application/xhtml+xml;text/html;text/mml;text/xml;x-scheme-handler/ftp;x-scheme-handler/http;x-scheme-handler/https; -StartupNotify=true -Categories=Network;WebBrowser; -Keywords=web;browser;internet; -Actions=new-window;new-private-window;profile-manager-window; - -[Desktop Action new-window] -Name=Open a New Window -Name[ach]=Dirica manyen -Name[af]=Nuwe venster -Name[an]=Nueva finestra -Name[ar]=نافذة جديدة -Name[as]=নতুন উইন্ডো -Name[ast]=Ventana nueva -Name[az]=Yeni Pəncərə -Name[be]=Новае акно -Name[bg]=Нов прозорец -Name[bn_BD]=নতুন উইন্ডো (N) -Name[bn_IN]=নতুন উইন্ডো -Name[br]=Prenestr nevez -Name[brx]=गोदान उइन्ड'(N) -Name[bs]=Novi prozor -Name[ca]=Finestra nova -Name[cak]=K'ak'a' tzuwäch -Name[cs]=Nové okno -Name[cy]=Ffenestr Newydd -Name[da]=Nyt vindue -Name[de]=Neues Fenster -Name[dsb]=Nowe wokno -Name[el]=Νέο παράθυρο -Name[en_GB]=New Window -Name[en_US]=New Window -Name[en_ZA]=New Window -Name[eo]=Nova fenestro -Name[es_AR]=Nueva ventana -Name[es_CL]=Nueva ventana -Name[es_ES]=Nueva ventana -Name[es_MX]=Nueva ventana -Name[et]=Uus aken -Name[eu]=Leiho berria -Name[fa]=پنجره جدید‌ -Name[ff]=Henorde Hesere -Name[fi]=Uusi ikkuna -Name[fr]=Nouvelle fenêtre -Name[fy_NL]=Nij finster -Name[ga_IE]=Fuinneog Nua -Name[gd]=Uinneag ùr -Name[gl]=Nova xanela -Name[gn]=Ovetã pyahu -Name[gu_IN]=નવી વિન્ડો -Name[he]=חלון חדש -Name[hi_IN]=नया विंडो -Name[hr]=Novi prozor -Name[hsb]=Nowe wokno -Name[hu]=Új ablak -Name[hy_AM]=Նոր Պատուհան -Name[id]=Jendela Baru -Name[is]=Nýr gluggi -Name[it]=Nuova finestra -Name[ja]=新しいウィンドウ -Name[ja_JP-mac]=新規ウインドウ -Name[ka]=ახალი ფანჯარა -Name[kk]=Жаңа терезе -Name[km]=បង្អួច​​​ថ្មី -Name[kn]=ಹೊಸ ಕಿಟಕಿ -Name[ko]=새 창 -Name[kok]=नवें जनेल -Name[ks]=نئئ وِنڈو -Name[lij]=Neuvo barcon -Name[lo]=ຫນ້າຕ່າງໃຫມ່ -Name[lt]=Naujas langas -Name[ltg]=Jauns lūgs -Name[lv]=Jauns logs -Name[mai]=नव विंडो -Name[mk]=Нов прозорец -Name[ml]=പുതിയ ജാലകം -Name[mr]=नवीन पटल -Name[ms]=Tetingkap Baru -Name[my]=ဝင်းဒိုးအသစ် -Name[nb_NO]=Nytt vindu -Name[ne_NP]=नयाँ सञ्झ्याल -Name[nl]=Nieuw venster -Name[nn_NO]=Nytt vindauge -Name[or]=ନୂତନ ୱିଣ୍ଡୋ -Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ -Name[pl]=Nowe okno -Name[pt_BR]=Nova janela -Name[pt_PT]=Nova janela -Name[rm]=Nova fanestra -Name[ro]=Fereastră nouă -Name[ru]=Новое окно -Name[sat]=नावा विंडो (N) -Name[si]=නව කවුළුවක් -Name[sk]=Nové okno -Name[sl]=Novo okno -Name[son]=Zanfun taaga -Name[sq]=Dritare e Re -Name[sr]=Нови прозор -Name[sv_SE]=Nytt fönster -Name[ta]=புதிய சாளரம் -Name[te]=కొత్త విండో -Name[th]=หน้าต่างใหม่ -Name[tr]=Yeni pencere -Name[tsz]=Eraatarakua jimpani -Name[uk]=Нове вікно -Name[ur]=نیا دریچہ -Name[uz]=Yangi oyna -Name[vi]=Cửa sổ mới -Name[wo]=Palanteer bu bees -Name[xh]=Ifestile entsha -Name[zh_CN]=新建窗口 -Name[zh_TW]=開新視窗 -Exec=@EXEC@ --new-window %u - -[Desktop Action new-private-window] -Name=Open a New Private Window -Name[ach]=Dirica manyen me mung -Name[af]=Nuwe privaatvenster -Name[an]=Nueva finestra privada -Name[ar]=نافذة خاصة جديدة -Name[as]=নতুন ব্যক্তিগত উইন্ডো -Name[ast]=Ventana privada nueva -Name[az]=Yeni Məxfi Pəncərə -Name[be]=Новае акно адасаблення -Name[bg]=Нов прозорец за поверително сърфиране -Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো -Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো -Name[br]=Prenestr merdeiñ prevez nevez -Name[brx]=गोदान प्राइभेट उइन्ड' -Name[bs]=Novi privatni prozor -Name[ca]=Finestra privada nova -Name[cak]=K'ak'a' ichinan tzuwäch -Name[cs]=Nové anonymní okno -Name[cy]=Ffenestr Breifat Newydd -Name[da]=Nyt privat vindue -Name[de]=Neues privates Fenster -Name[dsb]=Nowe priwatne wokno -Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης -Name[en_GB]=New Private Window -Name[en_US]=New Private Window -Name[en_ZA]=New Private Window -Name[eo]=Nova privata fenestro -Name[es_AR]=Nueva ventana privada -Name[es_CL]=Nueva ventana privada -Name[es_ES]=Nueva ventana privada -Name[es_MX]=Nueva ventana privada -Name[et]=Uus privaatne aken -Name[eu]=Leiho pribatu berria -Name[fa]=پنجره ناشناس جدید -Name[ff]=Henorde Suturo Hesere -Name[fi]=Uusi yksityinen ikkuna -Name[fr]=Nouvelle fenêtre de navigation privée -Name[fy_NL]=Nij priveefinster -Name[ga_IE]=Fuinneog Nua Phríobháideach -Name[gd]=Uinneag phrìobhaideach ùr -Name[gl]=Nova xanela privada -Name[gn]=Ovetã ñemi pyahu -Name[gu_IN]=નવી ખાનગી વિન્ડો -Name[he]=חלון פרטי חדש -Name[hi_IN]=नयी निजी विंडो -Name[hr]=Novi privatni prozor -Name[hsb]=Nowe priwatne wokno -Name[hu]=Új privát ablak -Name[hy_AM]=Սկսել Գաղտնի դիտարկում -Name[id]=Jendela Mode Pribadi Baru -Name[is]=Nýr huliðsgluggi -Name[it]=Nuova finestra anonima -Name[ja]=新しいプライベートウィンドウ -Name[ja_JP-mac]=新規プライベートウインドウ -Name[ka]=ახალი პირადი ფანჯარა -Name[kk]=Жаңа жекелік терезе -Name[km]=បង្អួច​ឯកជន​ថ្មី -Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ -Name[ko]=새 사생활 보호 모드 -Name[kok]=नवो खाजगी विंडो -Name[ks]=نْو پرایوٹ وینڈو& -Name[lij]=Neuvo barcon privou -Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່ -Name[lt]=Naujas privataus naršymo langas -Name[ltg]=Jauns privatais lūgs -Name[lv]=Jauns privātais logs -Name[mai]=नया निज विंडो (W) -Name[mk]=Нов приватен прозорец -Name[ml]=പുതിയ സ്വകാര്യ ജാലകം -Name[mr]=नवीन वैयक्तिक पटल -Name[ms]=Tetingkap Persendirian Baharu -Name[my]=New Private Window -Name[nb_NO]=Nytt privat vindu -Name[ne_NP]=नयाँ निजी सञ्झ्याल -Name[nl]=Nieuw privévenster -Name[nn_NO]=Nytt privat vindauge -Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ -Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ -Name[pl]=Nowe okno prywatne -Name[pt_BR]=Nova janela privativa -Name[pt_PT]=Nova janela privada -Name[rm]=Nova fanestra privata -Name[ro]=Fereastră privată nouă -Name[ru]=Новое приватное окно -Name[sat]=नावा निजेराक् विंडो (W ) -Name[si]=නව පුද්ගලික කවුළුව (W) -Name[sk]=Nové okno v režime Súkromné prehliadanie -Name[sl]=Novo zasebno okno -Name[son]=Sutura zanfun taaga -Name[sq]=Dritare e Re Private -Name[sr]=Нови приватан прозор -Name[sv_SE]=Nytt privat fönster -Name[ta]=புதிய தனிப்பட்ட சாளரம் -Name[te]=కొత్త ఆంతరంగిక విండో -Name[th]=หน้าต่างส่วนตัวใหม่ -Name[tr]=Yeni gizli pencere -Name[tsz]=Juchiiti eraatarakua jimpani -Name[uk]=Приватне вікно -Name[ur]=نیا نجی دریچہ -Name[uz]=Yangi maxfiy oyna -Name[vi]=Cửa sổ riêng tư mới -Name[wo]=Panlanteeru biir bu bees -Name[xh]=Ifestile yangasese entsha -Name[zh_CN]=新建隐私浏览窗口 -Name[zh_TW]=新增隱私視窗 -Exec=@EXEC@ --private-window %u - -[Desktop Action profile-manager-window] -Name=Open the Profile Manager -Name[de]=Profilverwaltung öffnen -Name[cs]=Správa profilů -Exec=@EXEC@ --ProfileManager diff --git a/www-client/firefox/files/icon/firefox-r3.desktop b/www-client/firefox/files/icon/firefox-r3.desktop deleted file mode 100644 index 8219e93..0000000 --- a/www-client/firefox/files/icon/firefox-r3.desktop +++ /dev/null @@ -1,236 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=@NAME@ -GenericName=Web Browser -Comment=Browse the Web -Exec=@EXEC@ %u -Icon=@ICON@ -Terminal=false -Type=Application -MimeType=application/pdf;application/vnd.mozilla.xul+xml;application/xhtml+xml;text/html;text/mml;text/xml;x-scheme-handler/http;x-scheme-handler/https; -StartupNotify=true -Categories=Network;WebBrowser; -Keywords=web;browser;internet; -Actions=new-window;new-private-window;profile-manager-window; - -[Desktop Action new-window] -Name=Open a New Window -Name[ach]=Dirica manyen -Name[af]=Nuwe venster -Name[an]=Nueva finestra -Name[ar]=نافذة جديدة -Name[as]=নতুন উইন্ডো -Name[ast]=Ventana nueva -Name[az]=Yeni Pəncərə -Name[be]=Новае акно -Name[bg]=Нов прозорец -Name[bn_BD]=নতুন উইন্ডো (N) -Name[bn_IN]=নতুন উইন্ডো -Name[br]=Prenestr nevez -Name[brx]=गोदान उइन्ड'(N) -Name[bs]=Novi prozor -Name[ca]=Finestra nova -Name[cak]=K'ak'a' tzuwäch -Name[cs]=Nové okno -Name[cy]=Ffenestr Newydd -Name[da]=Nyt vindue -Name[de]=Neues Fenster -Name[dsb]=Nowe wokno -Name[el]=Νέο παράθυρο -Name[en_GB]=New Window -Name[en_US]=New Window -Name[en_ZA]=New Window -Name[eo]=Nova fenestro -Name[es_AR]=Nueva ventana -Name[es_CL]=Nueva ventana -Name[es_ES]=Nueva ventana -Name[es_MX]=Nueva ventana -Name[et]=Uus aken -Name[eu]=Leiho berria -Name[fa]=پنجره جدید‌ -Name[ff]=Henorde Hesere -Name[fi]=Uusi ikkuna -Name[fr]=Nouvelle fenêtre -Name[fy_NL]=Nij finster -Name[ga_IE]=Fuinneog Nua -Name[gd]=Uinneag ùr -Name[gl]=Nova xanela -Name[gn]=Ovetã pyahu -Name[gu_IN]=નવી વિન્ડો -Name[he]=חלון חדש -Name[hi_IN]=नया विंडो -Name[hr]=Novi prozor -Name[hsb]=Nowe wokno -Name[hu]=Új ablak -Name[hy_AM]=Նոր Պատուհան -Name[id]=Jendela Baru -Name[is]=Nýr gluggi -Name[it]=Nuova finestra -Name[ja]=新しいウィンドウ -Name[ja_JP-mac]=新規ウインドウ -Name[ka]=ახალი ფანჯარა -Name[kk]=Жаңа терезе -Name[km]=បង្អួច​​​ថ្មី -Name[kn]=ಹೊಸ ಕಿಟಕಿ -Name[ko]=새 창 -Name[kok]=नवें जनेल -Name[ks]=نئئ وِنڈو -Name[lij]=Neuvo barcon -Name[lo]=ຫນ້າຕ່າງໃຫມ່ -Name[lt]=Naujas langas -Name[ltg]=Jauns lūgs -Name[lv]=Jauns logs -Name[mai]=नव विंडो -Name[mk]=Нов прозорец -Name[ml]=പുതിയ ജാലകം -Name[mr]=नवीन पटल -Name[ms]=Tetingkap Baru -Name[my]=ဝင်းဒိုးအသစ် -Name[nb_NO]=Nytt vindu -Name[ne_NP]=नयाँ सञ्झ्याल -Name[nl]=Nieuw venster -Name[nn_NO]=Nytt vindauge -Name[or]=ନୂତନ ୱିଣ୍ଡୋ -Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ -Name[pl]=Nowe okno -Name[pt_BR]=Nova janela -Name[pt_PT]=Nova janela -Name[rm]=Nova fanestra -Name[ro]=Fereastră nouă -Name[ru]=Новое окно -Name[sat]=नावा विंडो (N) -Name[si]=නව කවුළුවක් -Name[sk]=Nové okno -Name[sl]=Novo okno -Name[son]=Zanfun taaga -Name[sq]=Dritare e Re -Name[sr]=Нови прозор -Name[sv_SE]=Nytt fönster -Name[ta]=புதிய சாளரம் -Name[te]=కొత్త విండో -Name[th]=หน้าต่างใหม่ -Name[tr]=Yeni pencere -Name[tsz]=Eraatarakua jimpani -Name[uk]=Нове вікно -Name[ur]=نیا دریچہ -Name[uz]=Yangi oyna -Name[vi]=Cửa sổ mới -Name[wo]=Palanteer bu bees -Name[xh]=Ifestile entsha -Name[zh_CN]=新建窗口 -Name[zh_TW]=開新視窗 -Exec=@EXEC@ --new-window %u - -[Desktop Action new-private-window] -Name=Open a New Private Window -Name[ach]=Dirica manyen me mung -Name[af]=Nuwe privaatvenster -Name[an]=Nueva finestra privada -Name[ar]=نافذة خاصة جديدة -Name[as]=নতুন ব্যক্তিগত উইন্ডো -Name[ast]=Ventana privada nueva -Name[az]=Yeni Məxfi Pəncərə -Name[be]=Новае акно адасаблення -Name[bg]=Нов прозорец за поверително сърфиране -Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো -Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো -Name[br]=Prenestr merdeiñ prevez nevez -Name[brx]=गोदान प्राइभेट उइन्ड' -Name[bs]=Novi privatni prozor -Name[ca]=Finestra privada nova -Name[cak]=K'ak'a' ichinan tzuwäch -Name[cs]=Nové anonymní okno -Name[cy]=Ffenestr Breifat Newydd -Name[da]=Nyt privat vindue -Name[de]=Neues privates Fenster -Name[dsb]=Nowe priwatne wokno -Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης -Name[en_GB]=New Private Window -Name[en_US]=New Private Window -Name[en_ZA]=New Private Window -Name[eo]=Nova privata fenestro -Name[es_AR]=Nueva ventana privada -Name[es_CL]=Nueva ventana privada -Name[es_ES]=Nueva ventana privada -Name[es_MX]=Nueva ventana privada -Name[et]=Uus privaatne aken -Name[eu]=Leiho pribatu berria -Name[fa]=پنجره ناشناس جدید -Name[ff]=Henorde Suturo Hesere -Name[fi]=Uusi yksityinen ikkuna -Name[fr]=Nouvelle fenêtre de navigation privée -Name[fy_NL]=Nij priveefinster -Name[ga_IE]=Fuinneog Nua Phríobháideach -Name[gd]=Uinneag phrìobhaideach ùr -Name[gl]=Nova xanela privada -Name[gn]=Ovetã ñemi pyahu -Name[gu_IN]=નવી ખાનગી વિન્ડો -Name[he]=חלון פרטי חדש -Name[hi_IN]=नयी निजी विंडो -Name[hr]=Novi privatni prozor -Name[hsb]=Nowe priwatne wokno -Name[hu]=Új privát ablak -Name[hy_AM]=Սկսել Գաղտնի դիտարկում -Name[id]=Jendela Mode Pribadi Baru -Name[is]=Nýr huliðsgluggi -Name[it]=Nuova finestra anonima -Name[ja]=新しいプライベートウィンドウ -Name[ja_JP-mac]=新規プライベートウインドウ -Name[ka]=ახალი პირადი ფანჯარა -Name[kk]=Жаңа жекелік терезе -Name[km]=បង្អួច​ឯកជន​ថ្មី -Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ -Name[ko]=새 사생활 보호 모드 -Name[kok]=नवो खाजगी विंडो -Name[ks]=نْو پرایوٹ وینڈو& -Name[lij]=Neuvo barcon privou -Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່ -Name[lt]=Naujas privataus naršymo langas -Name[ltg]=Jauns privatais lūgs -Name[lv]=Jauns privātais logs -Name[mai]=नया निज विंडो (W) -Name[mk]=Нов приватен прозорец -Name[ml]=പുതിയ സ്വകാര്യ ജാലകം -Name[mr]=नवीन वैयक्तिक पटल -Name[ms]=Tetingkap Persendirian Baharu -Name[my]=New Private Window -Name[nb_NO]=Nytt privat vindu -Name[ne_NP]=नयाँ निजी सञ्झ्याल -Name[nl]=Nieuw privévenster -Name[nn_NO]=Nytt privat vindauge -Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ -Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ -Name[pl]=Nowe okno prywatne -Name[pt_BR]=Nova janela privativa -Name[pt_PT]=Nova janela privada -Name[rm]=Nova fanestra privata -Name[ro]=Fereastră privată nouă -Name[ru]=Новое приватное окно -Name[sat]=नावा निजेराक् विंडो (W ) -Name[si]=නව පුද්ගලික කවුළුව (W) -Name[sk]=Nové okno v režime Súkromné prehliadanie -Name[sl]=Novo zasebno okno -Name[son]=Sutura zanfun taaga -Name[sq]=Dritare e Re Private -Name[sr]=Нови приватан прозор -Name[sv_SE]=Nytt privat fönster -Name[ta]=புதிய தனிப்பட்ட சாளரம் -Name[te]=కొత్త ఆంతరంగిక విండో -Name[th]=หน้าต่างส่วนตัวใหม่ -Name[tr]=Yeni gizli pencere -Name[tsz]=Juchiiti eraatarakua jimpani -Name[uk]=Приватне вікно -Name[ur]=نیا نجی دریچہ -Name[uz]=Yangi maxfiy oyna -Name[vi]=Cửa sổ riêng tư mới -Name[wo]=Panlanteeru biir bu bees -Name[xh]=Ifestile yangasese entsha -Name[zh_CN]=新建隐私浏览窗口 -Name[zh_TW]=新增隱私視窗 -Exec=@EXEC@ --private-window %u - -[Desktop Action profile-manager-window] -Name=Open the Profile Manager -Name[de]=Profilverwaltung öffnen -Name[cs]=Správa profilů -Exec=@EXEC@ --ProfileManager diff --git a/www-client/firefox/files/icon/firefox-symbolic.svg b/www-client/firefox/files/icon/firefox-symbolic.svg deleted file mode 100644 index 2078eea..0000000 --- a/www-client/firefox/files/icon/firefox-symbolic.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - image/svg+xml - - Gnome Symbolic Icon Theme - - - - - - - - Gnome Symbolic Icon Theme - - diff --git a/www-client/firefox/firefox-103.0.1.ebuild b/www-client/firefox/firefox-103.0.1.ebuild deleted file mode 100644 index d0494bb..0000000 --- a/www-client/firefox/firefox-103.0.1.ebuild +++ /dev/null @@ -1,1301 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="8" - -FIREFOX_PATCHSET="firefox-103-patches-03j.tar.xz" - -LLVM_MAX_SLOT=14 - -PYTHON_COMPAT=( python3_{8..11} ) -PYTHON_REQ_USE="ncurses,sqlite,ssl" - -WANT_AUTOCONF="2.1" - -VIRTUALX_REQUIRED="pgo" - -MOZ_ESR= - -MOZ_PV=${PV} -MOZ_PV_SUFFIX= -if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then - MOZ_PV_SUFFIX=${BASH_REMATCH[1]} - - # Convert the ebuild version to the upstream Mozilla version - MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI - MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI - MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI -fi - -if [[ -n ${MOZ_ESR} ]] ; then - # ESR releases have slightly different version numbers - MOZ_PV="${MOZ_PV}esr" -fi - -MOZ_PN="${PN%-bin}" -MOZ_P="${MOZ_PN}-${MOZ_PV}" -MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}" -MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}" - -inherit autotools check-reqs desktop flag-o-matic gnome2-utils linux-info \ - llvm multiprocessing pax-utils python-any-r1 toolchain-funcs \ - virtualx xdg - -MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}" - -if [[ ${PV} == *_rc* ]] ; then - MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}" -fi - -PATCH_URIS=( - https://dev.gentoo.org/~{juippis,whissi,slashbeast}/mozilla/patchsets/${FIREFOX_PATCHSET} -) - -SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz - ${PATCH_URIS[@]}" - -DESCRIPTION="Firefox Web Browser" -HOMEPAGE="https://www.mozilla.com/firefox" - -KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86" - -SLOT="rapid" -LICENSE="MPL-2.0 GPL-2 LGPL-2.1" - -# make clang non-default for now, as lld's relocation relax support is comming in llvm 15 release -# https://reviews.llvm.org/D127611 -IUSE="clang cpu_flags_arm_neon dbus debug eme-free hardened hwaccel" -IUSE+=" jack libproxy lto +openh264 pgo pulseaudio sndio selinux" -IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx system-png system-python-libs +system-webp" -IUSE+=" wayland wifi" - -# Firefox-only IUSE -IUSE+=" geckodriver +gmp-autoupdate screencast +X" - -REQUIRED_USE="debug? ( !system-av1 ) - pgo? ( lto ) - wifi? ( dbus )" - -# Firefox-only REQUIRED_USE flags -REQUIRED_USE+=" || ( X wayland )" -REQUIRED_USE+=" pgo? ( X )" -REQUIRED_USE+=" screencast? ( wayland )" - -BDEPEND="${PYTHON_DEPS} - app-arch/unzip - app-arch/zip - >=dev-util/cbindgen-0.24.3 - net-libs/nodejs - virtual/pkgconfig - virtual/rust - || ( - ( - sys-devel/clang:14 - sys-devel/llvm:14 - clang? ( - =sys-devel/lld-14* - pgo? ( =sys-libs/compiler-rt-sanitizers-14*[profile] ) - ) - ) - ( - sys-devel/clang:13 - sys-devel/llvm:13 - clang? ( - =sys-devel/lld-13* - pgo? ( =sys-libs/compiler-rt-sanitizers-13*[profile] ) - ) - ) - ) - amd64? ( >=dev-lang/nasm-2.14 ) - x86? ( >=dev-lang/nasm-2.14 )" - -COMMON_DEPEND=" - dev-libs/atk - dev-libs/expat - dev-libs/glib:2 - dev-libs/libffi:= - >=dev-libs/nss-3.80 - >=dev-libs/nspr-4.34 - media-libs/alsa-lib - media-libs/fontconfig - media-libs/freetype - media-libs/mesa - media-video/ffmpeg - sys-libs/zlib - virtual/freedesktop-icon-theme - x11-libs/cairo - x11-libs/gdk-pixbuf - x11-libs/pango - x11-libs/pixman - dbus? ( - dev-libs/dbus-glib - sys-apps/dbus - ) - jack? ( virtual/jack ) - libproxy? ( net-libs/libproxy ) - selinux? ( sec-policy/selinux-mozilla ) - sndio? ( >=media-sound/sndio-1.8.0-r1 ) - screencast? ( media-video/pipewire:= ) - system-av1? ( - >=media-libs/dav1d-0.9.3:= - >=media-libs/libaom-1.0.0:= - ) - system-harfbuzz? ( - >=media-gfx/graphite2-1.3.13 - >=media-libs/harfbuzz-2.8.1:0= - ) - system-icu? ( >=dev-libs/icu-71.1:= ) - system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 ) - system-libevent? ( >=dev-libs/libevent-2.0:0=[threads] ) - system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] ) - system-png? ( >=media-libs/libpng-1.6.35:0=[apng] ) - system-webp? ( >=media-libs/libwebp-1.1.0:0= ) - wayland? ( - >=media-libs/libepoxy-1.5.10-r1 - x11-libs/gtk+:3[wayland] - x11-libs/libdrm - x11-libs/libxkbcommon[wayland] - ) - wifi? ( - kernel_linux? ( - dev-libs/dbus-glib - net-misc/networkmanager - sys-apps/dbus - ) - ) - X? ( - virtual/opengl - x11-libs/cairo[X] - x11-libs/gtk+:3[X] - x11-libs/libX11 - x11-libs/libXcomposite - x11-libs/libXdamage - x11-libs/libXext - x11-libs/libXfixes - x11-libs/libxkbcommon[X] - x11-libs/libXrandr - x11-libs/libXtst - x11-libs/libxcb:= - )" - -RDEPEND="${COMMON_DEPEND} - !www-client/firefox:0 - !www-client/firefox:esr - jack? ( virtual/jack ) - openh264? ( media-libs/openh264:*[plugin] ) - pulseaudio? ( - || ( - media-sound/pulseaudio - >=media-sound/apulse-0.1.12-r4 - ) - ) - selinux? ( sec-policy/selinux-mozilla )" - -DEPEND="${COMMON_DEPEND} - pulseaudio? ( - || ( - media-sound/pulseaudio - >=media-sound/apulse-0.1.12-r4[sdk] - ) - ) - X? ( - x11-libs/libICE - x11-libs/libSM - )" - -S="${WORKDIR}/${PN}-${PV%_*}" -RESTRICT=network-sandbox - -# Allow MOZ_GMP_PLUGIN_LIST to be set in an eclass or -# overridden in the enviromnent (advanced hackers only) -if [[ -z "${MOZ_GMP_PLUGIN_LIST+set}" ]] ; then - MOZ_GMP_PLUGIN_LIST=( gmp-gmpopenh264 gmp-widevinecdm ) -fi - -llvm_check_deps() { - if ! has_version -b "sys-devel/clang:${LLVM_SLOT}" ; then - einfo "sys-devel/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - - if use clang ; then - if ! has_version -b "=sys-devel/lld-${LLVM_SLOT}*" ; then - einfo "=sys-devel/lld-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - - if use pgo ; then - if ! has_version -b "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}*" ; then - einfo "=sys-libs/compiler-rt-sanitizers-${LLVM_SLOT}* is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2 - return 1 - fi - fi - fi - - einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2 -} - -MOZ_LANGS=( - af ar ast be bg br ca cak cs cy da de dsb - el en-CA en-GB en-US es-AR es-ES et eu - fi fr fy-NL ga-IE gd gl he hr hsb hu - id is it ja ka kab kk ko lt lv ms nb-NO nl nn-NO - pa-IN pl pt-BR pt-PT rm ro ru - sk sl sq sr sv-SE th tr uk uz vi zh-CN zh-TW -) - -# Firefox-only LANGS -MOZ_LANGS+=( ach ) -MOZ_LANGS+=( an ) -MOZ_LANGS+=( az ) -MOZ_LANGS+=( bn ) -MOZ_LANGS+=( bs ) -MOZ_LANGS+=( ca-valencia ) -MOZ_LANGS+=( eo ) -MOZ_LANGS+=( es-CL ) -MOZ_LANGS+=( es-MX ) -MOZ_LANGS+=( fa ) -MOZ_LANGS+=( ff ) -MOZ_LANGS+=( gn ) -MOZ_LANGS+=( gu-IN ) -MOZ_LANGS+=( hi-IN ) -MOZ_LANGS+=( hy-AM ) -MOZ_LANGS+=( ia ) -MOZ_LANGS+=( km ) -MOZ_LANGS+=( kn ) -MOZ_LANGS+=( lij ) -MOZ_LANGS+=( mk ) -MOZ_LANGS+=( mr ) -MOZ_LANGS+=( my ) -MOZ_LANGS+=( ne-NP ) -MOZ_LANGS+=( oc ) -MOZ_LANGS+=( sco ) -MOZ_LANGS+=( si ) -MOZ_LANGS+=( son ) -MOZ_LANGS+=( szl ) -MOZ_LANGS+=( ta ) -MOZ_LANGS+=( te ) -MOZ_LANGS+=( tl ) -MOZ_LANGS+=( trs ) -MOZ_LANGS+=( ur ) -MOZ_LANGS+=( xh ) - -mozilla_set_globals() { - # https://bugs.gentoo.org/587334 - local MOZ_TOO_REGIONALIZED_FOR_L10N=( - fy-NL ga-IE gu-IN hi-IN hy-AM nb-NO ne-NP nn-NO pa-IN sv-SE - ) - - local lang xflag - for lang in "${MOZ_LANGS[@]}" ; do - # en and en_US are handled internally - if [[ ${lang} == en ]] || [[ ${lang} == en-US ]] ; then - continue - fi - - # strip region subtag if $lang is in the list - if has ${lang} "${MOZ_TOO_REGIONALIZED_FOR_L10N[@]}" ; then - xflag=${lang%%-*} - else - xflag=${lang} - fi - - SRC_URI+=" l10n_${xflag/[_@]/-}? (" - SRC_URI+=" ${MOZ_SRC_BASE_URI}/linux-x86_64/xpi/${lang}.xpi -> ${MOZ_P_DISTFILES}-${lang}.xpi" - SRC_URI+=" )" - IUSE+=" l10n_${xflag/[_@]/-}" - done -} -mozilla_set_globals - -moz_clear_vendor_checksums() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ${#} -ne 1 ]] ; then - die "${FUNCNAME} requires exact one argument" - fi - - einfo "Clearing cargo checksums for ${1} ..." - - sed -i \ - -e 's/\("files":{\)[^}]*/\1/' \ - "${S}"/third_party/rust/${1}/.cargo-checksum.json \ - || die -} - -moz_install_xpi() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ${#} -lt 2 ]] ; then - die "${FUNCNAME} requires at least two arguments" - fi - - local DESTDIR=${1} - shift - - insinto "${DESTDIR}" - - local emid xpi_file xpi_tmp_dir - for xpi_file in "${@}" ; do - emid= - xpi_tmp_dir=$(mktemp -d --tmpdir="${T}") - - # Unpack XPI - unzip -qq "${xpi_file}" -d "${xpi_tmp_dir}" || die - - # Determine extension ID - if [[ -f "${xpi_tmp_dir}/install.rdf" ]] ; then - emid=$(sed -n -e '/install-manifest/,$ { /em:id/!d; s/.*[\">]\([^\"<>]*\)[\"<].*/\1/; p; q }' "${xpi_tmp_dir}/install.rdf") - [[ -z "${emid}" ]] && die "failed to determine extension id from install.rdf" - elif [[ -f "${xpi_tmp_dir}/manifest.json" ]] ; then - emid=$(sed -n -e 's/.*"id": "\([^"]*\)".*/\1/p' "${xpi_tmp_dir}/manifest.json") - [[ -z "${emid}" ]] && die "failed to determine extension id from manifest.json" - else - die "failed to determine extension id" - fi - - einfo "Installing ${emid}.xpi into ${ED}${DESTDIR} ..." - newins "${xpi_file}" "${emid}.xpi" - done -} - -mozconfig_add_options_ac() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ${#} -lt 2 ]] ; then - die "${FUNCNAME} requires at least two arguments" - fi - - local reason=${1} - shift - - local option - for option in ${@} ; do - echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG} - done -} - -mozconfig_add_options_mk() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ${#} -lt 2 ]] ; then - die "${FUNCNAME} requires at least two arguments" - fi - - local reason=${1} - shift - - local option - for option in ${@} ; do - echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG} - done -} - -mozconfig_use_enable() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ${#} -lt 1 ]] ; then - die "${FUNCNAME} requires at least one arguments" - fi - - local flag=$(use_enable "${@}") - mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}" -} - -mozconfig_use_with() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ${#} -lt 1 ]] ; then - die "${FUNCNAME} requires at least one arguments" - fi - - local flag=$(use_with "${@}") - mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}" -} - -pkg_pretend() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if use pgo ; then - if ! has usersandbox $FEATURES ; then - die "You must enable usersandbox as X server can not run as root!" - fi - fi - - # Ensure we have enough disk space to compile - if use pgo || use lto || use debug ; then - CHECKREQS_DISK_BUILD="13500M" - else - CHECKREQS_DISK_BUILD="6600M" - fi - - check-reqs_pkg_pretend - fi -} - -pkg_setup() { - if [[ ${MERGE_TYPE} != binary ]] ; then - if use pgo ; then - if ! has userpriv ${FEATURES} ; then - eerror "Building ${PN} with USE=pgo and FEATURES=-userpriv is not supported!" - fi - fi - - # Ensure we have enough disk space to compile - if use pgo || use lto || use debug ; then - CHECKREQS_DISK_BUILD="13500M" - else - CHECKREQS_DISK_BUILD="6400M" - fi - - check-reqs_pkg_setup - - llvm_pkg_setup - - if use clang && use lto ; then - local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }') - [[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}") - [[ -z ${version_lld} ]] && die "Failed to read ld.lld version!" - - local version_llvm_rust=$(rustc -Vv 2>/dev/null | grep -F -- 'LLVM version:' | awk '{ print $3 }') - [[ -n ${version_llvm_rust} ]] && version_llvm_rust=$(ver_cut 1 "${version_llvm_rust}") - [[ -z ${version_llvm_rust} ]] && die "Failed to read used LLVM version from rustc!" - - if ver_test "${version_lld}" -ne "${version_llvm_rust}" ; then - eerror "Rust is using LLVM version ${version_llvm_rust} but ld.lld version belongs to LLVM version ${version_lld}." - eerror "You will be unable to link ${CATEGORY}/${PN}. To proceed you have the following options:" - eerror " - Manually switch rust version using 'eselect rust' to match used LLVM version" - eerror " - Switch to dev-lang/rust[system-llvm] which will guarantee matching version" - eerror " - Build ${CATEGORY}/${PN} without USE=lto" - eerror " - Rebuild lld with llvm that was used to build rust (may need to rebuild the whole " - eerror " llvm/clang/lld/rust chain depending on your @world updates)" - die "LLVM version used by Rust (${version_llvm_rust}) does not match with ld.lld version (${version_lld})!" - fi - fi - - if ! use clang && [[ $(gcc-major-version) -eq 11 ]] \ - && ! has_version -b ">sys-devel/gcc-11.1.0:11" ; then - # bug 792705 - eerror "Using GCC 11 to compile firefox is currently known to be broken (see bug #792705)." - die "Set USE=clang or select "${S}"/api-google.key || die - echo -n "${MOZ_API_KEY_LOCATION//gGaPi/}" > "${S}"/api-location.key || die - echo -n "${MOZ_API_KEY_MOZILLA//m0ap1/}" > "${S}"/api-mozilla.key || die - - xdg_environment_reset -} - -src_configure() { - # Show flags set at the beginning - einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" - einfo "Current CFLAGS:\t\t${CFLAGS:-no value set}" - einfo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}" - einfo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}" - einfo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}" - - local have_switched_compiler= - if use clang && ! tc-is-clang ; then - # Force clang - einfo "Enforcing the use of clang due to USE=clang ..." - have_switched_compiler=yes - AR=llvm-ar - AS=llvm-as - CC=${CHOST}-clang - CXX=${CHOST}-clang++ - NM=llvm-nm - RANLIB=llvm-ranlib - elif ! use clang && ! tc-is-gcc ; then - # Force gcc - have_switched_compiler=yes - einfo "Enforcing the use of gcc due to USE=-clang ..." - AR=gcc-ar - CC=${CHOST}-gcc - CXX=${CHOST}-g++ - NM=gcc-nm - RANLIB=gcc-ranlib - fi - - if [[ -n "${have_switched_compiler}" ]] ; then - # Because we switched active compiler we have to ensure - # that no unsupported flags are set - strip-unsupported-flags - fi - - # Ensure we use correct toolchain - export HOST_CC="$(tc-getBUILD_CC)" - export HOST_CXX="$(tc-getBUILD_CXX)" - tc-export CC CXX LD AR NM OBJDUMP RANLIB PKG_CONFIG - - # Pass the correct toolchain paths through cbindgen - if tc-is-cross-compiler ; then - export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} --target=${CHOST} ${BINDGEN_CFLAGS-}" - fi - - # Set MOZILLA_FIVE_HOME - export MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}" - - # python/mach/mach/mixin/process.py fails to detect SHELL - export SHELL="${EPREFIX}/bin/bash" - - # Set state path - export MOZBUILD_STATE_PATH="${BUILD_DIR}" - - # Set MOZCONFIG - export MOZCONFIG="${S}/.mozconfig" - - # Initialize MOZCONFIG - mozconfig_add_options_ac '' --enable-application=browser - - # Set Gentoo defaults - export MOZILLA_OFFICIAL=1 - - mozconfig_add_options_ac 'Gentoo default' \ - --allow-addon-sideload \ - --disable-cargo-incremental \ - --disable-crashreporter \ - --disable-gpsd \ - --disable-install-strip \ - --disable-parental-controls \ - --disable-strip \ - --disable-updater \ - --enable-negotiateauth \ - --enable-new-pass-manager \ - --enable-official-branding \ - --enable-release \ - --enable-system-ffi \ - --enable-system-pixman \ - --host="${CBUILD:-${CHOST}}" \ - --libdir="${EPREFIX}/usr/$(get_libdir)" \ - --prefix="${EPREFIX}/usr" \ - --target="${CHOST}" \ - --without-ccache \ - --without-wasm-sandboxed-libraries \ - --with-intl-api \ - --with-libclang-path="$(llvm-config --libdir)" \ - --with-system-nspr \ - --with-system-nss \ - --with-system-zlib \ - --with-toolchain-prefix="${CHOST}-" \ - --with-unsigned-addon-scopes=app,system \ - --x-includes="${ESYSROOT}/usr/include" \ - --x-libraries="${ESYSROOT}/usr/$(get_libdir)" - - # Set update channel - local update_channel=release - [[ -n ${MOZ_ESR} ]] && update_channel=esr - mozconfig_add_options_ac '' --update-channel=${update_channel} - - if ! use x86 && [[ ${CHOST} != armv*h* ]] ; then - mozconfig_add_options_ac '' --enable-rust-simd - fi - - # For future keywording: This is currently (97.0) only supported on: - # amd64, arm, arm64 & x86. - # Might want to flip the logic around if Firefox is to support more arches. - if use ppc64 || use riscv; then - mozconfig_add_options_ac '' --disable-sandbox - else - mozconfig_add_options_ac '' --enable-sandbox - fi - if use riscv; then - mozconfig_add_options_ac '' --disable-jit - fi - - if [[ -s "${S}/api-google.key" ]] ; then - local key_origin="Gentoo default" - if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 }') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then - key_origin="User value" - fi - - mozconfig_add_options_ac "${key_origin}" \ - --with-google-safebrowsing-api-keyfile="${S}/api-google.key" - else - einfo "Building without Google API key ..." - fi - - if [[ -s "${S}/api-location.key" ]] ; then - local key_origin="Gentoo default" - if [[ $(cat "${S}/api-location.key" | md5sum | awk '{ print $1 }') != ffb7895e35dedf832eb1c5d420ac7420 ]] ; then - key_origin="User value" - fi - - mozconfig_add_options_ac "${key_origin}" \ - --with-google-location-service-api-keyfile="${S}/api-location.key" - else - einfo "Building without Location API key ..." - fi - - if [[ -s "${S}/api-mozilla.key" ]] ; then - local key_origin="Gentoo default" - if [[ $(cat "${S}/api-mozilla.key" | md5sum | awk '{ print $1 }') != 3927726e9442a8e8fa0e46ccc39caa27 ]] ; then - key_origin="User value" - fi - - mozconfig_add_options_ac "${key_origin}" \ - --with-mozilla-api-keyfile="${S}/api-mozilla.key" - else - einfo "Building without Mozilla API key ..." - fi - - mozconfig_use_with system-av1 - mozconfig_use_with system-harfbuzz - mozconfig_use_with system-harfbuzz system-graphite2 - mozconfig_use_with system-icu - mozconfig_use_with system-jpeg - mozconfig_use_with system-libevent - mozconfig_use_with system-libvpx - mozconfig_use_with system-png - mozconfig_use_with system-webp - - mozconfig_use_enable dbus - mozconfig_use_enable libproxy - - use eme-free && mozconfig_add_options_ac '+eme-free' --disable-eme - - mozconfig_use_enable geckodriver - - if use hardened ; then - mozconfig_add_options_ac "+hardened" --enable-hardening - append-ldflags "-Wl,-z,relro -Wl,-z,now" - fi - - local myaudiobackends="" - use jack && myaudiobackends+="jack," - use sndio && myaudiobackends+="sndio," - use pulseaudio && myaudiobackends+="pulseaudio," - ! use pulseaudio && myaudiobackends+="alsa," - - mozconfig_add_options_ac '--enable-audio-backends' --enable-audio-backends="${myaudiobackends::-1}" - - mozconfig_use_enable wifi necko-wifi - - if use X && use wayland ; then - mozconfig_add_options_ac '+x11+wayland' --enable-default-toolkit=cairo-gtk3-x11-wayland - elif ! use X && use wayland ; then - mozconfig_add_options_ac '+wayland' --enable-default-toolkit=cairo-gtk3-wayland-only - else - mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3 - fi - - if use lto ; then - if use clang ; then - # Upstream only supports lld when using clang - mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld - - mozconfig_add_options_ac '+lto' --enable-lto=cross - - else - # ThinLTO is currently broken, see bmo#1644409 - mozconfig_add_options_ac '+lto' --enable-lto=full - mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd - fi - - if use pgo ; then - mozconfig_add_options_ac '+pgo' MOZ_PGO=1 - - if use clang ; then - # Used in build/pgo/profileserver.py - export LLVM_PROFDATA="llvm-profdata" - fi - fi - else - # Avoid auto-magic on linker - if use clang ; then - # This is upstream's default - mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld - else - mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd - fi - fi - - # LTO flag was handled via configure - filter-flags '-flto*' - - mozconfig_use_enable debug - if use debug ; then - mozconfig_add_options_ac '+debug' --disable-optimize - else - if is-flag '-g*' ; then - if use clang ; then - mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*') - else - mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols - fi - else - mozconfig_add_options_ac 'Gentoo default' --disable-debug-symbols - fi - - if is-flag '-O0' ; then - mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O0 - elif is-flag '-O4' ; then - mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O4 - elif is-flag '-O3' ; then - mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O3 - elif is-flag '-O1' ; then - mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-O1 - elif is-flag '-Os' ; then - mozconfig_add_options_ac "from CFLAGS" --enable-optimize=-Os - else - mozconfig_add_options_ac "Gentoo default" --enable-optimize=-O2 - fi - fi - - # Debug flag was handled via configure - filter-flags '-g*' - - # Optimization flag was handled via configure - filter-flags '-O*' - - # Modifications to better support ARM, bug #553364 - if use cpu_flags_arm_neon ; then - mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon - - if ! tc-is-clang ; then - # thumb options aren't supported when using clang, bug 666966 - mozconfig_add_options_ac '+cpu_flags_arm_neon' \ - --with-thumb=yes \ - --with-thumb-interwork=no - fi - fi - - if [[ ${CHOST} == armv*h* ]] ; then - mozconfig_add_options_ac 'CHOST=armv*h*' --with-float-abi=hard - - if ! use system-libvpx ; then - sed -i \ - -e "s|softfp|hard|" \ - "${S}"/media/libvpx/moz.build \ - || die - fi - fi - - if use clang ; then - # https://bugzilla.mozilla.org/show_bug.cgi?id=1482204 - # https://bugzilla.mozilla.org/show_bug.cgi?id=1483822 - # toolkit/moz.configure Elfhack section: target.cpu in ('arm', 'x86', 'x86_64') - local disable_elf_hack= - if use amd64 ; then - disable_elf_hack=yes - elif use x86 ; then - disable_elf_hack=yes - elif use arm ; then - disable_elf_hack=yes - fi - - if [[ -n ${disable_elf_hack} ]] ; then - mozconfig_add_options_ac 'elf-hack is broken when using Clang' --disable-elf-hack - fi - elif tc-is-gcc ; then - if ver_test $(gcc-fullversion) -ge 10 ; then - einfo "Forcing -fno-tree-loop-vectorize to workaround GCC bug, see bug 758446 ..." - append-cxxflags -fno-tree-loop-vectorize - fi - fi - - # Additional ARCH support - case "${ARCH}" in - arm) - # Reduce the memory requirements for linking - if use clang ; then - # Nothing to do - :; - elif use lto ; then - append-ldflags -Wl,--no-keep-memory - else - append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads - fi - ;; - esac - - if ! use elibc_glibc ; then - mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc - fi - - # Allow elfhack to work in combination with unstripped binaries - # when they would normally be larger than 2GiB. - append-ldflags "-Wl,--compress-debug-sections=zlib" - - # Make revdep-rebuild.sh happy; Also required for musl - append-ldflags -Wl,-rpath="${MOZILLA_FIVE_HOME}",--enable-new-dtags - - # Pass $MAKEOPTS to build system - export MOZ_MAKE_FLAGS="${MAKEOPTS}" - - # Use system's Python environment - PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach - - if use system-python-libs; then - export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="system" - else - export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none" - fi - - # Disable notification when build system has finished - export MOZ_NOSPAM=1 - - # Portage sets XARGS environment variable to "xargs -r" by default which - # breaks build system's check_prog() function which doesn't support arguments - mozconfig_add_options_ac 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs" - - # Set build dir - mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}" - - # Show flags we will use - einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" - einfo "Build CFLAGS:\t\t${CFLAGS:-no value set}" - einfo "Build CXXFLAGS:\t\t${CXXFLAGS:-no value set}" - einfo "Build LDFLAGS:\t\t${LDFLAGS:-no value set}" - einfo "Build RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}" - - # Handle EXTRA_CONF and show summary - local ac opt hash reason - - # Apply EXTRA_ECONF entries to $MOZCONFIG - if [[ -n ${EXTRA_ECONF} ]] ; then - IFS=\! read -a ac <<<${EXTRA_ECONF// --/\!} - for opt in "${ac[@]}"; do - mozconfig_add_options_ac "EXTRA_ECONF" --${opt#--} - done - fi - - echo - echo "==========================================================" - echo "Building ${PF} with the following configuration" - grep ^ac_add_options "${MOZCONFIG}" | while read ac opt hash reason; do - [[ -z ${hash} || ${hash} == \# ]] \ - || die "error reading mozconfig: ${ac} ${opt} ${hash} ${reason}" - printf " %-30s %s\n" "${opt}" "${reason:-mozilla.org default}" - done - echo "==========================================================" - echo - - # To avoid huge patches of rust library (~200MB), we have to download on the fly - einfo "riscv overlay: Performing ./mach vendor rust to update third party libs" - ./mach vendor rust --ignore-modified || die - ./mach configure || die -} - -src_compile() { - local virtx_cmd= - - if use pgo ; then - virtx_cmd=virtx - - # Reset and cleanup environment variables used by GNOME/XDG - gnome2_environment_reset - - addpredict /root - fi - - if ! use X && use wayland; then - local -x GDK_BACKEND=wayland - else - local -x GDK_BACKEND=x11 - fi - - ${virtx_cmd} ./mach build --verbose \ - || die -} - -src_install() { - # xpcshell is getting called during install - pax-mark m \ - "${BUILD_DIR}"/dist/bin/xpcshell \ - "${BUILD_DIR}"/dist/bin/${PN} \ - "${BUILD_DIR}"/dist/bin/plugin-container - - DESTDIR="${D}" ./mach install || die - - # Upstream cannot ship symlink but we can (bmo#658850) - rm "${ED}${MOZILLA_FIVE_HOME}/${PN}-bin" || die - dosym ${PN} ${MOZILLA_FIVE_HOME}/${PN}-bin - - # Don't install llvm-symbolizer from sys-devel/llvm package - if [[ -f "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" ]] ; then - rm -v "${ED}${MOZILLA_FIVE_HOME}/llvm-symbolizer" || die - fi - - # Install policy (currently only used to disable application updates) - insinto "${MOZILLA_FIVE_HOME}/distribution" - newins "${FILESDIR}"/distribution.ini distribution.ini - newins "${FILESDIR}"/disable-auto-update.policy.json policies.json - - # Install system-wide preferences - local PREFS_DIR="${MOZILLA_FIVE_HOME}/browser/defaults/preferences" - insinto "${PREFS_DIR}" - newins "${FILESDIR}"/gentoo-default-prefs.js gentoo-prefs.js - - local GENTOO_PREFS="${ED}${PREFS_DIR}/gentoo-prefs.js" - - # Set dictionary path to use system hunspell - cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set spellchecker.dictionary_path pref" - pref("spellchecker.dictionary_path", "${EPREFIX}/usr/share/myspell"); - EOF - - # Force hwaccel prefs if USE=hwaccel is enabled - if use hwaccel ; then - cat "${FILESDIR}"/gentoo-hwaccel-prefs.js-r2 \ - >>"${GENTOO_PREFS}" \ - || die "failed to add prefs to force hardware-accelerated rendering to all-gentoo.js" - - if use wayland; then - cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set hwaccel wayland prefs" - pref("gfx.x11-egl.force-enabled", false); - EOF - else - cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set hwaccel x11 prefs" - pref("gfx.x11-egl.force-enabled", true); - EOF - fi - fi - - if ! use gmp-autoupdate ; then - local plugin - for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do - einfo "Disabling auto-update for ${plugin} plugin ..." - cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to disable autoupdate for ${plugin} media plugin" - pref("media.${plugin}.autoupdate", false); - EOF - done - fi - - # Force the graphite pref if USE=system-harfbuzz is enabled, since the pref cannot disable it - if use system-harfbuzz ; then - cat >>"${GENTOO_PREFS}" <<-EOF || die "failed to set gfx.font_rendering.graphite.enabled pref" - sticky_pref("gfx.font_rendering.graphite.enabled", true); - EOF - fi - - # Install language packs - local langpacks=( $(find "${WORKDIR}/language_packs" -type f -name '*.xpi') ) - if [[ -n "${langpacks}" ]] ; then - moz_install_xpi "${MOZILLA_FIVE_HOME}/distribution/extensions" "${langpacks[@]}" - fi - - # Install geckodriver - if use geckodriver ; then - einfo "Installing geckodriver into ${ED}${MOZILLA_FIVE_HOME} ..." - pax-mark m "${BUILD_DIR}"/dist/bin/geckodriver - exeinto "${MOZILLA_FIVE_HOME}" - doexe "${BUILD_DIR}"/dist/bin/geckodriver - - dosym ${MOZILLA_FIVE_HOME}/geckodriver /usr/bin/geckodriver - fi - - # Install icons - local icon_srcdir="${S}/browser/branding/official" - local icon_symbolic_file="${FILESDIR}/icon/firefox-symbolic.svg" - - insinto /usr/share/icons/hicolor/symbolic/apps - newins "${icon_symbolic_file}" ${PN}-symbolic.svg - - local icon size - for icon in "${icon_srcdir}"/default*.png ; do - size=${icon%.png} - size=${size##*/default} - - if [[ ${size} -eq 48 ]] ; then - newicon "${icon}" ${PN}.png - fi - - newicon -s ${size} "${icon}" ${PN}.png - done - - # Install menu - local app_name="Mozilla ${MOZ_PN^}" - local desktop_file="${FILESDIR}/icon/${PN}-r3.desktop" - local desktop_filename="${PN}.desktop" - local exec_command="${PN}" - local icon="${PN}" - local use_wayland="false" - - if use wayland ; then - use_wayland="true" - fi - - cp "${desktop_file}" "${WORKDIR}/${PN}.desktop-template" || die - - sed -i \ - -e "s:@NAME@:${app_name}:" \ - -e "s:@EXEC@:${exec_command}:" \ - -e "s:@ICON@:${icon}:" \ - "${WORKDIR}/${PN}.desktop-template" \ - || die - - newmenu "${WORKDIR}/${PN}.desktop-template" "${desktop_filename}" - - rm "${WORKDIR}/${PN}.desktop-template" || die - - # Install wrapper script - [[ -f "${ED}/usr/bin/${PN}" ]] && rm "${ED}/usr/bin/${PN}" - newbin "${FILESDIR}/${PN}-r1.sh" ${PN} - - # Update wrapper - sed -i \ - -e "s:@PREFIX@:${EPREFIX}/usr:" \ - -e "s:@MOZ_FIVE_HOME@:${MOZILLA_FIVE_HOME}:" \ - -e "s:@APULSELIB_DIR@:${apulselib}:" \ - -e "s:@DEFAULT_WAYLAND@:${use_wayland}:" \ - "${ED}/usr/bin/${PN}" \ - || die -} - -pkg_preinst() { - xdg_pkg_preinst - - # If the apulse libs are available in MOZILLA_FIVE_HOME then apulse - # does not need to be forced into the LD_LIBRARY_PATH - if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then - einfo "APULSE found; Generating library symlinks for sound support ..." - local lib - pushd "${ED}${MOZILLA_FIVE_HOME}" &>/dev/null || die - for lib in ../apulse/libpulse{.so{,.0},-simple.so{,.0}} ; do - # A quickpkg rolled by hand will grab symlinks as part of the package, - # so we need to avoid creating them if they already exist. - if [[ ! -L ${lib##*/} ]] ; then - ln -s "${lib}" ${lib##*/} || die - fi - done - popd &>/dev/null || die - fi -} - -pkg_postinst() { - xdg_pkg_postinst - - if ! use gmp-autoupdate ; then - elog "USE='-gmp-autoupdate' has disabled the following plugins from updating or" - elog "installing into new profiles:" - local plugin - for plugin in "${MOZ_GMP_PLUGIN_LIST[@]}" ; do - elog "\t ${plugin}" - done - elog - fi - - if use pulseaudio && has_version ">=media-sound/apulse-0.1.12-r4" ; then - elog "Apulse was detected at merge time on this system and so it will always be" - elog "used for sound. If you wish to use pulseaudio instead please unmerge" - elog "media-sound/apulse." - elog - fi - - local show_doh_information - local show_normandy_information - local show_shortcut_information - - if [[ -z "${REPLACING_VERSIONS}" ]] ; then - # New install; Tell user that DoH is disabled by default - show_doh_information=yes - show_normandy_information=yes - show_shortcut_information=no - else - local replacing_version - for replacing_version in ${REPLACING_VERSIONS} ; do - if ver_test "${replacing_version}" -lt 91.0 ; then - # Tell user that we no longer install a shortcut - # per supported display protocol - show_shortcut_information=yes - fi - done - fi - - if [[ -n "${show_doh_information}" ]] ; then - elog - elog "Note regarding Trusted Recursive Resolver aka DNS-over-HTTPS (DoH):" - elog "Due to privacy concerns (encrypting DNS might be a good thing, sending all" - elog "DNS traffic to Cloudflare by default is not a good idea and applications" - elog "should respect OS configured settings), \"network.trr.mode\" was set to 5" - elog "(\"Off by choice\") by default." - elog "You can enable DNS-over-HTTPS in ${PN^}'s preferences." - fi - - # bug 713782 - if [[ -n "${show_normandy_information}" ]] ; then - elog - elog "Upstream operates a service named Normandy which allows Mozilla to" - elog "push changes for default settings or even install new add-ons remotely." - elog "While this can be useful to address problems like 'Armagadd-on 2.0' or" - elog "revert previous decisions to disable TLS 1.0/1.1, privacy and security" - elog "concerns prevail, which is why we have switched off the use of this" - elog "service by default." - elog - elog "To re-enable this service set" - elog - elog " app.normandy.enabled=true" - elog - elog "in about:config." - fi - - if [[ -n "${show_shortcut_information}" ]] ; then - elog - elog "Since ${PN}-91.0 we no longer install multiple shortcuts for" - elog "each supported display protocol. Instead we will only install" - elog "one generic Mozilla ${PN^} shortcut." - elog "If you still want to be able to select between running Mozilla ${PN^}" - elog "on X11 or Wayland, you have to re-create these shortcuts on your own." - fi - - # bug 835078 - if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then - ewarn "You have nouveau drivers installed in your system and 'hwaccel' " - ewarn "enabled for Firefox. Nouveau / your GPU might not support the " - ewarn "required EGL, so either disable 'hwaccel' or try the workaround " - ewarn "explained in https://bugs.gentoo.org/835078#c5 if Firefox crashes." - fi - - elog - elog "Unfortunately Firefox-100.0 breaks compatibility with some sites using " - elog "useragent checks. To temporarily fix this, enter about:config and modify " - elog "network.http.useragent.forceVersion preference to \"99\"." - elog "Or install an addon to change your useragent." - elog "See: https://support.mozilla.org/en-US/kb/difficulties-opening-or-using-website-firefox-100" - elog -} diff --git a/www-client/firefox/metadata.xml b/www-client/firefox/metadata.xml deleted file mode 100644 index ac687a3..0000000 --- a/www-client/firefox/metadata.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - mozilla@gentoo.org - Gentoo Mozilla Team - - - Use Clang compiler instead of GCC - Disable EME (DRM plugin) cabability at build time - Enable WebDriver support - Allow Gecko Media Plugins (binary blobs) to be automatically - downloaded and kept up-to-date in user profiles - Force-enable hardware-accelerated rendering (Mozilla bug 594876) - Enable Link Time Optimization (LTO). Requires Gold linker when using GCC - or LDD linker when using Clang - Use media-libs/openh264 for H.264 support - instead of downloading binary blob from Mozilla at runtime - Add support for profile-guided optimization using gcc-4.5, - for faster binaries. This option will double the compile time. - Enable support for remote desktop and screen cast using media-video/pipewire - Enable support for the media-sound/sndio backend - Use the system-wide media-libs/dav1d - and media-libs/libaom library instead of bundled. - Use the system-wide media-libs/harfbuzz - and media-gfx/graphite2 instead of bundled. - Use the system-wide dev-libs/icu - instead of bundled. - Use the system-wide media-libs/libjpeg-turbo - instead of bundled. - Use the system-wide dev-libs/libevent - instead of bundled. - Use the system-wide media-libs/libvpx - instead of bundled. - Use the system-wide media-libs/libpng - instead of bundled (requires APNG patches). - Use the system-wide media-libs/libwebp - instead of bundled. - - -- cgit v1.2.3-65-gdbad