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 BA3133858C2F for ; Thu, 25 Aug 2022 17:30:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BA3133858C2F 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.93,263,1654588800"; d="diff'?scan'208,217";a="84699004" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 25 Aug 2022 09:30:19 -0800 IronPort-SDR: O5NTzziEkZaBqWZTYPnXSUsIB5eRZUM3aZdwTDuaZ6Chr1vBJ3bh4tg5VOXJBIho4DMNoAYuG9 3oPJae8Mf137spzThEq3e3m4X1CNXsFA+3jMwXZsngUJC/pJ1TylDL4siCXvKmFPaHvuQdT2QM MrCEz5tWxwTtBLNepEZVV+CtMikO9d/oR0mwVZ9TJsjEIOhdY67p6b9lXoXCuJCzFb4dLiPlrF pdKdKtqn9+dc3vqSE2XupCFSQK2DI68Zt82y89fnWGs1gkmAg0OB2KsaMBa0B1f9/rrxfHxRSd Fgw= Content-Type: multipart/mixed; boundary="------------bVHI0hEY0rBZ0WgpgVSm3dWR" Message-ID: Date: Thu, 25 Aug 2022 19:30:14 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: [Patch][2/3] nvptx: libgomp+mkoffload.cc: Prepare for reverse offload fn lookup Content-Language: en-US From: Tobias Burnus To: gcc-patches , Jakub Jelinek , Tom de Vries References: <40563a1c-49ef-a185-3c01-9f717cd48fc5@codesourcery.com> In-Reply-To: <40563a1c-49ef-a185-3c01-9f717cd48fc5@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-13.mgc.mentorg.com (139.181.222.13) 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, HTML_MESSAGE, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 Aug 2022 17:30:30 -0000 --------------bVHI0hEY0rBZ0WgpgVSm3dWR Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable On 25.08.22 16:54, Tobias Burnus wrote: The attached patch prepare for reverse-offload device->host function-address lookup by requesting (if needed) the on-device address. This patch adds the actual implementation for NVPTX. Having array[] =3D {fn1,fn2}; works with nvptx only since sm_35; hence, if there is a reverse_offload and sm_30 is used, there will be a compile-ti= me error. To avoid incompatibilities, I compile with the same PTX ISA .version and sm_XX version as the (last) file that contains the reverse offload. While it should not matter, some newer CUDA might not support, e.g., sm_35 or do not like a specific ISA version - thus, that seemed to be safer. This is currently effectively a no op as with [1/3] patch, always NULL is passed and as GOMP_OFFLOAD_get_num_devices returns <=3D 0 as soon as 'omp requires reverse_offload' has been specified. 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 --------------bVHI0hEY0rBZ0WgpgVSm3dWR Content-Type: text/x-patch; charset="UTF-8"; name="fn-lookup-nvptx.diff" Content-Disposition: attachment; filename="fn-lookup-nvptx.diff" Content-Transfer-Encoding: base64 bnZwdHg6IGxpYmdvbXArbWtvZmZsb2FkLmNjOiBQcmVwYXJlIGZvciByZXZlcnNlIG9mZmxv YWQgZm4gbG9va3VwCgpBZGQgc3VwcG9ydCB0byBudnB0eCBmb3IgcmV2ZXJzZSBsb29rdXAg b2YgZnVuY3Rpb24gbmFtZSB0byBwcmVwYXJlIGZvcgonb21wIHRhcmdldCBkZXZpY2UoYW5j ZXN0b3I6MSknLgoKZ2NjL0NoYW5nZUxvZzoKCgkqIGNvbmZpZy9udnB0eC9ta29mZmxvYWQu Y2MgKHJlY29yZF9pZCk6IFN0cmlwIHF1b3RhdGlvbnMgZnJvbQoJZnVuY3Rpb24gbmFtZS4K CShwcm9jZXNzKTogRm9yIEdPTVBfUkVRVUlSRVNfUkVWRVJTRV9PRkZMT0FELCBjaGVjayB0 aGF0IC1tYXJjaCBpcwoJYXQgbGVhc3Qgc21fMzUsIGNyZWF0ZSAnJG9mZmxvYWRfZnVuY190 YWJsZScgZ2xvYmFsIGFycmF5IGFuZCBpbml0Cgl3aXRoIHJldmVyc2Utb2ZmbG9hZCBmdW5j dGlvbiBhZGRyZXNzZXMuCgkqIGNvbmZpZy9udnB0eC9udnB0eC5jYyAod3JpdGVfZm5fcHJv dG9fMSwgd3JpdGVfZm5fcHJvdG8pOiBOZXcKCWZvcmNlX3B1YmxpYyBhdHRyaWJ1dGUgdG8g Zm9yY2UgLnZpc2libGUuCgkobnZwdHhfZGVjbGFyZV9mdW5jdGlvbl9uYW1lKTogRm9yICJv bXAgdGFyZ2V0CglkZXZpY2VfYW5jZXN0b3Jfbm9ob3N0IiBhdHRyaWJ1dCwgZm9yY2UgLnZp c2libGUvVFJFRV9QVUJMSUMuCgpsaWJnb21wL0NoYW5nZUxvZzoKCgkqIHBsdWdpbi9wbHVn aW4tbnZwdHguYyAoR09NUF9PRkZMT0FEX2xvYWRfaW1hZ2UpOiBSZWFkIG9mZmxvYWQKCWZ1 bmN0aW9uIGFkZHJlc3MgdGFibGUgJyRvZmZsb2FkX2Z1bmNfdGFibGUnIGlmIHJldl9mbl90 YWJsZQoJaXMgbm90IE5VTEwuCgogZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MgfCAx MDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBnY2MvY29u ZmlnL252cHR4L252cHR4LmNjICAgICB8ICAyMCArKysrKy0tLQogbGliZ29tcC9wbHVnaW4v cGx1Z2luLW52cHR4LmMgfCAgMTkgKysrKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTMxIGlu c2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9jb25maWcv bnZwdHgvbWtvZmZsb2FkLmNjIGIvZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MKaW5k ZXggM2VlYTBhOGYxMzguLmM0OTY3NjZiMWNjIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL252 cHR4L21rb2ZmbG9hZC5jYworKysgYi9nY2MvY29uZmlnL252cHR4L21rb2ZmbG9hZC5jYwpA QCAtMTA4LDEyICsxMDgsMTQgQEAgeHB1dGVudiAoY29uc3QgY2hhciAqc3RyaW5nKQogc3Rh dGljIHZvaWQKIHJlY29yZF9pZCAoY29uc3QgY2hhciAqcDEsIGlkX21hcCAqKip3aGVyZSkK IHsKKyAgZ2NjX2Fzc2VydCAocDFbMF0gPT0gJyInKTsKKyAgcDErKzsKICAgY29uc3QgY2hh ciAqZW5kID0gc3RyY2hyIChwMSwgJ1xuJyk7CiAgIGlmICghZW5kKQogICAgIGZhdGFsX2Vy cm9yIChpbnB1dF9sb2NhdGlvbiwgIm1hbGZvcm1lZCBwdHggZmlsZSIpOwogCiAgIGlkX21h cCAqdiA9IFhORVcgKGlkX21hcCk7Ci0gIHNpemVfdCBsZW4gPSBlbmQgLSBwMTsKKyAgc2l6 ZV90IGxlbiA9IGVuZCAtIHAxIC0gMSA7IC8qIHJlbW92ZSB0YWlsaW5nICciJyAgKi8KICAg di0+cHR4X25hbWUgPSBYTkVXVkVDIChjaGFyLCBsZW4gKyAxKTsKICAgbWVtY3B5ICh2LT5w dHhfbmFtZSwgcDEsIGxlbik7CiAgIHYtPnB0eF9uYW1lW2xlbl0gPSAnXDAnOwpAQCAtMjQy LDYgKzI0NCwxMCBAQCBwcm9jZXNzIChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBv bXBfcmVxdWlyZXMpCiAgIGlkX21hcCBjb25zdCAqaWQ7CiAgIHVuc2lnbmVkIG9ial9jb3Vu dCA9IDA7CiAgIHVuc2lnbmVkIGl4OworICBjb25zdCBjaGFyICpzbV92ZXIgPSBOVUxMLCAq dmVyc2lvbiA9IE5VTEw7CisgIGNvbnN0IGNoYXIgKnNtX3ZlcjIgPSBOVUxMLCAqdmVyc2lv bjIgPSBOVUxMOworICBzaXplX3QgZmlsZV9jbnQgPSAwOworICBzaXplX3QgKmZpbGVfaWR4 ID0gWEFMTE9DQVZFQyAoc2l6ZV90LCBsZW4pOwogCiAgIGZwcmludGYgKG91dCwgIiNpbmNs dWRlIDxzdGRpbnQuaD5cblxuIik7CiAKQEAgLTI1MCw2ICsyNTYsOCBAQCBwcm9jZXNzIChG SUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAgIGZvciAoc2l6 ZV90IGkgPSAwOyBpICE9IGxlbjspCiAgICAgewogICAgICAgY2hhciBjOworICAgICAgYm9v bCBvdXRwdXRfZm5fcHRyID0gZmFsc2U7CisgICAgICBmaWxlX2lkeFtmaWxlX2NudCsrXSA9 IGk7CiAKICAgICAgIGZwcmludGYgKG91dCwgInN0YXRpYyBjb25zdCBjaGFyIHB0eF9jb2Rl XyV1W10gPVxuXHRcIiIsIG9ial9jb3VudCsrKTsKICAgICAgIHdoaWxlICgoYyA9IGlucHV0 W2krK10pKQpAQCAtMjYxLDYgKzI2OSwxNiBAQCBwcm9jZXNzIChGSUxFICppbiwgRklMRSAq b3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAJICAgIGNhc2UgJ1xuJzoKIAkgICAgICBm cHJpbnRmIChvdXQsICJcXG5cIlxuXHRcIiIpOwogCSAgICAgIC8qIExvb2sgZm9yIG1hcHBp bmdzIG9uIHN1YnNlcXVlbnQgbGluZXMuICAqLworCSAgICAgIGlmIChVTkxJS0VMWSAoc3Rh cnRzd2l0aCAoaW5wdXQgKyBpLCAiLnRhcmdldCBzbV8iKSkpCisJCXsKKwkJICBzbV92ZXIg PSBpbnB1dCArIGkgKyBzdHJsZW4gKCIudGFyZ2V0IHNtXyIpOworCQkgIGNvbnRpbnVlOwor CQl9CisJICAgICAgaWYgKFVOTElLRUxZIChzdGFydHN3aXRoIChpbnB1dCArIGksICIudmVy c2lvbiAiKSkpCisJCXsKKwkJICB2ZXJzaW9uID0gaW5wdXQgKyBpICsgc3RybGVuICgiLnZl cnNpb24gIik7CisJCSAgY29udGludWU7CisJCX0KIAkgICAgICB3aGlsZSAoc3RhcnRzd2l0 aCAoaW5wdXQgKyBpLCAiLy86IikpCiAJCXsKIAkJICBpICs9IDM7CkBAIC0yNjgsNyArMjg2 LDEwIEBAIHByb2Nlc3MgKEZJTEUgKmluLCBGSUxFICpvdXQsIHVpbnQzMl90IG9tcF9yZXF1 aXJlcykKIAkJICBpZiAoc3RhcnRzd2l0aCAoaW5wdXQgKyBpLCAiVkFSX01BUCAiKSkKIAkJ ICAgIHJlY29yZF9pZCAoaW5wdXQgKyBpICsgOCwgJnZhcnNfdGFpbCk7CiAJCSAgZWxzZSBp ZiAoc3RhcnRzd2l0aCAoaW5wdXQgKyBpLCAiRlVOQ19NQVAgIikpCi0JCSAgICByZWNvcmRf aWQgKGlucHV0ICsgaSArIDksICZmdW5jc190YWlsKTsKKwkJICAgIHsKKwkJICAgICAgb3V0 cHV0X2ZuX3B0ciA9IHRydWU7CisJCSAgICAgIHJlY29yZF9pZCAoaW5wdXQgKyBpICsgOSwg JmZ1bmNzX3RhaWwpOworCQkgICAgfQogCQkgIGVsc2UKIAkJICAgIGFib3J0ICgpOwogCQkg IC8qIFNraXAgdG8gbmV4dCBsaW5lLiAqLwpAQCAtMjg2LDYgKzMwNyw4MSBAQCBwcm9jZXNz IChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAJICBwdXRj IChjLCBvdXQpOwogCX0KICAgICAgIGZwcmludGYgKG91dCwgIlwiO1xuXG4iKTsKKyAgICAg IGlmIChvdXRwdXRfZm5fcHRyCisJICAmJiAob21wX3JlcXVpcmVzICYgR09NUF9SRVFVSVJF U19SRVZFUlNFX09GRkxPQUQpICE9IDApCisJeworCSAgaWYgKHNtX3ZlciAmJiBzbV92ZXJb MF0gPT0gJzMnICYmIHNtX3ZlclsxXSA9PSAnMCcKKwkgICAgICAmJiBzbV92ZXJbMl0gPT0g J1xuJykKKwkgICAgZmF0YWxfZXJyb3IgKGlucHV0X2xvY2F0aW9uLAorCQkJICIlPG9tcCBy ZXF1aXJlcyByZXZlcnNlX29mZmxvYWQlPiByZXF1aXJlcyBhdCBsZWFzdCAiCisJCQkgIiU8 c21fMzUlPiBmb3IgJTwtbWlzYT0lPiIpOworCSAgc21fdmVyMiA9IHNtX3ZlcjsKKwkgIHZl cnNpb24yID0gdmVyc2lvbjsKKwl9CisgICAgfQorCisgIC8qIENyZWF0ZSBmdW5jdGlvbi1w b2ludGVyIGFycmF5LCByZXF1aXJlZCBmb3IgcmV2ZXJzZQorICAgICBvZmZsb2FkIGZ1bmN0 aW9uLXBvaW50ZXIgbG9va3VwLiAgKi8KKworICBpZiAoZnVuY19pZHMgJiYgKG9tcF9yZXF1 aXJlcyAmIEdPTVBfUkVRVUlSRVNfUkVWRVJTRV9PRkZMT0FEKSAhPSAwKQorICAgIHsKKyAg ICAgIGNvbnN0IGNoYXIgbmVlZGxlW10gPSAiLy8gQkVHSU4gR0xPQkFMIEZVTkNUSU9OIERF Q0w6ICI7CisgICAgICBmcHJpbnRmIChvdXQsICJzdGF0aWMgY29uc3QgY2hhciBwdHhfY29k ZV8ldVtdID1cbiIsIG9ial9jb3VudCsrKTsKKyAgICAgIGZwcmludGYgKG91dCwgIlx0XCIu dmVyc2lvbiAiKTsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyB2ZXJzaW9uMltpXSAhPSAn XDAnICYmIHZlcnNpb24yW2ldICE9ICdcbic7IGkrKykKKwlmcHV0YyAodmVyc2lvbjJbaV0s IG91dCk7CisgICAgICBmcHJpbnRmIChvdXQsICJcIlxuXHRcIi50YXJnZXQgc21fIik7Cisg ICAgICBmb3IgKHNpemVfdCBpID0gMDsgdmVyc2lvbjJbaV0gIT0gJ1wwJyAmJiBzbV92ZXIy W2ldICE9ICdcbic7IGkrKykKKwlmcHV0YyAoc21fdmVyMltpXSwgb3V0KTsKKyAgICAgIGZw cmludGYgKG91dCwgIlwiXG5cdFwiLmZpbGUgMSBcXFwiPGR1bW15PlxcXCJcIlxuIik7CisK KyAgICAgIHNpemVfdCBmaWR4ID0gMDsKKyAgICAgIGZvciAoaWQgPSBmdW5jX2lkczsgaWQ7 IGlkID0gaWQtPm5leHQpCisJeworCSAgLyogT25seSAnbm9ob3N0JyBmdW5jdGlvbnMgYXJl IG5lZWRlZCAtIHVzZSBOVUxMIGZvciB0aGUgcmVzdC4KKwkgICAgIEFsdGVybmF0aXZlbHks IGJlc2lkZXMgc2VhcmNoaW5nIGZvciAnQkVHSU4gRlVOQ1RJT04gREVDTCcsCisJICAgICBj aGVja2luZyBmb3IgJy52aXNpYmxlIC5lbnRyeSAnICsgaWQtPnB0eF9uYW1lIHdvdWxkIGJl CisJICAgICByZXF1aXJlZC4gICovCisJICBpZiAoIWVuZHN3aXRoIChpZC0+cHR4X25hbWUs ICIkbm9ob3N0IikpCisJICAgIGNvbnRpbnVlOworCSAgZnByaW50ZiAob3V0LCAiXHRcIi5l eHRlcm4gIik7CisJICBjb25zdCBjaGFyICpwID0gaW5wdXQgKyBmaWxlX2lkeFtmaWR4XTsK KwkgIHdoaWxlICh0cnVlKQorCSAgICB7CisJICAgICAgcCA9IHN0cnN0ciAocCwgbmVlZGxl KTsKKwkgICAgICBpZiAoIXApCisJCXsKKwkJICBmaWR4Kys7CisJCSAgaWYgKGZpZHggPj0g ZmlsZV9jbnQpCisJCSAgICBicmVhazsKKwkJICBwID0gaW5wdXQgKyBmaWxlX2lkeFtmaWR4 XTsKKwkJICBjb250aW51ZTsKKwkJfQorCSAgICAgIHAgKz0gc3RybGVuIChuZWVkbGUpOwor CSAgICAgIGlmICghc3RhcnRzd2l0aCAocCwgaWQtPnB0eF9uYW1lKSkKKwkJY29udGludWU7 CisJICAgICAgcCArPSBzdHJsZW4gKGlkLT5wdHhfbmFtZSk7CisJICAgICAgaWYgKCpwICE9 ICdcbicpCisJCWNvbnRpbnVlOworCSAgICAgIHArKzsKKwkgICAgICBnY2NfYXNzZXJ0IChz dGFydHN3aXRoIChwLCAiLnZpc2libGUgIikpOworCSAgICAgIHAgKz0gc3RybGVuICgiLnZp c2libGUgIik7CisJICAgICAgZm9yICg7ICpwICE9ICdcMCcgJiYgKnAgIT0gJ1xuJzsgcCsr KQorCQlmcHV0YyAoKnAsIG91dCk7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwkgIGZwcmlu dGYgKG91dCwgIlwiXG4iKTsKKwkgIGlmIChmaWR4ID09IGZpbGVfY250KQorCSAgICBmYXRh bF9lcnJvciAoaW5wdXRfbG9jYXRpb24sCisJCQkgIkNhbm5vdCBmaW5kIGZ1bmN0aW9uIGRl Y2xhcmF0aW9uIGZvciAlcXMiLAorCQkJIGlkLT5wdHhfbmFtZSk7CisJfQorICAgICAgZnBy aW50ZiAob3V0LCAiXHRcIi52aXNpYmxlIC5nbG9iYWwgLmFsaWduIDggLnU2NCAiCisJCSAg ICAiJG9mZmxvYWRfZnVuY190YWJsZVtdID0geyIpOworICAgICAgZm9yIChjb21tYSA9ICIi LCBpZCA9IGZ1bmNfaWRzOyBpZDsgY29tbWEgPSAiLCIsIGlkID0gaWQtPm5leHQpCisJZnBy aW50ZiAob3V0LCAiJXNcIlxuXHRcdFwiJXMiLCBjb21tYSwKKwkJIGVuZHN3aXRoIChpZC0+ cHR4X25hbWUsICIkbm9ob3N0IikgPyBpZC0+cHR4X25hbWUgOiAiMCIpOworICAgICAgZnBy aW50ZiAob3V0LCAifTtcXG5cIjtcblxuIik7CiAgICAgfQogCiAgIC8qIER1bXAgb3V0IGFy cmF5IG9mIHBvaW50ZXJzIHRvIHB0eCBvYmplY3Qgc3RyaW5ncy4gICovCkBAIC0zMDAsNyAr Mzk2LDcgQEAgcHJvY2VzcyAoRklMRSAqaW4sIEZJTEUgKm91dCwgdWludDMyX3Qgb21wX3Jl cXVpcmVzKQogICAvKiBEdW1wIG91dCB2YXJpYWJsZSBpZGVudHMuICAqLwogICBmcHJpbnRm IChvdXQsICJzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgdmFyX21hcHBpbmdzW10gPSB7Iik7 CiAgIGZvciAoY29tbWEgPSAiIiwgaWQgPSB2YXJfaWRzOyBpZDsgY29tbWEgPSAiLCIsIGlk ID0gaWQtPm5leHQpCi0gICAgZnByaW50ZiAob3V0LCAiJXNcblx0JXMiLCBjb21tYSwgaWQt PnB0eF9uYW1lKTsKKyAgICBmcHJpbnRmIChvdXQsICIlc1xuXHRcIiVzXCIiLCBjb21tYSwg aWQtPnB0eF9uYW1lKTsKICAgZnByaW50ZiAob3V0LCAiXG59O1xuXG4iKTsKIAogICAvKiBE dW1wIG91dCBmdW5jdGlvbiBpZGVudHMuICAqLwpAQCAtMzA5LDcgKzQwNSw3IEBAIHByb2Nl c3MgKEZJTEUgKmluLCBGSUxFICpvdXQsIHVpbnQzMl90IG9tcF9yZXF1aXJlcykKIAkgICAi ICB1bnNpZ25lZCBzaG9ydCBkaW1bJWRdO1xuIgogCSAgICJ9IGZ1bmNfbWFwcGluZ3NbXSA9 IHtcbiIsIEdPTVBfRElNX01BWCk7CiAgIGZvciAoY29tbWEgPSAiIiwgaWQgPSBmdW5jX2lk czsgaWQ7IGNvbW1hID0gIiwiLCBpZCA9IGlkLT5uZXh0KQotICAgIGZwcmludGYgKG91dCwg IiVzXG5cdHslc30iLCBjb21tYSwgaWQtPnB0eF9uYW1lKTsKKyAgICBmcHJpbnRmIChvdXQs ICIlc1xuXHR7XCIlc1wifSIsIGNvbW1hLCBpZC0+cHR4X25hbWUpOwogICBmcHJpbnRmIChv dXQsICJcbn07XG5cbiIpOwogCiAgIGZwcmludGYgKG91dCwKZGlmZiAtLWdpdCBhL2djYy9j b25maWcvbnZwdHgvbnZwdHguY2MgYi9nY2MvY29uZmlnL252cHR4L252cHR4LmNjCmluZGV4 IGU0Mjk3ZTJkNmMzLi4zMjkzYzA5NjgyMiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9udnB0 eC9udnB0eC5jYworKysgYi9nY2MvY29uZmlnL252cHR4L252cHR4LmNjCkBAIC05ODksMTUg Kzk4OSwxNSBAQCB3cml0ZV92YXJfbWFya2VyIChGSUxFICpmaWxlLCBib29sIGlzX2RlZm4s IGJvb2wgZ2xvYmFsaXplLCBjb25zdCBjaGFyICpuYW1lKQogCiBzdGF0aWMgdm9pZAogd3Jp dGVfZm5fcHJvdG9fMSAoc3RkOjpzdHJpbmdzdHJlYW0gJnMsIGJvb2wgaXNfZGVmbiwKLQkJ ICBjb25zdCBjaGFyICpuYW1lLCBjb25zdF90cmVlIGRlY2wpCisJCSAgY29uc3QgY2hhciAq bmFtZSwgY29uc3RfdHJlZSBkZWNsLCBib29sIGZvcmNlX3B1YmxpYykKIHsKICAgaWYgKGxv b2t1cF9hdHRyaWJ1dGUgKCJhbGlhcyIsIERFQ0xfQVRUUklCVVRFUyAoZGVjbCkpID09IE5V TEwpCi0gICAgd3JpdGVfZm5fbWFya2VyIChzLCBpc19kZWZuLCBUUkVFX1BVQkxJQyAoZGVj bCksIG5hbWUpOworICAgIHdyaXRlX2ZuX21hcmtlciAocywgaXNfZGVmbiwgVFJFRV9QVUJM SUMgKGRlY2wpIHx8IGZvcmNlX3B1YmxpYywgbmFtZSk7CiAKICAgLyogUFRYIGRlY2xhcmF0 aW9uLiAgKi8KICAgaWYgKERFQ0xfRVhURVJOQUwgKGRlY2wpKQogICAgIHMgPDwgIi5leHRl cm4gIjsKLSAgZWxzZSBpZiAoVFJFRV9QVUJMSUMgKGRlY2wpKQorICBlbHNlIGlmIChUUkVF X1BVQkxJQyAoZGVjbCkgfHwgZm9yY2VfcHVibGljKQogICAgIHMgPDwgKERFQ0xfV0VBSyAo ZGVjbCkgPyAiLndlYWsgIiA6ICIudmlzaWJsZSAiKTsKICAgcyA8PCAod3JpdGVfYXNfa2Vy bmVsIChERUNMX0FUVFJJQlVURVMgKGRlY2wpKSA/ICIuZW50cnkgIiA6ICIuZnVuYyAiKTsK IApAQCAtMTA4Niw3ICsxMDg2LDcgQEAgd3JpdGVfZm5fcHJvdG9fMSAoc3RkOjpzdHJpbmdz dHJlYW0gJnMsIGJvb2wgaXNfZGVmbiwKIAogc3RhdGljIHZvaWQKIHdyaXRlX2ZuX3Byb3Rv IChzdGQ6OnN0cmluZ3N0cmVhbSAmcywgYm9vbCBpc19kZWZuLAotCQljb25zdCBjaGFyICpu YW1lLCBjb25zdF90cmVlIGRlY2wpCisJCWNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0X3RyZWUg ZGVjbCwgYm9vbCBmb3JjZV9wdWJsaWM9ZmFsc2UpCiB7CiAgIGNvbnN0IGNoYXIgKnJlcGxh Y2VtZW50ID0gbnZwdHhfbmFtZV9yZXBsYWNlbWVudCAobmFtZSk7CiAgIGNoYXIgKnJlcGxh Y2VkX2RvdHMgPSBOVUxMOwpAQCAtMTEwMyw5ICsxMTAzLDkgQEAgd3JpdGVfZm5fcHJvdG8g KHN0ZDo6c3RyaW5nc3RyZWFtICZzLCBib29sIGlzX2RlZm4sCiAKICAgaWYgKGlzX2RlZm4p CiAgICAgLyogRW1pdCBhIGRlY2xhcmF0aW9uLiAgVGhlIFBUWCBhc3NlbWJsZXIgZ2V0cyB1 cHNldCB3aXRob3V0IGl0LiAgKi8KLSAgICB3cml0ZV9mbl9wcm90b18xIChzLCBmYWxzZSwg bmFtZSwgZGVjbCk7CisgICAgd3JpdGVfZm5fcHJvdG9fMSAocywgZmFsc2UsIG5hbWUsIGRl Y2wsIGZvcmNlX3B1YmxpYyk7CiAKLSAgd3JpdGVfZm5fcHJvdG9fMSAocywgaXNfZGVmbiwg bmFtZSwgZGVjbCk7CisgIHdyaXRlX2ZuX3Byb3RvXzEgKHMsIGlzX2RlZm4sIG5hbWUsIGRl Y2wsIGZvcmNlX3B1YmxpYyk7CiAKICAgaWYgKHJlcGxhY2VkX2RvdHMpCiAgICAgWERFTEVU RSAocmVwbGFjZWRfZG90cyk7CkBAIC0xNDgxLDcgKzE0ODEsMTMgQEAgbnZwdHhfZGVjbGFy ZV9mdW5jdGlvbl9uYW1lIChGSUxFICpmaWxlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdF90 cmVlIGRlY2wpCiAgIHRyZWUgZm50eXBlID0gVFJFRV9UWVBFIChkZWNsKTsKICAgdHJlZSBy ZXN1bHRfdHlwZSA9IFRSRUVfVFlQRSAoZm50eXBlKTsKICAgaW50IGFyZ25vID0gMDsKKyAg Ym9vbCBmb3JjZV9wdWJsaWMgPSBmYWxzZTsKIAorICAvKiBGb3IgcmV2ZXJzZS1vZmZsb2Fk ICdub2hvc3QnIGZ1bmN0aW9uczogSW4gb3JkZXIgdG8gYmUgY29sbGVjdGFibGUgaW4KKyAg ICAgJyRvZmZsb2FkX2Z1bmNfdGFibGUnLCBjZi4gbWtvZmZsb2FkLmNjLCB0aGUgZnVuY3Rp b24gaGFzIHRvIGJlIHZpc2libGUuICovCisgIGlmIChsb29rdXBfYXR0cmlidXRlICgib21w IHRhcmdldCBkZXZpY2VfYW5jZXN0b3Jfbm9ob3N0IiwKKwkJCURFQ0xfQVRUUklCVVRFUyAo ZGVjbCkpKQorICAgIGZvcmNlX3B1YmxpYyA9IHRydWU7CiAgIGlmIChsb29rdXBfYXR0cmli dXRlICgib21wIHRhcmdldCBlbnRyeXBvaW50IiwgREVDTF9BVFRSSUJVVEVTIChkZWNsKSkK ICAgICAgICYmICFsb29rdXBfYXR0cmlidXRlICgib2FjYyBmdW5jdGlvbiIsIERFQ0xfQVRU UklCVVRFUyAoZGVjbCkpKQogICAgIHsKQEAgLTE0OTMsNyArMTQ5OSw3IEBAIG52cHR4X2Rl Y2xhcmVfZnVuY3Rpb25fbmFtZSAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqbmFtZSwgY29u c3RfdHJlZSBkZWNsKQogICAvKiBXZSBjb25zdHJ1Y3QgdGhlIGluaXRpYWwgcGFydCBvZiB0 aGUgZnVuY3Rpb24gaW50byBhIHN0cmluZwogICAgICBzdHJlYW0sIGluIG9yZGVyIHRvIHNo YXJlIHRoZSBwcm90b3R5cGUgd3JpdGluZyBjb2RlLiAgKi8KICAgc3RkOjpzdHJpbmdzdHJl YW0gczsKLSAgd3JpdGVfZm5fcHJvdG8gKHMsIHRydWUsIG5hbWUsIGRlY2wpOworICB3cml0 ZV9mbl9wcm90byAocywgdHJ1ZSwgbmFtZSwgZGVjbCwgZm9yY2VfcHVibGljKTsKICAgcyA8 PCAie1xuIjsKIAogICBib29sIHJldHVybl9pbl9tZW0gPSB3cml0ZV9yZXR1cm5fdHlwZSAo cywgZmFsc2UsIHJlc3VsdF90eXBlKTsKZGlmZiAtLWdpdCBhL2xpYmdvbXAvcGx1Z2luL3Bs dWdpbi1udnB0eC5jIGIvbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKaW5kZXggZDEz MDY2NWVkMTkuLmFjNDAwZmMyYTFkIDEwMDY0NAotLS0gYS9saWJnb21wL3BsdWdpbi9wbHVn aW4tbnZwdHguYworKysgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHguYwpAQCAtMTI3 Myw3ICsxMjczLDcgQEAgbnZwdHhfc2V0X2Nsb2NrdGljayAoQ1Vtb2R1bGUgbW9kdWxlLCBz dHJ1Y3QgcHR4X2RldmljZSAqZGV2KQogaW50CiBHT01QX09GRkxPQURfbG9hZF9pbWFnZSAo aW50IG9yZCwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3Qgdm9pZCAqdGFyZ2V0X2RhdGEsCiAJ CQkgc3RydWN0IGFkZHJfcGFpciAqKnRhcmdldF90YWJsZSwKLQkJCSB1aW50NjRfdCAqKnJl dl9mbl90YWJsZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKKwkJCSB1aW50NjRfdCAqKnJl dl9mbl90YWJsZSkKIHsKICAgQ1Vtb2R1bGUgbW9kdWxlOwogICBjb25zdCBjaGFyICpjb25z dCAqdmFyX25hbWVzOwpAQCAtMTM3Niw2ICsxMzc2LDIzIEBAIEdPTVBfT0ZGTE9BRF9sb2Fk X2ltYWdlIChpbnQgb3JkLCB1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCB2b2lkICp0YXJnZXRf ZGF0YSwKICAgICB0YXJnX3RibC0+c3RhcnQgPSB0YXJnX3RibC0+ZW5kID0gMDsKICAgdGFy Z190YmwrKzsKIAorICBpZiAocmV2X2ZuX3RhYmxlICYmIGZuX2VudHJpZXMgPT0gMCkKKyAg ICAqcmV2X2ZuX3RhYmxlID0gTlVMTDsKKyAgZWxzZSBpZiAocmV2X2ZuX3RhYmxlKQorICAg IHsKKyAgICAgIENVZGV2aWNlcHRyIHZhcjsKKyAgICAgIHNpemVfdCBieXRlczsKKyAgICAg IHIgPSBDVURBX0NBTExfTk9DSEVDSyAoY3VNb2R1bGVHZXRHbG9iYWwsICZ2YXIsICZieXRl cywgbW9kdWxlLAorCQkJICAgICAiJG9mZmxvYWRfZnVuY190YWJsZSIpOworICAgICAgaWYg KHIgIT0gQ1VEQV9TVUNDRVNTKQorCUdPTVBfUExVR0lOX2ZhdGFsICgiY3VNb2R1bGVHZXRH bG9iYWwgZXJyb3I6ICVzIiwgY3VkYV9lcnJvciAocikpOworICAgICAgYXNzZXJ0IChieXRl cyA9PSBzaXplb2YgKHVpbnQ2NF90KSAqIGZuX2VudHJpZXMpOworICAgICAgKnJldl9mbl90 YWJsZSA9IEdPTVBfUExVR0lOX21hbGxvYyAoc2l6ZW9mICh1aW50NjRfdCkgKiBmbl9lbnRy aWVzKTsKKyAgICAgIHIgPSBDVURBX0NBTExfTk9DSEVDSyAoY3VNZW1jcHlEdG9ILCAqcmV2 X2ZuX3RhYmxlLCB2YXIsIGJ5dGVzKTsKKyAgICAgIGlmIChyICE9IENVREFfU1VDQ0VTUykK KwlHT01QX1BMVUdJTl9mYXRhbCAoImN1TWVtY3B5RHRvSCBlcnJvcjogJXMiLCBjdWRhX2Vy cm9yIChyKSk7CisgICAgfQorCiAgIG52cHR4X3NldF9jbG9ja3RpY2sgKG1vZHVsZSwgZGV2 KTsKIAogICByZXR1cm4gZm5fZW50cmllcyArIHZhcl9lbnRyaWVzICsgb3RoZXJfZW50cmll czsK --------------bVHI0hEY0rBZ0WgpgVSm3dWR-- 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 BA3133858C2F for ; Thu, 25 Aug 2022 17:30:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BA3133858C2F 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.93,263,1654588800"; d="diff'?scan'208,217";a="84699004" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 25 Aug 2022 09:30:19 -0800 IronPort-SDR: O5NTzziEkZaBqWZTYPnXSUsIB5eRZUM3aZdwTDuaZ6Chr1vBJ3bh4tg5VOXJBIho4DMNoAYuG9 3oPJae8Mf137spzThEq3e3m4X1CNXsFA+3jMwXZsngUJC/pJ1TylDL4siCXvKmFPaHvuQdT2QM MrCEz5tWxwTtBLNepEZVV+CtMikO9d/oR0mwVZ9TJsjEIOhdY67p6b9lXoXCuJCzFb4dLiPlrF pdKdKtqn9+dc3vqSE2XupCFSQK2DI68Zt82y89fnWGs1gkmAg0OB2KsaMBa0B1f9/rrxfHxRSd Fgw= Content-Type: multipart/mixed; boundary="------------bVHI0hEY0rBZ0WgpgVSm3dWR" Message-ID: Date: Thu, 25 Aug 2022 19:30:14 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: [Patch][2/3] nvptx: libgomp+mkoffload.cc: Prepare for reverse offload fn lookup Content-Language: en-US From: Tobias Burnus To: gcc-patches , Jakub Jelinek , Tom de Vries References: <40563a1c-49ef-a185-3c01-9f717cd48fc5@codesourcery.com> In-Reply-To: <40563a1c-49ef-a185-3c01-9f717cd48fc5@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-13.mgc.mentorg.com (139.181.222.13) 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,HTML_MESSAGE,KAM_DMARC_STATUS,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: Message-ID: <20220825173014.eKw9b0D5A6Fvka7mxQOmX5Sw7Bufrf3c-t5BRSYDg2M@z> --------------bVHI0hEY0rBZ0WgpgVSm3dWR Content-Type: multipart/alternative; boundary="------------Y9069WJIFBcklnB17wmlLKFq" --------------Y9069WJIFBcklnB17wmlLKFq Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable On 25.08.22 16:54, Tobias Burnus wrote: The attached patch prepare for reverse-offload device->host function-address lookup by requesting (if needed) the on-device address. This patch adds the actual implementation for NVPTX. Having array[] =3D {fn1,fn2}; works with nvptx only since sm_35; hence, if there is a reverse_offload and sm_30 is used, there will be a compile-ti= me error. To avoid incompatibilities, I compile with the same PTX ISA .version and sm_XX version as the (last) file that contains the reverse offload. While it should not matter, some newer CUDA might not support, e.g., sm_35 or do not like a specific ISA version - thus, that seemed to be safer. This is currently effectively a no op as with [1/3] patch, always NULL is passed and as GOMP_OFFLOAD_get_num_devices returns <=3D 0 as soon as 'omp requires reverse_offload' has been specified. 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 --------------Y9069WJIFBcklnB17wmlLKFq-- --------------bVHI0hEY0rBZ0WgpgVSm3dWR Content-Type: text/x-patch; charset="UTF-8"; name="fn-lookup-nvptx.diff" Content-Disposition: attachment; filename="fn-lookup-nvptx.diff" Content-Transfer-Encoding: base64 bnZwdHg6IGxpYmdvbXArbWtvZmZsb2FkLmNjOiBQcmVwYXJlIGZvciByZXZl cnNlIG9mZmxvYWQgZm4gbG9va3VwCgpBZGQgc3VwcG9ydCB0byBudnB0eCBm b3IgcmV2ZXJzZSBsb29rdXAgb2YgZnVuY3Rpb24gbmFtZSB0byBwcmVwYXJl IGZvcgonb21wIHRhcmdldCBkZXZpY2UoYW5jZXN0b3I6MSknLgoKZ2NjL0No YW5nZUxvZzoKCgkqIGNvbmZpZy9udnB0eC9ta29mZmxvYWQuY2MgKHJlY29y ZF9pZCk6IFN0cmlwIHF1b3RhdGlvbnMgZnJvbQoJZnVuY3Rpb24gbmFtZS4K CShwcm9jZXNzKTogRm9yIEdPTVBfUkVRVUlSRVNfUkVWRVJTRV9PRkZMT0FE LCBjaGVjayB0aGF0IC1tYXJjaCBpcwoJYXQgbGVhc3Qgc21fMzUsIGNyZWF0 ZSAnJG9mZmxvYWRfZnVuY190YWJsZScgZ2xvYmFsIGFycmF5IGFuZCBpbml0 Cgl3aXRoIHJldmVyc2Utb2ZmbG9hZCBmdW5jdGlvbiBhZGRyZXNzZXMuCgkq IGNvbmZpZy9udnB0eC9udnB0eC5jYyAod3JpdGVfZm5fcHJvdG9fMSwgd3Jp dGVfZm5fcHJvdG8pOiBOZXcKCWZvcmNlX3B1YmxpYyBhdHRyaWJ1dGUgdG8g Zm9yY2UgLnZpc2libGUuCgkobnZwdHhfZGVjbGFyZV9mdW5jdGlvbl9uYW1l KTogRm9yICJvbXAgdGFyZ2V0CglkZXZpY2VfYW5jZXN0b3Jfbm9ob3N0IiBh dHRyaWJ1dCwgZm9yY2UgLnZpc2libGUvVFJFRV9QVUJMSUMuCgpsaWJnb21w L0NoYW5nZUxvZzoKCgkqIHBsdWdpbi9wbHVnaW4tbnZwdHguYyAoR09NUF9P RkZMT0FEX2xvYWRfaW1hZ2UpOiBSZWFkIG9mZmxvYWQKCWZ1bmN0aW9uIGFk ZHJlc3MgdGFibGUgJyRvZmZsb2FkX2Z1bmNfdGFibGUnIGlmIHJldl9mbl90 YWJsZQoJaXMgbm90IE5VTEwuCgogZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxv YWQuY2MgfCAxMDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tCiBnY2MvY29uZmlnL252cHR4L252cHR4LmNjICAgICB8ICAy MCArKysrKy0tLQogbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMgfCAg MTkgKysrKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMo KyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9jb25maWcv bnZwdHgvbWtvZmZsb2FkLmNjIGIvZ2NjL2NvbmZpZy9udnB0eC9ta29mZmxv YWQuY2MKaW5kZXggM2VlYTBhOGYxMzguLmM0OTY3NjZiMWNjIDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL252cHR4L21rb2ZmbG9hZC5jYworKysgYi9nY2Mv Y29uZmlnL252cHR4L21rb2ZmbG9hZC5jYwpAQCAtMTA4LDEyICsxMDgsMTQg QEAgeHB1dGVudiAoY29uc3QgY2hhciAqc3RyaW5nKQogc3RhdGljIHZvaWQK IHJlY29yZF9pZCAoY29uc3QgY2hhciAqcDEsIGlkX21hcCAqKip3aGVyZSkK IHsKKyAgZ2NjX2Fzc2VydCAocDFbMF0gPT0gJyInKTsKKyAgcDErKzsKICAg Y29uc3QgY2hhciAqZW5kID0gc3RyY2hyIChwMSwgJ1xuJyk7CiAgIGlmICgh ZW5kKQogICAgIGZhdGFsX2Vycm9yIChpbnB1dF9sb2NhdGlvbiwgIm1hbGZv cm1lZCBwdHggZmlsZSIpOwogCiAgIGlkX21hcCAqdiA9IFhORVcgKGlkX21h cCk7Ci0gIHNpemVfdCBsZW4gPSBlbmQgLSBwMTsKKyAgc2l6ZV90IGxlbiA9 IGVuZCAtIHAxIC0gMSA7IC8qIHJlbW92ZSB0YWlsaW5nICciJyAgKi8KICAg di0+cHR4X25hbWUgPSBYTkVXVkVDIChjaGFyLCBsZW4gKyAxKTsKICAgbWVt Y3B5ICh2LT5wdHhfbmFtZSwgcDEsIGxlbik7CiAgIHYtPnB0eF9uYW1lW2xl bl0gPSAnXDAnOwpAQCAtMjQyLDYgKzI0NCwxMCBAQCBwcm9jZXNzIChGSUxF ICppbiwgRklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAgIGlk X21hcCBjb25zdCAqaWQ7CiAgIHVuc2lnbmVkIG9ial9jb3VudCA9IDA7CiAg IHVuc2lnbmVkIGl4OworICBjb25zdCBjaGFyICpzbV92ZXIgPSBOVUxMLCAq dmVyc2lvbiA9IE5VTEw7CisgIGNvbnN0IGNoYXIgKnNtX3ZlcjIgPSBOVUxM LCAqdmVyc2lvbjIgPSBOVUxMOworICBzaXplX3QgZmlsZV9jbnQgPSAwOwor ICBzaXplX3QgKmZpbGVfaWR4ID0gWEFMTE9DQVZFQyAoc2l6ZV90LCBsZW4p OwogCiAgIGZwcmludGYgKG91dCwgIiNpbmNsdWRlIDxzdGRpbnQuaD5cblxu Iik7CiAKQEAgLTI1MCw2ICsyNTYsOCBAQCBwcm9jZXNzIChGSUxFICppbiwg RklMRSAqb3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAgIGZvciAoc2l6 ZV90IGkgPSAwOyBpICE9IGxlbjspCiAgICAgewogICAgICAgY2hhciBjOwor ICAgICAgYm9vbCBvdXRwdXRfZm5fcHRyID0gZmFsc2U7CisgICAgICBmaWxl X2lkeFtmaWxlX2NudCsrXSA9IGk7CiAKICAgICAgIGZwcmludGYgKG91dCwg InN0YXRpYyBjb25zdCBjaGFyIHB0eF9jb2RlXyV1W10gPVxuXHRcIiIsIG9i al9jb3VudCsrKTsKICAgICAgIHdoaWxlICgoYyA9IGlucHV0W2krK10pKQpA QCAtMjYxLDYgKzI2OSwxNiBAQCBwcm9jZXNzIChGSUxFICppbiwgRklMRSAq b3V0LCB1aW50MzJfdCBvbXBfcmVxdWlyZXMpCiAJICAgIGNhc2UgJ1xuJzoK IAkgICAgICBmcHJpbnRmIChvdXQsICJcXG5cIlxuXHRcIiIpOwogCSAgICAg IC8qIExvb2sgZm9yIG1hcHBpbmdzIG9uIHN1YnNlcXVlbnQgbGluZXMuICAq LworCSAgICAgIGlmIChVTkxJS0VMWSAoc3RhcnRzd2l0aCAoaW5wdXQgKyBp LCAiLnRhcmdldCBzbV8iKSkpCisJCXsKKwkJICBzbV92ZXIgPSBpbnB1dCAr IGkgKyBzdHJsZW4gKCIudGFyZ2V0IHNtXyIpOworCQkgIGNvbnRpbnVlOwor CQl9CisJICAgICAgaWYgKFVOTElLRUxZIChzdGFydHN3aXRoIChpbnB1dCAr IGksICIudmVyc2lvbiAiKSkpCisJCXsKKwkJICB2ZXJzaW9uID0gaW5wdXQg KyBpICsgc3RybGVuICgiLnZlcnNpb24gIik7CisJCSAgY29udGludWU7CisJ CX0KIAkgICAgICB3aGlsZSAoc3RhcnRzd2l0aCAoaW5wdXQgKyBpLCAiLy86 IikpCiAJCXsKIAkJICBpICs9IDM7CkBAIC0yNjgsNyArMjg2LDEwIEBAIHBy b2Nlc3MgKEZJTEUgKmluLCBGSUxFICpvdXQsIHVpbnQzMl90IG9tcF9yZXF1 aXJlcykKIAkJICBpZiAoc3RhcnRzd2l0aCAoaW5wdXQgKyBpLCAiVkFSX01B UCAiKSkKIAkJICAgIHJlY29yZF9pZCAoaW5wdXQgKyBpICsgOCwgJnZhcnNf dGFpbCk7CiAJCSAgZWxzZSBpZiAoc3RhcnRzd2l0aCAoaW5wdXQgKyBpLCAi RlVOQ19NQVAgIikpCi0JCSAgICByZWNvcmRfaWQgKGlucHV0ICsgaSArIDks ICZmdW5jc190YWlsKTsKKwkJICAgIHsKKwkJICAgICAgb3V0cHV0X2ZuX3B0 ciA9IHRydWU7CisJCSAgICAgIHJlY29yZF9pZCAoaW5wdXQgKyBpICsgOSwg JmZ1bmNzX3RhaWwpOworCQkgICAgfQogCQkgIGVsc2UKIAkJICAgIGFib3J0 ICgpOwogCQkgIC8qIFNraXAgdG8gbmV4dCBsaW5lLiAqLwpAQCAtMjg2LDYg KzMwNyw4MSBAQCBwcm9jZXNzIChGSUxFICppbiwgRklMRSAqb3V0LCB1aW50 MzJfdCBvbXBfcmVxdWlyZXMpCiAJICBwdXRjIChjLCBvdXQpOwogCX0KICAg ICAgIGZwcmludGYgKG91dCwgIlwiO1xuXG4iKTsKKyAgICAgIGlmIChvdXRw dXRfZm5fcHRyCisJICAmJiAob21wX3JlcXVpcmVzICYgR09NUF9SRVFVSVJF U19SRVZFUlNFX09GRkxPQUQpICE9IDApCisJeworCSAgaWYgKHNtX3ZlciAm JiBzbV92ZXJbMF0gPT0gJzMnICYmIHNtX3ZlclsxXSA9PSAnMCcKKwkgICAg ICAmJiBzbV92ZXJbMl0gPT0gJ1xuJykKKwkgICAgZmF0YWxfZXJyb3IgKGlu cHV0X2xvY2F0aW9uLAorCQkJICIlPG9tcCByZXF1aXJlcyByZXZlcnNlX29m ZmxvYWQlPiByZXF1aXJlcyBhdCBsZWFzdCAiCisJCQkgIiU8c21fMzUlPiBm b3IgJTwtbWlzYT0lPiIpOworCSAgc21fdmVyMiA9IHNtX3ZlcjsKKwkgIHZl cnNpb24yID0gdmVyc2lvbjsKKwl9CisgICAgfQorCisgIC8qIENyZWF0ZSBm dW5jdGlvbi1wb2ludGVyIGFycmF5LCByZXF1aXJlZCBmb3IgcmV2ZXJzZQor ICAgICBvZmZsb2FkIGZ1bmN0aW9uLXBvaW50ZXIgbG9va3VwLiAgKi8KKwor ICBpZiAoZnVuY19pZHMgJiYgKG9tcF9yZXF1aXJlcyAmIEdPTVBfUkVRVUlS RVNfUkVWRVJTRV9PRkZMT0FEKSAhPSAwKQorICAgIHsKKyAgICAgIGNvbnN0 IGNoYXIgbmVlZGxlW10gPSAiLy8gQkVHSU4gR0xPQkFMIEZVTkNUSU9OIERF Q0w6ICI7CisgICAgICBmcHJpbnRmIChvdXQsICJzdGF0aWMgY29uc3QgY2hh ciBwdHhfY29kZV8ldVtdID1cbiIsIG9ial9jb3VudCsrKTsKKyAgICAgIGZw cmludGYgKG91dCwgIlx0XCIudmVyc2lvbiAiKTsKKyAgICAgIGZvciAoc2l6 ZV90IGkgPSAwOyB2ZXJzaW9uMltpXSAhPSAnXDAnICYmIHZlcnNpb24yW2ld ICE9ICdcbic7IGkrKykKKwlmcHV0YyAodmVyc2lvbjJbaV0sIG91dCk7Cisg ICAgICBmcHJpbnRmIChvdXQsICJcIlxuXHRcIi50YXJnZXQgc21fIik7Cisg ICAgICBmb3IgKHNpemVfdCBpID0gMDsgdmVyc2lvbjJbaV0gIT0gJ1wwJyAm JiBzbV92ZXIyW2ldICE9ICdcbic7IGkrKykKKwlmcHV0YyAoc21fdmVyMltp XSwgb3V0KTsKKyAgICAgIGZwcmludGYgKG91dCwgIlwiXG5cdFwiLmZpbGUg MSBcXFwiPGR1bW15PlxcXCJcIlxuIik7CisKKyAgICAgIHNpemVfdCBmaWR4 ID0gMDsKKyAgICAgIGZvciAoaWQgPSBmdW5jX2lkczsgaWQ7IGlkID0gaWQt Pm5leHQpCisJeworCSAgLyogT25seSAnbm9ob3N0JyBmdW5jdGlvbnMgYXJl IG5lZWRlZCAtIHVzZSBOVUxMIGZvciB0aGUgcmVzdC4KKwkgICAgIEFsdGVy bmF0aXZlbHksIGJlc2lkZXMgc2VhcmNoaW5nIGZvciAnQkVHSU4gRlVOQ1RJ T04gREVDTCcsCisJICAgICBjaGVja2luZyBmb3IgJy52aXNpYmxlIC5lbnRy eSAnICsgaWQtPnB0eF9uYW1lIHdvdWxkIGJlCisJICAgICByZXF1aXJlZC4g ICovCisJICBpZiAoIWVuZHN3aXRoIChpZC0+cHR4X25hbWUsICIkbm9ob3N0 IikpCisJICAgIGNvbnRpbnVlOworCSAgZnByaW50ZiAob3V0LCAiXHRcIi5l eHRlcm4gIik7CisJICBjb25zdCBjaGFyICpwID0gaW5wdXQgKyBmaWxlX2lk eFtmaWR4XTsKKwkgIHdoaWxlICh0cnVlKQorCSAgICB7CisJICAgICAgcCA9 IHN0cnN0ciAocCwgbmVlZGxlKTsKKwkgICAgICBpZiAoIXApCisJCXsKKwkJ ICBmaWR4Kys7CisJCSAgaWYgKGZpZHggPj0gZmlsZV9jbnQpCisJCSAgICBi cmVhazsKKwkJICBwID0gaW5wdXQgKyBmaWxlX2lkeFtmaWR4XTsKKwkJICBj b250aW51ZTsKKwkJfQorCSAgICAgIHAgKz0gc3RybGVuIChuZWVkbGUpOwor CSAgICAgIGlmICghc3RhcnRzd2l0aCAocCwgaWQtPnB0eF9uYW1lKSkKKwkJ Y29udGludWU7CisJICAgICAgcCArPSBzdHJsZW4gKGlkLT5wdHhfbmFtZSk7 CisJICAgICAgaWYgKCpwICE9ICdcbicpCisJCWNvbnRpbnVlOworCSAgICAg IHArKzsKKwkgICAgICBnY2NfYXNzZXJ0IChzdGFydHN3aXRoIChwLCAiLnZp c2libGUgIikpOworCSAgICAgIHAgKz0gc3RybGVuICgiLnZpc2libGUgIik7 CisJICAgICAgZm9yICg7ICpwICE9ICdcMCcgJiYgKnAgIT0gJ1xuJzsgcCsr KQorCQlmcHV0YyAoKnAsIG91dCk7CisJICAgICAgYnJlYWs7CisJICAgIH0K KwkgIGZwcmludGYgKG91dCwgIlwiXG4iKTsKKwkgIGlmIChmaWR4ID09IGZp bGVfY250KQorCSAgICBmYXRhbF9lcnJvciAoaW5wdXRfbG9jYXRpb24sCisJ CQkgIkNhbm5vdCBmaW5kIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZvciAlcXMi LAorCQkJIGlkLT5wdHhfbmFtZSk7CisJfQorICAgICAgZnByaW50ZiAob3V0 LCAiXHRcIi52aXNpYmxlIC5nbG9iYWwgLmFsaWduIDggLnU2NCAiCisJCSAg ICAiJG9mZmxvYWRfZnVuY190YWJsZVtdID0geyIpOworICAgICAgZm9yIChj b21tYSA9ICIiLCBpZCA9IGZ1bmNfaWRzOyBpZDsgY29tbWEgPSAiLCIsIGlk ID0gaWQtPm5leHQpCisJZnByaW50ZiAob3V0LCAiJXNcIlxuXHRcdFwiJXMi LCBjb21tYSwKKwkJIGVuZHN3aXRoIChpZC0+cHR4X25hbWUsICIkbm9ob3N0 IikgPyBpZC0+cHR4X25hbWUgOiAiMCIpOworICAgICAgZnByaW50ZiAob3V0 LCAifTtcXG5cIjtcblxuIik7CiAgICAgfQogCiAgIC8qIER1bXAgb3V0IGFy cmF5IG9mIHBvaW50ZXJzIHRvIHB0eCBvYmplY3Qgc3RyaW5ncy4gICovCkBA IC0zMDAsNyArMzk2LDcgQEAgcHJvY2VzcyAoRklMRSAqaW4sIEZJTEUgKm91 dCwgdWludDMyX3Qgb21wX3JlcXVpcmVzKQogICAvKiBEdW1wIG91dCB2YXJp YWJsZSBpZGVudHMuICAqLwogICBmcHJpbnRmIChvdXQsICJzdGF0aWMgY29u c3QgY2hhciAqY29uc3QgdmFyX21hcHBpbmdzW10gPSB7Iik7CiAgIGZvciAo Y29tbWEgPSAiIiwgaWQgPSB2YXJfaWRzOyBpZDsgY29tbWEgPSAiLCIsIGlk ID0gaWQtPm5leHQpCi0gICAgZnByaW50ZiAob3V0LCAiJXNcblx0JXMiLCBj b21tYSwgaWQtPnB0eF9uYW1lKTsKKyAgICBmcHJpbnRmIChvdXQsICIlc1xu XHRcIiVzXCIiLCBjb21tYSwgaWQtPnB0eF9uYW1lKTsKICAgZnByaW50ZiAo b3V0LCAiXG59O1xuXG4iKTsKIAogICAvKiBEdW1wIG91dCBmdW5jdGlvbiBp ZGVudHMuICAqLwpAQCAtMzA5LDcgKzQwNSw3IEBAIHByb2Nlc3MgKEZJTEUg KmluLCBGSUxFICpvdXQsIHVpbnQzMl90IG9tcF9yZXF1aXJlcykKIAkgICAi ICB1bnNpZ25lZCBzaG9ydCBkaW1bJWRdO1xuIgogCSAgICJ9IGZ1bmNfbWFw cGluZ3NbXSA9IHtcbiIsIEdPTVBfRElNX01BWCk7CiAgIGZvciAoY29tbWEg PSAiIiwgaWQgPSBmdW5jX2lkczsgaWQ7IGNvbW1hID0gIiwiLCBpZCA9IGlk LT5uZXh0KQotICAgIGZwcmludGYgKG91dCwgIiVzXG5cdHslc30iLCBjb21t YSwgaWQtPnB0eF9uYW1lKTsKKyAgICBmcHJpbnRmIChvdXQsICIlc1xuXHR7 XCIlc1wifSIsIGNvbW1hLCBpZC0+cHR4X25hbWUpOwogICBmcHJpbnRmIChv dXQsICJcbn07XG5cbiIpOwogCiAgIGZwcmludGYgKG91dCwKZGlmZiAtLWdp dCBhL2djYy9jb25maWcvbnZwdHgvbnZwdHguY2MgYi9nY2MvY29uZmlnL252 cHR4L252cHR4LmNjCmluZGV4IGU0Mjk3ZTJkNmMzLi4zMjkzYzA5NjgyMiAx MDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9udnB0eC9udnB0eC5jYworKysgYi9n Y2MvY29uZmlnL252cHR4L252cHR4LmNjCkBAIC05ODksMTUgKzk4OSwxNSBA QCB3cml0ZV92YXJfbWFya2VyIChGSUxFICpmaWxlLCBib29sIGlzX2RlZm4s IGJvb2wgZ2xvYmFsaXplLCBjb25zdCBjaGFyICpuYW1lKQogCiBzdGF0aWMg dm9pZAogd3JpdGVfZm5fcHJvdG9fMSAoc3RkOjpzdHJpbmdzdHJlYW0gJnMs IGJvb2wgaXNfZGVmbiwKLQkJICBjb25zdCBjaGFyICpuYW1lLCBjb25zdF90 cmVlIGRlY2wpCisJCSAgY29uc3QgY2hhciAqbmFtZSwgY29uc3RfdHJlZSBk ZWNsLCBib29sIGZvcmNlX3B1YmxpYykKIHsKICAgaWYgKGxvb2t1cF9hdHRy aWJ1dGUgKCJhbGlhcyIsIERFQ0xfQVRUUklCVVRFUyAoZGVjbCkpID09IE5V TEwpCi0gICAgd3JpdGVfZm5fbWFya2VyIChzLCBpc19kZWZuLCBUUkVFX1BV QkxJQyAoZGVjbCksIG5hbWUpOworICAgIHdyaXRlX2ZuX21hcmtlciAocywg aXNfZGVmbiwgVFJFRV9QVUJMSUMgKGRlY2wpIHx8IGZvcmNlX3B1YmxpYywg bmFtZSk7CiAKICAgLyogUFRYIGRlY2xhcmF0aW9uLiAgKi8KICAgaWYgKERF Q0xfRVhURVJOQUwgKGRlY2wpKQogICAgIHMgPDwgIi5leHRlcm4gIjsKLSAg ZWxzZSBpZiAoVFJFRV9QVUJMSUMgKGRlY2wpKQorICBlbHNlIGlmIChUUkVF X1BVQkxJQyAoZGVjbCkgfHwgZm9yY2VfcHVibGljKQogICAgIHMgPDwgKERF Q0xfV0VBSyAoZGVjbCkgPyAiLndlYWsgIiA6ICIudmlzaWJsZSAiKTsKICAg cyA8PCAod3JpdGVfYXNfa2VybmVsIChERUNMX0FUVFJJQlVURVMgKGRlY2wp KSA/ICIuZW50cnkgIiA6ICIuZnVuYyAiKTsKIApAQCAtMTA4Niw3ICsxMDg2 LDcgQEAgd3JpdGVfZm5fcHJvdG9fMSAoc3RkOjpzdHJpbmdzdHJlYW0gJnMs IGJvb2wgaXNfZGVmbiwKIAogc3RhdGljIHZvaWQKIHdyaXRlX2ZuX3Byb3Rv IChzdGQ6OnN0cmluZ3N0cmVhbSAmcywgYm9vbCBpc19kZWZuLAotCQljb25z dCBjaGFyICpuYW1lLCBjb25zdF90cmVlIGRlY2wpCisJCWNvbnN0IGNoYXIg Km5hbWUsIGNvbnN0X3RyZWUgZGVjbCwgYm9vbCBmb3JjZV9wdWJsaWM9ZmFs c2UpCiB7CiAgIGNvbnN0IGNoYXIgKnJlcGxhY2VtZW50ID0gbnZwdHhfbmFt ZV9yZXBsYWNlbWVudCAobmFtZSk7CiAgIGNoYXIgKnJlcGxhY2VkX2RvdHMg PSBOVUxMOwpAQCAtMTEwMyw5ICsxMTAzLDkgQEAgd3JpdGVfZm5fcHJvdG8g KHN0ZDo6c3RyaW5nc3RyZWFtICZzLCBib29sIGlzX2RlZm4sCiAKICAgaWYg KGlzX2RlZm4pCiAgICAgLyogRW1pdCBhIGRlY2xhcmF0aW9uLiAgVGhlIFBU WCBhc3NlbWJsZXIgZ2V0cyB1cHNldCB3aXRob3V0IGl0LiAgKi8KLSAgICB3 cml0ZV9mbl9wcm90b18xIChzLCBmYWxzZSwgbmFtZSwgZGVjbCk7CisgICAg d3JpdGVfZm5fcHJvdG9fMSAocywgZmFsc2UsIG5hbWUsIGRlY2wsIGZvcmNl X3B1YmxpYyk7CiAKLSAgd3JpdGVfZm5fcHJvdG9fMSAocywgaXNfZGVmbiwg bmFtZSwgZGVjbCk7CisgIHdyaXRlX2ZuX3Byb3RvXzEgKHMsIGlzX2RlZm4s IG5hbWUsIGRlY2wsIGZvcmNlX3B1YmxpYyk7CiAKICAgaWYgKHJlcGxhY2Vk X2RvdHMpCiAgICAgWERFTEVURSAocmVwbGFjZWRfZG90cyk7CkBAIC0xNDgx LDcgKzE0ODEsMTMgQEAgbnZwdHhfZGVjbGFyZV9mdW5jdGlvbl9uYW1lIChG SUxFICpmaWxlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdF90cmVlIGRlY2wp CiAgIHRyZWUgZm50eXBlID0gVFJFRV9UWVBFIChkZWNsKTsKICAgdHJlZSBy ZXN1bHRfdHlwZSA9IFRSRUVfVFlQRSAoZm50eXBlKTsKICAgaW50IGFyZ25v ID0gMDsKKyAgYm9vbCBmb3JjZV9wdWJsaWMgPSBmYWxzZTsKIAorICAvKiBG b3IgcmV2ZXJzZS1vZmZsb2FkICdub2hvc3QnIGZ1bmN0aW9uczogSW4gb3Jk ZXIgdG8gYmUgY29sbGVjdGFibGUgaW4KKyAgICAgJyRvZmZsb2FkX2Z1bmNf dGFibGUnLCBjZi4gbWtvZmZsb2FkLmNjLCB0aGUgZnVuY3Rpb24gaGFzIHRv IGJlIHZpc2libGUuICovCisgIGlmIChsb29rdXBfYXR0cmlidXRlICgib21w IHRhcmdldCBkZXZpY2VfYW5jZXN0b3Jfbm9ob3N0IiwKKwkJCURFQ0xfQVRU UklCVVRFUyAoZGVjbCkpKQorICAgIGZvcmNlX3B1YmxpYyA9IHRydWU7CiAg IGlmIChsb29rdXBfYXR0cmlidXRlICgib21wIHRhcmdldCBlbnRyeXBvaW50 IiwgREVDTF9BVFRSSUJVVEVTIChkZWNsKSkKICAgICAgICYmICFsb29rdXBf YXR0cmlidXRlICgib2FjYyBmdW5jdGlvbiIsIERFQ0xfQVRUUklCVVRFUyAo ZGVjbCkpKQogICAgIHsKQEAgLTE0OTMsNyArMTQ5OSw3IEBAIG52cHR4X2Rl Y2xhcmVfZnVuY3Rpb25fbmFtZSAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAq bmFtZSwgY29uc3RfdHJlZSBkZWNsKQogICAvKiBXZSBjb25zdHJ1Y3QgdGhl IGluaXRpYWwgcGFydCBvZiB0aGUgZnVuY3Rpb24gaW50byBhIHN0cmluZwog ICAgICBzdHJlYW0sIGluIG9yZGVyIHRvIHNoYXJlIHRoZSBwcm90b3R5cGUg d3JpdGluZyBjb2RlLiAgKi8KICAgc3RkOjpzdHJpbmdzdHJlYW0gczsKLSAg d3JpdGVfZm5fcHJvdG8gKHMsIHRydWUsIG5hbWUsIGRlY2wpOworICB3cml0 ZV9mbl9wcm90byAocywgdHJ1ZSwgbmFtZSwgZGVjbCwgZm9yY2VfcHVibGlj KTsKICAgcyA8PCAie1xuIjsKIAogICBib29sIHJldHVybl9pbl9tZW0gPSB3 cml0ZV9yZXR1cm5fdHlwZSAocywgZmFsc2UsIHJlc3VsdF90eXBlKTsKZGlm ZiAtLWdpdCBhL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0eC5jIGIvbGli Z29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKaW5kZXggZDEzMDY2NWVkMTku LmFjNDAwZmMyYTFkIDEwMDY0NAotLS0gYS9saWJnb21wL3BsdWdpbi9wbHVn aW4tbnZwdHguYworKysgYi9saWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHgu YwpAQCAtMTI3Myw3ICsxMjczLDcgQEAgbnZwdHhfc2V0X2Nsb2NrdGljayAo Q1Vtb2R1bGUgbW9kdWxlLCBzdHJ1Y3QgcHR4X2RldmljZSAqZGV2KQogaW50 CiBHT01QX09GRkxPQURfbG9hZF9pbWFnZSAoaW50IG9yZCwgdW5zaWduZWQg dmVyc2lvbiwgY29uc3Qgdm9pZCAqdGFyZ2V0X2RhdGEsCiAJCQkgc3RydWN0 IGFkZHJfcGFpciAqKnRhcmdldF90YWJsZSwKLQkJCSB1aW50NjRfdCAqKnJl dl9mbl90YWJsZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKKwkJCSB1aW50 NjRfdCAqKnJldl9mbl90YWJsZSkKIHsKICAgQ1Vtb2R1bGUgbW9kdWxlOwog ICBjb25zdCBjaGFyICpjb25zdCAqdmFyX25hbWVzOwpAQCAtMTM3Niw2ICsx Mzc2LDIzIEBAIEdPTVBfT0ZGTE9BRF9sb2FkX2ltYWdlIChpbnQgb3JkLCB1 bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCB2b2lkICp0YXJnZXRfZGF0YSwKICAg ICB0YXJnX3RibC0+c3RhcnQgPSB0YXJnX3RibC0+ZW5kID0gMDsKICAgdGFy Z190YmwrKzsKIAorICBpZiAocmV2X2ZuX3RhYmxlICYmIGZuX2VudHJpZXMg PT0gMCkKKyAgICAqcmV2X2ZuX3RhYmxlID0gTlVMTDsKKyAgZWxzZSBpZiAo cmV2X2ZuX3RhYmxlKQorICAgIHsKKyAgICAgIENVZGV2aWNlcHRyIHZhcjsK KyAgICAgIHNpemVfdCBieXRlczsKKyAgICAgIHIgPSBDVURBX0NBTExfTk9D SEVDSyAoY3VNb2R1bGVHZXRHbG9iYWwsICZ2YXIsICZieXRlcywgbW9kdWxl LAorCQkJICAgICAiJG9mZmxvYWRfZnVuY190YWJsZSIpOworICAgICAgaWYg KHIgIT0gQ1VEQV9TVUNDRVNTKQorCUdPTVBfUExVR0lOX2ZhdGFsICgiY3VN b2R1bGVHZXRHbG9iYWwgZXJyb3I6ICVzIiwgY3VkYV9lcnJvciAocikpOwor ICAgICAgYXNzZXJ0IChieXRlcyA9PSBzaXplb2YgKHVpbnQ2NF90KSAqIGZu X2VudHJpZXMpOworICAgICAgKnJldl9mbl90YWJsZSA9IEdPTVBfUExVR0lO X21hbGxvYyAoc2l6ZW9mICh1aW50NjRfdCkgKiBmbl9lbnRyaWVzKTsKKyAg ICAgIHIgPSBDVURBX0NBTExfTk9DSEVDSyAoY3VNZW1jcHlEdG9ILCAqcmV2 X2ZuX3RhYmxlLCB2YXIsIGJ5dGVzKTsKKyAgICAgIGlmIChyICE9IENVREFf U1VDQ0VTUykKKwlHT01QX1BMVUdJTl9mYXRhbCAoImN1TWVtY3B5RHRvSCBl cnJvcjogJXMiLCBjdWRhX2Vycm9yIChyKSk7CisgICAgfQorCiAgIG52cHR4 X3NldF9jbG9ja3RpY2sgKG1vZHVsZSwgZGV2KTsKIAogICByZXR1cm4gZm5f ZW50cmllcyArIHZhcl9lbnRyaWVzICsgb3RoZXJfZW50cmllczsK --------------bVHI0hEY0rBZ0WgpgVSm3dWR--