From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by sourceware.org (Postfix) with ESMTPS id AF44D38418A2 for ; Thu, 30 Jun 2022 11:55:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AF44D38418A2 Received: by mail-pl1-x631.google.com with SMTP id m2so16841953plx.3 for ; Thu, 30 Jun 2022 04:55:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:message-id:date:mime-version:user-agent :content-language:to:from:subject; bh=CWC1OB8wrMQlyW9zY2ilUe5tmYG60gboQH6yocAsByw=; b=n41IXcFe6cxZ+hOYko3SsBV53lySrNo+cgiEExgavofMJIpot0ISd1e9VWQDK4kVEB ppN5xmE0cCYjVsDKMVUcturfZfw1mTqR7ieAMxYyITEHeu7B4ooIQF8rXwMYhWlW3+wI IW+LQM0/y51C43GrGVQT/pDfp8voeCSMltO8RYXqX89SFpPbcI1Kp3ocY9ragH7a0dMN T35wCrJftRLm4uIV9ZkKmrzFFWcrnPJr2X/qIh6AsuQYe4Ck8tqstLcjCpMpbhv1xfG0 B62usOokHf5H03rD3bN46D00VetN0Par6KRPa5effXaMddsUyuaICfS90JqIrV3ikTlk 0RIA== X-Gm-Message-State: AJIora+Bw8vVdGryk2aCm6//lD3Z6GhdCPVwMs14JLasHebRrKNJvim1 K0t5PG3bGVl0LOdLjFZHik7HbtvmrDw= X-Google-Smtp-Source: AGRyM1vofhXBLP2qFHXBuvChqztqi+b22KmULPwVGZ2E0qWBJgIvutyiAT+XQYVZqgUUNFOl/2NFaQ== X-Received: by 2002:a17:902:f705:b0:16b:9b6d:67a1 with SMTP id h5-20020a170902f70500b0016b9b6d67a1mr10488014plo.39.1656590105323; Thu, 30 Jun 2022 04:55:05 -0700 (PDT) Received: from ?IPV6:2620:10d:c085:21c1::12aa? ([2620:10d:c090:400::5:ce5c]) by smtp.googlemail.com with ESMTPSA id na7-20020a17090b4c0700b001ecb5a6385bsm1714639pjb.36.2022.06.30.04.55.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 30 Jun 2022 04:55:04 -0700 (PDT) Sender: Nathan Sidwell Content-Type: multipart/mixed; boundary="------------Rjun0kukNu9uY8NsuxenIEIC" Message-ID: <3b7985a1-6e2e-1fa9-d5b1-ab1f5d325dad@acm.org> Date: Thu, 30 Jun 2022 07:55:00 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Content-Language: en-US To: GCC Patches From: Nathan Sidwell Subject: c++: Note macro locations X-Spam-Status: No, score=-3038.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, 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 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, 30 Jun 2022 11:55:08 -0000 This is a multi-part message in MIME format. --------------Rjun0kukNu9uY8NsuxenIEIC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit In order to prune ordinary locations, we need to note the locations of macros we'll be writing out. This reaaranges the macro processing to achieve that. Also drop an unneeded parameter from macro reading & writing. Fix some it's/its errors. nathan -- Nathan Sidwell --------------Rjun0kukNu9uY8NsuxenIEIC Content-Type: text/x-patch; charset=UTF-8; name="0001-c-Note-macro-locations.patch" Content-Disposition: attachment; filename="0001-c-Note-macro-locations.patch" Content-Transfer-Encoding: base64 RnJvbSA0N2UzNjc4NWNkMmJhMzVhNTc3YjA2NzhhMmFjMTg1Mjg4ZWI5ZTUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gU2lkd2VsbCA8bmF0aGFuQGFjbS5vcmc+ CkRhdGU6IE1vbiwgMjcgSnVuIDIwMjIgMDc6NTE6MTIgLTA3MDAKU3ViamVjdDogW1BBVENI XSBjKys6IE5vdGUgbWFjcm8gbG9jYXRpb25zCgpJbiBvcmRlciB0byBwcnVuZSBvcmRpbmFy eSBsb2NhdGlvbnMsIHdlIG5lZWQgdG8gbm90ZSB0aGUgbG9jYXRpb25zIG9mCm1hY3JvcyB3 ZSdsbCBiZSB3cml0aW5nIG91dC4gIFRoaXMgcmVhcmFuZ2VzIHRoZSBtYWNybyBwcm9jZXNz aW5nIHRvIGFjaGlldmUKdGhhdC4gIEFsc28gZHJvcCBhbiB1bm5lZWRlZCBwYXJhbWV0ZXIg ZnJvbSBtYWNybyByZWFkaW5nICYgd3JpdGluZy4KCkZpeCBzb21lIGl0J3MvaXRzIGVycm9y cy4KCglnY2MvY3AvCgkqIG1vZHVsZS5jYyAobW9kdWxlX3N0YXRlOjp3cml0ZV9kZWZpbmUp OiBEcm9wIGxvY2F0ZWQgcGFyYW0uCgkobW9kdWxlX3N0YXRlOjpyZWFkX2RlZmluZSk6IExp a2V3aXNlLgoJKG1vZHVsZV9zdGF0ZTo6cHJlcGFyZV9tYWNyb3MpOiBOZXcsIGJyb2tlbiBv dXQgb2YgLi4uCgkobW9kdWxlX3N0YXRlOjp3cml0ZV9tYWNyb3MpOiAuLi4gaGVyZS4gIEFk anVzdC4KCShtb2R1bGVfc3RhdGU6OndyaXRlX2JlZ2luKTogQWRqdXN0LgoJZ2NjL3Rlc3Rz dWl0ZS8KCSogZysrLmRnL21vZHVsZXMvaW5leHQtMS5IOiBDaGVjayBpbmNsdWRlLW5leHQg aGFwcGVuZWQuCi0tLQogZ2NjL2NwL21vZHVsZS5jYyAgICAgICAgICAgICAgICAgICAgICAg fCA5OCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv bW9kdWxlcy9pbmV4dC0xLkggfCAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlv bnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9jcC9tb2R1bGUuY2Mg Yi9nY2MvY3AvbW9kdWxlLmNjCmluZGV4IDY4YTdjZTUzZWU0Li4yMzhhNWViNzRkMiAxMDA2 NDQKLS0tIGEvZ2NjL2NwL21vZHVsZS5jYworKysgYi9nY2MvY3AvbW9kdWxlLmNjCkBAIC0y MjgxLDcgKzIyODEsNyBAQCBwdWJsaWM6CiAgICAgRUtfRVhQTElDSVRfSFdNLCAgCiAgICAg RUtfQklORElORyA9IEVLX0VYUExJQ0lUX0hXTSwgLyogSW1wbGljaXRseSBlbmNvZGVkLiAg Ki8KICAgICBFS19GT1JfQklORElORywJLyogQSBkZWNsIGJlaW5nIGluc2VydGVkIGZvciBh IGJpbmRpbmcuICAqLwotICAgIEVLX0lOTkVSX0RFQ0wsCS8qIEEgZGVjbCBkZWZpbmVkIG91 dHNpZGUgb2YgaXQncyBpbXBvcnRlZAorICAgIEVLX0lOTkVSX0RFQ0wsCS8qIEEgZGVjbCBk ZWZpbmVkIG91dHNpZGUgb2YgaXRzIGltcG9ydGVkCiAJCQkgICBjb250ZXh0LiAgKi8KICAg ICBFS19ESVJFQ1RfSFdNID0gRUtfUEFSVElBTCArIDEsCiAKQEAgLTM2NjMsOSArMzY2Mywx MCBAQCBjbGFzcyBHVFkoKGNoYWluX25leHQgKCIlaC5wYXJlbnQiKSwgZm9yX3VzZXIpKSBt b2R1bGVfc3RhdGUgewogICBib29sIHJlYWRfbWFjcm9fbWFwcyAodW5zaWduZWQpOwogCiAg cHJpdmF0ZToKLSAgdm9pZCB3cml0ZV9kZWZpbmUgKGJ5dGVzX291dCAmLCBjb25zdCBjcHBf bWFjcm8gKiwgYm9vbCBsb2NhdGVkID0gdHJ1ZSk7Ci0gIGNwcF9tYWNybyAqcmVhZF9kZWZp bmUgKGJ5dGVzX2luICYsIGNwcF9yZWFkZXIgKiwgYm9vbCBsb2NhdGVkID0gdHJ1ZSkgY29u c3Q7Ci0gIHVuc2lnbmVkIHdyaXRlX21hY3JvcyAoZWxmX291dCAqdG8sIGNwcF9yZWFkZXIg KiwgdW5zaWduZWQgKmNyY19wdHIpOworICB2b2lkIHdyaXRlX2RlZmluZSAoYnl0ZXNfb3V0 ICYsIGNvbnN0IGNwcF9tYWNybyAqKTsKKyAgY3BwX21hY3JvICpyZWFkX2RlZmluZSAoYnl0 ZXNfaW4gJiwgY3BwX3JlYWRlciAqKSBjb25zdDsKKyAgdmVjPGNwcF9oYXNobm9kZSAqPiAq cHJlcGFyZV9tYWNyb3MgKGNwcF9yZWFkZXIgKik7CisgIHVuc2lnbmVkIHdyaXRlX21hY3Jv cyAoZWxmX291dCAqdG8sIHZlYzxjcHBfaGFzaG5vZGUgKj4gKiwgdW5zaWduZWQgKmNyY19w dHIpOwogICBib29sIHJlYWRfbWFjcm9zICgpOwogICB2b2lkIGluc3RhbGxfbWFjcm9zICgp OwogCkBAIC03MTM2LDcgKzcxMzcsNyBAQCB0cmVlc19pbjo6dHJlZV9ub2RlX3ZhbHMgKHRy ZWUgdCkKIH0KIAogCi0vKiBJZiBUIGlzIGEgYmFjayByZWZlcmVuY2UsIGZpeGVkIHJlZmVy ZW5jZSBvciBOVUxMLCB3cml0ZSBvdXQgaXQncworLyogSWYgVCBpcyBhIGJhY2sgcmVmZXJl bmNlLCBmaXhlZCByZWZlcmVuY2Ugb3IgTlVMTCwgd3JpdGUgb3V0IGl0cwogICAgY29kZSBh bmQgcmV0dXJuIFdLX25vbmUuICBPdGhlcndpc2UgcmV0dXJuIFdLX3ZhbHVlIGlmIHdlIG11 c3Qgd3JpdGUKICAgIGJ5IHZhbHVlLCBvciBXS19ub3JtYWwgb3RoZXJ3aXNlLiAgKi8KIApA QCAtMTA2MDUsNyArMTA2MDYsNyBAQCB0cmVlc19vdXQ6OmtleV9tZXJnZWFibGUgKGludCB0 YWcsIG1lcmdlX2tpbmQgbWssIHRyZWUgZGVjbCwgdHJlZSBpbm5lciwKIAogLyogREVDTCBp cyBhIG5ldyBkZWNsYXJhdGlvbiB0aGF0IG1heSBiZSBkdXBsaWNhdGVkIGluIE9WTC4gIFVz ZSBSRVQgJgogICAgQVJHUyB0byBmaW5kIGl0cyBjbG9uZSwgb3IgTlVMTC4gIElmIERFQ0wn cyBERUNMX05BTUUgaXMgTlVMTCwgdGhpcwotICAgaGFzIGJlZW4gZm91bmQgYnkgYSBwcm94 eS4gIEl0IHdpbGwgYmUgYW4gZW51bSB0eXBlIGxvY2F0ZWQgYnkgaXQncworICAgaGFzIGJl ZW4gZm91bmQgYnkgYSBwcm94eS4gIEl0IHdpbGwgYmUgYW4gZW51bSB0eXBlIGxvY2F0ZWQg YnkgaXRzCiAgICBmaXJzdCBtZW1iZXIuCiAKICAgIFdlJ3JlIGNvbnNlcnZhdGl2ZSB3aXRo IG1hdGNoZXMsIHNvIGFtYmlndW91cyBkZWNscyB3aWxsIGJlCkBAIC0xMTYxNSw3ICsxMTYx Niw3IEBAIHRyZWVzX2luOjpyZWFkX3Zhcl9kZWYgKHRyZWUgZGVjbCwgdHJlZSBtYXliZV90 ZW1wbGF0ZSkKIH0KIAogLyogSWYgTUVNQkVSIGRvZXNuJ3QgaGF2ZSBhbiBpbmRlcGVuZGVu dCBsaWZlIG91dHNpZGUgdGhlIGNsYXNzLAotICAgcmV0dXJuIGl0IChvciBpdCdzIFRFTVBM QVRFX0RFQ0wpLiAgT3RoZXJ3aXNlIE5VTEwuICAqLworICAgcmV0dXJuIGl0IChvciBpdHMg VEVNUExBVEVfREVDTCkuICBPdGhlcndpc2UgTlVMTC4gICovCiAKIHN0YXRpYyB0cmVlCiBt ZW1iZXJfb3duZWRfYnlfY2xhc3MgKHRyZWUgbWVtYmVyKQpAQCAtMTU0MDUsNyArMTU0MDYs NyBAQCBtb2R1bGVfc3RhdGU6OnJlYWRfZW50aXRpZXMgKHVuc2lnbmVkIGNvdW50LCB1bnNp Z25lZCBsd20sIHVuc2lnbmVkIGh3bSkKICAgIHN1cmUgdGhlIHNwZWNpZmllZCBlbnRpdGll cyBhcmUgbG9hZGVkLgogCiAgICBBbiBvcHRpbWl6YXRpb24gbWlnaHQgYmUgdG8gaGF2ZSBh IGZsYWcgaW4gZWFjaCBrZXktZW50aXR5IHNheWluZwotICAgdGhhdCBpdCdzIHRvcCBrZXkg bWlnaHQgYmUgaW4gdGhlIGVudGl0eSB0YWJsZS4gIEl0J3Mgbm90IGNsZWFyIHRvCisgICB0 aGF0IGl0cyB0b3Aga2V5IG1pZ2h0IGJlIGluIHRoZSBlbnRpdHkgdGFibGUuICBJdCdzIG5v dCBjbGVhciB0bwogICAgbWUgaG93IHRvIHNldCB0aGF0IGZsYWcgY2hlYXBseSAtLSBjaGVh cGVyIHRoYW4ganVzdCBsb29raW5nLgogCiAgICBGSVhNRTogSXQnZCBiZSBuaWNlIHRvIGhh dmUgYSBiaXQgaW4gZGVjbHMgdG8gdGVsbCB1cyB3aGV0aGVyIHRvCkBAIC0xNjQ0NCw3ICsx NjQ0NSw3IEBAIG1vZHVsZV9zdGF0ZTo6cmVhZF9tYWNyb19tYXBzICh1bnNpZ25lZCBudW1f bWFjcm9fbG9jcykKIC8qIFNlcmlhbGl6ZSB0aGUgZGVmaW5pdGlvbiBvZiBNQUNSTy4gICov CiAKIHZvaWQKLW1vZHVsZV9zdGF0ZTo6d3JpdGVfZGVmaW5lIChieXRlc19vdXQgJnNlYywg Y29uc3QgY3BwX21hY3JvICptYWNybywgYm9vbCBsb2NhdGVkKQorbW9kdWxlX3N0YXRlOjp3 cml0ZV9kZWZpbmUgKGJ5dGVzX291dCAmc2VjLCBjb25zdCBjcHBfbWFjcm8gKm1hY3JvKQog ewogICBzZWMudSAobWFjcm8tPmNvdW50KTsKIApAQCAtMTY0NTMsOCArMTY0NTQsNyBAQCBt b2R1bGVfc3RhdGU6OndyaXRlX2RlZmluZSAoYnl0ZXNfb3V0ICZzZWMsIGNvbnN0IGNwcF9t YWNybyAqbWFjcm8sIGJvb2wgbG9jYXRlZAogICBzZWMuYiAobWFjcm8tPnN5c2hkcik7CiAg IHNlYy5iZmx1c2ggKCk7CiAKLSAgaWYgKGxvY2F0ZWQpCi0gICAgd3JpdGVfbG9jYXRpb24g KHNlYywgbWFjcm8tPmxpbmUpOworICB3cml0ZV9sb2NhdGlvbiAoc2VjLCBtYWNyby0+bGlu ZSk7CiAgIGlmIChtYWNyby0+ZnVuX2xpa2UpCiAgICAgewogICAgICAgc2VjLnUgKG1hY3Jv LT5wYXJhbWMpOwpAQCAtMTY0NjcsOCArMTY0NjcsNyBAQCBtb2R1bGVfc3RhdGU6OndyaXRl X2RlZmluZSAoYnl0ZXNfb3V0ICZzZWMsIGNvbnN0IGNwcF9tYWNybyAqbWFjcm8sIGJvb2wg bG9jYXRlZAogICBmb3IgKHVuc2lnbmVkIGl4ID0gMDsgaXggIT0gbWFjcm8tPmNvdW50OyBp eCsrKQogICAgIHsKICAgICAgIGNvbnN0IGNwcF90b2tlbiAqdG9rZW4gPSAmbWFjcm8tPmV4 cC50b2tlbnNbaXhdOwotICAgICAgaWYgKGxvY2F0ZWQpCi0Jd3JpdGVfbG9jYXRpb24gKHNl YywgdG9rZW4tPnNyY19sb2MpOworICAgICAgd3JpdGVfbG9jYXRpb24gKHNlYywgdG9rZW4t PnNyY19sb2MpOwogICAgICAgc2VjLnUgKHRva2VuLT50eXBlKTsKICAgICAgIHNlYy51ICh0 b2tlbi0+ZmxhZ3MpOwogICAgICAgc3dpdGNoIChjcHBfdG9rZW5fdmFsX2luZGV4ICh0b2tl bikpCkBAIC0xNjUzMywxMSArMTY1MzIsMTEgQEAgbW9kdWxlX3N0YXRlOjp3cml0ZV9kZWZp bmUgKGJ5dGVzX291dCAmc2VjLCBjb25zdCBjcHBfbWFjcm8gKm1hY3JvLCBib29sIGxvY2F0 ZWQKIC8qIFJlYWQgYSBtYWNybyBkZWZpbml0aW9uLiAgKi8KIAogY3BwX21hY3JvICoKLW1v ZHVsZV9zdGF0ZTo6cmVhZF9kZWZpbmUgKGJ5dGVzX2luICZzZWMsIGNwcF9yZWFkZXIgKnJl YWRlciwgYm9vbCBsb2NhdGVkKSBjb25zdAorbW9kdWxlX3N0YXRlOjpyZWFkX2RlZmluZSAo Ynl0ZXNfaW4gJnNlYywgY3BwX3JlYWRlciAqcmVhZGVyKSBjb25zdAogewogICB1bnNpZ25l ZCBjb3VudCA9IHNlYy51ICgpOwogICAvKiBXZSByZWx5IG9uIGtub3dpbmcgY3BwX3JlYWRl cidzIGhhc2ggdGFibGUgaXMgaWRlbnRfaGFzaCwgYW5kCi0gICAgIGl0J3Mgc3Vib2JqZWN0 IGFsbG9jYXRvciBpcyBzdHJpbmdwb29sX2dnY19hbGxvYyBhbmQgdGhhdCBpcyBqdXN0Cisg ICAgIGl0cyBzdWJvYmplY3QgYWxsb2NhdG9yIGlzIHN0cmluZ3Bvb2xfZ2djX2FsbG9jIGFu ZCB0aGF0IGlzIGp1c3QKICAgICAgYSB3cmFwcGVyIGZvciBnZ2NfYWxsb2NfYXRvbWljLiAg Ki8KICAgY3BwX21hY3JvICptYWNybwogICAgID0gKGNwcF9tYWNybyAqKWdnY19hbGxvY19h dG9taWMgKHNpemVvZiAoY3BwX21hY3JvKQpAQCAtMTY1NTMsNyArMTY1NTIsNyBAQCBtb2R1 bGVfc3RhdGU6OnJlYWRfZGVmaW5lIChieXRlc19pbiAmc2VjLCBjcHBfcmVhZGVyICpyZWFk ZXIsIGJvb2wgbG9jYXRlZCkgY29ucwogICBtYWNyby0+c3lzaGRyID0gc2VjLmIgKCk7CiAg IHNlYy5iZmx1c2ggKCk7CiAKLSAgbWFjcm8tPmxpbmUgPSBsb2NhdGVkID8gcmVhZF9sb2Nh dGlvbiAoc2VjKSA6IGxvYzsKKyAgbWFjcm8tPmxpbmUgPSByZWFkX2xvY2F0aW9uIChzZWMp OwogCiAgIGlmIChtYWNyby0+ZnVuX2xpa2UpCiAgICAgewpAQCAtMTY1NzAsNyArMTY1Njks NyBAQCBtb2R1bGVfc3RhdGU6OnJlYWRfZGVmaW5lIChieXRlc19pbiAmc2VjLCBjcHBfcmVh ZGVyICpyZWFkZXIsIGJvb2wgbG9jYXRlZCkgY29ucwogICBmb3IgKHVuc2lnbmVkIGl4ID0g MDsgaXggIT0gY291bnQgJiYgIXNlYy5nZXRfb3ZlcnJ1biAoKTsgaXgrKykKICAgICB7CiAg ICAgICBjcHBfdG9rZW4gKnRva2VuID0gJm1hY3JvLT5leHAudG9rZW5zW2l4XTsKLSAgICAg IHRva2VuLT5zcmNfbG9jID0gbG9jYXRlZCA/IHJlYWRfbG9jYXRpb24gKHNlYykgOiBsb2M7 CisgICAgICB0b2tlbi0+c3JjX2xvYyA9IHJlYWRfbG9jYXRpb24gKHNlYyk7CiAgICAgICB0 b2tlbi0+dHlwZSA9IGNwcF90dHlwZSAoc2VjLnUgKCkpOwogICAgICAgdG9rZW4tPmZsYWdz ID0gc2VjLnUgKCk7CiAgICAgICBzd2l0Y2ggKGNwcF90b2tlbl92YWxfaW5kZXggKHRva2Vu KSkKQEAgLTE2ODk5LDMxICsxNjg5OCw2MiBAQCBtYWNyb19sb2NfY21wIChjb25zdCB2b2lk ICphXywgY29uc3Qgdm9pZCAqYl8pCiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qIEdhdGhlciB0 aGUgbWFjcm8gZGVmaW5pdGlvbnMgYW5kIHVuZGVmaW5pdGlvbnMgdGhhdCB3ZSB3aWxsIG5l ZWQgdG8KKyAgIHdyaXRlIG91dC4gICAqLworCit2ZWM8Y3BwX2hhc2hub2RlICo+ICoKK21v ZHVsZV9zdGF0ZTo6cHJlcGFyZV9tYWNyb3MgKGNwcF9yZWFkZXIgKnJlYWRlcikKK3sKKyAg dmVjPGNwcF9oYXNobm9kZSAqPiAqbWFjcm9zOworICB2ZWNfYWxsb2MgKG1hY3JvcywgMTAw KTsKKworICBjcHBfZm9yYWxsX2lkZW50aWZpZXJzIChyZWFkZXIsIG1heWJlX2FkZF9tYWNy bywgbWFjcm9zKTsKKworICBkdW1wIChkdW1wZXI6Ok1BQ1JPKSAmJiBkdW1wICgiTm8gbW9y ZSB0aGFuICV1IG1hY3JvcyIsIG1hY3Jvcy0+bGVuZ3RoICgpKTsKKworICBtYWNyb3MtPnFz b3J0IChtYWNyb19sb2NfY21wKTsKKworICAvLyBOb3RlIHRoZSBsb2NhdGlvbnMuCisgIGZv ciAodW5zaWduZWQgaXggPSBtYWNyb3MtPmxlbmd0aCAoKTsgaXgtLTspCisgICAgeworICAg ICAgY3BwX2hhc2hub2RlICpub2RlID0gKCptYWNyb3MpW2l4XTsKKyAgICAgIG1hY3JvX2lt cG9ydDo6c2xvdCAmc2xvdCA9ICgqbWFjcm9faW1wb3J0cylbbm9kZS0+ZGVmZXJyZWQgLSAx XVswXTsKKyAgICAgIG1hY3JvX2V4cG9ydCAmbWFjID0gKCptYWNyb19leHBvcnRzKVtzbG90 Lm9mZnNldF07CisKKyAgICAgIGlmIChJREVOVElGSUVSX0tFWVdPUkRfUCAoaWRlbnRpZmll ciAobm9kZSkpKQorCWNvbnRpbnVlOworCisgICAgICBpZiAobWFjLnVuZGVmX2xvYyAhPSBV TktOT1dOX0xPQ0FUSU9OKQorCW5vdGVfbG9jYXRpb24gKG1hYy51bmRlZl9sb2MpOworICAg ICAgaWYgKG1hYy5kZWYpCisJeworCSAgbm90ZV9sb2NhdGlvbiAobWFjLmRlZi0+bGluZSk7 CisJICBmb3IgKHVuc2lnbmVkIGl4ID0gMDsgaXggIT0gbWFjLmRlZi0+Y291bnQ7IGl4Kysp CisJICAgIG5vdGVfbG9jYXRpb24gKG1hYy5kZWYtPmV4cC50b2tlbnNbaXhdLnNyY19sb2Mp OworCX0KKyAgICB9CisKKyAgcmV0dXJuIG1hY3JvczsKK30KKwogLyogV3JpdGUgb3V0IHRo ZSBleHBvcnRlZCBkZWZpbmVzLiAgVGhpcyBpcyB0d28gc2VjdGlvbnMsIG9uZQogICAgY29u dGFpbmluZyB0aGUgZGVmaW5pdGlvbnMsIHRoZSBvdGhlciBhIHRhYmxlIG9mIG5vZGUgbmFt ZXMuICAqLwogCiB1bnNpZ25lZAotbW9kdWxlX3N0YXRlOjp3cml0ZV9tYWNyb3MgKGVsZl9v dXQgKnRvLCBjcHBfcmVhZGVyICpyZWFkZXIsIHVuc2lnbmVkICpjcmNfcCkKK21vZHVsZV9z dGF0ZTo6d3JpdGVfbWFjcm9zIChlbGZfb3V0ICp0bywgdmVjPGNwcF9oYXNobm9kZSAqPiAq bWFjcm9zLAorCQkJICAgIHVuc2lnbmVkICpjcmNfcCkKIHsKICAgZHVtcCAoKSAmJiBkdW1w ICgiV3JpdGluZyBtYWNyb3MiKTsKICAgZHVtcC5pbmRlbnQgKCk7CiAKLSAgdmVjPGNwcF9o YXNobm9kZSAqPiBtYWNyb3M7Ci0gIG1hY3Jvcy5jcmVhdGUgKDEwMCk7Ci0gIGNwcF9mb3Jh bGxfaWRlbnRpZmllcnMgKHJlYWRlciwgbWF5YmVfYWRkX21hY3JvLCAmbWFjcm9zKTsKLQot ICBkdW1wIChkdW1wZXI6Ok1BQ1JPKSAmJiBkdW1wICgiTm8gbW9yZSB0aGFuICV1IG1hY3Jv cyIsIG1hY3Jvcy5sZW5ndGggKCkpOwotCi0gIG1hY3Jvcy5xc29ydCAobWFjcm9fbG9jX2Nt cCk7Ci0KICAgLyogV3JpdGUgdGhlIGRlZnMgKi8KICAgYnl0ZXNfb3V0IHNlYyAodG8pOwog ICBzZWMuYmVnaW4gKCk7CiAKICAgdW5zaWduZWQgY291bnQgPSAwOwotICBmb3IgKHVuc2ln bmVkIGl4ID0gbWFjcm9zLmxlbmd0aCAoKTsgaXgtLTspCisgIGZvciAodW5zaWduZWQgaXgg PSBtYWNyb3MtPmxlbmd0aCAoKTsgaXgtLTspCiAgICAgewotICAgICAgY3BwX2hhc2hub2Rl ICpub2RlID0gbWFjcm9zW2l4XTsKKyAgICAgIGNwcF9oYXNobm9kZSAqbm9kZSA9ICgqbWFj cm9zKVtpeF07CiAgICAgICBtYWNyb19pbXBvcnQ6OnNsb3QgJnNsb3QgPSAoKm1hY3JvX2lt cG9ydHMpW25vZGUtPmRlZmVycmVkIC0gMV1bMF07CiAgICAgICBnY2NfYXNzZXJ0ICghc2xv dC5nZXRfbW9kdWxlICgpICYmIHNsb3QuZ2V0X2RlZm5lc3MgKCkpOwogCkBAIC0xNjk2Nyw5 ICsxNjk5Nyw5IEBAIG1vZHVsZV9zdGF0ZTo6d3JpdGVfbWFjcm9zIChlbGZfb3V0ICp0bywg Y3BwX3JlYWRlciAqcmVhZGVyLCB1bnNpZ25lZCAqY3JjX3ApCiAgICAgICBzZWMuYmVnaW4g KCk7CiAgICAgICBzZWMudSAoY291bnQpOwogCi0gICAgICBmb3IgKHVuc2lnbmVkIGl4ID0g bWFjcm9zLmxlbmd0aCAoKTsgaXgtLTspCisgICAgICBmb3IgKHVuc2lnbmVkIGl4ID0gbWFj cm9zLT5sZW5ndGggKCk7IGl4LS07KQogCXsKLQkgIGNvbnN0IGNwcF9oYXNobm9kZSAqbm9k ZSA9IG1hY3Jvc1tpeF07CisJICBjb25zdCBjcHBfaGFzaG5vZGUgKm5vZGUgPSAoKm1hY3Jv cylbaXhdOwogCSAgbWFjcm9faW1wb3J0OjpzbG90ICZzbG90ID0gKCptYWNyb19pbXBvcnRz KVtub2RlLT5kZWZlcnJlZCAtIDFdWzBdOwogCiAJICBpZiAoc2xvdC5vZmZzZXQpCkBAIC0x Njk4Miw3ICsxNzAxMiw2IEBAIG1vZHVsZV9zdGF0ZTo6d3JpdGVfbWFjcm9zIChlbGZfb3V0 ICp0bywgY3BwX3JlYWRlciAqcmVhZGVyLCB1bnNpZ25lZCAqY3JjX3ApCiAgICAgICBzZWMu ZW5kICh0bywgdG8tPm5hbWUgKE1PRF9TTkFNRV9QRlggIi5tYWMiKSwgY3JjX3ApOwogICAg IH0KIAotICBtYWNyb3MucmVsZWFzZSAoKTsKICAgZHVtcC5vdXRkZW50ICgpOwogICByZXR1 cm4gY291bnQ7CiB9CkBAIC0xNzc1Miw2ICsxNzc4MSwxMCBAQCBtb2R1bGVfc3RhdGU6Ondy aXRlX2JlZ2luIChlbGZfb3V0ICp0bywgY3BwX3JlYWRlciAqcmVhZGVyLAogICAgIH0KICAg b29sLT5xc29ydCAob29sX2NtcCk7CiAKKyAgdmVjPGNwcF9oYXNobm9kZSAqPiAqbWFjcm9z ID0gbnVsbHB0cjsKKyAgaWYgKGlzX2hlYWRlciAoKSkKKyAgICBtYWNyb3MgPSBwcmVwYXJl X21hY3JvcyAocmVhZGVyKTsKKwogICBsb2NhdGlvbl9tYXBfaW5mbyBtYXBfaW5mbyA9IHdy aXRlX3ByZXBhcmVfbWFwcyAoJmNvbmZpZyk7CiAgIHVuc2lnbmVkIGNvdW50c1tNU0NfSFdN XTsKIApAQCAtMTc4OTgsOCArMTc5MzEsOSBAQCBtb2R1bGVfc3RhdGU6OndyaXRlX2JlZ2lu IChlbGZfb3V0ICp0bywgY3BwX3JlYWRlciAqcmVhZGVyLAogCiAgIGlmIChpc19oZWFkZXIg KCkpCiAgICAgewotICAgICAgY291bnRzW01TQ19tYWNyb3NdID0gd3JpdGVfbWFjcm9zICh0 bywgcmVhZGVyLCAmY3JjKTsKKyAgICAgIGNvdW50c1tNU0NfbWFjcm9zXSA9IHdyaXRlX21h Y3JvcyAodG8sIG1hY3JvcywgJmNyYyk7CiAgICAgICBjb3VudHNbTVNDX2luaXRzXSA9IHdy aXRlX2luaXRzICh0bywgdGFibGUsICZjcmMpOworICAgICAgdmVjX2ZyZWUgKG1hY3Jvcyk7 CiAgICAgfQogCiAgIHVuc2lnbmVkIGNsdXN0ZXJzID0gY291bnRzW01TQ19zZWNfaHdtXSAt IGNvdW50c1tNU0Nfc2VjX2x3bV07CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5k Zy9tb2R1bGVzL2luZXh0LTEuSCBiL2djYy90ZXN0c3VpdGUvZysrLmRnL21vZHVsZXMvaW5l eHQtMS5ICmluZGV4IDc3MDhjMzkxNjE4Li4yNWE5YjI2YTZkZiAxMDA2NDQKLS0tIGEvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvbW9kdWxlcy9pbmV4dC0xLkgKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvbW9kdWxlcy9pbmV4dC0xLkgKQEAgLTksMyArOSw0IEBACiAKICNlbmRpZgog CisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1sYW5nLWR1bXAge1dyb3RlIHNlY3Rpb246MSBuYW1l ZC1ieTonOjpmb28nfSBtb2R1bGUgfSB9Ci0tIAoyLjMwLjIKCg== --------------Rjun0kukNu9uY8NsuxenIEIC--