From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v6.5 11/26] x86: Support indirect thunks from assembly code Date: Thu, 4 Jan 2018 00:15:40 +0000 Message-ID: <1515024955-13390-12-git-send-email-andrew.cooper3@citrix.com> References: <1515024955-13390-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: <1515024955-13390-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: Andrew Cooper List-Id: xen-devel@lists.xenproject.org SW50cm9kdWNlIENBTExfVEhVTksgYW5kIEpNUF9USFVOSyB3aGljaCBlaXRoZXIgZGVncmFkZSB0 byBhIG5vcm1hbCBpbmRpcmVjdApicmFuY2gsIG9yIGRpc3BhdGNoIHRvIHRoZSBfX3g4Ni5pbmRp cmVjdF90aHVuay4qIHN5bWJvbHMuCgpVcGRhdGUgYWxsIHRoZSBtYW51YWwgaW5kaXJlY3QgYnJh bmNoZXMgaW4gdG8gdXNlIHRoZSBuZXcgdGh1bmtzLiAgVGhlCmluZGlyZWN0IGJyYW5jaGVzIGlu IHRoZSBlYXJseSBib290IGFuZCBrZXhlYyBwYXRoIGFyZSBsZWZ0IGludGFjdCBhcyB3ZSBjYW4n dAp1c2UgdGhlIGNvbXBpbGVkLWluIHRodW5rcyBhdCB0aG9zZSBwb2ludHMuCgpTaWduZWQtb2Zm LWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KdjQ6CiAq IE5ldwp2NjoKICogVGh1bmsgbW9yZSBhc3NlbWJseQogKiBGaXggY2hlY2tfd2FrZXVwX2Zyb21f d2FpdCgpIHRvIG5vdCBjb3JydXB0IGl0cyBzdGFjawp2NzoKICogUHJvdGVjdCB0aGUgam1wIGZy b20gdGhlIHRyYW1wb2xpbmUgaW50byB0aGUgaGlnaCBtYXBwaW5ncyBvbiB0aGUgQVAgYm9vdAog ICBwYXRoLCBhbmQgdGhlIGhhbmQtY3JhZnRlZCBpbmRpcmVjdCBqdW1wIGluIHRoZSBQViBJTyBl bXVsYXRpb24gc3R1YnMuCi0tLQogeGVuL2FyY2gveDg2L2Jvb3QvdHJhbXBvbGluZS5TICAgICAg ICAgICB8IDI0ICsrKysrKysrKysrKysrKysrLS0KIHhlbi9hcmNoL3g4Ni9leHRhYmxlLmMgICAg ICAgICAgICAgICAgICAgfCAgNCArKy0tCiB4ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2LW9wLmMg ICAgICAgICAgIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHhlbi9hcmNo L3g4Ni94ODZfNjQvZW50cnkuUyAgICAgICAgICAgICAgfCAgNiArKystLQogeGVuL2FyY2gveDg2 L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgICB8ICA0ICsrLS0KIHhlbi9jb21tb24vd2FpdC5j ICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2 L2FzbV9kZWZucy5oICAgICAgICAgIHwgIDggKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9p bmRpcmVjdF90aHVua19hc20uaCB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiA4IGZpbGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9hc20teDg2L2luZGlyZWN0X3RodW5rX2FzbS5o CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvdHJhbXBvbGluZS5TIGIveGVuL2FyY2gv eDg2L2Jvb3QvdHJhbXBvbGluZS5TCmluZGV4IDRkNjQwZjMuLmFiZjQwZjMgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9ib290L3RyYW1wb2xpbmUuUworKysgYi94ZW4vYXJjaC94ODYvYm9vdC90 cmFtcG9saW5lLlMKQEAgLTE1Myw4ICsxNTMsMjggQEAgdHJhbXBvbGluZV9wcm90bW9kZV9lbnRy eToKICAgICAgICAgLmNvZGU2NAogc3RhcnQ2NDoKICAgICAgICAgLyogSnVtcCB0byBoaWdoIG1h cHBpbmdzLiAqLwotICAgICAgICBtb3ZhYnMgICRfX2hpZ2hfc3RhcnQsJXJheAotICAgICAgICBq bXBxICAgIColcmF4CisgICAgICAgIG1vdmFicyAgJF9faGlnaF9zdGFydCwgJXJkaQorCisjaWZk ZWYgQ09ORklHX0lORElSRUNUX1RIVU5LCisgICAgICAgIC8qCisgICAgICAgICAqIElmIGJvb3Rp bmcgdmlydHVhbGlzZWQsIG9yIGhvdC1vbmxpbmluZyBhIENQVSwgc2libGluZyB0aHJlYWRzIGNh bgorICAgICAgICAgKiBhdHRlbXB0IEJyYW5jaCBUYXJnZXQgSW5qZWN0aW9uIGFnYWluc3QgdGhp cyBqbXAuCisgICAgICAgICAqCisgICAgICAgICAqIFdlJ3ZlIGdvdCBubyB1c2FibGUgc3RhY2sg c28gY2FuJ3QgdXNlIGEgUkVUUE9MSU5FIHRodW5rLCBhbmQgYXJlCisgICAgICAgICAqIGZ1cnRo ZXIgdGhhbiArLSAyRyBmcm9tIHRoZSBoaWdoIG1hcHBpbmdzIHNvIGNvdWxkbid0IHVzZSBKVU1Q X1RIVU5LCisgICAgICAgICAqIGV2ZW4gaWYgd2FzIGEgbm9uLVJFVFBPTElORSB0aHVuay4gIEZ1 dGhlcm1vcmUsIGFuIExGRU5DRSBpc24ndAorICAgICAgICAgKiBuZWNlc3NlcmlseSBzYWZlIHRv IHVzZSBhdCB0aGlzIHBvaW50LgorICAgICAgICAgKgorICAgICAgICAgKiBBcyB0aGlzIGlzbid0 IGEgaG90cGF0aCwgdXNlIGEgZnVsbHkgc2VyaWFsaXNpbmcgZXZlbnQgdG8gcmVkdWNlCisgICAg ICAgICAqIHRoZSBzcGVjdWxhdGlvbiB3aW5kb3cgYXMgbXVjaCBhcyBwb3NzaWJsZS4gICVlYngg bmVlZHMgcHJlc2VydmluZworICAgICAgICAgKiBmb3IgX19oaWdoX3N0YXJ0LgorICAgICAgICAg Ki8KKyAgICAgICAgbW92ICAgICAlZWJ4LCAlZXNpCisgICAgICAgIGNwdWlkCisgICAgICAgIG1v diAgICAgJWVzaSwgJWVieAorI2VuZGlmCisKKyAgICAgICAgam1wcSAgICAqJXJkaQogCiAjaW5j bHVkZSAid2FrZXVwLlMiCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9leHRhYmxlLmMgYi94 ZW4vYXJjaC94ODYvZXh0YWJsZS5jCmluZGV4IDZmZmZlMDUuLmJmNTgyMmQgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9leHRhYmxlLmMKKysrIGIveGVuL2FyY2gveDg2L2V4dGFibGUuYwpAQCAt MTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHN0dWJfc2VsZnRlc3Qodm9pZCkKICAg ICAgICAgbWVtY3B5KHB0ciwgdGVzdHNbaV0ub3BjLCBBUlJBWV9TSVpFKHRlc3RzW2ldLm9wYykp OwogICAgICAgICB1bm1hcF9kb21haW5fcGFnZShwdHIpOwogCi0gICAgICAgIGFzbSB2b2xhdGls ZSAoICJjYWxsIColW3N0Yl1cbiIKKyAgICAgICAgYXNtIHZvbGF0aWxlICggIkNBTExfVEhVTksg JVtzdGJdXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIuTHJldCU9OlxuXHQiCiAgICAgICAg ICAgICAgICAgICAgICAgICIucHVzaHNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgogICAgICAgICAg ICAgICAgICAgICAgICAiLkxmaXglPTpcblx0IgpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBp bnQgX19pbml0IHN0dWJfc2VsZnRlc3Qodm9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgIi5w b3BzZWN0aW9uXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgX0FTTV9FWFRBQkxFKC5McmV0 JT0sIC5MZml4JT0pCiAgICAgICAgICAgICAgICAgICAgICAgIDogW2V4bl0gIittIiAocmVzKQot ICAgICAgICAgICAgICAgICAgICAgICA6IFtzdGJdICJybSIgKGFkZHIpLCAiYSIgKHRlc3RzW2ld LnJheCkpOworICAgICAgICAgICAgICAgICAgICAgICA6IFtzdGJdICJyIiAoYWRkciksICJhIiAo dGVzdHNbaV0ucmF4KSk7CiAgICAgICAgIEFTU0VSVChyZXMgPT0gdGVzdHNbaV0ucmVzLnJhdyk7 CiAgICAgfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2LW9wLmMgYi94 ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2LW9wLmMKaW5kZXggMTA0MWE0Yy4uNmRhOWI0NiAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L2VtdWwtcHJpdi1vcC5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9wdi9lbXVsLXByaXYtb3AuYwpAQCAtNzMsMzcgKzczLDU4IEBAIHZvaWQgKCpwdl9wb3N0X291 dGJfaG9vaykodW5zaWduZWQgaW50IHBvcnQsIHU4IHZhbHVlKTsKIAogdHlwZWRlZiB2b2lkIGlv X2VtdWxfc3R1Yl90KHN0cnVjdCBjcHVfdXNlcl9yZWdzICopOwogCisjaWZkZWYgQ09ORklHX0lO RElSRUNUX1RIVU5LCitleHRlcm4gY2hhciBpbmRfdGh1bmtfcmN4W10gYXNtICgiX194ODYuaW5k aXJlY3RfdGh1bmsucmN4Iik7CisjZW5kaWYKKwogc3RhdGljIGlvX2VtdWxfc3R1Yl90ICppb19l bXVsX3N0dWJfc2V0dXAoc3RydWN0IHByaXZfb3BfY3R4dCAqY3R4dCwgdTggb3Bjb2RlLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBvcnQs IHVuc2lnbmVkIGludCBieXRlcykKIHsKKyAgICBzdHJ1Y3Qgc3R1YnMgKnRoaXNfc3R1YnMgPSAm dGhpc19jcHUoc3R1YnMpOworICAgIHVuc2lnbmVkIGxvbmcgc3R1Yl92YSA9IHRoaXNfc3R1YnMt PmFkZHIgKyBTVFVCX0JVRl9TSVpFIC8gMjsKKwogICAgIGlmICggIWN0eHQtPmlvX2VtdWxfc3R1 YiApCi0gICAgICAgIGN0eHQtPmlvX2VtdWxfc3R1YiA9IG1hcF9kb21haW5fcGFnZShfbWZuKHRo aXNfY3B1KHN0dWJzLm1mbikpKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodGhpc19jcHUoc3R1YnMuYWRkcikgJgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH5QQUdFX01BU0spICsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUVUJfQlVGX1NJWkUgLyAyOworICAgICAgICBj dHh0LT5pb19lbXVsX3N0dWIgPQorICAgICAgICAgICAgbWFwX2RvbWFpbl9wYWdlKF9tZm4odGhp c19zdHVicy0+bWZuKSkgKyAoc3R1Yl92YSAmIH5QQUdFX01BU0spOwogCiAgICAgLyogbW92cSAk aG9zdF90b19ndWVzdF9ncHJfc3dpdGNoLCVyY3ggKi8KICAgICBjdHh0LT5pb19lbXVsX3N0dWJb MF0gPSAweDQ4OwogICAgIGN0eHQtPmlvX2VtdWxfc3R1YlsxXSA9IDB4Yjk7CiAgICAgKih2b2lk ICoqKSZjdHh0LT5pb19lbXVsX3N0dWJbMl0gPSAodm9pZCAqKWhvc3RfdG9fZ3Vlc3RfZ3ByX3N3 aXRjaDsKKworI2lmZGVmIENPTkZJR19JTkRJUkVDVF9USFVOSworICAgIC8qIGNhbGxxIF9feDg2 LmluZGlyZWN0X3RodW5rLnJjeCAqLworICAgIGN0eHQtPmlvX2VtdWxfc3R1YlsxMF0gPSAweGU4 OworICAgICooaW50MzJfdCAqKSZjdHh0LT5pb19lbXVsX3N0dWJbMTFdID0KKyAgICAgICAgX3Ao aW5kX3RodW5rX3JjeCkgLSBfcChzdHViX3ZhICsgMTEgKyA0KTsKKworI2Vsc2UKICAgICAvKiBj YWxscSAqJXJjeCAqLwogICAgIGN0eHQtPmlvX2VtdWxfc3R1YlsxMF0gPSAweGZmOwogICAgIGN0 eHQtPmlvX2VtdWxfc3R1YlsxMV0gPSAweGQxOworCisgICAgLyoKKyAgICAgKiAzIGJ5dGVzIG9m IFA2X05PUFMuCisgICAgICogVE9ETzogdW50YW5nbGUgaWRlYWxfbm9wcyBmcm9tIGluaXQvbGl2 ZXBhdGNoIEtjb25maWcgb3B0aW9ucy4KKyAgICAgKi8KKyAgICBtZW1jcHkoJmN0eHQtPmlvX2Vt dWxfc3R1YlsxMl0sICJceDBmXHgxZlx4MDAiLCAzKTsKKyNlbmRpZgorCiAgICAgLyogZGF0YTE2 IG9yIG5vcCAqLwotICAgIGN0eHQtPmlvX2VtdWxfc3R1YlsxMl0gPSAoYnl0ZXMgIT0gMikgPyAw eDkwIDogMHg2NjsKKyAgICBjdHh0LT5pb19lbXVsX3N0dWJbMTVdID0gKGJ5dGVzICE9IDIpID8g MHg5MCA6IDB4NjY7CiAgICAgLyogPGlvLWFjY2VzcyBvcGNvZGU+ICovCi0gICAgY3R4dC0+aW9f ZW11bF9zdHViWzEzXSA9IG9wY29kZTsKKyAgICBjdHh0LT5pb19lbXVsX3N0dWJbMTZdID0gb3Bj b2RlOwogICAgIC8qIGltbTggb3Igbm9wICovCi0gICAgY3R4dC0+aW9fZW11bF9zdHViWzE0XSA9 ICEob3Bjb2RlICYgOCkgPyBwb3J0IDogMHg5MDsKKyAgICBjdHh0LT5pb19lbXVsX3N0dWJbMTdd ID0gIShvcGNvZGUgJiA4KSA/IHBvcnQgOiAweDkwOwogICAgIC8qIHJldCAoanVtcHMgdG8gZ3Vl c3RfdG9faG9zdF9ncHJfc3dpdGNoKSAqLwotICAgIGN0eHQtPmlvX2VtdWxfc3R1YlsxNV0gPSAw eGMzOwotICAgIEJVSUxEX0JVR19PTihTVFVCX0JVRl9TSVpFIC8gMiA8IDE2KTsKKyAgICBjdHh0 LT5pb19lbXVsX3N0dWJbMThdID0gMHhjMzsKKyAgICBCVUlMRF9CVUdfT04oU1RVQl9CVUZfU0la RSAvIDIgPCAxOSk7CiAKICAgICBpZiAoIGlvZW11bF9oYW5kbGVfcXVpcmsgKQogICAgICAgICBp b2VtdWxfaGFuZGxlX3F1aXJrKG9wY29kZSwgJmN0eHQtPmlvX2VtdWxfc3R1YlsxMl0sIGN0eHQt PmN0eHQucmVncyk7CiAKICAgICAvKiBIYW5keSBmdW5jdGlvbi10eXBlZCBwb2ludGVyIHRvIHRo ZSBzdHViLiAqLwotICAgIHJldHVybiAodm9pZCAqKSh0aGlzX2NwdShzdHVicy5hZGRyKSArIFNU VUJfQlVGX1NJWkUgLyAyKTsKKyAgICByZXR1cm4gKHZvaWQgKilzdHViX3ZhOwogfQogCiAKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvZW50cnkuUyBiL3hlbi9hcmNoL3g4Ni94ODZf NjQvZW50cnkuUwppbmRleCAxZGQ5Y2NmLi5iNDlkNjJiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYveDg2XzY0L2VudHJ5LlMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5TCkBAIC00 NzQsNyArNDc0LDggQEAgaGFuZGxlX2V4Y2VwdGlvbl9zYXZlZDoKICAgICAgICAgbW92emJsIFVS RUdTX2VudHJ5X3ZlY3RvciglcnNwKSwlZWF4CiAgICAgICAgIGxlYXEgIGV4Y2VwdGlvbl90YWJs ZSglcmlwKSwlcmR4CiAgICAgICAgIFBFUkZDX0lOQ1IoZXhjZXB0aW9ucywgJXJheCwgJXJieCkK LSAgICAgICAgY2FsbHEgKiglcmR4LCVyYXgsOCkKKyAgICAgICAgbW92ICAgKCVyZHgsICVyYXgs IDgpLCAlcmR4CisgICAgICAgIENBTExfVEhVTksgJXJkeAogICAgICAgICB0ZXN0YiAkMyxVUkVH U19jcyglcnNwKQogICAgICAgICBqeiAgICByZXN0b3JlX2FsbF94ZW4KICAgICAgICAgbGVhcSAg VkNQVV90cmFwX2JvdW5jZSglcmJ4KSwlcmR4CkBAIC02MTUsNyArNjE2LDggQEAgaGFuZGxlX2lz dF9leGNlcHRpb246CiAxOiAgICAgIG1vdnEgICVyc3AsJXJkaQogICAgICAgICBtb3Z6YmwgVVJF R1NfZW50cnlfdmVjdG9yKCVyc3ApLCVlYXgKICAgICAgICAgbGVhcSAgZXhjZXB0aW9uX3RhYmxl KCVyaXApLCVyZHgKLSAgICAgICAgY2FsbHEgKiglcmR4LCVyYXgsOCkKKyAgICAgICAgbW92ICAg KCVyZHgsICVyYXgsIDgpLCAlcmR4CisgICAgICAgIENBTExfVEhVTksgJXJkeAogICAgICAgICBj bXBiICAkVFJBUF9ubWksVVJFR1NfZW50cnlfdmVjdG9yKCVyc3ApCiAgICAgICAgIGpuZSAgIHJl dF9mcm9tX2ludHIKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9l bXVsYXRlLmMgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwppbmRleCA4 MjA0OTVmLi4zZDU2YjgxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2 X2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpA QCAtODY3LDcgKzg2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1rZWModWludDhfdCBlLCBpbnQz Ml90IGVjLCAuLi4pCiAjaWZkZWYgX19YRU5fXwogIyBkZWZpbmUgaW52b2tlX3N0dWIocHJlLCBw b3N0LCBjb25zdHJhaW50cy4uLikgZG8geyAgICAgICAgICAgICAgICAgICAgXAogICAgIHVuaW9u IHN0dWJfZXhjZXB0aW9uX3Rva2VuIHJlc18gPSB7IC5yYXcgPSB+MCB9OyAgICAgICAgICAgICAg ICAgICAgXAotICAgIGFzbSB2b2xhdGlsZSAoIHByZSAiXG5cdGNhbGwgKiVbc3R1Yl1cblx0IiBw b3N0ICJcbiIgICAgICAgICAgICAgICAgXAorICAgIGFzbSB2b2xhdGlsZSAoIHByZSAiXG5cdENB TExfVEhVTksgJVtzdHViXVxuXHQiIHBvc3QgIlxuIiAgICAgICAgICAgXAogICAgICAgICAgICAg ICAgICAgICIuTHJldCU9OlxuXHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAogICAgICAgICAgICAgICAgICAgICIucHVzaHNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAg ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICIuTGZpeCU9OlxuXHQi ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtODc2LDcgKzg3Niw3 IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1rZWModWludDhfdCBlLCBpbnQzMl90IGVjLCAuLi4pCiAg ICAgICAgICAgICAgICAgICAgIi5wb3BzZWN0aW9uXG5cdCIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgX0FTTV9FWFRBQkxFKC5McmV0JT0s IC5MZml4JT0pICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgOiBb ZXhuXSAiK2ciIChyZXNfKSwgY29uc3RyYWludHMsICAgICAgICAgICAgICAgICAgICBcCi0gICAg ICAgICAgICAgICAgICAgICBbc3R1Yl0gInJtIiAoc3R1Yi5mdW5jKSwgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBbc3R1Yl0gInIiIChzdHViLmZ1bmMp LCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAibSIg KCoodWludDhfdCgqKVtNQVhfSU5TVF9MRU4gKyAxXSlzdHViLnB0cikgKTsgICBcCiAgICAgaWYg KCB1bmxpa2VseSh+cmVzXy5yYXcpICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCiAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3dhaXQu YyBiL3hlbi9jb21tb24vd2FpdC5jCmluZGV4IDNkM2Q5ZmUuLjRiNWE4YmYgMTAwNjQ0Ci0tLSBh L3hlbi9jb21tb24vd2FpdC5jCisrKyBiL3hlbi9jb21tb24vd2FpdC5jCkBAIC0yMDMsMTIgKzIw MywxNCBAQCB2b2lkIGNoZWNrX3dha2V1cF9mcm9tX3dhaXQodm9pZCkKIAogICAgIC8qCiAgICAg ICogSGFuZC1yb2xsZWQgbG9uZ2ptcCgpLiAgUmV0dXJucyB0byB0aGUgcG9pbnRlciBvbiB0aGUg dG9wIG9mCi0gICAgICogd3F2LT5zdGFjaywgYW5kIGxhbmRzIG9uIGEgYHJlcCBtb3ZzYCBpbnN0 cnVjdGlvbi4KKyAgICAgKiB3cXYtPnN0YWNrLCBhbmQgbGFuZHMgb24gYSBgcmVwIG1vdnNgIGlu c3RydWN0aW9uLiAgQWxsIG90aGVyIEdQUnMgYXJlCisgICAgICogcmVzdG9yZWQgZnJvbSB0aGUg c3RhY2ssIHNvIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBoZXJlLgogICAgICAqLwogICAgIGFzbSB2 b2xhdGlsZSAoCi0gICAgICAgICJtb3YgJTEsJSUiX19PUCJzcDsgam1wICooJTApIgorICAgICAg ICAibW92ICUxLCUlIl9fT1Aic3A7IEpNUF9USFVOSyAlW2lwXSIKICAgICAgICAgOiA6ICJTIiAo d3F2LT5zdGFjayksICJEIiAod3F2LT5lc3ApLAotICAgICAgICAiYyIgKChjaGFyICopZ2V0X2Nw dV9pbmZvKCkgLSAoY2hhciAqKXdxdi0+ZXNwKQorICAgICAgICAgICJjIiAoKGNoYXIgKilnZXRf Y3B1X2luZm8oKSAtIChjaGFyICopd3F2LT5lc3ApLAorICAgICAgICAgIFtpcF0gInIiICgqKHVu c2lnbmVkIGxvbmcgKil3cXYtPnN0YWNrKQogICAgICAgICA6ICJtZW1vcnkiICk7CiAgICAgdW5y ZWFjaGFibGUoKTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvYXNtX2RlZm5z LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2FzbV9kZWZucy5oCmluZGV4IDdlODgzOGUuLjQwYjAy NTAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvYXNtX2RlZm5zLmgKKysrIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9hc21fZGVmbnMuaApAQCAtMTMsNiArMTMsMTQgQEAKICNpbmNsdWRl IDxhc20vY3B1ZmVhdHVyZS5oPgogI2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS5oPgogCisjaWZk ZWYgX19BU1NFTUJMWV9fCisjIGluY2x1ZGUgPGFzbS9pbmRpcmVjdF90aHVua19hc20uaD4KKyNl bHNlCithc20gKCAiXHQuZXF1IENPTkZJR19JTkRJUkVDVF9USFVOSywgIgorICAgICAgX19zdHJp bmdpZnkoSVNfRU5BQkxFRChDT05GSUdfSU5ESVJFQ1RfVEhVTkspKSApOworYXNtICggIlx0Lmlu Y2x1ZGUgXCJhc20vaW5kaXJlY3RfdGh1bmtfYXNtLmhcIiIgKTsKKyNlbmRpZgorCiAjaWZuZGVm IF9fQVNTRU1CTFlfXwogdm9pZCByZXRfZnJvbV9pbnRyKHZvaWQpOwogI2VuZGlmCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2luZGlyZWN0X3RodW5rX2FzbS5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9pbmRpcmVjdF90aHVua19hc20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi41NTRkZDdlCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9pbmRpcmVjdF90aHVua19hc20uaApAQCAtMCwwICsxLDQxIEBACisvKgorICogV2FybmluZyEg IFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBhdCBhbiBhc3NlbWJsZXIgbGV2ZWwgZm9yIC5jIGZpbGVz LCBjYXVzaW5nCisgKiB1c3VhbCAjaWZkZWYnYXJ5IHRvIHR1cm4gaW50byBjb21tZW50cy4KKyAq LworCisubWFjcm8gSU5EX1RIVU5LIGluc246cmVxIGFyZzpyZXEKKy8qCisgKiBDcmVhdGUgYW4g aW5kaXJlY3QgYnJhbmNoLiAgaW5zbiBpcyBvbmUgb2YgY2FsbC9qbXAsIGFyZyBpcyBhIHNpbmds ZQorICogcmVnaXN0ZXIuCisgKgorICogV2l0aCBubyBjb21waWxlciBzdXBwb3J0LCB0aGlzIGRl Z3JhdGVkIGludG8gYSBwbGFpbiBpbmRpcmVjdCBjYWxsL2ptcC4KKyAqIFdpdGggY29tcGlsZXIg c3VwcG9ydCwgZGlzcGF0Y2ggdG8gdGhlIGNvcnJlY3QgX194ODYuaW5kaXJlY3RfdGh1bmsuKgor ICovCisgICAgLmlmIENPTkZJR19JTkRJUkVDVF9USFVOSyA9PSAxCisKKyAgICAgICAgJGRvbmUg PSAwCisgICAgICAgIC5pcnAgcmVnLCByYXgsIHJieCwgcmN4LCByZHgsIHJzaSwgcmRpLCByYnAs IHI4LCByOSwgcjEwLCByMTEsIHIxMiwgcjEzLCByMTQsIHIxNQorICAgICAgICAuaWZlcXMgIlxh cmciLCAiJVxyZWciCisgICAgICAgICAgICBcaW5zbiBfX3g4Ni5pbmRpcmVjdF90aHVuay5ccmVn CisgICAgICAgICAgICAkZG9uZSA9IDEKKyAgICAgICAgICAgLmV4aXRtCisgICAgICAgIC5lbmRp ZgorICAgICAgICAuZW5kcgorCisgICAgICAgIC5pZiAkZG9uZSAhPSAxCisgICAgICAgIC5lcnJv ciAiQmFkIHJlZ2lzdGVyIGFyZyBcYXJnIgorICAgICAgICAuZW5kaWYKKworICAgIC5lbHNlCisg ICAgICAgIFxpbnNuICpcYXJnCisgICAgLmVuZGlmCisuZW5kbQorCisvKiBDb252ZW5pZW5jZSB3 cmFwcGVycy4gKi8KKy5tYWNybyBDQUxMX1RIVU5LIGFyZzpyZXEKKyAgICBJTkRfVEhVTksgY2Fs bCwgXGFyZworLmVuZG0KKworLm1hY3JvIEpNUF9USFVOSyBhcmc6cmVxCisgICAgSU5EX1RIVU5L IGptcCwgXGFyZworLmVuZG0KLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL3hlbi1kZXZlbA==