From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 05/13] libx86: introduce a libx86 shared library Date: Fri, 13 Jul 2018 21:03:06 +0100 Message-ID: <1531512194-6865-6-git-send-email-andrew.cooper3@citrix.com> References: <1531512194-6865-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: <1531512194-6865-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+ CkNDOiBJYW4gSmFja3NvbiA8SWFuLkphY2tzb25AZXUuY2l0cml4LmNvbT4KCnYyOgogKiBSZW5h bWUgbGlieDg2LXByaXZhdGUuaCB0byBqdXN0IHByaXZhdGUuaAogKiBPbmx5IHZwYXRoIGxpYng4 NiBmb3IgQ09ORklHX1g4NiBidWlsZHMgb2YgbGlieGMKLS0tCiB0b29scy9saWJ4Yy9NYWtlZmls ZSAgICAgICAgICAgfCAgNiArKysrKysKIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oICB8 ICAxIC0KIHRvb2xzL2xpYnhjL3hjX2NwdWlkX3g4Ni5jICAgICB8IDI5ICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9jcHUvY29tbW9uLmMgICAgICB8ICAyICstCiB4 ZW4vYXJjaC94ODYvY3B1aWQuYyAgICAgICAgICAgfCAzMiArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIHhlbi9jb21tb24vTWFrZWZpbGUgICAgICAgICAgICB8ICAxICsKIHhlbi9jb21t b24vbGlieDg2L01ha2VmaWxlICAgICB8ICAxICsKIHhlbi9jb21tb24vbGlieDg2L2NwdWlkLmMg ICAgICB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVu L2NvbW1vbi9saWJ4ODYvcHJpdmF0ZS5oICAgIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmggICAgfCAgMiAtLQogeGVu L2luY2x1ZGUveGVuL2xpYng4Ni9jcHVpZC5oIHwgIDIgKysKIDExIGZpbGVzIGNoYW5nZWQsIDk1 IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9j b21tb24vbGlieDg2L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2NvbW1vbi9saWJ4 ODYvY3B1aWQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9jb21tb24vbGlieDg2L3ByaXZhdGUu aAoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL01ha2VmaWxlIGIvdG9vbHMvbGlieGMvTWFrZWZp bGUKaW5kZXggY2EyYjIwMy4uY2Q0MjI1YyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvTWFrZWZp bGUKKysrIGIvdG9vbHMvbGlieGMvTWFrZWZpbGUKQEAgLTgwLDYgKzgwLDEyIEBAIEdVRVNUX1NS Q1MteSArPSAkKEVMRl9TUkNTLXkpCiAkKHBhdHN1YnN0ICUuYywlLm8sJChFTEZfU1JDUy15KSk6 IENGTEFHUyArPSAtV25vLXBvaW50ZXItc2lnbgogJChwYXRzdWJzdCAlLmMsJS5vcGljLCQoRUxG X1NSQ1MteSkpOiBDRkxBR1MgKz0gLVduby1wb2ludGVyLXNpZ24KIAoraWZlcSAoJChDT05GSUdf WDg2KSx5KSAjIEFkZCBsaWJ4ODYgdG8gdGhlIGJ1aWxkCit2cGF0aCAlLmMgLi4vLi4veGVuL2Nv bW1vbi9saWJ4ODYKKworR1VFU1RfU1JDUy15ICAgICAgICAgICAgICAgICArPSBjcHVpZC5jCitl bmRpZgorCiAjIG5ldyBkb21haW4gYnVpbGRlcgogR1VFU1RfU1JDUy15ICAgICAgICAgICAgICAg ICArPSB4Y19kb21fY29yZS5jIHhjX2RvbV9ib290LmMKIEdVRVNUX1NSQ1MteSAgICAgICAgICAg ICAgICAgKz0geGNfZG9tX2VsZmxvYWRlci5jCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNs dWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCmluZGV4IDU1MjBj OTQuLmRkN2Q4YTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCisr KyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCkBAIC0yNTY0LDcgKzI1NjQsNiBAQCBl bnVtIHhjX3N0YXRpY19jcHVfZmVhdHVyZW1hc2sgewogICAgIFhDX0ZFQVRVUkVNQVNLX0RFRVBf RkVBVFVSRVMsCiB9OwogY29uc3QgdWludDMyX3QgKnhjX2dldF9zdGF0aWNfY3B1X2ZlYXR1cmVt YXNrKGVudW0geGNfc3RhdGljX2NwdV9mZWF0dXJlbWFzayk7Ci1jb25zdCB1aW50MzJfdCAqeGNf Z2V0X2ZlYXR1cmVfZGVlcF9kZXBzKHVpbnQzMl90IGZlYXR1cmUpOwogCiAjZW5kaWYKIApkaWZm IC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMgYi90b29scy9saWJ4Yy94Y19jcHVp ZF94ODYuYwppbmRleCBkMmY4NWFhLi4zYzIxNGM4IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94 Y19jcHVpZF94ODYuYworKysgYi90b29scy9saWJ4Yy94Y19jcHVpZF94ODYuYwpAQCAtMTMxLDMz ICsxMzEsNiBAQCBjb25zdCB1aW50MzJfdCAqeGNfZ2V0X3N0YXRpY19jcHVfZmVhdHVyZW1hc2so CiAgICAgfQogfQogCi1jb25zdCB1aW50MzJfdCAqeGNfZ2V0X2ZlYXR1cmVfZGVlcF9kZXBzKHVp bnQzMl90IGZlYXR1cmUpCi17Ci0gICAgc3RhdGljIGNvbnN0IHN0cnVjdCB7Ci0gICAgICAgIHVp bnQzMl90IGZlYXR1cmU7Ci0gICAgICAgIHVpbnQzMl90IGZzW0ZFQVRVUkVTRVRfTlJfRU5UUklF U107Ci0gICAgfSBkZWVwX2RlcHNbXSA9IElOSVRfREVFUF9ERVBTOwotCi0gICAgdW5zaWduZWQg aW50IHN0YXJ0ID0gMCwgZW5kID0gQVJSQVlfU0laRShkZWVwX2RlcHMpOwotCi0gICAgQlVJTERf QlVHX09OKEFSUkFZX1NJWkUoZGVlcF9kZXBzKSAhPSBOUl9ERUVQX0RFUFMpOwotCi0gICAgLyog ZGVlcF9kZXBzW10gaXMgc29ydGVkLiAgUGVyZm9ybSBhIGJpbmFyeSBzZWFyY2guICovCi0gICAg d2hpbGUgKCBzdGFydCA8IGVuZCApCi0gICAgewotICAgICAgICB1bnNpZ25lZCBpbnQgbWlkID0g c3RhcnQgKyAoKGVuZCAtIHN0YXJ0KSAvIDIpOwotCi0gICAgICAgIGlmICggZGVlcF9kZXBzW21p ZF0uZmVhdHVyZSA+IGZlYXR1cmUgKQotICAgICAgICAgICAgZW5kID0gbWlkOwotICAgICAgICBl bHNlIGlmICggZGVlcF9kZXBzW21pZF0uZmVhdHVyZSA8IGZlYXR1cmUgKQotICAgICAgICAgICAg c3RhcnQgPSBtaWQgKyAxOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZGVlcF9k ZXBzW21pZF0uZnM7Ci0gICAgfQotCi0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KIHN0cnVjdCBjcHVp ZF9kb21haW5faW5mbwogewogICAgIGVudW0KQEAgLTY3Nyw3ICs2NTAsNyBAQCBzdGF0aWMgdm9p ZCBzYW5pdGlzZV9mZWF0dXJlc2V0KHN0cnVjdCBjcHVpZF9kb21haW5faW5mbyAqaW5mbykKICAg ICAgICAgY29uc3QgdWludDMyX3QgKmRmczsKIAogICAgICAgICBpZiAoICF0ZXN0X2JpdChiLCBk aXNhYmxlZF9mZWF0dXJlcykgfHwKLSAgICAgICAgICAgICAhKGRmcyA9IHhjX2dldF9mZWF0dXJl X2RlZXBfZGVwcyhiKSkgKQorICAgICAgICAgICAgICEoZGZzID0geDg2X2NwdWlkX2xvb2t1cF9k ZWVwX2RlcHMoYikpICkKICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBmb3IgKCBp ID0gMDsgaSA8IEFSUkFZX1NJWkUoZGlzYWJsZWRfZmVhdHVyZXMpOyArK2kgKQpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2NwdS9jb21tb24uYyBiL3hlbi9hcmNoL3g4Ni9jcHUvY29tbW9uLmMK aW5kZXggNjU3MGMyZC4uMTg1ZmVmZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9jb21t b24uYworKysgYi94ZW4vYXJjaC94ODYvY3B1L2NvbW1vbi5jCkBAIC02Miw3ICs2Miw3IEBAIHZv aWQgX19pbml0IHNldHVwX2NsZWFyX2NwdV9jYXAodW5zaWduZWQgaW50IGNhcCkKIAkJICAgICAg IF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgY2FwKTsKIAogCV9fY2xlYXJfYml0KGNhcCwg Ym9vdF9jcHVfZGF0YS54ODZfY2FwYWJpbGl0eSk7Ci0JZGZzID0gbG9va3VwX2RlZXBfZGVwcyhj YXApOworCWRmcyA9IHg4Nl9jcHVpZF9sb29rdXBfZGVlcF9kZXBzKGNhcCk7CiAKIAlpZiAoIWRm cykKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdWlkLmMgYi94ZW4vYXJj aC94ODYvY3B1aWQuYwppbmRleCAzYzI5MTkxLi43MzFjY2I2IDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvY3B1aWQuYworKysgYi94ZW4vYXJjaC94ODYvY3B1aWQuYwpAQCAtOTcsNyArOTcsNyBA QCBzdGF0aWMgdm9pZCBzYW5pdGlzZV9mZWF0dXJlc2V0KHVpbnQzMl90ICpmcykKICAgICBmb3Jf ZWFjaF9zZXRfYml0KGksICh2b2lkICopZGlzYWJsZWRfZmVhdHVyZXMsCiAgICAgICAgICAgICAg ICAgICAgICBzaXplb2YoZGlzYWJsZWRfZmVhdHVyZXMpICogOCkKICAgICB7Ci0gICAgICAgIGNv bnN0IHVpbnQzMl90ICpkZnMgPSBsb29rdXBfZGVlcF9kZXBzKGkpOworICAgICAgICBjb25zdCB1 aW50MzJfdCAqZGZzID0geDg2X2NwdWlkX2xvb2t1cF9kZWVwX2RlcHMoaSk7CiAgICAgICAgIHVu c2lnbmVkIGludCBqOwogCiAgICAgICAgIEFTU0VSVChkZnMpOyAvKiBkZWVwX2ZlYXR1cmVzW10g c2hvdWxkIGd1YXJlbnRlZSB0aGlzLiAqLwpAQCAtNTQ0LDM2ICs1NDQsNiBAQCBib29sIHJlY2hl Y2tfY3B1X2ZlYXR1cmVzKHVuc2lnbmVkIGludCBjcHUpCiAgICAgcmV0dXJuIG9rYXk7CiB9CiAK LWNvbnN0IHVpbnQzMl90ICpsb29rdXBfZGVlcF9kZXBzKHVpbnQzMl90IGZlYXR1cmUpCi17Ci0g ICAgc3RhdGljIGNvbnN0IHN0cnVjdCB7Ci0gICAgICAgIHVpbnQzMl90IGZlYXR1cmU7Ci0gICAg ICAgIHVpbnQzMl90IGZzW0ZTQ0FQSU5UU107Ci0gICAgfSBkZWVwX2RlcHNbXSA9IElOSVRfREVF UF9ERVBTOwotICAgIHVuc2lnbmVkIGludCBzdGFydCA9IDAsIGVuZCA9IEFSUkFZX1NJWkUoZGVl cF9kZXBzKTsKLQotICAgIEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRlZXBfZGVwcykgIT0gTlJf REVFUF9ERVBTKTsKLQotICAgIC8qIEZhc3QgZWFybHkgZXhpdC4gKi8KLSAgICBpZiAoICF0ZXN0 X2JpdChmZWF0dXJlLCBkZWVwX2ZlYXR1cmVzKSApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0g ICAgLyogZGVlcF9kZXBzW10gaXMgc29ydGVkLiAgUGVyZm9ybSBhIGJpbmFyeSBzZWFyY2guICov Ci0gICAgd2hpbGUgKCBzdGFydCA8IGVuZCApCi0gICAgewotICAgICAgICB1bnNpZ25lZCBpbnQg bWlkID0gc3RhcnQgKyAoKGVuZCAtIHN0YXJ0KSAvIDIpOwotCi0gICAgICAgIGlmICggZGVlcF9k ZXBzW21pZF0uZmVhdHVyZSA+IGZlYXR1cmUgKQotICAgICAgICAgICAgZW5kID0gbWlkOwotICAg ICAgICBlbHNlIGlmICggZGVlcF9kZXBzW21pZF0uZmVhdHVyZSA8IGZlYXR1cmUgKQotICAgICAg ICAgICAgc3RhcnQgPSBtaWQgKyAxOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4g ZGVlcF9kZXBzW21pZF0uZnM7Ci0gICAgfQotCi0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KIHZvaWQg cmVjYWxjdWxhdGVfY3B1aWRfcG9saWN5KHN0cnVjdCBkb21haW4gKmQpCiB7CiAgICAgc3RydWN0 IGNwdWlkX3BvbGljeSAqcCA9IGQtPmFyY2guY3B1aWQ7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9u L01ha2VmaWxlIGIveGVuL2NvbW1vbi9NYWtlZmlsZQppbmRleCBiM2UwYjBlLi5hODQzMzk0IDEw MDY0NAotLS0gYS94ZW4vY29tbW9uL01ha2VmaWxlCisrKyBiL3hlbi9jb21tb24vTWFrZWZpbGUK QEAgLTgwLDMgKzgwLDQgQEAgc3ViZGlyLSQoQ09ORklHX1VCU0FOKSArPSB1YnNhbgogCiBzdWJk aXItJChDT05GSUdfTkVFRFNfTElCRUxGKSArPSBsaWJlbGYKIHN1YmRpci0kKENPTkZJR19IQVNf REVWSUNFX1RSRUUpICs9IGxpYmZkdAorc3ViZGlyLSQoQ09ORklHX1g4NikgKz0gbGlieDg2CmRp ZmYgLS1naXQgYS94ZW4vY29tbW9uL2xpYng4Ni9NYWtlZmlsZSBiL3hlbi9jb21tb24vbGlieDg2 L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYjJlMGIKLS0t IC9kZXYvbnVsbAorKysgYi94ZW4vY29tbW9uL2xpYng4Ni9NYWtlZmlsZQpAQCAtMCwwICsxIEBA CitvYmoteSArPSBjcHVpZC5vCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2xpYng4Ni9jcHVpZC5j IGIveGVuL2NvbW1vbi9saWJ4ODYvY3B1aWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4wZjQ5N2Q0Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2NvbW1vbi9saWJ4ODYvY3B1 aWQuYwpAQCAtMCwwICsxLDQ0IEBACisjaW5jbHVkZSAicHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8 eGVuL2xpYng4Ni9jcHVpZC5oPgorCitjb25zdCB1aW50MzJfdCAqeDg2X2NwdWlkX2xvb2t1cF9k ZWVwX2RlcHModWludDMyX3QgZmVhdHVyZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qg ZGVlcF9mZWF0dXJlc1tdID0gSU5JVF9ERUVQX0ZFQVRVUkVTOworICAgIHN0YXRpYyBjb25zdCBz dHJ1Y3QgeworICAgICAgICB1aW50MzJfdCBmZWF0dXJlOworICAgICAgICB1aW50MzJfdCBmc1tG RUFUVVJFU0VUX05SX0VOVFJJRVNdOworICAgIH0gZGVlcF9kZXBzW10gPSBJTklUX0RFRVBfREVQ UzsKKyAgICB1bnNpZ25lZCBpbnQgc3RhcnQgPSAwLCBlbmQgPSBBUlJBWV9TSVpFKGRlZXBfZGVw cyk7CisKKyAgICBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZWVwX2RlcHMpICE9IE5SX0RFRVBf REVQUyk7CisKKyAgICAvKiBGYXN0IGVhcmx5IGV4aXQuICovCisgICAgaWYgKCAhdGVzdF9iaXQo ZmVhdHVyZSwgZGVlcF9mZWF0dXJlcykgKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8q IGRlZXBfZGVwc1tdIGlzIHNvcnRlZC4gIFBlcmZvcm0gYSBiaW5hcnkgc2VhcmNoLiAqLworICAg IHdoaWxlICggc3RhcnQgPCBlbmQgKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IG1pZCA9 IHN0YXJ0ICsgKChlbmQgLSBzdGFydCkgLyAyKTsKKworICAgICAgICBpZiAoIGRlZXBfZGVwc1tt aWRdLmZlYXR1cmUgPiBmZWF0dXJlICkKKyAgICAgICAgICAgIGVuZCA9IG1pZDsKKyAgICAgICAg ZWxzZSBpZiAoIGRlZXBfZGVwc1ttaWRdLmZlYXR1cmUgPCBmZWF0dXJlICkKKyAgICAgICAgICAg IHN0YXJ0ID0gbWlkICsgMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGRlZXBf ZGVwc1ttaWRdLmZzOworICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCisvKgorICogTG9j YWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1i YXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmls CisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vbGlieDg2L3ByaXZhdGUuaCBi L3hlbi9jb21tb24vbGlieDg2L3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5jMjM0Yjg1Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2NvbW1vbi9saWJ4ODYvcHJp dmF0ZS5oCkBAIC0wLDAgKzEsMzggQEAKKyNpZm5kZWYgWEVOX0xJQlg4Nl9QUklWQVRFX0gKKyNk ZWZpbmUgWEVOX0xJQlg4Nl9QUklWQVRFX0gKKworI2lmZGVmIF9fWEVOX18KKworI2luY2x1ZGUg PHhlbi9iaXRvcHMuaD4KKyNpbmNsdWRlIDx4ZW4va2VybmVsLmg+CisjaW5jbHVkZSA8eGVuL2xp Yi5oPgorI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorCisjZWxzZQorCisjaW5jbHVkZSA8aW50dHlw ZXMuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpbmNs dWRlIDx4ZW4tdG9vbHMvbGlicy5oPgorCitzdGF0aWMgaW5saW5lIGJvb2wgdGVzdF9iaXQodW5z aWduZWQgaW50IGJpdCwgY29uc3Qgdm9pZCAqdmFkZHIpCit7CisgICAgY29uc3QgY2hhciAqYWRk ciA9IHZhZGRyOworCisgICAgcmV0dXJuIGFkZHJbYml0IC8gOF0gJiAoMXUgPDwgKGJpdCAlIDgp KTsKK30KKworI2VuZGlmIC8qIF9fWEVOX18gKi8KKworI2VuZGlmIC8qIFhFTl9MSUJYODZfUFJJ VkFURV9IICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZp bGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0Cisg KiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9jcHVpZC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oCmluZGV4 IDdhM2YyZjQuLmVhNzk0NDUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1aWQu aAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmgKQEAgLTE3LDggKzE3LDYgQEAgZXh0 ZXJuIGNvbnN0IHVpbnQzMl90IHNwZWNpYWxfZmVhdHVyZXNbRlNDQVBJTlRTXTsKIAogdm9pZCBp bml0X2d1ZXN0X2NwdWlkKHZvaWQpOwogCi1jb25zdCB1aW50MzJfdCAqbG9va3VwX2RlZXBfZGVw cyh1aW50MzJfdCBmZWF0dXJlKTsKLQogLyoKICAqIEV4cGVjdGVkIGxldmVsbGluZyBjYXBhYmls aXRpZXMgKGdpdmVuIGNwdWlkIHZlbmRvci9mYW1pbHkgaW5mb3JtYXRpb24pLAogICogYW5kIGxl dmVsbGluZyBjYXBhYmlsaXRpZXMgYWN0dWFsbHkgYXZhaWxhYmxlIChnaXZlbiBNU1IgcHJvYmlu ZykuCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vbGlieDg2L2NwdWlkLmggYi94ZW4vaW5j bHVkZS94ZW4vbGlieDg2L2NwdWlkLmgKaW5kZXggNjliZDhhOS4uMjMzZmExMyAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUveGVuL2xpYng4Ni9jcHVpZC5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9s aWJ4ODYvY3B1aWQuaApAQCAtMjI4LDYgKzIyOCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjcHVp ZF9mZWF0dXJlc2V0X3RvX3BvbGljeSgKICAgICBwLT5mZWF0Ll83ZDAgID0gZnNbRkVBVFVSRVNF VF83ZDBdOwogfQogCitjb25zdCB1aW50MzJfdCAqeDg2X2NwdWlkX2xvb2t1cF9kZWVwX2RlcHMo dWludDMyX3QgZmVhdHVyZSk7CisKICNlbmRpZiAvKiAhWEVOX0xJQlg4Nl9DUFVJRF9IICovCiAK IC8qCi0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2 ZWw=