From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: [PATCH v3 5/7] tools/fuzz: introduce x86 instruction emulator target Date: Mon, 12 Dec 2016 11:19:53 +0000 Message-ID: <20161212111953.GA22644@citrix.com> References: <1481534912-1101-1-git-send-email-wei.liu2@citrix.com> <1481534912-1101-6-git-send-email-wei.liu2@citrix.com> <584E82DF0200007800127DC0@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cGOeE-0005Ny-8J for xen-devel@lists.xenproject.org; Mon, 12 Dec 2016 11:19:58 +0000 Content-Disposition: inline In-Reply-To: <584E82DF0200007800127DC0@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , George Dunlap , Tim Deegan , Xen-devel List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBEZWMgMTIsIDIwMTYgYXQgMDI6NTg6MzlBTSAtMDcwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4gPj4+IE9uIDEyLjEyLjE2IGF0IDEwOjI4LCA8d2VpLmxpdTJAY2l0cml4LmNvbT4gd3Jv dGU6Cj4gPiBJbnN0cnVjdGlvbiBlbXVsYXRvciBmdXp6aW5nIGNvZGUgaXMgZnJvbSBjb2RlIHBy ZXZpb3VzIHdyaXR0ZW4gYnkKPiA+IEFuZHJldyBhbmQgR2VvcmdlLiBBZGFwdGVkIHRvIGxsdm0g ZnV6emVyIGFuZCBob29rIHVwIHRoZSBidWlsZCBzeXN0ZW0uCj4gPiAKPiA+IFNpZ25lZC1vZmYt Ynk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4gPiBTaWduZWQt b2ZmLWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+Cj4gPiBTaWdu ZWQtb2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgo+ID4gLS0tCj4gPiBDYzog QW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPiA+IENjOiBHZW9yZ2Ug RHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+Cj4gPiBDYzogSWFuIEphY2tzb24g PGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+Cj4gPiBDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNo QHN1c2UuY29tPgo+ID4gQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3Jh Y2xlLmNvbT4KPiA+IENjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5v cmc+Cj4gPiBDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+Cj4gPiBDYzogV2VpIExpdSA8d2Vp LmxpdTJAY2l0cml4LmNvbT4KPiA+IAo+ID4gdjM6Cj4gPiAxLiBjb2Rpbmcgc3R5bGUgZml4Cj4g PiAyLiBzaGFyZSBtb3JlIGNvZGUKPiA+IDMuIGV4aXQgd2hlbiBzdGFjayBjYW4ndCBiZSBtYWRl IGV4ZWN1dGFibGUKPiA+IC0tLQo+ID4gIC5naXRpZ25vcmUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiA+ICB0b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlv bl9lbXVsYXRvci9NYWtlZmlsZSAgICAgICB8ICAzMSArKysrCj4gPiAgLi4uL3g4Ni1pbnNuLWVt dWxhdG9yLWZ1enplci5jICAgICAgICAgICAgICAgICAgICAgfCAxOTUgKysrKysrKysrKysrKysr KysrKysrCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMjcgaW5zZXJ0aW9ucygrKQo+ID4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCB0b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9NYWtlZmls ZQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCAKPiA+IHRvb2xzL2Z1enoveDg2X2luc3RydWN0aW9u X2VtdWxhdG9yL3g4Ni1pbnNuLWVtdWxhdG9yLWZ1enplci5jCj4gPiAKPiA+IGRpZmYgLS1naXQg YS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQo+ID4gaW5kZXggYTJmMzRhMS4uZDUwNzI0MyAxMDA2 NDQKPiA+IC0tLSBhLy5naXRpZ25vcmUKPiA+ICsrKyBiLy5naXRpZ25vcmUKPiA+IEBAIC0xNDUs NiArMTQ1LDcgQEAgdG9vbHMvZmxhc2svdXRpbHMvZmxhc2stbG9hZHBvbGljeQo+ID4gIHRvb2xz L2ZsYXNrL3V0aWxzL2ZsYXNrLXNldGVuZm9yY2UKPiA+ICB0b29scy9mbGFzay91dGlscy9mbGFz ay1zZXQtYm9vbAo+ID4gIHRvb2xzL2ZsYXNrL3V0aWxzL2ZsYXNrLWxhYmVsLXBjaQo+ID4gK3Rv b2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL3g4Nl9lbXVsYXRlKgo+ID4gIHRvb2xz L2hlbHBlcnMvX3BhdGhzLmgKPiA+ICB0b29scy9oZWxwZXJzL2luaXQteGVuc3RvcmUtZG9tYWlu Cj4gPiAgdG9vbHMvaGVscGVycy94ZW4taW5pdC1kb20wCj4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMv ZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvTWFrZWZpbGUgCj4gPiBiL3Rvb2xzL2Z1enov eDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL01ha2VmaWxlCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+ID4gaW5kZXggMDAwMDAwMC4uMmIxNDdhYwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIv dG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvTWFrZWZpbGUKPiA+IEBAIC0wLDAg KzEsMzEgQEAKPiA+ICtYRU5fUk9PVD0kKENVUkRJUikvLi4vLi4vLi4KPiA+ICtpbmNsdWRlICQo WEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCj4gPiArCj4gPiAreDg2LWluc3RydWN0aW9uLWVtdWxh dG9yLWZ1enplci1hbGw6IHg4Ni1pbnNuLWVtdWxhdG9yLmEgeDg2LWluc24tZW11bGF0b3ItZnV6 emVyLm8KPiA+ICsKPiA+ICt4ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIHg4Nl9lbXVsYXRlL3g4 Nl9lbXVsYXRlLmg6Cj4gPiArCVsgLUwgeDg2X2VtdWxhdGUgXSB8fCBsbiAtc2YgJChYRU5fUk9P VCkveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlIC4KPiA+ICsKPiA+ICt4ODZfZW11bGF0ZS5jIHg4 Nl9lbXVsYXRlLmg6ICU6Cj4gPiArCVsgLUwgJCogXSB8fCBsbiAtc2YgJChYRU5fUk9PVCkvdG9v bHMvdGVzdHMveDg2X2VtdWxhdG9yLyQqCj4gPiArCj4gPiArQ0ZMQUdTICs9ICQoQ0ZMQUdTX3hl bmluY2x1ZGUpCj4gPiArCj4gPiAreDg2X2VtdWxhdGUubzogeDg2X2VtdWxhdGUuYyB4ODZfZW11 bGF0ZS5oIHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgeDg2X2VtdWxhdGUveDg2X2VtdWxhdGUu aAo+IAo+IFBlcmhhcHMgd29ydGh3aGlsZSBzaG9ydGVuaW5nIHRoaXMgdG8KPiAKPiB4ODZfZW11 bGF0ZS5vOiB4ODZfZW11bGF0ZS5bY2hdIHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLltjaF0KPiAK PiA/CgpEb25lLgoKPiAKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3Rvb2xzL2Z1enoveDg2 X2luc3RydWN0aW9uX2VtdWxhdG9yL3g4Ni1pbnNuLWVtdWxhdG9yLWZ1enplci5jCj4gPiBAQCAt MCwwICsxLDE5NSBAQAo+ID4gKyNpbmNsdWRlIDxhc3NlcnQuaD4KPiA+ICsjaW5jbHVkZSA8ZXJy bm8uaD4KPiA+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiA+ICsjaW5jbHVkZSA8aW50dHlwZXMuaD4K PiA+ICsjaW5jbHVkZSA8bGltaXRzLmg+Cj4gPiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4KPiA+ICsj aW5jbHVkZSA8c3RkaW50Lmg+Cj4gPiArI2luY2x1ZGUgPHN0ZGlvLmg+Cj4gPiArI2luY2x1ZGUg PHN0ZGxpYi5oPgo+ID4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiA+ICsjaW5jbHVkZSA8c3lzL3R5 cGVzLmg+Cj4gPiArI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4gPiArI2luY2x1ZGUgPHN5cy9tbWFu Lmg+Cj4gPiArI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ID4gKyNpbmNsdWRlIDx4ZW4veGVuLmg+Cj4g PiArCj4gPiArI2luY2x1ZGUgIng4Nl9lbXVsYXRlLmgiCj4gPiArCj4gPiArc3RhdGljIHVuc2ln bmVkIGNoYXIgZGF0YVs0MDk2XTsKPiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IGRhdGFfaW5kZXgg PSAwOwo+IAo+IFBvaW50bGVzcyBpbml0aWFsaXplci4KPiAKCkRvbmUuCgo+ID4gK3N0YXRpYyB1 bnNpZ25lZCBpbnQgZGF0YV9tYXg7Cj4gPiArCj4gPiArc3RhdGljIGludCBkYXRhX3JlYWQoY29u c3QgY2hhciAqd2h5LCB2b2lkICpkc3QsIHVuc2lnbmVkIGludCBieXRlcykKPiA+ICt7Cj4gPiAr ICAgIHVuc2lnbmVkIGk7Cj4gCj4gUGxlYXNlIGRvbid0IG9taXQgdGhlICJpbnQiIGhlcmUgKGFu ZCBpbiBhIGZldyBtb3JlIHBsYWNlcyBiZWxvdykKPiB3aGVuIGJhc2ljYWxseSBldmVyeXdoZXJl IGVsc2UgaXQgaXMgcHJlc2VudC4KPiAKCkRvbmUuCgo+ID4gKyAgICBpZiAoIGRhdGFfaW5kZXgg KyBieXRlcyA+IGRhdGFfbWF4ICkKPiA+ICsgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElP TjsKPiA+ICsKPiA+ICsgICAgbWVtY3B5KGRzdCwgIGRhdGErZGF0YV9pbmRleCwgYnl0ZXMpOwo+ IAo+IEJsYW5rcyBhcm91bmQgYmluYXJ5IG9wZXJhdG9ycyBwbGVhc2UgKG1vcmUgZnVydGhlciBk b3duKS4KPiAKCkRvbmUuCgo+ID4gKyAgICBkYXRhX2luZGV4ICs9IGJ5dGVzOwo+ID4gKwo+ID4g KyAgICBwcmludGYoIiVzOiAiLCB3aHkpOwo+ID4gKyAgICBmb3IgKCBpID0gMDsgaSA8IGJ5dGVz OyBpKysgKQo+ID4gKyAgICAgICAgcHJpbnRmKCIgJTAyeCIsICh1bnNpZ25lZCBpbnQpKih1bnNp Z25lZCBjaGFyICopKGRzdCtpKSk7Cj4gCj4gSXMgdGhlIGxlZnQgbW9zdCBjYXN0IHJlYWxseSBu ZWVkZWQgaGVyZT8KPiAKCk5vLiBJJ3ZlIGRlbGV0ZWQgdGhhdC4KCj4gPiAraW50IExMVk1GdXp6 ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0YV9wLCBzaXplX3Qgc2l6ZSkKPiA+ICt7 Cj4gPiArICAgIGJvb2wgc3RhY2tfZXhlYzsKPiA+ICsgICAgc3RydWN0IGNwdV91c2VyX3JlZ3Mg cmVncyA9IHt9Owo+ID4gKyAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCBjdHh0ID0KPiA+ICsg ICAgICAgIHsKPiA+ICsgICAgICAgICAgICAucmVncyA9ICZyZWdzLAo+ID4gKyAgICAgICAgICAg IC5hZGRyX3NpemUgPSA4ICogc2l6ZW9mKHZvaWQgKiksCj4gPiArICAgICAgICAgICAgLnNwX3Np emUgPSA4ICogc2l6ZW9mKHZvaWQgKiksCj4gPiArICAgICAgICB9Owo+ID4gKwo+IAo+IFN0cmF5 IGJsYW5rIGxpbmUuIFRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgaW5pdGlhbGl6ZXIgYWJvdmUgYWxz byBsb29rcwo+IGEgbGl0dGxlIHVudXN1YWwuCj4gCgpGaXhlZC4KCj4gPiArICAgIHVuc2lnbmVk IG5yID0gMDsKPiA+ICsgICAgaW50IHJjOwo+ID4gKyAgICB1bnNpZ25lZCB4Owo+ID4gKyAgICBj b25zdCB1aW50OF90ICpwID0gZGF0YV9wOwo+ID4gKwo+ID4gKyAgICBzdGFja19leGVjID0gZW11 bF90ZXN0X21ha2Vfc3RhY2tfZXhlY3V0YWJsZSgpOwo+ID4gKyAgICBpZiAoICFzdGFja19leGVj ICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgcHJpbnRmKCJXYXJuaW5nOiBTdGFjayBjb3VsZCBu b3QgYmUgbWFkZSBleGVjdXRhYmxlICglZCkuXG4iLCBlcnJubyk7Cj4gPiArICAgICAgICBleGl0 KDEpOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIC8qIFJlc2V0IGFsbCBnbG9iYWwgc3RhdGVz ICovCj4gCj4gRFlNICJzdGF0ZSI/Cj4gCgpJIG1lYW4gInN0YXRlcyIuIFRoZXJlIGFyZSB0aHJl ZSBzdGF0ZXMgd2UgbmVlZCB0byByZXNldC4KCj4gPiArICAgIG1lbXNldChkYXRhLCAwLCBzaXpl b2YoZGF0YSkpOwo+ID4gKyAgICBkYXRhX2luZGV4ID0gMDsKPiA+ICsgICAgZGF0YV9tYXggPSAw Owo+ID4gKwo+ID4gKyAgICBuciA9IHNpemUgPCBzaXplb2YocmVncykgPyBzaXplIDogc2l6ZW9m KHJlZ3MpOwo+ID4gKwo+ID4gKyAgICBtZW1jcHkoJnJlZ3MsIHAsIG5yKTsKPiA+ICsgICAgcCAr PSBzaXplb2YocmVncyk7Cj4gPiArICAgIG5yICs9IHNpemVvZihyZWdzKTsKPiAKPiBJIHRoaW5r IHRoaXMgc2Vjb25kICs9IHdhbnRzIHRvIGJlIGRyb3BwZWQsIGNvbnNpZGVyaW5nIGhvdyBucgo+ IGdldHMgc2V0IGFib3ZlIGFuZCB1c2VkIGJlbG93Lgo+IAo+ID4gKyAgICBpZiAoIG5yIDw9IHNp emUgKQo+IAo+IDwgd291bGQgc2VlbSBtb3JlIG5hdHVyYWwgaGVyZS4KClllcywgeW91J3JlIHJp Z2h0IGluIGJvdGggcGxhY2VzLgoKPiAKPiA+ICsgICAgewo+ID4gKyAgICAgICAgbWVtY3B5KGRh dGEsIHAsIHNpemUgLSBucik7Cj4gPiArICAgICAgICBkYXRhX21heCA9IHNpemUgLSBucjsKPiA+ ICsgICAgfQo+ID4gKwo+ID4gKyAgICBjdHh0LmZvcmNlX3dyaXRlYmFjayA9IDA7Cj4gCj4gZmFs c2UKCkRvbmUuCgo+IAo+ID4gKyAgICAvKiBaZXJvICdwcml2YXRlJyBlbnRyaWVzICovCj4gCj4g cy9lbnRyaWVzL2ZpZWxkcy8gPwo+IAoKRG9uZS4KCj4gPiArICAgIHJlZ3MuZXJyb3JfY29kZSA9 IDA7Cj4gPiArICAgIHJlZ3MuZW50cnlfdmVjdG9yID0gMDsKPiA+ICsKPiA+ICsgICAgLyogVXNl IHRoZSB1cHBlciBiaXRzIG9mIHJlZ3MuZWlwIHRvIGRldGVybWluZSBhZGRyX3NpemUgKi8KPiA+ ICsgICAgeCA9IChyZWdzLnJpcCA+PiBBRERSX1NJWkVfU0hJRlQpICYgMHgzOwo+IAo+IFRoaXMg d29uJ3QgYnVpbGQgYXMgMzItYml0IGNvZGUuIElmIHRoYXQncyBpbnRlbnRpb25hbCwgdGhlbiBJ IHRoaW5rCj4gdGhpcyB3b3VsZCBiZXR0ZXIgYmUgZW5mb3JjZWQgaW4gdGhlIE1ha2VmaWxlIChy YXRoZXIgdGhhbgo+IHN1cmZhY2luZyBhIGNvbXBpbGUgZXJyb3IgaGVyZSkuCj4gCgpHb29kIGNh dGNoLiBJIHRoaW5rIHRoaXMgdGVzdCBjYXNlIGlzIHN0aWxsIHByZWxpbWluYXJ5LiBUQkggSSBo YXZlbid0CnBhaWQgbXVjaCBhdHRlbnRpb24gdG8gdGhlIHdvcmtpbmcgb2YgdGhpcyB0ZXN0IHRh cmdldCwgb3RoZXIgdGhhbgpwdWxsaW5nIGV2ZXJ5dGhpbmcgdG9nZXRoZXIgdG8gd29yay4KCkkg dGhpbmsgbG9uZyB0ZXJtIHdlIGRvIG5lZWQgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gZG8gd2l0aCAz MiBiaXQgYnVpbGQsCmJ1dCBJIHdvdWxkIHdhaXQgdW50aWwgR2VvcmdlIHRvIGNvbWUgYmFjayBi ZWNhdXNlIGhlIHdyb3RlIHRoaXMKc25pcHBldC4KCkZvciBub3cgSSB3aWxsIGRpc2FibGUgMzJi aXQgYnVpbGQgaW4gTWFrZWZpbGUuCgo+ID4gKyAgICBpZiAoeCA9PSAzKQoKSSBhbHNvIGZpeCB0 aGlzIGluc3RhbmNlIHRvIGFkZCBzcGFjZXMgaW4gKCkuCgoKLS0tODwtLS0KRnJvbSA4M2I3Mzgx MDgwYWFmYzNmMmZiMzViYTU4OTcxNTY5NGY4NDdmNzNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpEYXRlOiBUaHUsIDggRGVjIDIw MTYgMTI6MDk6NTQgKzAwMDAKU3ViamVjdDogW1BBVENIXSB0b29scy9mdXp6OiBpbnRyb2R1Y2Ug eDg2IGluc3RydWN0aW9uIGVtdWxhdG9yIHRhcmdldAoKSW5zdHJ1Y3Rpb24gZW11bGF0b3IgZnV6 emluZyBjb2RlIGlzIGZyb20gY29kZSBwcmV2aW91cyB3cml0dGVuIGJ5CkFuZHJldyBhbmQgR2Vv cmdlLiBBZGFwdCBpdCB0byBsbHZtIGZ1enplciBhbmQgaG9vayB1cCB0aGUgYnVpbGQgc3lzdGVt LgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNv bT4KU2lnbmVkLW9mZi1ieTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29t PgpTaWduZWQtb2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KQ2M6IEFu ZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVubGFw IDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tz b25AZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6 IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZh bm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRp bUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KCnY0OgoxLiBtb3Jl IGNvZGluZyBzdHlsZSBmaXhlcyBhbmQgYnVnIGZpeGVzCjIuIG9ubHkgZG8gNjQgYml0IGJ1aWxk Cgp2MzoKMS4gY29kaW5nIHN0eWxlIGZpeAoyLiBzaGFyZSBtb3JlIGNvZGUKMy4gZXhpdCB3aGVu IHN0YWNrIGNhbid0IGJlIG1hZGUgZXhlY3V0YWJsZQotLS0KIC5naXRpZ25vcmUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHRvb2xzL2Z1enoveDg2X2lu c3RydWN0aW9uX2VtdWxhdG9yL01ha2VmaWxlICAgICAgIHwgIDM2ICsrKysKIC4uLi94ODYtaW5z bi1lbXVsYXRvci1mdXp6ZXIuYyAgICAgICAgICAgICAgICAgICAgIHwgMTkwICsrKysrKysrKysr KysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMjcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL01ha2VmaWxlCiBj cmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IveDg2 LWluc24tZW11bGF0b3ItZnV6emVyLmMKCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGln bm9yZQppbmRleCBhMmYzNGExLi5kNTA3MjQzIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBi Ly5naXRpZ25vcmUKQEAgLTE0NSw2ICsxNDUsNyBAQCB0b29scy9mbGFzay91dGlscy9mbGFzay1s b2FkcG9saWN5CiB0b29scy9mbGFzay91dGlscy9mbGFzay1zZXRlbmZvcmNlCiB0b29scy9mbGFz ay91dGlscy9mbGFzay1zZXQtYm9vbAogdG9vbHMvZmxhc2svdXRpbHMvZmxhc2stbGFiZWwtcGNp Cit0b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci94ODZfZW11bGF0ZSoKIHRvb2xz L2hlbHBlcnMvX3BhdGhzLmgKIHRvb2xzL2hlbHBlcnMvaW5pdC14ZW5zdG9yZS1kb21haW4KIHRv b2xzL2hlbHBlcnMveGVuLWluaXQtZG9tMApkaWZmIC0tZ2l0IGEvdG9vbHMvZnV6ei94ODZfaW5z dHJ1Y3Rpb25fZW11bGF0b3IvTWFrZWZpbGUgYi90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9l bXVsYXRvci9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTY4 ZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0 b3IvTWFrZWZpbGUKQEAgLTAsMCArMSwzNiBAQAorWEVOX1JPT1Q9JChDVVJESVIpLy4uLy4uLy4u CitpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCisKKy5QSE9OWTogeDg2LWluc3Ry dWN0aW9uLWVtdWxhdG9yLWZ1enplci1hbGwKK2lmZXEgKCQoQ09ORklHX1g4Nl82NCkseSkKK3g4 Ni1pbnN0cnVjdGlvbi1lbXVsYXRvci1mdXp6ZXItYWxsOiB4ODYtaW5zbi1lbXVsYXRvci5hIHg4 Ni1pbnNuLWVtdWxhdG9yLWZ1enplci5vCitlbHNlCit4ODYtaW5zdHJ1Y3Rpb24tZW11bGF0b3It ZnV6emVyLWFsbDoKK2VuZGlmCisKK3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgeDg2X2VtdWxh dGUveDg2X2VtdWxhdGUuaDoKKwlbIC1MIHg4Nl9lbXVsYXRlIF0gfHwgbG4gLXNmICQoWEVOX1JP T1QpL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZSAuCisKK3g4Nl9lbXVsYXRlLmMgeDg2X2VtdWxh dGUuaDogJToKKwlbIC1MICQqIF0gfHwgbG4gLXNmICQoWEVOX1JPT1QpL3Rvb2xzL3Rlc3RzL3g4 Nl9lbXVsYXRvci8kKgorCitDRkxBR1MgKz0gJChDRkxBR1NfeGVuaW5jbHVkZSkKKworeDg2X2Vt dWxhdGUubzogeDg2X2VtdWxhdGUuW2NoXSB4ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5bY2hdCisK K3g4Ni1pbnNuLWVtdWxhdG9yLmE6IHg4Nl9lbXVsYXRlLm8KKwkkKEFSKSByYyAkQCAkXgorCit4 ODYtaW5zbi1lbXVsYXRvci1mdXp6ZXIubzogeDg2LWluc24tZW11bGF0b3ItZnV6emVyLmMKKwor IyBDb21tb24gdGFyZ2V0cworLlBIT05ZOiBhbGwKK2FsbDogeDg2LWluc3RydWN0aW9uLWVtdWxh dG9yLWZ1enplci1hbGwKKworLlBIT05ZOiBkaXN0Y2xlYW4KK2Rpc3RjbGVhbjogY2xlYW4KKwly bSAtZiB4ODZfZW11bGF0ZSB4ODZfZW11bGF0ZS5jIHg4Nl9lbXVsYXRlLmgKKworLlBIT05ZOiBj bGVhbgorY2xlYW46CisJcm0gLWYgKi5hICoubwpkaWZmIC0tZ2l0IGEvdG9vbHMvZnV6ei94ODZf aW5zdHJ1Y3Rpb25fZW11bGF0b3IveDg2LWluc24tZW11bGF0b3ItZnV6emVyLmMgYi90b29scy9m dXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci94ODYtaW5zbi1lbXVsYXRvci1mdXp6ZXIuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGVjMzExCi0tLSAvZGV2L251bGwK KysrIGIvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IveDg2LWluc24tZW11bGF0 b3ItZnV6emVyLmMKQEAgLTAsMCArMSwxOTAgQEAKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNs dWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4K KyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3Rk aW50Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRl IDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5o PgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8 eGVuL3hlbi5oPgorCisjaW5jbHVkZSAieDg2X2VtdWxhdGUuaCIKKworc3RhdGljIHVuc2lnbmVk IGNoYXIgZGF0YVs0MDk2XTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgZGF0YV9pbmRleDsKK3N0YXRp YyB1bnNpZ25lZCBpbnQgZGF0YV9tYXg7CisKK3N0YXRpYyBpbnQgZGF0YV9yZWFkKGNvbnN0IGNo YXIgKndoeSwgdm9pZCAqZHN0LCB1bnNpZ25lZCBpbnQgYnl0ZXMpCit7CisgICAgdW5zaWduZWQg aW50IGk7CisKKyAgICBpZiAoIGRhdGFfaW5kZXggKyBieXRlcyA+IGRhdGFfbWF4ICkKKyAgICAg ICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworCisgICAgbWVtY3B5KGRzdCwgIGRhdGEgKyBk YXRhX2luZGV4LCBieXRlcyk7CisgICAgZGF0YV9pbmRleCArPSBieXRlczsKKworICAgIHByaW50 ZigiJXM6ICIsIHdoeSk7CisgICAgZm9yICggaSA9IDA7IGkgPCBieXRlczsgaSsrICkKKyAgICAg ICAgcHJpbnRmKCIgJTAyeCIsICoodW5zaWduZWQgY2hhciAqKShkc3QgKyBpKSk7CisgICAgcHJp bnRmKCJcbiIpOworCisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKK30KKworc3RhdGljIGludCBm dXp6X3JlYWQoCisgICAgdW5zaWduZWQgaW50IHNlZywKKyAgICB1bnNpZ25lZCBsb25nIG9mZnNl dCwKKyAgICB2b2lkICpwX2RhdGEsCisgICAgdW5zaWduZWQgaW50IGJ5dGVzLAorICAgIHN0cnVj dCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQoreworICAgIHJldHVybiBkYXRhX3JlYWQoInJlYWQi LCBwX2RhdGEsIGJ5dGVzKTsKK30KKworc3RhdGljIGludCBmdXp6X2ZldGNoKAorICAgIHVuc2ln bmVkIGludCBzZWcsCisgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisgICAgdm9pZCAqcF9kYXRh LAorICAgIHVuc2lnbmVkIGludCBieXRlcywKKyAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAq Y3R4dCkKK3sKKyAgICByZXR1cm4gZGF0YV9yZWFkKCJmZXRjaCIsIHBfZGF0YSwgYnl0ZXMpOwor fQorCitzdGF0aWMgaW50IGZ1enpfd3JpdGUoCisgICAgdW5zaWduZWQgaW50IHNlZywKKyAgICB1 bnNpZ25lZCBsb25nIG9mZnNldCwKKyAgICB2b2lkICpwX2RhdGEsCisgICAgdW5zaWduZWQgaW50 IGJ5dGVzLAorICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQoreworICAgIHJldHVy biBYODZFTVVMX09LQVk7Cit9CisKK3N0YXRpYyBpbnQgZnV6el9jbXB4Y2hnKAorICAgIHVuc2ln bmVkIGludCBzZWcsCisgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisgICAgdm9pZCAqb2xkLAor ICAgIHZvaWQgKm5ldywKKyAgICB1bnNpZ25lZCBpbnQgYnl0ZXMsCisgICAgc3RydWN0IHg4Nl9l bXVsYXRlX2N0eHQgKmN0eHQpCit7CisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKK30KKworc3Rh dGljIHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgZnV6el9lbXVsb3BzID0geworICAgIC5yZWFkICAg ICAgID0gZnV6el9yZWFkLAorICAgIC5pbnNuX2ZldGNoID0gZnV6el9mZXRjaCwKKyAgICAud3Jp dGUgICAgICA9IGZ1enpfd3JpdGUsCisgICAgLmNtcHhjaGcgICAgPSBmdXp6X2NtcHhjaGcsCisg ICAgLmNwdWlkICAgICAgPSBlbXVsX3Rlc3RfY3B1aWQsCisgICAgLnJlYWRfY3IgICAgPSBlbXVs X3Rlc3RfcmVhZF9jciwKKyAgICAuZ2V0X2ZwdSAgICA9IGVtdWxfdGVzdF9nZXRfZnB1LAorfTsK KworI2RlZmluZSBDQU5PTklDQUxJWkUoeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisgICAgICAgIHVpbnQ2NF90IF95ID0gKHgpOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICBpZiAoIF95ICYgKDFVTEwgPDwgNDcpICkgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF95IHw9ICh+MFVMTCkgPDwgNDg7ICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX3kgJj0gKDFVTEwgPDwgNDgp LTE7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcHJpbnRmKCJDYW5vbmljYWxp emVkICUiIFBSSXg2NCAiIHRvICUiIFBSSXg2NCAiXG4iLCB4LCBfeSk7ICAgIFwKKyAgICAgICAg KHgpID0gX3k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g d2hpbGUoIDAgKQorCisjZGVmaW5lIEFERFJfU0laRV9TSElGVCA2MAorI2RlZmluZSBBRERSX1NJ WkVfNjQgKDJVTEwgPDwgQUREUl9TSVpFX1NISUZUKQorI2RlZmluZSBBRERSX1NJWkVfMzIgKDFV TEwgPDwgQUREUl9TSVpFX1NISUZUKQorI2RlZmluZSBBRERSX1NJWkVfMTYgKDApCisKK2ludCBM TFZNRnV6emVyVGVzdE9uZUlucHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGFfcCwgc2l6ZV90IHNpemUp Cit7CisgICAgYm9vbCBzdGFja19leGVjOworICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzIHJlZ3Mg PSB7fTsKKyAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCBjdHh0ID0geworICAgICAgICAucmVn cyA9ICZyZWdzLAorICAgICAgICAuYWRkcl9zaXplID0gOCAqIHNpemVvZih2b2lkICopLAorICAg ICAgICAuc3Bfc2l6ZSA9IDggKiBzaXplb2Yodm9pZCAqKSwKKyAgICB9OworICAgIHVuc2lnbmVk IGludCBuciA9IDA7CisgICAgaW50IHJjOworICAgIHVuc2lnbmVkIGludCB4OworICAgIGNvbnN0 IHVpbnQ4X3QgKnAgPSBkYXRhX3A7CisKKyAgICBzdGFja19leGVjID0gZW11bF90ZXN0X21ha2Vf c3RhY2tfZXhlY3V0YWJsZSgpOworICAgIGlmICggIXN0YWNrX2V4ZWMgKQorICAgIHsKKyAgICAg ICAgcHJpbnRmKCJXYXJuaW5nOiBTdGFjayBjb3VsZCBub3QgYmUgbWFkZSBleGVjdXRhYmxlICgl ZCkuXG4iLCBlcnJubyk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIFJlc2V0 IGFsbCBnbG9iYWwgc3RhdGVzICovCisgICAgbWVtc2V0KGRhdGEsIDAsIHNpemVvZihkYXRhKSk7 CisgICAgZGF0YV9pbmRleCA9IDA7CisgICAgZGF0YV9tYXggPSAwOworCisgICAgbnIgPSBzaXpl IDwgc2l6ZW9mKHJlZ3MpID8gc2l6ZSA6IHNpemVvZihyZWdzKTsKKworICAgIG1lbWNweSgmcmVn cywgcCwgbnIpOworICAgIHAgKz0gc2l6ZW9mKHJlZ3MpOworCisgICAgaWYgKCBuciA8IHNpemUg KQorICAgIHsKKyAgICAgICAgbWVtY3B5KGRhdGEsIHAsIHNpemUgLSBucik7CisgICAgICAgIGRh dGFfbWF4ID0gc2l6ZSAtIG5yOworICAgIH0KKworICAgIGN0eHQuZm9yY2Vfd3JpdGViYWNrID0g ZmFsc2U7CisKKyAgICAvKiBaZXJvICdwcml2YXRlJyBmaWVsZHMgKi8KKyAgICByZWdzLmVycm9y X2NvZGUgPSAwOworICAgIHJlZ3MuZW50cnlfdmVjdG9yID0gMDsKKworICAgIC8qIFVzZSB0aGUg dXBwZXIgYml0cyBvZiByZWdzLmVpcCB0byBkZXRlcm1pbmUgYWRkcl9zaXplICovCisgICAgeCA9 IChyZWdzLnJpcCA+PiBBRERSX1NJWkVfU0hJRlQpICYgMHgzOworICAgIGlmICggeCA9PSAzICkK KyAgICAgICAgeCA9IDI7CisgICAgY3R4dC5hZGRyX3NpemUgPSAxNiA8PCB4OworICAgIHByaW50 ZigiYWRkcl9zaXplOiAlZFxuIiwgY3R4dC5hZGRyX3NpemUpOworCisgICAgLyogVXNlIHRoZSB1 cHBlciBiaXQgb2YgcmVncy5yc3AgdG8gZGV0ZXJtaW5lIHNwX3NpemUgKGlmIGFwcHJvcHJpYXRl KSAqLworICAgIGlmICggY3R4dC5hZGRyX3NpemUgPT0gNjQgKQorICAgICAgICBjdHh0LnNwX3Np emUgPSA2NDsKKyAgICBlbHNlCisgICAgeworICAgICAgICAvKiBJZiBhZGRyX3NpemUgaXNuJ3Qg NjQtYml0cywgc3Bfc2l6ZSBjYW4gb25seSBiZSAxNiBvciAzMiBiaXRzICovCisgICAgICAgIHgg PSAocmVncy5yc3AgPj4gQUREUl9TSVpFX1NISUZUKSAmIDB4MTsKKyAgICAgICAgY3R4dC5zcF9z aXplID0gMTYgPDwgeDsKKyAgICB9CisgICAgcHJpbnRmKCJzcF9zaXplOiAlZFxuIiwgY3R4dC5z cF9zaXplKTsKKyAgICBDQU5PTklDQUxJWkUocmVncy5yaXApOworICAgIENBTk9OSUNBTElaRShy ZWdzLnJzcCk7CisgICAgQ0FOT05JQ0FMSVpFKHJlZ3MucmJwKTsKKworICAgIC8qIFplcm8gYWxs IHNlZ21lbnRzIGZvciBub3cgKi8KKyAgICByZWdzLmNzID0gcmVncy5zcyA9IHJlZ3MuZXMgPSBy ZWdzLmRzID0gcmVncy5mcyA9IHJlZ3MuZ3MgPSAwOworCisgICAgZG8geworICAgICAgICByYyA9 IHg4Nl9lbXVsYXRlKCZjdHh0LCAmZnV6el9lbXVsb3BzKTsKKyAgICAgICAgcHJpbnRmKCJFbXVs YXRpb24gcmVzdWx0OiAlZFxuIiwgcmMpOworICAgIH0gd2hpbGUgKCByYyA9PSBYODZFTVVMX09L QVkgKTsKKworICAgIHJldHVybiAwOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICog bW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAq IGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCi0tIAoyLjEuNAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=