From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id EACA33854573 for ; Mon, 21 Nov 2022 13:41:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EACA33854573 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.96,181,1665475200"; d="diff'?c'?s'?scan'208";a="87265459" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 21 Nov 2022 05:41:55 -0800 IronPort-SDR: xqWcKf+zY/A+YTR9FO2Rpad0XeDq/jsvGdrNcW5JWNCzFlNtj6Mx3QY3RAXqnJ5/J/0hdiSYq/ 3xz8MpQQ5aeLHlGOsaN3wYapSuI5nlE3YVllx9wjvh3hYZi1XujRc0B0mGVktXBB7iNJ6urT2X BgrCcjiHiiXS337cMiH625a3cq71XBlM3iQ6eNbVA1TKMozXqMYFq+fJLy2agl/4ZBGgb42isA 9lxOdmecSfa44kkGdMrGDLjaz3gD6JbGcHrTs05jNvAxiTQMepMklZzD2ttieRQjN7w2q19b9I XHM= Content-Type: multipart/mixed; boundary="------------fCKtOlnSGi2NjxelAPd5sluD" Message-ID: <2249a729-d961-3939-bc63-8c7564e03dd0@codesourcery.com> Date: Mon, 21 Nov 2022 14:41:48 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: Re: [Patch] gcn: Add __builtin_gcn_{get_stack_limit,first_call_this_thread_p} Content-Language: en-US From: Tobias Burnus To: Andrew Stubbs , gcc-patches References: <1bec26d6-e2c5-3408-4f61-0fb17e730b3e@codesourcery.com> In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-09.mgc.mentorg.com (139.181.222.9) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,NICE_REPLY_A,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------fCKtOlnSGi2NjxelAPd5sluD Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable On 19.11.22 11:46, Tobias Burnus wrote: >> + stacklimit =3D stackbase + seg_size*64; > (this should be '*seg_size' not 'seg_size' and the name should be > s/seg_size/seg_size_ptr/.) I have updated the comment and ... > (Reading it, I think it should be '..._MEM(SImode,' and > '..._MULT(SImode' instead of DImode.) Additionally, there was a problem of bytes vs. bits in: > My understanding is that > dispatch_ptr->private_segment_size =3D=3D *((char*)dispatch_ptr + 192) which is wrong - its 192 bits but only 24 bytes! Finally, in the first_call_this_thread_p() call, I mixed up EQ vs. NE at on= e place. BTW: It seems as if there is no problem with zero extension, if I look at t= he assembler result. Updated version. Consists of: GCC patch adding the builtins, the newlib patch using those (unchanged; used for testing + to be submitted= ), and a 'test.c' using the builtins and its dump produced with amdgcn's 'cc1 -O2' to show the resulting assembly. Tested with libgomp on gfx908 offloading and getting only the known fails: (libgomp.c-c++-common/teams-2.c, libgomp.fortran/async_io_*.f90, libgomp.oacc-c-c++-common/{deep-copy-10.c,static-variable-1.c,vprop.c}) OK for mainline? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------fCKtOlnSGi2NjxelAPd5sluD Content-Type: text/x-patch; charset="UTF-8"; name="gcn-stack-init-v2.diff" Content-Disposition: attachment; filename="gcn-stack-init-v2.diff" Content-Transfer-Encoding: base64 Z2NuOiBBZGQgX19idWlsdGluX2djbl97Z2V0X3N0YWNrX2xpbWl0LGZpcnN0X2NhbGxfdGhp c190aHJlYWRfcH0KClRoZSBuZXcgYnVpbHRpbnMgaGF2ZSBiZWVuIGFkZGVkIGZvciBuZXds aWIgdG8gcmVkdWNlIGRlcGVuZGVuY3kgb24KY29tcGlsZXItaW50ZXJuYWwgaW1wbGVtZW50 YXRpb24gY2hvaWNlcyBvZiBHQ0MgaW4gbmV3bGlicycgZ2V0cmVlbnQuYy4KCmdjYy9DaGFu Z2VMb2c6CgoJKiBjb25maWcvZ2NuL2djbi1idWlsdGlucy5kZWYgKEZJUlNUX0NBTExfVEhJ U19USFJFQURfUCwKICAgICAgICBHRVRfU1RBQ0tfTElNSVQpOiBBZGQgbmV3IGJ1aWx0aW5z LgoJKiBjb25maWcvZ2NuL2djbi5jYyAoZ2NuX2V4cGFuZF9idWlsdGluXzEpOiBFeHBhbmQg dGhlbS4KCSogY29uZmlnL2djbi9nY24ubWQgKHByb2xvZ3VlX3VzZSk6IEFkZCAicmVnaXN0 ZXJfb3BlcmFuZCIgYXMKCWFyZyB0byBtYXRjaF9vcGVyYW5kLgoJKHByb2xvZ3VlX3VzZV9k aSk6IE5ldzsgREkgaW5zbl9hbmRfc3BsaXQgdmFyaWFudCBvZiB0aGUgZm9ybWVyLgoKQ28t QXV0aG9yZWQtQnk6IEFuZHJldyBTdHViYnMgPGFtc0Bjb2Rlc291cmNlcnkuY29tPgoKIGdj Yy9jb25maWcvZ2NuL2djbi1idWlsdGlucy5kZWYgfCAgNCArKysKIGdjYy9jb25maWcvZ2Nu L2djbi5jYyAgICAgICAgICAgfCA3MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLQogZ2NjL2NvbmZpZy9nY24vZ2NuLm1kICAgICAgICAgICB8IDE1ICsrKysr KysrLQogMyBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvZ2NuL2djbi1idWlsdGlucy5kZWYgYi9nY2Mv Y29uZmlnL2djbi9nY24tYnVpbHRpbnMuZGVmCmluZGV4IGVlZWFlYmY5MDEzLi5mMWNmMzBi YmM5NCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9nY24vZ2NuLWJ1aWx0aW5zLmRlZgorKysg Yi9nY2MvY29uZmlnL2djbi9nY24tYnVpbHRpbnMuZGVmCkBAIC0xNjAsOCArMTYwLDEyIEBA IERFRl9CVUlMVElOIChBQ0NfQkFSUklFUiwgLTEsICJhY2NfYmFycmllciIsIEJfSU5TTiwg X0ExIChHQ05fQlRJX1ZPSUQpLAogCiAvKiBLZXJuZWwgaW5wdXRzLiAgKi8KIAorREVGX0JV SUxUSU4gKEZJUlNUX0NBTExfVEhJU19USFJFQURfUCwgLTEsICJmaXJzdF9jYWxsX3RoaXNf dGhyZWFkX3AiLCBCX0lOU04sCisJICAgICBfQTEgKEdDTl9CVElfQk9PTCksIGdjbl9leHBh bmRfYnVpbHRpbl8xKQogREVGX0JVSUxUSU4gKEtFUk5BUkdfUFRSLCAtMSwgImtlcm5hcmdf cHRyIiwgQl9JTlNOLCBfQTEgKEdDTl9CVElfVk9JRFBUUiksCiAJICAgICBnY25fZXhwYW5k X2J1aWx0aW5fMSkKK0RFRl9CVUlMVElOIChHRVRfU1RBQ0tfTElNSVQsIC0xLCAiZ2V0X3N0 YWNrX2xpbWl0IiwgQl9JTlNOLAorCSAgICAgX0ExIChHQ05fQlRJX1ZPSURQVFIpLCBnY25f ZXhwYW5kX2J1aWx0aW5fMSkKIAogI3VuZGVmIF9BMQogI3VuZGVmIF9BMgpkaWZmIC0tZ2l0 IGEvZ2NjL2NvbmZpZy9nY24vZ2NuLmNjIGIvZ2NjL2NvbmZpZy9nY24vZ2NuLmNjCmluZGV4 IGIzODE0YzJlN2M2Li5lYTk2MzFlODgyMyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9nY24v Z2NuLmNjCisrKyBiL2djYy9jb25maWcvZ2NuL2djbi5jYwpAQCAtNDQ5Myw2ICs0NDkzLDQ1 IEBAIGdjbl9leHBhbmRfYnVpbHRpbl8xICh0cmVlIGV4cCwgcnR4IHRhcmdldCwgcnR4IC8q c3VidGFyZ2V0ICovICwKICAgICAgIGVtaXRfaW5zbiAoZ2VuX2djbl93YXZlZnJvbnRfYmFy cmllciAoKSk7CiAgICAgICByZXR1cm4gdGFyZ2V0OwogCisgICAgY2FzZSBHQ05fQlVJTFRJ Tl9HRVRfU1RBQ0tfTElNSVQ6CisgICAgICB7CisJLyogc3RhY2tiYXNlID0gKHN0YWNrX3Nl Z21lbnRfZGVjciAmIDB4MDAwMGZmZmZmZmZmZmZmZikKKwkJCSsgc3RhY2tfd2F2ZV9vZmZz ZXQpOworCSAgIHNlZ19zaXplID0gZGlzcGF0Y2hfcHRyLT5wcml2YXRlX3NlZ21lbnRfc2l6 ZTsKKwkgICBzdGFja2xpbWl0ID0gc3RhY2tiYXNlICsgc2VnX3NpemUqNjQ7CisJICAgd2l0 aCBzZWdzaXplID0gKih1aW50MzJfdCAqKSAoKGNoYXIgKikgZGlzcGF0Y2hfcHRyCisJCQkJ ICAgICAgICsgNipzaXplb2YoaW50MTZfdCkgKyAzKnNpemVvZihpbnQzMl90KSk7CisJICAg Y2YuIHN0cnVjdCBoc2Ffa2VybmVsX2Rpc3BhdGNoX3BhY2tldF9zIGluIHRoZSBIU0EgZG9j LiAgKi8KKwlydHggcHRyOworCWlmIChjZnVuLT5tYWNoaW5lLT5hcmdzLnJlZ1tESVNQQVRD SF9QVFJfQVJHXSA+PSAwCisJICAgICYmIGNmdW4tPm1hY2hpbmUtPmFyZ3MucmVnW1BSSVZB VEVfU0VHTUVOVF9CVUZGRVJfQVJHXSA+PSAwKQorCSAgeworCSAgICBydHggc2l6ZV9ydHgg PSBnZW5fcnR4X1JFRyAoREltb2RlLAorCQkJICAgICBjZnVuLT5tYWNoaW5lLT5hcmdzLnJl Z1tESVNQQVRDSF9QVFJfQVJHXSk7CisJICAgIHNpemVfcnR4ID0gZ2VuX3J0eF9NRU0gKFNJ bW9kZSwKKwkJCQkgICAgZ2VuX3J0eF9QTFVTIChESW1vZGUsIHNpemVfcnR4LAorCQkJCQkJ ICBHRU5fSU5UICg2KjIgKyAzKjQpKSk7CisJICAgIHNpemVfcnR4ID0gZ2VuX3J0eF9NVUxU IChTSW1vZGUsIHNpemVfcnR4LCBHRU5fSU5UICg2NCkpOworCisJICAgIHB0ciA9IGdlbl9y dHhfUkVHIChESW1vZGUsCisJCSAgICBjZnVuLT5tYWNoaW5lLT5hcmdzLnJlZ1tQUklWQVRF X1NFR01FTlRfQlVGRkVSX0FSR10pOworCSAgICBwdHIgPSBnZW5fcnR4X0FORCAoREltb2Rl LCBwdHIsIEdFTl9JTlQgKDB4MDAwMGZmZmZmZmZmZmZmZikpOworCSAgICBwdHIgPSBnZW5f cnR4X1BMVVMgKERJbW9kZSwgcHRyLCBzaXplX3J0eCk7CisJICAgIGlmIChjZnVuLT5tYWNo aW5lLT5hcmdzLnJlZ1tQUklWQVRFX1NFR01FTlRfV0FWRV9PRkZTRVRfQVJHXSA+PSAwKQor CSAgICAgIHsKKwkJcnR4IG9mZjsKKwkJb2ZmID0gZ2VuX3J0eF9SRUcgKFNJbW9kZSwKKwkJ ICAgICAgY2Z1bi0+bWFjaGluZS0+YXJncy5yZWdbUFJJVkFURV9TRUdNRU5UX1dBVkVfT0ZG U0VUX0FSR10pOworCQlwdHIgPSBnZW5fcnR4X1BMVVMgKERJbW9kZSwgcHRyLCBvZmYpOwor CSAgICAgIH0KKwkgIH0KKwllbHNlCisJICB7CisJICAgIHB0ciA9IGdlbl9yZWdfcnR4IChE SW1vZGUpOworCSAgICBlbWl0X21vdmVfaW5zbiAocHRyLCBjb25zdDBfcnR4KTsKKwkgIH0K KwlyZXR1cm4gcHRyOworICAgICAgfQogICAgIGNhc2UgR0NOX0JVSUxUSU5fS0VSTkFSR19Q VFI6CiAgICAgICB7CiAJcnR4IHB0cjsKQEAgLTQ1MDYsNyArNDU0NSwzNiBAQCBnY25fZXhw YW5kX2J1aWx0aW5fMSAodHJlZSBleHAsIHJ0eCB0YXJnZXQsIHJ0eCAvKnN1YnRhcmdldCAq LyAsCiAJICB9CiAJcmV0dXJuIHB0cjsKICAgICAgIH0KLQorICAgIGNhc2UgR0NOX0JVSUxU SU5fRklSU1RfQ0FMTF9USElTX1RIUkVBRF9QOgorICAgICAgeworCS8qIFN0YXNoIGEgbWFy a2VyIGluIHRoZSB1bnVzZWQgdXBwZXIgMTYgYml0cyBvZiBzWzA6MV0gdG8gaW5kaWNhdGUK KwkgICB3aGV0aGVyIGl0IHdhcyB0aGUgZmlyc3QgY2FsbC4gICovCisJcnR4IHJlc3VsdCA9 IGdlbl9yZWdfcnR4IChCSW1vZGUpOworCWVtaXRfbW92ZV9pbnNuIChyZXN1bHQsIGNvbnN0 MF9ydHgpOworCWlmIChjZnVuLT5tYWNoaW5lLT5hcmdzLnJlZ1tQUklWQVRFX1NFR01FTlRf QlVGRkVSX0FSR10gPj0gMCkKKwkgIHsKKwkgICAgcnR4IG5vdF9maXJzdCA9IGdlbl9sYWJl bF9ydHggKCk7CisJICAgIHJ0eCByZWcgPSBnZW5fcnR4X1JFRyAoREltb2RlLAorCQkJY2Z1 bi0+bWFjaGluZS0+YXJncy5yZWdbUFJJVkFURV9TRUdNRU5UX0JVRkZFUl9BUkddKTsKKwkg ICAgcnR4IGNtcCA9IGZvcmNlX3JlZyAoREltb2RlLAorCQkJCSBnZW5fcnR4X0xTSElGVFJU IChESW1vZGUsIHJlZywgR0VOX0lOVCAoNDgpKSk7CisJICAgIGVtaXRfaW5zbiAoZ2VuX2Nz dG9yZXNpNCAocmVzdWx0LCBnZW5fcnR4X05FIChCSW1vZGUsIGNtcCwKKwkJCQkJCQkgIEdF Tl9JTlQoMTIzNDUpKSwKKwkJCQkgICAgICBjbXAsIEdFTl9JTlQoMTIzNDUpKSk7CisJICAg IGVtaXRfanVtcF9pbnNuIChnZW5fY2p1bXAgKG5vdF9maXJzdCwgZ2VuX3J0eF9FUSAoQklt b2RlLCByZXN1bHQsCisJCQkJCQkJICAgICAgY29uc3QwX3J0eCksCisJCQkJICAgICAgIHJl c3VsdCkpOworCSAgICBlbWl0X21vdmVfaW5zbiAocmVnLAorCSAgICAgIGZvcmNlX3JlZyAo REltb2RlLAorCQlnZW5fcnR4X0lPUiAoREltb2RlLAorCQkJICAgICBnZW5fcnR4X0FORCAo REltb2RlLCByZWcsCisJCQkJCSAgR0VOX0lOVCAoMHgwMDAwZmZmZmZmZmZmZmZmTCkpLAor CQkJICAgICBHRU5fSU5UICgxMjM0NUwgPDwgNDgpKSkpOworCSAgICBlbWl0X2luc24gKGdl bl9wcm9sb2d1ZV91c2UgKHJlZykpOworCSAgICBlbWl0X2xhYmVsIChub3RfZmlyc3QpOwor CSAgfQorCXJldHVybiByZXN1bHQ7CisgICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgIGdj Y191bnJlYWNoYWJsZSAoKTsKICAgICB9CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2djbi9n Y24ubWQgYi9nY2MvY29uZmlnL2djbi9nY24ubWQKaW5kZXggOTg3Yjc2Mzk2Y2MuLmE4Yjlj MjhkMTE1IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2djbi9nY24ubWQKKysrIGIvZ2NjL2Nv bmZpZy9nY24vZ2NuLm1kCkBAIC02OTIsMTEgKzY5MiwyNCBAQAogOzsge3t7IFByb2xvZ3Vl L0VwaWxvZ3VlCiAKIChkZWZpbmVfaW5zbiAicHJvbG9ndWVfdXNlIgotICBbKHVuc3BlY192 b2xhdGlsZSBbKG1hdGNoX29wZXJhbmQgMCldIFVOU1BFQ1ZfUFJPTE9HVUVfVVNFKV0KKyAg Wyh1bnNwZWNfdm9sYXRpbGUgWyhtYXRjaF9vcGVyYW5kIDAgInJlZ2lzdGVyX29wZXJhbmQi KV0gVU5TUEVDVl9QUk9MT0dVRV9VU0UpXQogICAiIgogICAiIgogICBbKHNldF9hdHRyICJs ZW5ndGgiICIwIildKQogCisoZGVmaW5lX2luc25fYW5kX3NwbGl0ICJwcm9sb2d1ZV91c2Vf ZGkiCisgIFsodW5zcGVjX3ZvbGF0aWxlIFsobWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rl cl9vcGVyYW5kIildIFVOU1BFQ1ZfUFJPTE9HVUVfVVNFKV0KKyAgIiIKKyAgIiMiCisgICJy ZWxvYWRfY29tcGxldGVkIgorICBbKHVuc3BlY192b2xhdGlsZSBbKG1hdGNoX2R1cCAwKV0g VU5TUEVDVl9QUk9MT0dVRV9VU0UpCisgICAodW5zcGVjX3ZvbGF0aWxlIFsobWF0Y2hfZHVw IDEpXSBVTlNQRUNWX1BST0xPR1VFX1VTRSldCisgIHsKKyAgICBvcGVyYW5kc1sxXSA9IGdj bl9vcGVyYW5kX3BhcnQgKERJbW9kZSwgb3BlcmFuZHNbMF0sIDEpOworICAgIG9wZXJhbmRz WzBdID0gZ2NuX29wZXJhbmRfcGFydCAoREltb2RlLCBvcGVyYW5kc1swXSwgMCk7CisgIH0K KyAgWyhzZXRfYXR0ciAibGVuZ3RoIiAiMCIpXSkKKwogKGRlZmluZV9leHBhbmQgInByb2xv Z3VlIgogICBbKGNvbnN0X2ludCAwKV0KICAgIiIK --------------fCKtOlnSGi2NjxelAPd5sluD Content-Type: text/x-patch; charset="UTF-8"; name="newlib-reent.diff" Content-Disposition: attachment; filename="newlib-reent.diff" Content-Transfer-Encoding: base64 YW1kZ2NuOiBVc2UgX19idWlsdGluX2djbl8gaW4gbGliYy9tYWNoaW5lL2FtZGdjbi9nZXRy ZWVudC5jCgpDYWxsIF9fYnVpbHRpbl9nY25fZ2V0X3N0YWNrX2xpbWl0IGFuZCBfX2J1aWx0 aW5fZ2NuX2ZpcnN0X2NhbGxfdGhpc190aHJlYWRfcAp0byByZWR1Y2UgZGVwZW5kZW5jeSBv biBzb21lIHJlZ2lzdGVyL2xheW91dCBhc3N1bXB0aW9ucyBieSB1c2luZyB0aGUgbmV3CkdD QyBtYWlubGluZSAoR0NDIDEzKSBidWlsdGlucywgaWYgdGhleSBhcmUgYXZhaWxhYmxlLiBJ ZiBub3QsIHRoZSBleGlzdGluZwpjb2RlIGlzIHVzZWQuCgogbmV3bGliL2xpYmMvbWFjaGlu ZS9hbWRnY24vZ2V0cmVlbnQuYyB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9tYWNoaW5lL2FtZGdjbi9nZXRyZWVudC5j IGIvbmV3bGliL2xpYmMvbWFjaGluZS9hbWRnY24vZ2V0cmVlbnQuYwppbmRleCBiZTdkMmVk YzkuLmVmNzMxZjY0OSAxMDA2NDQKLS0tIGEvbmV3bGliL2xpYmMvbWFjaGluZS9hbWRnY24v Z2V0cmVlbnQuYworKysgYi9uZXdsaWIvbGliYy9tYWNoaW5lL2FtZGdjbi9nZXRyZWVudC5j CkBAIC0yOSwyMiArMjksNDIgQEAgdHlwZWRlZiBzdHJ1Y3QgaHNhX2tlcm5lbF9kaXNwYXRj aF9wYWNrZXRfcyB7CiBzdHJ1Y3QgX3JlZW50ICoKIF9fZ2V0cmVlbnQgKHZvaWQpCiB7Ci0g IC8qIFBsYWNlIHRoZSByZWVudCBkYXRhIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGFsbG9j YXRpb24uCi0gICAgIHNbMDoxXSBjb250YWlucyBhIDQ4LWJpdCBwcml2YXRlIHNlZ21lbnQg YmFzZSBhZGRyZXNzLgorICAvKiBQbGFjZSB0aGUgcmVlbnQgZGF0YSBhdCB0aGUgdG9wIG9m IHRoZSBzdGFjayBhbGxvY2F0aW9uLiAgKi8KKyAgc3RydWN0IGRhdGEgeworICAgIGludCBt YXJrZXI7CisgICAgc3RydWN0IF9yZWVudCByZWVudDsKKyAgfSAqZGF0YTsKKworI2lmIGRl ZmluZWQoX19oYXNfYnVpbHRpbikgXAorICAgICYmIF9faGFzX2J1aWx0aW4oX19idWlsdGlu X2djbl9nZXRfc3RhY2tfbGltaXQpIFwKKyAgICAmJiBfX2hhc19idWlsdGluKF9fYnVpbHRp bl9nY25fZmlyc3RfY2FsbF90aGlzX3RocmVhZF9wKQorICB1bnNpZ25lZCBsb25nIGFkZHIg PSAoKCh1bnNpZ25lZCBsb25nKSBfX2J1aWx0aW5fZ2NuX2dldF9zdGFja19saW1pdCgpCisJ CQkgLSBzaXplb2Yoc3RydWN0IGRhdGEpKSAmIH43KTsKKyAgZGF0YSA9IChzdHJ1Y3QgZGF0 YSAqKWFkZHI7CisKKyAgcmVnaXN0ZXIgbG9uZyBzcCBhc20oInMxNiIpOworCisgIGlmIChz cCA+PSBhZGRyKQorICAgIGdvdG8gc3RhY2tvdmVyZmxvdzsKKyAgaWYgKF9fYnVpbHRpbl9n Y25fZmlyc3RfY2FsbF90aGlzX3RocmVhZF9wKCkpCisgICAgeworICAgICAgZGF0YS0+bWFy a2VyID0gMTIzNDU7CisgICAgICBfX2J1aWx0aW5fbWVtc2V0ICgmZGF0YS0+cmVlbnQsIDAs IHNpemVvZihzdHJ1Y3QgX3JlZW50KSk7CisgICAgICBfUkVFTlRfSU5JVF9QVFJfWkVST0VE ICgmZGF0YS0+cmVlbnQpOworICAgIH0KKyAgZWxzZSBpZiAoZGF0YS0+bWFya2VyICE9IDEy MzQ1KQorICAgIGdvdG8gc3RhY2tvdmVyZmxvdzsKKyNlbHNlCisgIC8qIHNbMDoxXSBjb250 YWlucyBhIDQ4LWJpdCBwcml2YXRlIHNlZ21lbnQgYmFzZSBhZGRyZXNzLgogICAgICBzMTEg Y29udGFpbnMgdGhlIG9mZnNldCB0byB0aGUgYmFzZSBvZiB0aGUgc3RhY2suCiAgICAgIHNb NDo1XSBjb250YWlucyB0aGUgZGlzcGF0Y2ggcG9pbnRlci4KLSAgICAgCisKICAgICAgV0FS TklORzogdGhpcyBjb2RlIHdpbGwgYnJlYWsgaWYgc1swOjFdIGlzIGV2ZXIgdXNlZCBmb3Ig YW55dGhpbmchICAqLwogICBjb25zdCByZWdpc3RlciB1bnNpZ25lZCBsb25nIGJ1ZmZlcl9k ZXNjcmlwdG9yIGFzbSgiczAiKTsKICAgdW5zaWduZWQgbG9uZyBwcml2YXRlX3NlZ21lbnQg PSBidWZmZXJfZGVzY3JpcHRvciAmIDB4MDAwMGZmZmZmZmZmZmZmZjsKICAgY29uc3QgcmVn aXN0ZXIgdW5zaWduZWQgaW50IHN0YWNrX29mZnNldCBhc20oInMxMSIpOwogICBjb25zdCBy ZWdpc3RlciBoc2Ffa2VybmVsX2Rpc3BhdGNoX3BhY2tldF90ICpkaXNwYXRjaF9wdHIgYXNt KCJzNCIpOwogCi0gIHN0cnVjdCBkYXRhIHsKLSAgICBpbnQgbWFya2VyOwotICAgIHN0cnVj dCBfcmVlbnQgcmVlbnQ7Ci0gIH0gKmRhdGE7Ci0KICAgdW5zaWduZWQgbG9uZyBzdGFja19i YXNlID0gcHJpdmF0ZV9zZWdtZW50ICsgc3RhY2tfb2Zmc2V0OwogICB1bnNpZ25lZCBsb25n IHN0YWNrX2VuZCA9IHN0YWNrX2Jhc2UgKyBkaXNwYXRjaF9wdHItPnByaXZhdGVfc2VnbWVu dF9zaXplICogNjQ7CiAgIHVuc2lnbmVkIGxvbmcgYWRkciA9IChzdGFja19lbmQgLSBzaXpl b2Yoc3RydWN0IGRhdGEpKSAmIH43OwpAQCAtNjksNyArODksNyBAQCBfX2dldHJlZW50ICh2 b2lkKQogICAgIH0KICAgZWxzZSBpZiAoZGF0YS0+bWFya2VyICE9IDEyMzQ1KQogICAgIGdv dG8gc3RhY2tvdmVyZmxvdzsKLQorI2VuZGlmCiAKICAgcmV0dXJuICZkYXRhLT5yZWVudDsK IAo= --------------fCKtOlnSGi2NjxelAPd5sluD Content-Type: text/x-csrc; charset="UTF-8"; name="test.c" Content-Disposition: attachment; filename="test.c" Content-Transfer-Encoding: base64 dm9sYXRpbGUgdm9pZCAqcHRyOwp2b2lkIGZvbygpCnsKdm9pZCAqcHRyMjsKYXNtKCI7IG9u ZSIpOwpwdHIyID0gX19idWlsdGluX2djbl9nZXRfc3RhY2tfbGltaXQoKSA7CmFzbSgiOyB0 d28iKTsKcHRyID0gcHRyMiArIDEyMzQ7Cn0KCnZvbGF0aWxlIGludCBiOwp2b2lkIGJhcigp CnsKICBpbnQgdjsKYXNtKCI7IHRocmVlIik7CiAgdiA9IF9fYnVpbHRpbl9nY25fZmlyc3Rf Y2FsbF90aGlzX3RocmVhZF9wICgpOwphc20oIjsgZm91ciIpOwogIGIgPSB2Owphc20oIjsg Zml2ZSIpOwppZiAodikKICBhc20oIjt0cnVlIik7CmVsc2UKICBhc20oIjtmYWxzZSIpOwp9 Cg== --------------fCKtOlnSGi2NjxelAPd5sluD Content-Type: text/plain; charset="UTF-8"; name="test.s" Content-Disposition: attachment; filename="test.s" Content-Transfer-Encoding: base64 CS5hbWRnY25fdGFyZ2V0ICJhbWRnY24tdW5rbm93bi1hbWRoc2EtLWdmeDgwMyIKCS50ZXh0 CgkuYWxpZ24JNAoJLmdsb2JsCWZvbwoKCgkudHlwZQlmb28sQGZ1bmN0aW9uCmZvbzoKLkxG QjA6Cgk7IHVzaW5nIGZsYXQgYWRkcmVzc2luZyBpbiBmdW5jdGlvbgoJOyBmcmFtZSBwb2lu dGVyIG5lZWRlZDogdHJ1ZQoJOyBsciBuZWVkcyBzYXZpbmc6IGZhbHNlCgk7IG91dGdvaW5n IGFyZ3Mgc2l6ZTogMAoJOyBwcmV0ZW5kIHNpemU6IDAKCTsgbG9jYWwgdmFycyBzaXplOiAw Cgk7IGNhbGxlZSBzYXZlIHNpemU6IDgKCXZfd3JpdGVsYW5lX2IzMiB2NiwgczE0LCAwCgl2 X3dyaXRlbGFuZV9iMzIgdjYsIHMxNSwgMQoJc19tb3ZfYjY0CWV4ZWMsIC0xCgl2X2xzaGxy ZXZfYjMyCXYzLCAyLCB2MQoJdl9tb3ZfYjMyCXY0LCBzMTYKCXZfbW92X2IzMgl2NSwgczE3 Cgl2X2FkZF91MzIJdjQsIHZjYywgdjMsIHY0Cgl2X2FkZGNfdTMyCXY1LCB2Y2MsIDAsIHY1 LCB2Y2MKCXNfbW92X2I2NAlleGVjLCAzCglmbGF0X3N0b3JlX2R3b3JkCXZbNDo1XSwgdjYK CXNfYWRkX3UzMglzMTYsIHMxNiwgOAoJc19hZGRjX3UzMglzMTcsIHMxNywgMAouTENGSTA6 CglzX2FkZF91MzIJczE0LCBzMTYsIDAKLkxDRkkxOgoJc19hZGRjX3UzMglzMTUsIHMxNywg MAoJc19tb3ZfYjMyCW0wLCA2NTUzNgo7IDUgInRlc3QuYyIgMQoJOyBvbmUKOyAwICIiIDIK CXNfbW92X2IzMglzMiwgLTEKCXNfbW92X2IzMglzMywgNjU1MzUKCXNfYW5kX2I2NAlzWzI6 M10sIHNbMDoxXSwgc1syOjNdCglzX2FkZF91MzIJczEyLCBzNCwgMjQKCXNfYWRkY191MzIJ czEzLCBzNSwgMAoJdl93cml0ZWxhbmVfYjMyCXY0LCBzMTIsIDAKCXZfd3JpdGVsYW5lX2Iz Mgl2NSwgczEzLCAwCglzX21vdl9iNjQJZXhlYywgMQoJZmxhdF9sb2FkX2R3b3JkCXYwLCB2 WzQ6NV0KCXNfd2FpdGNudAkwCgl2X2xzaGxyZXZfYjMyCXYwLCA2LCB2MAoJdl9yZWFkbGFu ZV9iMzIJczEyLCB2MCwgMAoJc19tb3ZfYjMyCXMxMywgMAoJc19hZGRfdTMyCXMyLCBzMiwg czEyCglzX2FkZGNfdTMyCXMzLCBzMywgczEzCglzX21vdl9iMzIJczEzLCAwCglzX2FkZF91 MzIJczIsIHMyLCBzMTEKCXNfYWRkY191MzIJczMsIHMzLCBzMTMKOyA3ICJ0ZXN0LmMiIDEK CTsgdHdvCjsgMCAiIiAyCglzX2dldHBjX2I2NAlzWzEyOjEzXQoJc19hZGRfdTMyCXMxMiwg czEyLCBwdHJAcmVsMzJAbG8rNAoJc19hZGRjX3UzMglzMTMsIHMxMywgcHRyQHJlbDMyQGhp KzQKCXNfYWRkX3UzMglzMiwgczIsIDEyMzQKCXNfYWRkY191MzIJczMsIHMzLCAwCgl2X3dy aXRlbGFuZV9iMzIJdjQsIHMxMiwgMAoJdl93cml0ZWxhbmVfYjMyCXY1LCBzMTMsIDAKCXZf d3JpdGVsYW5lX2IzMgl2NiwgczIsIDAKCXZfd3JpdGVsYW5lX2IzMgl2NywgczMsIDAKCWZs YXRfc3RvcmVfZHdvcmR4Mgl2WzQ6NV0sIHZbNjo3XQoJc19zdWJfdTMyCXMxNiwgczE0LCA4 CglzX3N1YmJfdTMyCXMxNywgczE1LCAwCglzX21vdl9iNjQJZXhlYywgLTEKCXZfbHNobHJl dl9iMzIJdjMsIDIsIHYxCgl2X21vdl9iMzIJdjQsIHMxNgoJdl9tb3ZfYjMyCXY1LCBzMTcK CXZfYWRkX3UzMgl2NCwgdmNjLCB2MywgdjQKCXZfYWRkY191MzIJdjUsIHZjYywgMCwgdjUs IHZjYwoJc19tb3ZfYjY0CWV4ZWMsIDMKCWZsYXRfbG9hZF9kd29yZAl2Niwgdls0OjVdCglz X3dhaXRjbnQJMAoJdl9yZWFkbGFuZV9iMzIgczE0LCB2NiwgMAoJdl9yZWFkbGFuZV9iMzIg czE1LCB2NiwgMQoJc19zZXRwY19iNjQJc1sxODoxOV0KLkxGRTA6Cgkuc2l6ZQlmb28sIC4t Zm9vCgkuYWxpZ24JNAoJLmdsb2JsCWJhcgoKCgkudHlwZQliYXIsQGZ1bmN0aW9uCmJhcjoK LkxGQjE6Cgk7IHVzaW5nIGZsYXQgYWRkcmVzc2luZyBpbiBmdW5jdGlvbgoJOyBmcmFtZSBw b2ludGVyIG5lZWRlZDogdHJ1ZQoJOyBsciBuZWVkcyBzYXZpbmc6IGZhbHNlCgk7IG91dGdv aW5nIGFyZ3Mgc2l6ZTogMAoJOyBwcmV0ZW5kIHNpemU6IDAKCTsgbG9jYWwgdmFycyBzaXpl OiAwCgk7IGNhbGxlZSBzYXZlIHNpemU6IDgKCXZfd3JpdGVsYW5lX2IzMiB2NiwgczE0LCAw Cgl2X3dyaXRlbGFuZV9iMzIgdjYsIHMxNSwgMQoJc19tb3ZfYjY0CWV4ZWMsIC0xCgl2X2xz aGxyZXZfYjMyCXYzLCAyLCB2MQoJdl9tb3ZfYjMyCXY0LCBzMTYKCXZfbW92X2IzMgl2NSwg czE3Cgl2X2FkZF91MzIJdjQsIHZjYywgdjMsIHY0Cgl2X2FkZGNfdTMyCXY1LCB2Y2MsIDAs IHY1LCB2Y2MKCXNfbW92X2I2NAlleGVjLCAzCglmbGF0X3N0b3JlX2R3b3JkCXZbNDo1XSwg djYKCXNfYWRkX3UzMglzMTYsIHMxNiwgOAoJc19hZGRjX3UzMglzMTcsIHMxNywgMAouTENG STI6CglzX2FkZF91MzIJczE0LCBzMTYsIDAKLkxDRkkzOgoJc19hZGRjX3UzMglzMTUsIHMx NywgMAoJc19tb3ZfYjMyCW0wLCA2NTUzNgo7IDE1ICJ0ZXN0LmMiIDEKCTsgdGhyZWUKOyAw ICIiIDIKCXNfbHNocl9iNjQJc1syOjNdLCBzWzA6MV0sIDQ4CglzX2NtcF9sZ191NjQJc1sy OjNdLCAxMjM0NQoJc19tb3ZfYjMyCXMyLCBzY2MKCXNfbW92X2IzMgl2Y2NfbG8sIHNjYwoJ c19tb3ZfYjMyCXZjY19oaSwgMAoJc19jYnJhbmNoX3ZjY3oJLkw0Cgl2X3dyaXRlbGFuZV9i MzIJdjQsIHMwLCAwCgl2X3dyaXRlbGFuZV9iMzIJdjUsIHMxLCAwCglzX21vdl9iNjQJZXhl YywgMQoJdl9hbmRfYjMyCXY0LCAtMSwgdjQKCXZfYW5kX2IzMgl2NSwgNjU1MzUsIHY1Cgl2 X29yX2IzMgl2NCwgMCwgdjQKCXZfb3JfYjMyCXY1LCA4MDkwNDE5MjAsIHY1Ci5MNDoKCXNf bHNobF9iMzIJczIsIHMyLCAzMQoJc19sc2hyX2IzMglzMiwgczIsIDMxCjsgMTcgInRlc3Qu YyIgMQoJOyBmb3VyCjsgMCAiIiAyCglzX2dldHBjX2I2NAlzWzEyOjEzXQoJc19hZGRfdTMy CXMxMiwgczEyLCBiQHJlbDMyQGxvKzQKCXNfYWRkY191MzIJczEzLCBzMTMsIGJAcmVsMzJA aGkrNAoJdl93cml0ZWxhbmVfYjMyCXY0LCBzMTIsIDAKCXZfd3JpdGVsYW5lX2IzMgl2NSwg czEzLCAwCgl2X3dyaXRlbGFuZV9iMzIJdjAsIHMyLCAwCglzX21vdl9iNjQJZXhlYywgMQoJ ZmxhdF9zdG9yZV9kd29yZAl2WzQ6NV0sIHYwIGdsYwo7IDE5ICJ0ZXN0LmMiIDEKCTsgZml2 ZQo7IDAgIiIgMgoJc19jbXBfZXFfdTMyCXMyLCAwCglzX2NicmFuY2hfc2NjMQkuTDUKOyAy MSAidGVzdC5jIiAxCgk7dHJ1ZQo7IDAgIiIgMgouTDM6CglzX3N1Yl91MzIJczE2LCBzMTQs IDgKCXNfc3ViYl91MzIJczE3LCBzMTUsIDAKCXNfbW92X2I2NAlleGVjLCAtMQoJdl9sc2hs cmV2X2IzMgl2MywgMiwgdjEKCXZfbW92X2IzMgl2NCwgczE2Cgl2X21vdl9iMzIJdjUsIHMx NwoJdl9hZGRfdTMyCXY0LCB2Y2MsIHYzLCB2NAoJdl9hZGRjX3UzMgl2NSwgdmNjLCAwLCB2 NSwgdmNjCglzX21vdl9iNjQJZXhlYywgMwoJZmxhdF9sb2FkX2R3b3JkCXY2LCB2WzQ6NV0K CXNfd2FpdGNudAkwCgl2X3JlYWRsYW5lX2IzMiBzMTQsIHY2LCAwCgl2X3JlYWRsYW5lX2Iz MiBzMTUsIHY2LCAxCglzX3NldHBjX2I2NAlzWzE4OjE5XQouTDU6CjsgMjMgInRlc3QuYyIg MQoJO2ZhbHNlCjsgMCAiIiAyCglzX2JyYW5jaAkuTDMKLkxGRTE6Cgkuc2l6ZQliYXIsIC4t YmFyCgkuZ2xvYmwJYgoJLmJzcwoJLmFsaWduCTE2CgkudHlwZQliLCBAb2JqZWN0Cgkuc2l6 ZQliLCA0CmI6CgkuemVybwk0CgkuZ2xvYmwJcHRyCgkuYWxpZ24JMTYKCS50eXBlCXB0ciwg QG9iamVjdAoJLnNpemUJcHRyLCA4CnB0cjoKCS56ZXJvCTgKCS5zZWN0aW9uCS5kZWJ1Z19m cmFtZSwiIixAcHJvZ2JpdHMKLkxmcmFtZTA6CgkuNGJ5dGUJLkxFQ0lFMC0uTFNDSUUwCi5M U0NJRTA6CgkuNGJ5dGUJMHhmZmZmZmZmZgoJLmJ5dGUJMHgzCgkuc3RyaW5nCSIiCgkuYnl0 ZQkweDEKCS5ieXRlCTB4NAoJLmJ5dGUJMHgxMAoJLmJ5dGUJMHhmCgkuYnl0ZQkweGEKCS5i eXRlCTB4OTIKCS5ieXRlCTB4MzEKCS5ieXRlCTAKCS5ieXRlCTB4OAoJLmJ5dGUJMHgyMAoJ LmJ5dGUJMHgyNAoJLmJ5dGUJMHg5MgoJLmJ5dGUJMHgzMAoJLmJ5dGUJMAoJLmJ5dGUJMHgy MgoJLmJ5dGUJMHgxMAoJLmJ5dGUJMHgxMAoJLmJ5dGUJMHhhCgkuYnl0ZQkweDkyCgkuYnl0 ZQkweDMzCgkuYnl0ZQkwCgkuYnl0ZQkweDgKCS5ieXRlCTB4MjAKCS5ieXRlCTB4MjQKCS5i eXRlCTB4OTIKCS5ieXRlCTB4MzIKCS5ieXRlCTAKCS5ieXRlCTB4MjIKCS5hbGlnbgk4Ci5M RUNJRTA6Ci5MU0ZERTA6CgkuNGJ5dGUJLkxFRkRFMC0uTEFTRkRFMAouTEFTRkRFMDoKCS40 Ynl0ZQkuTGZyYW1lMAoJLjhieXRlCS5MRkIwCgkuOGJ5dGUJLkxGRTAtLkxGQjAKCS5ieXRl CTB4NAoJLjRieXRlCS5MQ0ZJMC0uTEZCMAoJLmJ5dGUJMHhhZQoJLmJ5dGUJMAoJLmJ5dGUJ MHhhZgoJLmJ5dGUJMHgxCgkuYnl0ZQkweDQKCS40Ynl0ZQkuTENGSTEtLkxDRkkwCgkuYnl0 ZQkweGYKCS5ieXRlCTB4YwoJLmJ5dGUJMHg5MgoJLmJ5dGUJMHgyZgoJLmJ5dGUJMAoJLmJ5 dGUJMHg4CgkuYnl0ZQkweDIwCgkuYnl0ZQkweDI0CgkuYnl0ZQkweDkyCgkuYnl0ZQkweDJl CgkuYnl0ZQkwCgkuYnl0ZQkweDIyCgkuYnl0ZQkweDM4CgkuYnl0ZQkweDFjCgkuYWxpZ24J OAouTEVGREUwOgouTFNGREUyOgoJLjRieXRlCS5MRUZERTItLkxBU0ZERTIKLkxBU0ZERTI6 CgkuNGJ5dGUJLkxmcmFtZTAKCS44Ynl0ZQkuTEZCMQoJLjhieXRlCS5MRkUxLS5MRkIxCgku Ynl0ZQkweDQKCS40Ynl0ZQkuTENGSTItLkxGQjEKCS5ieXRlCTB4YWUKCS5ieXRlCTAKCS5i eXRlCTB4YWYKCS5ieXRlCTB4MQoJLmJ5dGUJMHg0CgkuNGJ5dGUJLkxDRkkzLS5MQ0ZJMgoJ LmJ5dGUJMHhmCgkuYnl0ZQkweGMKCS5ieXRlCTB4OTIKCS5ieXRlCTB4MmYKCS5ieXRlCTAK CS5ieXRlCTB4OAoJLmJ5dGUJMHgyMAoJLmJ5dGUJMHgyNAoJLmJ5dGUJMHg5MgoJLmJ5dGUJ MHgyZQoJLmJ5dGUJMAoJLmJ5dGUJMHgyMgoJLmJ5dGUJMHgzOAoJLmJ5dGUJMHgxYwoJLmFs aWduCTgKLkxFRkRFMjoKCS5pZGVudAkiR0NDOiAoR05VKSAxMy4wLjAgMjAyMjExMjEgKGV4 cGVyaW1lbnRhbCkiCg== --------------fCKtOlnSGi2NjxelAPd5sluD--