From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender4-pp-o92.zoho.com (sender4-pp-o92.zoho.com [136.143.188.92]) by sourceware.org (Postfix) with ESMTPS id 7B73B3858C53; Thu, 29 Feb 2024 21:11:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7B73B3858C53 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=zoho.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=zoho.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7B73B3858C53 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=136.143.188.92 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1709241089; cv=pass; b=PSVacaXYIV22odnoj3VncQyk6zRSN6jwjWv3O3uQ0BZmd5fQxfhNbejezMcs3OlyU6HYWWP9BHoCdy3P6eOzYnRtDPY9qprgoK3Z1dL6fLy6txI5nPKQpU4fjxGeh4NL2EfeyyjCHfnvdAkKV0XlDsVb7WaW30sgxjiPLIGb+Z4= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1709241089; c=relaxed/simple; bh=lrTaz13IKTrNBb0w/XnQsmkeS+JLakVlaHK8GK2flLw=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=SOr68kmW/+cy2QIsIxG1Oc6j9zdIYYnDJNroFKsoW0DRxc7PNPAhPzuPnX0XvZuSqPggauzZm1SadZj+swOhElTC69DC43vrVdVoRQRD6pF8+b8TKiPQphL2o7R9svR0DsrnfKHMPtAYhQhyDlBKLQ7y1xUsMkvYtOjP2Cu1lv0= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; t=1709241080; cv=none; d=zohomail.com; s=zohoarc; b=UWzvjlA/634byCMymkUpXcwpvRik4YpHJzVKBqwKRT/ZOCYB00tyIyk3KDcW8rbKZheX/6pZdV4jipBDo1BLrmcMPLEphMrdZx8no3VdLD9Okx/tIVkx75fcBx0r+W5J82VE6MY/XvGE+7F+AkAMn7samdhGwF4qtvZmsF6WYmk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1709241080; h=Content-Type:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=0fMb7fVIQpiCBj2KL7WoebQwN/pN6hCQvEl27Qnfb8Y=; b=hRbiwMTj6AwvyMQvWM/nuJeenE9fdvWTUOIHyYBFMua/AQnTNN6f31nHXfvr5V6hVRmf31UnzaY4dK4hfy3/UkqpKMQYWwW6HaBfiy6x8iYpJgsFzUMpwjOVuHX2LBpQi7P4LlNYle9LaAsnFaQ0J+1HtQPzsGBRjLMTHsZvDv4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=bouanto@zoho.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1709241080; s=zm2022; d=zoho.com; i=bouanto@zoho.com; h=Content-Type:Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Feedback-ID:Message-Id:Reply-To:Cc; bh=0fMb7fVIQpiCBj2KL7WoebQwN/pN6hCQvEl27Qnfb8Y=; b=Lg0RADyo2lg11QmKSz/p+L8zl424Z0KkY8dQZRe1Q6RqR1pxUqgUBIZLZ9WGYjOz ZiJ+UbK5nbkOkCMyCJatHOMJsHI1O+rjpuxDgH0LVRkcDpha1q57LRYo43+KutvwBNI 2KSqWnm2mje38qVEnfjU74nhcBWZRXUz+YvjbOu8= Received: from [192.168.1.172] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1709241077825830.6510384352138; Thu, 29 Feb 2024 13:11:17 -0800 (PST) Content-Type: multipart/mixed; boundary="------------uhYLeJrwnOnkNB2Ett4ltzkq" Message-ID: <518f0c0d-c658-4b57-b9b2-4b3c0ce1371d@zoho.com> Date: Thu, 29 Feb 2024 16:11:16 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] libgccjit: Add support for creating temporary variables Content-Language: en-US To: David Malcolm , "gcc-patches@gcc.gnu.org" , "jit@gcc.gnu.org" References: <2148e8aee390d0f768ecd10fab0928d86783622a.camel@zoho.com> <3631c6a8233548df5e6cae1b7b49328216d73234.camel@redhat.com> From: Antoni Boucher In-Reply-To: <3631c6a8233548df5e6cae1b7b49328216d73234.camel@redhat.com> X-Zoho-Virus-Status: 1 X-Zoho-AV-Stamp: zmail-av-1.1.0/209.221.42 Feedback-ID: rr0801122831f6d00366e1b182a69eb27400003f2a7ea756cd14ca6b4c182fe9f21455637d3f9ab4a65d4d3755:zu0801122630afad6f0e777b58ff2d971d0000b2553960a4cba4d29996f795238e48471f9e3a1e1ab59564:rf0801122c74c7bdbe71d328063a9a2aaa0000f3c1fe0e91784a6c36d5b38690c1b3217b8a07cc878903566178e859e5ea:ZohoMail X-ZohoMailClient: External X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,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: This is a multi-part message in MIME format. --------------uhYLeJrwnOnkNB2Ett4ltzkq Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi and thanks for the review! Here's the updated patch. Le 2024-01-24 à 09 h 54, David Malcolm a écrit : > On Fri, 2024-01-19 at 16:54 -0500, Antoni Boucher wrote: >> Hi. >> This patch adds a new way to create local variable that won't >> generate >> debug info: it is to be used for compiler-generated variables. >> Thanks for the review. > > Thanks for the patch. > >> diff --git a/gcc/jit/docs/topics/compatibility.rst b/gcc/jit/docs/topics/compatibility.rst >> index cbf5b414d8c..5d62e264a00 100644 >> --- a/gcc/jit/docs/topics/compatibility.rst >> +++ b/gcc/jit/docs/topics/compatibility.rst >> @@ -390,3 +390,12 @@ on functions and variables: >> * :func:`gcc_jit_function_add_string_attribute` >> * :func:`gcc_jit_function_add_integer_array_attribute` >> * :func:`gcc_jit_lvalue_add_string_attribute` >> + >> +.. _LIBGCCJIT_ABI_27: >> + >> +``LIBGCCJIT_ABI_27`` >> +-------------------- >> +``LIBGCCJIT_ABI_27`` covers the addition of a functions to create a new > > "functions" -> "function" > >> +temporary variable: >> + >> + * :func:`gcc_jit_function_new_temp` >> diff --git a/gcc/jit/docs/topics/functions.rst b/gcc/jit/docs/topics/functions.rst >> index 804605ea939..230caf42466 100644 >> --- a/gcc/jit/docs/topics/functions.rst >> +++ b/gcc/jit/docs/topics/functions.rst >> @@ -171,6 +171,26 @@ Functions >> underlying string, so it is valid to pass in a pointer to an on-stack >> buffer. >> >> +.. function:: gcc_jit_lvalue *\ >> + gcc_jit_function_new_temp (gcc_jit_function *func,\ >> + gcc_jit_location *loc,\ >> + gcc_jit_type *type) >> + >> + Create a new local variable within the function, of the given type. >> + This function is similar to :func:`gcc_jit_function_new_local`, but >> + it is to be used for compiler-generated variables (as opposed to >> + user-defined variables in the language to be compiled) and these >> + variables won't show up in the debug info. >> + >> + The parameter ``type`` must be non-`void`. >> + >> + This entrypoint was added in :ref:`LIBGCCJIT_ABI_26`; you can test >> + for its presence using > > The ABI number is inconsistent here (it's 27 above and in the .map > file), but obviously you can fix this when you eventually commit this > based on what the ABI number actually is. > > [...snip...] > >> diff --git a/gcc/jit/jit-playback.cc b/gcc/jit/jit-playback.cc >> index 84df6c100e6..cb6b2f66276 100644 >> --- a/gcc/jit/jit-playback.cc >> +++ b/gcc/jit/jit-playback.cc >> @@ -31,6 +31,7 @@ along with GCC; see the file COPYING3. If not see >> #include "toplev.h" >> #include "tree-cfg.h" >> #include "convert.h" >> +#include "gimple-expr.h" >> #include "stor-layout.h" >> #include "print-tree.h" >> #include "gimplify.h" >> @@ -1950,13 +1951,27 @@ new_local (location *loc, >> type *type, >> const char *name, >> const std::vector> - std::string>> &attributes) >> + std::string>> &attributes, >> + bool is_temp) >> { >> gcc_assert (type); >> - gcc_assert (name); >> - tree inner = build_decl (UNKNOWN_LOCATION, VAR_DECL, >> + tree inner; >> + if (is_temp) >> + { >> + inner = build_decl (UNKNOWN_LOCATION, VAR_DECL, >> + create_tmp_var_name ("JITTMP"), >> + type->as_tree ()); >> + DECL_ARTIFICIAL (inner) = 1; >> + DECL_IGNORED_P (inner) = 1; >> + DECL_NAMELESS (inner) = 1; > > We could assert that "name" is null in the is_temp branch. > > An alternative approach might be to drop "is_temp", and instead make > "name" being null signify that it's a temporary, if you prefer that > approach. Would client code ever want to specify a name prefix for a > temporary? No, I don't think anyone would want a different prefix. > > >> + } >> + else >> + { >> + gcc_assert (name); >> + inner = build_decl (UNKNOWN_LOCATION, VAR_DECL, >> get_identifier (name), >> type->as_tree ()); >> + } >> DECL_CONTEXT (inner) = this->m_inner_fndecl; >> >> /* Prepend to BIND_EXPR_VARS: */ > > [...snip...] > > Thanks again for the patch. Looks good to me as-is (apart from the > grammar and ABI number nits), but what do you think of eliminating > "is_temp" in favor of the "name" ptr being null? I think it's your > call. > > Dave > --------------uhYLeJrwnOnkNB2Ett4ltzkq Content-Type: text/x-patch; charset=UTF-8; name="0001-libgccjit-Add-support-for-creating-temporary-variabl.patch" Content-Disposition: attachment; filename*0="0001-libgccjit-Add-support-for-creating-temporary-variabl.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4MGVhMTJjZTIyN2IyYWM1ZDVkY2Q5OTM3NDUzMmUzMGE3NzVlY2JkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNv bT4KRGF0ZTogVGh1LCAxOCBKYW4gMjAyNCAxNjo1NDo1OSAtMDUwMApTdWJqZWN0OiBbUEFU Q0hdIGxpYmdjY2ppdDogQWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIHRlbXBvcmFyeSB2YXJp YWJsZXMKCmdjYy9qaXQvQ2hhbmdlTG9nOgoKCSogZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0 eS5yc3QgKExJQkdDQ0pJVF9BQklfMjgpOiBOZXcgQUJJIHRhZy4KCSogZG9jcy90b3BpY3Mv ZnVuY3Rpb25zLnJzdDogRG9jdW1lbnQgZ2NjX2ppdF9mdW5jdGlvbl9uZXdfdGVtcC4KCSog aml0LXBsYXliYWNrLmNjIChuZXdfbG9jYWwpOiBBZGQgc3VwcG9ydCBmb3IgdGVtcG9yYXJ5 Cgl2YXJpYWJsZXMuCgkqIGppdC1yZWNvcmRpbmcuY2MgKHJlY29yZGluZzo6ZnVuY3Rpb246 Om5ld190ZW1wKTogTmV3IG1ldGhvZC4KCShyZWNvcmRpbmc6OmxvY2FsOjp3cml0ZV9yZXBy b2R1Y2VyKTogU3VwcG9ydCB0ZW1wb3JhcnkKCXZhcmlhYmxlcy4KCSogaml0LXJlY29yZGlu Zy5oIChuZXdfdGVtcCk6IE5ldyBtZXRob2QuCgkqIGxpYmdjY2ppdC5jYyAoZ2NjX2ppdF9m dW5jdGlvbl9uZXdfdGVtcCk6IE5ldyBmdW5jdGlvbi4KCSogbGliZ2Njaml0LmggKGdjY19q aXRfZnVuY3Rpb25fbmV3X3RlbXApOiBOZXcgZnVuY3Rpb24uCgkqIGxpYmdjY2ppdC5tYXA6 IE5ldyBmdW5jdGlvbi4KCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCSogaml0LmRnL2Fs bC1ub24tZmFpbGluZy10ZXN0cy5oOiBNZW50aW9uIHRlc3QtdGVtcC5jLgoJKiBqaXQuZGcv dGVzdC10ZW1wLmM6IE5ldyB0ZXN0LgotLS0KIGdjYy9qaXQvZG9jcy90b3BpY3MvY29tcGF0 aWJpbGl0eS5yc3QgICAgICAgIHwgIDkgKysrKwogZ2NjL2ppdC9kb2NzL3RvcGljcy9mdW5j dGlvbnMucnN0ICAgICAgICAgICAgfCAyMCArKysrKysrCiBnY2Mvaml0L2ppdC1wbGF5YmFj ay5jYyAgICAgICAgICAgICAgICAgICAgICB8IDE1ICsrKysrLQogZ2NjL2ppdC9qaXQtcmVj b3JkaW5nLmNjICAgICAgICAgICAgICAgICAgICAgfCA0NyArKysrKysrKysrKystLS0tCiBn Y2Mvaml0L2ppdC1yZWNvcmRpbmcuaCAgICAgICAgICAgICAgICAgICAgICB8IDExICsrKy0K IGdjYy9qaXQvbGliZ2Njaml0LmNjICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzEgKysr KysrKysrKysKIGdjYy9qaXQvbGliZ2Njaml0LmggICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDcgKysrCiBnY2Mvaml0L2xpYmdjY2ppdC5tYXAgICAgICAgICAgICAgICAgICAgICAg ICB8ICA1ICsrCiBnY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMu aCB8ICAzICsrCiBnY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LXRlbXAuYyAgICAgICAgICAg ICB8IDU2ICsrKysrKysrKysrKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAxOTEgaW5z ZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9qaXQuZGcvdGVzdC10ZW1wLmMKCmRpZmYgLS1naXQgYS9nY2Mvaml0L2RvY3Mv dG9waWNzL2NvbXBhdGliaWxpdHkucnN0IGIvZ2NjL2ppdC9kb2NzL3RvcGljcy9jb21wYXRp YmlsaXR5LnJzdAppbmRleCA5Y2ZiMDU0ZjY1My4uZWNkNjUwMTBiNWUgMTAwNjQ0Ci0tLSBh L2djYy9qaXQvZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3QKKysrIGIvZ2NjL2ppdC9k b2NzL3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdApAQCAtMzk3LDMgKzM5NywxMiBAQCBvbiBm dW5jdGlvbnMgYW5kIHZhcmlhYmxlczoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBgYExJQkdD Q0pJVF9BQklfMjdgYCBjb3ZlcnMgdGhlIGFkZGl0aW9uIG9mCiA6ZnVuYzpgZ2NjX2ppdF9j b250ZXh0X25ld19zaXplb2ZgCisKKy4uIF9MSUJHQ0NKSVRfQUJJXzI4OgorCitgYExJQkdD Q0pJVF9BQklfMjhgYAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2BgTElCR0NDSklUX0FCSV8y OGBgIGNvdmVycyB0aGUgYWRkaXRpb24gb2YgYSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcK K3RlbXBvcmFyeSB2YXJpYWJsZToKKworICAqIDpmdW5jOmBnY2Nfaml0X2Z1bmN0aW9uX25l d190ZW1wYApkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9mdW5jdGlvbnMucnN0 IGIvZ2NjL2ppdC9kb2NzL3RvcGljcy9mdW5jdGlvbnMucnN0CmluZGV4IDgwNDYwNWVhOTM5 Li4xN2VhYjU1ZWUzZiAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9mdW5jdGlv bnMucnN0CisrKyBiL2djYy9qaXQvZG9jcy90b3BpY3MvZnVuY3Rpb25zLnJzdApAQCAtMTcx LDYgKzE3MSwyNiBAQCBGdW5jdGlvbnMKICAgIHVuZGVybHlpbmcgc3RyaW5nLCBzbyBpdCBp cyB2YWxpZCB0byBwYXNzIGluIGEgcG9pbnRlciB0byBhbiBvbi1zdGFjawogICAgYnVmZmVy LgogCisuLiBmdW5jdGlvbjo6IGdjY19qaXRfbHZhbHVlICpcCisgICAgICAgICAgICAgIGdj Y19qaXRfZnVuY3Rpb25fbmV3X3RlbXAgKGdjY19qaXRfZnVuY3Rpb24gKmZ1bmMsXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2Nfaml0X2xvY2F0aW9u ICpsb2MsXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2Nf aml0X3R5cGUgKnR5cGUpCisKKyAgIENyZWF0ZSBhIG5ldyBsb2NhbCB2YXJpYWJsZSB3aXRo aW4gdGhlIGZ1bmN0aW9uLCBvZiB0aGUgZ2l2ZW4gdHlwZS4KKyAgIFRoaXMgZnVuY3Rpb24g aXMgc2ltaWxhciB0byA6ZnVuYzpgZ2NjX2ppdF9mdW5jdGlvbl9uZXdfbG9jYWxgLCBidXQK KyAgIGl0IGlzIHRvIGJlIHVzZWQgZm9yIGNvbXBpbGVyLWdlbmVyYXRlZCB2YXJpYWJsZXMg KGFzIG9wcG9zZWQgdG8KKyAgIHVzZXItZGVmaW5lZCB2YXJpYWJsZXMgaW4gdGhlIGxhbmd1 YWdlIHRvIGJlIGNvbXBpbGVkKSBhbmQgdGhlc2UKKyAgIHZhcmlhYmxlcyB3b24ndCBzaG93 IHVwIGluIHRoZSBkZWJ1ZyBpbmZvLgorCisgICBUaGUgcGFyYW1ldGVyIGBgdHlwZWBgIG11 c3QgYmUgbm9uLWB2b2lkYC4KKworICAgVGhpcyBlbnRyeXBvaW50IHdhcyBhZGRlZCBpbiA6 cmVmOmBMSUJHQ0NKSVRfQUJJXzI4YDsgeW91IGNhbiB0ZXN0CisgICBmb3IgaXRzIHByZXNl bmNlIHVzaW5nCisKKyAgIC4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICAgICNpZmRlZiBMSUJH Q0NKSVRfSEFWRV9nY2Nfaml0X2Z1bmN0aW9uX25ld190ZW1wCisKIC4uIGZ1bmN0aW9uOjog IHNpemVfdCBcCiAgICAgICAgICAgICAgICBnY2Nfaml0X2Z1bmN0aW9uX2dldF9wYXJhbV9j b3VudCAoZ2NjX2ppdF9mdW5jdGlvbiAqZnVuYykKIApkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9q aXQtcGxheWJhY2suY2MgYi9nY2Mvaml0L2ppdC1wbGF5YmFjay5jYwppbmRleCA2YmFhODM4 YWYxMC4uZTQ1NGE2NGViMTEgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvaml0LXBsYXliYWNrLmNj CisrKyBiL2djYy9qaXQvaml0LXBsYXliYWNrLmNjCkBAIC0zMSw2ICszMSw3IEBAIGFsb25n IHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjaW5jbHVk ZSAidG9wbGV2LmgiCiAjaW5jbHVkZSAidHJlZS1jZmcuaCIKICNpbmNsdWRlICJjb252ZXJ0 LmgiCisjaW5jbHVkZSAiZ2ltcGxlLWV4cHIuaCIKICNpbmNsdWRlICJzdG9yLWxheW91dC5o IgogI2luY2x1ZGUgInByaW50LXRyZWUuaCIKICNpbmNsdWRlICJnaW1wbGlmeS5oIgpAQCAt MTk2MywxMCArMTk2NCwyMCBAQCBuZXdfbG9jYWwgKGxvY2F0aW9uICpsb2MsCiAJCQkJICAg ICAgIHN0ZDo6c3RyaW5nPj4gJmF0dHJpYnV0ZXMpCiB7CiAgIGdjY19hc3NlcnQgKHR5cGUp OwotICBnY2NfYXNzZXJ0IChuYW1lKTsKLSAgdHJlZSBpbm5lciA9IGJ1aWxkX2RlY2wgKFVO S05PV05fTE9DQVRJT04sIFZBUl9ERUNMLAorICB0cmVlIGlubmVyOworICBpZiAobmFtZSkK KyAgICBpbm5lciA9IGJ1aWxkX2RlY2wgKFVOS05PV05fTE9DQVRJT04sIFZBUl9ERUNMLAog CQkJICAgZ2V0X2lkZW50aWZpZXIgKG5hbWUpLAogCQkJICAgdHlwZS0+YXNfdHJlZSAoKSk7 CisgIGVsc2UKKyAgeworICAgIGlubmVyID0gYnVpbGRfZGVjbCAoVU5LTk9XTl9MT0NBVElP TiwgVkFSX0RFQ0wsCisJCQljcmVhdGVfdG1wX3Zhcl9uYW1lICgiSklUVE1QIiksCisJCQl0 eXBlLT5hc190cmVlICgpKTsKKyAgICBERUNMX0FSVElGSUNJQUwgKGlubmVyKSA9IDE7Cisg ICAgREVDTF9JR05PUkVEX1AgKGlubmVyKSA9IDE7CisgICAgREVDTF9OQU1FTEVTUyAoaW5u ZXIpID0gMTsKKyAgfQogICBERUNMX0NPTlRFWFQgKGlubmVyKSA9IHRoaXMtPm1faW5uZXJf Zm5kZWNsOwogCiAgIC8qIFByZXBlbmQgdG8gQklORF9FWFBSX1ZBUlM6ICovCmRpZmYgLS1n aXQgYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuY2MgYi9nY2Mvaml0L2ppdC1yZWNvcmRpbmcu Y2MKaW5kZXggNjhhMmU4NjBjMWYuLmJkNzQxYTM4OGRiIDEwMDY0NAotLS0gYS9nY2Mvaml0 L2ppdC1yZWNvcmRpbmcuY2MKKysrIGIvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmNjCkBAIC00 MjExLDYgKzQyMTEsMjMgQEAgcmVjb3JkaW5nOjpmdW5jdGlvbjo6bmV3X2xvY2FsIChyZWNv cmRpbmc6OmxvY2F0aW9uICpsb2MsCiAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qIENyZWF0 ZSBhIHJlY29yZGluZzo6bG9jYWwgaW5zdGFuY2UgYW5kIGFkZCBpdCB0bworICAgdGhlIGZ1 bmN0aW9ucydzIGNvbnRleHQncyBsaXN0IG9mIG1lbWVudG9zLCBhbmQgdG8gdGhlIGZ1bmN0 aW9uJ3MKKyAgIGxpc3Qgb2YgbG9jYWxzLgorCisgICBJbXBsZW1lbnRzIHRoZSBwb3N0LWVy cm9yLWNoZWNraW5nIHBhcnQgb2YKKyAgIGdjY19qaXRfZnVuY3Rpb25fbmV3X3RlbXAuICAq LworCityZWNvcmRpbmc6Omx2YWx1ZSAqCityZWNvcmRpbmc6OmZ1bmN0aW9uOjpuZXdfdGVt cCAocmVjb3JkaW5nOjpsb2NhdGlvbiAqbG9jLAorCQkJICAgICAgIHR5cGUgKnR5cGUpCit7 CisgIGxvY2FsICpyZXN1bHQgPSBuZXcgbG9jYWwgKHRoaXMsIGxvYywgdHlwZSwgTlVMTCk7 CisgIG1fY3R4dC0+cmVjb3JkIChyZXN1bHQpOworICBtX2xvY2Fscy5zYWZlX3B1c2ggKHJl c3VsdCk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKIC8qIENyZWF0ZSBhIHJlY29yZGluZzo6 YmxvY2sgaW5zdGFuY2UgYW5kIGFkZCBpdCB0bwogICAgdGhlIGZ1bmN0aW9ucydzIGNvbnRl eHQncyBsaXN0IG9mIG1lbWVudG9zLCBhbmQgdG8gdGhlIGZ1bmN0aW9uJ3MKICAgIGxpc3Qg b2YgYmxvY2tzLgpAQCAtNjg1MywxNiArNjg3MCwyNiBAQCB2b2lkCiByZWNvcmRpbmc6Omxv Y2FsOjp3cml0ZV9yZXByb2R1Y2VyIChyZXByb2R1Y2VyICZyKQogewogICBjb25zdCBjaGFy ICppZCA9IHIubWFrZV9pZGVudGlmaWVyICh0aGlzLCAibG9jYWwiKTsKLSAgci53cml0ZSAo IiAgZ2NjX2ppdF9sdmFsdWUgKiVzID1cbiIKLQkgICAiICAgIGdjY19qaXRfZnVuY3Rpb25f bmV3X2xvY2FsICglcywgLyogZ2NjX2ppdF9mdW5jdGlvbiAqZnVuYyAqL1xuIgotCSAgICIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVzLCAvKiBnY2Nfaml0X2xvY2F0aW9u ICpsb2MgKi9cbiIKLQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlcywg LyogZ2NjX2ppdF90eXBlICp0eXBlICovXG4iCi0JICAgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJXMpOyAvKiBjb25zdCBjaGFyICpuYW1lICovXG4iLAotCSAgIGlkLAot CSAgIHIuZ2V0X2lkZW50aWZpZXIgKG1fZnVuYyksCi0JICAgci5nZXRfaWRlbnRpZmllciAo bV9sb2MpLAotCSAgIHIuZ2V0X2lkZW50aWZpZXJfYXNfdHlwZSAobV90eXBlKSwKLQkgICBt X25hbWUtPmdldF9kZWJ1Z19zdHJpbmcgKCkpOworICBpZiAobV9uYW1lKQorICAgIHIud3Jp dGUgKCIgIGdjY19qaXRfbHZhbHVlIColcyA9XG4iCisJICAgICAiICAgIGdjY19qaXRfZnVu Y3Rpb25fbmV3X2xvY2FsICglcywgLyogZ2NjX2ppdF9mdW5jdGlvbiAqZnVuYyAqL1xuIgor CSAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXMsIC8qIGdjY19qaXRf bG9jYXRpb24gKmxvYyAqL1xuIgorCSAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJXMsIC8qIGdjY19qaXRfdHlwZSAqdHlwZSAqL1xuIgorCSAgICAgIiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJXMpOyAvKiBjb25zdCBjaGFyICpuYW1lICovXG4i LAorCSAgICAgaWQsCisJICAgICByLmdldF9pZGVudGlmaWVyIChtX2Z1bmMpLAorCSAgICAg ci5nZXRfaWRlbnRpZmllciAobV9sb2MpLAorCSAgICAgci5nZXRfaWRlbnRpZmllcl9hc190 eXBlIChtX3R5cGUpLAorCSAgICAgbV9uYW1lLT5nZXRfZGVidWdfc3RyaW5nICgpKTsKKyAg ZWxzZQorICAgIHIud3JpdGUgKCIgIGdjY19qaXRfbHZhbHVlIColcyA9XG4iCisJICAgICAi ICAgIGdjY19qaXRfZnVuY3Rpb25fbmV3X3RlbXAgKCVzLCAvKiBnY2Nfaml0X2Z1bmN0aW9u ICpmdW5jICovXG4iCisJICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVz LCAvKiBnY2Nfaml0X2xvY2F0aW9uICpsb2MgKi9cbiIKKwkgICAgICIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJXMpOyAvKiBnY2Nfaml0X3R5cGUgKnR5cGUgKi9cbiIsCisJ ICAgICBpZCwKKwkgICAgIHIuZ2V0X2lkZW50aWZpZXIgKG1fZnVuYyksCisJICAgICByLmdl dF9pZGVudGlmaWVyIChtX2xvYyksCisJICAgICByLmdldF9pZGVudGlmaWVyX2FzX3R5cGUg KG1fdHlwZSkpOwogfQogCiAvKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgY2xhc3MgZ2NjOjpq aXQ6OnJlY29yZGluZzo6c3RhdGVtZW50LiAgKi8KZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0 LXJlY29yZGluZy5oIGIvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKaW5kZXggZDhkMTZmNGZl MjkuLmU0OWQ1NGM1ZGQzIDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaAor KysgYi9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaApAQCAtMTM0NSw2ICsxMzQ1LDEwIEBAIHB1 YmxpYzoKIAkgICAgIHR5cGUgKnR5cGUsCiAJICAgICBjb25zdCBjaGFyICpuYW1lKTsKIAor ICBsdmFsdWUgKgorICBuZXdfdGVtcCAobG9jYXRpb24gKmxvYywKKwkgICAgdHlwZSAqdHlw ZSk7CisKICAgYmxvY2sqCiAgIG5ld19ibG9jayAoY29uc3QgY2hhciAqbmFtZSk7CiAKQEAg LTIxNDksNyArMjE1MywxMiBAQCBwdWJsaWM6CiAgIHZvaWQgd3JpdGVfdG9fZHVtcCAoZHVt cCAmZCkgZmluYWwgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gIHN0cmluZyAqIG1ha2VfZGVi dWdfc3RyaW5nICgpIGZpbmFsIG92ZXJyaWRlIHsgcmV0dXJuIG1fbmFtZTsgfQorICBzdHJp bmcgKiBtYWtlX2RlYnVnX3N0cmluZyAoKSBmaW5hbCBvdmVycmlkZSB7CisgICAgaWYgKG1f bmFtZSkKKyAgICAgIHJldHVybiBtX25hbWU7CisgICAgZWxzZQorICAgICAgcmV0dXJuIG1f Y3R4dC0+bmV3X3N0cmluZyAoInRlbXAiKTsKKyAgfQogICB2b2lkIHdyaXRlX3JlcHJvZHVj ZXIgKHJlcHJvZHVjZXIgJnIpIGZpbmFsIG92ZXJyaWRlOwogICBlbnVtIHByZWNlZGVuY2Ug Z2V0X3ByZWNlZGVuY2UgKCkgY29uc3QgZmluYWwgb3ZlcnJpZGUKICAgewpkaWZmIC0tZ2l0 IGEvZ2NjL2ppdC9saWJnY2NqaXQuY2MgYi9nY2Mvaml0L2xpYmdjY2ppdC5jYwppbmRleCBm NDBhOTc4MTQwNS4uOWQ5MDIxMTViNWIgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0 LmNjCisrKyBiL2djYy9qaXQvbGliZ2Njaml0LmNjCkBAIC0yODA4LDYgKzI4MDgsMzcgQEAg Z2NjX2ppdF9mdW5jdGlvbl9uZXdfbG9jYWwgKGdjY19qaXRfZnVuY3Rpb24gKmZ1bmMsCiAg IHJldHVybiAoZ2NjX2ppdF9sdmFsdWUgKilmdW5jLT5uZXdfbG9jYWwgKGxvYywgdHlwZSwg bmFtZSk7CiB9CiAKKy8qIFB1YmxpYyBlbnRyeXBvaW50LiAgU2VlIGRlc2NyaXB0aW9uIGlu IGxpYmdjY2ppdC5oLgorCisgICBBZnRlciBlcnJvci1jaGVja2luZywgdGhlIHJlYWwgd29y ayBpcyBkb25lIGJ5IHRoZQorICAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6ZnVuY3Rpb246Om5l d190ZW1wIG1ldGhvZCBpbiBqaXQtcmVjb3JkaW5nLmNjLiAgKi8KKworZ2NjX2ppdF9sdmFs dWUgKgorZ2NjX2ppdF9mdW5jdGlvbl9uZXdfdGVtcCAoZ2NjX2ppdF9mdW5jdGlvbiAqZnVu YywKKwkJCSAgIGdjY19qaXRfbG9jYXRpb24gKmxvYywKKwkJCSAgIGdjY19qaXRfdHlwZSAq dHlwZSkKK3sKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAoZnVuYywgTlVMTCwgbG9jLCAiTlVM TCBmdW5jdGlvbiIpOworICBnY2M6OmppdDo6cmVjb3JkaW5nOjpjb250ZXh0ICpjdHh0ID0g ZnVuYy0+bV9jdHh0OworICBKSVRfTE9HX0ZVTkMgKGN0eHQtPmdldF9sb2dnZXIgKCkpOwor ICAvKiBMT0MgY2FuIGJlIE5VTEwuICAqLworICBSRVRVUk5fTlVMTF9JRl9GQUlMIChmdW5j LT5nZXRfa2luZCAoKSAhPSBHQ0NfSklUX0ZVTkNUSU9OX0lNUE9SVEVELAorCQkgICAgICAg Y3R4dCwgbG9jLAorCQkgICAgICAgIkNhbm5vdCBhZGQgdGVtcHMgdG8gYW4gaW1wb3J0ZWQg ZnVuY3Rpb24iKTsKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAodHlwZSwgY3R4dCwgbG9jLCAi TlVMTCB0eXBlIik7CisgIFJFVFVSTl9OVUxMX0lGX0ZBSUxfUFJJTlRGMSAoCisgICAgdHlw ZS0+aGFzX2tub3duX3NpemUgKCksCisgICAgY3R4dCwgbG9jLAorICAgICJ1bmtub3duIHNp emUgZm9yIHRlbXAgKHR5cGU6ICVzKSIsCisgICAgdHlwZS0+Z2V0X2RlYnVnX3N0cmluZyAo KSk7CisgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKAorICAgICF0eXBlLT5pc192b2lkICgpLAor ICAgIGN0eHQsIGxvYywKKyAgICAidm9pZCB0eXBlIGZvciB0ZW1wIik7CisKKyAgcmV0dXJu IChnY2Nfaml0X2x2YWx1ZSAqKWZ1bmMtPm5ld190ZW1wIChsb2MsIHR5cGUpOworfQorCiAv KiBQdWJsaWMgZW50cnlwb2ludC4gIFNlZSBkZXNjcmlwdGlvbiBpbiBsaWJnY2NqaXQuaC4K IAogICAgQWZ0ZXIgZXJyb3ItY2hlY2tpbmcsIHRoZSByZWFsIHdvcmsgaXMgZG9uZSBieSB0 aGUKZGlmZiAtLWdpdCBhL2djYy9qaXQvbGliZ2Njaml0LmggYi9nY2Mvaml0L2xpYmdjY2pp dC5oCmluZGV4IDc0ZTg0N2IyZGVjLi4wN2YyZTUwMTEyZiAxMDA2NDQKLS0tIGEvZ2NjL2pp dC9saWJnY2NqaXQuaAorKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5oCkBAIC0xMzk2LDYgKzEz OTYsMTMgQEAgZ2NjX2ppdF9mdW5jdGlvbl9uZXdfbG9jYWwgKGdjY19qaXRfZnVuY3Rpb24g KmZ1bmMsCiAJCQkgICAgZ2NjX2ppdF90eXBlICp0eXBlLAogCQkJICAgIGNvbnN0IGNoYXIg Km5hbWUpOwogCitleHRlcm4gZ2NjX2ppdF9sdmFsdWUgKgorZ2NjX2ppdF9mdW5jdGlvbl9u ZXdfdGVtcCAoZ2NjX2ppdF9mdW5jdGlvbiAqZnVuYywKKwkJCSAgIGdjY19qaXRfbG9jYXRp b24gKmxvYywKKwkJCSAgIGdjY19qaXRfdHlwZSAqdHlwZSk7CisKKyNkZWZpbmUgTElCR0ND SklUX0hBVkVfZ2NjX2ppdF9mdW5jdGlvbl9uZXdfdGVtcAorCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgogIFN0YXRlbWVudC1jcmVhdGlvbi4KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0 IGEvZ2NjL2ppdC9saWJnY2NqaXQubWFwIGIvZ2NjL2ppdC9saWJnY2NqaXQubWFwCmluZGV4 IDk5YWE1OTcwYmUxLi40NWE3ZjQ1YmY0MyAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9saWJnY2Nq aXQubWFwCisrKyBiL2djYy9qaXQvbGliZ2Njaml0Lm1hcApAQCAtMjg5LDMgKzI4OSw4IEBA IExJQkdDQ0pJVF9BQklfMjcgewogICBnbG9iYWw6CiAgICAgZ2NjX2ppdF9jb250ZXh0X25l d19zaXplb2Y7CiB9IExJQkdDQ0pJVF9BQklfMjY7CisKK0xJQkdDQ0pJVF9BQklfMjggewor ICBnbG9iYWw6CisgICAgZ2NjX2ppdF9mdW5jdGlvbl9uZXdfdGVtcDsKK30gTElCR0NDSklU X0FCSV8yNzsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL2FsbC1ub24tZmFp bGluZy10ZXN0cy5oIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1mYWlsaW5nLXRl c3RzLmgKaW5kZXggMTRhMGEzMjE1NTAuLmZhNmIyNmE2NmIyIDEwMDY0NAotLS0gYS9nY2Mv dGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaAorKysgYi9nY2MvdGVz dHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaApAQCAtMzYwLDYgKzM2MCw5 IEBACiAjdW5kZWYgY3JlYXRlX2NvZGUKICN1bmRlZiB2ZXJpZnlfY29kZQogCisvKiB0ZXN0 LXRlbXAuYzogVGhpcyBjYW4ndCBiZSBpbiB0aGUgdGVzdGNhc2VzIGFycmF5IGFzIGl0Cisg ICBpcyB0YXJnZXQtc3BlY2lmaWMuICAqLworCiAvKiB0ZXN0LXN0cmluZy1saXRlcmFsLmMg Ki8KICNkZWZpbmUgY3JlYXRlX2NvZGUgY3JlYXRlX2NvZGVfc3RyaW5nX2xpdGVyYWwKICNk ZWZpbmUgdmVyaWZ5X2NvZGUgdmVyaWZ5X2NvZGVfc3RyaW5nX2xpdGVyYWwKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtdGVtcC5jIGIvZ2NjL3Rlc3RzdWl0ZS9q aXQuZGcvdGVzdC10ZW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjliMWJhOWIwMTAwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQu ZGcvdGVzdC10ZW1wLmMKQEAgLTAsMCArMSw1NiBAQAorI2luY2x1ZGUgPHN0ZGxpYi5oPgor I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3Rk aW50Lmg+CisKKyNpbmNsdWRlICJsaWJnY2NqaXQuaCIKKworI2RlZmluZSBURVNUX0NPTVBJ TElOR19UT19GSUxFCisjZGVmaW5lIE9VVFBVVF9LSU5EICAgICAgR0NDX0pJVF9PVVRQVVRf S0lORF9BU1NFTUJMRVIKKyNkZWZpbmUgT1VUUFVUX0ZJTEVOQU1FICAib3V0cHV0LW9mLXRl c3QtdGVzdC10ZW1wLmMucyIKKyNpbmNsdWRlICJoYXJuZXNzLmgiCisKK3ZvaWQKK2NyZWF0 ZV9jb2RlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAg LyogTGV0J3MgdHJ5IHRvIGluamVjdCB0aGUgZXF1aXZhbGVudCBvZjoKK2ludAorZnVuYyAo KQoreworICAgaW50IHRlbXAgPSAxMDsKKyAgIHJldHVybiB0ZW1wOworfQorICAgKi8KKyAg Z2NjX2ppdF90eXBlICppbnRfdHlwZSA9CisgICAgZ2NjX2ppdF9jb250ZXh0X2dldF90eXBl IChjdHh0LCBHQ0NfSklUX1RZUEVfSU5UKTsKKworICBnY2Nfaml0X2Z1bmN0aW9uICpmdW5j ID0KKyAgICBnY2Nfaml0X2NvbnRleHRfbmV3X2Z1bmN0aW9uIChjdHh0LAorCQkJCSAgTlVM TCwKKwkJCQkgIEdDQ19KSVRfRlVOQ1RJT05fRVhQT1JURUQsCisJCQkJICBpbnRfdHlwZSwK KwkJCQkgICJmdW5jIiwKKwkJCQkgIDAsIE5VTEwsIDApOworCisgIGdjY19qaXRfYmxvY2sg KmluaXRpYWwgPQorICAgIGdjY19qaXRfZnVuY3Rpb25fbmV3X2Jsb2NrIChmdW5jLCAiaW5p dGlhbCIpOworCisgIGdjY19qaXRfbHZhbHVlICp0ZW1wID0KKyAgICBnY2Nfaml0X2Z1bmN0 aW9uX25ld190ZW1wIChmdW5jLCBOVUxMLCBpbnRfdHlwZSk7CisKKyAgZ2NjX2ppdF9ydmFs dWUgKnRlbiA9CisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQgKGN0 eHQsIGludF90eXBlLCAxMCk7CisgIGdjY19qaXRfYmxvY2tfYWRkX2Fzc2lnbm1lbnQgKGlu aXRpYWwsIE5VTEwsIHRlbXAsIHRlbik7CisKKyAgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF9y ZXR1cm4oaW5pdGlhbCwgTlVMTCwKKyAgICBnY2Nfaml0X2x2YWx1ZV9hc19ydmFsdWUgKHRl bXApKTsKK30KKwordm9pZAordmVyaWZ5X2NvZGUgKGdjY19qaXRfY29udGV4dCAqY3R4dCwg Z2NjX2ppdF9yZXN1bHQgKnJlc3VsdCkKK3sKKyAgQ0hFQ0tfTk9OX05VTEwgKHJlc3VsdCk7 Cit9CisKKy8qIHsgZGctZmluYWwgeyBqaXQtdmVyaWZ5LW91dHB1dC1maWxlLXdhcy1jcmVh dGVkICIiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IGppdC12ZXJpZnktYXNzZW1ibGVyLW91 dHB1dC1ub3QgIkpJVFRNUCIgfSB9ICovCi0tIAoyLjQ0LjAKCg== --------------uhYLeJrwnOnkNB2Ett4ltzkq--