From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt1-x834.google.com (mail-qt1-x834.google.com [IPv6:2607:f8b0:4864:20::834]) by sourceware.org (Postfix) with ESMTPS id 6347D385AE7D for ; Fri, 10 Jun 2022 16:28:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6347D385AE7D Received: by mail-qt1-x834.google.com with SMTP id x18so16827733qtj.3 for ; Fri, 10 Jun 2022 09:28:52 -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:from:subject:to; bh=xGMYrO2sFndq3dbu6g8KC+77591wKIimKFAqfwf2vAQ=; b=x2f1gTSLweBVdICpIwjRHG1aLO6Ct+6fINrSQYm3mhoLApnCL0GmIMB1rwVpuFb7bJ CzauFP3+Q1CRv/oUAgrOSq5ek2DZul4wsBYkTcUI5hhpJRElwayHo23enG49nGiC2JFM IHkb2rAFm5nkWnuDybwDKde+lc9hoQ3OREjKNHk32Av6sBEVJtxmzHVC2fp4y/p9QGs7 Fncor+MscoCr0Lr1RP3iIx7qgle4LyrL98+8jf6REs5x3Ab8ywDPXht9DYLq0Rvi79Ls NTuVXP8W1LPDFMbbr5lGdoPcdsyuzD5xSWuKcNR0U7YOV74Zbxab+GI+mLjBifNJ5V4k Ig1A== X-Gm-Message-State: AOAM533Qu9AEjvIpnAXjS+HYxiBfuNFw/ftMPZj0+QkR//aQzwSu8zkF i8sGo/OoxocBNKMcdWpsdn5E0GyJKyw= X-Google-Smtp-Source: ABdhPJws8z+UPRHnG+G10r6ubNEOo3pcu28vUJJzjTZUB1Z3Ht6H5TM92+TagI9k0KL6ghPZJ7T9cQ== X-Received: by 2002:a05:622a:1794:b0:305:15f6:d7cf with SMTP id s20-20020a05622a179400b0030515f6d7cfmr5998666qtk.568.1654878531430; Fri, 10 Jun 2022 09:28:51 -0700 (PDT) Received: from ?IPV6:2620:10d:c0a3:1407:94d1:b76d:8a38:9b56? ([2620:10d:c091:500::1:332c]) by smtp.googlemail.com with ESMTPSA id cn10-20020a05622a248a00b00304fd53de4csm7450191qtb.47.2022.06.10.09.28.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 10 Jun 2022 09:28:50 -0700 (PDT) Sender: Nathan Sidwell Content-Type: multipart/mixed; boundary="------------vB9N4HBrlsRUgSttM80FGDl3" Message-ID: Date: Fri, 10 Jun 2022 12:28:49 -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 From: Nathan Sidwell Subject: c++: Adjust module initializer calling emission To: GCC Patches 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: Fri, 10 Jun 2022 16:28:55 -0000 This is a multi-part message in MIME format. --------------vB9N4HBrlsRUgSttM80FGDl3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit We special-case emitting the calls of module initializer functions. It's simpler to just emit a static fn do do that, and add it onto the front of the global init fn chain. We can also move the calculation of the set of initializers to call to the point of use. nathan -- Nathan Sidwell --------------vB9N4HBrlsRUgSttM80FGDl3 Content-Type: text/x-patch; charset=UTF-8; name="0001-c-Adjust-module-initializer-calling-emission.patch" Content-Disposition: attachment; filename="0001-c-Adjust-module-initializer-calling-emission.patch" Content-Transfer-Encoding: base64 RnJvbSA4ODM0ZDJkMzVmY2MyMjljMDBlMmUwNmU4YmU4YjA1MmM4MDNkOGNkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gU2lkd2VsbCA8bmF0aGFuQGFjbS5vcmc+ CkRhdGU6IEZyaSwgMTAgSnVuIDIwMjIgMDU6MjI6MjEgLTA3MDAKU3ViamVjdDogW1BBVENI XSBjKys6IEFkanVzdCBtb2R1bGUgaW5pdGlhbGl6ZXIgY2FsbGluZyBlbWlzc2lvbgoKV2Ug c3BlY2lhbC1jYXNlIGVtaXR0aW5nIHRoZSBjYWxscyBvZiBtb2R1bGUgaW5pdGlhbGl6ZXIg ZnVuY3Rpb25zLiAgSXQncwpzaW1wbGVyIHRvIGp1c3QgZW1pdCBhIHN0YXRpYyBmbiBkbyBk byB0aGF0LCBhbmQgYWRkIGl0IG9udG8gdGhlIGZyb250IG9mCnRoZSBnbG9iYWwgaW5pdCBm biBjaGFpbi4gIFdlIGNhbiBhbHNvIG1vdmUgdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBzZXQg b2YKaW5pdGlhbGl6ZXJzIHRvIGNhbGwgdG8gdGhlIHBvaW50IG9mIHVzZS4KCglnY2MvY3Av CgkqIGNwLXRyZWUuaCAobW9kdWxlX2hhc19pbXBvcnRfaW5pdCk6IFJlbmFtZSB0byAuLi4K CShtb2R1bGVfZGV0ZXJtaW5lZF9pbXBvcnRfaW5pdHMpOiAuLi4gaGVyZS4KCSogZGVjbDIu Y2MgKHN0YXJ0X29iamVjdHMpOiBEbyBub3QgaGFuZGxlIG1vZHVsZSBpbml0aWFsaXplcnMK CWhlcmUuCgkoY19wYXJzZV9maW5hbF9jbGVhbnVwcyk6IEdlbmVyYXRlIGEgc2VwYXJhdGUg bW9kdWxlCglpbml0aWFsaXplciBjYWxsaW5nIGZ1bmN0aW9uIGFuZCBhZGQgaXQgdG8gdGhl IGxpc3QuICBTaHJpbmsKCXRoZSBjLWxhbmcgcmVnaW9uLgoJKiBtb2R1bGUuY2MgKG51bV9p bml0X2NhbGxzX25lZWRlZCk6IERlbGV0ZS4KCSAobW9kdWxlX2hhc19pbXBvcnRfaW5pdCk6 IFJlbmFtZSB0byAuLi4KCShtb2R1bGVfZGV0ZXJtaW5lZF9pbXBvcnRfaW5pdHMpOiAuLi4g aGVyZS4gRG8gdGhlCgljYWxjdWxhdGlvbiBoZXJlIC4uLgoJKGZpbmlzaF9tb2R1bGVfcHJv Y2Vzc2luZyk6IC4uLiByYXRoZXIgdGhhbiBoZXJlLgoJKG1vZHVsZV9hZGRfaW1wb3J0X2lu aXRpYWxpemVycyk6IFJlZm9ybWF0LgoKCWdjYy90ZXN0c3VpdGUvCgkqIGcrKy5kZy9tb2R1 bGVzL2luaXQtM19hLkM6IE5ldy4KCSogZysrLmRnL21vZHVsZXMvaW5pdC0zX2IuQzogTmV3 LgoJKiBnKysuZGcvbW9kdWxlcy9pbml0LTNfYy5DOiBOZXcuCi0tLQogZ2NjL2NwL2NwLXRy ZWUuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBnY2MvY3AvZGVjbDIuY2Mg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDcgKysrKystLS0tLQogZ2NjL2NwL21vZHVs ZS5jYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEwICsrKysrKysrKysrLS0tLS0tLS0t LS0tLQogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbW9kdWxlcy9pbml0LTNfYS5DIHwgIDE3ICsr KysKIGdjYy90ZXN0c3VpdGUvZysrLmRnL21vZHVsZXMvaW5pdC0zX2IuQyB8ICAgNiArKwog Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvbW9kdWxlcy9pbml0LTNfYy5DIHwgIDE3ICsrKysKIDYg ZmlsZXMgY2hhbmdlZCwgMTE3IGluc2VydGlvbnMoKyksIDgyIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL21vZHVsZXMvaW5pdC0zX2Eu QwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL21vZHVsZXMvaW5p dC0zX2IuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL21vZHVs ZXMvaW5pdC0zX2MuQwoKZGlmZiAtLWdpdCBhL2djYy9jcC9jcC10cmVlLmggYi9nY2MvY3Av Y3AtdHJlZS5oCmluZGV4IGE1ZDkzMjgyMTY3Li5mMTI5NGRhYzdkNSAxMDA2NDQKLS0tIGEv Z2NjL2NwL2NwLXRyZWUuaAorKysgYi9nY2MvY3AvY3AtdHJlZS5oCkBAIC03MTgwLDcgKzcx ODAsNyBAQCBleHRlcm4gbW9kdWxlX3N0YXRlICpnZXRfbW9kdWxlICh0cmVlIG5hbWUsIG1v ZHVsZV9zdGF0ZSAqcGFyZW50ID0gTlVMTCwKIGV4dGVybiBib29sIG1vZHVsZV9tYXlfcmVk ZWNsYXJlICh0cmVlIGRlY2wpOwogCiBleHRlcm4gYm9vbCBtb2R1bGVfZ2xvYmFsX2luaXRf bmVlZGVkICgpOwotZXh0ZXJuIGJvb2wgbW9kdWxlX2hhc19pbXBvcnRfaW5pdHMgKCk7Citl eHRlcm4gYm9vbCBtb2R1bGVfZGV0ZXJtaW5lX2ltcG9ydF9pbml0cyAoKTsKIGV4dGVybiB2 b2lkIG1vZHVsZV9hZGRfaW1wb3J0X2luaXRpYWxpemVycyAoKTsKIAogLyogV2hlcmUgdGhl IG5hbWVzcGFjZS1zY29wZSBkZWNsIHdhcyBvcmlnaW5hbGx5IGRlY2xhcmVkLiAgKi8KZGlm ZiAtLWdpdCBhL2djYy9jcC9kZWNsMi5jYyBiL2djYy9jcC9kZWNsMi5jYwppbmRleCA5ZGU5 YTdhNGY4YS4uZmYxYzM2NzQ1Y2YgMTAwNjQ0Ci0tLSBhL2djYy9jcC9kZWNsMi5jYworKysg Yi9nY2MvY3AvZGVjbDIuY2MKQEAgLTM5MDMsOCArMzkwMyw3IEBAIHN0YXJ0X29iamVjdHMg KGJvb2wgaW5pdHAsIHVuc2lnbmVkIHByaW9yaXR5LCBib29sIGhhc19ib2R5KQogCiAgIHRy ZWUgYm9keSA9IGJlZ2luX2NvbXBvdW5kX3N0bXQgKEJDU19GTl9CT0RZKTsKIAotICBib29s IGhhc19pbXBvcnRfaW5pdHMgPSBkZWZhdWx0X2luaXQgJiYgbW9kdWxlX2hhc19pbXBvcnRf aW5pdHMgKCk7Ci0gIGlmIChpc19tb2R1bGVfaW5pdCAmJiAoaGFzX2ltcG9ydF9pbml0cyB8 fCBoYXNfYm9keSkpCisgIGlmIChpc19tb2R1bGVfaW5pdCAmJiBoYXNfYm9keSkKICAgICB7 CiAgICAgICAvLyBJZiB0aGUgZnVuY3Rpb24gaXMgZ29pbmcgdG8gYmUgZW1wdHksIGRvbid0 IGVtaXQgaWRlbXBvdGVuY3kuCiAgICAgICAvLyAnc3RhdGljIGJvb2wgX19pbl9jaHJnID0g ZmFsc2U7CkBAIC0zOTMwLDkgKzM5MjksNiBAQCBzdGFydF9vYmplY3RzIChib29sIGluaXRw LCB1bnNpZ25lZCBwcmlvcml0eSwgYm9vbCBoYXNfYm9keSkKICAgICAgIGZpbmlzaF9leHBy X3N0bXQgKGFzc2lnbik7CiAgICAgfQogCi0gIGlmIChoYXNfaW1wb3J0X2luaXRzKQotICAg IG1vZHVsZV9hZGRfaW1wb3J0X2luaXRpYWxpemVycyAoKTsKLQogICByZXR1cm4gYm9keTsK IH0KIApAQCAtNTE5NSw2ICs1MTkxLDEyIEBAIGNfcGFyc2VfZmluYWxfY2xlYW51cHMgKHZv aWQpCiAKICAgbWF5YmVfd2Fybl9zaXplZF9kZWxldGUgKCk7CiAKKyAgLy8gUGxhY2UgdGhl IGluaXQgZm5zIGluIHRoZSByaWdodCBvcmRlci4gIFdlIG5lZWQgdG8gZG8gdGhpcyBub3cs CisgIC8vIHNvIHRoYXQgYW55IG1vZHVsZSBpbml0IHdpbGwgZ28gYXQgdGhlIHN0YXJ0Lgor ICBpZiAoc3RhdGljX2luaXRfZmluaV9mbnNbdHJ1ZV0pCisgICAgZm9yIChhdXRvIGl0ZXIg OiAqc3RhdGljX2luaXRfZmluaV9mbnNbdHJ1ZV0pCisgICAgICBpdGVyLnNlY29uZCA9IG5y ZXZlcnNlIChpdGVyLnNlY29uZCk7CisgIAogICAvKiBUaGVuLCBkbyB0aGUgT2JqZWN0aXZl LUMgc3R1ZmYuICBUaGlzIGlzIHdoZXJlIGFsbCB0aGUKICAgICAgT2JqZWN0aXZlLUMgbW9k dWxlIHN0dWZmIGdldHMgZ2VuZXJhdGVkIChzeW10YWIsCiAgICAgIGNsYXNzL3Byb3RvY29s L3NlbGVjdG9yIGxpc3RzIGV0YykuICBUaGlzIG11c3QgYmUgZG9uZSBhZnRlciBDKysKQEAg LTUyMDMsMTEgKzUyMDUsMTggQEAgY19wYXJzZV9maW5hbF9jbGVhbnVwcyAodm9pZCkKICAg aWYgKGNfZGlhbGVjdF9vYmpjICgpKQogICAgIG9iamNfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0 aW9ucyAoKTsKIAotICAvKiBXZSBnaXZlIEMgbGlua2FnZSB0byBzdGF0aWMgY29uc3RydWN0 b3JzIGFuZCBkZXN0cnVjdG9ycy4gICovCi0gIHB1c2hfbGFuZ19jb250ZXh0IChsYW5nX25h bWVfYyk7CisgIGlmIChtb2R1bGVfZGV0ZXJtaW5lX2ltcG9ydF9pbml0cyAoKSkKKyAgICB7 CisgICAgICBpbnB1dF9sb2NhdGlvbiA9IGxvY3VzX2F0X2VuZF9vZl9wYXJzaW5nOworICAg ICAgdHJlZSBib2R5ID0gc3RhcnRfcGFydGlhbF9pbml0X2ZpbmlfZm4gKHRydWUsIERFRkFV TFRfSU5JVF9QUklPUklUWSwKKwkJCQkJICAgICAgc3NkZl9jb3VudCsrKTsKKyAgICAgIG1v ZHVsZV9hZGRfaW1wb3J0X2luaXRpYWxpemVycyAoKTsKKyAgICAgIGlucHV0X2xvY2F0aW9u ID0gbG9jdXNfYXRfZW5kX29mX3BhcnNpbmc7CisgICAgICBmaW5pc2hfcGFydGlhbF9pbml0 X2ZpbmlfZm4gKGJvZHkpOworICAgIH0KIAogICBpZiAoKGNfZGlhbGVjdF9vYmpjICgpICYm IG9iamNfc3RhdGljX2luaXRfbmVlZGVkX3AgKCkpCi0gICAgICB8fCBtb2R1bGVfZ2xvYmFs X2luaXRfbmVlZGVkICgpIHx8IG1vZHVsZV9oYXNfaW1wb3J0X2luaXRzICgpKQorICAgICAg fHwgbW9kdWxlX2dsb2JhbF9pbml0X25lZWRlZCAoKSkKICAgICB7CiAgICAgICAvLyBNYWtl IHN1cmUgdGhlcmUncyBhIGRlZmF1bHQgcHJpb3JpdHkgZW50cnkuCiAgICAgICBpZiAoIXN0 YXRpY19pbml0X2ZpbmlfZm5zW3RydWVdKQpAQCAtNTIxNiwzMiArNTIyNSwyNCBAQCBjX3Bh cnNlX2ZpbmFsX2NsZWFudXBzICh2b2lkKQogICAgIH0gCiAKICAgLyogR2VuZXJhdGUgaW5p dGlhbGl6YXRpb24gYW5kIGRlc3RydWN0aW9uIGZ1bmN0aW9ucyBmb3IgYWxsCi0gICAgIHBy aW9yaXRpZXMgZm9yIHdoaWNoIHRoZXkgYXJlIHJlcXVpcmVkLiAgKi8KKyAgICAgcHJpb3Jp dGllcyBmb3Igd2hpY2ggdGhleSBhcmUgcmVxdWlyZWQuICBUaGV5IGhhdmUgQy1sYW5ndWFn ZQorICAgICBsaW5rYWdlLiAgKi8KKyAgcHVzaF9sYW5nX2NvbnRleHQgKGxhbmdfbmFtZV9j KTsKICAgZm9yICh1bnNpZ25lZCBpbml0cCA9IDI7IGluaXRwLS07KQogICAgIGlmIChzdGF0 aWNfaW5pdF9maW5pX2Zuc1tpbml0cF0pCiAgICAgICB7CiAJZm9yIChhdXRvIGl0ZXIgOiAq c3RhdGljX2luaXRfZmluaV9mbnNbaW5pdHBdKQotCSAgewotCSAgICB0cmVlIGZucyA9IGl0 ZXIuc2Vjb25kOwotCSAgICAvLyBUaGUgbGlzdCBvZiBmdW5jdGlvbnMgd2FzIGNvbnN0cnVj dGVkIGluIHJldmVyc2UKLQkgICAgLy8gb3JkZXIsIHdoaWNoIHdlIG9ubHkgd2FudCBmb3Ig ZHRvcnMuCi0JICAgIGlmIChpbml0cCkKLQkgICAgICBmbnMgPSBucmV2ZXJzZSAoZm5zKTsK LQkgICAgZ2VuZXJhdGVfY3Rvcl9vcl9kdG9yX2Z1bmN0aW9uIChpbml0cCwgaXRlci5maXJz dCwgZm5zLAotCQkJCQkgICAgbG9jdXNfYXRfZW5kX29mX3BhcnNpbmcpOwotCSAgfQorCSAg Z2VuZXJhdGVfY3Rvcl9vcl9kdG9yX2Z1bmN0aW9uIChpbml0cCwgaXRlci5maXJzdCwgaXRl ci5zZWNvbmQsCisJCQkJCSAgbG9jdXNfYXRfZW5kX29mX3BhcnNpbmcpOwogCXN0YXRpY19p bml0X2ZpbmlfZm5zW2luaXRwXSA9IG51bGxwdHI7CiAgICAgICB9Ci0gIAorICBwb3BfbGFu Z19jb250ZXh0ICgpOworCiAgIGZpbmlfbW9kdWxlcyAoKTsKIAogICAvKiBHZW5lcmF0ZSBh bnkgbWlzc2luZyBhbGlhc2VzLiAgKi8KICAgbWF5YmVfYXBwbHlfcGVuZGluZ19wcmFnbWFf d2Vha3MgKCk7CiAKLSAgLyogV2UncmUgZG9uZSB3aXRoIHN0YXRpYyBjb25zdHJ1Y3RvcnMs IHNvIHdlIGNhbiBnbyBiYWNrIHRvICJDKysiCi0gICAgIGxpbmthZ2Ugbm93LiAgKi8KLSAg cG9wX2xhbmdfY29udGV4dCAoKTsKLQogICBpZiAoZmxhZ192dGFibGVfdmVyaWZ5KQogICAg IHsKICAgICAgIHZ0dl9yZWNvdmVyX2NsYXNzX2luZm8gKCk7CmRpZmYgLS1naXQgYS9nY2Mv Y3AvbW9kdWxlLmNjIGIvZ2NjL2NwL21vZHVsZS5jYwppbmRleCA3ZTM2OTk2YzBmYy4uMmIx ODc3ZWE4MmUgMTAwNjQ0Ci0tLSBhL2djYy9jcC9tb2R1bGUuY2MKKysrIGIvZ2NjL2NwL21v ZHVsZS5jYwpAQCAtMzc4Myw5ICszNzgzLDYgQEAgc3RhdGljIHVuc2lnbmVkIGxvYWRlZF9j bHVzdGVyczsKIC8qIFdoYXQgdGhlIGN1cnJlbnQgVFUgaXMuICAqLwogdW5zaWduZWQgbW9k dWxlX2tpbmQ7CiAKLS8qIE51bWJlciBvZiBnbG9iYWwgaW5pdCBjYWxscyBuZWVkZWQuICAq LwotdW5zaWduZWQgbnVtX2luaXRfY2FsbHNfbmVlZGVkID0gMDsKLQogLyogR2xvYmFsIHRy ZWVzLiAgKi8KIHN0YXRpYyBjb25zdCBzdGQ6OnBhaXI8dHJlZSAqLCB1bnNpZ25lZD4gZ2xv YmFsX3RyZWVfYXJ5c1tdID0KICAgewpAQCAtMTkwMzUsMTIgKzE5MDMyLDQzIEBAIG1vZHVs ZV9nbG9iYWxfaW5pdF9uZWVkZWQgKCkKICAgcmV0dXJuIG1vZHVsZV9oYXNfY21pX3AgKCkg JiYgIWhlYWRlcl9tb2R1bGVfcCAoKTsKIH0KIAotLyogUmV0dXJuIHRydWUgSUZGIHdlIGhh dmUgaW1wb3J0IGdsb2JhbCBpbml0cyB0byBjYWxsLiAgKi8KKy8qIENhbGN1bGF0ZSB3aGlj aCwgaWYgYW55LCBpbXBvcnQgaW5pdGlhbGl6ZXJzIG5lZWQgY2FsbGluZy4gICovCiAKIGJv b2wKLW1vZHVsZV9oYXNfaW1wb3J0X2luaXRzICgpCittb2R1bGVfZGV0ZXJtaW5lX2ltcG9y dF9pbml0cyAoKQogewotICByZXR1cm4gYm9vbCAobnVtX2luaXRfY2FsbHNfbmVlZGVkKTsK KyAgaWYgKCFtb2R1bGVzIHx8IGhlYWRlcl9tb2R1bGVfcCAoKSkKKyAgICByZXR1cm4gZmFs c2U7CisKKyAgLyogRGV0ZXJtaW5lIGNhbGxfaW5pdF9wLiAgV2UgbmVlZCB0aGUgc2FtZSBi aXRtYXAgYWxsb2NhdGlvbgorICAgICBzY2hlbWUgYXMgZm9yIHRoZSBpbXBvcnRzIG1lbWJl ci4gICovCisgIGZ1bmN0aW9uX2RlcHRoKys7IC8qIERpc2FibGUgR0MuICAqLworICBiaXRt YXAgaW5kaXJlY3RfaW1wb3J0cyAoQklUTUFQX0dHQ19BTExPQyAoKSk7CisKKyAgYm9vbCBh bnkgPSBmYWxzZTsKKworICAvKiBCZWNhdXNlIGluZGlyZWN0IGltcG9ydHMgYXJlIGJlZm9y ZSB0aGVpciBkaXJlY3QgaW1wb3J0LCBhbmQKKyAgICAgd2UncmUgc2Nhbm5pbmcgdGhlIGFy cmF5IGJhY2t3YXJkcywgd2Ugb25seSBuZWVkIG9uZSBwYXNzISAgKi8KKyAgZm9yICh1bnNp Z25lZCBpeCA9IG1vZHVsZXMtPmxlbmd0aCAoKTsgLS1peDspCisgICAgeworICAgICAgbW9k dWxlX3N0YXRlICppbXBvcnQgPSAoKm1vZHVsZXMpW2l4XTsKKworICAgICAgaWYgKCFpbXBv cnQtPmlzX2hlYWRlciAoKQorCSAgJiYgIWJpdG1hcF9iaXRfcCAoaW5kaXJlY3RfaW1wb3J0 cywgaXgpKQorCXsKKwkgIC8qIEV2ZXJ5dGhpbmcgdGhpcyBpbXBvcnRzIGlzIHRoZXJlZm9y ZSBpbmRpcmVjdGx5CisJICAgICBpbXBvcnRlZC4gICovCisJICBiaXRtYXBfaW9yX2ludG8g KGluZGlyZWN0X2ltcG9ydHMsIGltcG9ydC0+aW1wb3J0cyk7CisJICAvKiBXZSBkb24ndCBo YXZlIHRvIHdvcnJ5IGFib3V0IHRoZSBzZWxmLWltcG9ydCBiaXQsCisJICAgICBiZWNhdXNl IG9mIHRoZSBzaW5nbGUgcGFzcy4gICovCisKKwkgIGltcG9ydC0+Y2FsbF9pbml0X3AgPSB0 cnVlOworCSAgYW55ID0gdHJ1ZTsKKwl9CisgICAgfQorICBmdW5jdGlvbl9kZXB0aC0tOwor CisgIHJldHVybiBhbnk7CiB9CiAKIC8qIEVtaXQgY2FsbHMgdG8gZWFjaCBkaXJlY3QgaW1w b3J0J3MgZ2xvYmFsIGluaXRpYWxpemVyLiAgSW5jbHVkaW5nCkBAIC0xOTA1NCwzNSArMTkw ODIsMzAgQEAgbW9kdWxlX2hhc19pbXBvcnRfaW5pdHMgKCkKIHZvaWQKIG1vZHVsZV9hZGRf aW1wb3J0X2luaXRpYWxpemVycyAoKQogewotICB1bnNpZ25lZCBjYWxscyA9IDA7Ci0gIGlm IChtb2R1bGVzKQorICBpZiAoIW1vZHVsZXMgfHwgaGVhZGVyX21vZHVsZV9wICgpKQorICAg IHJldHVybjsKKworICB0cmVlIGZudHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGUgKHZvaWRf dHlwZV9ub2RlLCB2b2lkX2xpc3Rfbm9kZSk7CisgIHJlbGVhc2luZ192ZWMgYXJnczsgIC8v IFRoZXJlIGFyZSBubyBhcmdzCisKKyAgZm9yICh1bnNpZ25lZCBpeCA9IG1vZHVsZXMtPmxl bmd0aCAoKTsgLS1peDspCiAgICAgewotICAgICAgdHJlZSBmbnR5cGUgPSBidWlsZF9mdW5j dGlvbl90eXBlICh2b2lkX3R5cGVfbm9kZSwgdm9pZF9saXN0X25vZGUpOwotICAgICAgcmVs ZWFzaW5nX3ZlYyBhcmdzOyAgLy8gVGhlcmUgYXJlIG5vIGFyZ3MKLQotICAgICAgZm9yICh1 bnNpZ25lZCBpeCA9IG1vZHVsZXMtPmxlbmd0aCAoKTsgLS1peDspCisgICAgICBtb2R1bGVf c3RhdGUgKmltcG9ydCA9ICgqbW9kdWxlcylbaXhdOworICAgICAgaWYgKGltcG9ydC0+Y2Fs bF9pbml0X3ApCiAJewotCSAgbW9kdWxlX3N0YXRlICppbXBvcnQgPSAoKm1vZHVsZXMpW2l4 XTsKLQkgIGlmIChpbXBvcnQtPmNhbGxfaW5pdF9wKQotCSAgICB7Ci0JICAgICAgdHJlZSBu YW1lID0gbWFuZ2xlX21vZHVsZV9nbG9iYWxfaW5pdCAoaXgpOwotCSAgICAgIHRyZWUgZm5k ZWNsID0gYnVpbGRfbGFuZ19kZWNsIChGVU5DVElPTl9ERUNMLCBuYW1lLCBmbnR5cGUpOwor CSAgdHJlZSBuYW1lID0gbWFuZ2xlX21vZHVsZV9nbG9iYWxfaW5pdCAoaXgpOworCSAgdHJl ZSBmbmRlY2wgPSBidWlsZF9sYW5nX2RlY2wgKEZVTkNUSU9OX0RFQ0wsIG5hbWUsIGZudHlw ZSk7CiAKLQkgICAgICBERUNMX0NPTlRFWFQgKGZuZGVjbCkgPSBGUk9CX0NPTlRFWFQgKGds b2JhbF9uYW1lc3BhY2UpOwotCSAgICAgIFNFVF9ERUNMX0FTU0VNQkxFUl9OQU1FIChmbmRl Y2wsIG5hbWUpOwotCSAgICAgIFRSRUVfUFVCTElDIChmbmRlY2wpID0gdHJ1ZTsKLQkgICAg ICBkZXRlcm1pbmVfdmlzaWJpbGl0eSAoZm5kZWNsKTsKKwkgIERFQ0xfQ09OVEVYVCAoZm5k ZWNsKSA9IEZST0JfQ09OVEVYVCAoZ2xvYmFsX25hbWVzcGFjZSk7CisJICBTRVRfREVDTF9B U1NFTUJMRVJfTkFNRSAoZm5kZWNsLCBuYW1lKTsKKwkgIFRSRUVfUFVCTElDIChmbmRlY2wp ID0gdHJ1ZTsKKwkgIGRldGVybWluZV92aXNpYmlsaXR5IChmbmRlY2wpOwogCi0JICAgICAg dHJlZSBjYWxsID0gY3BfYnVpbGRfZnVuY3Rpb25fY2FsbF92ZWMgKGZuZGVjbCwgJmFyZ3Ms Ci0JCQkJCQkgICAgICB0Zl93YXJuaW5nX29yX2Vycm9yKTsKLQkgICAgICBmaW5pc2hfZXhw cl9zdG10IChjYWxsKTsKLQkgICAgICAKLQkgICAgICBjYWxscysrOwotCSAgICB9CisJICB0 cmVlIGNhbGwgPSBjcF9idWlsZF9mdW5jdGlvbl9jYWxsX3ZlYyAoZm5kZWNsLCAmYXJncywK KwkJCQkJCSAgdGZfd2FybmluZ19vcl9lcnJvcik7CisJICBmaW5pc2hfZXhwcl9zdG10IChj YWxsKTsKIAl9CiAgICAgfQotCi0gIGdjY19jaGVja2luZ19hc3NlcnQgKGNhbGxzID09IG51 bV9pbml0X2NhbGxzX25lZWRlZCk7CiB9CiAKIC8qIE5BTUUgJiBMRU4gYXJlIGEgcHJlcHJv Y2Vzc2VkIGhlYWRlciBuYW1lLCBwb3NzaWJseSBpbmNsdWRpbmcgdGhlCkBAIC0xOTk1MSwz NSArMTk5NzQsNiBAQCBmaW5pc2hfbW9kdWxlX3Byb2Nlc3NpbmcgKGNwcF9yZWFkZXIgKnJl YWRlcikKIAkJICAgICAgIChhdmFpbGFibGVfY2x1c3RlcnMgKyAhYXZhaWxhYmxlX2NsdXN0 ZXJzKSk7CiAgICAgICBkdW1wLnBvcCAobik7CiAgICAgfQotCi0gIGlmIChtb2R1bGVzICYm ICFoZWFkZXJfbW9kdWxlX3AgKCkpCi0gICAgewotICAgICAgLyogRGV0ZXJtaW5lIGNhbGxf aW5pdF9wLiAgV2UgbmVlZCB0aGUgc2FtZSBiaXRtYXAgYWxsb2NhdGlvbgotICAgICAgICAg c2NoZW1lIGFzIGZvciB0aGUgaW1wb3J0cyBtZW1iZXIuICAqLwotICAgICAgZnVuY3Rpb25f ZGVwdGgrKzsgLyogRGlzYWJsZSBHQy4gICovCi0gICAgICBiaXRtYXAgaW5kaXJlY3RfaW1w b3J0cyAoQklUTUFQX0dHQ19BTExPQyAoKSk7Ci0KLSAgICAgIC8qIEJlY2F1c2UgaW5kaXJl Y3QgaW1wb3J0cyBhcmUgYmVmb3JlIHRoZWlyIGRpcmVjdCBpbXBvcnQsIGFuZAotCSB3ZSdy ZSBzY2FubmluZyB0aGUgYXJyYXkgYmFja3dhcmRzLCB3ZSBvbmx5IG5lZWQgb25lIHBhc3Mh ICAqLwotICAgICAgZm9yICh1bnNpZ25lZCBpeCA9IG1vZHVsZXMtPmxlbmd0aCAoKTsgLS1p eDspCi0JewotCSAgbW9kdWxlX3N0YXRlICppbXBvcnQgPSAoKm1vZHVsZXMpW2l4XTsKLQot CSAgaWYgKCFpbXBvcnQtPmlzX2hlYWRlciAoKQotCSAgICAgICYmICFiaXRtYXBfYml0X3Ag KGluZGlyZWN0X2ltcG9ydHMsIGl4KSkKLQkgICAgewotCSAgICAgIC8qIEV2ZXJ5dGhpbmcg dGhpcyBpbXBvcnRzIGlzIHRoZXJlZm9yZSBpbmRpcmVjdGx5Ci0JCSBpbXBvcnRlZC4gICov Ci0JICAgICAgYml0bWFwX2lvcl9pbnRvIChpbmRpcmVjdF9pbXBvcnRzLCBpbXBvcnQtPmlt cG9ydHMpOwotCSAgICAgIC8qIFdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIHNl bGYtaW1wb3J0IGJpdCwKLQkJIGJlY2F1c2Ugb2YgdGhlIHNpbmdsZSBwYXNzLiAgKi8KLQot CSAgICAgIGltcG9ydC0+Y2FsbF9pbml0X3AgPSB0cnVlOwotCSAgICAgIG51bV9pbml0X2Nh bGxzX25lZWRlZCsrOwotCSAgICB9Ci0JfQotICAgICAgZnVuY3Rpb25fZGVwdGgtLTsKLSAg ICB9CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL21vZHVs ZXMvaW5pdC0zX2EuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL21vZHVsZXMvaW5pdC0zX2Eu QwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjBlMjdlYzA0Y2QK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9tb2R1bGVzL2luaXQt M19hLkMKQEAgLTAsMCArMSwxNyBAQAorLy8geyBkZy1tb2R1bGUtZG8gcnVuIH0KKy8vIHsg ZGctYWRkaXRpb25hbC1vcHRpb25zIHstZm1vZHVsZXMtdHMgLVduby1wZWRhbnRpY30gfQor bW9kdWxlOworIyA1IF9fRklMRV9fIDEKK2V4dGVybiBpbnQgY291bnRlcjsKKyMgNyAiIiAy CitleHBvcnQgbW9kdWxlIE9uZTsKKworZXhwb3J0IGNsYXNzIER5bgoreworICBpbnQgaTsK K3B1YmxpYzoKKyAgRHluICgpIDogaSAoKytjb3VudGVyKSB7fQorICBvcGVyYXRvciBpbnQg KCkgY29uc3QgeyByZXR1cm4gaTsgfQorfTsKKworZXhwb3J0IER5biBvbmU7CmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9tb2R1bGVzL2luaXQtM19iLkMgYi9nY2MvdGVz dHN1aXRlL2crKy5kZy9tb2R1bGVzL2luaXQtM19iLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmE0ZTAwMzZlNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvbW9kdWxlcy9pbml0LTNfYi5DCkBAIC0wLDAgKzEsNiBAQAor Ly8geyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgey1mbW9kdWxlcy10cyAtV25vLXBlZGFudGlj fSB9CisKK2V4cG9ydCBtb2R1bGUgVHdvOworaW1wb3J0IE9uZTsKKworZXhwb3J0IER5biB0 d287CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9tb2R1bGVzL2luaXQtM19j LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9tb2R1bGVzL2luaXQtM19jLkMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJiNDYzNWE2YzkwCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbW9kdWxlcy9pbml0LTNfYy5DCkBAIC0w LDAgKzEsMTcgQEAKKy8vIHsgZGctYWRkaXRpb25hbC1vcHRpb25zIHstZm1vZHVsZXMtdHMg LVduby1wZWRhbnRpY30gfQorCitpbXBvcnQgT25lOworaW50IGNvdW50ZXIgPSAwOworRHlu IHRocmVlOworaW1wb3J0IFR3bzsKKworaW50IG1haW4gKCkKK3sKKyAgaWYgKG9uZSAhPSAx KQorICAgIHJldHVybiAxOworICBpZiAodHdvICE9IDIpCisgICAgcmV0dXJuIDI7CisgIGlm ICh0aHJlZSAhPSAzKQorICAgIHJldHVybiAzOworICByZXR1cm4gMDsKK30KLS0gCjIuMzAu MgoK --------------vB9N4HBrlsRUgSttM80FGDl3--