From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender4-pp-o90.zoho.com (sender4-pp-o90.zoho.com [136.143.188.90]) by sourceware.org (Postfix) with ESMTPS id 242183858CD1; Thu, 22 Feb 2024 21:59:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 242183858CD1 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 242183858CD1 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=136.143.188.90 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1708639180; cv=pass; b=en2+7FVwk5dmuavrSgagyant/fuD7QljNdmxO9xz9I0y2/qZeZwZ/1WtXue0Bx2FA6FZn3k80BAu7+N3drH4CQquos9FAF0BEvkw4NRwoRSjb97QId0ysjWZa9PsHLDmDAnrTeYrvFJ74yN+wAsqGOFP1kXQrqKt+5a0qfYZeMo= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1708639180; c=relaxed/simple; bh=c7FLdtr1eZSMR+PINGQ+/ae+ygB6MDVpcWDtACL1+mY=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=rEx3XS3BQPef57bo760igqbSnoIgIgTuVs9oz+ohsWom8B8q6jpaNxNee23IhTJgd4UvnDpB2GjQuP7eJzOBTQAEKxCqmljRm2NMPFfC8/KpwYKOqVeC9817ilrADg2xwgEIK3UE5uAP/7j+QVynRSKqoDt25io/9HHdjpQauDk= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; t=1708639163; cv=none; d=zohomail.com; s=zohoarc; b=VjyRRBIl7zYCMUuQSBLb7SVlxzRYvMisA0Rqq9vGiNVi6tOTu00lYR2yj1uVrWrZUxTfI2BtgBp5lWRMwXk/xbY+UAHU3nLOcl4K3UdZ80mgzwv2t+8CtFYhlkNN6szHaa91QQ/0vB3mV3Z0nz4SOyfMOK7KuUuU14DnxiSWVfw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1708639163; 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=W9hwOEKVlCcwz/BkyPPJNvwuDduaVIMN8EGZBwocYxU=; b=ZOYZoVZvVjXZW/Uu9hNxzSeaNM2MNYRTjgdhAdCLYhoVqJ4BYaQzbDKcgsVu7yPcFV9/ddFm3bEVe362pnLJLh3qeZbe22CtmkQrZrtGQ+N8mPbFSG0Y4QI8Tox47ljqeVSHK/YvnSgHKQzvLIDVwUM3ZeyJmeq1ujJTKc5IlSQ= 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=1708639163; s=zm2022; d=zoho.com; i=bouanto@zoho.com; h=Message-ID:Subject:Subject:From:From:To:To:Date:Date:In-Reply-To:References:Content-Type:MIME-Version:Feedback-ID:Message-Id:Reply-To:Cc; bh=W9hwOEKVlCcwz/BkyPPJNvwuDduaVIMN8EGZBwocYxU=; b=K5Bx8GlFK0dOUG8LMoEy+AS0rORMbcto4IXBP0GEuoshXjibdJYEFC6QirjnjG8y a1r+aJS+M8JicXctPlvg/FgDtOWG+45vual7FepLCGMgknnxY+nCd+mWfEUbAIsc/UN knrPXddlg9ZGcyK4mzd6pkfnz59a7/x+UjhqqwOA= Received: from [192.168.1.172] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1708639161396193.72441033727137; Thu, 22 Feb 2024 13:59:21 -0800 (PST) Message-ID: <68a6229693f0fb7ecd3ce1509bcd2c1a3966c353.camel@zoho.com> Subject: Re: [PATCH] libgccjit: Add support for setting the comment ident From: Antoni Boucher To: David Malcolm , "jit@gcc.gnu.org" , "gcc-patches@gcc.gnu.org" Date: Thu, 22 Feb 2024 16:59:19 -0500 In-Reply-To: References: <0c37a2a72b2e3a5f85844d27f8d59c21d10ca7f6.camel@zoho.com> Autocrypt: addr=bouanto@zoho.com; prefer-encrypt=mutual; keydata=mQENBFOSMLQBCADO5aw6Ys8thMQUNzrwAnfJX2wbgWiz0pQ01DjYj22eeIpChkoZn6LWdt4dieq30u2rFi/yQzJ02foHwI2+aL9rU6xz/x4TwqyRJQGMOqklNc3R+pdXmH4WDQkQDWmLxvc07vu+zb8Tx5A6pMDh4J2ncCEhLEUcH39Yq/yg4eBnFwUX6N7kakvHrnScGNqhnSFCacoJeMJUAR+1G7VBSBd++jmnHLnx3mj7QkRZVECJUw2zqiv1yReCC6GU4SvqLjdqm5ZGeoWOqD/NHjBRoEeOVjzp6M/qOjjWRbkJVqmvgfcD8UytSSqqboR35YFT4L+rZt2ri3T12MJb3i5syCAXABEBAAG0IUFudG9uaSBCb3VjaGVyIDxib3VhbnRvQHpvaG8uY29tPokBVgQTAQgAQAIbIwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAFiEEOELC4Uw1Jeb66YE6RVeGAwR4zcEFAlz4QM4FCRLMEZoACgkQRVeGAwR4zcFBQQf/afttJrA/puADQZhrDfkgr0MFvq6iB+GCy1b8BkXimk1TOXTPt87YLehSeijNu3JkYhl5eRc87BNfU9J87KfI/KIy6hZxqlDXk16FhW9bw/7wYEA0hpb3MUn7xLElXDT0ZHaD+KTe8Oun7qfzgx5RlL6r/WODf3CkSpO085R/rfeBqDEx9mVlhDWgq6Az3CZoD+3CqiCKVqmDuHTWz4kwrd9AM5eVcLvvLKnZIdoIp+G5Ao6BvaGlZyfenN1iOSjLy2NXNt4MnUt0lUYEP5KSIIRhHQ8xkUbj7eWUmaahkxhNb3fH3sAPwGnRZrPpb4rgYzNmSk63wWMh9M2xk+rLb7kBDQRTkjC0AQgAumZzsAV/UFWI+dpzebQfma36kKYZZFuseant5sq/HWP553XQ/U6ttJiKyN5MpCqtxvCAoRplf42YhlHuFqgf73WJxoJ6Y+sdyqoBSwlR+ gzAneAmsa8gmmY0wawH0Z2leazjKuS7mJjVEQZg0ZGsiCVRGeRnDqFGzDEzDc9ngWKSoTq0fKzlGy1X85OrtmUrvEbhSo6HP+FoeunHkIqrxu3w3vDoFEXxVQlKI6V3I4nCz5n6DB8WR3L7nsiiTnOiGirPw1ngvWFLW86kkA4FJpayc8Xl3va3SLY+2y4yuROboX2DVI4AC/Qeug/mDiBicPxkP6YfUartQRMe6obkEQARAQABiQE8BBgBCAAmAhsMFiEEOELC4Uw1Jeb66YE6RVeGAwR4zcEFAlz4QRsFCRLMEecACgkQRVeGAwR4zcE56ggAgTgrJInBKC+7552Dpccuo6Clh3wZfjlNLv9/6r5lKEbaNzaTrfhPiAP4WgnluIUmj8amOFLFJpj+BAVNOXpZ4D2R3o9ch8z7fot+fW4Yw+PKIxH4I2xEys8ndoEB3aiQwHjKcGIhkIU7uyMJFQr2aWjdTY0gmXw0YZueHOSLgo7uX4XKxB8fEO/yto/Tff2YBAAq+AtNwt+Gh5YS9rZw7rwUTWMi84yVOlc+zRE79E9NJkvdTwX7IJYo64VzIRNfgHsn7QNdVzuM1XIFHl+Glk6cIlI8s6BO7nEoCn3hTF104fQTAO3fEs+XXZOKXo2lk8faowEoPq5r58StrV0nyg== Content-Type: multipart/mixed; boundary="=-MJ3WvfoZZ2Lb8l7PJryp" User-Agent: Evolution 3.50.3 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-Zoho-AV-Stamp: zmail-av-1.1.0/208.621.69 Feedback-ID: rr080112281f2d47694da8df77a3eeabfe00004c5263b0820cc90fd3bf16745df63d2e40c830c61206ca5ff108:zu08011226888251097d0d36479fd530430000ee07965d2c49def400d8c6457c5b8fdf080bceb6c2e97ecf:rf080112316ca9f5fb3e67b3e5c19b130b0000edd07184da4e888861be668ba423df72126c640978675dcadafad1eecf26af2dc2d65c:ZohoMail X-ZohoMailClient: External X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,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: --=-MJ3WvfoZZ2Lb8l7PJryp Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the review. Here's the updated patch. See answers to question below. On Fri, 2024-01-05 at 14:39 -0500, David Malcolm wrote: > On Fri, 2024-01-05 at 12:09 -0500, Antoni Boucher wrote: > > Hi. > > This patch adds support for setting the comment ident (analogous to > > #ident "comment" in C). > > Thanks for the review. >=20 > Thanks for the patch. >=20 > This may sound like a silly question, but what does #ident do and > what > is it used for? This adds text to the .comment section. >=20 > FWIW I found this in our documentation: > =C2=A0 https://gcc.gnu.org/onlinedocs/cpp/Other-Directives.html >=20 > [...snip...] >=20 > > +Output options > > +************** > > + > > +.. function:: void gcc_jit_context_set_output_ident > > (gcc_jit_context *ctxt,\ > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 const char* > > output_ident) > > + > > +=C2=A0=C2=A0 Set the identifier to write in the .comment section of th= e > > output file to > > +=C2=A0=C2=A0 ``output_ident``. Analogous to: >=20 > ...but only on some targets, according to the link above.=C2=A0 Maybe add > that link here? >=20 > > + > > +=C2=A0=C2=A0 .. code-block:: c > > + > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 #ident "My comment" > > + > > +=C2=A0=C2=A0 in C. > > + > > +=C2=A0=C2=A0 This entrypoint was added in :ref:`LIBGCCJIT_ABI_26`; you= can > > test for > > +=C2=A0=C2=A0 its presence using >=20 > Can the param "output_ident" be NULL?=C2=A0 It isn't checked for NULL in > the > patch's implementation of gcc_jit_context_set_output_ident, and > recording::output_ident's constructor does check for it being NULL... >=20 > > + > > +=C2=A0=C2=A0 .. code-block:: c > > + > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 #ifdef LIBGCCJIT_HAVE_gcc_jit_context_s= et_output_ident >=20 > > diff --git a/gcc/jit/jit-playback.cc b/gcc/jit/jit-playback.cc > > index dddd537f3b1..243a9fdf972 100644 > > --- a/gcc/jit/jit-playback.cc > > +++ b/gcc/jit/jit-playback.cc > > @@ -319,6 +319,13 @@ get_type (enum gcc_jit_types type_) > > =C2=A0=C2=A0 return new type (type_node); > > =C2=A0} > > =C2=A0 > > +void > > +playback::context:: > > +set_output_ident (const char* ident) > > +{ > > +=C2=A0 targetm.asm_out.output_ident (ident); > > +} > > + >=20 > ...but looking at varasm.cc's default_asm_output_ident_directive it > looks like the param must be non-NULL. >=20 > So this should either be conditionalized here to: >=20 > =C2=A0 if (ident) > =C2=A0=C2=A0=C2=A0 targetm.asm_out.output_ident (ident); >=20 > or else we should ensure that "ident" is non-NULL at the API boundary > and document this. Ok, updated the patch to do this at the API boundary. >=20 > My guess is that it doesn't make sense to have a NULL ident, so we > should go with the latter approach. >=20 > Can you have more than one #ident directive?=C2=A0 Presumably each one > just > adds another line to the generated asm, right? Yes. >=20 > [...snip...] >=20 > > @@ -2185,6 +2192,52 @@ recording::string::write_reproducer > > (reproducer &) > > =C2=A0=C2=A0 /* Empty.=C2=A0 */ > > =C2=A0} > > =C2=A0 > > +/* The implementation of class gcc::jit::recording::output_ident.=C2= =A0 > > */ > > + > > +/* Constructor for gcc::jit::recording::output_ident, allocating a > > +=C2=A0=C2=A0 copy of the given text using new char[].=C2=A0 */ > > + > > +recording::output_ident::output_ident (context *ctxt, const char > > *ident) > > +: memento (ctxt) > > +{ > > +=C2=A0 m_ident =3D ident ? xstrdup (ident) : NULL; > > +} > > + > > +/* Destructor for gcc::jit::recording::output_ident.=C2=A0 */ > > + > > +recording::output_ident::~output_ident () > > +{ > > +=C2=A0 delete[] m_ident; >=20 > m_ident is allocated above using xstrdup, so it must be cleaned up > with > "free"; I don't think it's safe to use "delete[]" here. >=20 > [...snip...] >=20 > > +/* Implementation of recording::memento::write_reproducer for > > output_ident.=C2=A0 */ > > + > > +void > > +recording::output_ident::write_reproducer (reproducer &r) > > +{ > > +=C2=A0 r.write ("=C2=A0 gcc_jit_context_set_output_ident (%s, \"%s\");= ", > > + =C2=A0=C2=A0 r.get_identifier (get_context ()), > > + =C2=A0=C2=A0 m_ident); >=20 > It isn't safe on all implementations to use %s with m_ident being > NULL. Now, m_ident is non-NULL. >=20 > [...snip...] >=20 > Thanks again for the patch; hope this is constructive > Dave >=20 --=-MJ3WvfoZZ2Lb8l7PJryp Content-Disposition: attachment; filename*0=0001-libgccjit-Add-support-for-setting-the-comment-ident.patc; filename*1=h Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-libgccjit-Add-support-for-setting-the-comment-ident.patch"; charset="UTF-8" RnJvbSAxZTk4ZmFhNGNjNDg5NjQxMjg5Y2I4ZDY2MzRlMjRlZmFhM2QzNmEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KRGF0 ZTogRnJpLCAyNyBPY3QgMjAyMyAxNzozNjowMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIGxpYmdj Y2ppdDogQWRkIHN1cHBvcnQgZm9yIHNldHRpbmcgdGhlIGNvbW1lbnQgaWRlbnQKCmdjYy9qaXQv Q2hhbmdlTG9nOgoKCSogZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3QgKExJQkdDQ0pJVF9B QklfMjgpOiBOZXcgQUJJIHRhZy4KCSogZG9jcy90b3BpY3MvY29udGV4dHMucnN0OiBEb2N1bWVu dCBnY2Nfaml0X2NvbnRleHRfc2V0X291dHB1dF9pZGVudC4KCSogaml0LXBsYXliYWNrLmNjIChz ZXRfb3V0cHV0X2lkZW50KTogTmV3IG1ldGhvZC4KCSogaml0LXBsYXliYWNrLmggKHNldF9vdXRw dXRfaWRlbnQpOiBOZXcgbWV0aG9kLgoJKiBqaXQtcmVjb3JkaW5nLmNjIChyZWNvcmRpbmc6OmNv bnRleHQ6OnNldF9vdXRwdXRfaWRlbnQsCglyZWNvcmRpbmc6Om91dHB1dF9pZGVudDo6b3V0cHV0 X2lkZW50LAoJcmVjb3JkaW5nOjpvdXRwdXRfaWRlbnQ6On5vdXRwdXRfaWRlbnQsCglyZWNvcmRp bmc6Om91dHB1dF9pZGVudDo6cmVwbGF5X2ludG8sCglyZWNvcmRpbmc6Om91dHB1dF9pZGVudDo6 bWFrZV9kZWJ1Z19zdHJpbmcsCglyZWNvcmRpbmc6Om91dHB1dF9pZGVudDo6d3JpdGVfcmVwcm9k dWNlcik6IE5ldyBtZXRob2RzLgoJKiBqaXQtcmVjb3JkaW5nLmggKGNsYXNzIG91dHB1dF9pZGVu dCk6IE5ldyBjbGFzcy4KCSogbGliZ2Njaml0LmNjIChnY2Nfaml0X2NvbnRleHRfc2V0X291dHB1 dF9pZGVudCk6IE5ldyBmdW5jdGlvbi4KCSogbGliZ2Njaml0LmggKGdjY19qaXRfY29udGV4dF9z ZXRfb3V0cHV0X2lkZW50KTogTmV3IGZ1bmN0aW9uLgoJKiBsaWJnY2NqaXQubWFwOiBOZXcgZnVu Y3Rpb24uCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCgkqIGppdC5kZy9hbGwtbm9uLWZhaWxp bmctdGVzdHMuaDogTmV3IHRlc3QuCgkqIGppdC5kZy90ZXN0LW91dHB1dC1pZGVudC5jOiBOZXcg dGVzdC4KLS0tCiBnY2Mvaml0L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0ICAgICAgICB8 ICA3ICsrKwogZ2NjL2ppdC9kb2NzL3RvcGljcy9jb250ZXh0cy5yc3QgICAgICAgICAgICAgfCAy OSArKysrKysrKysrKwogZ2NjL2ppdC9qaXQtcGxheWJhY2suY2MgICAgICAgICAgICAgICAgICAg ICAgfCAgNyArKysKIGdjYy9qaXQvaml0LXBsYXliYWNrLmggICAgICAgICAgICAgICAgICAgICAg IHwgIDMgKysKIGdjYy9qaXQvaml0LXJlY29yZGluZy5jYyAgICAgICAgICAgICAgICAgICAgIHwg NTMgKysrKysrKysrKysrKysrKysrKysKIGdjYy9qaXQvaml0LXJlY29yZGluZy5oICAgICAgICAg ICAgICAgICAgICAgIHwgMjIgKysrKysrKysKIGdjYy9qaXQvbGliZ2Njaml0LmNjICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMTYgKysrKysrCiBnY2Mvaml0L2xpYmdjY2ppdC5oICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICA2ICsrKwogZ2NjL2ppdC9saWJnY2NqaXQubWFwICAgICAgICAg ICAgICAgICAgICAgICAgfCAgNSArKwogZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1mYWls aW5nLXRlc3RzLmggfCAgMyArKwogZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1vdXRwdXQtaWRl bnQuYyAgICAgfCAyMyArKysrKysrKysKIDExIGZpbGVzIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1vdXRwdXQt aWRlbnQuYwoKZGlmZiAtLWdpdCBhL2djYy9qaXQvZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5y c3QgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0CmluZGV4IDljZmIwNTRm NjUzLi5kMjdlYzMxM2ZhNCAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9jb21wYXRp YmlsaXR5LnJzdAorKysgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0CkBA IC0zOTcsMyArMzk3LDEwIEBAIG9uIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzOgogLS0tLS0tLS0t LS0tLS0tLS0tLS0KIGBgTElCR0NDSklUX0FCSV8yN2BgIGNvdmVycyB0aGUgYWRkaXRpb24gb2YK IDpmdW5jOmBnY2Nfaml0X2NvbnRleHRfbmV3X3NpemVvZmAKKworLi4gX0xJQkdDQ0pJVF9BQklf Mjg6CisKK2BgTElCR0NDSklUX0FCSV8yOGBgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorYGBMSUJH Q0NKSVRfQUJJXzI4YGAgY292ZXJzIHRoZSBhZGRpdGlvbiBvZgorOmZ1bmM6YGdjY19qaXRfY29u dGV4dF9zZXRfb3V0cHV0X2lkZW50YApkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9j b250ZXh0cy5yc3QgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbnRleHRzLnJzdAppbmRleCAxMGEw ZTUwZjlmNi4uODM5Yzc3ZWRlZDAgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvZG9jcy90b3BpY3MvY29u dGV4dHMucnN0CisrKyBiL2djYy9qaXQvZG9jcy90b3BpY3MvY29udGV4dHMucnN0CkBAIC01OTks MyArNTk5LDMyIEBAIEFkZGl0aW9uYWwgY29tbWFuZC1saW5lIG9wdGlvbnMKICAgIC4uIGNvZGUt YmxvY2s6OiBjCiAKICAgICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9nY2Nfaml0X2NvbnRleHRf YWRkX2RyaXZlcl9vcHRpb24KKworT3V0cHV0IG9wdGlvbnMKKyoqKioqKioqKioqKioqCisKKy4u IGZ1bmN0aW9uOjogdm9pZCBnY2Nfaml0X2NvbnRleHRfc2V0X291dHB1dF9pZGVudCAoZ2NjX2pp dF9jb250ZXh0ICpjdHh0LFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciogb3V0cHV0X2lkZW50KQorCisgICBTZXQgdGhlIGlk ZW50aWZpZXIgdG8gd3JpdGUgaW4gdGhlIC5jb21tZW50IHNlY3Rpb24gb2YgdGhlIG91dHB1dCBm aWxlIHRvCisgICBgYG91dHB1dF9pZGVudGBgLgorCisgICBUaGUgcGFyYW1ldGVyIGBgb3V0cHV0 X2lkZW50YGAgbXVzdCBiZSBub24tTlVMTC4KKworICAgVGhpcyBvbmx5IHdvcmtzIG9uIHNvbWUg dGFyZ2V0LCBhcyB5b3UgY2FuIHNlZSBoZXJlOgorICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxp bmVkb2NzL2NwcC9PdGhlci1EaXJlY3RpdmVzLmh0bWwKKworICAgQW5hbG9nb3VzIHRvOgorCisg ICAuLiBjb2RlLWJsb2NrOjogYworCisgICAgICAjaWRlbnQgIk15IGNvbW1lbnQiCisKKyAgIGlu IEMuCisKKyAgIFRoaXMgZW50cnlwb2ludCB3YXMgYWRkZWQgaW4gOnJlZjpgTElCR0NDSklUX0FC SV8yOGA7IHlvdSBjYW4gdGVzdCBmb3IKKyAgIGl0cyBwcmVzZW5jZSB1c2luZworCisgICAuLiBj b2RlLWJsb2NrOjogYworCisgICAgICAjaWZkZWYgTElCR0NDSklUX0hBVkVfZ2NjX2ppdF9jb250 ZXh0X3NldF9vdXRwdXRfaWRlbnQKZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LXBsYXliYWNrLmNj IGIvZ2NjL2ppdC9qaXQtcGxheWJhY2suY2MKaW5kZXggNmJhYTgzOGFmMTAuLmU4NTdjMzczYWRl IDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1wbGF5YmFjay5jYworKysgYi9nY2Mvaml0L2ppdC1w bGF5YmFjay5jYwpAQCAtMzIwLDYgKzMyMCwxMyBAQCBnZXRfdHlwZSAoZW51bSBnY2Nfaml0X3R5 cGVzIHR5cGVfKQogICByZXR1cm4gbmV3IHR5cGUgKHR5cGVfbm9kZSk7CiB9CiAKK3ZvaWQKK3Bs YXliYWNrOjpjb250ZXh0OjoKK3NldF9vdXRwdXRfaWRlbnQgKGNvbnN0IGNoYXIqIGlkZW50KQor eworICB0YXJnZXRtLmFzbV9vdXQub3V0cHV0X2lkZW50IChpZGVudCk7Cit9CisKIC8qIENvbnN0 cnVjdCBhIHBsYXliYWNrOjp0eXBlIGluc3RhbmNlICh3cmFwcGluZyBhIHRyZWUpIGZvciB0aGUg Z2l2ZW4KICAgIGFycmF5IHR5cGUuICAqLwogCmRpZmYgLS1naXQgYS9nY2Mvaml0L2ppdC1wbGF5 YmFjay5oIGIvZ2NjL2ppdC9qaXQtcGxheWJhY2suaAppbmRleCBhYTZhMDg2NjEzYy4uODM3ODM2 ZDIxMGUgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvaml0LXBsYXliYWNrLmgKKysrIGIvZ2NjL2ppdC9q aXQtcGxheWJhY2suaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAgIHR5cGUgKgogICBnZXRf dHlwZSAoZW51bSBnY2Nfaml0X3R5cGVzIHR5cGUpOwogCisgIHZvaWQKKyAgc2V0X291dHB1dF9p ZGVudCAoY29uc3QgY2hhciogaWRlbnQpOworCiAgIHR5cGUgKgogICBuZXdfYXJyYXlfdHlwZSAo bG9jYXRpb24gKmxvYywKIAkJICB0eXBlICplbGVtZW50X3R5cGUsCmRpZmYgLS1naXQgYS9nY2Mv aml0L2ppdC1yZWNvcmRpbmcuY2MgYi9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuY2MKaW5kZXggNjhh MmU4NjBjMWYuLjkwYzI1ZWE2ZDMyIDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcu Y2MKKysrIGIvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmNjCkBAIC0xMzYyLDYgKzEzNjIsMTMgQEAg cmVjb3JkaW5nOjpjb250ZXh0OjpzZXRfc3RyX29wdGlvbiAoZW51bSBnY2Nfaml0X3N0cl9vcHRp b24gb3B0LAogICBsb2dfc3RyX29wdGlvbiAob3B0KTsKIH0KIAordm9pZAorcmVjb3JkaW5nOjpj b250ZXh0OjpzZXRfb3V0cHV0X2lkZW50IChjb25zdCBjaGFyICppZGVudCkKK3sKKyAgcmVjb3Jk aW5nOjpvdXRwdXRfaWRlbnQgKm1lbWVudG8gPSBuZXcgb3V0cHV0X2lkZW50ICh0aGlzLCBpZGVu dCk7CisgIHJlY29yZCAobWVtZW50byk7Cit9CisKIC8qIFNldCB0aGUgZ2l2ZW4gaW50ZWdlciBv cHRpb24gZm9yIHRoaXMgY29udGV4dCwgb3IgYWRkIGFuIGVycm9yIGlmCiAgICBpdCdzIG5vdCBy ZWNvZ25pemVkLgogCkBAIC0yMjAxLDYgKzIyMDgsNTIgQEAgcmVjb3JkaW5nOjpzdHJpbmc6Ondy aXRlX3JlcHJvZHVjZXIgKHJlcHJvZHVjZXIgJikKICAgLyogRW1wdHkuICAqLwogfQogCisvKiBU aGUgaW1wbGVtZW50YXRpb24gb2YgY2xhc3MgZ2NjOjpqaXQ6OnJlY29yZGluZzo6b3V0cHV0X2lk ZW50LiAgKi8KKworLyogQ29uc3RydWN0b3IgZm9yIGdjYzo6aml0OjpyZWNvcmRpbmc6Om91dHB1 dF9pZGVudCwgYWxsb2NhdGluZyBhCisgICBjb3B5IG9mIHRoZSBnaXZlbiB0ZXh0IHVzaW5nIG5l dyBjaGFyW10uICAqLworCityZWNvcmRpbmc6Om91dHB1dF9pZGVudDo6b3V0cHV0X2lkZW50IChj b250ZXh0ICpjdHh0LCBjb25zdCBjaGFyICppZGVudCkKKzogbWVtZW50byAoY3R4dCkKK3sKKyAg bV9pZGVudCA9IGlkZW50ID8geHN0cmR1cCAoaWRlbnQpIDogTlVMTDsKK30KKworLyogRGVzdHJ1 Y3RvciBmb3IgZ2NjOjpqaXQ6OnJlY29yZGluZzo6b3V0cHV0X2lkZW50LiAgKi8KKworcmVjb3Jk aW5nOjpvdXRwdXRfaWRlbnQ6On5vdXRwdXRfaWRlbnQgKCkKK3sKKyAgZnJlZSAobV9pZGVudCk7 Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIHB1cmUgdmlydHVhbCBob29rIHJlY29yZGluZzo6 bWVtZW50bzo6cmVwbGF5X2ludG8KKyAgIGZvciByZWNvcmRpbmc6Om91dHB1dF9pZGVudC4gICov CisKK3ZvaWQKK3JlY29yZGluZzo6b3V0cHV0X2lkZW50OjpyZXBsYXlfaW50byAocmVwbGF5ZXIg KnIpCit7CisgIHItPnNldF9vdXRwdXRfaWRlbnQgKG1faWRlbnQpOworfQorCisvKiBJbXBsZW1l bnRhdGlvbiBvZiByZWNvcmRpbmc6Om1lbWVudG86Om1ha2VfZGVidWdfc3RyaW5nIGZvciBvdXRw dXRfaWRlbnQuICAqLworCityZWNvcmRpbmc6OnN0cmluZyAqCityZWNvcmRpbmc6Om91dHB1dF9p ZGVudDo6bWFrZV9kZWJ1Z19zdHJpbmcgKCkKK3sKKyAgcmV0dXJuIG1fY3R4dC0+bmV3X3N0cmlu ZyAobV9pZGVudCk7Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIHJlY29yZGluZzo6bWVtZW50 bzo6d3JpdGVfcmVwcm9kdWNlciBmb3Igb3V0cHV0X2lkZW50LiAgKi8KKwordm9pZAorcmVjb3Jk aW5nOjpvdXRwdXRfaWRlbnQ6OndyaXRlX3JlcHJvZHVjZXIgKHJlcHJvZHVjZXIgJnIpCit7Cisg IHIud3JpdGUgKCIgIGdjY19qaXRfY29udGV4dF9zZXRfb3V0cHV0X2lkZW50ICglcywgXCIlc1wi KTsiLAorCSAgIHIuZ2V0X2lkZW50aWZpZXIgKGdldF9jb250ZXh0ICgpKSwKKwkgICBtX2lkZW50 KTsKK30KKworCiAvKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgY2xhc3MgZ2NjOjpqaXQ6OnJlY29y ZGluZzo6bG9jYXRpb24uICAqLwogCiAvKiBJbXBsZW1lbnRhdGlvbiBvZiByZWNvcmRpbmc6Om1l bWVudG86OnJlcGxheV9pbnRvIGZvciBsb2NhdGlvbnMuCmRpZmYgLS1naXQgYS9nY2Mvaml0L2pp dC1yZWNvcmRpbmcuaCBiL2djYy9qaXQvaml0LXJlY29yZGluZy5oCmluZGV4IGQ4ZDE2ZjRmZTI5 Li5jZjQ0YmQwOTEyYiAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKKysrIGIv Z2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKQEAgLTIzMSw2ICsyMzEsOSBAQCBwdWJsaWM6CiAgIHNl dF9zdHJfb3B0aW9uIChlbnVtIGdjY19qaXRfc3RyX29wdGlvbiBvcHQsCiAJCSAgY29uc3QgY2hh ciAqdmFsdWUpOwogCisgIHZvaWQKKyAgc2V0X291dHB1dF9pZGVudCAoY29uc3QgY2hhciAqb3V0 cHV0X2lkZW50KTsKKwogICB2b2lkCiAgIHNldF9pbnRfb3B0aW9uIChlbnVtIGdjY19qaXRfaW50 X29wdGlvbiBvcHQsCiAJCSAgaW50IHZhbHVlKTsKQEAgLTQ3MCw2ICs0NzMsMjUgQEAgcHJpdmF0 ZToKICAgYm9vbCBtX2VzY2FwZWQ7CiB9OwogCitjbGFzcyBvdXRwdXRfaWRlbnQgOiBwdWJsaWMg bWVtZW50bworeworcHVibGljOgorICBvdXRwdXRfaWRlbnQgKGNvbnRleHQgKmN0eHQsIGNvbnN0 IGNoYXIgKnRleHQpOworICB+b3V0cHV0X2lkZW50ICgpOworCisgIHZvaWQgcmVwbGF5X2ludG8g KHJlcGxheWVyICopIGZpbmFsIG92ZXJyaWRlOworCisgIG91dHB1dF9pZGVudCAoY29uc3Qgb3V0 cHV0X2lkZW50JikgPSBkZWxldGU7CisgIG91dHB1dF9pZGVudCYgb3BlcmF0b3I9IChjb25zdCBv dXRwdXRfaWRlbnQmKSA9IGRlbGV0ZTsKKworcHJpdmF0ZToKKyAgc3RyaW5nICogbWFrZV9kZWJ1 Z19zdHJpbmcgKCkgZmluYWwgb3ZlcnJpZGU7CisgIHZvaWQgd3JpdGVfcmVwcm9kdWNlciAocmVw cm9kdWNlciAmcikgZmluYWwgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgIGNvbnN0IGNoYXIgKm1f aWRlbnQ7Cit9OworCiBjbGFzcyBsb2NhdGlvbiA6IHB1YmxpYyBtZW1lbnRvCiB7CiBwdWJsaWM6 CmRpZmYgLS1naXQgYS9nY2Mvaml0L2xpYmdjY2ppdC5jYyBiL2djYy9qaXQvbGliZ2Njaml0LmNj CmluZGV4IGY0MGE5NzgxNDA1Li45ZWJkZWM2NDY3NiAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9saWJn Y2NqaXQuY2MKKysrIGIvZ2NjL2ppdC9saWJnY2NqaXQuY2MKQEAgLTM2OTcsNiArMzY5NywyMiBA QCBnY2Nfaml0X2NvbnRleHRfY29tcGlsZV90b19maWxlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQs CiAgIGN0eHQtPmNvbXBpbGVfdG9fZmlsZSAob3V0cHV0X2tpbmQsIG91dHB1dF9wYXRoKTsKIH0K IAorLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0Lmgu CisKKyAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhl CisgICBnY2M6OmppdDo6cmVjb3JkaW5nOjpjb250ZXh0OjpzZXRfc3RyX29wdGlvbiBtZXRob2Qg aW4KKyAgIGppdC1yZWNvcmRpbmcuY2MuICAqLworCit2b2lkCitnY2Nfaml0X2NvbnRleHRfc2V0 X291dHB1dF9pZGVudCAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAorCQkJCSAgY29uc3QgY2hhciog b3V0cHV0X2lkZW50KQoreworICBSRVRVUk5fSUZfRkFJTCAoY3R4dCwgTlVMTCwgTlVMTCwgIk5V TEwgY29udGV4dCIpOworICBSRVRVUk5fVkFMX0lGX0ZBSUwgKG91dHB1dF9pZGVudCwgMCwgTlVM TCwgTlVMTCwgIk5VTEwgb3V0cHV0X2lkZW50Iik7CisgIEpJVF9MT0dfRlVOQyAoY3R4dC0+Z2V0 X2xvZ2dlciAoKSk7CisKKyAgY3R4dC0+c2V0X291dHB1dF9pZGVudCAob3V0cHV0X2lkZW50KTsK K30KIAogLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0 LmguCiAKZGlmZiAtLWdpdCBhL2djYy9qaXQvbGliZ2Njaml0LmggYi9nY2Mvaml0L2xpYmdjY2pp dC5oCmluZGV4IDc0ZTg0N2IyZGVjLi40Nzg5OGViM2ZjMCAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9s aWJnY2NqaXQuaAorKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5oCkBAIC0yMDY2LDYgKzIwNjYsMTIg QEAgZ2NjX2ppdF9sdmFsdWVfYWRkX3N0cmluZ19hdHRyaWJ1dGUgKGdjY19qaXRfbHZhbHVlICp2 YXJpYWJsZSwKIAkJCQkgICAgIGVudW0gZ2NjX2ppdF92YXJpYWJsZV9hdHRyaWJ1dGUgYXR0cmli dXRlLAogCQkJCSAgICAgY29uc3QgY2hhciogdmFsdWUpOwogCitleHRlcm4gdm9pZAorZ2NjX2pp dF9jb250ZXh0X3NldF9vdXRwdXRfaWRlbnQgKGdjY19qaXRfY29udGV4dCAqY3R4dCwKKwkJCQkg IGNvbnN0IGNoYXIqIG91dHB1dF9pZGVudCk7CisKKyNkZWZpbmUgTElCR0NDSklUX0hBVkVfZ2Nj X2ppdF9jb250ZXh0X3NldF9vdXRwdXRfaWRlbnQKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAj ZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KZGlmZiAtLWdpdCBhL2djYy9qaXQvbGliZ2Njaml0Lm1h cCBiL2djYy9qaXQvbGliZ2Njaml0Lm1hcAppbmRleCA5OWFhNTk3MGJlMS4uNGMzNzQ4NTUzNmMg MTAwNjQ0Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0Lm1hcAorKysgYi9nY2Mvaml0L2xpYmdjY2pp dC5tYXAKQEAgLTI4OSwzICsyODksOCBAQCBMSUJHQ0NKSVRfQUJJXzI3IHsKICAgZ2xvYmFsOgog ICAgIGdjY19qaXRfY29udGV4dF9uZXdfc2l6ZW9mOwogfSBMSUJHQ0NKSVRfQUJJXzI2OworCitM SUJHQ0NKSVRfQUJJXzI4IHsKKyAgZ2xvYmFsOgorICAgIGdjY19qaXRfY29udGV4dF9zZXRfb3V0 cHV0X2lkZW50OworfSBMSUJHQ0NKSVRfQUJJXzI3OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9qaXQuZGcvYWxsLW5vbi1mYWlsaW5nLXRlc3RzLmggYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy9h bGwtbm9uLWZhaWxpbmctdGVzdHMuaAppbmRleCAxNGEwYTMyMTU1MC4uMzZhYzgyNjQ1MmUgMTAw NjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvaml0LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0cy5oCisr KyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0cy5oCkBAIC0yNjYs NiArMjY2LDkgQEAKICN1bmRlZiBjcmVhdGVfY29kZQogI3VuZGVmIHZlcmlmeV9jb2RlCiAKKy8q IHRlc3Qtb3V0cHV0LWlkZW50LmM6IFRoaXMgY2FuJ3QgYmUgaW4gdGhlIHRlc3RjYXNlcyBhcnJh eSBhcyBpdAorICAgaXMgdGFyZ2V0LXNwZWNpZmljLiAgKi8KKwogLyogdGVzdC1xdWFkcmF0aWMu YyAqLwogI2RlZmluZSBjcmVhdGVfY29kZSBjcmVhdGVfY29kZV9xdWFkcmF0aWMKICNkZWZpbmUg dmVyaWZ5X2NvZGUgdmVyaWZ5X2NvZGVfcXVhZHJhdGljCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2ppdC5kZy90ZXN0LW91dHB1dC1pZGVudC5jIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVz dC1vdXRwdXQtaWRlbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZGI2MDEwMWFjYTMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0 LW91dHB1dC1pZGVudC5jCkBAIC0wLDAgKzEsMjMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRh cmdldCB4ODZfNjQtKi0qIH0gfSAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8 c3RkaW8uaD4KKworI2luY2x1ZGUgImxpYmdjY2ppdC5oIgorCisjZGVmaW5lIFRFU1RfQ09NUElM SU5HX1RPX0ZJTEUKKyNkZWZpbmUgT1VUUFVUX0tJTkQgICAgICBHQ0NfSklUX09VVFBVVF9LSU5E X0FTU0VNQkxFUgorI2RlZmluZSBPVVRQVVRfRklMRU5BTUUgICJvdXRwdXQtb2YtdGVzdC1vdXRw dXQtaWRlbnQuYy5zIgorI2luY2x1ZGUgImhhcm5lc3MuaCIKKwordm9pZAorY3JlYXRlX2NvZGUg KGdjY19qaXRfY29udGV4dCAqY3R4dCwgdm9pZCAqdXNlcl9kYXRhKQoreworICAvKiBMZXQncyB0 cnkgdG8gaW5qZWN0IHRoZSBlcXVpdmFsZW50IG9mOgorICAgICAjaWRlbnQgIk15IGNvbW1lbnQi CisgICovCisgIGdjY19qaXRfY29udGV4dF9zZXRfb3V0cHV0X2lkZW50IChjdHh0LCAiTXkgY29t bWVudCIpOworfQorCisvKiB7IGRnLWZpbmFsIHsgaml0LXZlcmlmeS1vdXRwdXQtZmlsZS13YXMt Y3JlYXRlZCAiIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBqaXQtdmVyaWZ5LWFzc2VtYmxlci1v dXRwdXQgIi5pZGVudAlcIk15IGNvbW1lbnRcIiIgfSB9ICovCi0tIAoyLjQzLjAKCg== --=-MJ3WvfoZZ2Lb8l7PJryp--