From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt1-x833.google.com (mail-qt1-x833.google.com [IPv6:2607:f8b0:4864:20::833]) by sourceware.org (Postfix) with ESMTPS id 0F0053857BA3 for ; Fri, 10 Jun 2022 19:34:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0F0053857BA3 Received: by mail-qt1-x833.google.com with SMTP id x16so46433qtw.12 for ; Fri, 10 Jun 2022 12:34:08 -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=1y9joHk5iM0QGVAMCKrkpG/Qkkv8TyGU3YnfRm4HQLY=; b=yUHz5Ayz1Sdig62EG5KIj/Z2+4pFC+EHjDu1ozvm6qSV0DIKLrjSq8HP+IAjlFMGML DPLiVbZmZz0uauS1Wpeu2Mrw/1IaQRpTT+UOt4+qYtiouvw8bdrO6G0r/2mPVUuNnBKy U/Sd5A0FpFsJws+4dZj8IUOoePTHx+RpjabAXxtoGKCxjbu3YRUk81YEXiTIQcbWN76g A+eujuDHhFT5CnSF8W/LeJEPfVDwl4gYsfXwVzBojgCOmzIvNtXiYW389YQBVVOeDiVU LpwcjK/HkFv8x9ZqtOAs5MH8odH2pQoWk33IADt5GnxxEVQPhrhyb6yfEBUf3ZbPWaE9 zPpQ== X-Gm-Message-State: AOAM5311JkQpa8lIsNqgAJb1Y5wybmtsbCQQipvbiIONYlV45L2z+05y fsnWwvWNRVdgsH6EnM5tWNdNq+xYq00= X-Google-Smtp-Source: ABdhPJxbbEnsxddsNjDO3O7Uw8e0e56gKwsUUcFf3H9sgpvT0kie1bu9SS7fL3IizdOPKTZxx2B/8g== X-Received: by 2002:ac8:5fc1:0:b0:304:eaf1:52a with SMTP id k1-20020ac85fc1000000b00304eaf1052amr24053102qta.656.1654889647002; Fri, 10 Jun 2022 12:34:07 -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 o6-20020ac872c6000000b00304ea0a86cesm12320786qtp.81.2022.06.10.12.34.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 10 Jun 2022 12:34:06 -0700 (PDT) Sender: Nathan Sidwell Content-Type: multipart/mixed; boundary="------------wBhKQA0gXkGwqI0LeaKirelC" Message-ID: Date: Fri, 10 Jun 2022 15:34:05 -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++: Add a late-writing step for modules 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 19:34:10 -0000 This is a multi-part message in MIME format. --------------wBhKQA0gXkGwqI0LeaKirelC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit To add a module initializer optimization, we need to defer finishing writing out the module file until the end of determining the dynamic initializers. This is achieved by passing some saved-state from the main module writing to a new function that completes it. This patch merely adds the skeleton of that state and move things around, allowing the finalization of the ELF file to be postponed. None of the contents writing is moved, or the init optimization added. nathan -- Nathan Sidwell --------------wBhKQA0gXkGwqI0LeaKirelC Content-Type: text/x-patch; charset=UTF-8; name="0001-c-Add-a-late-writing-step-for-modules.patch" Content-Disposition: attachment; filename="0001-c-Add-a-late-writing-step-for-modules.patch" Content-Transfer-Encoding: base64 RnJvbSBlNmQzNjliYmRiNGViNWYwM2VlYzIzM2VmOTkwNTAxM2E3MzVmZDcxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gU2lkd2VsbCA8bmF0aGFuQGFjbS5vcmc+ CkRhdGU6IFRodSwgOSBKdW4gMjAyMiAwODoxNDozMSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd IGMrKzogQWRkIGEgbGF0ZS13cml0aW5nIHN0ZXAgZm9yIG1vZHVsZXMKClRvIGFkZCBhIG1v ZHVsZSBpbml0aWFsaXplciBvcHRpbWl6YXRpb24sIHdlIG5lZWQgdG8gZGVmZXIgZmluaXNo aW5nIHdyaXRpbmcKb3V0IHRoZSBtb2R1bGUgZmlsZSB1bnRpbCB0aGUgZW5kIG9mIGRldGVy bWluaW5nIHRoZSBkeW5hbWljIGluaXRpYWxpemVycy4KVGhpcyBpcyBhY2hpZXZlZCBieSBw YXNzaW5nIHNvbWUgc2F2ZWQtc3RhdGUgZnJvbSB0aGUgbWFpbiBtb2R1bGUgd3JpdGluZwp0 byBhIG5ldyBmdW5jdGlvbiB0aGF0IGNvbXBsZXRlcyBpdC4KClRoaXMgcGF0Y2ggbWVyZWx5 IGFkZHMgdGhlIHNrZWxldG9uIG9mIHRoYXQgc3RhdGUgYW5kIG1vdmUgdGhpbmdzIGFyb3Vu ZCwKYWxsb3dpbmcgdGhlIGZpbmFsaXphdGlvbiBvZiB0aGUgRUxGIGZpbGUgdG8gYmUgcG9z dHBvbmVkLiAgTm9uZSBvZiB0aGUKY29udGVudHMgd3JpdGluZyBpcyBtb3ZlZCwgb3IgdGhl IGluaXQgb3B0aW1pemF0aW9uIGFkZGVkLgoKCWdjYy9jcC8KCSogY3AtdHJlZS5oIChmaW5p X21vZHVsZXMpOiBBZGQgc29tZSBwYXJhbWV0ZXJzLgoJKGZpbmlzaF9tb2R1bGVfcHJvY2Vz c2luZyk6IFJldHVybiBhbiBvcGFxdWUgcG9pbnRlci4KCSogZGVjbDIuY2MgKGNfcGFyc2Vf ZmluYWxfY2xlYW51cHMpOiBQcm9wYWdhdGUgYSBjb29raWUgZnJvbQoJZmluaXNoX21vZHVs ZV9wcm9jZXNzaW5nIHRvIGZpbmlfbW9kdWxlcy4KCSogbW9kdWxlLmNjIChzdHJ1Y3QgbW9k dWxlX3Byb2Nlc3NpbmdfY29va2llKTogTmV3LgoJKGZpbmlzaF9tb2R1bGVfcHJvY2Vzc2lu Zyk6IFJldHVybiBhIGhlYXAtYWxsb2NhdGVkIGNvb2tpZS4KCShsYXRlX2ZpbmlzaF9tb2R1 bGUpOiBOZXcuICBGaW5pc2ggb3V0IHRoZSBtb2R1bGUgd3JpdGluZy4KCShmaW5pX21vZHVs ZXMpOiBBZGp1c3QuCi0tLQogZ2NjL2NwL2NwLXRyZWUuaCB8ICAgNCArLQogZ2NjL2NwL2Rl Y2wyLmNjICB8ICAgNCArLQogZ2NjL2NwL21vZHVsZS5jYyB8IDE0NSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA5 OCBpbnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvY3Av Y3AtdHJlZS5oIGIvZ2NjL2NwL2NwLXRyZWUuaAppbmRleCBmMTI5NGRhYzdkNS4uNjBkN2Iy MDE1OTUgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jcC10cmVlLmgKKysrIGIvZ2NjL2NwL2NwLXRy ZWUuaApAQCAtNzIwOSw5ICs3MjA5LDkgQEAgZXh0ZXJuIHZvaWQgaW1wb3J0X21vZHVsZSAo bW9kdWxlX3N0YXRlICosIGxvY2F0aW9uX3QsIGJvb2wgZXhwb3J0X3AsCiBleHRlcm4gdm9p ZCBkZWNsYXJlX21vZHVsZSAobW9kdWxlX3N0YXRlICosIGxvY2F0aW9uX3QsIGJvb2wgZXhw b3J0X3AsCiAJCQkgICAgdHJlZSBhdHRyLCBjcHBfcmVhZGVyICopOwogZXh0ZXJuIHZvaWQg aW5pdF9tb2R1bGVzIChjcHBfcmVhZGVyICopOwotZXh0ZXJuIHZvaWQgZmluaV9tb2R1bGVz ICgpOworZXh0ZXJuIHZvaWQgZmluaV9tb2R1bGVzIChjcHBfcmVhZGVyICosIHZvaWQgKmNv b2tpZSk7CiBleHRlcm4gdm9pZCBtYXliZV9jaGVja19hbGxfbWFjcm9zIChjcHBfcmVhZGVy ICopOwotZXh0ZXJuIHZvaWQgZmluaXNoX21vZHVsZV9wcm9jZXNzaW5nIChjcHBfcmVhZGVy ICopOworZXh0ZXJuIHZvaWQgKmZpbmlzaF9tb2R1bGVfcHJvY2Vzc2luZyAoY3BwX3JlYWRl ciAqKTsKIGV4dGVybiBjaGFyIGNvbnN0ICptb2R1bGVfbmFtZSAodW5zaWduZWQsIGJvb2wg aGVhZGVyX29rKTsKIGV4dGVybiBiaXRtYXAgZ2V0X2ltcG9ydF9iaXRtYXAgKCk7CiBleHRl cm4gYml0bWFwIHZpc2libGVfaW5zdGFudGlhdGlvbl9wYXRoIChiaXRtYXAgKik7CmRpZmYg LS1naXQgYS9nY2MvY3AvZGVjbDIuY2MgYi9nY2MvY3AvZGVjbDIuY2MKaW5kZXggZmYxYzM2 NzQ1Y2YuLmNjMGI0MTMyNGIzIDEwMDY0NAotLS0gYS9nY2MvY3AvZGVjbDIuY2MKKysrIGIv Z2NjL2NwL2RlY2wyLmNjCkBAIC01MTU0LDcgKzUxNTQsNyBAQCBjX3BhcnNlX2ZpbmFsX2Ns ZWFudXBzICh2b2lkKQogCXJlY29uc2lkZXIgPSB0cnVlOwogICAgIH0KIAotICBmaW5pc2hf bW9kdWxlX3Byb2Nlc3NpbmcgKHBhcnNlX2luKTsKKyAgdm9pZCAqbW9kdWxlX2Nvb2tpZSA9 IGZpbmlzaF9tb2R1bGVfcHJvY2Vzc2luZyAocGFyc2VfaW4pOwogCiAgIGxvd2VyX3Zhcl9p bml0ICgpOwogCkBAIC01MjM4LDcgKzUyMzgsNyBAQCBjX3BhcnNlX2ZpbmFsX2NsZWFudXBz ICh2b2lkKQogICAgICAgfQogICBwb3BfbGFuZ19jb250ZXh0ICgpOwogCi0gIGZpbmlfbW9k dWxlcyAoKTsKKyAgZmluaV9tb2R1bGVzIChwYXJzZV9pbiwgbW9kdWxlX2Nvb2tpZSk7CiAK ICAgLyogR2VuZXJhdGUgYW55IG1pc3NpbmcgYWxpYXNlcy4gICovCiAgIG1heWJlX2FwcGx5 X3BlbmRpbmdfcHJhZ21hX3dlYWtzICgpOwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL21vZHVsZS5j YyBiL2djYy9jcC9tb2R1bGUuY2MKaW5kZXggMmIxODc3ZWE4MmUuLjUxZDc3NGFlNjA4IDEw MDY0NAotLS0gYS9nY2MvY3AvbW9kdWxlLmNjCisrKyBiL2djYy9jcC9tb2R1bGUuY2MKQEAg LTE5ODU0LDExICsxOTg1NCwzMiBAQCBtYXliZV9jaGVja19hbGxfbWFjcm9zIChjcHBfcmVh ZGVyICpyZWFkZXIpCiAgIGR1bXAucG9wIChuKTsKIH0KIAorLy8gU3RhdGUgcHJvcGFnYXRl ZCBmcm9tIGZpbmlzaF9tb2R1bGVfcHJvY2Vzc2luZyB0byBmaW5pX21vZHVsZXMKK3N0cnVj dCBtb2R1bGVfcHJvY2Vzc2luZ19jb29raWUKK3sKKyAgZWxmX291dCBvdXQ7CisgIGNoYXIg KmNtaV9uYW1lOworICBjaGFyICp0bXBfbmFtZTsKKyAgYm9vbCBiZWdhbjsKKworICBtb2R1 bGVfcHJvY2Vzc2luZ19jb29raWUgKGNoYXIgKmNtaSwgY2hhciAqdG1wLCBpbnQgZmQsIGlu dCBlKQorICAgIDogb3V0IChmZCwgZSksIGNtaV9uYW1lIChjbWkpLCB0bXBfbmFtZSAodG1w KSwgYmVnYW4gKGZhbHNlKQorICB7CisgIH0KKyAgfm1vZHVsZV9wcm9jZXNzaW5nX2Nvb2tp ZSAoKQorICB7CisgICAgWERFTEVURVZFQyAodG1wX25hbWUpOworICAgIFhERUxFVEVWRUMg KGNtaV9uYW1lKTsKKyAgfQorfTsKKwogLyogV3JpdGUgdGhlIENNSSwgaWYgd2UncmUgYSBt b2R1bGUgaW50ZXJmYWNlLiAgKi8KIAotdm9pZAordm9pZCAqCiBmaW5pc2hfbW9kdWxlX3By b2Nlc3NpbmcgKGNwcF9yZWFkZXIgKnJlYWRlcikKIHsKKyAgbW9kdWxlX3Byb2Nlc3Npbmdf Y29va2llICpjb29raWUgPSBudWxscHRyOworCiAgIGlmIChoZWFkZXJfbW9kdWxlX3AgKCkp CiAgICAgbW9kdWxlX2tpbmQgJj0gfk1LX0VYUE9SVElORzsKIApAQCAtMTk4NzAsNyArMTk4 OTEsNyBAQCBmaW5pc2hfbW9kdWxlX3Byb2Nlc3NpbmcgKGNwcF9yZWFkZXIgKnJlYWRlcikK ICAgZWxzZSBpZiAoIWZsYWdfc3ludGF4X29ubHkpCiAgICAgewogICAgICAgaW50IGZkID0g LTE7Ci0gICAgICBpbnQgZSA9IEVOT0VOVDsKKyAgICAgIGludCBlID0gLTE7CiAKICAgICAg IHRpbWV2YXJfc3RhcnQgKFRWX01PRFVMRV9FWFBPUlQpOwogCkBAIC0xOTg3OSw3ICsxOTkw MCw3IEBAIGZpbmlzaF9tb2R1bGVfcHJvY2Vzc2luZyAoY3BwX3JlYWRlciAqcmVhZGVyKQog ICAgICAgbGluZW1hcF9hZGQgKGxpbmVfdGFibGUsIExDX0VOVEVSLCBmYWxzZSwgIiIsIDAp OwogCiAgICAgICAvKiBXZSB3cml0ZSB0byBhIHRtcG5hbWUsIGFuZCB0aGVuIGF0b21pY2Fs bHkgcmVuYW1lLiAgKi8KLSAgICAgIGNvbnN0IGNoYXIgKnBhdGggPSBOVUxMOworICAgICAg Y2hhciAqY21pX25hbWUgPSBOVUxMOwogICAgICAgY2hhciAqdG1wX25hbWUgPSBOVUxMOwog ICAgICAgbW9kdWxlX3N0YXRlICpzdGF0ZSA9ICgqbW9kdWxlcylbMF07CiAKQEAgLTE5ODg4 LDkgKzE5OTA5LDkgQEAgZmluaXNoX21vZHVsZV9wcm9jZXNzaW5nIChjcHBfcmVhZGVyICpy ZWFkZXIpCiAgICAgICBpZiAoc3RhdGUtPmZpbGVuYW1lKQogCXsKIAkgIHNpemVfdCBsZW4g PSAwOwotCSAgcGF0aCA9IG1heWJlX2FkZF9jbWlfcHJlZml4IChzdGF0ZS0+ZmlsZW5hbWUs ICZsZW4pOworCSAgY21pX25hbWUgPSB4c3RyZHVwIChtYXliZV9hZGRfY21pX3ByZWZpeCAo c3RhdGUtPmZpbGVuYW1lLCAmbGVuKSk7CiAJICB0bXBfbmFtZSA9IFhORVdWRUMgKGNoYXIs IGxlbiArIDMpOwotCSAgbWVtY3B5ICh0bXBfbmFtZSwgcGF0aCwgbGVuKTsKKwkgIG1lbWNw eSAodG1wX25hbWUsIGNtaV9uYW1lLCBsZW4pOwogCSAgc3RyY3B5ICgmdG1wX25hbWVbbGVu XSwgIn4iKTsKIAogCSAgaWYgKCFlcnJvcmNvdW50KQpAQCAtMTk5MDUsNTcgKzE5OTI2LDIz IEBAIGZpbmlzaF9tb2R1bGVfcHJvY2Vzc2luZyAoY3BwX3JlYWRlciAqcmVhZGVyKQogCQlj cmVhdGVfZGlycyAodG1wX25hbWUpOwogCSAgICAgIH0KIAkgIGlmIChub3RlX21vZHVsZV9j bWlfeWVzIHx8IHN0YXRlLT5pbmZvcm1fY21pX3ApCi0JICAgIGluZm9ybSAoc3RhdGUtPmxv YywgIndyaXRpbmcgQ01JICVxcyIsIHBhdGgpOwotCSAgZHVtcCAoKSAmJiBkdW1wICgiQ01J IGlzICVzIiwgcGF0aCk7CisJICAgIGluZm9ybSAoc3RhdGUtPmxvYywgIndyaXRpbmcgQ01J ICVxcyIsIGNtaV9uYW1lKTsKKwkgIGR1bXAgKCkgJiYgZHVtcCAoIkNNSSBpcyAlcyIsIGNt aV9uYW1lKTsKIAl9CiAKKyAgICAgIGNvb2tpZSA9IG5ldyBtb2R1bGVfcHJvY2Vzc2luZ19j b29raWUgKGNtaV9uYW1lLCB0bXBfbmFtZSwgZmQsIGUpOworCiAgICAgICBpZiAoZXJyb3Jj b3VudCkKIAl3YXJuaW5nX2F0IChzdGF0ZS0+bG9jLCAwLCAibm90IHdyaXRpbmcgbW9kdWxl ICVxcyBkdWUgdG8gZXJyb3JzIiwKIAkJICAgIHN0YXRlLT5nZXRfZmxhdG5hbWUgKCkpOwot ICAgICAgZWxzZQorICAgICAgZWxzZSBpZiAoY29va2llLT5vdXQuYmVnaW4gKCkpCiAJewot CSAgZWxmX291dCB0byAoZmQsIGUpOwotCSAgaWYgKHRvLmJlZ2luICgpKQotCSAgICB7Ci0J ICAgICAgYXV0byBsb2MgPSBpbnB1dF9sb2NhdGlvbjsKLQkgICAgICAvKiBTbyBjcmFzaGVz IGZpbmdlci1wb2ludCB0aGUgbW9kdWxlIGRlY2wuICAqLwotCSAgICAgIGlucHV0X2xvY2F0 aW9uID0gc3RhdGUtPmxvYzsKLQkgICAgICBzdGF0ZS0+d3JpdGUgKCZ0bywgcmVhZGVyKTsK LQkgICAgICBpbnB1dF9sb2NhdGlvbiA9IGxvYzsKLQkgICAgfQotCSAgaWYgKHRvLmVuZCAo KSkKLQkgICAgewotCSAgICAgIC8qIFNvbWUgT1MncyBkbyBub3QgcmVwbGFjZSBORVdOQU1F IGlmIGl0IGFscmVhZHkKLQkJIGV4aXN0cy4gIFRoaXMnbGwgaGF2ZSBhIHJhY2UgY29uZGl0 aW9uIGluIGVycm9uZW91cwotCQkgY29uY3VycmVudCBidWlsZHMuICAqLwotCSAgICAgIHVu bGluayAocGF0aCk7Ci0JICAgICAgaWYgKHJlbmFtZSAodG1wX25hbWUsIHBhdGgpKQotCQl7 Ci0JCSAgZHVtcCAoKSAmJiBkdW1wICgiUmVuYW1lICgnJXMnLCclcycpIGVycm5vPSV1Iiwg ZXJybm8pOwotCQkgIHRvLnNldF9lcnJvciAoZXJybm8pOwotCQl9Ci0JICAgIH0KLQotCSAg aWYgKHRvLmdldF9lcnJvciAoKSkKLQkgICAgewotCSAgICAgIGVycm9yX2F0IChzdGF0ZS0+ bG9jLCAiZmFpbGVkIHRvIHdyaXRlIGNvbXBpbGVkIG1vZHVsZTogJXMiLAotCQkJdG8uZ2V0 X2Vycm9yIChzdGF0ZS0+ZmlsZW5hbWUpKTsKLQkgICAgICBzdGF0ZS0+bm90ZV9jbWlfbmFt ZSAoKTsKLQkgICAgfQotCX0KLQotICAgICAgaWYgKCFlcnJvcmNvdW50KQotCXsKLQkgIGF1 dG8gKm1hcHBlciA9IGdldF9tYXBwZXIgKGNwcF9tYWluX2xvYyAocmVhZGVyKSk7Ci0KLQkg IG1hcHBlci0+TW9kdWxlQ29tcGlsZWQgKHN0YXRlLT5nZXRfZmxhdG5hbWUgKCkpOwotCX0K LSAgICAgIGVsc2UgaWYgKHBhdGgpCi0JewotCSAgLyogV2UgZmFpbGVkLCBhdHRlbXB0IHRv IGVyYXNlIGFsbCBldmlkZW5jZSB3ZSBldmVuIHRyaWVkLiAgKi8KLQkgIHVubGluayAodG1w X25hbWUpOwotCSAgdW5saW5rIChwYXRoKTsKLQkgIFhERUxFVEVWRUMgKHRtcF9uYW1lKTsK KwkgIGNvb2tpZS0+YmVnYW4gPSB0cnVlOworCSAgYXV0byBsb2MgPSBpbnB1dF9sb2NhdGlv bjsKKwkgIC8qIFNvIGNyYXNoZXMgZmluZ2VyLXBvaW50IHRoZSBtb2R1bGUgZGVjbC4gICov CisJICBpbnB1dF9sb2NhdGlvbiA9IHN0YXRlLT5sb2M7CisJICBzdGF0ZS0+d3JpdGUgKCZj b29raWUtPm91dCwgcmVhZGVyKTsKKwkgIGlucHV0X2xvY2F0aW9uID0gbG9jOwogCX0KIAog ICAgICAgZHVtcC5wb3AgKG4pOwpAQCAtMTk5NzQsMTEgKzE5OTYxLDY3IEBAIGZpbmlzaF9t b2R1bGVfcHJvY2Vzc2luZyAoY3BwX3JlYWRlciAqcmVhZGVyKQogCQkgICAgICAgKGF2YWls YWJsZV9jbHVzdGVycyArICFhdmFpbGFibGVfY2x1c3RlcnMpKTsKICAgICAgIGR1bXAucG9w IChuKTsKICAgICB9CisKKyAgcmV0dXJuIGNvb2tpZTsKK30KKworLy8gRG8gdGhlIGZpbmFs IGVtaXNzaW9uIG9mIGEgbW9kdWxlLiAgQXQgdGhpcyBwb2ludCB3ZSBrbm93IHdoZXRoZXIK Ky8vIHRoZSBtb2R1bGUgc3RhdGljIGluaXRpYWxpemVyIGlzIGEgTk9QIG9yIG5vdC4KKwor c3RhdGljIHZvaWQKK2xhdGVfZmluaXNoX21vZHVsZSAoY3BwX3JlYWRlciAqcmVhZGVyLCBt b2R1bGVfcHJvY2Vzc2luZ19jb29raWUgKmNvb2tpZSkKK3sKKyAgdGltZXZhcl9zdGFydCAo VFZfTU9EVUxFX0VYUE9SVCk7CisKKyAgbW9kdWxlX3N0YXRlICpzdGF0ZSA9ICgqbW9kdWxl cylbMF07CisgIHVuc2lnbmVkIG4gPSBkdW1wLnB1c2ggKHN0YXRlKTsKKyAgc3RhdGUtPmFu bm91bmNlICgiZmluaXNoaW5nIik7CisKKyAgaWYgKGNvb2tpZS0+b3V0LmVuZCAoKSAmJiBj b29raWUtPmNtaV9uYW1lKQorICAgIHsKKyAgICAgIC8qIFNvbWUgT1MncyBkbyBub3QgcmVw bGFjZSBORVdOQU1FIGlmIGl0IGFscmVhZHkgZXhpc3RzLgorCSBUaGlzJ2xsIGhhdmUgYSBy YWNlIGNvbmRpdGlvbiBpbiBlcnJvbmVvdXMgY29uY3VycmVudAorCSBidWlsZHMuICAqLwor ICAgICAgdW5saW5rIChjb29raWUtPmNtaV9uYW1lKTsKKyAgICAgIGlmIChyZW5hbWUgKGNv b2tpZS0+dG1wX25hbWUsIGNvb2tpZS0+Y21pX25hbWUpKQorCXsKKwkgIGR1bXAgKCkgJiYg ZHVtcCAoIlJlbmFtZSAoJyVzJywnJXMnKSBlcnJubz0ldSIsCisJCQkgICBjb29raWUtPnRt cF9uYW1lLCBjb29raWUtPmNtaV9uYW1lLCBlcnJubyk7CisJICBjb29raWUtPm91dC5zZXRf ZXJyb3IgKGVycm5vKTsKKwl9CisgICAgfQorCisgIGlmIChjb29raWUtPm91dC5nZXRfZXJy b3IgKCkgJiYgY29va2llLT5iZWdhbikKKyAgICB7CisgICAgICBlcnJvcl9hdCAoc3RhdGUt PmxvYywgImZhaWxlZCB0byB3cml0ZSBjb21waWxlZCBtb2R1bGU6ICVzIiwKKwkJY29va2ll LT5vdXQuZ2V0X2Vycm9yIChzdGF0ZS0+ZmlsZW5hbWUpKTsKKyAgICAgIHN0YXRlLT5ub3Rl X2NtaV9uYW1lICgpOworICAgIH0KKworICBpZiAoIWVycm9yY291bnQpCisgICAgeworICAg ICAgYXV0byAqbWFwcGVyID0gZ2V0X21hcHBlciAoY3BwX21haW5fbG9jIChyZWFkZXIpKTsK KyAgICAgIG1hcHBlci0+TW9kdWxlQ29tcGlsZWQgKHN0YXRlLT5nZXRfZmxhdG5hbWUgKCkp OworICAgIH0KKyAgZWxzZSBpZiAoY29va2llLT5jbWlfbmFtZSkKKyAgICB7CisgICAgICAv KiBXZSBmYWlsZWQsIGF0dGVtcHQgdG8gZXJhc2UgYWxsIGV2aWRlbmNlIHdlIGV2ZW4gdHJp ZWQuICAqLworICAgICAgdW5saW5rIChjb29raWUtPnRtcF9uYW1lKTsKKyAgICAgIHVubGlu ayAoY29va2llLT5jbWlfbmFtZSk7CisgICAgfQorCisgIGRlbGV0ZSBjb29raWU7CisgIGR1 bXAucG9wIChuKTsKKyAgdGltZXZhcl9zdG9wIChUVl9NT0RVTEVfRVhQT1JUKTsKIH0KIAog dm9pZAotZmluaV9tb2R1bGVzICgpCitmaW5pX21vZHVsZXMgKGNwcF9yZWFkZXIgKnJlYWRl ciwgdm9pZCAqY29va2llKQogeworICBpZiAoY29va2llKQorICAgIGxhdGVfZmluaXNoX21v ZHVsZSAocmVhZGVyLAorCQkJc3RhdGljX2Nhc3Q8bW9kdWxlX3Byb2Nlc3NpbmdfY29va2ll ICo+IChjb29raWUpKTsKKwogICAvKiBXZSdyZSBkb25lIHdpdGggdGhlIG1hY3JvIHRhYmxl cyBub3cuICAqLwogICB2ZWNfZnJlZSAobWFjcm9fZXhwb3J0cyk7CiAgIHZlY19mcmVlICht YWNyb19pbXBvcnRzKTsKLS0gCjIuMzAuMgoK --------------wBhKQA0gXkGwqI0LeaKirelC--