From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v8 02/17] x86: Support indirect thunks from assembly code Date: Fri, 12 Jan 2018 18:00:52 +0000 Message-ID: <1515780067-31735-3-git-send-email-andrew.cooper3@citrix.com> References: <1515780067-31735-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: <1515780067-31735-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 SW50cm9kdWNlIElORElSRUNUX0NBTEwgYW5kIElORElSRUNUX0pNUCB3aGljaCBlaXRoZXIgZGVn cmFkZSB0byBhIG5vcm1hbAppbmRpcmVjdCBicmFuY2gsIG9yIGRpc3BhdGNoIHRvIHRoZSBfX3g4 Nl9pbmRpcmVjdF90aHVua18qIHN5bWJvbHMuCgpVcGRhdGUgYWxsIHRoZSBtYW51YWwgaW5kaXJl Y3QgYnJhbmNoZXMgaW4gdG8gdXNlIHRoZSBuZXcgdGh1bmtzLiAgVGhlCmluZGlyZWN0IGJyYW5j aGVzIGluIHRoZSBlYXJseSBib290IGFuZCBrZXhlYyBwYXRoIGFyZSBsZWZ0IGludGFjdCBhcyB3 ZSBjYW4ndAp1c2UgdGhlIGNvbXBpbGVkLWluIHRodW5rcyBhdCB0aG9zZSBwb2ludHMuCgpTaWdu ZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0K djc6CiAqIFByb3RlY3QgdGhlIGptcCBmcm9tIHRoZSB0cmFtcG9saW5lIGludG8gdGhlIGhpZ2gg bWFwcGluZ3Mgb24gdGhlIEFQIGJvb3QKICAgcGF0aCwgYW5kIHRoZSBoYW5kLWNyYWZ0ZWQgaW5k aXJlY3QganVtcCBpbiB0aGUgUFYgSU8gZW11bGF0aW9uIHN0dWJzLgogKiBSZWJhc2Ugb3ZlciBj b21waWxlciBjaGFuZ2VzCiAqIFNwZWxsaW5nIGZpeGVzCiAqIEZpeCBjbGFuZyBidWlsZAp2ODoK ICogU3BlbGxpbmcvZ3JhbW1hciBmaXhlcwotLS0KIHhlbi9SdWxlcy5tayAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgNCArKy0tCiB4ZW4vYXJjaC94ODYvUnVsZXMubWsgICAgICAgICAg ICAgICAgICAgIHwgIDYgKysrKysKIHhlbi9hcmNoL3g4Ni9ib290L3RyYW1wb2xpbmUuUyAgICAg ICAgICAgfCAyNCArKysrKysrKysrKysrKysrKy0tCiB4ZW4vYXJjaC94ODYvZXh0YWJsZS5jICAg ICAgICAgICAgICAgICAgIHwgIDQgKystLQogeGVuL2FyY2gveDg2L3B2L2VtdWwtcHJpdi1vcC5j ICAgICAgICAgICB8IDQxICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiB4ZW4vYXJj aC94ODYveDg2XzY0L2VudHJ5LlMgICAgICAgICAgICAgIHwgIDYgKysrLS0KIHhlbi9hcmNoL3g4 Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jICAgfCAgNCArKy0tCiB4ZW4vY29tbW9uL3dhaXQu YyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKysrKy0tLQogeGVuL2luY2x1ZGUvYXNtLXg4 Ni9hc21fZGVmbnMuaCAgICAgICAgICB8ICA4ICsrKysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYv aW5kaXJlY3RfdGh1bmtfYXNtLmggfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogMTAgZmlsZXMgY2hhbmdlZCwgMTIxIGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2FzbS14ODYvaW5kaXJlY3RfdGh1bmtfYXNt LmgKCmRpZmYgLS1naXQgYS94ZW4vUnVsZXMubWsgYi94ZW4vUnVsZXMubWsKaW5kZXggMjY1OWY4 YS4uM2NmNDA3NSAxMDA2NDQKLS0tIGEveGVuL1J1bGVzLm1rCisrKyBiL3hlbi9SdWxlcy5tawpA QCAtNjYsOCArNjYsOCBAQCBlbmRpZgogCiBBRkxBR1MteSAgICAgICAgICAgICAgICArPSAtRF9f QVNTRU1CTFlfXwogCi0jIENsYW5nJ3MgYnVpbHQtaW4gYXNzZW1ibGVyIGNhbid0IGhhbmRsZSAu Y29kZTE2Ly5jb2RlMzIvLmNvZGU2NCB5ZXQKLUFGTEFHUy0kKGNsYW5nKSAgICAgICAgICs9IC1u by1pbnRlZ3JhdGVkLWFzCisjIENsYW5nJ3MgYnVpbHQtaW4gYXNzZW1ibGVyIGNhbid0IGhhbmRs ZSBlbWJlZGRlZCAuaW5jbHVkZSdzCitDRkxBR1MtJChjbGFuZykgICAgICAgICArPSAtbm8taW50 ZWdyYXRlZC1hcwogCiBBTExfT0JKUyA6PSAkKEFMTF9PQkpTLXkpCiAKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9SdWxlcy5tayBiL3hlbi9hcmNoL3g4Ni9SdWxlcy5tawppbmRleCBhYmNjNGQ0 Li43MGU5ZDhmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvUnVsZXMubWsKKysrIGIveGVuL2Fy Y2gveDg2L1J1bGVzLm1rCkBAIC0zNywzICszNyw5IEBAIENGTEFHUyArPSAtbWluZGlyZWN0LWJy YW5jaD10aHVuay1leHRlcm4gLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIKIENGTEFHUyArPSAt RENPTkZJR19JTkRJUkVDVF9USFVOSwogZXhwb3J0IENPTkZJR19JTkRJUkVDVF9USFVOSz15CiBl bmRpZgorCisjIFNldCB1cCB0aGUgYXNzZW1ibGVyIGluY2x1ZGUgcGF0aCBwcm9wZXJseSBmb3Ig b2xkZXIgR0NDIHRvb2xjaGFpbnMuICBDbGFuZworIyBvYmplY3RzIHRvIHRoZSBhZ3VtZW50IGJl aW5nIHBhc3NlZCBob3dldmVyLgoraWZuZXEgKCQoY2xhbmcpLHkpCitDRkxBR1MgKz0gLVdhLC1J JChCQVNFRElSKS9pbmNsdWRlCitlbmRpZgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3Qv dHJhbXBvbGluZS5TIGIveGVuL2FyY2gveDg2L2Jvb3QvdHJhbXBvbGluZS5TCmluZGV4IDRkNjQw ZjMuLmY3MGQ5MTMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L3RyYW1wb2xpbmUuUwor KysgYi94ZW4vYXJjaC94ODYvYm9vdC90cmFtcG9saW5lLlMKQEAgLTE1Myw4ICsxNTMsMjggQEAg dHJhbXBvbGluZV9wcm90bW9kZV9lbnRyeToKICAgICAgICAgLmNvZGU2NAogc3RhcnQ2NDoKICAg ICAgICAgLyogSnVtcCB0byBoaWdoIG1hcHBpbmdzLiAqLwotICAgICAgICBtb3ZhYnMgICRfX2hp Z2hfc3RhcnQsJXJheAotICAgICAgICBqbXBxICAgIColcmF4CisgICAgICAgIG1vdmFicyAgJF9f aGlnaF9zdGFydCwgJXJkaQorCisjaWZkZWYgQ09ORklHX0lORElSRUNUX1RIVU5LCisgICAgICAg IC8qCisgICAgICAgICAqIElmIGJvb3RpbmcgdmlydHVhbGlzZWQsIG9yIGhvdC1vbmxpbmluZyBh IENQVSwgc2libGluZyB0aHJlYWRzIGNhbgorICAgICAgICAgKiBhdHRlbXB0IEJyYW5jaCBUYXJn ZXQgSW5qZWN0aW9uIGFnYWluc3QgdGhpcyBqbXAuCisgICAgICAgICAqCisgICAgICAgICAqIFdl J3ZlIGdvdCBubyB1c2FibGUgc3RhY2sgc28gY2FuJ3QgdXNlIGEgUkVUUE9MSU5FIHRodW5rLCBh bmQgYXJlCisgICAgICAgICAqIGZ1cnRoZXIgdGhhbiBkaXNwMzIgZnJvbSB0aGUgaGlnaCBtYXBw aW5ncyBzbyBjb3VsZG4ndCB1c2UKKyAgICAgICAgICogSlVNUF9USFVOSyBldmVuIGlmIGl0IHdh cyBhIG5vbi1SRVRQT0xJTkUgdGh1bmsuICBGdXJ0aGVybW9yZSwgYW4KKyAgICAgICAgICogTEZF TkNFIGlzbid0IG5lY2Vzc2FyaWx5IHNhZmUgdG8gdXNlIGF0IHRoaXMgcG9pbnQuCisgICAgICAg ICAqCisgICAgICAgICAqIEFzIHRoaXMgaXNuJ3QgYSBob3RwYXRoLCB1c2UgYSBmdWxseSBzZXJp YWxpc2luZyBldmVudCB0byByZWR1Y2UKKyAgICAgICAgICogdGhlIHNwZWN1bGF0aW9uIHdpbmRv dyBhcyBtdWNoIGFzIHBvc3NpYmxlLiAgJWVieCBuZWVkcyBwcmVzZXJ2aW5nCisgICAgICAgICAq IGZvciBfX2hpZ2hfc3RhcnQuCisgICAgICAgICAqLworICAgICAgICBtb3YgICAgICVlYngsICVl c2kKKyAgICAgICAgY3B1aWQKKyAgICAgICAgbW92ICAgICAlZXNpLCAlZWJ4CisjZW5kaWYKKwor ICAgICAgICBqbXBxICAgIColcmRpCiAKICNpbmNsdWRlICJ3YWtldXAuUyIKIApkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2V4dGFibGUuYyBiL3hlbi9hcmNoL3g4Ni9leHRhYmxlLmMKaW5kZXgg NmZmZmUwNS4uNzJmMzBkOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2V4dGFibGUuYworKysg Yi94ZW4vYXJjaC94ODYvZXh0YWJsZS5jCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIGludCBf X2luaXQgc3R1Yl9zZWxmdGVzdCh2b2lkKQogICAgICAgICBtZW1jcHkocHRyLCB0ZXN0c1tpXS5v cGMsIEFSUkFZX1NJWkUodGVzdHNbaV0ub3BjKSk7CiAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdl KHB0cik7CiAKLSAgICAgICAgYXNtIHZvbGF0aWxlICggImNhbGwgKiVbc3RiXVxuIgorICAgICAg ICBhc20gdm9sYXRpbGUgKCAiSU5ESVJFQ1RfQ0FMTCAlW3N0Yl1cbiIKICAgICAgICAgICAgICAg ICAgICAgICAgIi5McmV0JT06XG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgIi5wdXNoc2Vj dGlvbiAuZml4dXAsXCJheFwiXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIuTGZpeCU9Olxu XHQiCkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIGludCBfX2luaXQgc3R1Yl9zZWxmdGVzdCh2 b2lkKQogICAgICAgICAgICAgICAgICAgICAgICAiLnBvcHNlY3Rpb25cblx0IgogICAgICAgICAg ICAgICAgICAgICAgICBfQVNNX0VYVEFCTEUoLkxyZXQlPSwgLkxmaXglPSkKICAgICAgICAgICAg ICAgICAgICAgICAgOiBbZXhuXSAiK20iIChyZXMpCi0gICAgICAgICAgICAgICAgICAgICAgIDog W3N0Yl0gInJtIiAoYWRkciksICJhIiAodGVzdHNbaV0ucmF4KSk7CisgICAgICAgICAgICAgICAg ICAgICAgIDogW3N0Yl0gInIiIChhZGRyKSwgImEiICh0ZXN0c1tpXS5yYXgpKTsKICAgICAgICAg QVNTRVJUKHJlcyA9PSB0ZXN0c1tpXS5yZXMucmF3KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9wdi9lbXVsLXByaXYtb3AuYyBiL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLXByaXYt b3AuYwppbmRleCBlYmQ2ZGMxLi4yYjJhNThiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHYv ZW11bC1wcml2LW9wLmMKKysrIGIveGVuL2FyY2gveDg2L3B2L2VtdWwtcHJpdi1vcC5jCkBAIC03 Myw0NiArNzMsNjMgQEAgdm9pZCAoKnB2X3Bvc3Rfb3V0Yl9ob29rKSh1bnNpZ25lZCBpbnQgcG9y dCwgdTggdmFsdWUpOwogCiB0eXBlZGVmIHZvaWQgaW9fZW11bF9zdHViX3Qoc3RydWN0IGNwdV91 c2VyX3JlZ3MgKik7CiAKK3ZvaWQgX194ODZfaW5kaXJlY3RfdGh1bmtfcmN4KHZvaWQpOworCiBz dGF0aWMgaW9fZW11bF9zdHViX3QgKmlvX2VtdWxfc3R1Yl9zZXR1cChzdHJ1Y3QgcHJpdl9vcF9j dHh0ICpjdHh0LCB1OCBvcGNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IGJ5dGVzKQogeworICAgIHN0 cnVjdCBzdHVicyAqdGhpc19zdHVicyA9ICZ0aGlzX2NwdShzdHVicyk7CisgICAgdW5zaWduZWQg bG9uZyBzdHViX3ZhID0gdGhpc19zdHVicy0+YWRkciArIFNUVUJfQlVGX1NJWkUgLyAyOwogICAg IGJvb2wgdXNlX3F1aXJrX3N0dWIgPSBmYWxzZTsKIAogICAgIGlmICggIWN0eHQtPmlvX2VtdWxf c3R1YiApCi0gICAgICAgIGN0eHQtPmlvX2VtdWxfc3R1YiA9IG1hcF9kb21haW5fcGFnZShfbWZu KHRoaXNfY3B1KHN0dWJzLm1mbikpKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodGhpc19jcHUoc3R1YnMuYWRkcikgJgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5QQUdFX01BU0spICsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUVUJfQlVGX1NJWkUgLyAyOworICAgICAg ICBjdHh0LT5pb19lbXVsX3N0dWIgPQorICAgICAgICAgICAgbWFwX2RvbWFpbl9wYWdlKF9tZm4o dGhpc19zdHVicy0+bWZuKSkgKyAoc3R1Yl92YSAmIH5QQUdFX01BU0spOwogCiAgICAgLyogbW92 cSAkaG9zdF90b19ndWVzdF9ncHJfc3dpdGNoLCVyY3ggKi8KICAgICBjdHh0LT5pb19lbXVsX3N0 dWJbMF0gPSAweDQ4OwogICAgIGN0eHQtPmlvX2VtdWxfc3R1YlsxXSA9IDB4Yjk7CiAgICAgKih2 b2lkICoqKSZjdHh0LT5pb19lbXVsX3N0dWJbMl0gPSAodm9pZCAqKWhvc3RfdG9fZ3Vlc3RfZ3By X3N3aXRjaDsKKworI2lmZGVmIENPTkZJR19JTkRJUkVDVF9USFVOSworICAgIC8qIGNhbGxxIF9f eDg2X2luZGlyZWN0X3RodW5rX3JjeCAqLworICAgIGN0eHQtPmlvX2VtdWxfc3R1YlsxMF0gPSAw eGU4OworICAgICooaW50MzJfdCAqKSZjdHh0LT5pb19lbXVsX3N0dWJbMTFdID0KKyAgICAgICAg KHVuc2lnbmVkIGxvbmcpX194ODZfaW5kaXJlY3RfdGh1bmtfcmN4IC0gKHN0dWJfdmEgKyAxMSAr IDQpOworCisjZWxzZQogICAgIC8qIGNhbGxxIColcmN4ICovCiAgICAgY3R4dC0+aW9fZW11bF9z dHViWzEwXSA9IDB4ZmY7CiAgICAgY3R4dC0+aW9fZW11bF9zdHViWzExXSA9IDB4ZDE7CiAKKyAg ICAvKgorICAgICAqIDMgYnl0ZXMgb2YgUDZfTk9QUy4KKyAgICAgKiBUT0RPOiB1bnRhbmdsZSBp ZGVhbF9ub3BzIGZyb20gaW5pdC9saXZlcGF0Y2ggS2NvbmZpZyBvcHRpb25zLgorICAgICAqLwor ICAgIG1lbWNweSgmY3R4dC0+aW9fZW11bF9zdHViWzEyXSwgIlx4MGZceDFmXHgwMCIsIDMpOwor I2VuZGlmCisKICAgICBpZiAoIHVubGlrZWx5KGlvZW11bF9oYW5kbGVfcXVpcmspICkKLSAgICAg ICAgdXNlX3F1aXJrX3N0dWIgPSBpb2VtdWxfaGFuZGxlX3F1aXJrKG9wY29kZSwgJmN0eHQtPmlv X2VtdWxfc3R1YlsxMl0sCisgICAgICAgIHVzZV9xdWlya19zdHViID0gaW9lbXVsX2hhbmRsZV9x dWlyayhvcGNvZGUsICZjdHh0LT5pb19lbXVsX3N0dWJbMTVdLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4dC0+Y3R4dC5yZWdzKTsKIAogICAgIGlmICgg IXVzZV9xdWlya19zdHViICkKICAgICB7CiAgICAgICAgIC8qIGRhdGExNiBvciBub3AgKi8KLSAg ICAgICAgY3R4dC0+aW9fZW11bF9zdHViWzEyXSA9IChieXRlcyAhPSAyKSA/IDB4OTAgOiAweDY2 OworICAgICAgICBjdHh0LT5pb19lbXVsX3N0dWJbMTVdID0gKGJ5dGVzICE9IDIpID8gMHg5MCA6 IDB4NjY7CiAgICAgICAgIC8qIDxpby1hY2Nlc3Mgb3Bjb2RlPiAqLwotICAgICAgICBjdHh0LT5p b19lbXVsX3N0dWJbMTNdID0gb3Bjb2RlOworICAgICAgICBjdHh0LT5pb19lbXVsX3N0dWJbMTZd ID0gb3Bjb2RlOwogICAgICAgICAvKiBpbW04IG9yIG5vcCAqLwotICAgICAgICBjdHh0LT5pb19l bXVsX3N0dWJbMTRdID0gIShvcGNvZGUgJiA4KSA/IHBvcnQgOiAweDkwOworICAgICAgICBjdHh0 LT5pb19lbXVsX3N0dWJbMTddID0gIShvcGNvZGUgJiA4KSA/IHBvcnQgOiAweDkwOwogICAgICAg ICAvKiByZXQgKGp1bXBzIHRvIGd1ZXN0X3RvX2hvc3RfZ3ByX3N3aXRjaCkgKi8KLSAgICAgICAg Y3R4dC0+aW9fZW11bF9zdHViWzE1XSA9IDB4YzM7CisgICAgICAgIGN0eHQtPmlvX2VtdWxfc3R1 YlsxOF0gPSAweGMzOwogICAgIH0KIAotICAgIEJVSUxEX0JVR19PTihTVFVCX0JVRl9TSVpFIC8g MiA8IE1BWCgxNiwgLyogRGVmYXVsdCBlbXVsIHN0dWIgKi8KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMTIgKyBJT0VNVUxfUVVJUktfU1RVQl9CWVRFUykpOworICAg IEJVSUxEX0JVR19PTihTVFVCX0JVRl9TSVpFIC8gMiA8IE1BWCgxOSwgLyogRGVmYXVsdCBlbXVs IHN0dWIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUgKyBJ T0VNVUxfUVVJUktfU1RVQl9CWVRFUykpOwogCiAgICAgLyogSGFuZHkgZnVuY3Rpb24tdHlwZWQg cG9pbnRlciB0byB0aGUgc3R1Yi4gKi8KLSAgICByZXR1cm4gKHZvaWQgKikodGhpc19jcHUoc3R1 YnMuYWRkcikgKyBTVFVCX0JVRl9TSVpFIC8gMik7CisgICAgcmV0dXJuICh2b2lkICopc3R1Yl92 YTsKIH0KIAogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMgYi94ZW4v YXJjaC94ODYveDg2XzY0L2VudHJ5LlMKaW5kZXggMWRkOWNjZi4uY2JkNzNmNiAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5TCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQv ZW50cnkuUwpAQCAtNDc0LDcgKzQ3NCw4IEBAIGhhbmRsZV9leGNlcHRpb25fc2F2ZWQ6CiAgICAg ICAgIG1vdnpibCBVUkVHU19lbnRyeV92ZWN0b3IoJXJzcCksJWVheAogICAgICAgICBsZWFxICBl eGNlcHRpb25fdGFibGUoJXJpcCksJXJkeAogICAgICAgICBQRVJGQ19JTkNSKGV4Y2VwdGlvbnMs ICVyYXgsICVyYngpCi0gICAgICAgIGNhbGxxICooJXJkeCwlcmF4LDgpCisgICAgICAgIG1vdiAg ICglcmR4LCAlcmF4LCA4KSwgJXJkeAorICAgICAgICBJTkRJUkVDVF9DQUxMICVyZHgKICAgICAg ICAgdGVzdGIgJDMsVVJFR1NfY3MoJXJzcCkKICAgICAgICAganogICAgcmVzdG9yZV9hbGxfeGVu CiAgICAgICAgIGxlYXEgIFZDUFVfdHJhcF9ib3VuY2UoJXJieCksJXJkeApAQCAtNjE1LDcgKzYx Niw4IEBAIGhhbmRsZV9pc3RfZXhjZXB0aW9uOgogMTogICAgICBtb3ZxICAlcnNwLCVyZGkKICAg ICAgICAgbW92emJsIFVSRUdTX2VudHJ5X3ZlY3RvciglcnNwKSwlZWF4CiAgICAgICAgIGxlYXEg IGV4Y2VwdGlvbl90YWJsZSglcmlwKSwlcmR4Ci0gICAgICAgIGNhbGxxICooJXJkeCwlcmF4LDgp CisgICAgICAgIG1vdiAgICglcmR4LCAlcmF4LCA4KSwgJXJkeAorICAgICAgICBJTkRJUkVDVF9D QUxMICVyZHgKICAgICAgICAgY21wYiAgJFRSQVBfbm1pLFVSRUdTX2VudHJ5X3ZlY3RvciglcnNw KQogICAgICAgICBqbmUgICByZXRfZnJvbV9pbnRyCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4 Nl9lbXVsYXRlLmMKaW5kZXggODIwNDk1Zi4uZmYwYTAwMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVs YXRlL3g4Nl9lbXVsYXRlLmMKQEAgLTg2Nyw3ICs4NjcsNyBAQCBzdGF0aWMgaW5saW5lIGludCBt a2VjKHVpbnQ4X3QgZSwgaW50MzJfdCBlYywgLi4uKQogI2lmZGVmIF9fWEVOX18KICMgZGVmaW5l IGludm9rZV9zdHViKHByZSwgcG9zdCwgY29uc3RyYWludHMuLi4pIGRvIHsgICAgICAgICAgICAg ICAgICAgIFwKICAgICB1bmlvbiBzdHViX2V4Y2VwdGlvbl90b2tlbiByZXNfID0geyAucmF3ID0g fjAgfTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICBhc20gdm9sYXRpbGUgKCBwcmUgIlxuXHRj YWxsIColW3N0dWJdXG5cdCIgcG9zdCAiXG4iICAgICAgICAgICAgICAgIFwKKyAgICBhc20gdm9s YXRpbGUgKCBwcmUgIlxuXHRJTkRJUkVDVF9DQUxMICVbc3R1Yl1cblx0IiBwb3N0ICJcbiIgICAg ICAgIFwKICAgICAgICAgICAgICAgICAgICAiLkxyZXQlPTpcblx0IiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAiLnB1c2hzZWN0aW9u IC5maXh1cCxcImF4XCJcbiIgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAg ICAgICAiLkxmaXglPTpcblx0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKQEAgLTg3Niw3ICs4NzYsNyBAQCBzdGF0aWMgaW5saW5lIGludCBta2VjKHVpbnQ4X3QgZSwg aW50MzJfdCBlYywgLi4uKQogICAgICAgICAgICAgICAgICAgICIucG9wc2VjdGlvblxuXHQiICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgIF9B U01fRVhUQUJMRSguTHJldCU9LCAuTGZpeCU9KSAgICAgICAgICAgICAgICAgICAgICAgXAogICAg ICAgICAgICAgICAgICAgIDogW2V4bl0gIitnIiAocmVzXyksIGNvbnN0cmFpbnRzLCAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgW3N0dWJdICJybSIgKHN0dWIuZnVu YyksICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgW3N0 dWJdICJyIiAoc3R1Yi5mdW5jKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAg ICAgICAgICAgICAgICAgIm0iICgqKHVpbnQ4X3QoKilbTUFYX0lOU1RfTEVOICsgMV0pc3R1Yi5w dHIpICk7ICAgXAogICAgIGlmICggdW5saWtlbHkofnJlc18ucmF3KSApICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0 IGEveGVuL2NvbW1vbi93YWl0LmMgYi94ZW4vY29tbW9uL3dhaXQuYwppbmRleCAzZDNkOWZlLi5h NTdiYzEwIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3dhaXQuYworKysgYi94ZW4vY29tbW9uL3dh aXQuYwpAQCAtMjAzLDEyICsyMDMsMTQgQEAgdm9pZCBjaGVja193YWtldXBfZnJvbV93YWl0KHZv aWQpCiAKICAgICAvKgogICAgICAqIEhhbmQtcm9sbGVkIGxvbmdqbXAoKS4gIFJldHVybnMgdG8g dGhlIHBvaW50ZXIgb24gdGhlIHRvcCBvZgotICAgICAqIHdxdi0+c3RhY2ssIGFuZCBsYW5kcyBv biBhIGByZXAgbW92c2AgaW5zdHJ1Y3Rpb24uCisgICAgICogd3F2LT5zdGFjaywgYW5kIGxhbmRz IG9uIGEgYHJlcCBtb3ZzYCBpbnN0cnVjdGlvbi4gIEFsbCBvdGhlciBHUFJzIGFyZQorICAgICAq IHJlc3RvcmVkIGZyb20gdGhlIHN0YWNrLCBzbyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgaGVyZS4K ICAgICAgKi8KICAgICBhc20gdm9sYXRpbGUgKAotICAgICAgICAibW92ICUxLCUlIl9fT1Aic3A7 IGptcCAqKCUwKSIKKyAgICAgICAgIm1vdiAlMSwlJSJfX09QInNwOyBJTkRJUkVDVF9KTVAgJVtp cF0iCiAgICAgICAgIDogOiAiUyIgKHdxdi0+c3RhY2spLCAiRCIgKHdxdi0+ZXNwKSwKLSAgICAg ICAgImMiICgoY2hhciAqKWdldF9jcHVfaW5mbygpIC0gKGNoYXIgKil3cXYtPmVzcCkKKyAgICAg ICAgICAiYyIgKChjaGFyICopZ2V0X2NwdV9pbmZvKCkgLSAoY2hhciAqKXdxdi0+ZXNwKSwKKyAg ICAgICAgICBbaXBdICJyIiAoKih1bnNpZ25lZCBsb25nICopd3F2LT5zdGFjaykKICAgICAgICAg OiAibWVtb3J5IiApOwogICAgIHVucmVhY2hhYmxlKCk7CiB9CmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hc20teDg2L2FzbV9kZWZucy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9hc21fZGVmbnMu aAppbmRleCA3ZTg4MzhlLi40MGIwMjUwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2 L2FzbV9kZWZucy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvYXNtX2RlZm5zLmgKQEAgLTEz LDYgKzEzLDE0IEBACiAjaW5jbHVkZSA8YXNtL2NwdWZlYXR1cmUuaD4KICNpbmNsdWRlIDxhc20v YWx0ZXJuYXRpdmUuaD4KIAorI2lmZGVmIF9fQVNTRU1CTFlfXworIyBpbmNsdWRlIDxhc20vaW5k aXJlY3RfdGh1bmtfYXNtLmg+CisjZWxzZQorYXNtICggIlx0LmVxdSBDT05GSUdfSU5ESVJFQ1Rf VEhVTkssICIKKyAgICAgIF9fc3RyaW5naWZ5KElTX0VOQUJMRUQoQ09ORklHX0lORElSRUNUX1RI VU5LKSkgKTsKK2FzbSAoICJcdC5pbmNsdWRlIFwiYXNtL2luZGlyZWN0X3RodW5rX2FzbS5oXCIi ICk7CisjZW5kaWYKKwogI2lmbmRlZiBfX0FTU0VNQkxZX18KIHZvaWQgcmV0X2Zyb21faW50cih2 b2lkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9pbmRpcmVjdF90 aHVua19hc20uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaW5kaXJlY3RfdGh1bmtfYXNtLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZiY2MyNQotLS0gL2Rldi9udWxsCisr KyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaW5kaXJlY3RfdGh1bmtfYXNtLmgKQEAgLTAsMCArMSw0 MSBAQAorLyoKKyAqIFdhcm5pbmchICBUaGlzIGZpbGUgaXMgaW5jbHVkZWQgYXQgYW4gYXNzZW1i bGVyIGxldmVsIGZvciAuYyBmaWxlcywgY2F1c2luZworICogdXN1YWwgI2lmZGVmJ2FyeSB0byB0 dXJuIGludG8gY29tbWVudHMuCisgKi8KKworLm1hY3JvIElORElSRUNUX0JSQU5DSCBpbnNuOnJl cSBhcmc6cmVxCisvKgorICogQ3JlYXRlIGFuIGluZGlyZWN0IGJyYW5jaC4gIGluc24gaXMgb25l IG9mIGNhbGwvam1wLCBhcmcgaXMgYSBzaW5nbGUKKyAqIHJlZ2lzdGVyLgorICoKKyAqIFdpdGgg bm8gY29tcGlsZXIgc3VwcG9ydCwgdGhpcyBkZWdyYWRlcyBpbnRvIGEgcGxhaW4gaW5kaXJlY3Qg Y2FsbC9qbXAuCisgKiBXaXRoIGNvbXBpbGVyIHN1cHBvcnQsIGRpc3BhdGNoIHRvIHRoZSBjb3Jy ZWN0IF9feDg2X2luZGlyZWN0X3RodW5rXyoKKyAqLworICAgIC5pZiBDT05GSUdfSU5ESVJFQ1Rf VEhVTksgPT0gMQorCisgICAgICAgICRkb25lID0gMAorICAgICAgICAuaXJwIHJlZywgYXgsIGN4 LCBkeCwgYngsIGJwLCBzaSwgZGksIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUKKyAgICAg ICAgLmlmZXFzICJcYXJnIiwgIiVyXHJlZyIKKyAgICAgICAgICAgIFxpbnNuIF9feDg2X2luZGly ZWN0X3RodW5rX3JccmVnCisgICAgICAgICAgICAkZG9uZSA9IDEKKyAgICAgICAgICAgLmV4aXRt CisgICAgICAgIC5lbmRpZgorICAgICAgICAuZW5kcgorCisgICAgICAgIC5pZiAkZG9uZSAhPSAx CisgICAgICAgICAgICAuZXJyb3IgIkJhZCByZWdpc3RlciBhcmcgXGFyZyIKKyAgICAgICAgLmVu ZGlmCisKKyAgICAuZWxzZQorICAgICAgICBcaW5zbiAqXGFyZworICAgIC5lbmRpZgorLmVuZG0K KworLyogQ29udmVuaWVuY2Ugd3JhcHBlcnMuICovCisubWFjcm8gSU5ESVJFQ1RfQ0FMTCBhcmc6 cmVxCisgICAgSU5ESVJFQ1RfQlJBTkNIIGNhbGwgXGFyZworLmVuZG0KKworLm1hY3JvIElORElS RUNUX0pNUCBhcmc6cmVxCisgICAgSU5ESVJFQ1RfQlJBTkNIIGptcCBcYXJnCisuZW5kbQotLSAK Mi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs