From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 04/13] libx86: introduce a libx86 shared library Date: Tue, 3 Jul 2018 21:55:17 +0100 Message-ID: <1530651326-5320-5-git-send-email-andrew.cooper3@citrix.com> References: <1530651326-5320-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1530651326-5320-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Sergey Dyasli , Wei Liu , Andrew Cooper , Ian Jackson , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+CgpNb3ZlIHg4Nl9j cHVpZF9sb29rdXBfZGVlcF9kZXBzKCkgaW50byB0aGUgc2hhcmVkIGxpYnJhcnksIHJlbW92aW5n IHRoZQppbmRpdmlkdWFsIGNvcGllcyBmcm9tIHRoZSBoeXBlcnZpc29yIGFuZCBsaWJ4YyByZXNw ZWN0aXZlbHkuCgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0 cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0 cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+CkNDOiBXZWkg TGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDQzogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1 QGNpdHJpeC5jb20+CkNDOiBTZXJnZXkgRHlhc2xpIDxzZXJnZXkuZHlhc2xpQGNpdHJpeC5jb20+ CkNDOiBJYW4gSmFja3NvbiA8SWFuLkphY2tzb25AZXUuY2l0cml4LmNvbT4KLS0tCiB0b29scy9s aWJ4Yy9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgIDUgKysrKysKIHRvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybC5oICAgICAgfCAgMSAtCiB0b29scy9saWJ4Yy94Y19jcHVpZF94ODYuYyAgICAg ICAgIHwgMjkgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L2NwdS9jb21t b24uYyAgICAgICAgICB8ICAyICstCiB4ZW4vYXJjaC94ODYvY3B1aWQuYyAgICAgICAgICAgICAg IHwgMzIgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vY29tbW9uL01ha2VmaWxlICAg ICAgICAgICAgICAgIHwgIDEgKwogeGVuL2NvbW1vbi9saWJ4ODYvTWFrZWZpbGUgICAgICAgICB8 ICAxICsKIHhlbi9jb21tb24vbGlieDg2L2NwdWlkLmMgICAgICAgICAgfCA0NCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2NvbW1vbi9saWJ4ODYvbGlieDg2LXBy aXZhdGUuaCB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2lu Y2x1ZGUvYXNtLXg4Ni9jcHVpZC5oICAgICAgICB8ICAyIC0tCiB4ZW4vaW5jbHVkZS94ZW4vbGli eDg2L2NwdWlkLmggICAgIHwgIDIgKysKIDExIGZpbGVzIGNoYW5nZWQsIDk4IGluc2VydGlvbnMo KyksIDYzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9jb21tb24vbGlieDg2 L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2NvbW1vbi9saWJ4ODYvY3B1aWQuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9jb21tb24vbGlieDg2L2xpYng4Ni1wcml2YXRlLmgKCmRp ZmYgLS1naXQgYS90b29scy9saWJ4Yy9NYWtlZmlsZSBiL3Rvb2xzL2xpYnhjL01ha2VmaWxlCmlu ZGV4IDBlZTA4MTMuLmY1MzRkOTAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL01ha2VmaWxlCisr KyBiL3Rvb2xzL2xpYnhjL01ha2VmaWxlCkBAIC04MCw2ICs4MCwxMSBAQCBHVUVTVF9TUkNTLXkg Kz0gJChFTEZfU1JDUy15KQogJChwYXRzdWJzdCAlLmMsJS5vLCQoRUxGX1NSQ1MteSkpOiBDRkxB R1MgKz0gLVduby1wb2ludGVyLXNpZ24KICQocGF0c3Vic3QgJS5jLCUub3BpYywkKEVMRl9TUkNT LXkpKTogQ0ZMQUdTICs9IC1Xbm8tcG9pbnRlci1zaWduCiAKKyMgQWRkIGxpYng4NiB0byB0aGUg YnVpbGQKK3ZwYXRoICUuYyAuLi8uLi94ZW4vY29tbW9uL2xpYng4NgorCitHVUVTVF9TUkNTLSQo Q09ORklHX1g4NikgICAgICs9IGNwdWlkLmMKKwogIyBuZXcgZG9tYWluIGJ1aWxkZXIKIEdVRVNU X1NSQ1MteSAgICAgICAgICAgICAgICAgKz0geGNfZG9tX2NvcmUuYyB4Y19kb21fYm9vdC5jCiBH VUVTVF9TUkNTLXkgICAgICAgICAgICAgICAgICs9IHhjX2RvbV9lbGZsb2FkZXIuYwpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRl L3hlbmN0cmwuaAppbmRleCBlODI4NWRiLi43MGY1NGU2IDEwMDY0NAotLS0gYS90b29scy9saWJ4 Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApA QCAtMjU0Nyw3ICsyNTQ3LDYgQEAgZW51bSB4Y19zdGF0aWNfY3B1X2ZlYXR1cmVtYXNrIHsKICAg ICBYQ19GRUFUVVJFTUFTS19ERUVQX0ZFQVRVUkVTLAogfTsKIGNvbnN0IHVpbnQzMl90ICp4Y19n ZXRfc3RhdGljX2NwdV9mZWF0dXJlbWFzayhlbnVtIHhjX3N0YXRpY19jcHVfZmVhdHVyZW1hc2sp OwotY29uc3QgdWludDMyX3QgKnhjX2dldF9mZWF0dXJlX2RlZXBfZGVwcyh1aW50MzJfdCBmZWF0 dXJlKTsKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2NwdWlkX3g4Ni5j IGIvdG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMKaW5kZXggNWVlNGEyZC4uOGM3YTk1MSAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMKKysrIGIvdG9vbHMvbGlieGMveGNf Y3B1aWRfeDg2LmMKQEAgLTEzMywzMyArMTMzLDYgQEAgY29uc3QgdWludDMyX3QgKnhjX2dldF9z dGF0aWNfY3B1X2ZlYXR1cmVtYXNrKAogICAgIH0KIH0KIAotY29uc3QgdWludDMyX3QgKnhjX2dl dF9mZWF0dXJlX2RlZXBfZGVwcyh1aW50MzJfdCBmZWF0dXJlKQotewotICAgIHN0YXRpYyBjb25z dCBzdHJ1Y3QgewotICAgICAgICB1aW50MzJfdCBmZWF0dXJlOwotICAgICAgICB1aW50MzJfdCBm c1tGRUFUVVJFU0VUX05SX0VOVFJJRVNdOwotICAgIH0gZGVlcF9kZXBzW10gPSBJTklUX0RFRVBf REVQUzsKLQotICAgIHVuc2lnbmVkIGludCBzdGFydCA9IDAsIGVuZCA9IEFSUkFZX1NJWkUoZGVl cF9kZXBzKTsKLQotICAgIEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRlZXBfZGVwcykgIT0gTlJf REVFUF9ERVBTKTsKLQotICAgIC8qIGRlZXBfZGVwc1tdIGlzIHNvcnRlZC4gIFBlcmZvcm0gYSBi aW5hcnkgc2VhcmNoLiAqLwotICAgIHdoaWxlICggc3RhcnQgPCBlbmQgKQotICAgIHsKLSAgICAg ICAgdW5zaWduZWQgaW50IG1pZCA9IHN0YXJ0ICsgKChlbmQgLSBzdGFydCkgLyAyKTsKLQotICAg ICAgICBpZiAoIGRlZXBfZGVwc1ttaWRdLmZlYXR1cmUgPiBmZWF0dXJlICkKLSAgICAgICAgICAg IGVuZCA9IG1pZDsKLSAgICAgICAgZWxzZSBpZiAoIGRlZXBfZGVwc1ttaWRdLmZlYXR1cmUgPCBm ZWF0dXJlICkKLSAgICAgICAgICAgIHN0YXJ0ID0gbWlkICsgMTsKLSAgICAgICAgZWxzZQotICAg ICAgICAgICAgcmV0dXJuIGRlZXBfZGVwc1ttaWRdLmZzOwotICAgIH0KLQotICAgIHJldHVybiBO VUxMOwotfQotCiBzdHJ1Y3QgY3B1aWRfZG9tYWluX2luZm8KIHsKICAgICBlbnVtCkBAIC02Nzks NyArNjUyLDcgQEAgc3RhdGljIHZvaWQgc2FuaXRpc2VfZmVhdHVyZXNldChzdHJ1Y3QgY3B1aWRf ZG9tYWluX2luZm8gKmluZm8pCiAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpkZnM7CiAKICAgICAg ICAgaWYgKCAhdGVzdF9iaXQoYiwgZGlzYWJsZWRfZmVhdHVyZXMpIHx8Ci0gICAgICAgICAgICAg IShkZnMgPSB4Y19nZXRfZmVhdHVyZV9kZWVwX2RlcHMoYikpICkKKyAgICAgICAgICAgICAhKGRm cyA9IHg4Nl9jcHVpZF9sb29rdXBfZGVlcF9kZXBzKGIpKSApCiAgICAgICAgICAgICAgY29udGlu dWU7CiAKICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRpc2FibGVkX2ZlYXR1 cmVzKTsgKytpICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvY29tbW9uLmMgYi94ZW4v YXJjaC94ODYvY3B1L2NvbW1vbi5jCmluZGV4IGJkZDQ1YzMuLmFkM2RiZTcgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9jcHUvY29tbW9uLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9jb21tb24u YwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIF9faW5pdCBzZXR1cF9jbGVhcl9jcHVfY2FwKHVuc2ln bmVkIGludCBjYXApCiAJCSAgICAgICBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIGNhcCk7 CiAKIAlfX2NsZWFyX2JpdChjYXAsIGJvb3RfY3B1X2RhdGEueDg2X2NhcGFiaWxpdHkpOwotCWRm cyA9IGxvb2t1cF9kZWVwX2RlcHMoY2FwKTsKKwlkZnMgPSB4ODZfY3B1aWRfbG9va3VwX2RlZXBf ZGVwcyhjYXApOwogCiAJaWYgKCFkZnMpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9jcHVpZC5jIGIveGVuL2FyY2gveDg2L2NwdWlkLmMKaW5kZXggYzMzYzZkNC4uNDYxYWE4 YyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdWlkLmMKKysrIGIveGVuL2FyY2gveDg2L2Nw dWlkLmMKQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIHZvaWQgc2FuaXRpc2VfZmVhdHVyZXNldCh1 aW50MzJfdCAqZnMpCiAgICAgZm9yX2VhY2hfc2V0X2JpdChpLCAodm9pZCAqKWRpc2FibGVkX2Zl YXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRpc2FibGVkX2ZlYXR1cmVzKSAq IDgpCiAgICAgewotICAgICAgICBjb25zdCB1aW50MzJfdCAqZGZzID0gbG9va3VwX2RlZXBfZGVw cyhpKTsKKyAgICAgICAgY29uc3QgdWludDMyX3QgKmRmcyA9IHg4Nl9jcHVpZF9sb29rdXBfZGVl cF9kZXBzKGkpOwogICAgICAgICB1bnNpZ25lZCBpbnQgajsKIAogICAgICAgICBBU1NFUlQoZGZz KTsgLyogZGVlcF9mZWF0dXJlc1tdIHNob3VsZCBndWFyZW50ZWUgdGhpcy4gKi8KQEAgLTU0NCwz NiArNTQ0LDYgQEAgYm9vbCByZWNoZWNrX2NwdV9mZWF0dXJlcyh1bnNpZ25lZCBpbnQgY3B1KQog ICAgIHJldHVybiBva2F5OwogfQogCi1jb25zdCB1aW50MzJfdCAqbG9va3VwX2RlZXBfZGVwcyh1 aW50MzJfdCBmZWF0dXJlKQotewotICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewotICAgICAgICB1 aW50MzJfdCBmZWF0dXJlOwotICAgICAgICB1aW50MzJfdCBmc1tGU0NBUElOVFNdOwotICAgIH0g ZGVlcF9kZXBzW10gPSBJTklUX0RFRVBfREVQUzsKLSAgICB1bnNpZ25lZCBpbnQgc3RhcnQgPSAw LCBlbmQgPSBBUlJBWV9TSVpFKGRlZXBfZGVwcyk7Ci0KLSAgICBCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZWVwX2RlcHMpICE9IE5SX0RFRVBfREVQUyk7Ci0KLSAgICAvKiBGYXN0IGVhcmx5IGV4 aXQuICovCi0gICAgaWYgKCAhdGVzdF9iaXQoZmVhdHVyZSwgZGVlcF9mZWF0dXJlcykgKQotICAg ICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIGRlZXBfZGVwc1tdIGlzIHNvcnRlZC4gIFBlcmZv cm0gYSBiaW5hcnkgc2VhcmNoLiAqLwotICAgIHdoaWxlICggc3RhcnQgPCBlbmQgKQotICAgIHsK LSAgICAgICAgdW5zaWduZWQgaW50IG1pZCA9IHN0YXJ0ICsgKChlbmQgLSBzdGFydCkgLyAyKTsK LQotICAgICAgICBpZiAoIGRlZXBfZGVwc1ttaWRdLmZlYXR1cmUgPiBmZWF0dXJlICkKLSAgICAg ICAgICAgIGVuZCA9IG1pZDsKLSAgICAgICAgZWxzZSBpZiAoIGRlZXBfZGVwc1ttaWRdLmZlYXR1 cmUgPCBmZWF0dXJlICkKLSAgICAgICAgICAgIHN0YXJ0ID0gbWlkICsgMTsKLSAgICAgICAgZWxz ZQotICAgICAgICAgICAgcmV0dXJuIGRlZXBfZGVwc1ttaWRdLmZzOwotICAgIH0KLQotICAgIHJl dHVybiBOVUxMOwotfQotCiB2b2lkIHJlY2FsY3VsYXRlX2NwdWlkX3BvbGljeShzdHJ1Y3QgZG9t YWluICpkKQogewogICAgIHN0cnVjdCBjcHVpZF9wb2xpY3kgKnAgPSBkLT5hcmNoLmNwdWlkOwpk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9NYWtlZmlsZSBiL3hlbi9jb21tb24vTWFrZWZpbGUKaW5k ZXggMjRkNDc1Mi4uOTEwNThhMCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9NYWtlZmlsZQorKysg Yi94ZW4vY29tbW9uL01ha2VmaWxlCkBAIC04MCwzICs4MCw0IEBAIHN1YmRpci0kKENPTkZJR19V QlNBTikgKz0gdWJzYW4KIAogc3ViZGlyLXkgKz0gbGliZWxmCiBzdWJkaXItJChDT05GSUdfSEFT X0RFVklDRV9UUkVFKSArPSBsaWJmZHQKK3N1YmRpci0kKENPTkZJR19YODYpICs9IGxpYng4Ngpk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9saWJ4ODYvTWFrZWZpbGUgYi94ZW4vY29tbW9uL2xpYng4 Ni9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmIyZTBiCi0t LSAvZGV2L251bGwKKysrIGIveGVuL2NvbW1vbi9saWJ4ODYvTWFrZWZpbGUKQEAgLTAsMCArMSBA QAorb2JqLXkgKz0gY3B1aWQubwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9saWJ4ODYvY3B1aWQu YyBiL3hlbi9jb21tb24vbGlieDg2L2NwdWlkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uOWZhN2Q5NQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24vbGlieDg2L2Nw dWlkLmMKQEAgLTAsMCArMSw0NCBAQAorI2luY2x1ZGUgImxpYng4Ni1wcml2YXRlLmgiCisKKyNp bmNsdWRlIDx4ZW4vbGlieDg2L2NwdWlkLmg+CisKK2NvbnN0IHVpbnQzMl90ICp4ODZfY3B1aWRf bG9va3VwX2RlZXBfZGVwcyh1aW50MzJfdCBmZWF0dXJlKQoreworICAgIHN0YXRpYyBjb25zdCB1 aW50MzJfdCBkZWVwX2ZlYXR1cmVzW10gPSBJTklUX0RFRVBfRkVBVFVSRVM7CisgICAgc3RhdGlj IGNvbnN0IHN0cnVjdCB7CisgICAgICAgIHVpbnQzMl90IGZlYXR1cmU7CisgICAgICAgIHVpbnQz Ml90IGZzW0ZFQVRVUkVTRVRfTlJfRU5UUklFU107CisgICAgfSBkZWVwX2RlcHNbXSA9IElOSVRf REVFUF9ERVBTOworICAgIHVuc2lnbmVkIGludCBzdGFydCA9IDAsIGVuZCA9IEFSUkFZX1NJWkUo ZGVlcF9kZXBzKTsKKworICAgIEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRlZXBfZGVwcykgIT0g TlJfREVFUF9ERVBTKTsKKworICAgIC8qIEZhc3QgZWFybHkgZXhpdC4gKi8KKyAgICBpZiAoICF0 ZXN0X2JpdChmZWF0dXJlLCBkZWVwX2ZlYXR1cmVzKSApCisgICAgICAgIHJldHVybiBOVUxMOwor CisgICAgLyogZGVlcF9kZXBzW10gaXMgc29ydGVkLiAgUGVyZm9ybSBhIGJpbmFyeSBzZWFyY2gu ICovCisgICAgd2hpbGUgKCBzdGFydCA8IGVuZCApCisgICAgeworICAgICAgICB1bnNpZ25lZCBp bnQgbWlkID0gc3RhcnQgKyAoKGVuZCAtIHN0YXJ0KSAvIDIpOworCisgICAgICAgIGlmICggZGVl cF9kZXBzW21pZF0uZmVhdHVyZSA+IGZlYXR1cmUgKQorICAgICAgICAgICAgZW5kID0gbWlkOwor ICAgICAgICBlbHNlIGlmICggZGVlcF9kZXBzW21pZF0uZmVhdHVyZSA8IGZlYXR1cmUgKQorICAg ICAgICAgICAgc3RhcnQgPSBtaWQgKyAxOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1 cm4gZGVlcF9kZXBzW21pZF0uZnM7CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8q CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1t b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9saWJ4ODYvbGli eDg2LXByaXZhdGUuaCBiL3hlbi9jb21tb24vbGlieDg2L2xpYng4Ni1wcml2YXRlLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlmNDJmNwotLS0gL2Rldi9udWxsCisrKyBi L3hlbi9jb21tb24vbGlieDg2L2xpYng4Ni1wcml2YXRlLmgKQEAgLTAsMCArMSw0MiBAQAorI2lm bmRlZiBYRU5fTElCWDg2X1BSSVZBVEVfSAorI2RlZmluZSBYRU5fTElCWDg2X1BSSVZBVEVfSAor CisjaWZkZWYgX19YRU5fXworCisjaW5jbHVkZSA8eGVuL2JpdG9wcy5oPgorI2luY2x1ZGUgPHhl bi9rZXJuZWwuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+ CisKKyNlbHNlCisKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4K KyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2luY2x1ZGUgPHhlbi10b29scy9saWJzLmg+CisKKyNk ZWZpbmUgTUFYKHgsIHkpICgoeCkgPiAoeSkgPyAoeCkgOiAoeSkpCisKKyNkZWZpbmUgQVJSQVlf U0laRSh4KSAoc2l6ZW9mIHggLyBzaXplb2YgKngpCisKK3N0YXRpYyBpbmxpbmUgYm9vbCB0ZXN0 X2JpdCh1bnNpZ25lZCBpbnQgYml0LCBjb25zdCB2b2lkICp2YWRkcikKK3sKKyAgICBjb25zdCBj aGFyICphZGRyID0gdmFkZHI7CisKKyAgICByZXR1cm4gYWRkcltiaXQgLyA4XSAmICgxdSA8PCAo Yml0ICUgOCkpOworfQorCisjZW5kaWYgLyogX19YRU5fXyAqLworCisjZW5kaWYgLyogWEVOX0xJ Qlg4Nl9QUklWQVRFX0ggKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMK KyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lk dGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlk LmgKaW5kZXggN2EzZjJmNC4uZWE3OTQ0NSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9jcHVpZC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1aWQuaApAQCAtMTcsOCArMTcs NiBAQCBleHRlcm4gY29uc3QgdWludDMyX3Qgc3BlY2lhbF9mZWF0dXJlc1tGU0NBUElOVFNdOwog CiB2b2lkIGluaXRfZ3Vlc3RfY3B1aWQodm9pZCk7CiAKLWNvbnN0IHVpbnQzMl90ICpsb29rdXBf ZGVlcF9kZXBzKHVpbnQzMl90IGZlYXR1cmUpOwotCiAvKgogICogRXhwZWN0ZWQgbGV2ZWxsaW5n IGNhcGFiaWxpdGllcyAoZ2l2ZW4gY3B1aWQgdmVuZG9yL2ZhbWlseSBpbmZvcm1hdGlvbiksCiAg KiBhbmQgbGV2ZWxsaW5nIGNhcGFiaWxpdGllcyBhY3R1YWxseSBhdmFpbGFibGUgKGdpdmVuIE1T UiBwcm9iaW5nKS4KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9saWJ4ODYvY3B1aWQuaCBi L3hlbi9pbmNsdWRlL3hlbi9saWJ4ODYvY3B1aWQuaAppbmRleCA2OWJkOGE5Li4yMzNmYTEzIDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vbGlieDg2L2NwdWlkLmgKKysrIGIveGVuL2luY2x1 ZGUveGVuL2xpYng4Ni9jcHVpZC5oCkBAIC0yMjgsNiArMjI4LDggQEAgc3RhdGljIGlubGluZSB2 b2lkIGNwdWlkX2ZlYXR1cmVzZXRfdG9fcG9saWN5KAogICAgIHAtPmZlYXQuXzdkMCAgPSBmc1tG RUFUVVJFU0VUXzdkMF07CiB9CiAKK2NvbnN0IHVpbnQzMl90ICp4ODZfY3B1aWRfbG9va3VwX2Rl ZXBfZGVwcyh1aW50MzJfdCBmZWF0dXJlKTsKKwogI2VuZGlmIC8qICFYRU5fTElCWDg2X0NQVUlE X0ggKi8KIAogLyoKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv L3hlbi1kZXZlbA==