From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24655 invoked by alias); 13 Oct 2014 20:30:45 -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 24646 invoked by uid 89); 13 Oct 2014 20:30:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 13 Oct 2014 20:30:43 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s9DKUgHn007044 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Mon, 13 Oct 2014 16:30:42 -0400 Received: from anchor.twiddle.net (vpn-233-228.phx2.redhat.com [10.3.233.228]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s9DKUeSC012375 for ; Mon, 13 Oct 2014 16:30:41 -0400 Message-ID: <543C366E.4060504@redhat.com> Date: Mon, 13 Oct 2014 20:52:00 -0000 From: Richard Henderson User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.1 MIME-Version: 1.0 To: gcc-patches@gcc.gnu.org Subject: [PATCH] Handle CFA adjust notes in combine stack adjustments Content-Type: multipart/mixed; boundary="------------020404060406050304060503" X-IsSubscribed: yes X-SW-Source: 2014-10/txt/msg01191.txt.bz2 This is a multi-part message in MIME format. --------------020404060406050304060503 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-length: 372 I was hitting this during a i386 bootstrap, wherein csa managed to combine two insns that both had REG_CFA_ADJUST_CFA notes, but didn't modify the notes. This lead to an abort later in dwarf2cfi, when the inconsistency was noticed. I'm not quite sure why this was happening on my branch but not mainline, but I'm applying it here anyway. Tested on i686 and x86_64. r~ --------------020404060406050304060503 Content-Type: text/plain; charset=UTF-8; name="z" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="z" Content-length: 15307 MjAxNC0xMC0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNv bT4KCgkqIGNvbWJpbmUtc3RhY2stYWRqLmMgKG5vX3VuaGFuZGxlZF9jZmEp OiBOZXcuCgkobWF5YmVfbWVyZ2VfY2ZhX2FkanVzdCk6IE5ldy4KCShjb21i aW5lX3N0YWNrX2FkanVzdG1lbnRzX2Zvcl9ibG9jayk6IFVzZSB0aGVtLgoK CSogZysrLmRnL3RvcnR1cmUvMjAxNDEwMTMuQzogTmV3LgoKZGlmZiAtLWdp dCBhL2djYy9jb21iaW5lLXN0YWNrLWFkai5jIGIvZ2NjL2NvbWJpbmUtc3Rh Y2stYWRqLmMKaW5kZXggYWViZGY4Ny4uODQ0ODczYyAxMDA2NDQKLS0tIGEv Z2NjL2NvbWJpbmUtc3RhY2stYWRqLmMKKysrIGIvZ2NjL2NvbWJpbmUtc3Rh Y2stYWRqLmMKQEAgLTE5MCw2ICsxOTAsNDQgQEAgcmVjb3JkX29uZV9zdGFj a19yZWYgKHJ0eF9pbnNuICppbnNuLCBydHggKnJlZiwgc3RydWN0IGNzYV9y ZWZsaXN0ICpuZXh0X3JlZmxpc3QKICAgcmV0dXJuIG1sOwogfQogCisvKiBX ZSBvbmx5IGtub3cgaG93IHRvIGFkanVzdCB0aGUgQ0ZBOyBubyBvdGhlciBm cmFtZS1yZWxhdGVkIGNoYW5nZXMKKyAgIG1heSBhcHBlYXIgaW4gYW55IGlu c24gdG8gYmUgZGVsZXRlZC4gICovCisKK3N0YXRpYyBib29sCitub191bmhh bmRsZWRfY2ZhIChydHhfaW5zbiAqaW5zbikKK3sKKyAgaWYgKCFSVFhfRlJB TUVfUkVMQVRFRF9QIChpbnNuKSkKKyAgICByZXR1cm4gdHJ1ZTsKKworICAv KiBObyBDRkEgbm90ZXMgYXQgYWxsIGlzIGEgbGVnYWN5IGludGVycHJldGF0 aW9uIGxpa2UKKyAgICAgRlJBTUVfUkVMQVRFRF9FWFBSLCBhbmQgaXMgY29u dGV4dCBzZW5zaXRpdmUgd2l0aGluCisgICAgIHRoZSBwcm9sb2d1ZSBzdGF0 ZSBtYWNoaW5lLiAgV2UgY2FuJ3QgaGFuZGxlIHRoYXQgaGVyZS4gICovCisg IGJvb2wgaGFzX2NmYV9hZGp1c3QgPSBmYWxzZTsKKworICBmb3IgKHJ0eCBs aW5rID0gUkVHX05PVEVTIChpbnNuKTsgbGluazsgbGluayA9IFhFWFAgKGxp bmssIDEpKQorICAgIHN3aXRjaCAoUkVHX05PVEVfS0lORCAobGluaykpCisg ICAgICB7CisgICAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICAg IGNhc2UgUkVHX0NGQV9BREpVU1RfQ0ZBOgorCWhhc19jZmFfYWRqdXN0ID0g dHJ1ZTsKKwlicmVhazsKKworICAgICAgY2FzZSBSRUdfRlJBTUVfUkVMQVRF RF9FWFBSOgorICAgICAgY2FzZSBSRUdfQ0ZBX0RFRl9DRkE6CisgICAgICBj YXNlIFJFR19DRkFfT0ZGU0VUOgorICAgICAgY2FzZSBSRUdfQ0ZBX1JFR0lT VEVSOgorICAgICAgY2FzZSBSRUdfQ0ZBX0VYUFJFU1NJT046CisgICAgICBj YXNlIFJFR19DRkFfUkVTVE9SRToKKyAgICAgIGNhc2UgUkVHX0NGQV9TRVRf VkRSQVA6CisgICAgICBjYXNlIFJFR19DRkFfV0lORE9XX1NBVkU6CisgICAg ICBjYXNlIFJFR19DRkFfRkxVU0hfUVVFVUU6CisJcmV0dXJuIGZhbHNlOwor ICAgICAgfQorCisgIHJldHVybiBoYXNfY2ZhX2FkanVzdDsKK30KKwogLyog QXR0ZW1wdCB0byBhcHBseSBBREpVU1QgdG8gdGhlIHN0YWNrIGFkanVzdGlu ZyBpbnNuIElOU04sIGFzIHdlbGwKICAgIGFzIGVhY2ggb2YgdGhlIG1lbW9y aWVzIGFuZCBzdGFjayByZWZlcmVuY2VzIGluIFJFRkxJU1QuICBSZXR1cm4g dHJ1ZQogICAgb24gc3VjY2Vzcy4gICovCkBAIC0zMjAsNiArMzU4LDQ0IEBA IG1heWJlX21vdmVfYXJnc19zaXplX25vdGUgKHJ0eF9pbnNuICpsYXN0LCBy dHhfaW5zbiAqaW5zbiwgYm9vbCBhZnRlcikKICAgICBhZGRfcmVnX25vdGUg KGxhc3QsIFJFR19BUkdTX1NJWkUsIFhFWFAgKG5vdGUsIDApKTsKIH0KIAor LyogTWVyZ2UgYW55IFJFR19DRkFfQURKVVNUX0NGQSBub3RlIGZyb20gU1JD IGludG8gRFNULgorICAgQUZURVIgaXMgdHJ1ZSBpZmYgRFNUIGZvbGxvd3Mg U1JDIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uICAqLworCitzdGF0aWMg dm9pZAorbWF5YmVfbWVyZ2VfY2ZhX2FkanVzdCAocnR4X2luc24gKmRzdCwg cnR4X2luc24gKnNyYywgYm9vbCBhZnRlcikKK3sKKyAgcnR4IHNub3RlID0g TlVMTCwgZG5vdGUgPSBOVUxMOworICBydHggc2V4cCwgZGV4cDsKKyAgcnR4 IGV4cDEsIGV4cDI7CisKKyAgaWYgKFJUWF9GUkFNRV9SRUxBVEVEX1AgKHNy YykpCisgICAgc25vdGUgPSBmaW5kX3JlZ19ub3RlIChzcmMsIFJFR19DRkFf QURKVVNUX0NGQSwgTlVMTF9SVFgpOworICBpZiAoc25vdGUgPT0gTlVMTCkK KyAgICByZXR1cm47CisgIHNleHAgPSBYRVhQIChzbm90ZSwgMCk7CisKKyAg aWYgKFJUWF9GUkFNRV9SRUxBVEVEX1AgKGRzdCkpCisgICAgZG5vdGUgPSBm aW5kX3JlZ19ub3RlIChkc3QsIFJFR19DRkFfQURKVVNUX0NGQSwgTlVMTF9S VFgpOworICBpZiAoZG5vdGUgPT0gTlVMTCkKKyAgICB7CisgICAgICBhZGRf cmVnX25vdGUgKGRzdCwgUkVHX0NGQV9BREpVU1RfQ0ZBLCBzZXhwKTsKKyAg ICAgIHJldHVybjsKKyAgICB9CisgIGRleHAgPSBYRVhQIChkbm90ZSwgMCk7 CisKKyAgZ2NjX2Fzc2VydCAoR0VUX0NPREUgKHNleHApID09IFNFVCk7Cisg IGdjY19hc3NlcnQgKEdFVF9DT0RFIChkZXhwKSA9PSBTRVQpOworCisgIGlm IChhZnRlcikKKyAgICBleHAxID0gZGV4cCwgZXhwMiA9IHNleHA7CisgIGVs c2UKKyAgICBleHAxID0gc2V4cCwgZXhwMiA9IGRleHA7CisKKyAgU0VUX1NS QyAoZXhwMSkgPSBzaW1wbGlmeV9yZXBsYWNlX3J0eCAoU0VUX1NSQyAoZXhw MSksIFNFVF9ERVNUIChleHAyKSwKKwkJCQkJIFNFVF9TUkMgKGV4cDIpKTsK KyAgWEVYUCAoZG5vdGUsIDApID0gZXhwMTsKK30KKwogLyogUmV0dXJuIHRo ZSBuZXh0IChvciBwcmV2aW91cykgYWN0aXZlIGluc24gd2l0aGluIEJCLiAg Ki8KIAogc3RhdGljIHJ0eF9pbnNuICoKQEAgLTQ5MSwxMiArNTY3LDE1IEBA IGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHNfZm9yX2Jsb2NrIChiYXNpY19i bG9jayBiYikKIAkgICAgICAvKiBDb21iaW5lIGFuIGFsbG9jYXRpb24gaW50 byB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24uICAqLwogCSAgICAgIGlmIChTVEFD S19HUk9XU19ET1dOV0FSRCA/IHRoaXNfYWRqdXN0IDw9IDAgOiB0aGlzX2Fk anVzdCA+PSAwKQogCQl7Ci0JCSAgaWYgKHRyeV9hcHBseV9zdGFja19hZGp1 c3RtZW50IChsYXN0X3NwX3NldCwgcmVmbGlzdCwKLQkJCQkJCSAgbGFzdF9z cF9hZGp1c3QgKyB0aGlzX2FkanVzdCwKLQkJCQkJCSAgdGhpc19hZGp1c3Qp KQorCQkgIGlmIChub191bmhhbmRsZWRfY2ZhIChpbnNuKQorCQkgICAgICAm JiB0cnlfYXBwbHlfc3RhY2tfYWRqdXN0bWVudCAobGFzdF9zcF9zZXQsIHJl Zmxpc3QsCisJCQkJCQkgICAgIGxhc3Rfc3BfYWRqdXN0CisJCQkJCQkgICAg ICsgdGhpc19hZGp1c3QsCisJCQkJCQkgICAgIHRoaXNfYWRqdXN0KSkKIAkJ ICAgIHsKIAkJICAgICAgLyogSXQgd29ya2VkISAgKi8KIAkJICAgICAgbWF5 YmVfbW92ZV9hcmdzX3NpemVfbm90ZSAobGFzdF9zcF9zZXQsIGluc24sIGZh bHNlKTsKKwkJICAgICAgbWF5YmVfbWVyZ2VfY2ZhX2FkanVzdCAobGFzdF9z cF9zZXQsIGluc24sIGZhbHNlKTsKIAkJICAgICAgZGVsZXRlX2luc24gKGlu c24pOwogCQkgICAgICBsYXN0X3NwX2FkanVzdCArPSB0aGlzX2FkanVzdDsK IAkJICAgICAgY29udGludWU7CkBAIC01MDgsMTIgKzU4NywxNSBAQCBjb21i aW5lX3N0YWNrX2FkanVzdG1lbnRzX2Zvcl9ibG9jayAoYmFzaWNfYmxvY2sg YmIpCiAJICAgICAgZWxzZSBpZiAoU1RBQ0tfR1JPV1NfRE9XTldBUkQKIAkJ ICAgICAgID8gbGFzdF9zcF9hZGp1c3QgPj0gMCA6IGxhc3Rfc3BfYWRqdXN0 IDw9IDApCiAJCXsKLQkJICBpZiAodHJ5X2FwcGx5X3N0YWNrX2FkanVzdG1l bnQgKGluc24sIHJlZmxpc3QsCi0JCQkJCQkgIGxhc3Rfc3BfYWRqdXN0ICsg dGhpc19hZGp1c3QsCi0JCQkJCQkgIC1sYXN0X3NwX2FkanVzdCkpCisJCSAg aWYgKG5vX3VuaGFuZGxlZF9jZmEgKGxhc3Rfc3Bfc2V0KQorCQkgICAgICAm JiB0cnlfYXBwbHlfc3RhY2tfYWRqdXN0bWVudCAoaW5zbiwgcmVmbGlzdCwK KwkJCQkJCSAgICAgbGFzdF9zcF9hZGp1c3QKKwkJCQkJCSAgICAgKyB0aGlz X2FkanVzdCwKKwkJCQkJCSAgICAgLWxhc3Rfc3BfYWRqdXN0KSkKIAkJICAg IHsKIAkJICAgICAgLyogSXQgd29ya2VkISAgKi8KIAkJICAgICAgbWF5YmVf bW92ZV9hcmdzX3NpemVfbm90ZSAoaW5zbiwgbGFzdF9zcF9zZXQsIHRydWUp OworCQkgICAgICBtYXliZV9tZXJnZV9jZmFfYWRqdXN0IChpbnNuLCBsYXN0 X3NwX3NldCwgdHJ1ZSk7CiAJCSAgICAgIGRlbGV0ZV9pbnNuIChsYXN0X3Nw X3NldCk7CiAJCSAgICAgIGxhc3Rfc3Bfc2V0ID0gaW5zbjsKIAkJICAgICAg bGFzdF9zcF9hZGp1c3QgKz0gdGhpc19hZGp1c3Q7CkBAIC01MjgsOSArNjEw LDEwIEBAIGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHNfZm9yX2Jsb2NrIChi YXNpY19ibG9jayBiYikKIAkJIGRlbGV0ZSB0aGUgb2xkIGRlYWxsb2NhdGlv biBpbnNuLiAgKi8KIAkgICAgICBpZiAobGFzdF9zcF9zZXQpCiAJCXsKLQkJ ICBpZiAobGFzdF9zcF9hZGp1c3QgPT0gMCkKKwkJICBpZiAobGFzdF9zcF9h ZGp1c3QgPT0gMCAmJiBub191bmhhbmRsZWRfY2ZhIChsYXN0X3NwX3NldCkp CiAJCSAgICB7CiAJCSAgICAgIG1heWJlX21vdmVfYXJnc19zaXplX25vdGUg KGluc24sIGxhc3Rfc3Bfc2V0LCB0cnVlKTsKKwkJICAgICAgbWF5YmVfbWVy Z2VfY2ZhX2FkanVzdCAoaW5zbiwgbGFzdF9zcF9zZXQsIHRydWUpOwogCQkg ICAgICBkZWxldGVfaW5zbiAobGFzdF9zcF9zZXQpOwogCQkgICAgfQogCQkg IGVsc2UKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL3RvcnR1 cmUvMjAxNDEwMTMuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3RvcnR1cmUv MjAxNDEwMTMuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li41MjllZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvdG9ydHVyZS8yMDE0MTAxMy5DCkBAIC0wLDAgKzEsMjY3IEBACitl bnVtCit7CisgIF9zY2hfaXNkaWdpdCA9IDB4MDAwNCwKKyAgX3NjaF9pc3B1 bmN0ID0gMHgwMDIwLAorICBfc2NoX2lzeGRpZ2l0ID0gMHgwMTAwLAorICBf c2NoX2lzaWRzdCA9IDB4MDIwMCwKKyAgX3NjaF9pc3ZzcCA9IDB4MDQwMCwK KyAgX3NjaF9pc252c3AgPSAweDA4MDAsCisgIF9zY2hfaXNhbG51bSA9IF9z Y2hfaXNpZHN0IHwgX3NjaF9pc2RpZ2l0LAorICBfc2NoX2lzY3Bwc3AgPSBf c2NoX2lzdnNwIHwgX3NjaF9pc252c3AsCit9OworZXh0ZXJuIGNvbnN0IHVu c2lnbmVkIHNob3J0IF9zY2hfaXN0YWJsZVsyNTZdOwordHlwZWRlZiB1bmlv biB0cmVlX25vZGUgKnRyZWU7Cit0eXBlZGVmIGNvbnN0IHVuaW9uIHRyZWVf bm9kZSAqY29uc3RfdHJlZTsKK2VudW0gb3B0X2NvZGUKK3sKKyAgT1BUX1dh cnJheV9ib3VuZHMgPSAyNDAsCisgIE9QVF9XZm9ybWF0XyA9IDI0NSwKKyAg T1BUX1dpbnRmX2Fubm90YXRpb24gPSAzNjgsCisgIE9QVF9zdGRfZ251X18x NCA9IDEzMTEsCit9OworZW51bSB0cmVlX2NvZGUKK3sKKyAgVFJFRV9MSVNU LAorICBDT05TVF9ERUNMLAorICBBRERSX0VYUFIsCisgIE1BWF9UUkVFX0NP REVTCit9OworZW51bSB0cmVlX2NvZGVfY2xhc3MKK3sKKyAgdGNjX3R5cGUs Cit9OworZW51bSB0cmVlX25vZGVfc3RydWN0dXJlX2VudW0KK3sKKyAgVFNf VFlQRUQsCisgIFRTX0NPTU1PTiwKK307CitlbnVtIGludGVnZXJfdHlwZV9r aW5kCit7CisgIGl0a19jaGFyLAorICBpdGtfbm9uZQorfTsKK3N0cnVjdCB0 cmVlX2Jhc2UKK3sKKyAgZW51bSB0cmVlX2NvZGUgY29kZToxNjsKK307Citz dHJ1Y3QgdHJlZV90eXBlZAoreworICB0cmVlIHR5cGU7Cit9Oworc3RydWN0 IHRyZWVfY29tbW9uCit7CisgIHRyZWUgY2hhaW47Cit9Oworc3RydWN0IHRy ZWVfbGlzdAoreworICB0cmVlIHB1cnBvc2U7Cit9Oworc3RydWN0IHRyZWVf dHlwZV9jb21tb24KK3sKKyAgdHJlZSBtYWluX3ZhcmlhbnQ7Cit9OwordW5p b24gdHJlZV9ub2RlCit7CisgIHN0cnVjdCB0cmVlX2Jhc2UgYmFzZTsKKyAg c3RydWN0IHRyZWVfdHlwZWQgdHlwZWQ7CisgIHN0cnVjdCB0cmVlX2NvbW1v biBjb21tb247CisgIHN0cnVjdCB0cmVlX3R5cGVfY29tbW9uIHR5cGVfY29t bW9uOworICBzdHJ1Y3QgdHJlZV9saXN0IGxpc3Q7Cit9OworZXh0ZXJuIHVu c2lnbmVkIGNoYXIgdHJlZV9jb250YWluc19zdHJ1Y3RbTUFYX1RSRUVfQ09E RVNdWzY0XTsKK2V4dGVybiB0cmVlIGludGVnZXJfdHlwZXNbaXRrX25vbmVd OworZXh0ZXJuIHZvaWQgdHJlZV9jb250YWluc19zdHJ1Y3RfY2hlY2tfZmFp bGVkIChjb25zdF90cmVlLAorCQkJCQkgICAgICAgdHJlZV9ub2RlX3N0cnVj dHVyZV9lbnVtLAorCQkJCQkgICAgICAgY29uc3QgY2hhciAqLCBpbnQsCisJ CQkJCSAgICAgICBjb25zdCBjaGFyICopCisgIF9fYXR0cmlidXRlX18gKChf X25vcmV0dXJuX18pKTsKK2lubGluZSB0cmVlCit0cmVlX2NoZWNrICh0cmVl IF9fdCwgY29uc3QgY2hhciAqX19mLCBpbnQgX19sLCBjb25zdCBjaGFyICpf X2csCisJICAgIHRyZWVfY29kZSBfX2MpCit7Cit9CisKK2lubGluZSBjb25z dF90cmVlCitjb250YWluc19zdHJ1Y3RfY2hlY2sgKGNvbnN0X3RyZWUgX190 LAorCQkgICAgICAgY29uc3QgZW51bSB0cmVlX25vZGVfc3RydWN0dXJlX2Vu dW0gX19zLAorCQkgICAgICAgY29uc3QgY2hhciAqX19mLCBpbnQgX19sLCBj b25zdCBjaGFyICpfX2cpCit7CisgIGlmICh0cmVlX2NvbnRhaW5zX3N0cnVj dFsoKGVudW0gdHJlZV9jb2RlKSAoX190KS0+YmFzZS5jb2RlKV1bX19zXSAh PSAxKQorICAgIHRyZWVfY29udGFpbnNfc3RydWN0X2NoZWNrX2ZhaWxlZCAo X190LCBfX3MsIF9fZiwgX19sLCBfX2cpOworfQorCitpbmxpbmUgY29uc3Rf dHJlZQordHJlZV9jbGFzc19jaGVjayAoY29uc3RfdHJlZSBfX3QsIGNvbnN0 IGVudW0gdHJlZV9jb2RlX2NsYXNzIF9fY2xhc3MsCisJCSAgY29uc3QgY2hh ciAqX19mLCBpbnQgX19sLCBjb25zdCBjaGFyICpfX2cpCit7Cit9CisKK3N0 YXRpYyBpbmxpbmUgYm9vbAoraXNfYXR0cmlidXRlX3AgKGNvbnN0IGNoYXIg KmF0dHJfbmFtZSwgY29uc3RfdHJlZSBpZGVudCkKK3sKK30KKworZXh0ZXJu IGludCBpbnRlZ2VyX3plcm9wIChjb25zdF90cmVlKTsKK2V4dGVybiBib29s IHdhcm5pbmcgKGludCwgY29uc3QgY2hhciAqLCAuLi4pCisgIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKK2V4dGVybiB2b2lkCitjaGVj a19mdW5jdGlvbl9hcmd1bWVudHNfcmVjdXJzZSAodm9pZCAoKikodm9pZCAq LCB0cmVlLCB1bnNpZ25lZCBsb25nIGxvbmcpLAorCQkJCSAgdm9pZCAqLCB0 cmVlLCB1bnNpZ25lZCBsb25nIGxvbmcpOworZXh0ZXJuIGJvb2wgb2JqY19z dHJpbmdfcmVmX3R5cGVfcCAodHJlZSk7CitlbnVtCit7CisgIEZNVF9GTEFH X1NDQU5GX0FfS0xVREdFID0gMiwKKyAgRk1UX0ZMQUdfUEFSU0VfQVJHX0NP TlZFUlRfRVhURVJOQUwgPSAyNTYKK307Cit0eXBlZGVmIHN0cnVjdAorewor fQorZm9ybWF0X2ZsYWdfc3BlYzsKK3R5cGVkZWYgc3RydWN0Cit7CisgIGlu dCBmbGFnczsKKyAgdHJlZSAqd2lkdGhfdHlwZTsKK30KK2Zvcm1hdF9raW5k X2luZm87Cit0eXBlZGVmIHN0cnVjdCBhbGxvY19wb29sX2xpc3RfZGVmCit7 Cit9CisgKmFsbG9jX3Bvb2w7CitzdHJ1Y3QgZ2NjX3RhcmdldGNtCit7Cisg IGJvb2wgKCpzdHJpbmdfb2JqZWN0X3JlZl90eXBlX3ApIChjb25zdF90cmVl IHN0cmluZ3JlZik7Cit9CisgOworZXh0ZXJuIHN0cnVjdCBnY2NfdGFyZ2V0 Y20gdGFyZ2V0Y207CitlbnVtIGZvcm1hdF90eXBlCit7CisgIGdjY19vYmpj X3N0cmluZ19mb3JtYXRfdHlwZSwKK307Cit0eXBlZGVmIHN0cnVjdCBmdW5j dGlvbl9mb3JtYXRfaW5mbworeworICBpbnQgZm9ybWF0X3R5cGU7Cit9Citm dW5jdGlvbl9mb3JtYXRfaW5mbzsKK3N0YXRpYyBjb25zdCBmb3JtYXRfa2lu ZF9pbmZvIGZvcm1hdF90eXBlc19vcmlnW10gPSB7IH07CitzdHJ1Y3QgZm9y bWF0X2NoZWNrX2NvbnRleHQgeyB9OworCitzdGF0aWMgY29uc3QgZm9ybWF0 X2tpbmRfaW5mbyAqZm9ybWF0X3R5cGVzID0gZm9ybWF0X3R5cGVzX29yaWc7 CitzdGF0aWMgdm9pZCBjaGVja19mb3JtYXRfaW5mbyAoZnVuY3Rpb25fZm9y bWF0X2luZm8gKiwgdHJlZSk7Cit2b2lkIGNoZWNrX2Zvcm1hdF9hcmcgKHZv aWQgKiwgdHJlZSwgdW5zaWduZWQgbG9uZyBsb25nKTsKKwordm9pZAorY2hl Y2tfZnVuY3Rpb25fZm9ybWF0ICh0cmVlIGF0dHJzLCBpbnQgbmFyZ3MsIHRy ZWUgKiBhcmdhcnJheSkKK3sKKyAgdHJlZSBhOworICBmb3IgKGEgPSBhdHRy czsKKyAgICAgICBhOworICAgICAgICgoY29udGFpbnNfc3RydWN0X2NoZWNr CisJICgoYSksIChUU19DT01NT04pLCAiLi4vLi4vZ2l0LW1hc3Rlci9nY2Mv Yy1mYW1pbHkvYy1mb3JtYXQuYyIsIDEwMDIsCisJICBfX0ZVTkNUSU9OX18p KS0+Y29tbW9uLmNoYWluKSkKKyAgICB7CisgICAgICBpZiAoaXNfYXR0cmli dXRlX3AKKwkgICgiZm9ybWF0IiwKKwkgICAoKHRyZWVfY2hlY2sKKwkgICAg ICgoYSksICIuLi8uLi9naXQtbWFzdGVyL2djYy9jLWZhbWlseS9jLWZvcm1h dC5jIiwgMTAwNCwKKwkgICAgICBfX0ZVTkNUSU9OX18sIChUUkVFX0xJU1Qp KSktPmxpc3QucHVycG9zZSkpKQorCXsKKwkgIGZ1bmN0aW9uX2Zvcm1hdF9p bmZvIGluZm87CisJICB7CisJICAgIHRyZWUgcGFyYW1zID0gKHRyZWUpIF9f bnVsbDsKKwkgICAgY2hlY2tfZm9ybWF0X2luZm8gKCZpbmZvLCBwYXJhbXMp OworCSAgfQorCX0KKyAgICB9Cit9CisKK3N0YXRpYyBib29sCithdm9pZF9k b2xsYXJfbnVtYmVyIChjb25zdCBjaGFyICpmb3JtYXQpCit7CisgIHdoaWxl ICgoX3NjaF9pc3RhYmxlWygqZm9ybWF0KSAmIDB4ZmZdICYgKHVuc2lnbmVk IHNob3J0KSAoX3NjaF9pc2RpZ2l0KSkpCisgICAgZm9ybWF0Kys7CisgIGlm ICgqZm9ybWF0ID09ICckJykKKyAgICB7CisgICAgICB3YXJuaW5nIChPUFRf V2Zvcm1hdF8sCisJICAgICAgICIkIG9wZXJhbmQgbnVtYmVyIHVzZWQgYWZ0 ZXIgZm9ybWF0IHdpdGhvdXQgb3BlcmFuZCBudW1iZXIiKTsKKyAgICB9Cit9 CisKK3N0YXRpYyB2b2lkCitjaGVja19mb3JtYXRfaW5mbyAoZnVuY3Rpb25f Zm9ybWF0X2luZm8gKiBpbmZvLCB0cmVlIHBhcmFtcykKK3sKKyAgZm9ybWF0 X2NoZWNrX2NvbnRleHQgZm9ybWF0X2N0eDsKKyAgdW5zaWduZWQgbG9uZyBs b25nIGFyZ19udW07CisgIHRyZWUgZm9ybWF0X3RyZWU7CisgIGNoZWNrX2Z1 bmN0aW9uX2FyZ3VtZW50c19yZWN1cnNlIChjaGVja19mb3JtYXRfYXJnLCAm Zm9ybWF0X2N0eCwKKwkJCQkgICAgZm9ybWF0X3RyZWUsIGFyZ19udW0pOwor ICBjb25zdCBjaGFyICpmb3JtYXRfY2hhcnM7CisgIGlmIChpbnRlZ2VyX3pl cm9wIChmb3JtYXRfdHJlZSkpCisgICAgeworICAgICAgeworCSgoY29udGFp bnNfc3RydWN0X2NoZWNrCisJICAoKHBhcmFtcyksIChUU19DT01NT04pLAor CSAgICIuLi8uLi9naXQtbWFzdGVyL2djYy9jLWZhbWlseS9jLWZvcm1hdC5j IiwgMTQ0NCwKKwkgICBfX0ZVTkNUSU9OX18pKS0+Y29tbW9uLmNoYWluKTsK KyAgICAgIH0KKyAgICAgIHJldHVybjsKKyAgICB9CisgIGlmICgoKGVudW0g dHJlZV9jb2RlKSAoZm9ybWF0X3RyZWUpLT5iYXNlLmNvZGUpICE9IEFERFJf RVhQUikKKyAgICB7CisgICAgICByZXR1cm47CisgICAgfQorICBpZiAoZm9y bWF0X3R5cGVzW2luZm8tPmZvcm1hdF90eXBlXS5mbGFncyAmIChpbnQpCisg ICAgICBGTVRfRkxBR19QQVJTRV9BUkdfQ09OVkVSVF9FWFRFUk5BTCkKKyAg ICB7CisgICAgICBib29sIG9iamNfc3RyID0gKGluZm8tPmZvcm1hdF90eXBl ID09IGdjY19vYmpjX3N0cmluZ19mb3JtYXRfdHlwZSk7CisgICAgICBpZiAo KChlbnVtIHRyZWVfY29kZSkgKGZvcm1hdF90cmVlKS0+YmFzZS5jb2RlKSAh PSBDT05TVF9ERUNMCisJICB8fAorCSAgISgob2JqY19zdHIKKwkgICAgICYm CisJICAgICBvYmpjX3N0cmluZ19yZWZfdHlwZV9wICgoKGNvbnRhaW5zX3N0 cnVjdF9jaGVjaworCQkJCSAgICAgICAoKGZvcm1hdF90cmVlKSwgKFRTX1RZ UEVEKSwKKwkJCQkJIi4uLy4uL2dpdC1tYXN0ZXIvZ2NjL2MtZmFtaWx5L2Mt Zm9ybWF0LmMiLAorCQkJCQkxNDk4LCBfX0ZVTkNUSU9OX18pKS0+dHlwZWQu dHlwZSkpKQorCSAgICB8fAorCSAgICAoKnRhcmdldGNtLnN0cmluZ19vYmpl Y3RfcmVmX3R5cGVfcCkgKChjb25zdF90cmVlKQorCQkJCQkJICAoKGNvbnRh aW5zX3N0cnVjdF9jaGVjaworCQkJCQkJICAgICgoZm9ybWF0X3RyZWUpLAor CQkJCQkJICAgICAoVFNfVFlQRUQpLAorCQkJCQkJICAgICAiLi4vLi4vZ2l0 LW1hc3Rlci9nY2MvYy1mYW1pbHkvYy1mb3JtYXQuYyIsCisJCQkJCQkgICAg IDE1MDAsCisJCQkJCQkgICAgIF9fRlVOQ1RJT05fXykpLT50eXBlZC4KKwkJ CQkJCSAgIHR5cGUpKSkpCisJeworCX0KKyAgICB9CisgIHsKKyAgfQorICBp ZiAoKCh0cmVlX2NsYXNzX2NoZWNrCisJKCgoKGNvbnRhaW5zX3N0cnVjdF9j aGVjaworCSAgICAoKCgoY29udGFpbnNfc3RydWN0X2NoZWNrCisJCSgoZm9y bWF0X3RyZWUpLCAoVFNfVFlQRUQpLAorCQkgIi4uLy4uL2dpdC1tYXN0ZXIv Z2NjL2MtZmFtaWx5L2MtZm9ybWF0LmMiLCAxNTQ5LAorCQkgX19GVU5DVElP Tl9fKSktPnR5cGVkLnR5cGUpKSwgKFRTX1RZUEVEKSwKKwkgICAgICIuLi8u Li9naXQtbWFzdGVyL2djYy9jLWZhbWlseS9jLWZvcm1hdC5jIiwgMTU0OSwK KwkgICAgIF9fRlVOQ1RJT05fXykpLT50eXBlZC50eXBlKSksICh0Y2NfdHlw ZSksCisJICIuLi8uLi9naXQtbWFzdGVyL2djYy9jLWZhbWlseS9jLWZvcm1h dC5jIiwgMTU0OSwKKwkgX19GVU5DVElPTl9fKSktPnR5cGVfY29tbW9uLm1h aW5fdmFyaWFudCkgIT0gaW50ZWdlcl90eXBlc1tpdGtfY2hhcl0pCisgICAg eworICAgICAgcmV0dXJuOworICAgIH0KKyAgeworICB9CisgIGNvbnN0IGZv cm1hdF9raW5kX2luZm8gKmZraSA9ICZmb3JtYXRfdHlwZXNbaW5mby0+Zm9y bWF0X3R5cGVdOworICB3aGlsZSAoKmZvcm1hdF9jaGFycyAhPSAwKQorICAg IHsKKyAgICAgIHsKKwlpZiAoZmtpLT53aWR0aF90eXBlICE9IF9fbnVsbCAm JiAqZm9ybWF0X2NoYXJzID09ICcqJykKKwkgIHsKKwkgICAgeworCSAgICAg IGlmIChhdm9pZF9kb2xsYXJfbnVtYmVyIChmb3JtYXRfY2hhcnMpKQorCQlp ZiAoYXZvaWRfZG9sbGFyX251bWJlciAoZm9ybWF0X2NoYXJzKSkKKwkJICBy ZXR1cm47CisJICAgIH0KKwkgIH0KKyAgICAgIH0KKyAgICB9Cit9Cg== --------------020404060406050304060503--