From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id A2B25383B686 for ; Tue, 13 Dec 2022 17:44:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A2B25383B686 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,242,1665475200"; d="diff'?scan'208";a="92768427" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 13 Dec 2022 09:44:32 -0800 IronPort-SDR: C0QTvycRt/Ey6PVahVbSXY9mnbtGK3xKd6TqzlOgC9+1DeOzIcQ+pnIiMRu6c5WGu00OPoThlQ Klo6NLH30hG0N5SwUM30bs5yq/7fb7DwfCbzyF1bEs0x+Svowr9mvDATRzxSaCECONouIxWUHu 5PAO1CbjpDp4JHzIQVGN6NJHlmYqI161/VA7b1RVCEC38DlVNCy/p3iUjA5BzeJYegr9KnhLmw WPpKGhJlwLmXJOKXCo30gJt88RCQwF2YCZVU3NcNF47GUFN+L6lEz4IaWf3u0xsoNQ1qur/V3K 2AY= Content-Type: multipart/mixed; boundary="------------hurSSrlFaBuOgYBtep2KLk5U" Message-ID: <857e44cb-92ce-7f1d-c036-579d2e345107@codesourcery.com> Date: Tue, 13 Dec 2022 18:44:27 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.1 Content-Language: en-US To: Jakub Jelinek , gcc-patches From: Tobias Burnus Subject: [Patch] OpenMP: Parse align clause in allocate directive in C/C++ X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-14.mgc.mentorg.com (139.181.222.14) 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,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: --------------hurSSrlFaBuOgYBtep2KLk5U Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable We have a working parsing support for the 'allocate' directive (failing immediately with a sorry after parsing). To be in line with the rest of the allocat(e,or) etc. handling, it makes sense to take care of 'align' as well, which is this patch does - it still fails with a 'sorry' after parsing. 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 --------------hurSSrlFaBuOgYBtep2KLk5U Content-Type: text/x-patch; charset="UTF-8"; name="align-c.diff" Content-Disposition: attachment; filename="align-c.diff" Content-Transfer-Encoding: base64 T3Blbk1QOiBQYXJzZSBhbGlnbiBjbGF1c2UgaW4gYWxsb2NhdGUgZGlyZWN0aXZlIGluIEMv QysrCgpnY2MvYy9DaGFuZ2VMb2c6CgoJKiBjLXBhcnNlci5jYyAoY19wYXJzZXJfb21wX2Fs bG9jYXRlKTogUGFyc2UgYWxpZ24KCWNsYXVzZSBhbmQgY2hlY2sgZm9yIHJlc3RyaWN0aW9u cy4KCmdjYy9jcC9DaGFuZ2VMb2c6CgoJKiBwYXJzZXIuY2MgKGNwX3BhcnNlcl9vbXBfYWxs b2NhdGUpOiBQYXJzZSBhbGlnbgoJY2xhdXNlLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6 CgoJKiBjLWMrKy1jb21tb24vZ29tcC9hbGxvY2F0ZS01LmM6IEV4dGVuZCBmb3IgYWxpZ24g Y2xhdXNlLgoKIGdjYy9jL2MtcGFyc2VyLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgODggKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogZ2NjL2NwL3BhcnNlci5jYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1OCArKysrKysrKysrKysrLS0tLS0KIGdj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvYWxsb2NhdGUtNS5jIHwgMzYgKysrKysr KysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE0NCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvYy9jLXBhcnNlci5jYyBiL2djYy9jL2MtcGFyc2Vy LmNjCmluZGV4IDFiYmIzOWY5YjA4Li42MmMzMDI3NDhkZCAxMDA2NDQKLS0tIGEvZ2NjL2Mv Yy1wYXJzZXIuY2MKKysrIGIvZ2NjL2MvYy1wYXJzZXIuY2MKQEAgLTE4ODE5LDMyICsxODgx OSw3MSBAQCBjX3BhcnNlcl9vYWNjX3dhaXQgKGxvY2F0aW9uX3QgbG9jLCBjX3BhcnNlciAq cGFyc2VyLCBjaGFyICpwX25hbWUpCiAgIHJldHVybiBzdG10OwogfQogCi0vKiBPcGVuTVAg NS4wOgotICAgIyBwcmFnbWEgb21wIGFsbG9jYXRlIChsaXN0KSAgW2FsbG9jYXRvcihhbGxv Y2F0b3IpXSAgKi8KKy8qIE9wZW5NUCA1Lng6CisgICAjIHByYWdtYSBvbXAgYWxsb2NhdGUg KGxpc3QpICBjbGF1c2VzCisKKyAgIE9wZW5NUCA1LjAgY2xhdXNlOgorICAgYWxsb2NhdG9y IChvbXBfYWxsb2NhdG9yX2hhbmRsZV90IGV4cHJlc3Npb24pCisKKyAgIE9wZW5NUCA1LjEg YWRkaXRpb25hbCBjbGF1c2U6CisgICBhbGlnbiAoaW50IGV4cHJlc3Npb24pXSAqLwogCiBz dGF0aWMgdm9pZAogY19wYXJzZXJfb21wX2FsbG9jYXRlIChsb2NhdGlvbl90IGxvYywgY19w YXJzZXIgKnBhcnNlcikKIHsKKyAgdHJlZSBhbGlnbm1lbnQgPSBOVUxMX1RSRUU7CiAgIHRy ZWUgYWxsb2NhdG9yID0gTlVMTF9UUkVFOwogICB0cmVlIG5sID0gY19wYXJzZXJfb21wX3Zh cl9saXN0X3BhcmVucyAocGFyc2VyLCBPTVBfQ0xBVVNFX0FMTE9DQVRFLCBOVUxMX1RSRUUp OwotICBpZiAoY19wYXJzZXJfbmV4dF90b2tlbl9pcyAocGFyc2VyLCBDUFBfQ09NTUEpCi0g ICAgICAmJiBjX3BhcnNlcl9wZWVrXzJuZF90b2tlbiAocGFyc2VyKS0+dHlwZSA9PSBDUFBf TkFNRSkKLSAgICBjX3BhcnNlcl9jb25zdW1lX3Rva2VuIChwYXJzZXIpOwotICBpZiAoY19w YXJzZXJfbmV4dF90b2tlbl9pcyAocGFyc2VyLCBDUFBfTkFNRSkpCisgIGRvCiAgICAgewor ICAgICAgaWYgKGNfcGFyc2VyX25leHRfdG9rZW5faXMgKHBhcnNlciwgQ1BQX0NPTU1BKQor CSAgJiYgY19wYXJzZXJfcGVla18ybmRfdG9rZW4gKHBhcnNlciktPnR5cGUgPT0gQ1BQX05B TUUpCisJY19wYXJzZXJfY29uc3VtZV90b2tlbiAocGFyc2VyKTsKKyAgICAgIGlmICghY19w YXJzZXJfbmV4dF90b2tlbl9pcyAocGFyc2VyLCBDUFBfTkFNRSkpCisJYnJlYWs7CiAgICAg ICBtYXRjaGluZ19wYXJlbnMgcGFyZW5zOwogICAgICAgY29uc3QgY2hhciAqcCA9IElERU5U SUZJRVJfUE9JTlRFUiAoY19wYXJzZXJfcGVla190b2tlbiAocGFyc2VyKS0+dmFsdWUpOwog ICAgICAgY19wYXJzZXJfY29uc3VtZV90b2tlbiAocGFyc2VyKTsKLSAgICAgIGlmIChzdHJj bXAgKCJhbGxvY2F0b3IiLCBwKSAhPSAwKQotCWVycm9yX2F0IChjX3BhcnNlcl9wZWVrX3Rv a2VuIChwYXJzZXIpLT5sb2NhdGlvbiwKLQkJICAiZXhwZWN0ZWQgJTxhbGxvY2F0b3IlPiIp OwotICAgICAgZWxzZSBpZiAocGFyZW5zLnJlcXVpcmVfb3BlbiAocGFyc2VyKSkKKyAgICAg IGxvY2F0aW9uX3QgZXhwcl9sb2MgPSBjX3BhcnNlcl9wZWVrX3Rva2VuIChwYXJzZXIpLT5s b2NhdGlvbjsKKyAgICAgIGlmIChzdHJjbXAgKCJhbGlnbiIsIHApICE9IDAgJiYgc3RyY21w ICgiYWxsb2NhdG9yIiwgcCkgIT0gMCkKIAl7Ci0JICBsb2NhdGlvbl90IGV4cHJfbG9jID0g Y19wYXJzZXJfcGVla190b2tlbiAocGFyc2VyKS0+bG9jYXRpb247Ci0JICBjX2V4cHIgZXhw ciA9IGNfcGFyc2VyX2V4cHJfbm9fY29tbWFzIChwYXJzZXIsIE5VTEwpOwotCSAgZXhwciA9 IGNvbnZlcnRfbHZhbHVlX3RvX3J2YWx1ZSAoZXhwcl9sb2MsIGV4cHIsIGZhbHNlLCB0cnVl KTsKLQkgIGFsbG9jYXRvciA9IGV4cHIudmFsdWU7Ci0JICBhbGxvY2F0b3IgPSBjX2Z1bGx5 X2ZvbGQgKGFsbG9jYXRvciwgZmFsc2UsIE5VTEwpOworCSAgZXJyb3JfYXQgKGNfcGFyc2Vy X3BlZWtfdG9rZW4gKHBhcnNlciktPmxvY2F0aW9uLAorCQkgICAgImV4cGVjdGVkICU8YWxs b2NhdG9yJT4gb3IgJTxhbGlnbiU+Iik7CisJICBicmVhazsKKwl9CisgICAgICBpZiAoIXBh cmVucy5yZXF1aXJlX29wZW4gKHBhcnNlcikpCisJYnJlYWs7CisKKyAgICAgIGNfZXhwciBl eHByID0gY19wYXJzZXJfZXhwcl9ub19jb21tYXMgKHBhcnNlciwgTlVMTCk7CisgICAgICBl eHByID0gY29udmVydF9sdmFsdWVfdG9fcnZhbHVlIChleHByX2xvYywgZXhwciwgZmFsc2Us IHRydWUpOworICAgICAgZXhwcl9sb2MgPSBjX3BhcnNlcl9wZWVrX3Rva2VuIChwYXJzZXIp LT5sb2NhdGlvbjsKKyAgICAgIGlmIChwWzJdID09ICdpJyAmJiBhbGlnbm1lbnQpCisJewor CSAgZXJyb3JfYXQgKGV4cHJfbG9jLCAidG9vIG1hbnkgJXFzIGNsYXVzZXMiLCAiYWxpZ24i KTsKKwkgIGJyZWFrOworCX0KKyAgICAgIGVsc2UgaWYgKHBbMl0gPT0gJ2knKQorCXsKKwkg IGFsaWdubWVudCA9IGNfZnVsbHlfZm9sZCAoZXhwci52YWx1ZSwgZmFsc2UsIE5VTEwpOwor CSAgaWYgKFRSRUVfQ09ERSAoYWxpZ25tZW50KSAhPSBJTlRFR0VSX0NTVAorCSAgICAgIHx8 ICFJTlRFR1JBTF9UWVBFX1AgKFRSRUVfVFlQRSAoYWxpZ25tZW50KSkKKwkgICAgICB8fCB0 cmVlX2ludF9jc3Rfc2duIChhbGlnbm1lbnQpICE9IDEKKwkgICAgICB8fCAhaW50ZWdlcl9w b3cycCAoYWxpZ25tZW50KSkKKwkgICAgeworCSAgICAgIGVycm9yX2F0IChleHByX2xvYywg IiU8YWxpZ24lPiBjbGF1c2UgYXJndW1lbnQgbmVlZHMgdG8gYmUgIgorCQkJCSAgInBvc2l0 aXZlIGNvbnN0YW50IHBvd2VyIG9mIHR3byBpbnRlZ2VyICIKKwkJCQkgICJleHByZXNzaW9u Iik7CisJICAgICAgYWxpZ25tZW50ID0gTlVMTF9UUkVFOworCSAgICB9CisJfQorICAgICAg ZWxzZSBpZiAoYWxsb2NhdG9yKQorCXsKKwkgIGVycm9yX2F0IChleHByX2xvYywgInRvbyBt YW55ICVxcyBjbGF1c2VzIiwgImFsbG9jYXRvciIpOworCSAgYnJlYWs7CisJfQorICAgICAg ZWxzZQorCXsKKwkgIGFsbG9jYXRvciA9IGNfZnVsbHlfZm9sZCAoZXhwci52YWx1ZSwgZmFs c2UsIE5VTEwpOwogCSAgdHJlZSBvcmlnX3R5cGUKIAkgICAgPSBleHByLm9yaWdpbmFsX3R5 cGUgPyBleHByLm9yaWdpbmFsX3R5cGUgOiBUUkVFX1RZUEUgKGFsbG9jYXRvcik7CiAJICBv cmlnX3R5cGUgPSBUWVBFX01BSU5fVkFSSUFOVCAob3JpZ190eXBlKTsKQEAgLTE4ODUzLDIw ICsxODg5MiwyMyBAQCBjX3BhcnNlcl9vbXBfYWxsb2NhdGUgKGxvY2F0aW9uX3QgbG9jLCBj X3BhcnNlciAqcGFyc2VyKQogCSAgICAgIHx8IFRZUEVfTkFNRSAob3JpZ190eXBlKQogCQkg IT0gZ2V0X2lkZW50aWZpZXIgKCJvbXBfYWxsb2NhdG9yX2hhbmRsZV90IikpCiAJICAgIHsK LQkgICAgICBlcnJvcl9hdCAoZXhwcl9sb2MsICIlPGFsbG9jYXRvciU+IGNsYXVzZSBhbGxv Y2F0b3IgZXhwcmVzc2lvbiAiCi0JCQkJImhhcyB0eXBlICVxVCByYXRoZXIgdGhhbiAiCi0J CQkJIiU8b21wX2FsbG9jYXRvcl9oYW5kbGVfdCU+IiwKLQkJCQlUUkVFX1RZUEUgKGFsbG9j YXRvcikpOworCSAgICAgIGVycm9yX2F0IChleHByX2xvYywKKwkJCSIlPGFsbG9jYXRvciU+ IGNsYXVzZSBhbGxvY2F0b3IgZXhwcmVzc2lvbiBoYXMgdHlwZSAiCisJCQkiJXFUIHJhdGhl ciB0aGFuICU8b21wX2FsbG9jYXRvcl9oYW5kbGVfdCU+IiwKKwkJCVRSRUVfVFlQRSAoYWxs b2NhdG9yKSk7CiAJICAgICAgYWxsb2NhdG9yID0gTlVMTF9UUkVFOwogCSAgICB9Ci0JICBw YXJlbnMuc2tpcF91bnRpbF9mb3VuZF9jbG9zZSAocGFyc2VyKTsKIAl9Ci0gICAgfQorICAg ICAgcGFyZW5zLnNraXBfdW50aWxfZm91bmRfY2xvc2UgKHBhcnNlcik7CisgICAgfSB3aGls ZSAodHJ1ZSk7CiAgIGNfcGFyc2VyX3NraXBfdG9fcHJhZ21hX2VvbCAocGFyc2VyKTsKIAot ICBpZiAoYWxsb2NhdG9yKQorICBpZiAoYWxsb2NhdG9yIHx8IGFsaWdubWVudCkKICAgICBm b3IgKHRyZWUgYyA9IG5sOyBjICE9IE5VTExfVFJFRTsgYyA9IE9NUF9DTEFVU0VfQ0hBSU4g KGMpKQotICAgICAgT01QX0NMQVVTRV9BTExPQ0FURV9BTExPQ0FUT1IgKGMpID0gYWxsb2Nh dG9yOworICAgICAgeworCU9NUF9DTEFVU0VfQUxMT0NBVEVfQUxMT0NBVE9SIChjKSA9IGFs bG9jYXRvcjsKKwlPTVBfQ0xBVVNFX0FMTE9DQVRFX0FMSUdOIChjKSA9IGFsaWdubWVudDsK KyAgICAgIH0KIAogICBzb3JyeV9hdCAobG9jLCAiJTwjcHJhZ21hIG9tcCBhbGxvY2F0ZSU+ IG5vdCB5ZXQgc3VwcG9ydGVkIik7CiB9CmRpZmYgLS1naXQgYS9nY2MvY3AvcGFyc2VyLmNj IGIvZ2NjL2NwL3BhcnNlci5jYwppbmRleCA0Nzk4YWFlMWZiYi4uZDI4NDAyMjI2NmYgMTAw NjQ0Ci0tLSBhL2djYy9jcC9wYXJzZXIuY2MKKysrIGIvZ2NjL2NwL3BhcnNlci5jYwpAQCAt NDEzOTgsMzYgKzQxMzk4LDY0IEBAIHN0YXRpYyB2b2lkCiBjcF9wYXJzZXJfb21wX2FsbG9j YXRlIChjcF9wYXJzZXIgKnBhcnNlciwgY3BfdG9rZW4gKnByYWdtYV90b2spCiB7CiAgIHRy ZWUgYWxsb2NhdG9yID0gTlVMTF9UUkVFOworICB0cmVlIGFsaWdubWVudCA9IE5VTExfVFJF RTsKICAgbG9jYXRpb25fdCBsb2MgPSBwcmFnbWFfdG9rLT5sb2NhdGlvbjsKICAgdHJlZSBu bCA9IGNwX3BhcnNlcl9vbXBfdmFyX2xpc3QgKHBhcnNlciwgT01QX0NMQVVTRV9BTExPQ0FU RSwgTlVMTF9UUkVFKTsKIAotICBpZiAoY3BfbGV4ZXJfbmV4dF90b2tlbl9pcyAocGFyc2Vy LT5sZXhlciwgQ1BQX0NPTU1BKQotICAgICAgJiYgY3BfbGV4ZXJfbnRoX3Rva2VuX2lzIChw YXJzZXItPmxleGVyLCAyLCBDUFBfTkFNRSkpCi0gICAgY3BfbGV4ZXJfY29uc3VtZV90b2tl biAocGFyc2VyLT5sZXhlcik7Ci0KLSAgaWYgKGNwX2xleGVyX25leHRfdG9rZW5faXMgKHBh cnNlci0+bGV4ZXIsIENQUF9OQU1FKSkKKyAgZG8KICAgICB7CisgICAgICBpZiAoY3BfbGV4 ZXJfbmV4dF90b2tlbl9pcyAocGFyc2VyLT5sZXhlciwgQ1BQX0NPTU1BKQorCSAgJiYgY3Bf bGV4ZXJfbnRoX3Rva2VuX2lzIChwYXJzZXItPmxleGVyLCAyLCBDUFBfTkFNRSkpCisJY3Bf bGV4ZXJfY29uc3VtZV90b2tlbiAocGFyc2VyLT5sZXhlcik7CisKKyAgICAgIGlmICghY3Bf bGV4ZXJfbmV4dF90b2tlbl9pcyAocGFyc2VyLT5sZXhlciwgQ1BQX05BTUUpKQorCWJyZWFr OwogICAgICAgbWF0Y2hpbmdfcGFyZW5zIHBhcmVuczsKICAgICAgIHRyZWUgaWQgPSBjcF9s ZXhlcl9wZWVrX3Rva2VuIChwYXJzZXItPmxleGVyKS0+dS52YWx1ZTsKICAgICAgIGNvbnN0 IGNoYXIgKnAgPSBJREVOVElGSUVSX1BPSU5URVIgKGlkKTsKICAgICAgIGxvY2F0aW9uX3Qg Y2xvYyA9IGNwX2xleGVyX3BlZWtfdG9rZW4gKHBhcnNlci0+bGV4ZXIpLT5sb2NhdGlvbjsK ICAgICAgIGNwX2xleGVyX2NvbnN1bWVfdG9rZW4gKHBhcnNlci0+bGV4ZXIpOwotICAgICAg aWYgKHN0cmNtcCAocCwgImFsbG9jYXRvciIpICE9IDApCi0JZXJyb3JfYXQgKGNsb2MsICJl eHBlY3RlZCAlPGFsbG9jYXRvciU+Iik7Ci0gICAgICBlbHNlIGlmIChwYXJlbnMucmVxdWly ZV9vcGVuIChwYXJzZXIpKQorICAgICAgaWYgKHN0cmNtcCAocCwgImFsbG9jYXRvciIpICE9 IDAgJiYgc3RyY21wIChwLCAiYWxpZ24iKSAhPSAwKQogCXsKLQkgIGFsbG9jYXRvciA9IGNw X3BhcnNlcl9hc3NpZ25tZW50X2V4cHJlc3Npb24gKHBhcnNlcik7Ci0JICBpZiAoYWxsb2Nh dG9yID09IGVycm9yX21hcmtfbm9kZSkKLQkgICAgYWxsb2NhdG9yID0gTlVMTF9UUkVFOwot CSAgcGFyZW5zLnJlcXVpcmVfY2xvc2UgKHBhcnNlcik7CisJICBlcnJvcl9hdCAoY2xvYywg ImV4cGVjdGVkICU8YWxsb2NhdG9yJT4gb3IgJTxhbGlnbiU+Iik7CisJICBicmVhazsKIAl9 Ci0gICAgfQorICAgICAgaWYgKCFwYXJlbnMucmVxdWlyZV9vcGVuIChwYXJzZXIpKQorCWJy ZWFrOworICAgICAgdHJlZSBleHByID0gY3BfcGFyc2VyX2Fzc2lnbm1lbnRfZXhwcmVzc2lv biAocGFyc2VyKTsKKyAgICAgIGlmIChwWzJdID09ICdpJyAmJiBhbGlnbm1lbnQpCisJewor CSAgZXJyb3JfYXQgKGNsb2MsICJ0b28gbWFueSAlcXMgY2xhdXNlcyIsICJhbGlnbiIpOwor CSAgYnJlYWs7CisJfQorICAgICAgZWxzZSBpZiAocFsyXSA9PSAnaScpCisJeworCSAgaWYg KGV4cHIgIT0gZXJyb3JfbWFya19ub2RlKQorCSAgICBhbGlnbm1lbnQgPSBleHByOworCX0K KyAgICAgIGVsc2UgaWYgKGFsbG9jYXRvcikKKwl7CisJICBlcnJvcl9hdCAoY2xvYywgInRv byBtYW55ICVxcyBjbGF1c2VzIiwgImFsbG9jYXRvciIpOworCSAgYnJlYWs7CisJfQorICAg ICAgZWxzZQorCXsKKwkgIGlmIChleHByICE9IGVycm9yX21hcmtfbm9kZSkKKwkgICAgYWxs b2NhdG9yID0gZXhwcjsKKwl9CisgICAgICBwYXJlbnMucmVxdWlyZV9jbG9zZSAocGFyc2Vy KTsKKyAgICB9IHdoaWxlICh0cnVlKTsKICAgY3BfcGFyc2VyX3JlcXVpcmVfcHJhZ21hX2Vv bCAocGFyc2VyLCBwcmFnbWFfdG9rKTsKIAotICBpZiAoYWxsb2NhdG9yKQorICBpZiAoYWxs b2NhdG9yIHx8IGFsaWdubWVudCkKICAgICBmb3IgKHRyZWUgYyA9IG5sOyBjICE9IE5VTExf VFJFRTsgYyA9IE9NUF9DTEFVU0VfQ0hBSU4gKGMpKQotICAgICAgT01QX0NMQVVTRV9BTExP Q0FURV9BTExPQ0FUT1IgKGMpID0gYWxsb2NhdG9yOworICAgICAgeworCU9NUF9DTEFVU0Vf QUxMT0NBVEVfQUxMT0NBVE9SIChjKSA9IGFsbG9jYXRvcjsKKwlPTVBfQ0xBVVNFX0FMTE9D QVRFX0FMSUdOIChjKSA9IGFsaWdubWVudDsKKyAgICAgIH0KIAorICAvKiBhbGlnbi9hbGxv Y2F0b3IgbmVlZHMgc2FtZSBjaGVjayBhcyB0aGUgbW9kaWZpZXJzIHRvIHRoZQorICAgICAn YWxsb2NhdG9yJyBjbGF1c2UgaW4gc2VtYW50aWNzLmNjJ3MgZmluaXNoX29tcF9jbGF1c2Vz LiAgKi8KICAgc29ycnlfYXQgKGxvYywgIiU8I3ByYWdtYSBvbXAgYWxsb2NhdGUlPiBub3Qg eWV0IHN1cHBvcnRlZCIpOwogfQogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9nb21wL2FsbG9jYXRlLTUuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2dvbXAvYWxsb2NhdGUtNS5jCmluZGV4IDM0ZGNiNDhjM2Q3Li45OTdlN2YwNjg5NiAxMDA2 NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9hbGxvY2F0ZS01LmMK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9hbGxvY2F0ZS01LmMKQEAg LTM5LDMgKzM5LDM5IEBAIGJhciAoKQogI3ByYWdtYSBvbXAgYWxsb2NhdGUoYSkgYWxsb2Nh dG9yKGIpICAvKiB7IGRnLWVycm9yICInYWxsb2NhdG9yJyBjbGF1c2UgYWxsb2NhdG9yIGV4 cHJlc3Npb24gaGFzIHR5cGUgJ2ludCcgcmF0aGVyIHRoYW4gJ29tcF9hbGxvY2F0b3JfaGFu ZGxlX3QnIiAidG9kbzogY3Avc2VtYW50aWNzLmMiIHsgeGZhaWwgYysrIH0gfSAqLwogICAv KiB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAnI3ByYWdtYSBvbXAgYWxs b2NhdGUnIG5vdCB5ZXQgc3VwcG9ydGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov CiB9CisKKwordm9pZAorYWxpZ25fdGVzdCAoKQoreworICBpbnQgaTsKKyAgI3ByYWdtYSBv bXAgYWxsb2NhdGUoaSkgYWxsb2NhdG9yKG9tcF9kZWZhdWx0X21lbV9hbGxvYyksIGFsaWdu KDMyKQorICAvKiB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAnI3ByYWdt YSBvbXAgYWxsb2NhdGUnIG5vdCB5ZXQgc3VwcG9ydGVkIiAiIiB7IHRhcmdldCAqLSotKiB9 IC4tMSB9ICovCisgICNwcmFnbWEgb21wIGFsbG9jYXRlKGkpIGFsaWduICggMzIgKSxhbGxv Y2F0b3Iob21wX2RlZmF1bHRfbWVtX2FsbG9jKQorICAvKiB7IGRnLW1lc3NhZ2UgInNvcnJ5 LCB1bmltcGxlbWVudGVkOiAnI3ByYWdtYSBvbXAgYWxsb2NhdGUnIG5vdCB5ZXQgc3VwcG9y dGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgICNwcmFnbWEgb21wIGFsbG9j YXRlKGkpLGFsbG9jYXRvcihvbXBfZGVmYXVsdF9tZW1fYWxsb2MpIGFsaWduKDMyKQorICAv KiB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAnI3ByYWdtYSBvbXAgYWxs b2NhdGUnIG5vdCB5ZXQgc3VwcG9ydGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov CisgICNwcmFnbWEgb21wIGFsbG9jYXRlKGkpIGFsaWduICggMzIgKSBhbGxvY2F0b3Iob21w X2RlZmF1bHRfbWVtX2FsbG9jKQorICAvKiB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxl bWVudGVkOiAnI3ByYWdtYSBvbXAgYWxsb2NhdGUnIG5vdCB5ZXQgc3VwcG9ydGVkIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisKKyAgI3ByYWdtYSBvbXAgYWxsb2NhdGUoaSkg YWxsb2NhdG9yICggb21wX2hpZ2hfYndfbWVtX2FsbG9jICksIGFsaWduICggMzIgKSBhbGxv Y2F0b3Iob21wX2RlZmF1bHRfbWVtX2FsbG9jKQorICAvKiB7IGRnLWVycm9yICJ0b28gbWFu eSAnYWxsb2NhdG9yJyBjbGF1c2VzIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisg IC8qIHsgZGctZXJyb3IgImV4cGVjdGVkIGVuZCBvZiBsaW5lIGJlZm9yZSAnXFwpJyB0b2tl biIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTIgfSAqLworICAvKiB7IGRnLW1lc3NhZ2UgInNv cnJ5LCB1bmltcGxlbWVudGVkOiAnI3ByYWdtYSBvbXAgYWxsb2NhdGUnIG5vdCB5ZXQgc3Vw cG9ydGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMyB9ICovCisgICNwcmFnbWEgb21wIGFs bG9jYXRlKGkpIGFsaWduICggMzIgKSwgYWxpZ24oMzIpIGFsbG9jYXRvcihvbXBfZGVmYXVs dF9tZW1fYWxsb2MpCisgIC8qIHsgZGctZXJyb3IgInRvbyBtYW55ICdhbGlnbicgY2xhdXNl cyIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICAvKiB7IGRnLWVycm9yICJleHBl Y3RlZCBlbmQgb2YgbGluZSBiZWZvcmUgJ1xcKScgdG9rZW4iICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0yIH0gKi8KKyAgLyogeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDog JyNwcmFnbWEgb21wIGFsbG9jYXRlJyBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTMgfSAqLworfQorCit2b2lkCithbGlnbl90ZXN0MiAoKQoreworICBpbnQg aTsKKyAgI3ByYWdtYSBvbXAgYWxsb2NhdGUoaSkgYWxpZ24gKDMyLjApICAvKiB7IGRnLWVy cm9yICInYWxpZ24nIGNsYXVzZSBhcmd1bWVudCBuZWVkcyB0byBiZSBwb3NpdGl2ZSBjb25z dGFudCBwb3dlciBvZiB0d28gaW50ZWdlciBleHByZXNzaW9uIiAidG9kbzogY3Avc2VtYW50 aWNzLmMiIHsgeGZhaWwgYysrIH0gfSAqLworICAvKiB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1 bmltcGxlbWVudGVkOiAnI3ByYWdtYSBvbXAgYWxsb2NhdGUnIG5vdCB5ZXQgc3VwcG9ydGVk IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgICNwcmFnbWEgb21wIGFsbG9jYXRl KGkpIGFsaWduICggMzEgKSAgLyogeyBkZy1lcnJvciAiJ2FsaWduJyBjbGF1c2UgYXJndW1l bnQgbmVlZHMgdG8gYmUgcG9zaXRpdmUgY29uc3RhbnQgcG93ZXIgb2YgdHdvIGludGVnZXIg ZXhwcmVzc2lvbiIgInRvZG86IGNwL3NlbWFudGljcy5jIiB7IHhmYWlsIGMrKyB9IH0gKi8K KyAgLyogeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJyNwcmFnbWEgb21w IGFsbG9jYXRlJyBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLworICAjcHJhZ21hIG9tcCBhbGxvY2F0ZShpKSBhbGlnbiAoIC0zMiApICAvKiB7IGRn LWVycm9yICInYWxpZ24nIGNsYXVzZSBhcmd1bWVudCBuZWVkcyB0byBiZSBwb3NpdGl2ZSBj b25zdGFudCBwb3dlciBvZiB0d28gaW50ZWdlciBleHByZXNzaW9uIiAidG9kbzogY3Avc2Vt YW50aWNzLmMiIHsgeGZhaWwgYysrIH0gfSAqLworICAvKiB7IGRnLW1lc3NhZ2UgInNvcnJ5 LCB1bmltcGxlbWVudGVkOiAnI3ByYWdtYSBvbXAgYWxsb2NhdGUnIG5vdCB5ZXQgc3VwcG9y dGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCit9Cg== --------------hurSSrlFaBuOgYBtep2KLk5U--