From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 6CD1E3858D37; Tue, 24 Oct 2023 09:15:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6CD1E3858D37 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6CD1E3858D37 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=68.232.137.252 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698138922; cv=none; b=nXXYRvA9K3A+yH7PXfbUSoM30dplculdt7oSUkPIhQiZEdLW4fsqr+RlbK8avGCs0v31T0UaInrGmNQ+YeppfgDVBDEur/Fe29KjnU8PchAlwmN5D7hQzok5qrY5awcRErkfC3DWkusKdPGillm9qrcobiWpLQdN234wZ0dkATU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698138922; c=relaxed/simple; bh=tRwiQbP4/KMJxyt8eIDiYTPYfK4RN4/B2uImCmeS5Lc=; h=Message-ID:Date:MIME-Version:To:From:Subject; b=pvYmgO1a5XE0Mwh+IURSl/biZoYtlcofnHBqLetuvTMeyLGFfHUpXTGA7ad4HikOdlh9gKP499Ni9bDoawy1g379ma0E1fdxS0ElnlLJWU1dUX1SUpowyRvgyPzwIBAAhHXkcF4RQbN3GrZ+p+rZ6uDTVbkNIFbBGP8SGNXGXTY= ARC-Authentication-Results: i=1; server2.sourceware.org X-CSE-ConnectionGUID: M3HDGqPnSmOBruT00kElCg== X-CSE-MsgGUID: BEwRxo3kQX+cFc9tMi/a8A== X-IronPort-AV: E=Sophos;i="6.03,247,1694764800"; d="diff'?scan'208";a="20556166" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 24 Oct 2023 01:15:18 -0800 IronPort-SDR: RV2gXqOfw6C0uupNf7aBXxa9sHcx22poMuTKxXASb9OrXa9FSVPcWm9H0lvgKMpkFe7UHbhv19 EoVqqkxhY0+C28IXt3mVz/EUR9iRC99cVTStJzXv4wcVINXK+zpVA3OpLM74T6MVr3xLQaI50m EcwyL3jh2N+lc2PFtFrH5ZtI3KQbGHmYS+zgSy57Eb/Hc1h2YDG/XUyTmd8algrAo5PstpQVIn Nmxrz4C7iYEjJZNMIE0948fEeFOTVRqiGXGFhqk4m0Gxg5m2fDA7eacLdpZGzJJM9xoWYb0WnH GJA= Content-Type: multipart/mixed; boundary="------------5eZppaFV8UbJFu6oEi6v1HQZ" Message-ID: <056bcafa-6767-42fb-8a3b-8e1dc57a41fa@codesourcery.com> Date: Tue, 24 Oct 2023 11:15:12 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: gcc-patches , fortran From: Tobias Burnus Subject: [Patch] OpenMP/Fortran: Handle unlisted items in 'omp allocators' + exec. 'omp allocate' X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.3 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: --------------5eZppaFV8UbJFu6oEi6v1HQZ Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable This patch assumes that EXEC_OMP_ALLOCATE/EXEC_OMP_ALLOCATORS is/will be la= ter handled as currently done in OG13, https://github.com/gcc-mirror/gcc/blob/devel/omp/gcc-13/gcc/f= ortran/trans-openmp.cc Depending how we want to handle it in mainline, the patch still could make = sense - or parts should be modified, e.g. we might want to handle standard Fortra= n allocation (malloc) and OpenMP one (GOMP_alloc) directly in trans-sstmt.cc; if so, we might wan= t to skip adding another allocate-stmt. - We probably still want to do the 'allocate' and diagnostic= hanlding in openmp.cc in all cases. In any case, we surely need to handle on mainline: * the dump-parse-tree.cc patch is surely needed and without removing the empty entry (n->sym =3D=3D NULL), it needs an additional fix in order n= ot to crash. * Rejecting coarrays in the empty-list case, which presumably makes most sense inside openmp.cc. * * * On mainline, an executable '!$omp allocate' / '!$omp allocators' stops in trans-openmp.cc with a sorry, not yet implemented. However, OG13 has some implementation for executable '!$omp allocate'; trying to merge mainline into OG13, I found the following issues: * -fdump-parse-tree did not dump the clauses (trivial issue) (simple oversight) * The not-specified items should be better handled =3D> done now during resolution in openmp.cc. * * * While -fdump-tree-original can be used to test it, the "sorry" makes it hard to write a testsuite test. Some testcases exist like gfortran.dg/gomp/allocate-5.f90, which contains code similar to the last example, but it is only a parse + 'sorry'-shows-up testcase. (Well, the two new 'error:' cases can be tested and are tested but they are more boring.) * * * The spec states: For !$omp allocators allocate(align(4):a,b) allocate(a,b,c,d) only a and b are allocated with an OpenMP allocator (=E2=86=92 omp_get_defa= ult_allocator()) and alignment of 4. - 'c' and 'd' are allocated in the normal Fortran way. The deprecated works as follows: !$omp allocate(a,b) align(4) !$omp allocate align(16) ! not: no list argument after 'allocate') allocate(a,b,c,d) where a and b will be allocated with an alignment of 4 and the rest, here, c and d, with the settings of the directive without argument list, i.e. c and d are allocated with an alignment of 16. The question is what is supposed to happen for: !$omp allocate(a,b) align(4) allocate(a,b,c,d) Should that use the default allocator for c and d, i.e. the same as !$omp allocate(a,b) align(4) !$omp allocate allocate(a,b,c,d) Or should it use the normal Fortran allocator, following what 'allocators' = does? The spec does not really tell (and that syntax is deprecated in 5.2, remove= d in TR11/OpenMP 6). Thus, GCC now prints an error. However, it would be trivia= l to choose either of the other variants. * * * The attached patch now handles the not-specified items: * It adds them in the last case to the list; namelist->sym =3D=3D NULL is the no-arguments case; this item is also removed, avoiding n->sym =3D=3D NULL special cases later on. * For the first two cases, a new Fortran ALLOCATE statement is created, containing the non-treated items. Comments, suggestions, remarks? 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 --------------5eZppaFV8UbJFu6oEi6v1HQZ Content-Type: text/x-patch; charset="UTF-8"; name="omp-allocators.diff" Content-Disposition: attachment; filename="omp-allocators.diff" Content-Transfer-Encoding: base64 T3Blbk1QOiBIYW5kbGUgdW5saXN0ZWQgaXRlbXMgaW4gJ29tcCBhbGxvY2F0b3JzJyArIGV4 ZWMuICdvbXAgYWxsb2NhdGUnCgpnY2MvZm9ydHJhbi9DaGFuZ2VMb2c6CgoJKiBkdW1wLXBh cnNlLXRyZWUuY2MgKHNob3dfb21wX25vZGUpOiBTaG93IGNsYXVzZXMgZm9yCglFWEVDX09N UF9BTExPQ0FURSBhbmQgRVhFQ19PTVBfQUxMT0NBVE9SUy4KCSogb3Blbm1wLmNjIChyZXNv bHZlX29tcF9jbGF1c2VzKTogUHJvY2VzcyBub25saXN0ZWQgaXRlbXMKCWZvciBFWEVDX09N UF9BTExPQ0FURSBhbmQgRVhFQ19PTVBfQUxMT0NBVE9SUy4KCmdjYy90ZXN0c3VpdGUvQ2hh bmdlTG9nOgoKCSogZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xNC5mOTA6IEFkZCBuZXcg Y2hlY2tzLgoJKiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTUuZjkwOiBSZW1vdmUgaXRl bXMgZnJvbSBhbiBhbGxvY2F0ZS1zdG10Cgl0aGF0IGFyZSBub3QgZXhwbGljaXRseS9pbXBs aWNpdGVkIGxpc3RlZCBpbiAnb21wIGFsbG9jYXRlJy4KCiBnY2MvZm9ydHJhbi9kdW1wLXBh cnNlLXRyZWUuY2MgICAgICAgICAgICAgICAgIHwgICAyICsKIGdjYy9mb3J0cmFuL29wZW5t cC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrKysrKysrKysrKysrKysr KysrKysrLQogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTE0LmY5 MCB8ICA0MSArKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxv Y2F0ZS01LmY5MCAgfCAgIDQgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMo KyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZHVtcC1wYXJz ZS10cmVlLmNjIGIvZ2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjCmluZGV4IDY4MTIy ZTNlNmZkLi4xNDQwNTI0Zjk3MSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vZHVtcC1wYXJz ZS10cmVlLmNjCisrKyBiL2djYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYwpAQCAtMjI0 MSw2ICsyMjQxLDggQEAgc2hvd19vbXBfbm9kZSAoaW50IGxldmVsLCBnZmNfY29kZSAqYykK ICAgICBjYXNlIEVYRUNfT0FDQ19DQUNIRToKICAgICBjYXNlIEVYRUNfT0FDQ19FTlRFUl9E QVRBOgogICAgIGNhc2UgRVhFQ19PQUNDX0VYSVRfREFUQToKKyAgICBjYXNlIEVYRUNfT01Q X0FMTE9DQVRFOgorICAgIGNhc2UgRVhFQ19PTVBfQUxMT0NBVE9SUzoKICAgICBjYXNlIEVY RUNfT01QX0FTU1VNRToKICAgICBjYXNlIEVYRUNfT01QX0NBTkNFTDoKICAgICBjYXNlIEVY RUNfT01QX0NBTkNFTExBVElPTl9QT0lOVDoKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL29w ZW5tcC5jYyBiL2djYy9mb3J0cmFuL29wZW5tcC5jYwppbmRleCAxY2M2NWQ3ZmE0OS4uOTVl MGFhYWZhNTggMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL29wZW5tcC5jYworKysgYi9nY2Mv Zm9ydHJhbi9vcGVubXAuY2MKQEAgLTc5MjQsMTAgKzc5MjQsMTQgQEAgcmVzb2x2ZV9vbXBf Y2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNlcyAqb21wX2NsYXVzZXMs CiAJICAmJiBjb2RlLT5ibG9jay0+bmV4dC0+b3AgPT0gRVhFQ19BTExPQ0FURSkKIAl7CiAJ ICBnZmNfYWxsb2MgKmE7CisJICBnZmNfb21wX25hbWVsaXN0ICpuX251bGwgPSBOVUxMOwog CSAgZm9yIChuID0gb21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0FMTE9DQVRFXTsgbjsg biA9IG4tPm5leHQpCiAJICAgIHsKIAkgICAgICBpZiAobi0+c3ltID09IE5VTEwpCi0JCWNv bnRpbnVlOworCQl7CisJCSAgbl9udWxsID0gbjsKKwkJICBjb250aW51ZTsKKwkJfQogCSAg ICAgIGlmIChuLT5zeW0tPmF0dHIuY29kaW1lbnNpb24pCiAJCWdmY19lcnJvciAoIlVuZXhw ZWN0ZWQgY29hcnJheSAlcXMgaW4gJTxhbGxvY2F0ZSU+IGF0ICVMIiwKIAkJCSAgIG4tPnN5 bS0+bmFtZSwgJm4tPndoZXJlKTsKQEAgLTc5NDAsOCArNzk0NCwxMTIgQEAgcmVzb2x2ZV9v bXBfY2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNlcyAqb21wX2NsYXVz ZXMsCiAJCQkgICAiaW4gdGhlIGFzc29jaWF0ZWQgQUxMT0NBVEUgc3RhdGVtZW50IiwKIAkJ CSAgIG4tPnN5bS0+bmFtZSwgJm4tPndoZXJlKTsKIAkgICAgfQorCSAgLyogSWYgdGhlcmUg aXMgYW4gQUxMT0NBVEUgZGlyZWN0aXZlIHdpdGhvdXQgbGlzdCBhcmd1bWVudCwgYQorCSAg ICAgbmFtZWxpc3Qgd2l0aCBpdHMgYWxsb2NhdG9yL2FsaWduIGNsYXVzZXMgYW5kIG4tPnN5 bSA9IE5VTEwgaXMKKwkgICAgIGNyZWF0ZWQgZHVyaW5nIHBhcnNpbmc7IGhlcmUsIHdlIGFk ZCBhbGwgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQKKwkgICAgIGl0ZW1zIGZyb20gdGhlIEZv cnRyYW4gYWxsb2NhdGUgdG8gdGhhdCBsaXN0LgorCSAgICAgRm9yIGFuIEFMTE9DQVRPUlMg ZGlyZWN0aXZlLCBub3QgbGlzdGVkIGl0ZW1zIHVzZSB0aGUgbm9ybWFsCisJICAgICBGb3J0 cmFuIHdheS4KKwkgICAgIFRoZSBiZWhhdmlvciBvZiBhbiBBTExPQ0FURSBkaXJlY3RpdmUg dGhhdCBkb2VzIG5vdCBsaXN0IGFsbAorCSAgICAgYXJndW1lbnRzIGJ1dCB0aGVyZSBpcyBu byBkaXJlY3RpdmUgd2l0aG91dCBsaXN0IGFyZ3VtZW50IGlzIG5vdAorCSAgICAgd2VsbCBz cGVjaWZpZWQuICBUaHVzLCB3ZSByZWplY3Qgc3VjaCBjb2RlIGJlbG93LiBJbiBPcGVuTVAg NS4yCisJICAgICB0aGUgZXhlY3V0YWJsZSBBTExPQ0FURSBkaXJlY3RpdmUgaXMgZGVwcmVj YXRlZCBhbmQgaW4gNi4wCisJICAgICBkZWxldGVkIHN1Y2ggdGhhdCBubyBzcGVjIGNsYXJp ZmljYXRpb24gaXMgdG8gYmUgZXhwZWN0ZWQuICAqLworCSAgZ2ZjX2FsbG9jICphX3ByZXYg PSBOVUxMOworCSAgZ2ZjX2FsbG9jICpleHRyYV9hbGxvYyA9IE5VTEwsICpleHRyYV9hbGxv Y19sYXN0ID0gTlVMTDsKKwkgIGZvciAoYSA9IGNvZGUtPmJsb2NrLT5uZXh0LT5leHQuYWxs b2MubGlzdDsgYTsgKQorCSAgICB7CisJICAgICAgaWYgKGEtPmV4cHItPmV4cHJfdHlwZSA9 PSBFWFBSX1ZBUklBQkxFKQorCQl7CisJCSAgZm9yIChuID0gb21wX2NsYXVzZXMtPmxpc3Rz W09NUF9MSVNUX0FMTE9DQVRFXTsgbjsgbiA9IG4tPm5leHQpCisJCSAgICBpZiAoYS0+ZXhw ci0+c3ltdHJlZS0+bi5zeW0gPT0gbi0+c3ltKQorCQkgICAgICBicmVhazsKKwkJICBpZiAo biA9PSBOVUxMICYmIG5fbnVsbCA9PSBOVUxMKQorCQkgICAgeworCQkgICAgICBpZiAoIWV4 dHJhX2FsbG9jKQorCQkJZXh0cmFfYWxsb2MgPSBleHRyYV9hbGxvY19sYXN0ID0gYTsKKwkJ ICAgICAgZWxzZQorCQkJeworCQkJICBleHRyYV9hbGxvY19sYXN0LT5uZXh0ID0gYTsKKwkJ CSAgZXh0cmFfYWxsb2NfbGFzdCA9IGE7CisJCQl9CisJCSAgICAgIGEgPSBhLT5uZXh0Owor CQkgICAgICBpZiAoY29kZS0+YmxvY2stPm5leHQtPmV4dC5hbGxvYy5saXN0ID09IGV4dHJh X2FsbG9jX2xhc3QpCisJCQljb2RlLT5ibG9jay0+bmV4dC0+ZXh0LmFsbG9jLmxpc3QgPSBh OworCQkgICAgICBlbHNlCisJCQlhX3ByZXYtPm5leHQgPSBhOworCQkgICAgICBleHRyYV9h bGxvY19sYXN0LT5uZXh0ID0gTlVMTDsKKwkJICAgICAgY29udGludWU7CisJCSAgICB9CisJ CSAgaWYgKG4gPT0gTlVMTCkKKwkJICAgIHsKKwkJICAgICAgaWYgKGEtPmV4cHItPnN5bXRy ZWUtPm4uc3ltLT5hdHRyLmNvZGltZW5zaW9uKQorCQkJZ2ZjX2Vycm9yICgiVW5leHBlY3Rl ZCBjb2FycmF5ICVxcyBpbiAlPGFsbG9jYXRlJT4gYXQgIgorCQkJCSAgICIlTCwgaW1wbGlj aXRseSBsaXN0ZWQgaW4gJTwhJE9NUCBBTExPQ0FURSU+IgorCQkJCSAgICIgYXQgJUwiLCBh LT5leHByLT5zeW10cmVlLT5uLnN5bS0+bmFtZSwKKwkJCQkgICAmYS0+ZXhwci0+d2hlcmUs ICZuX251bGwtPndoZXJlKTsKKwkJICAgICAgaWYgKG5fbnVsbC0+c3ltID09IE5VTEwpCisJ CQluX251bGwtPnN5bSA9IGEtPmV4cHItPnN5bXRyZWUtPm4uc3ltOworCQkgICAgICBlbHNl CisJCQl7CisJCQkgIG4gPSBuX251bGwtPm5leHQ7CisJCQkgIG5fbnVsbC0+bmV4dCA9IGdm Y19nZXRfb21wX25hbWVsaXN0ICgpOworCQkJICBuX251bGwtPm5leHQtPm5leHQgPSBuOwor CQkJICBuX251bGwtPm5leHQtPnN5bSA9IGEtPmV4cHItPnN5bXRyZWUtPm4uc3ltOworCQkJ ICBuX251bGwtPm5leHQtPnUyLmFsbG9jYXRvciA9IG5fbnVsbC0+dTIuYWxsb2NhdG9yOwor CQkJICBuX251bGwtPm5leHQtPnUuYWxpZ24KKwkJCSAgICA9IGdmY19jb3B5X2V4cHIgKG5f bnVsbC0+dS5hbGlnbik7CisJCQkgIG5fbnVsbC0+bmV4dC0+d2hlcmUgPSBuX251bGwtPndo ZXJlOworCQkJICBuX251bGwgPSBuX251bGwtPm5leHQ7CisJCQl9CisJCSAgICB9CisJCX0K KwkgICAgICBhX3ByZXYgPSBhOworCSAgICAgIGEgPSBhLT5uZXh0OworCSAgICB9CisJICBp ZiAobl9udWxsICYmIG5fbnVsbC0+c3ltID09IE5VTEwpCisJICAgIHsKKwkgICAgICBpZiAo bl9udWxsID09IG9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FURV0pCisJCW9t cF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FURV0gPSBuX251bGwtPm5leHQ7CisJ ICAgICAgZWxzZQorCQl7CisJCSAgZm9yIChuID0gb21wX2NsYXVzZXMtPmxpc3RzW09NUF9M SVNUX0FMTE9DQVRFXTsgbjsKKwkJICAgICAgIG4gPSBuLT5uZXh0KQorCQkgICAgaWYgKG4t Pm5leHQgPT0gbl9udWxsKQorCQkgICAgICBicmVhazsKKwkJICBuLT5uZXh0ID0gbl9udWxs LT5uZXh0OworCQkgIG5fbnVsbC0+bmV4dCA9IE5VTEw7CisJCSAgZ2ZjX2ZyZWVfb21wX25h bWVsaXN0IChuX251bGwsIGZhbHNlLCB0cnVlLCBmYWxzZSk7CisJCX0KKwkgICAgfQorCSAg aWYgKGV4dHJhX2FsbG9jKQorCSAgICB7CisJICAgICAgLyogVW5zcGVjaWZpZWQgd2hldGhl ciB0aGF0IHNob3VsZCB1c2UgdGhlIGRlZmF1bHQgYWxsb2NhdG9yCisJCSBvZiBPcGVuTVAg b3IgdGhlIEZvcnRyYW4gYWxsb2NhdG9yLiBUaHVzLCBqdXN0IHJlamVjdCBpdC4gICovCisJ ICAgICAgaWYgKGNvZGUtPm9wID09IEVYRUNfT01QX0FMTE9DQVRFKQorCQlnZmNfZXJyb3Ig KCIlcXMgbGlzdGVkIGluICU8YWxsb2NhdGUlPiBzdGF0ZW1lbnQgYXQgJUwgYnV0ICIKKwkJ CSAgICJpdCBpcyBuZWl0aGVyIGV4cGxpY2l0bHkgaW4gbGlzdGVkIGluIHRoZSAiCisJCQkg ICAiJTwhJE9NUCBBTExPQ0FURSU+IGRpcmVjdGl2ZSBub3IgZXhpc3RzIGEgZGlyZWN0aXZl IgorCQkJICAgIiB3aXRob3V0IGFyZ3VtZW50IGxpc3QiLAorCQkJICAgZXh0cmFfYWxsb2Mt PmV4cHItPnN5bXRyZWUtPm4uc3ltLT5uYW1lLAorCQkJICAgJmV4dHJhX2FsbG9jLT5leHBy LT53aGVyZSk7CisJICAgICAgZ2ZjX2NvZGUgKmMgPSBjb2RlLT5ibG9jay0+bmV4dDsKKwkg ICAgICBnZmNfY29kZSAqY24gPSBjb2RlLT5uZXh0OworCSAgICAgIGNvZGUtPm5leHQgPSBn ZmNfZ2V0X2NvZGUgKGMtPm9wKTsKKwkgICAgICBjb2RlLT5uZXh0LT5uZXh0ID0gY247CisJ ICAgICAgY24gPSBjb2RlLT5uZXh0OworCSAgICAgIGNuLT5sb2MgPSBjLT5sb2M7CisJICAg ICAgY24tPmV4cHIxID0gZ2ZjX2NvcHlfZXhwciAoY24tPmV4cHIxKTsKKwkgICAgICBjbi0+ ZXhwcjIgPSBnZmNfY29weV9leHByIChjbi0+ZXhwcjIpOworCSAgICAgIGNuLT5leHByMyA9 IGdmY19jb3B5X2V4cHIgKGNuLT5leHByMyk7CisJICAgICAgY24tPmV4dC5hbGxvYy50cyA9 IGNuLT5leHQuYWxsb2MudHM7CisJICAgICAgY24tPmV4dC5hbGxvYy5saXN0ID0gZXh0cmFf YWxsb2M7CisJICAgICAgY24tPmV4dC5hbGxvYy5hcnJfc3BlY19mcm9tX2V4cHIzCisJCT0g Yy0+ZXh0LmFsbG9jLmFycl9zcGVjX2Zyb21fZXhwcjM7CisJICAgICAgY24tPmV4dC5hbGxv Yy5leHByM19ub3RfZXhwbGljaXQKKwkJPSBjLT5leHQuYWxsb2MuZXhwcjNfbm90X2V4cGxp Y2l0OworCSAgICB9CiAJfQotCiAgICAgfQogCiAgIC8qIE9wZW5BQ0MgcmVkdWN0aW9ucy4g ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2Nh dGUtMTQuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTE0 LmY5MAppbmRleCA4ZmY5YzI1MmU0OS4uNGZlZDE5MjQ5YTMgMTAwNjQ0Ci0tLSBhL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xNC5mOTAKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTE0LmY5MApAQCAtOTMsMyArOTMs NDQgQEAgc3Vicm91dGluZSBjX2FuZF9mdW5jX3B0cnMKICAgISRvbXAgYWxsb2NhdGUoY2Z1 bnB0cikgISBPSz8gQSBub3JtYWwgZGVyaXZlZC10eXBlIHZhcj8KICAgISRvbXAgYWxsb2Nh dGUocCkgICEgeyBkZy1lcnJvciAiQXJndW1lbnQgJ3AnIGF0IC4xLiB0byBkZWNsYXJhdGl2 ZSAhLk9NUCBBTExPQ0FURSBkaXJlY3RpdmUgbXVzdCBiZSBhIHZhcmlhYmxlIiB9CiBlbmQK KworCitzdWJyb3V0aW5lIGNvYXJyYXlfMgorICB1c2UgbQorICBpbXBsaWNpdCBub25lCisg IGludGVnZXIgOjogeAorICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBhLCBiLCBjWzpdLCBk CisgIHggPSA1ICEgZXhlY3V0YWJsZSBzdG10CisgICEkb21wIGFsbG9jYXRlKGEsYikgYWxp Z24oMTYpCisgICEkb21wIGFsbG9jYXRlICAgICAgICAhIHsgZGctZXJyb3IgIlVuZXhwZWN0 ZWQgY29hcnJheSAnYycgaW4gJ2FsbG9jYXRlJyBhdCAuMS4sIGltcGxpY2l0bHkgbGlzdGVk IGluICchLk9NUCBBTExPQ0FURScgYXQgLjIuIiB9CisgICEkb21wIGFsbG9jYXRlKGQpIGFs aWduKDMyKQorICBhbGxvY2F0ZShhLGIsY1sqXSxkKSAgISB7IGRnLWVycm9yICJVbmV4cGVj dGVkIGNvYXJyYXkgJ2MnIGluICdhbGxvY2F0ZScgYXQgLjEuLCBpbXBsaWNpdGx5IGxpc3Rl ZCBpbiAnIS5PTVAgQUxMT0NBVEUnIGF0IC4yLiIgfQorZW5kCisKKworc3Vicm91dGluZSBj b2FycmF5XzMKKyAgdXNlIG0KKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyIDo6IHgKKyAg aW50ZWdlciwgYWxsb2NhdGFibGUgOjogYSwgYiwgY1s6XSwgZAorICB4ID0gNSAhIGV4ZWN1 dGFibGUgc3RtdAorICAhJG9tcCBhbGxvY2F0b3JzIGFsbG9jYXRlKGFsaWduKDE2KTogYSxi KSBhbGxvY2F0ZShhbGlnbigzMikgOiBkKSAKKyAgYWxsb2NhdGUoYSxiLGNbKl0sZCkgICEg T0sgLSBGb3J0cmFuIGFsbG9jYXRvciB1c2VkIGZvciAnQycKK2VuZAorCisKK3N1YnJvdXRp bmUgdW5jbGVhcgorICB1c2UgbQorICBpbXBsaWNpdCBub25lCisgIGludGVnZXIgOjogeAor ICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBhLCBiLCBjWzpdLCBkCisKKyAgISBPcGVuTVAg aXMgdW5jbGVhciB3aGljaCBhbGxvY2F0b3IgaXMgdXNlZCBmb3IgJ0MnIC0gdGhlIGZvcnRy YW4gb25lIG9yIHRoZSBPcGVuTVAgb25lLgorICAhIEdDQyB0aGVyZWZvcmUgcmVqZWN0cyBp dC4KKworICB4ID0gNSAhIGV4ZWN1dGFibGUgc3RtdAorCisgICEkb21wIGFsbG9jYXRlKGEs YikgYWxpZ24oMTYpCisgICEkb21wIGFsbG9jYXRlKGQpIGFsaWduKDMyKQorICBhbGxvY2F0 ZShhLGIsY1sqXSxkKSAgISB7IGRnLWVycm9yICInYycgbGlzdGVkIGluICdhbGxvY2F0ZScg c3RhdGVtZW50IGF0IC4xLiBidXQgaXQgaXMgbmVpdGhlciBleHBsaWNpdGx5IGluIGxpc3Rl ZCBpbiB0aGUgJyEuT01QIEFMTE9DQVRFJyBkaXJlY3RpdmUgbm9yIGV4aXN0cyBhIGRpcmVj dGl2ZSB3aXRob3V0IGFyZ3VtZW50IGxpc3QiIH0KK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTUuZjkwIGIvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTUuZjkwCmluZGV4IGJmOWM3ODFkY2M1Li4z NWM3YjFiYTViZiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L2FsbG9jYXRlLTUuZjkwCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9h bGxvY2F0ZS01LmY5MApAQCAtNDYsOCArNDYsOCBAQCBzdWJyb3V0aW5lIHR3byhjLHgyLHky KQogCiAgICEkb21wIGZsdXNoICAhIHNvbWUgZXhlY3V0YWJsZSBzdGF0ZW1lbnQKICAgISRv bXAgYWxsb2NhdGUoYSkgICEgeyBkZy1tZXNzYWdlICJub3QgeWV0IHN1cHBvcnRlZCIgfQot ICBhbGxvY2F0ZShhLGIoNCksYygzLDQpKQotICBkZWFsbG9jYXRlKGEsYixjKQorICBhbGxv Y2F0ZShhKQorICBkZWFsbG9jYXRlKGEpCiAKICAgISRvbXAgYWxsb2NhdGUoeDEseTEseDIs eTIpICAhIHsgZGctbWVzc2FnZSAibm90IHlldCBzdXBwb3J0ZWQiIH0KICAgYWxsb2NhdGUo eDEseTEseDIoNSkseTIoNSkpCg== --------------5eZppaFV8UbJFu6oEi6v1HQZ--