From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 542F3385737B for ; Tue, 1 Nov 2022 13:20:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 542F3385737B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667308804; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=+Q9ZuumXDv4QS5WRcxE5J1/lGG9Z4gkKMWM+UInOkvc=; b=I0yz0QtbifO0pwvAq536TGi/8PP3xghHJpKBUxoSeC0RQnf9wmLC5tNsoTL82eSV9Z6KlV sZeCwcJ1BKCVzGraSD53kNx3cJmAsD6tzlNZaMhclSLKGuMuQ1KlcgTc7zYs8/G74kkY/N c1gUSziWqObJzwajlYp2Ow68cUMHmO0= Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-633-yn_V3gTIOq62IxQBrB_qmQ-1; Tue, 01 Nov 2022 09:20:03 -0400 X-MC-Unique: yn_V3gTIOq62IxQBrB_qmQ-1 Received: by mail-qv1-f71.google.com with SMTP id ng1-20020a0562143bc100b004bb706b3a27so7721064qvb.20 for ; Tue, 01 Nov 2022 06:20:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=eFfDQNS4eO+4zZk9xm90q0+FSP8cBT7XY8g5sH2VAXM=; b=nhxP2sBCZDvDIyDbgeGhJawoKO3XlwjA1L1AG2Tqwm0Ipibgk38g5ob9AfC7qAK/6T Dk4swY9rZ1JawLotclyiB4yc5Lp6qoYa7EN7+MBvGed3N+qtjW/08S06Q2fCNCGngSLV YQncyiYN4gGnFcPDehI66lVqVgCUrRdxYtX0D04KzxMtWnpDGh0SGEcnoqnZusqumew3 86gjDzebVu664njUFdHlP+wCxqAkyFMbFN8wFCyvSaZjL1Csm092LwTu3uwRet3kgPcJ zu9HhykQ3yyRxMWLYQr8Ndf8oVdRWeHEARg3kyFXT87pZ1bLg7RmSP1D33RMkNd6syQp rgag== X-Gm-Message-State: ACrzQf0Bos7810VXEHVJcIrK3pUAw/FXc7039Vd6rbQM0QEDZDeY3HVe oKGt/dFGDpafOMFdHkS/+x0VnNDqyKrp6IFBFwRfmKK5QK78gjyMr96tLMR1hWPyNAT7/U+L0MT so+Y8eMyppCn4HK/EQ9aaS3UDrU2vjFtACY66JbEkpPX1jM5cEul5Z6C10+3dR2TPZzU9JA== X-Received: by 2002:a05:620a:6083:b0:6fa:326e:9d18 with SMTP id dx3-20020a05620a608300b006fa326e9d18mr5959682qkb.5.1667308802223; Tue, 01 Nov 2022 06:20:02 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6bbyKZyoJJBbCh+5IDSRDSOhLgstz7wlYwGmXGa3lmByxfPc4gu4GyKeEqOH7ZAKQzkUSVlA== X-Received: by 2002:a05:620a:6083:b0:6fa:326e:9d18 with SMTP id dx3-20020a05620a608300b006fa326e9d18mr5959663qkb.5.1667308801859; Tue, 01 Nov 2022 06:20:01 -0700 (PDT) Received: from ?IPV6:2607:fea8:a263:f600::72c3? ([2607:fea8:a263:f600::72c3]) by smtp.gmail.com with ESMTPSA id q25-20020a37f719000000b006fa16fe93bbsm6356797qkj.15.2022.11.01.06.20.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 01 Nov 2022 06:20:01 -0700 (PDT) Message-ID: <3e171105-8cae-e91d-ecc5-87c534b18cc1@redhat.com> Date: Tue, 1 Nov 2022 09:20:00 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 To: gcc-patches Cc: "hernandez, aldy" From: Andrew MacLeod Subject: [COMMITTED] Remove builtin_unreachable in ranger VRP. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------WFsmLLhu0EkHevgy7MecLGSR" Content-Language: en-US X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP 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. --------------WFsmLLhu0EkHevgy7MecLGSR Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Removal of __builtin_unreachable calls were being handled in an inconsistent way, and Im not convinced always correctly.   This removes them in the ranger VRP pass, and sets the global range appropriately. This new approach should be consistent. After VRP runs, it uses ranger to query all the uses of every export affected by an edge leading to an unreachable builtin. It calculates their range at those use locations, and then verifies that the range at the end of the function also reflects those restrictions. If that all holds true, then the unreachable call is removed and the global range updated.  If that does not hold true, then the global range is not set as the condition guarding the unreachable is contextual. if this is also the final VRP pass, the unreachable call is removed regardless. Otherwise it is left so other pases can still pick up the contextual ranges This will only happen when ranger is the default VRP1 pass (not enabled yet), although this code will trigger to ensure all unreachables are removed in VRP2. Bootstrapped on x86_64-pc-linux-gnu with no regressions.  Pushed. Andrew --------------WFsmLLhu0EkHevgy7MecLGSR Content-Type: text/x-patch; charset=UTF-8; name="0003-Remove-builtin_unreachable-in-VRP.patch" Content-Disposition: attachment; filename="0003-Remove-builtin_unreachable-in-VRP.patch" Content-Transfer-Encoding: base64 RnJvbSA3YjFjZGNhNmQ2ZDU5NGE4YTlkODgwNjIyNTIyMTJlMTQ1ZjJmNGViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogTW9uLCAzMSBPY3QgMjAyMiAxNToxODowMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMy8z XSBSZW1vdmUgYnVpbHRpbl91bnJlYWNoYWJsZSBpbiBWUlAKClJlbW92YWwgb2YgX19idWlsdGlu X3VucmVhY2hhYmxlIGNhbGxzIHdlcmUgaGFuZGxlZCBpbiBhbiBpbmNvbnNpc3RlbnQKd2F5LiAg VGhpcyByZW1vdmVzIHRoZW4gaW4gdGhlIFZSUCBwYXNzLCBhbmQgc2V0cyB0aGUgZ2xvYmFsIHJh bmdlCmFwcHJvcHJpYXRlbHkuCgoJKiB0cmVlLXZycC5jYyAoY2xhc3MgcmVtb3ZlX3VucmVhY2hh YmxlKTogTmV3LgoJKHJlbW92ZV91bnJlYWNoYWJsZTo6bWF5YmVfcmVnaXN0ZXJfYmxvY2spOiBO ZXcuCgkocmVtb3ZlX3VucmVhY2hhYmxlOjpyZW1vdmVfYW5kX3VwZGF0ZV9nbG9iYWxzKTogTmV3 LgoJKHJ2cnBfZm9sZGVyOjpydnJwX2ZvbGRlcik6IEluaXRpYWxpemUgbV91bnJlYWNoYWJsZS4K CShydnJwX2ZvbGRlcjo6cG9zdF9mb2xkX2JiKTogTWF5YmUgcmVnaXN0ZXIgdW5yZWFjaGFibGUg YmxvY2suCgkocnZycF9mb2xkZXI6Om1fdW5yZWFjaGFibGUpOiBOZXcgbWVtYmVyLgoJKGV4ZWN1 dGVfcmFuZ2VyX3ZycCk6IEFkZCBmaW5hbF9wYXNzIGZsYWcsIHJlbW92ZSB1bnJlYWNoYWJsZXMu Ci0tLQogZ2NjL3RyZWUtdnJwLmNjIHwgMTkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDE4NyBpbnNlcnRpb25zKCspLCAz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy90cmVlLXZycC5jYyBiL2djYy90cmVlLXZy cC5jYwppbmRleCBlNWEyOTJiYjg3NS4uZjBlNGQzN2JlZjAgMTAwNjQ0Ci0tLSBhL2djYy90cmVl LXZycC5jYworKysgYi9nY2MvdHJlZS12cnAuY2MKQEAgLTUxLDYgKzUxLDE4MyBAQCBhbG9uZyB3 aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogI2luY2x1ZGUgInZh bHVlLXBvaW50ZXItZXF1aXYuaCIKICNpbmNsdWRlICJnaW1wbGUtZm9sZC5oIgogI2luY2x1ZGUg InRyZWUtZGZhLmgiCisjaW5jbHVkZSAidHJlZS1zc2EtZGNlLmgiCisKKy8vIFRoaXMgY2xhc3Mg aXMgdXRpbGl6ZWQgYnkgVlJQIGFuZCByYW5nZXIgdG8gcmVtb3ZlIF9fYnVpbHRpbl91bnJlYWNo YWJsZQorLy8gY2FsbHMsIGFuZCByZWZsZWN0IGFueSByZXN1bHRpbmcgZ2xvYmFsIHJhbmdlcy4K Ky8vCisvLyBtYXliZV9yZWdpc3Rlcl9ibG9jayAoKSBpcyBjYWxsZWQgb24gYmFzaWMgYmxvY2tz LCBhbmQgaWYgdGhhdCBibG9jaworLy8gbWF0Y2hlcyB0aGUgcGF0dGVybiBvZiBvbmUgYnJhbmNo IGJlaW5nIGEgYnVpbHRpbl91bnJlYWNoYWJsZSwgcmVnaXN0ZXIKKy8vIHRoZSByZXN1bHRpbmcg ZXhlY3V0YWJsZSBlZGdlIGluIGEgbGlzdC4KKy8vCisvLyBBZnRlciBhbGwgYmxvY2tzIGhhdmUg YmVlbiBwcm9jZXNzZWQsIHJlbW92ZV9hbmRfdXBkYXRlX2dsb2JhbHMoKSB3aWxsCisvLyAtIGNo ZWNrIGFsbCBleHBvcnRzIGZyb20gcmVnaXN0ZXJlZCBibG9ja3MKKy8vIC0gZW5zdXJlIHRoZSBj YWNoZSBlbnRyeSBvZiBlYWNoIGV4cG9ydCBpcyBzZXQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgcmFu Z2UKKy8vIC0gcmV3cml0ZSB0aGUgY29uZGl0aW9ucyB0byB0YWtlIHRoZSBleGVjdXRhYmxlIGVk Z2UKKy8vIC0gcGVyZm9ybSBEQ0Ugb24gYW55IGZlZWRpbmcgaW5zdHJ1Y3Rpb25zIHRvIHRob3Nl IHJld3JpdHRlbiBjb25kaXRpb25zCisvLworLy8gVGhlbiBlYWNoIG9mIHRoZSBpbW1lZGlhdGUg dXNlIGNoYWluIG9mIGVhY2ggZXhwb3J0IGlzIHdhbGtlZCwgYW5kIGEgbmV3CisvLyBnbG9iYWwg cmFuZ2UgY3JlYXRlZCBieSB1bmlvbmluZyB0aGUgcmFuZ2VzIGF0IGFsbCByZW1haW5pbmcgdXNl IGxvY2F0aW9ucy4KKworY2xhc3MgcmVtb3ZlX3VucmVhY2hhYmxlIHsKK3B1YmxpYzoKKyAgcmVt b3ZlX3VucmVhY2hhYmxlIChnaW1wbGVfcmFuZ2VyICZyKSA6IG1fcmFuZ2VyIChyKSB7IG1fbGlz dC5jcmVhdGUgKDMwKTsgfQorICB+cmVtb3ZlX3VucmVhY2hhYmxlICgpIHsgbV9saXN0LnJlbGVh c2UgKCk7IH0KKyAgdm9pZCBtYXliZV9yZWdpc3Rlcl9ibG9jayAoYmFzaWNfYmxvY2sgYmIpOwor ICBib29sIHJlbW92ZV9hbmRfdXBkYXRlX2dsb2JhbHMgKGJvb2wgZmluYWxfcCk7CisgIHZlYzxl ZGdlPiBtX2xpc3Q7CisgIGdpbXBsZV9yYW5nZXIgJm1fcmFuZ2VyOworfTsKKworLy8gQ2hlY2sg aWYgYmxvY2sgQkIgaGFzIGEgX19idWlsdGluX3VucmVhY2hhYmxlICgpIGNhbGwgb24gb25lIGFy bSwgYW5kCisvLyByZWdpc3RlciB0aGUgZXhlY3V0YWJsZSBlZGdlIGlmIHNvLgorCit2b2lkCity ZW1vdmVfdW5yZWFjaGFibGU6Om1heWJlX3JlZ2lzdGVyX2Jsb2NrIChiYXNpY19ibG9jayBiYikK K3sKKyAgZ2ltcGxlICpzID0gZ2ltcGxlX291dGdvaW5nX3JhbmdlX3N0bXRfcCAoYmIpOworICBp ZiAoIXMgfHwgZ2ltcGxlX2NvZGUgKHMpICE9IEdJTVBMRV9DT05EKQorICAgIHJldHVybjsKKwor ICBlZGdlIGUwID0gRURHRV9TVUNDIChiYiwgMCk7CisgIGJhc2ljX2Jsb2NrIGJiMCA9IGUwLT5k ZXN0OworICBib29sIHVuMCA9IEVER0VfQ09VTlQgKGJiMC0+c3VjY3MpID09IDAKKwkgICAgICYm IGdpbXBsZV9zZXFfdW5yZWFjaGFibGVfcCAoYmJfc2VxIChiYjApKTsKKyAgZWRnZSBlMSA9IEVE R0VfU1VDQyAoYmIsIDEpOworICBiYXNpY19ibG9jayBiYjEgPSBlMS0+ZGVzdDsKKyAgYm9vbCB1 bjEgPSBFREdFX0NPVU5UIChiYjEtPnN1Y2NzKSA9PSAwCisJICAgICAmJiBnaW1wbGVfc2VxX3Vu cmVhY2hhYmxlX3AgKGJiX3NlcSAoYmIxKSk7CisKKyAgLy8gSWYgdGhlIDIgYmxvY2tzIGFyZSBu b3QgZGlmZmVyZW50LCBpZ25vcmUuCisgIGlmICh1bjAgPT0gdW4xKQorICAgIHJldHVybjsKKwor ICBpZiAodW4wKQorICAgIG1fbGlzdC5zYWZlX3B1c2ggKGUxKTsKKyAgZWxzZQorICAgIG1fbGlz dC5zYWZlX3B1c2ggKGUwKTsKK30KKworLy8gUHJvY2VzcyB0aGUgZWRnZXMgaW4gdGhlIGxpc3Qs IGNoYW5nZSB0aGUgY29uZGl0aW9ucyBhbmQgcmVtb3ZpbmcgYW55CisvLyBkZWFkIGNvZGUgZmVl ZGluZyB0aG9zZSBjb25kaXRpb25zLiAgQ2FsY3VsYXRlIHRoZSByYW5nZSBvZiBhbnkKKy8vIG5h bWVzIHRoYXQgbWF5IGhhdmUgYmVlbiBleHBvcnRlZCBmcm9tIHRob3NlIGJsb2NrcywgYW5kIGRl dGVybWluZSBpZgorLy8gdGhlcmUgaXMgYW55IHVwZGF0ZXMgdG8gdGhlaXIgZ2xvYmFsIHJhbmdl cy4uCisvLyBGSU5BTF9QIGluZGljYXRlcyBhbGwgYnVpbHRpbl91bnJlYWNoYWJsZSBjYWxscyBz aG91bGQgYmUgcmVtb3ZlZC4KKy8vIFJldHVybiB0cnVlIGlmIGFueSBidWlsdGluX3VucmVhY2hh Ymxlcy9nbG9iYWxzIGVsaW1pbmF0ZWQvdXBkYXRlZC4KKworYm9vbAorcmVtb3ZlX3VucmVhY2hh YmxlOjpyZW1vdmVfYW5kX3VwZGF0ZV9nbG9iYWxzIChib29sIGZpbmFsX3ApCit7CisgIGlmICht X2xpc3QubGVuZ3RoICgpID09IDApCisgICAgcmV0dXJuIGZhbHNlOworCisgIGJvb2wgY2hhbmdl ID0gZmFsc2U7CisgIHRyZWUgbmFtZTsKKyAgdW5zaWduZWQgaTsKKyAgYml0bWFwX2l0ZXJhdG9y IGJpOworICBhdXRvX2JpdG1hcCBhbGxfZXhwb3J0czsKKyAgZm9yIChpID0gMDsgaSA8IG1fbGlz dC5sZW5ndGggKCk7IGkrKykKKyAgICB7CisgICAgICBlZGdlIGUgPSBtX2xpc3RbaV07CisgICAg ICBnaW1wbGUgKnMgPSBnaW1wbGVfb3V0Z29pbmdfcmFuZ2Vfc3RtdF9wIChlLT5zcmMpOworICAg ICAgZ2NjX2NoZWNraW5nX2Fzc2VydCAoZ2ltcGxlX2NvZGUgKHMpID09IEdJTVBMRV9DT05EKTsK KyAgICAgIGJvb2wgbGhzX3AgPSBUUkVFX0NPREUgKGdpbXBsZV9jb25kX2xocyAocykpID09IFNT QV9OQU1FOworICAgICAgYm9vbCByaHNfcCA9IFRSRUVfQ09ERSAoZ2ltcGxlX2NvbmRfcmhzIChz KSkgPT0gU1NBX05BTUU7CisgICAgICAvLyBEbyBub3QgcmVtb3ZlIF9fYnVpbHRpbl91bnJlYWNo YWJsZSBpZiBpdCBjb25mZXJzIGEgcmVsYXRpb24sIG9yCisgICAgICAvLyB0aGF0IHJlbGF0aW9u IHdpbGwgYmUgbG9zdCBpbiBzdWJzZXF1ZW50IHBhc3Nlcy4gIFVubGVzcyBpdHMgdGhlCisgICAg ICAvLyBmaW5hbCBwYXNzLgorICAgICAgaWYgKCFmaW5hbF9wICYmIGxoc19wICYmIHJoc19wKQor CWNvbnRpbnVlOworICAgICAgLy8gSWYgdGhpcyBpcyBhbHJlYWR5IGEgY29uc3RhbnQgY29uZGl0 aW9uLCBkb24ndCBsb29rIGVpdGhlcgorICAgICAgaWYgKCFsaHNfcCAmJiAhcmhzX3ApCisJY29u dGludWU7CisKKyAgICAgIGJvb2wgZG9taW5hdGVfZXhpdF9wID0gdHJ1ZTsKKyAgICAgIEZPUl9F QUNIX0dPUklfRVhQT1JUX05BTUUgKG1fcmFuZ2VyLmdvcmkgKCksIGUtPnNyYywgbmFtZSkKKwl7 CisJICAvLyBFbnN1cmUgdGhlIGNhY2hlIGlzIHNldCBmb3IgTkFNRSBpbiB0aGUgc3VjYyBibG9j ay4KKwkgIFZhbHVlX1JhbmdlIHIoVFJFRV9UWVBFIChuYW1lKSk7CisJICBWYWx1ZV9SYW5nZSBl eChUUkVFX1RZUEUgKG5hbWUpKTsKKwkgIG1fcmFuZ2VyLnJhbmdlX29uX2VudHJ5IChyLCBlLT5k ZXN0LCBuYW1lKTsKKwkgIG1fcmFuZ2VyLnJhbmdlX29uX2VudHJ5IChleCwgRVhJVF9CTE9DS19Q VFJfRk9SX0ZOIChjZnVuKSwgbmFtZSk7CisJICAvLyBJZiB0aGUgcmFuZ2UgcHJvZHVjZWQgYnkg dGhpcyBfX2J1aWx0aW5fdW5yZWFjaGFjYmxlIGV4cHJlc3Npb24KKwkgIC8vIGlzIG5vdCBmdWxs eSByZWZsZWN0ZWQgaW4gdGhlIHJhbmdlIGF0IGV4aXQsIHRoZW4gaXQgZG9lcyBub3QKKwkgIC8v IGRvbWluYXRlIHRoZSBleGl0IG9mIHRoZSBmdW5jaXRvbi4KKwkgIGlmIChleC5pbnRlcnNlY3Qg KHIpKQorCSAgICBkb21pbmF0ZV9leGl0X3AgPSBmYWxzZTsKKwl9CisKKyAgICAgIC8vIElmIHRo ZSBleGl0IGlzIGRvbWluYXRlZCwgYWRkIHRvIHRoZSBleHBvcnQgbGlzdC4gIE90aGVyd2lzZSBp ZiB0aGlzCisgICAgICAvLyBpc24ndCB0aGUgZmluYWwgVlJQIHBhc3MsIGxlYXZlIHRoZSBjYWxs IGluIHRoZSBJTC4KKyAgICAgIGlmIChkb21pbmF0ZV9leGl0X3ApCisJYml0bWFwX2lvcl9pbnRv IChhbGxfZXhwb3J0cywgbV9yYW5nZXIuZ29yaSAoKS5leHBvcnRzIChlLT5zcmMpKTsKKyAgICAg IGVsc2UgaWYgKCFmaW5hbF9wKQorCWNvbnRpbnVlOworCisgICAgICBjaGFuZ2UgPSB0cnVlOwor ICAgICAgLy8gUmV3cml0ZSB0aGUgY29uZGl0aW9uLgorICAgICAgaWYgKGUtPmZsYWdzICYgRURH RV9UUlVFX1ZBTFVFKQorCWdpbXBsZV9jb25kX21ha2VfdHJ1ZSAoYXNfYTxnY29uZCAqPiAocykp OworICAgICAgZWxzZQorCWdpbXBsZV9jb25kX21ha2VfZmFsc2UgKGFzX2E8Z2NvbmQgKj4gKHMp KTsKKyAgICAgIHVwZGF0ZV9zdG10IChzKTsKKyAgICB9CisKKyAgaWYgKGJpdG1hcF9lbXB0eV9w IChhbGxfZXhwb3J0cykpCisgICAgcmV0dXJuIGZhbHNlOworICAvLyBJbnZva2UgRENFIG9uIGFs bCBleHBvcnRlZCBuYW1lcyB0byBlbGltbmF0ZSBkZWFkIGZlZWRpbmcgZGVmcworICBhdXRvX2Jp dG1hcCBkY2U7CisgIGJpdG1hcF9jb3B5IChkY2UsIGFsbF9leHBvcnRzKTsKKyAgLy8gRG9uJ3Qg YXR0ZW1wdCB0byBEQ0UgcGFyYW1ldGVycy4KKyAgRVhFQ1VURV9JRl9TRVRfSU5fQklUTUFQIChh bGxfZXhwb3J0cywgMCwgaSwgYmkpCisgICAgaWYgKFNTQV9OQU1FX0lTX0RFRkFVTFRfREVGIChz c2FfbmFtZSAoaSkpKQorICAgICAgYml0bWFwX2NsZWFyX2JpdCAoZGNlLCBpKTsKKyAgc2ltcGxl X2RjZV9mcm9tX3dvcmtsaXN0IChkY2UpOworCisgIC8vIExvb3Agb3ZlciBhbGwgdXNlcyBvZiBl YWNoIG5hbWUgYW5kIGZpbmQgbWF4aW1hbCByYW5nZS4gVGhpcyBpcyB0aGUKKyAgLy8gbmV3IGds b2JhbCByYW5nZS4KKyAgdXNlX29wZXJhbmRfcCB1c2VfcDsKKyAgaW1tX3VzZV9pdGVyYXRvciBp dGVyOworICBFWEVDVVRFX0lGX1NFVF9JTl9CSVRNQVAgKGFsbF9leHBvcnRzLCAwLCBpLCBiaSkK KyAgICB7CisgICAgICBuYW1lID0gc3NhX25hbWUgKGkpOworICAgICAgaWYgKCFuYW1lIHx8IFNT QV9OQU1FX0lOX0ZSRUVfTElTVCAobmFtZSkpCisJY29udGludWU7CisgICAgICBWYWx1ZV9SYW5n ZSByIChUUkVFX1RZUEUgKG5hbWUpKTsKKyAgICAgIFZhbHVlX1JhbmdlIGV4cF9yYW5nZSAoVFJF RV9UWVBFIChuYW1lKSk7CisgICAgICByLnNldF91bmRlZmluZWQgKCk7CisgICAgICBGT1JfRUFD SF9JTU1fVVNFX0ZBU1QgKHVzZV9wLCBpdGVyLCBuYW1lKQorCXsKKwkgIGdpbXBsZSAqdXNlX3N0 bXQgPSBVU0VfU1RNVCAodXNlX3ApOworCSAgaWYgKGlzX2dpbXBsZV9kZWJ1ZyAodXNlX3N0bXQp KQorCSAgICBjb250aW51ZTsKKwkgIGlmICghbV9yYW5nZXIucmFuZ2Vfb2ZfZXhwciAoZXhwX3Jh bmdlLCBuYW1lLCB1c2Vfc3RtdCkpCisJICAgIGV4cF9yYW5nZS5zZXRfdmFyeWluZyAoVFJFRV9U WVBFIChuYW1lKSk7CisJICByLnVuaW9uXyAoZXhwX3JhbmdlKTsKKwkgIGlmIChyLnZhcnlpbmdf cCAoKSkKKwkgICAgYnJlYWs7CisJfQorICAgICAgLy8gSW5jbHVkZSB0aGUgb24tZXhpdCByYW5n ZSB0byBlbnN1cmUgbm9uLWRvbWluYXRlZCB1bnJlYWNoYWJsZXMKKyAgICAgIC8vIGRvbid0IGlu Y29ycmVjdGx5IGltcGFjdCB0aGUgZ2xvYmFsIHJhbmdlLgorICAgICAgbV9yYW5nZXIucmFuZ2Vf b25fZW50cnkgKGV4cF9yYW5nZSwgRVhJVF9CTE9DS19QVFJfRk9SX0ZOIChjZnVuKSwgbmFtZSk7 CisgICAgICByLnVuaW9uXyAoZXhwX3JhbmdlKTsKKyAgICAgIGlmIChyLnZhcnlpbmdfcCAoKSB8 fCByLnVuZGVmaW5lZF9wICgpKQorCWNvbnRpbnVlOworICAgICAgaWYgKCFzZXRfcmFuZ2VfaW5m byAobmFtZSwgcikpCisJY29udGludWU7CisgICAgICBjaGFuZ2UgPSB0cnVlOworICAgICAgaWYg KGR1bXBfZmlsZSkKKwl7CisJICBmcHJpbnRmIChkdW1wX2ZpbGUsICJHbG9iYWwgRXhwb3J0ZWQg KHZpYSB1bnJlYWNoYWJsZSk6ICIpOworCSAgcHJpbnRfZ2VuZXJpY19leHByIChkdW1wX2ZpbGUs IG5hbWUsIFRERl9TTElNKTsKKwkgIGZwcmludGYgKGR1bXBfZmlsZSwgIiA9ICIpOworCSAgZ2lt cGxlX3JhbmdlX2dsb2JhbCAociwgbmFtZSk7CisJICByLmR1bXAgKGR1bXBfZmlsZSk7CisJICBm cHV0YyAoJ1xuJywgZHVtcF9maWxlKTsKKwl9CisgICAgfQorICByZXR1cm4gY2hhbmdlOworfQog CiAvKiBTZXQgb2YgU1NBIG5hbWVzIGZvdW5kIGxpdmUgZHVyaW5nIHRoZSBSUE8gdHJhdmVyc2Fs IG9mIHRoZSBmdW5jdGlvbgogICAgZm9yIHN0aWxsIGFjdGl2ZSBiYXNpYy1ibG9ja3MuICAqLwpA QCAtNDI2MCw2ICs0NDM3LDcgQEAgY2xhc3MgcnZycF9mb2xkZXIgOiBwdWJsaWMgc3Vic3RpdHV0 ZV9hbmRfZm9sZF9lbmdpbmUKIHB1YmxpYzoKIAogICBydnJwX2ZvbGRlciAoZ2ltcGxlX3Jhbmdl ciAqcikgOiBzdWJzdGl0dXRlX2FuZF9mb2xkX2VuZ2luZSAoKSwKKwkJCQkgICBtX3VucmVhY2hh YmxlICgqciksCiAJCQkJICAgbV9zaW1wbGlmaWVyIChyLCByLT5ub25fZXhlY3V0YWJsZV9lZGdl X2ZsYWcpCiAgIHsKICAgICBtX3JhbmdlciA9IHI7CkBAIC00MzEyLDYgKzQ0OTAsOCBAQCBwdWJs aWM6CiAgIHZvaWQgcG9zdF9mb2xkX2JiIChiYXNpY19ibG9jayBiYikgb3ZlcnJpZGUKICAgewog ICAgIG1fcHRhLT5sZWF2ZSAoYmIpOworICAgIGlmIChjZnVuLT5hZnRlcl9pbmxpbmluZykKKyAg ICAgIG1fdW5yZWFjaGFibGUubWF5YmVfcmVnaXN0ZXJfYmxvY2sgKGJiKTsKICAgfQogCiAgIHZv aWQgcHJlX2ZvbGRfc3RtdCAoZ2ltcGxlICpzdG10KSBvdmVycmlkZQpAQCAtNDMyOCw2ICs0NTA4 LDcgQEAgcHVibGljOgogICAgIHJldHVybiByZXQ7CiAgIH0KIAorICByZW1vdmVfdW5yZWFjaGFi bGUgbV91bnJlYWNoYWJsZTsKIHByaXZhdGU6CiAgIERJU0FCTEVfQ09QWV9BTkRfQVNTSUdOIChy dnJwX2ZvbGRlcik7CiAgIGdpbXBsZV9yYW5nZXIgKm1fcmFuZ2VyOwpAQCAtNDMzOSw3ICs0NTIw LDggQEAgcHJpdmF0ZToKICAgZnJvbSBhbnl3aGVyZSB0byBwZXJmb3JtIGEgVlJQIHBhc3MsIGlu Y2x1ZGluZyBmcm9tIEVWUlAuICAqLwogCiB1bnNpZ25lZCBpbnQKLWV4ZWN1dGVfcmFuZ2VyX3Zy cCAoc3RydWN0IGZ1bmN0aW9uICpmdW4sIGJvb2wgd2Fybl9hcnJheV9ib3VuZHNfcCkKK2V4ZWN1 dGVfcmFuZ2VyX3ZycCAoc3RydWN0IGZ1bmN0aW9uICpmdW4sIGJvb2wgd2Fybl9hcnJheV9ib3Vu ZHNfcCwKKwkJICAgIGJvb2wgZmluYWxfcCkKIHsKICAgbG9vcF9vcHRpbWl6ZXJfaW5pdCAoTE9P UFNfTk9STUFMIHwgTE9PUFNfSEFWRV9SRUNPUkRFRF9FWElUUyk7CiAgIHJld3JpdGVfaW50b19s b29wX2Nsb3NlZF9zc2EgKE5VTEwsIFRPRE9fdXBkYXRlX3NzYSk7CkBAIC00MzUwLDYgKzQ1MzIs OCBAQCBleGVjdXRlX3Jhbmdlcl92cnAgKHN0cnVjdCBmdW5jdGlvbiAqZnVuLCBib29sIHdhcm5f YXJyYXlfYm91bmRzX3ApCiAgIGdpbXBsZV9yYW5nZXIgKnJhbmdlciA9IGVuYWJsZV9yYW5nZXIg KGZ1biwgZmFsc2UpOwogICBydnJwX2ZvbGRlciBmb2xkZXIgKHJhbmdlcik7CiAgIGZvbGRlci5z dWJzdGl0dXRlX2FuZF9mb2xkICgpOworICAvLyBSZW1vdmUgdGFnZ2VkIGJ1aWx0aW4tdW5yZWFj aGFibGUgYW5kIG1heWJlIHVwZGF0ZSBnbG9iYWxzLgorICBmb2xkZXIubV91bnJlYWNoYWJsZS5y ZW1vdmVfYW5kX3VwZGF0ZV9nbG9iYWxzIChmaW5hbF9wKTsKICAgaWYgKGR1bXBfZmlsZSAmJiAo ZHVtcF9mbGFncyAmIFRERl9ERVRBSUxTKSkKICAgICByYW5nZXItPmR1bXAgKGR1bXBfZmlsZSk7 CiAKQEAgLTQ0MjgsMTEgKzQ2MTIsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgIC8vIEVhcmx5 IFZSUCBwYXNzLgogICAgICAgaWYgKG15X3Bhc3MgPT0gMCkKLQlyZXR1cm4gZXhlY3V0ZV9yYW5n ZXJfdnJwIChmdW4sIC8qd2Fybl9hcnJheV9ib3VuZHNfcD0qL2ZhbHNlKTsKKwlyZXR1cm4gZXhl Y3V0ZV9yYW5nZXJfdnJwIChmdW4sIC8qd2Fybl9hcnJheV9ib3VuZHNfcD0qL2ZhbHNlLCBmYWxz ZSk7CiAKICAgICAgIGlmICgobXlfcGFzcyA9PSAxICYmIHBhcmFtX3ZycDFfbW9kZSA9PSBWUlBf TU9ERV9SQU5HRVIpCiAJICB8fCAobXlfcGFzcyA9PSAyICYmIHBhcmFtX3ZycDJfbW9kZSA9PSBW UlBfTU9ERV9SQU5HRVIpKQotCXJldHVybiBleGVjdXRlX3Jhbmdlcl92cnAgKGZ1biwgd2Fybl9h cnJheV9ib3VuZHNfcCk7CisJcmV0dXJuIGV4ZWN1dGVfcmFuZ2VyX3ZycCAoZnVuLCB3YXJuX2Fy cmF5X2JvdW5kc19wLCBteV9wYXNzID09IDIpOwogICAgICAgcmV0dXJuIGV4ZWN1dGVfdnJwIChm dW4sIHdhcm5fYXJyYXlfYm91bmRzX3ApOwogICAgIH0KIAotLSAKMi4zNy4zCgo= --------------WFsmLLhu0EkHevgy7MecLGSR--