From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8512 invoked by alias); 20 Nov 2013 20:59:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 8475 invoked by uid 89); 20 Nov 2013 20:59:53 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_99,FREEMAIL_FROM,RDNS_NONE,SPF_PASS autolearn=no version=3.3.2 X-HELO: mail-ob0-f181.google.com Received: from Unknown (HELO mail-ob0-f181.google.com) (209.85.214.181) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 20 Nov 2013 20:59:52 +0000 Received: by mail-ob0-f181.google.com with SMTP id uy5so2768602obc.26 for ; Wed, 20 Nov 2013 12:59:44 -0800 (PST) X-Received: by 10.60.116.230 with SMTP id jz6mr2153197oeb.21.1384981184085; Wed, 20 Nov 2013 12:59:44 -0800 (PST) MIME-Version: 1.0 Received: by 10.182.24.201 with HTTP; Wed, 20 Nov 2013 12:59:03 -0800 (PST) From: Steven Bosscher Date: Wed, 20 Nov 2013 23:06:00 -0000 Message-ID: Subject: Delete dead jump tables in cfglayout mode To: GCC Patches Content-Type: multipart/mixed; boundary=089e0115e84a7fb45d04eba20f85 X-IsSubscribed: yes X-SW-Source: 2013-11/txt/msg02623.txt.bz2 --089e0115e84a7fb45d04eba20f85 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 619 Hello, With the attached patch, dead jump tables are deleted if a CLEANUP_EXPENSIVE is performed in cfglayout mode. This helps remove labels and merge basic blocks, and brings the CFG out of cfglayout mode more cleanly. It also fixes bugs in LABEL_NUSES updating, which was broken for cfglayout, and which was done in the wrong place for IRA. Bootstrapped&tested on powerpc64-unknown-linux-gnu. The patch needs patching for the EXIT_BLOCK_PTR/ENTRY_BLOCK_PTR changes but what's attached is what I tested. If the patch is OK, I'll make the necessary changes and re-test before committing. OK for trunk? Ciao! Steven --089e0115e84a7fb45d04eba20f85 Content-Type: text/plain; charset=US-ASCII; name="fix_cfglayout_label_nuses.diff.txt" Content-Disposition: attachment; filename="fix_cfglayout_label_nuses.diff.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ho91zeuq0 Content-length: 17211 CSoganVtcC5jIChyZXNldF9pbnNuX3JlZ19sYWJlbF9vcGVyYW5kX25vdGVz KTogTmV3IGZ1bmN0aW9uLAoJc3BsaXQgb3V0IGZyb20gLi4uCgkoaW5pdF9s YWJlbF9pbmZvKTogLi4uIGhlcmUuICBSZXNldCBMQUJFTF9OVVNFUyBpbiBj ZmdsYXlvdXQgbW9kZS4KCSogY2ZnY2xlYW51cC5jIChkZWxldGVfZGVhZF9q dW1wX3RhYmxlc19iZXR3ZWVuKTogTmV3IGZ1bmN0aW9uLAoJc3BsaXQgb3V0 IGZyb20gLi4uCgkoZGVsZXRlX2RlYWRfanVtcHRhYmxlcyk6IC4uLiBoZXJl LiAgSGFuZGxlIGNmZ2xheW91dCBtb2RlLgoJKGNsZWFudXBfY2ZnKTogRGVs ZXRlIGRlYWQganVtcCB0YWJsZXMgaW4gY2ZnbGF5b3V0IG1vZGUgaWYgYW4K CWV4cGVuc2l2ZSBDRkcgY2xlYW51cCBpcyBjYWxsZWQgZm9yLgoJKiBjZmdy dGwuYyAoZml4dXBfcmVvcmRlcl9jaGFpbik6IFJlbW92ZSBCQVJSSUVScyBm cm9tIGZhbGx0aHJ1IHBhdGhzLgoJKGNmZ19sYXlvdXRfZmluYWxpemUpOiBE ZWxldGUgZGVhZCBqdW1wIHRhYmxlcyBiZWZvcmUgcmUtYnVpbGRpbmcKCXRo ZSBpbnNucyBjaGFpbi4KCSogaXJhLmMgKGlyYSk6IFJlYnVpbGQganVtcCBs YWJlbHMgKmFmdGVyKiBkZWxldGluZyB1bnJlYWNoYWJsZQoJYmFzaWMgYmxv Y2tzLCBub3QgYmVmb3JlLgoJKiBsb29wLWluaXQuYyAocnRsX2xvb3BfZG9u ZSk6IENhbGwgZm9yIGFuIGV4cGVuc2l2ZSBDRkcgY2xlYW51cC4KCgkqIG1v ZHVsby1zY2hlZC5jIChzbXNfc2NoZWR1bGUpOiBEbyBub3QgbG9vayBmb3Ig QkFSUklFUnMgaW4gdGhlCglpbnNucyBjaGFpbiBvZiBhIHNjaGVkdWxpbmcg ZXh0ZW5kZWQgYmFzaWMgYmxvY2ssIHRoZXkgY2Fubm90IGFwcGVhcgoJdGhl cmUgaW4gY2ZnbGF5b3V0IG1vZGUuCgpJbmRleDoganVtcC5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGp1bXAuYwkocmV2aXNpb24gMjA0ODI5KQor KysganVtcC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNiArMTc3LDM0IEBA IG1ha2VfcGFzc19jbGVhbnVwX2JhcnJpZXJzIChnY2M6OmNvbnRleHQgKmN0 eHQpCiB9CiAKIAwKKy8qIFJlbW92ZSBhbGwgUkVHX0xBQkVMX09QRVJBTkQg bm90ZXMgZnJvbSBJTlNOLgorCisgICBSRUdfTEFCRUxfVEFSR0VUIG5vdGVz IChpbmNsdWRpbmcgdGhlIEpVTVBfTEFCRUwgZmllbGQpIGFyZSBzdGlja3kg YW5kCisgICBub3QgcmVzZXQgaGVyZTsgdGhhdCB3YXkgd2Ugd29uJ3QgbG9z ZSBhc3NvY2lhdGlvbiB3aXRoIGEgbGFiZWwgd2hlbgorICAgZS5nLiB0aGUg c291cmNlIGZvciBhIHRhcmdldCByZWdpc3RlciBkaXNhcHBlYXJzIG91dCBv ZiByZWFjaCBmb3IgdGFyZ2V0cworICAgdGhhdCBtYXkgdXNlIGp1bXAtdGFy Z2V0IHJlZ2lzdGVycy4gIEp1bXAgdHJhbnNmb3JtYXRpb25zIGFyZSBzdXBw b3NlZCB0bworICAgdHJhbnNmb3JtIGFueSBSRUdfTEFCRUxfVEFSR0VUIG5v dGVzLiAgVGhlIHRhcmdldCBsYWJlbCByZWZlcmVuY2UgaW4gYQorICAgYnJh bmNoIG1heSBkaXNhcHBlYXIgZnJvbSB0aGUgYnJhbmNoIChhbmQgZnJvbSB0 aGUgaW5zdHJ1Y3Rpb24gYmVmb3JlIGl0KQorICAgZm9yIG90aGVyIHJlYXNv bnMsIGxpa2UgcmVnaXN0ZXIgYWxsb2NhdGlvbi4gICovCisKK3N0YXRpYyB2 b2lkCityZXNldF9pbnNuX3JlZ19sYWJlbF9vcGVyYW5kX25vdGVzIChydHgg aW5zbikKK3sKKyAgaWYgKElOU05fUCAoaW5zbikpCisgICAgeworICAgICAg cnR4IG5vdGUsIG5leHQ7CisKKyAgICAgIGZvciAobm90ZSA9IFJFR19OT1RF UyAoaW5zbik7IG5vdGU7IG5vdGUgPSBuZXh0KQorCXsKKwkgIG5leHQgPSBY RVhQIChub3RlLCAxKTsKKwkgIGlmIChSRUdfTk9URV9LSU5EIChub3RlKSA9 PSBSRUdfTEFCRUxfT1BFUkFORAorCSAgICAgICYmICEgcmVnX21lbnRpb25l ZF9wIChYRVhQIChub3RlLCAwKSwgUEFUVEVSTiAoaW5zbikpKQorCSAgICBy ZW1vdmVfbm90ZSAoaW5zbiwgbm90ZSk7CisJfQorICAgIH0KK30KKworCiAv KiBJbml0aWFsaXplIExBQkVMX05VU0VTIGFuZCBKVU1QX0xBQkVMIGZpZWxk cywgYWRkIFJFR19MQUJFTF9UQVJHRVQKICAgIGZvciByZW1haW5pbmcgdGFy Z2V0cyBmb3IgSlVNUF9QLiAgRGVsZXRlIGFueSBSRUdfTEFCRUxfT1BFUkFO RAogICAgbm90ZXMgd2hvc2UgbGFiZWxzIGRvbid0IG9jY3VyIGluIHRoZSBp bnNuIGFueSBtb3JlLiAgKi8KQEAgLTE4NiwzNCArMjE0LDQwIEBAIGluaXRf bGFiZWxfaW5mbyAocnR4IGYpCiB7CiAgIHJ0eCBpbnNuOwogCi0gIGZvciAo aW5zbiA9IGY7IGluc247IGluc24gPSBORVhUX0lOU04gKGluc24pKQotICAg IHsKLSAgICAgIGlmIChMQUJFTF9QIChpbnNuKSkKLQlMQUJFTF9OVVNFUyAo aW5zbikgPSAoTEFCRUxfUFJFU0VSVkVfUCAoaW5zbikgIT0gMCk7Ci0KLSAg ICAgIC8qIFJFR19MQUJFTF9UQVJHRVQgbm90ZXMgKGluY2x1ZGluZyB0aGUg SlVNUF9MQUJFTCBmaWVsZCkgYXJlCi0JIHN0aWNreSBhbmQgbm90IHJlc2V0 IGhlcmU7IHRoYXQgd2F5IHdlIHdvbid0IGxvc2UgYXNzb2NpYXRpb24KLQkg d2l0aCBhIGxhYmVsIHdoZW4gZS5nLiB0aGUgc291cmNlIGZvciBhIHRhcmdl dCByZWdpc3RlcgotCSBkaXNhcHBlYXJzIG91dCBvZiByZWFjaCBmb3IgdGFy Z2V0cyB0aGF0IG1heSB1c2UganVtcC10YXJnZXQKLQkgcmVnaXN0ZXJzLiAg SnVtcCB0cmFuc2Zvcm1hdGlvbnMgYXJlIHN1cHBvc2VkIHRvIHRyYW5zZm9y bQotCSBhbnkgUkVHX0xBQkVMX1RBUkdFVCBub3Rlcy4gIFRoZSB0YXJnZXQg bGFiZWwgcmVmZXJlbmNlIGluIGEKLQkgYnJhbmNoIG1heSBkaXNhcHBlYXIg ZnJvbSB0aGUgYnJhbmNoIChhbmQgZnJvbSB0aGUKLQkgaW5zdHJ1Y3Rpb24g YmVmb3JlIGl0KSBmb3Igb3RoZXIgcmVhc29ucywgbGlrZSByZWdpc3Rlcgot CSBhbGxvY2F0aW9uLiAgKi8KLQotICAgICAgaWYgKElOU05fUCAoaW5zbikp Ci0JewotCSAgcnR4IG5vdGUsIG5leHQ7Ci0KLQkgIGZvciAobm90ZSA9IFJF R19OT1RFUyAoaW5zbik7IG5vdGU7IG5vdGUgPSBuZXh0KQotCSAgICB7Ci0J ICAgICAgbmV4dCA9IFhFWFAgKG5vdGUsIDEpOwotCSAgICAgIGlmIChSRUdf Tk9URV9LSU5EIChub3RlKSA9PSBSRUdfTEFCRUxfT1BFUkFORAotCQkgICYm ICEgcmVnX21lbnRpb25lZF9wIChYRVhQIChub3RlLCAwKSwgUEFUVEVSTiAo aW5zbikpKQotCQlyZW1vdmVfbm90ZSAoaW5zbiwgbm90ZSk7Ci0JICAgIH0K LQl9Ci0gICAgfQorICBpZiAoY3VycmVudF9pcl90eXBlICgpID09IElSX1JU TF9DRkdMQVlPVVQpCisgICAgeworICAgICAgYmFzaWNfYmxvY2sgYmI7CisK KyAgICAgIEZPUl9FQUNIX0JCIChiYikKKwl7CisJICAvKiBMYWJlbHMgb25s eSBhcHBlYXIgYmV0d2VlbiBCQl9IRUFEIGFuZCB0aGUgYmFzaWMgYmxvY2sg bm90ZSwKKwkgICAgIGFuZCBpbiB0aGUgYmFzaWMgYmxvY2sgaGVhZGVyIGFu ZCBmb290ZXIuICAqLworCSAgZm9yIChpbnNuID0gQkJfSEVBRCAoYmIpOwor CSAgICAgICBpbnNuICYmIExBQkVMX1AgKGluc24pOworCSAgICAgICBpbnNu ID0gTkVYVF9JTlNOIChpbnNuKSkKKwkgICAgTEFCRUxfTlVTRVMgKGluc24p ID0gKExBQkVMX1BSRVNFUlZFX1AgKGluc24pICE9IDApOworCSAgZm9yIChp bnNuID0gQkJfSEVBREVSIChiYik7IGluc247IGluc24gPSBORVhUX0lOU04g KGluc24pKQorCSAgICBpZiAoTEFCRUxfUCAoaW5zbikpCisJICAgICAgTEFC RUxfTlVTRVMgKGluc24pID0gKExBQkVMX1BSRVNFUlZFX1AgKGluc24pICE9 IDApOworCSAgZm9yIChpbnNuID0gQkJfRk9PVEVSIChiYik7IGluc247IGlu c24gPSBORVhUX0lOU04gKGluc24pKQorCSAgICBpZiAoTEFCRUxfUCAoaW5z bikpCisJICAgICAgTEFCRUxfTlVTRVMgKGluc24pID0gKExBQkVMX1BSRVNF UlZFX1AgKGluc24pICE9IDApOworCisJICBGT1JfQkJfSU5TTlMgKGJiLCBp bnNuKQorCSAgICBpZiAoSU5TTl9QIChpbnNuKSkKKwkgICAgICByZXNldF9p bnNuX3JlZ19sYWJlbF9vcGVyYW5kX25vdGVzIChpbnNuKTsKKwl9CisgICAg fQorICBlbHNlCisgICAgeworICAgICAgZm9yIChpbnNuID0gZjsgaW5zbjsg aW5zbiA9IE5FWFRfSU5TTiAoaW5zbikpCisJeworCSAgaWYgKExBQkVMX1Ag KGluc24pKQorCSAgICBMQUJFTF9OVVNFUyAoaW5zbikgPSAoTEFCRUxfUFJF U0VSVkVfUCAoaW5zbikgIT0gMCk7CisJICBpZiAoSU5TTl9QIChpbnNuKSkK KwkgICAgcmVzZXRfaW5zbl9yZWdfbGFiZWxfb3BlcmFuZF9ub3RlcyAoaW5z bik7CisJfQorICAgIH0KIH0KIAogLyogQSBzdWJyb3V0aW5lIG9mIG1hcmtf YWxsX2xhYmVscy4gIFRyaXZpYWxseSBwcm9wYWdhdGUgYSBzaW1wbGUgbGFi ZWwKSW5kZXg6IGNmZ2NsZWFudXAuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBjZmdjbGVhbnVwLmMJKHJldmlzaW9uIDIwNDgyOSkKKysrIGNmZ2Ns ZWFudXAuYwkod29ya2luZyBjb3B5KQpAQCAtMjkyNiw0MSArMjkyNiw2NiBA QCBkZWxldGVfdW5yZWFjaGFibGVfYmxvY2tzICh2b2lkKQogICByZXR1cm4g Y2hhbmdlZDsKIH0KIAotLyogRGVsZXRlIGFueSBqdW1wIHRhYmxlcyBuZXZl ciByZWZlcmVuY2VkLiAgV2UgY2FuJ3QgZGVsZXRlIHRoZW0gYXQgdGhlCi0g ICB0aW1lIG9mIHJlbW92aW5nIHRhYmxlanVtcCBpbnNuIGFzIHRoZXkgYXJl IHJlZmVyZW5jZWQgYnkgdGhlIHByZWNlZGluZwotICAgaW5zbnMgY29tcHV0 aW5nIHRoZSBkZXN0aW5hdGlvbiwgc28gd2UgZGVsYXkgZGVsZXRpbmcgYW5k IGdhcmJhZ2Vjb2xsZWN0Ci0gICB0aGVtIG9uY2UgbGlmZSBpbmZvcm1hdGlv biBpcyBjb21wdXRlZC4gICovCi12b2lkCi1kZWxldGVfZGVhZF9qdW1wdGFi bGVzICh2b2lkKQotewotICBiYXNpY19ibG9jayBiYjsKLQotICAvKiBBIGRl YWQganVtcCB0YWJsZSBkb2VzIG5vdCBiZWxvbmcgdG8gYW55IGJhc2ljIGJs b2NrLiAgU2NhbiBpbnNucwotICAgICBiZXR3ZWVuIHR3byBhZGphY2VudCBi YXNpYyBibG9ja3MuICAqLwotICBGT1JfRUFDSF9CQiAoYmIpCi0gICAgewot ICAgICAgcnR4IGluc24sIG5leHQ7Ci0KLSAgICAgIGZvciAoaW5zbiA9IE5F WFRfSU5TTiAoQkJfRU5EIChiYikpOwotCSAgIGluc24gJiYgIU5PVEVfSU5T Tl9CQVNJQ19CTE9DS19QIChpbnNuKTsKLQkgICBpbnNuID0gbmV4dCkKLQl7 Ci0JICBuZXh0ID0gTkVYVF9JTlNOIChpbnNuKTsKLQkgIGlmIChMQUJFTF9Q IChpbnNuKQotCSAgICAgICYmIExBQkVMX05VU0VTIChpbnNuKSA9PSBMQUJF TF9QUkVTRVJWRV9QIChpbnNuKQotCSAgICAgICYmIEpVTVBfVEFCTEVfREFU QV9QIChuZXh0KSkKLQkgICAgewotCSAgICAgIHJ0eCBsYWJlbCA9IGluc24s IGp1bXAgPSBuZXh0OwotCi0JICAgICAgaWYgKGR1bXBfZmlsZSkKLQkJZnBy aW50ZiAoZHVtcF9maWxlLCAiRGVhZCBqdW1wdGFibGUgJWkgcmVtb3ZlZFxu IiwKLQkJCSBJTlNOX1VJRCAoaW5zbikpOwotCi0JICAgICAgbmV4dCA9IE5F WFRfSU5TTiAobmV4dCk7Ci0JICAgICAgZGVsZXRlX2luc24gKGp1bXApOwot CSAgICAgIGRlbGV0ZV9pbnNuIChsYWJlbCk7Ci0JICAgIH0KLQl9CisMCisv KiBMb29rIGZvciwgYW5kIGRlbGV0ZSwgYW55IGRlYWQganVtcHRhYmxlcyBi ZXR3ZWVuIFNUQVJUIGFuZCBFTkQuICAqLworCitzdGF0aWMgdm9pZAorZGVs ZXRlX2RlYWRfanVtcF90YWJsZXNfYmV0d2VlbiAocnR4IHN0YXJ0LCBydHgg ZW5kKQoreworICBydHggaW5zbiwgbmV4dDsKKworICBmb3IgKGluc24gPSBz dGFydDsgaW5zbiAhPSBlbmQ7IGluc24gPSBuZXh0KQorICAgIHsKKyAgICAg IG5leHQgPSBORVhUX0lOU04gKGluc24pOworICAgICAgaWYgKG5leHQgIT0g TlVMTF9SVFgKKwkgICYmIExBQkVMX1AgKGluc24pCisJICAmJiBMQUJFTF9O VVNFUyAoaW5zbikgPT0gTEFCRUxfUFJFU0VSVkVfUCAoaW5zbikKKwkgICYm IEpVTVBfVEFCTEVfREFUQV9QIChuZXh0KSkKKwl7CisJICBydHggbGFiZWwg PSBpbnNuLCBqdW1wID0gbmV4dDsKKworCSAgaWYgKGR1bXBfZmlsZSkKKwkg ICAgZnByaW50ZiAoZHVtcF9maWxlLCAiRGVhZCBqdW1wdGFibGUgJWkgcmVt b3ZlZFxuIiwKKwkJICAgICBJTlNOX1VJRCAoaW5zbikpOworCisJICBuZXh0 ID0gTkVYVF9JTlNOIChuZXh0KTsKKwkgIGRlbGV0ZV9pbnNuIChqdW1wKTsK KwkgIGRlbGV0ZV9pbnNuIChsYWJlbCk7CisJfQorICAgIH0KK30KKworCisv KiBEZWxldGUgYW55IGp1bXAgdGFibGVzIG5ldmVyIHJlZmVyZW5jZWQuICBX ZSBjYW4ndCBkZWxldGUgdGhlbSBhdCB0aGUKKyAgIHRpbWUgb2YgcmVtb3Zp bmcgdGFibGVqdW1wIGluc24gYXMgdGhlIGxhYmVsIHByZWNlZGluZyB0aGUg anVtcCB0YWJsZQorICAgZGF0YSBtYXkgYmUgcmVmZXJlbmNlZCBieSB0aGUg cHJlY2VkaW5nIGluc25zIGNvbXB1dGluZyB0aGUgZGVzdGluYXRpb24uCisg ICBTbyB3ZSBkZWxheSBkZWxldGluZyBhbmQgZ2FyYmFnZS1jb2xsZWN0IHRo ZW0gZnJvbSB0aW1lIHRvIHRpbWUsIGFmdGVyCisgICBhIENGRyBjbGVhbnVw LiAgKi8KKwordm9pZAorZGVsZXRlX2RlYWRfanVtcHRhYmxlcyAodm9pZCkK K3sKKyAgYmFzaWNfYmxvY2sgYmI7CisKKyAgLyogTGFiZWwgcmVmZXJlbmNl IGNvdW50IG11c3QgdXAtdG8tZGF0ZSB0byBkZXRlY3QgZGVhZCBqdW1wIHRh Ymxlcy4gICovCisgIHJlYnVpbGRfanVtcF9sYWJlbHMgKGdldF9pbnNucyAo KSk7CisKKyAgRk9SX0VBQ0hfQkIgKGJiKQorICAgIHsKKyAgICAgIGlmIChj dXJyZW50X2lyX3R5cGUgKCkgPT0gSVJfUlRMX0NGR0xBWU9VVCkKKwl7CisJ ICAvKiBKdW1wIHRhYmxlcyBvbmx5IGFwcGVhciBpbiB0aGUgaGVhZGVyIG9y IGZvb3RlciBvZiBCQi4gICovCisJICBkZWxldGVfZGVhZF9qdW1wX3RhYmxl c19iZXR3ZWVuIChCQl9IRUFERVIgKGJiKSwgTlVMTF9SVFgpOworCSAgZGVs ZXRlX2RlYWRfanVtcF90YWJsZXNfYmV0d2VlbiAoQkJfRk9PVEVSIChiYiks IE5VTExfUlRYKTsKKwl9CisgICAgICBlbHNlCisJeworCSAgLyogSnVtcCB0 YWJsZXMgYXJlIGluIHRoZSBpbnNucyBjaGFpbiBiZXR3ZWVuIGJhc2ljIGJs b2Nrcy4gICovCisJICBydHggc3RhcnQgPSBORVhUX0lOU04gKEJCX0VORCAo YmIpKTsKKwkgIHJ0eCBlbmQgPSAoYmItPm5leHRfYmIgPT0gRVhJVF9CTE9D S19QVFIpCisJICAgID8gTlVMTF9SVFggOiBCQl9IRUFEIChiYi0+bmV4dF9i Yik7CisJICBkZWxldGVfZGVhZF9qdW1wX3RhYmxlc19iZXR3ZWVuIChzdGFy dCwgZW5kKTsKKwl9CiAgICAgfQogfQogCkBAIC0zMDMxLDEzICszMDU2LDEz IEBAIGNsZWFudXBfY2ZnIChpbnQgbW9kZSkKICAgaWYgKG1vZGUgJiBDTEVB TlVQX0NST1NTSlVNUCkKICAgICByZW1vdmVfZmFrZV9leGl0X2VkZ2VzICgp OwogCi0gIC8qIERvbid0IGNhbGwgZGVsZXRlX2RlYWRfanVtcHRhYmxlcyBp biBjZmdsYXlvdXQgbW9kZSwgYmVjYXVzZQotICAgICB0aGF0IGZ1bmN0aW9u IGFzc3VtZXMgdGhhdCBqdW1wIHRhYmxlcyBhcmUgaW4gdGhlIGluc25zIHN0 cmVhbS4KLSAgICAgQnV0IHdlIGFsc28gZG9uJ3QgX2hhdmVfIHRvIGRlbGV0 ZSBkZWFkIGp1bXB0YWJsZXMgaW4gY2ZnbGF5b3V0Ci0gICAgIG1vZGUgYmVj YXVzZSB3ZSBzaG91bGRuJ3QgZXZlbiBiZSBsb29raW5nIGF0IHRoaW5ncyB0 aGF0IGFyZQotICAgICBub3QgaW4gYSBiYXNpYyBibG9jay4gIERlYWQganVt cHRhYmxlcyBhcmUgY2xlYW5lZCB1cCB3aGVuCi0gICAgIGdvaW5nIG91dCBv ZiBjZmdsYXlvdXQgbW9kZS4gICovCi0gIGlmICghKG1vZGUgJiBDTEVBTlVQ X0NGR0xBWU9VVCkpCisgIC8qIERvbid0IGFsd2F5cyBjYWxsIGRlbGV0ZV9k ZWFkX2p1bXB0YWJsZXMgaW4gY2ZnbGF5b3V0IG1vZGUsIGJlY2F1c2UKKyAg ICAganVtcCB0YWJsZXMgY2FuIG9ubHkgYXBwZWFyIGluIHRoZSBoZWFkZXJz IGFuZCBmb290ZXJzIG9mIGJhc2ljIGJsb2NrcworICAgICBhbmQgd2UgdXN1 YWxseSBhcmUgbm90IGludGVyZXN0ZWQgaW4gYW55dGhpbmcgaGlkaW5nIHRo ZXJlLgorICAgICBCdXQgaWYgYW4gZXhwZW5zaXZlIGNsZWFudXAgaXMgY2Fs bGVkIGZvciwgZ2FyYmFnZS1jb2xsZWN0IHRoZSBkZWFkCisgICAgIGp1bXAg dGFibGVzIHRvIGdldCBsYWJlbCByZWZlcmVuY2UgY291bnRzIHJpZ2h0LiAg VGhpcyBzb21ldGltZXMKKyAgICAgYWxsb3dzIHNvbWUgbGFiZWxzIHRvIGJl IHJlbW92ZWQgYW5kIG1vcmUgYmFzaWMgYmxvY2tzIHRvIGJlIG1lcmdlZC4g ICovCisgIGlmICghKG1vZGUgJiBDTEVBTlVQX0NGR0xBWU9VVCkgfHwgKG1v ZGUgJiBDTEVBTlVQX0VYUEVOU0lWRSkpCiAgICAgZGVsZXRlX2RlYWRfanVt cHRhYmxlcyAoKTsKIAogICAvKiA/Pz8gIFdlIHByb2JhYmx5IGRvIHRoaXMg d2F5IHRvbyBvZnRlbi4gICovCkluZGV4OiBjZmdydGwuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBjZmdydGwuYwkocmV2aXNpb24gMjA0ODI5KQor KysgY2ZncnRsLmMJKHdvcmtpbmcgY29weSkKQEAgLTM2ODUsNyArMzY4NSw3 IEBAIGZpeHVwX3Jlb3JkZXJfY2hhaW4gKHZvaWQpCiAjZW5kaWYKIAogICAv KiBOb3cgYWRkIGp1bXBzIGFuZCBsYWJlbHMgYXMgbmVlZGVkIHRvIG1hdGNo IHRoZSBibG9ja3MgbmV3Ci0gICAgIG91dGdvaW5nIGVkZ2VzLiAgKi8KKyAg ICAgb3V0Z29pbmcgZWRnZXMuICBGaXh1cCBtaXNzaW5nIG9yIHJlZHVuZGFu dCBCQVJSSUVScy4gICovCiAKICAgZm9yIChiYiA9IEVOVFJZX0JMT0NLX1BU Ui0+bmV4dF9iYjsgYmIgOyBiYiA9IChiYXNpY19ibG9jaykgYmItPmF1eCkK ICAgICB7CkBAIC0zODM5LDEzICszODM5LDI2IEBAIGZpeHVwX3Jlb3JkZXJf Y2hhaW4gKHZvaWQpCiAKICAgcmVsaW5rX2Jsb2NrX2NoYWluICgvKnN0YXlf aW5fY2ZnbGF5b3V0X21vZGU9Ki9mYWxzZSk7CiAKLSAgLyogQW5ub3lpbmcg c3BlY2lhbCBjYXNlIC0ganVtcCBhcm91bmQgZGVhZCBqdW1wdGFibGVzIGxl ZnQgaW4gdGhlIGNvZGUuICAqLwotICBGT1JfRUFDSF9CQiAoYmIpCi0gICAg ewotICAgICAgZWRnZSBlID0gZmluZF9mYWxsdGhydV9lZGdlIChiYi0+c3Vj Y3MpOwotCi0gICAgICBpZiAoZSAmJiAhY2FuX2ZhbGx0aHJ1IChlLT5zcmMs IGUtPmRlc3QpKQotCWZvcmNlX25vbmZhbGx0aHJ1IChlKTsKKyAgLyogQW5u b3lpbmcgc3BlY2lhbCBjYXNlIC0gc3RyYXkgYmFycmllcnMgbGVmdCBpbiB0 aGUgY29kZS4gIFRoaXMgaGFwcGVucworICAgICBpZiBhIHRhYmxlanVtcCBp cyB0cmFuc2Zvcm1lZCB0byBhIHNpbXBlIG9yIGNvbmZpdGlvbmFsIGp1bXAs IG9yIGlmIGEKKyAgICAgYmFzaWMgYmxvY2sgZW5kaW5nIGluIGEgdGFibGVq dW1wIGlzIHJlbW92ZWQgYnV0IHRoZSBqdW1wIHRhYmxlIGl0c2VsZgorICAg ICBpcyBub3QuICAqLworICBGT1JfRUFDSF9CQiAoYmIpCisgICAgeworICAg ICAgZWRnZSBlID0gZmluZF9mYWxsdGhydV9lZGdlIChiYi0+c3VjY3MpOwor CisgICAgICBpZiAoZSAmJiBlLT5kZXN0ICE9IEVYSVRfQkxPQ0tfUFRSKQor CXsKKwkgIHJ0eCBpbnNuLCBuZXh0OworCSAgZm9yIChpbnNuID0gTkVYVF9J TlNOIChCQl9FTkQgKGUtPnNyYykpOworCSAgICAgICBpbnNuICE9IEJCX0hF QUQgKGUtPmRlc3QpOworCSAgICAgICBpbnNuID0gbmV4dCkKKwkgICAgewor CSAgICAgIG5leHQgPSBORVhUX0lOU04gKGluc24pOworCSAgICAgIGlmIChC QVJSSUVSX1AgKGluc24pKQorCQlyZW1vdmVfaW5zbiAoaW5zbik7CisJICAg IH0KKwl9CiAgICAgfQogCiAgIC8qIEVuc3VyZSBnb3RvX2xvY3VzIGZyb20g ZWRnZXMgaGFzIHNvbWUgaW5zdHJ1Y3Rpb25zIHdpdGggdGhhdCBsb2N1cwpA QCAtNDI0OSw3ICs0MjYyLDcgQEAgYnJlYWtfc3VwZXJibG9ja3MgKHZvaWQp CiB9CiAKIC8qIEZpbmFsaXplIHRoZSBjaGFuZ2VzOiByZW9yZGVyIGluc24g bGlzdCBhY2NvcmRpbmcgdG8gdGhlIHNlcXVlbmNlIHNwZWNpZmllZAotICAg YnkgYXV4IHBvaW50ZXJzLCBlbnRlciBjb21wZW5zYXRpb24gY29kZSwgcmVi dWlsZCBzY29wZSBmb3Jlc3QuICAqLworICAgYnkgYXV4IHBvaW50ZXJzLCBl bnRlciBjb21wZW5zYXRpb24gY29kZS4gICovCiAKIHZvaWQKIGNmZ19sYXlv dXRfZmluYWxpemUgKHZvaWQpCkBAIC00MjU3LDYgKzQyNzAsNyBAQCBjZmdf bGF5b3V0X2ZpbmFsaXplICh2b2lkKQogI2lmZGVmIEVOQUJMRV9DSEVDS0lO RwogICB2ZXJpZnlfZmxvd19pbmZvICgpOwogI2VuZGlmCisgIGRlbGV0ZV9k ZWFkX2p1bXB0YWJsZXMgKCk7CiAgIGZvcmNlX29uZV9leGl0X2ZhbGx0aHJ1 ICgpOwogICBydGxfcmVnaXN0ZXJfY2ZnX2hvb2tzICgpOwogICBpZiAocmVs b2FkX2NvbXBsZXRlZApAQCAtNDI2Nyw5ICs0MjgxLDYgQEAgY2ZnX2xheW91 dF9maW5hbGl6ZSAodm9pZCkKICAgICBmaXh1cF9mYWxsdGhydV9leGl0X3By ZWRlY2Vzc29yICgpOwogICBmaXh1cF9yZW9yZGVyX2NoYWluICgpOwogCi0g IHJlYnVpbGRfanVtcF9sYWJlbHMgKGdldF9pbnNucyAoKSk7Ci0gIGRlbGV0 ZV9kZWFkX2p1bXB0YWJsZXMgKCk7Ci0KICNpZmRlZiBFTkFCTEVfQ0hFQ0tJ TkcKICAgdmVyaWZ5X2luc25fY2hhaW4gKCk7CiAgIHZlcmlmeV9mbG93X2lu Zm8gKCk7CkluZGV4OiBpcmEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBpcmEuYwkocmV2aXNpb24gMjA0ODI5KQorKysgaXJhLmMJKHdvcmtpbmcg Y29weSkKQEAgLTUyMjAsOSArNTIyMCw5IEBAIGlyYSAoRklMRSAqZikKICAg aWYgKG9wdGltaXplICYmIHJlYnVpbGRfcCkKICAgICB7CiAgICAgICB0aW1l dmFyX3B1c2ggKFRWX0pVTVApOwotICAgICAgcmVidWlsZF9qdW1wX2xhYmVs cyAoZ2V0X2luc25zICgpKTsKICAgICAgIGlmIChwdXJnZV9hbGxfZGVhZF9l ZGdlcyAoKSkKIAlkZWxldGVfdW5yZWFjaGFibGVfYmxvY2tzICgpOworICAg ICAgcmVidWlsZF9qdW1wX2xhYmVscyAoZ2V0X2luc25zICgpKTsKICAgICAg IHRpbWV2YXJfcG9wIChUVl9KVU1QKTsKICAgICB9CiAKSW5kZXg6IGxvb3At aW5pdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxvb3AtaW5pdC5j CShyZXZpc2lvbiAyMDQ4MjkpCisrKyBsb29wLWluaXQuYwkod29ya2luZyBj b3B5KQpAQCAtNDE5LDcgKzQxOSw3IEBAIHJ0bF9sb29wX2RvbmUgKHZvaWQp CiAgIGxvb3Bfb3B0aW1pemVyX2ZpbmFsaXplICgpOwogICBmcmVlX2RvbWlu YW5jZV9pbmZvIChDRElfRE9NSU5BVE9SUyk7CiAKLSAgY2xlYW51cF9jZmcg KDApOworICBjbGVhbnVwX2NmZyAoQ0xFQU5VUF9FWFBFTlNJVkUpOwogICBp ZiAoZHVtcF9maWxlKQogICAgIHsKICAgICAgIGR1bXBfcmVnX2luZm8gKGR1 bXBfZmlsZSk7CkluZGV4OiBtb2R1bG8tc2NoZWQuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBtb2R1bG8tc2NoZWQuYwkocmV2aXNpb24gMjA0ODI5 KQorKysgbW9kdWxvLXNjaGVkLmMJKHdvcmtpbmcgY29weSkKQEAgLTE0NzIs NyArMTQ3Miw3IEBAIHNtc19zY2hlZHVsZSAodm9pZCkKIAljb250aW51ZTsK ICAgICAgIH0KIAotICAgICAgLyogRG9uJ3QgaGFuZGxlIEJCcyB3aXRoIGNh bGxzIG9yIGJhcnJpZXJzCisgICAgICAvKiBEb24ndCBoYW5kbGUgQkJzIHdp dGggY2FsbHMKIAkgb3IgIXNpbmdsZV9zZXQgd2l0aCB0aGUgZXhjZXB0aW9u IG9mIGluc3RydWN0aW9ucyB0aGF0IGluY2x1ZGUKIAkgY291bnRfcmVnLS0t dGhlc2UgaW5zdHJ1Y3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBjb250cm9sIHBh cnQKIAkgdGhhdCBkby1sb29wIHJlY29nbml6ZXMuCkBAIC0xNDgyLDcgKzE0 ODIsNiBAQCBzbXNfc2NoZWR1bGUgKHZvaWQpCiAgICAgICAgICBydHggc2V0 OwogCiAgICAgICAgIGlmIChDQUxMX1AgKGluc24pCi0gICAgICAgICAgICB8 fCBCQVJSSUVSX1AgKGluc24pCiAgICAgICAgICAgICB8fCAoTk9OREVCVUdf SU5TTl9QIChpbnNuKSAmJiAhSlVNUF9QIChpbnNuKQogICAgICAgICAgICAg ICAgICYmICFzaW5nbGVfc2V0IChpbnNuKSAmJiBHRVRfQ09ERSAoUEFUVEVS TiAoaW5zbikpICE9IFVTRQogICAgICAgICAgICAgICAgICYmICFyZWdfbWVu dGlvbmVkX3AgKGNvdW50X3JlZywgaW5zbikpCkBAIC0xNDk3LDggKzE0OTYs NiBAQCBzbXNfc2NoZWR1bGUgKHZvaWQpCiAJICAgIHsKIAkgICAgICBpZiAo Q0FMTF9QIChpbnNuKSkKIAkJZnByaW50ZiAoZHVtcF9maWxlLCAiU01TIGxv b3Atd2l0aC1jYWxsXG4iKTsKLQkgICAgICBlbHNlIGlmIChCQVJSSUVSX1Ag KGluc24pKQotCQlmcHJpbnRmIChkdW1wX2ZpbGUsICJTTVMgbG9vcC13aXRo LWJhcnJpZXJcbiIpOwogICAgICAgICAgICAgICBlbHNlIGlmICgoTk9OREVC VUdfSU5TTl9QIChpbnNuKSAmJiAhSlVNUF9QIChpbnNuKQogICAgICAgICAg ICAgICAgICYmICFzaW5nbGVfc2V0IChpbnNuKSAmJiBHRVRfQ09ERSAoUEFU VEVSTiAoaW5zbikpICE9IFVTRSkpCiAgICAgICAgICAgICAgICAgZnByaW50 ZiAoZHVtcF9maWxlLCAiU01TIGxvb3Atd2l0aC1ub3Qtc2luZ2xlLXNldFxu Iik7Cg== --089e0115e84a7fb45d04eba20f85--