From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16927 invoked by alias); 12 Oct 2013 00:32:56 -0000 Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org Received: (qmail 16915 invoked by uid 89); 12 Oct 2013 00:32:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.3 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mout.gmx.net Received: from mout.gmx.net (HELO mout.gmx.net) (212.227.15.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Sat, 12 Oct 2013 00:32:53 +0000 Received: from 3capp-gmx-bs50.server.lan ([172.19.170.103]) by mrigmx.server.lan (mrigmx001) with ESMTP (Nemesis) id 0Lv83w-1VvhuF3DNq-010J9l for ; Sat, 12 Oct 2013 02:32:49 +0200 Received: from [82.212.32.183] by 3capp-gmx-bs50.server.lan with HTTP; Sat Oct 12 02:32:49 CEST 2013 MIME-Version: 1.0 Message-ID: From: coderat@gmx.de To: binutils@sourceware.org Subject: Re: [PATCH] Added FR80 processor support Content-Type: multipart/mixed; boundary=rehcsedm-bc8d3647-10c6-4cae-8764-476968ce55d4 Date: Sat, 12 Oct 2013 00:32:00 -0000 Sensitivity: Normal References: X-UI-Message-Type: mail X-SW-Source: 2013-10/txt/msg00202.txt.bz2 --rehcsedm-bc8d3647-10c6-4cae-8764-476968ce55d4 Content-Type: text/plain; charset=UTF-8 Content-length: 635 Small but important typo fixed. Regards, c > Gesendet: Samstag, 12. Oktober 2013 um 02:13 Uhr > Von: coderat@gmx.de > An: binutils@sourceware.org > Betreff: [PATCH] Added FR80 processor support > > Hi, > > added Fujitsu FR80 processor to last snapshot of binutils, based on FR30 code: > - fix: FR30/FR80 code segement must be aligned to 2 > - implemented FR80 opcodes > - added ELF header flags for FR80 machine > - added GAS command line options -mfr30, -mfr80, --enforce-aligned-data > > After applying the patch you must regenerate CGEN files (make stamp-fr30) and regenerate headers (make headers). > > Best regards, > coderat --rehcsedm-bc8d3647-10c6-4cae-8764-476968ce55d4 Content-Type: text/plain Content-Disposition: attachment; filename=fixed-fr80-binutils.pat Content-Transfer-Encoding: base64 Content-length: 25259 ZGlmZiAtcnVwTiAtLXN0cmlwLXRyYWlsaW5nLWNyIC9jL2JpbnV0aWxzLTIu MjQuNTEvYmZkL2FyY2h1cmVzLmMgL3NyYy9iaW51dGlscy0yLjI0LjUxL2Jm ZC9hcmNodXJlcy5jCi0tLSAvYy9iaW51dGlscy0yLjI0LjUxL2JmZC9hcmNo dXJlcy5jCTIwMTMtMDgtMjcgMDA6MTg6MDYgKzAyMDAKKysrIC9zcmMvYmlu dXRpbHMtMi4yNC41MS9iZmQvYXJjaHVyZXMuYwkyMDEzLTEwLTEyIDAxOjQx OjExICswMjAwCkBAIC0zNTIsNiArMzUyLDcgQEAgREVTQ1JJUFRJT04KIC4j ZGVmaW5lIGJmZF9tYWNoX2FtMzNfMgkzMzIKIC4gIGJmZF9hcmNoX2ZyMzAs CiAuI2RlZmluZSBiZmRfbWFjaF9mcjMwCQkweDQ2NTIzMzMwCisuI2RlZmlu ZSBiZmRfbWFjaF9mcjgwCQkweDQ2NTIzODMwCiAuICBiZmRfYXJjaF9mcnYs CiAuI2RlZmluZSBiZmRfbWFjaF9mcnYJCTEKIC4jZGVmaW5lIGJmZF9tYWNo X2ZydnNpbXBsZQkyCmRpZmYgLXJ1cE4gLS1zdHJpcC10cmFpbGluZy1jciAv Yy9iaW51dGlscy0yLjI0LjUxL2JmZC9jcHUtZnIzMC5jIC9zcmMvYmludXRp bHMtMi4yNC41MS9iZmQvY3B1LWZyMzAuYwotLS0gL2MvYmludXRpbHMtMi4y NC41MS9iZmQvY3B1LWZyMzAuYwkyMDEyLTAxLTMxIDE4OjU0OjM1ICswMTAw CisrKyAvc3JjL2JpbnV0aWxzLTIuMjQuNTEvYmZkL2NwdS1mcjMwLmMJMjAx My0xMC0xMiAwMTo1NjoyMSArMDIwMApAQCAtMjIsMTkgKzIyLDE2IEBACiAj aW5jbHVkZSAiYmZkLmgiCiAjaW5jbHVkZSAibGliYmZkLmgiCiAKLWNvbnN0 IGJmZF9hcmNoX2luZm9fdHlwZSBiZmRfZnIzMF9hcmNoID0KKyNkZWZpbmUg TihudW1iZXIsIHByaW50LCBkZWZhdWx0LCBuZXh0KSAgXAoreyAgMzIsIDMy LCA4LCBiZmRfYXJjaF9mcjMwLCBudW1iZXIsICJmcjMwIiwgcHJpbnQsIDQs IGRlZmF1bHQsIFwKKyAgICAgYmZkX2RlZmF1bHRfY29tcGF0aWJsZSwgYmZk X2RlZmF1bHRfc2NhbiwgYmZkX2FyY2hfZGVmYXVsdF9maWxsLCBuZXh0IH0K KworI2RlZmluZSBORVhUICAgICAgICAgJiBhcmNoX2luZm9fc3RydWN0IFsw XQorCitzdGF0aWMgY29uc3QgYmZkX2FyY2hfaW5mb190eXBlIGFyY2hfaW5m b19zdHJ1Y3RbXSA9CiB7Ci0gIDMyLAkJCQkvKiBiaXRzIHBlciB3b3JkICov Ci0gIDMyLAkJCQkvKiBiaXRzIHBlciBhZGRyZXNzICovCi0gIDgsCQkJCS8q IGJpdHMgcGVyIGJ5dGUgKi8KLSAgYmZkX2FyY2hfZnIzMCwJCS8qIGFyY2hp dGVjdHVyZSAqLwotICBiZmRfbWFjaF9mcjMwLAkJLyogbWFjaGluZSAqLwot ICAiZnIzMCIsCQkJLyogYXJjaGl0ZWN0dXJlIG5hbWUgKi8KLSAgImZyMzAi LAkJCS8qIHByaW50YWJsZSBuYW1lICovCi0gIDQsCQkJCS8qIHNlY3Rpb24g YWxpZ24gcG93ZXIgKi8KLSAgVFJVRSwJCQkJLyogdGhlIGRlZmF1bHQgPyAq LwotICBiZmRfZGVmYXVsdF9jb21wYXRpYmxlLAkvKiBhcmNoaXRlY3R1cmUg Y29tcGFyaXNvbiBmbiAqLwotICBiZmRfZGVmYXVsdF9zY2FuLAkJLyogc3Ry aW5nIHRvIGFyY2hpdGVjdHVyZSBjb252ZXJ0IGZuICovCi0gIGJmZF9hcmNo X2RlZmF1bHRfZmlsbCwJLyogRGVmYXVsdCBmaWxsLiAgKi8KLSAgTlVMTAkJ CQkvKiBuZXh0IGluIGxpc3QgKi8KKyAgTiAoYmZkX21hY2hfZnI4MCwgImZy ODAiLCBGQUxTRSwgTlVMTCkKIH07CisKK2NvbnN0IGJmZF9hcmNoX2luZm9f dHlwZSBiZmRfZnIzMF9hcmNoID0KKyAgTiAoYmZkX21hY2hfZnIzMCwgImZy MzAiLCBUUlVFLCBORVhUKTsKZGlmZiAtcnVwTiAtLXN0cmlwLXRyYWlsaW5n LWNyIC9jL2JpbnV0aWxzLTIuMjQuNTEvYmZkL2VsZjMyLWZyMzAuYyAvc3Jj L2JpbnV0aWxzLTIuMjQuNTEvYmZkL2VsZjMyLWZyMzAuYwotLS0gL2MvYmlu dXRpbHMtMi4yNC41MS9iZmQvZWxmMzItZnIzMC5jCTIwMTMtMDMtMzAgMTE6 MTQ6MTQgKzAxMDAKKysrIC9zcmMvYmludXRpbHMtMi4yNC41MS9iZmQvZWxm MzItZnIzMC5jCTIwMTMtMTAtMTIgMDI6MDg6MDUgKzAyMDAKQEAgLTYxNCw2 ICs2MTQsMTQwIEBAIGZyMzBfZWxmX3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAq b3V0cHV0X2IKICAgcmV0dXJuIFRSVUU7CiB9CiAMCisvKiBTZXQgdGhlIHJp Z2h0IG1hY2hpbmUgbnVtYmVyLiAgKi8KKworc3RhdGljIGJmZF9ib29sZWFu CitmcjMwX2VsZl9vYmplY3RfcCAoYmZkICphYmZkKQoreworICBzd2l0Y2gg KGVsZl9lbGZoZWFkZXIgKGFiZmQpLT5lX2ZsYWdzICYgRUZfRlIzMF9BUkNI KQorICAgIHsKKyAgICBkZWZhdWx0OgorICAgIGNhc2UgRV9GUjMwX0FSQ0g6 CisgICAgICAgICh2b2lkKSBiZmRfZGVmYXVsdF9zZXRfYXJjaF9tYWNoIChh YmZkLCBiZmRfYXJjaF9mcjMwLCBiZmRfbWFjaF9mcjMwKTsKKyAgICAgICAg YnJlYWs7CisgICAgY2FzZSBFX0ZSODBfQVJDSDoKKyAgICAgICAgKHZvaWQp IGJmZF9kZWZhdWx0X3NldF9hcmNoX21hY2ggKGFiZmQsIGJmZF9hcmNoX2Zy MzAsIGJmZF9tYWNoX2ZyODApOworICAgICAgICBicmVhazsKKyAgICB9Cisg IHJldHVybiBUUlVFOworfQorCisvKiBTdG9yZSB0aGUgbWFjaGluZSBudW1i ZXIgaW4gdGhlIGZsYWdzIGZpZWxkLiAgKi8KKworc3RhdGljIHZvaWQKK2Zy MzBfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcgKGJmZCAqYWJmZCwKKwkJ CQkgYmZkX2Jvb2xlYW4gbGlua2VyIEFUVFJJQlVURV9VTlVTRUQpCit7Cisg IGVsZl9lbGZoZWFkZXIgKGFiZmQpLT5lX2ZsYWdzICY9ICh+RUZfRlIzMF9B UkNIKTsKKyAgZWxmX2VsZmhlYWRlciAoYWJmZCktPmVfZmxhZ3MgfD0KKyAg ICAgICAgICAgICAgICBmcjMwX2VsZl9nZXRfZmxhZ3NfZnJvbV9tYWNoIChi ZmRfZ2V0X21hY2ggKGFiZmQpKTsKK30KKworLyogRnVuY3Rpb24gdG8ga2Vl cCBGUjMwIHNwZWNpZmljIGZpbGUgZmxhZ3MuICAqLworCitzdGF0aWMgYmZk X2Jvb2xlYW4KK2ZyMzBfZWxmX3NldF9wcml2YXRlX2ZsYWdzIChiZmQgKmFi ZmQsIGZsYWd3b3JkIGZsYWdzKQoreworICBCRkRfQVNTRVJUICghZWxmX2Zs YWdzX2luaXQgKGFiZmQpCisJICAgICAgfHwgZWxmX2VsZmhlYWRlciAoYWJm ZCktPmVfZmxhZ3MgPT0gZmxhZ3MpOworCisgIGVsZl9lbGZoZWFkZXIgKGFi ZmQpLT5lX2ZsYWdzID0gZmxhZ3M7CisgIGVsZl9mbGFnc19pbml0IChhYmZk KSA9IFRSVUU7CisgIHJldHVybiBUUlVFOworfQorCisvKiBNZXJnZSBiYWNr ZW5kIHNwZWNpZmljIGRhdGEgZnJvbSBhbiBvYmplY3QgZmlsZSB0byB0aGUg b3V0cHV0CisgICBvYmplY3QgZmlsZSB3aGVuIGxpbmtpbmcuICAqLworCitz dGF0aWMgYmZkX2Jvb2xlYW4KK2ZyMzBfZWxmX21lcmdlX3ByaXZhdGVfYmZk X2RhdGEgKGJmZCAqaWJmZCwgYmZkICpvYmZkKQoreworICBmbGFnd29yZCBv dXRfZmxhZ3M7CisgIGZsYWd3b3JkIGluX2ZsYWdzOworCisgIGlmICggICBi ZmRfZ2V0X2ZsYXZvdXIgKGliZmQpICE9IGJmZF90YXJnZXRfZWxmX2ZsYXZv dXIKKyAgICAgIHx8IGJmZF9nZXRfZmxhdm91ciAob2JmZCkgIT0gYmZkX3Rh cmdldF9lbGZfZmxhdm91cikKKyAgICByZXR1cm4gVFJVRTsKKworICBpbl9m bGFncyAgPSBlbGZfZWxmaGVhZGVyIChpYmZkKS0+ZV9mbGFnczsKKyAgb3V0 X2ZsYWdzID0gZWxmX2VsZmhlYWRlciAob2JmZCktPmVfZmxhZ3M7CisKKyAg aWYgKCEgZWxmX2ZsYWdzX2luaXQgKG9iZmQpKQorICAgIHsKKyAgICAgIC8q IElmIHRoZSBpbnB1dCBpcyB0aGUgZGVmYXVsdCBhcmNoaXRlY3R1cmUgdGhl biBkbyBub3QKKwkgYm90aGVyIHNldHRpbmcgdGhlIGZsYWdzIGZvciB0aGUg b3V0cHV0IGFyY2hpdGVjdHVyZSwKKwkgaW5zdGVhZCBhbGxvdyBmdXR1cmUg bWVyZ2VzIHRvIGRvIHRoaXMuICBJZiBubyBmdXR1cmUKKwkgbWVyZ2VzIGV2 ZXIgc2V0IHRoZXNlIGZsYWdzIHRoZW4gdGhleSB3aWxsIHJldGFpbiB0aGVp cgorCSB1bml0aWFsaXNlZCB2YWx1ZXMsIHdoaWNoIHN1cnByaXNlIHN1cnBy aXNlLCBjb3JyZXNwb25kCisJIHRvIHRoZSBkZWZhdWx0IHZhbHVlcy4gICov CisgICAgICBpZiAoYmZkX2dldF9hcmNoX2luZm8gKGliZmQpLT50aGVfZGVm YXVsdCkKKwlyZXR1cm4gVFJVRTsKKworICAgICAgZWxmX2ZsYWdzX2luaXQg KG9iZmQpID0gVFJVRTsKKyAgICAgIGVsZl9lbGZoZWFkZXIgKG9iZmQpLT5l X2ZsYWdzID0gaW5fZmxhZ3M7CisKKyAgICAgIGlmIChiZmRfZ2V0X2FyY2gg KG9iZmQpID09IGJmZF9nZXRfYXJjaCAoaWJmZCkKKwkgICYmIGJmZF9nZXRf YXJjaF9pbmZvIChvYmZkKS0+dGhlX2RlZmF1bHQpCisJcmV0dXJuIGJmZF9z ZXRfYXJjaF9tYWNoIChvYmZkLCBiZmRfZ2V0X2FyY2ggKGliZmQpLAorCQkJ CSAgYmZkX2dldF9tYWNoIChpYmZkKSk7CisKKyAgICAgIHJldHVybiBUUlVF OworICAgIH0KKworICAvKiBDaGVjayBmbGFnIGNvbXBhdGliaWxpdHkuICAq LworICBpZiAoaW5fZmxhZ3MgPT0gb3V0X2ZsYWdzKQorICAgIHJldHVybiBU UlVFOworCisgIGlmICgoaW5fZmxhZ3MgJiBFRl9GUjMwX0FSQ0gpICE9IChv dXRfZmxhZ3MgJiBFRl9GUjMwX0FSQ0gpKQorICAgIHsKKwkgICgqX2JmZF9l cnJvcl9oYW5kbGVyKQorCSAgICAoXygiJUI6IEluc3RydWN0aW9uIHNldCBt aXNtYXRjaCB3aXRoIHByZXZpb3VzIG1vZHVsZXMiKSwgaWJmZCk7CisKKwkg IGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9iYWRfdmFsdWUpOworCSAgcmV0 dXJuIEZBTFNFOworICAgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworLyog RGlzcGxheSB0aGUgZmxhZ3MgZmllbGQuICAqLworCitzdGF0aWMgYmZkX2Jv b2xlYW4KK2ZyMzBfZWxmX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEgKGJmZCAq YWJmZCwgdm9pZCAqIHB0cikKK3sKKyAgRklMRSAqIGZpbGUgPSAoRklMRSAq KSBwdHI7CisKKyAgQkZEX0FTU0VSVCAoYWJmZCAhPSBOVUxMICYmIHB0ciAh PSBOVUxMKTsKKworICBfYmZkX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRh IChhYmZkLCBwdHIpOworCisgIGZwcmludGYgKGZpbGUsIF8oInByaXZhdGUg ZmxhZ3MgPSAlbHgiKSwgZWxmX2VsZmhlYWRlciAoYWJmZCktPmVfZmxhZ3Mp OworCisgIHN3aXRjaCAoZWxmX2VsZmhlYWRlciAoYWJmZCktPmVfZmxhZ3Mg JiBFRl9GUjMwX0FSQ0gpCisgICAgeworICAgIGRlZmF1bHQ6CisgICAgY2Fz ZSBFX0ZSMzBfQVJDSDogIGZwcmludGYgKGZpbGUsIF8oIjogZnIzMCBpbnN0 cnVjdGlvbnMiKSk7ICBicmVhazsKKyAgICBjYXNlIEVfRlI4MF9BUkNIOiBm cHJpbnRmIChmaWxlLCBfKCI6IGZyODAgaW5zdHJ1Y3Rpb25zIikpOyBicmVh azsKKyAgICB9CisKKyAgZnB1dGMgKCdcbicsIGZpbGUpOworCisgIHJldHVy biBUUlVFOworfQorCitpbnQgZnIzMF9lbGZfZ2V0X2ZsYWdzX2Zyb21fbWFj aCAodW5zaWduZWQgbG9uZyBtYWNoKQoreworICBpbnQgdmFsOworCisgIHN3 aXRjaCAobWFjaCkKKyAgICB7CisgICAgZGVmYXVsdDoKKyAgICBjYXNlIGJm ZF9tYWNoX2ZyMzA6IHZhbCA9IEVfRlIzMF9BUkNIOyBicmVhazsKKyAgICBj YXNlIGJmZF9tYWNoX2ZyODA6IHZhbCA9IEVfRlI4MF9BUkNIOyBicmVhazsK KyAgICB9CisgICByZXR1cm4gdmFsOworfQorCiAvKiBSZXR1cm4gdGhlIHNl Y3Rpb24gdGhhdCBzaG91bGQgYmUgbWFya2VkIGFnYWluc3QgR0MgZm9yIGEg Z2l2ZW4KICAgIHJlbG9jYXRpb24uICAqLwogCkBAIC03MTcsNiArODUxLDEy IEBAIGZyMzBfZWxmX2NoZWNrX3JlbG9jcyAoYmZkICphYmZkLAogI2RlZmlu ZSBlbGZfYmFja2VuZF9jYW5fZ2Nfc2VjdGlvbnMJCTEKICNkZWZpbmUgZWxm X2JhY2tlbmRfcmVsYV9ub3JtYWwJCQkxCiAKKyNkZWZpbmUgZWxmX2JhY2tl bmRfb2JqZWN0X3AJCQlmcjMwX2VsZl9vYmplY3RfcAorI2RlZmluZSBlbGZf YmFja2VuZF9maW5hbF93cml0ZV9wcm9jZXNzaW5nIAlmcjMwX2VsZl9maW5h bF93cml0ZV9wcm9jZXNzaW5nCisjZGVmaW5lIGJmZF9lbGYzMl9iZmRfbWVy Z2VfcHJpdmF0ZV9iZmRfZGF0YSAJZnIzMF9lbGZfbWVyZ2VfcHJpdmF0ZV9i ZmRfZGF0YQorI2RlZmluZSBiZmRfZWxmMzJfYmZkX3NldF9wcml2YXRlX2Zs YWdzCQkgICAgZnIzMF9lbGZfc2V0X3ByaXZhdGVfZmxhZ3MKKyNkZWZpbmUg YmZkX2VsZjMyX2JmZF9wcmludF9wcml2YXRlX2JmZF9kYXRhCWZyMzBfZWxm X3ByaW50X3ByaXZhdGVfYmZkX2RhdGEKKwogI2RlZmluZSBiZmRfZWxmMzJf YmZkX3JlbG9jX3R5cGVfbG9va3VwCQlmcjMwX3JlbG9jX3R5cGVfbG9va3Vw CiAjZGVmaW5lIGJmZF9lbGYzMl9iZmRfcmVsb2NfbmFtZV9sb29rdXAJZnIz MF9yZWxvY19uYW1lX2xvb2t1cAogCmRpZmYgLXJ1cE4gLS1zdHJpcC10cmFp bGluZy1jciAvYy9iaW51dGlscy0yLjI0LjUxL2NwdS9mcjMwLmNwdSAvc3Jj L2JpbnV0aWxzLTIuMjQuNTEvY3B1L2ZyMzAuY3B1Ci0tLSAvYy9iaW51dGls cy0yLjI0LjUxL2NwdS9mcjMwLmNwdQkyMDExLTA4LTIyIDE3OjI1OjAwICsw MjAwCisrKyAvc3JjL2JpbnV0aWxzLTIuMjQuNTEvY3B1L2ZyMzAuY3B1CTIw MTMtMTAtMTEgMTY6Mjg6MDMgKzAyMDAKQEAgLTMxLDcgKzMxLDcgQEAKICAg KGNvbW1lbnQgIkZ1aml0c3UgRlIzMCIpCiAgIChkZWZhdWx0LWFsaWdubWVu dCBmb3JjZWQpCiAgIChpbnNuLWxzYjA/ICNmKQotICAobWFjaHMgZnIzMCkK KyAgKG1hY2hzIGZyMzAgZnI4MCkKICAgKGlzYXMgZnIzMCkKICkKIApAQCAt NTMsMTEgKzUzLDI3IEBACiAgICh3b3JkLWJpdHNpemUgMzIpCiApCiAKKyhk ZWZpbmUtY3B1CisgIDsgY3B1IG5hbWVzIG11c3QgYmUgZGlzdGluY3QgZnJv bSB0aGUgYXJjaGl0ZWN0dXJlIG5hbWUgYW5kIG1hY2hpbmUgbmFtZXMuCisg IDsgVGhlICJiIiBzdWZmaXggc3RhbmRzIGZvciAiYmFzZSIgYW5kIGlzIHRo ZSBjb252ZW50aW9uLgorICA7IFRoZSAiZiIgc3VmZml4IHN0YW5kcyBmb3Ig ImZhbWlseSIgYW5kIGlzIHRoZSBjb252ZW50aW9uLgorICAobmFtZSBmcjgw ZikKKyAgKGNvbW1lbnQgIkZ1aml0c3UgRlI4MCBmYW1pbHkiKQorICAoZW5k aWFuIGJpZykKKyAgKHdvcmQtYml0c2l6ZSAzMikKKykKKwogKGRlZmluZS1t YWNoCiAgIChuYW1lIGZyMzApCiAgIChjb21tZW50ICJHZW5lcmljIEZSMzAg Y3B1IikKICAgKGNwdSBmcjMwYmYpCiApCisKKyhkZWZpbmUtbWFjaAorICAo bmFtZSBmcjgwKQorICAoY29tbWVudCAiRlI4MCBjcHUiKQorICAoY3B1IGZy ODBmKQorKQogDAogOyBNb2RlbCBkZXNjcmlwdGlvbnMuCiA7CkBAIC0xMjAs NiArMTM2LDY2IEBACiAJKCkgOyBwcm9maWxlIGFjdGlvbiAoZGVmYXVsdCkK IAkpCiApCisKKyhkZWZpbmUtbW9kZWwKKyAgKG5hbWUgZnI4MCkgKGNvbW1l bnQgImZyODAiKSAoYXR0cnMpCisgIChtYWNoIGZyODApCisKKyAgKHBpcGVs aW5lIGFsbCAiIiAoKSAoKGZldGNoKSAoZGVjb2RlKSAoZXhlY3V0ZSkgKHdy aXRlYmFjaykpKQorCisgIDsgYHN0YXRlJyBpcyBhIGxpc3Qgb2YgdmFyaWFi bGVzIGZvciByZWNvcmRpbmcgbW9kZWwgc3RhdGUKKyAgKHN0YXRlCisgICA7 IGJpdCBtYXNrIG9mIGgtZ3IgcmVnaXN0ZXJzIGxvYWRlZCBmcm9tIG1lbW9y eSBieSBwcmV2aW91cyBpbnNuCisgICAobG9hZC1yZWdzIFVJTlQpCisgICA7 IGJpdCBtYXNrIG9mIGgtZ3IgcmVnaXN0ZXJzIGxvYWRlZCBmcm9tIG1lbW9y eSBieSBjdXJyZW50IGluc24KKyAgIChsb2FkLXJlZ3MtcGVuZGluZyBVSU5U KQorICAgKQorCisgICh1bml0IHUtZXhlYyAiRXhlY3V0aW9uIFVuaXQiICgp CisJMSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKFJpIElOVCAt MSkgKFJqIElOVCAtMSkpIDsgaW5wdXRzCisJKChSaSBJTlQgLTEpKSA7IG91 dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQorCSkKKyAg KHVuaXQgdS1jdGkgIkJyYW5jaCBVbml0IiAoKQorCTEgMSA7IGlzc3VlIGRv bmUKKwkoKSA7IHN0YXRlCisJKChSaSBJTlQgLTEpKSA7IGlucHV0cworCSgo cGMpKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0 KQorCSkKKyAgKHVuaXQgdS1sb2FkICJNZW1vcnkgTG9hZCBVbml0IiAoKQor CTEgMSA7IGlzc3VlIGRvbmUKKwkoKSA7IHN0YXRlCisJKChSaiBJTlQgLTEp CisJIDsobGQtbWVtIEFJKQorCSApIDsgaW5wdXRzCisJKChSaSBJTlQgLTEp KSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9uIChkZWZhdWx0KQor CSkKKyAgKHVuaXQgdS1zdG9yZSAiTWVtb3J5IFN0b3JlIFVuaXQiICgpCisJ MSAxIDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKFJpIElOVCAtMSkg KFJqIElOVCAtMSkpIDsgaW5wdXRzCisJKCkgOyAoKHN0LW1lbSBBSSkpIDsg b3V0cHV0cworCSgpIDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQor ICAodW5pdCB1LWxkbSAiTERNIE1lbW9yeSBMb2FkIFVuaXQiICgpCisJMSAx IDsgaXNzdWUgZG9uZQorCSgpIDsgc3RhdGUKKwkoKHJlZ2xpc3QgSU5UKSkg OyBpbnB1dHMKKwkoKSA7IG91dHB1dHMKKwkoKSA7IHByb2ZpbGUgYWN0aW9u IChkZWZhdWx0KQorCSkKKyAgKHVuaXQgdS1zdG0gIlNUTSBNZW1vcnkgU3Rv cmUgVW5pdCIgKCkKKwkxIDEgOyBpc3N1ZSBkb25lCisJKCkgOyBzdGF0ZQor CSgocmVnbGlzdCBJTlQpKSA7IGlucHV0cworCSgpIDsgb3V0cHV0cworCSgp IDsgcHJvZmlsZSBhY3Rpb24gKGRlZmF1bHQpCisJKQorKQogDAogOyBUaGUg aW5zdHJ1Y3Rpb24gZmV0Y2gvZXhlY3V0ZSBjeWNsZS4KIDsKQEAgLTE1NjIs NyArMTYzOCw3IEBACiA7CiAoZG5pIGxkcmVzCiAgICAgICJsZHJlcyBAUmkr LCN1NCIKLSAgICAgKCkKKyAgICAgKChNQUNIIGZyMzApKQogICAgICAibGRy ZXMgQCRSaSssJHU0IgogICAgICAoKyBPUDFfQiBPUDJfQyB1NCBSaSkKICAg ICAgKHNldCBSaSAoYWRkIFJpIChjb25zdCA0KSkpCkBAIC0xNTcxLDcgKzE2 NDcsNyBAQAogCiAoZG5pIHN0cmVzCiAgICAgICJzdHJlcyAjdTQsQFJpKyIK LSAgICAgKCkKKyAgICAgKChNQUNIIGZyMzApKQogICAgICAic3RyZXMgJHU0 LEAkUmkrIgogICAgICAoKyBPUDFfQiBPUDJfRCB1NCBSaSkKICAgICAgKHNl dCBSaSAoYWRkIFJpIChjb25zdCA0KSkpCkBAIC0xNTgzLDcgKzE2NTksNyBA QAogKGRlZmluZS1wbWFjcm8gKGNvcC1zdHViIG5hbWUgaW5zbiBvcGMxIG9w YzIgb3BjMyBhcmcxIGFyZzIpCiAgIChkbmkgbmFtZQogICAgICAgICguc3Ry IGluc24gIiB1NGMsY2NjLENSaiwiIGFyZzEgIiwiIGFyZzIpCi0gICAgICAg KE5PVC1JTi1ERUxBWS1TTE9UKQorICAgICAgIChOT1QtSU4tREVMQVktU0xP VCAoTUFDSCBmcjMwKSkKICAgICAgICAoLnN0ciBpbnNuICIgJHU0YywkY2Nj LCQiIGFyZzEgIiwkIiBhcmcyKQogICAgICAgICgrIG9wYzEgb3BjMiBvcGMz IHU0YyBjY2MgYXJnMSBhcmcyKQogICAgICAgIChub3ApIDsgU1RVQgpAQCAt MTg1OSwzICsxOTM1LDIxIEBACiAJICAgICAgIChzZXQgKG1lbSBVUUkgUmop IHRtcCkpCiAgICAgICgoZnIzMC0xICh1bml0IHUtbG9hZCkgKHVuaXQgdS1z dG9yZSkpKQogKQorCis7IEZJWE1FOiBiaXQgc2VhcmNoIGluc25zIGFzIHN0 dWJzIGZvciBub3csIGJlY2F1c2Ugb2YgbGFjayBpbnRlZ2VyLWxlbmd0aAor OyBmdW5jdGlvbiBpbiBydHguCis7CisoZGVmaW5lLXBtYWNybyAoc3JjaC1z dHViIG5hbWUgb3BjMSBvcGMyIG9wYzMpCisgIChkbmkgbmFtZQorICAgICAg ICguc3RyIG5hbWUgIiBSaSIpCisgICAgICAgKChNQUNIIGZyODApKQorICAg ICAgICguc3RyIG5hbWUgIiAkUmkiKQorICAgICAgICgrIG9wYzEgb3BjMiBv cGMzIFJpKQorICAgICAgIChub3ApIDsgU1RVQgorICAgICAgICgpCisgICkK KykKKworKHNyY2gtc3R1YiBzcmNoMCBPUDFfOSBPUDJfNyBPUDNfQykKKyhz cmNoLXN0dWIgc3JjaDEgT1AxXzkgT1AyXzcgT1AzX0QpCisoc3JjaC1zdHVi IHNyY2hjIE9QMV85IE9QMl83IE9QM19FKQpkaWZmIC1ydXBOIC0tc3RyaXAt dHJhaWxpbmctY3IgL2MvYmludXRpbHMtMi4yNC41MS9jcHUvZnIzMC5vcGMg L3NyYy9iaW51dGlscy0yLjI0LjUxL2NwdS9mcjMwLm9wYwotLS0gL2MvYmlu dXRpbHMtMi4yNC41MS9jcHUvZnIzMC5vcGMJMjAxMS0wOC0yMiAxNzoyNTow MCArMDIwMAorKysgL3NyYy9iaW51dGlscy0yLjI0LjUxL2NwdS9mcjMwLm9w YwkyMDEzLTEwLTExIDE2OjEwOjEwICswMjAwCkBAIC0zNywxNCArMzcsMzYg QEAKIAwKIC8qIC0tIG9wYy5oICovCiAKKy8qIENoZWNrIGFwcGxpY2FiaWxp dHkgb2YgaW5zdHJ1Y3Rpb25zIGFnYWluc3QgbWFjaGluZXMuICAqLworI2Rl ZmluZSBDR0VOX1ZBTElEQVRFX0lOU05fU1VQUE9SVEVECisKIC8qID8/PyBU aGlzIGNhbiBiZSBpbXByb3ZlZCB1cG9uLiAgKi8KICN1bmRlZiAgQ0dFTl9E SVNfSEFTSF9TSVpFCiAjZGVmaW5lIENHRU5fRElTX0hBU0hfU0laRSAxNgog I3VuZGVmICBDR0VOX0RJU19IQVNICiAjZGVmaW5lIENHRU5fRElTX0hBU0go YnVmZmVyLCB2YWx1ZSkgKCgodW5zaWduZWQgY2hhciAqKSAoYnVmZmVyKSlb MF0gPj4gNCkKIAorZXh0ZXJuIGludCBmcjMwX2NnZW5faW5zbl9zdXBwb3J0 ZWQgKENHRU5fQ1BVX0RFU0MsIGNvbnN0IENHRU5fSU5TTiAqKTsKKwogLyog LS0gKi8KIAwKKy8qIC0tIG9wYy5jICovCisKKy8qIFNwZWNpYWwgY2hlY2sg dG8gZW5zdXJlIHRoYXQgaW5zdHJ1Y3Rpb24gZXhpc3RzIGZvciBnaXZlbiBt YWNoaW5lLiAgKi8KKworaW50CitmcjMwX2NnZW5faW5zbl9zdXBwb3J0ZWQg KENHRU5fQ1BVX0RFU0MgY2QsIGNvbnN0IENHRU5fSU5TTiAqaW5zbikKK3sK KyAgaW50IG1hY2hzID0gQ0dFTl9JTlNOX0FUVFJfVkFMVUUgKGluc24sIENH RU5fSU5TTl9NQUNIKTsKKworICAvKiBObyBtYWNoIGF0dHJpYnV0ZT8gIEFz c3VtZSBpdCdzIHN1cHBvcnRlZCBmb3IgYWxsIG1hY2hzLiAgKi8KKyAgaWYg KG1hY2hzID09IDApCisgICAgcmV0dXJuIDE7CisKKyAgcmV0dXJuIChtYWNo cyAmIGNkLT5tYWNocykgIT0gMDsKK30KKworDAogLyogLS0gYXNtLmMgKi8K IC8qIEhhbmRsZSByZWdpc3RlciBsaXN0cyBmb3IgTERNeCBhbmQgU1RNeC4g ICovCiAKZGlmZiAtcnVwTiAtLXN0cmlwLXRyYWlsaW5nLWNyIC9jL2JpbnV0 aWxzLTIuMjQuNTEvZ2FzL2NvbmZpZy90Yy1mcjMwLmMgL3NyYy9iaW51dGls cy0yLjI0LjUxL2dhcy9jb25maWcvdGMtZnIzMC5jCi0tLSAvYy9iaW51dGls cy0yLjI0LjUxL2dhcy9jb25maWcvdGMtZnIzMC5jCTIwMDktMDctMjQgMTM6 NDU6MDAgKzAyMDAKKysrIC9zcmMvYmludXRpbHMtMi4yNC41MS9nYXMvY29u ZmlnL3RjLWZyMzAuYwkyMDEzLTEwLTExIDE2OjQ0OjI1ICswMjAwCkBAIC0y Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAib3Bjb2Rlcy9mcjMwLWRlc2MuaCIK ICNpbmNsdWRlICJvcGNvZGVzL2ZyMzAtb3BjLmgiCiAjaW5jbHVkZSAiY2dl bi5oIgorI2luY2x1ZGUgImVsZi9mcjMwLmgiCiAKIC8qIFN0cnVjdHVyZSB0 byBob2xkIGFsbCBvZiB0aGUgZGlmZmVyZW50IGNvbXBvbmVudHMgZGVzY3Jp YmluZwogICAgYW4gaW5kaXZpZHVhbCBpbnN0cnVjdGlvbi4gICovCkBAIC01 NCwxMiArNTUsNTMgQEAgY29uc3QgY2hhciBsaW5lX2NvbW1lbnRfY2hhcnNb XSAgID0gIiMiOwogY29uc3QgY2hhciBsaW5lX3NlcGFyYXRvcl9jaGFyc1td ID0gInwiOwogY29uc3QgY2hhciBFWFBfQ0hBUlNbXSAgICAgICAgICAgID0g ImVFIjsKIGNvbnN0IGNoYXIgRkxUX0NIQVJTW10gICAgICAgICAgICA9ICJk RCI7CisKK3N0YXRpYyBpbnQgZW5hYmxlX2ZyODAgPSAwOyAvKiBEZWZhdWx0 IHRvIEZSMzAuICAqLworCisvKiBjaGVjayBkYXRhIGFsaWdubWVudCBhbmQg ZGlzcGxheSBwcm9ibGVtcy4gICovCitzdGF0aWMgaW50IGVuZm9yY2VfYWxp Z25lZF9kYXRhID0gMDsKKworDAorc3RydWN0Cit7CisgIGVudW0gYmZkX2Fy Y2hpdGVjdHVyZSBiZmRfbWFjaDsKKyAgaW50IG1hY2hfZmxhZ3M7Cit9IG1h Y2hfdGFibGVbXSA9Cit7CisgIHsgYmZkX21hY2hfZnIzMCwgICgxPDxNQUNI X0ZSMzApIH0sCisgIHsgYmZkX21hY2hfZnI4MCwgKDE8PE1BQ0hfRlI4MCkg fQorfTsKKworc3RhdGljIHZvaWQKK2FsbG93X2ZyODAgKGludCBvbikKK3sK KyAgZW5hYmxlX2ZyODAgPSBvbjsKKworICAvKiB0aGVzZSBzZXR0aW5ncyBh cmUgZG9uZSBpZiBvcHRpb24gY29tZXMgaW4gdGhlIG1pZGRsZS4gICovCisg IGlmIChzdGRvdXRwdXQgIT0gTlVMTCkKKyAgICB7CisgICAgICBpZiAoIWJm ZF9zZXRfYXJjaF9tYWNoIChzdGRvdXRwdXQsIFRBUkdFVF9BUkNILCBtYWNo X3RhYmxlW29uXS5iZmRfbWFjaCkpCisgICAgICAgICAgYXNfd2FybiAoXygi Y291bGQgbm90IHNldCBhcmNoaXRlY3R1cmUgYW5kIG1hY2hpbmUiKSk7Cisg ICAgfQorICBpZiAoZ2FzX2NnZW5fY3B1X2Rlc2MgIT0gTlVMTCkKKyAgICBn YXNfY2dlbl9jcHVfZGVzYy0+bWFjaHMgPSBtYWNoX3RhYmxlW29uXS5tYWNo X2ZsYWdzOworfQogDAogI2RlZmluZSBGUjMwX1NIT1JUT1BUUyAiIgogY29u c3QgY2hhciAqIG1kX3Nob3J0b3B0cyA9IEZSMzBfU0hPUlRPUFRTOwogCitl bnVtIG1kX29wdGlvbl9lbnVtcworeworICBPUFRJT05fRlIzMCA9IE9QVElP Tl9NRF9CQVNFLAorICBPUFRJT05fRlI4MCwKKyAgT1BUSU9OX0VORk9SQ0Vf QUxJR05FRF9EQVRBCit9OworCiBzdHJ1Y3Qgb3B0aW9uIG1kX2xvbmdvcHRz W10gPQogeworICB7Im1mcjMwIiwgIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRJ T05fRlIzMH0sCisgIHsibWZyODAiLCBub19hcmd1bWVudCwgTlVMTCwgT1BU SU9OX0ZSODB9LAorICB7ImVuZm9yY2UtYWxpZ25lZC1kYXRhIiwgbm9fYXJn dW1lbnQsIE5VTEwsIE9QVElPTl9FTkZPUkNFX0FMSUdORURfREFUQX0sCiAg IHtOVUxMLCBub19hcmd1bWVudCwgTlVMTCwgMH0KIH07CiBzaXplX3QgbWRf bG9uZ29wdHNfc2l6ZSA9IHNpemVvZiAobWRfbG9uZ29wdHMpOwpAQCAtNzAs NiArMTEyLDE1IEBAIG1kX3BhcnNlX29wdGlvbiAoaW50IGMgQVRUUklCVVRF X1VOVVNFRCwKIHsKICAgc3dpdGNoIChjKQogICAgIHsKKyAgICBjYXNlIE9Q VElPTl9GUjMwOgorICAgICAgYWxsb3dfZnI4MCAoMCk7CisgICAgICBicmVh azsKKyAgICBjYXNlIE9QVElPTl9GUjgwOgorICAgICAgYWxsb3dfZnI4MCAo MSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIE9QVElPTl9FTkZPUkNFX0FM SUdORURfREFUQToKKyAgICAgIGVuZm9yY2VfYWxpZ25lZF9kYXRhID0gMTsK KyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICByZXR1cm4gMDsK ICAgICB9CkBAIC04MCwxMiArMTMxLDIxIEBAIHZvaWQKIG1kX3Nob3dfdXNh Z2UgKEZJTEUgKiBzdHJlYW0pCiB7CiAgIGZwcmludGYgKHN0cmVhbSwgXygi IEZSMzAgc3BlY2lmaWMgY29tbWFuZCBsaW5lIG9wdGlvbnM6XG4iKSk7CisK KyAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCisgIC1tZnIzMCAgICAgICAgICAg ICAgICAgICBkaXNhYmxlIHN1cHBvcnQgZm9yIHRoZSBmcjgwIGluc3RydWN0 aW9uIHNldFxuIikpOworICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKKyAgLW1m cjgwICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgdGhlIGZyODAgaW5zdHJ1 Y3Rpb24gc2V0XG4iKSk7CisgIGZwcmludGYgKHN0cmVhbSwgXygiXAorICAt LWVuZm9yY2UtYWxpZ25lZC1kYXRhICAgY2hlY2sgZGF0YSBwbGFjZW1lbnQg dG8gYmUgYWxpZ25lZCBjb3JyZWN0bHlcbiIpKTsKIH0KIAogLyogVGhlIHRh cmdldCBzcGVjaWZpYyBwc2V1ZG8tb3BzIHdoaWNoIHdlIHN1cHBvcnQuICAq LwogY29uc3QgcHNldWRvX3R5cGVTIG1kX3BzZXVkb190YWJsZVtdID0KIHsK ICAgeyAid29yZCIsCWNvbnMsCQk0IH0sCisgIHsgIm1mcjMwIiwgYWxsb3df ZnI4MCwJMCB9LAorICB7ICJtZnI4MCIsIGFsbG93X2ZyODAsCTEgfSwKICAg eyBOVUxMLCAJTlVMTCwgCQkwIH0KIH07CiAKQEAgLTk2LDcgKzE1Niw4IEBA IG1kX2JlZ2luICh2b2lkKQogICAvKiBJbml0aWFsaXplIHRoZSBgY2dlbicg aW50ZXJmYWNlLiAgKi8KIAogICAvKiBTZXQgdGhlIG1hY2hpbmUgbnVtYmVy IGFuZCBlbmRpYW4uICAqLwotICBnYXNfY2dlbl9jcHVfZGVzYyA9IGZyMzBf Y2dlbl9jcHVfb3BlbiAoQ0dFTl9DUFVfT1BFTl9NQUNIUywgMCwKKyAgZ2Fz X2NnZW5fY3B1X2Rlc2MgPSBmcjMwX2NnZW5fY3B1X29wZW4gKENHRU5fQ1BV X09QRU5fTUFDSFMsCisgICAgICAgICAgICAgICAgICAgICAgbWFjaF90YWJs ZVtlbmFibGVfZnI4MF0ubWFjaF9mbGFncywKIAkJCQkJICBDR0VOX0NQVV9P UEVOX0VORElBTiwKIAkJCQkJICBDR0VOX0VORElBTl9CSUcsCiAJCQkJCSAg Q0dFTl9DUFVfT1BFTl9FTkQpOwpAQCAtMTA0LDYgKzE2NSwxMSBAQCBtZF9i ZWdpbiAodm9pZCkKIAogICAvKiBUaGlzIGlzIGEgY2FsbGJhY2sgZnJvbSBj Z2VuIHRvIGdhcyB0byBwYXJzZSBvcGVyYW5kcy4gICovCiAgIGNnZW5fc2V0 X3BhcnNlX29wZXJhbmRfZm4gKGdhc19jZ2VuX2NwdV9kZXNjLCBnYXNfY2dl bl9wYXJzZV9vcGVyYW5kKTsKKworICAvKiBzdGRvdXRwdXQgbWF5IG5vdCBl eGlzdCBpbiBtZF9wYXJzZV9vcHRpb24gKCkgeWV0LCBzbyBkbyBpdCBoZXJl IGFsc28uICAqLworICBpZiAoIWJmZF9zZXRfYXJjaF9tYWNoIChzdGRvdXRw dXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRBUkdFVF9BUkNILCBt YWNoX3RhYmxlW2VuYWJsZV9mcjgwXS5iZmRfbWFjaCkpCisgICAgYXNfd2Fy biAoXygiY291bGQgbm90IHNldCBhcmNoaXRlY3R1cmUgYW5kIG1hY2hpbmUi KSk7CiB9CiAKIHZvaWQKQEAgLTEyNSw2ICsxOTEsMjMgQEAgbWRfYXNzZW1i bGUgKGNoYXIgKnN0cikKICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgaWYg KGVuYWJsZV9mcjgwCisgICAgICAgLyogRklYTUU6IE5lZWQgc3RhbmRhcmQg bWFjcm8gdG8gcGVyZm9ybSB0aGlzIHRlc3QuICAqLworICAgICAgJiYgKChD R0VOX0lOU05fQVRUUl9WQUxVRSAoaW5zbi5pbnNuLCBDR0VOX0lOU05fTUFD SCkKKyAgICAgICAgICAgJiAoMSA8PCBNQUNIX0ZSMzApKQorICAgICAgICAg ICYmICEoKENHRU5fSU5TTl9BVFRSX1ZBTFVFIChpbnNuLmluc24sIENHRU5f SU5TTl9NQUNIKQorICAgICAgICAgICAgICAgJiAoMSA8PCBNQUNIX0ZSODAp KSkpKQorICAgIHsKKyAgICAgIGFzX2JhZCAoXygiaW5zdHJ1Y3Rpb24gJyVz JyBpcyBmb3IgdGhlIEZSMzAgb25seSIpLCBzdHIpOworICAgICAgcmV0dXJu OworICAgIH0KKyAgZWxzZSBpZiAoISBlbmFibGVfZnI4MAorCSAgICYmIENH RU5fSU5TTl9BVFRSX1ZBTFVFIChpbnNuLmluc24sIENHRU5fSU5TTl9NQUNI KSA9PSAoMSA8PCBNQUNIX0ZSODApKQorICAgIHsKKyAgICAgIGFzX2JhZCAo XygiaW5zdHJ1Y3Rpb24gJyVzJyBpcyBmb3IgdGhlIEZSODAgb25seSIpLCBz dHIpOworICAgICAgcmV0dXJuOworICAgIH0KKwogICAvKiBEb2Vzbid0IHJl YWxseSBtYXR0ZXIgd2hhdCB3ZSBwYXNzIGZvciBSRUxBWF9QIGhlcmUuICAq LwogICBnYXNfY2dlbl9maW5pc2hfaW5zbiAoaW5zbi5pbnNuLCBpbnNuLmJ1 ZmZlciwKIAkJCUNHRU5fRklFTERTX0JJVFNJWkUgKCYgaW5zbi5maWVsZHMp LCAxLCBOVUxMKTsKQEAgLTE1NSw2ICsyMzgsMTAgQEAgbWRfb3BlcmFuZCAo ZXhwcmVzc2lvblMgKiBleHByZXNzaW9uUCkKIHZhbHVlVAogbWRfc2VjdGlv bl9hbGlnbiAoc2VnVCBzZWdtZW50LCB2YWx1ZVQgc2l6ZSkKIHsKKyAgLyog Zm9yY2UgMi1ieXRlIGFsaWdubWVudCBmb3IgY29kZS4gICovCisgIGlmIChz dWJzZWdfdGV4dF9wIChzZWdtZW50KSkKKyAgICByZWNvcmRfYWxpZ25tZW50 IChzZWdtZW50LDEpOworCiAgIGludCBhbGlnbiA9IGJmZF9nZXRfc2VjdGlv bl9hbGlnbm1lbnQgKHN0ZG91dHB1dCwgc2VnbWVudCk7CiAKICAgcmV0dXJu ICgoc2l6ZSArICgxIDw8IGFsaWduKSAtIDEpICYgKC0xIDw8IGFsaWduKSk7 CkBAIC0zMDksNiArMzk2LDE1IEBAIG1kX2NnZW5fbG9va3VwX3JlbG9jIChj b25zdCBDR0VOX0lOU04gKmkKIAogICByZXR1cm4gQkZEX1JFTE9DX05PTkU7 CiB9CisKK3ZvaWQKK2ZyMzBfZWxmX2ZpbmFsX3Byb2Nlc3NpbmcgKHZvaWQp Cit7CisgIGVsZl9lbGZoZWFkZXIgKHN0ZG91dHB1dCktPmVfZmxhZ3MgJj0g fkVGX0ZSMzBfQVJDSDsKKyAgZWxmX2VsZmhlYWRlciAoc3Rkb3V0cHV0KS0+ ZV9mbGFncyB8PQorICAgICAgICAgICAgICAgIGZyMzBfZWxmX2dldF9mbGFn c19mcm9tX21hY2ggKG1hY2hfdGFibGVbZW5hYmxlX2ZyODBdLmJmZF9tYWNo KTsKK30KKwogDAogLyogV3JpdGUgYSB2YWx1ZSBvdXQgdG8gdGhlIG9iamVj dCBmaWxlLCB1c2luZyB0aGUgYXBwcm9wcmlhdGUgZW5kaWFubmVzcy4gICov CiAKQEAgLTQxOCwzICs1MTQsNDEgQEAgZnIzMF9maXhfYWRqdXN0YWJsZSAo Zml4UyAqIGZpeFApCiAKICAgcmV0dXJuIDE7CiB9CisKK3N0YXRpYyBpbnQg ZnIzMF9sb2cyIChpbnQgdmFsdWUpIHsKKyAgaW50IHJlc3VsdDsKKworICBm b3IgKHJlc3VsdCA9IDA7ICh2YWx1ZSAmIDEpID09IDA7IHZhbHVlID4+PSAx KQorICAgICsrcmVzdWx0OworCisgIHJldHVybiByZXN1bHQ7Cit9CisKK3Zv aWQKK2ZyMzBfY29uc19hbGlnbiAoaW50IG5ieXRlcykKK3sKKyAgaW50IG5h bGlnbjsKKworICAvKiBPbmx5IGRvIHRoaXMgaWYgd2UgYXJlIGVuZm9yY2lu ZyBhbGlnbmVkIGRhdGEuICAqLworICBpZiAoISBlbmZvcmNlX2FsaWduZWRf ZGF0YSkKKyAgICByZXR1cm47CisKKyAgaWYgKHN1YnNlZ190ZXh0X3AgKG5v d19zZWcpKQorICAgIHsKKyAgICAgIC8qIHdhcm4gaWYgYWRkaW5nIGJ5dGVz IGluIGNvZGUgc2VnbWVudC4gICovCisgICAgICBpZiAobmJ5dGVzPT0xKQor ICAgICAgICB7CisgICAgICAgICAgYXNfd2Fybl93aGVyZSAoZnJhZ19ub3ct PmZyX2ZpbGUsIGZyYWdfbm93LT5mcl9saW5lLAorICAgIAkgICAgXygicG9z c2libHkgcGFkZGluZyBvZiBjb2RlIG5vdCBhIG11bHRpcGxlIG9mIDIiKSk7 CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgIC8q IGlmIGl0IGlzIHdvcmQgb3IgaGFsZi13b3JkLCBjaGVjayBhbGlnbm1lbnQu ICAqLworICBpZiAobmJ5dGVzIT0yICYmIG5ieXRlcyE9NCkKKyAgICByZXR1 cm47CisKKyAgbmFsaWduID0gZnIzMF9sb2cyIChuYnl0ZXMpOworICBmcmFn X3ZhciAocnNfYWxpZ25fdGVzdCwgMSwgKDE8PG5hbGlnbiksIChyZWxheF9z dWJzdGF0ZVQpIDAsCisgICAgKHN5bWJvbFMgKikgTlVMTCwgKG9mZnNldFQp IG5hbGlnbiwgKGNoYXIgKikgTlVMTCk7Cit9CmRpZmYgLXJ1cE4gLS1zdHJp cC10cmFpbGluZy1jciAvYy9iaW51dGlscy0yLjI0LjUxL2dhcy9jb25maWcv dGMtZnIzMC5oIC9zcmMvYmludXRpbHMtMi4yNC41MS9nYXMvY29uZmlnL3Rj LWZyMzAuaAotLS0gL2MvYmludXRpbHMtMi4yNC41MS9nYXMvY29uZmlnL3Rj LWZyMzAuaAkyMDA5LTA5LTAyIDA5OjI0OjAwICswMjAwCisrKyAvc3JjL2Jp bnV0aWxzLTIuMjQuNTEvZ2FzL2NvbmZpZy90Yy1mcjMwLmgJMjAxMy0xMC0w OSAwMDowMzozMCArMDIwMApAQCAtNTMsNiArNTMsMTIgQEAgZXh0ZXJuIGJm ZF9ib29sZWFuIGZyMzBfZml4X2FkanVzdGFibGUgKAogI2RlZmluZSBNRF9Q Q1JFTF9GUk9NX1NFQ1RJT04oRklYLCBTRUMpIG1kX3BjcmVsX2Zyb21fc2Vj dGlvbiAoRklYLCBTRUMpCiBleHRlcm4gbG9uZyBtZF9wY3JlbF9mcm9tX3Nl Y3Rpb24gKHN0cnVjdCBmaXggKiwgc2VnVCk7CiAKKyNkZWZpbmUgbWRfY29u c19hbGlnbihuYnl0ZXMpIGZyMzBfY29uc19hbGlnbiAobmJ5dGVzKQorZXh0 ZXJuIHZvaWQgZnIzMF9jb25zX2FsaWduIChpbnQpOworCisjZGVmaW5lIGVs Zl90Y19maW5hbF9wcm9jZXNzaW5nIAlmcjMwX2VsZl9maW5hbF9wcm9jZXNz aW5nCitleHRlcm4gdm9pZCBmcjMwX2VsZl9maW5hbF9wcm9jZXNzaW5nICh2 b2lkKTsKKwogLyogRm9yIDggdnMgMTYgdnMgMzIgYml0IGJyYW5jaCBzZWxl Y3Rpb24uICAqLwogI2RlZmluZSBUQ19HRU5FUklDX1JFTEFYX1RBQkxFIG1k X3JlbGF4X3RhYmxlCiBleHRlcm4gY29uc3Qgc3RydWN0IHJlbGF4X3R5cGUg bWRfcmVsYXhfdGFibGVbXTsKZGlmZiAtcnVwTiAtLXN0cmlwLXRyYWlsaW5n LWNyIC9jL2JpbnV0aWxzLTIuMjQuNTEvaW5jbHVkZS9lbGYvZnIzMC5oIC9z cmMvYmludXRpbHMtMi4yNC41MS9pbmNsdWRlL2VsZi9mcjMwLmgKLS0tIC9j L2JpbnV0aWxzLTIuMjQuNTEvaW5jbHVkZS9lbGYvZnIzMC5oCTIwMTAtMDQt MTUgMTI6MjY6MDAgKzAyMDAKKysrIC9zcmMvYmludXRpbHMtMi4yNC41MS9p bmNsdWRlL2VsZi9mcjMwLmgJMjAxMy0xMC0wNiAwNjo0NDoxMyArMDIwMApA QCAtMzksNCArMzksMTQgQEAgU1RBUlRfUkVMT0NfTlVNQkVSUyAoZWxmX2Zy MzBfcmVsb2NfdHlwZQogICBSRUxPQ19OVU1CRVIgKFJfRlIzMF9HTlVfVlRF TlRSWSwgMTIpCiBFTkRfUkVMT0NfTlVNQkVSUyAoUl9GUjMwX21heCkKIAor LyogVHdvIGJpdCBmcjMwIGFyY2hpdGVjdHVyZSBmaWVsZC4gICovCisjZGVm aW5lIEVGX0ZSMzBfQVJDSAkJMHgzMDAwMDAwMAorLyogZnIzMCBjb2RlLiAg Ki8KKyNkZWZpbmUgRV9GUjMwX0FSQ0gJCSAgICAweDAwMDAwMDAwCisvKiBm cjgwIGNvZGUuICAqLworI2RlZmluZSBFX0ZSODBfQVJDSCAgICAgICAgIDB4 MTAwMDAwMDAKKworLyogQ29udmVydCBiZmRfbWFjaF8qIGludG8gRUZfRlIz MCouICAqLworaW50IGZyMzBfZWxmX2dldF9mbGFnc19mcm9tX21hY2ggKHVu c2lnbmVkIGxvbmcgbWFjaCk7CisKICNlbmRpZiAvKiBfRUxGX0ZSMzBfSCAq Lwo= --rehcsedm-bc8d3647-10c6-4cae-8764-476968ce55d4--