From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v8.1 10/27] xsplice: Add helper elf routines Date: Mon, 18 Apr 2016 01:53:52 -0400 Message-ID: <20160418055351.GA26968@localhost.localdomain> References: <1460584928-32440-1-git-send-email-konrad.wilk@oracle.com> <1460584928-32440-11-git-send-email-konrad.wilk@oracle.com> <5714063B02000078000E6AE0@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.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1as28R-000505-IW for xen-devel@lists.xenproject.org; Mon, 18 Apr 2016 05:54:11 +0000 Content-Disposition: inline In-Reply-To: <5714063B02000078000E6AE0@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: keir@xen.org, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, mpohlack@amazon.com, tim@xen.org, ross.lagerwall@citrix.com, sasha.levin@oracle.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org LiBzbmlwLi4KPiA+K3N0YXRpYyBpbnQgZWxmX3Jlc29sdmVfc2VjdGlvbnMoc3RydWN0IHhzcGxp Y2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpCj4gPit7Cj4gPisgc3RydWN0IHhzcGxpY2Vf ZWxmX3NlYyAqc2VjOwo+ID4rIHVuc2lnbmVkIGludCBpOwo+ID4rIEVsZl9PZmYgZGVsdGE7Cj4g PisgaW50IHJjOwo+ID4rCj4gPisgLyogeHNwbGljZV9lbGZfbG9hZCBzYW5pdHkgY2hlY2tlZCBl X3NobnVtLiAqLwo+ID4rIHNlYyA9IHhtYWxsb2NfYXJyYXkoc3RydWN0IHhzcGxpY2VfZWxmX3Nl YywgZWxmLT5oZHItPmVfc2hudW0pOwo+ID4rIGlmICggIXNlYyApCj4gPisgewo+ID4rIGRwcmlu dGsoWEVOTE9HX0VSUiwgWFNQTElDRSIlczogQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3Ig c2VjdGlvbiB0YWJsZSFcbiIsCj4gPisgZWxmLT5uYW1lKTsKPiA+KyByZXR1cm4gLUVOT01FTTsK PiA+KyB9Cj4gPisKPiA+KyBlbGYtPnNlYyA9IHNlYzsKPiA+Kwo+ID4rIGRlbHRhID0gZWxmLT5o ZHItPmVfc2hvZmYgKyBlbGYtPmhkci0+ZV9zaG51bSAqIGVsZi0+aGRyLT5lX3NoZW50c2l6ZTsK PiAKPiBJIHRoaW5rIEFuZHJldyBoYWQgYXNrZWQgdGhpcyBiZWZvcmUgLSBhcmUgd2Ugbm90IHdv cnJpZWQgb2Ygb3ZlcmZsb3cgaGVyZT8KClllcy4gVGhhdCBlbmRzIHVwIGJlaW5nIGNoZWNrZWQg aW4geHNwbGljZV9oZWFkZXJfY2hlY2suIEFkZGVkIGNvbW1lbnQKaGVyZS4KCj4gCj4gPisgaWYg KCBkZWx0YSA+IGVsZi0+bGVuICkKPiA+KyB7Cj4gPisgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BM SUNFICIlczogU2VjdGlvbiB0YWJsZSBpcyBwYXN0IGVuZCBvZiBwYXlsb2FkIVxuIiwKPiA+KyBl bGYtPm5hbWUpOwo+ID4rIHJldHVybiAtRUlOVkFMOwo+ID4rIH0KPiA+Kwo+ID4rIGZvciAoIGkg PSAxOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCj4gPisgewo+ID4rIGRlbHRhID0gZWxm LT5oZHItPmVfc2hvZmYgKyBpICogZWxmLT5oZHItPmVfc2hlbnRzaXplOwo+ID4rCj4gPisgc2Vj W2ldLnNlYyA9ICh2b2lkICopZGF0YSArIGRlbHRhOwo+IAo+IENhc3RpbmcgYXdheSBjb25zdG5l c3MgaXMgb25lIG9mIHRoZSBtYWluIHJlYXNvbnMgSSBjb21wbGFpbiBhYm91dCBjYXN0cyBpbgo+ IGdlbmVyYWwuIElmIHlvdSByZWFsbHkgbmVlZCB0byBtb2RpZnkgc29tZSBmaWVsZHMgaW4gdGhl IHNlY3Rpb24gaGVhZGVyLCB5b3Ugc2hvdWxkCj4gaW1vIGNhc3QgYXdheSBjb25zdG5lc3MganVz dCB0aGVyZS4gQnV0IGV2ZW4gYmV0dGVyIHdvdWxkIGJlIGlmIHlvdSBsZWZ0IHRoZQoKSW4gZWFy bGllciByZXZpZXdzIHlvdSBzYWlkIHRoYXQgY2FzdGluZyBhd2F5IGNvbnN0bmVzcyBpbgpmdW5j dGlvbiB3b3VsZCBiZSBhIGJpZyBubyBuby4KCj4gc2VjdGlvbiBoZWFkZXIgYWxvbmUuCgpJIG1v ZGlmeSAgc2VjW2ldLnNlYy0+c2hfZW50c2l6ZSBpbiBjYWxjX3NlY3Rpb24KPiAKPiA+KyBkZWx0 YSA9IHNlY1tpXS5zZWMtPnNoX29mZnNldDsKPiA+Kwo+ID4rIC8qCj4gPisgKiBOLkIuIGVsZl9y ZXNvbHZlX3NlY3Rpb25fbmFtZXMsIGVsZl9nZXRfc3ltIHNraXAgdGhpcyBjaGVjayBhcwo+ID4r ICogd2UgZG8gaXQgaGVyZS4KPiA+KyAqLwo+ID4rIGlmICggZGVsdGEgJiYgKGRlbHRhICsgc2Vj W2ldLnNlYy0+c2hfc2l6ZSA+IGVsZi0+bGVuKSApCj4gCj4gQWxsb3dpbmcgZGVsdGEgdG8gYmUg emVybyBoZXJlIHNlZW1zIHN1c3BpY2lvdXM6IEFyZSB5b3UgZG9pbmcgdGhhdCBiZWNhdXNlCj4g c29tZSBzZWN0aW9ucyBjb21lIHdpdGhvdXQgZGF0YSAoYW5kIGhlbmNlIHdpdGhvdXQgb2Zmc2V0 KT8gSW4gdGhhdCBjYXNlIHlvdSdkCj4gYmV0dGVyIHNraXAgdGhlIGNoZWNrIG9uIHRob3NlIHNl Y3Rpb24gdHlwZXMgKGUuZy4gU0hUX05PQklUUykgb25seS4gSW4gZmFjdAo+IHRoZSBvZmZzZXQg YmVpbmcgYmVsb3cgdGhlIGVuZCBvZiB0aGUgRUxGIGhlYWRlciB3b3VsZCBsaWtlbHkgaW5kaWNh dGUgYSBicm9rZW4KPiBpbWFnZS4KClRoZSBsb29wIChlYXJsaWVyKSBoYWQgc3RhcnRlZCBhdCAw IHNvIHRoZSBkZWx0YSBjb3VsZCBoYXZlIGJlZW4gemVyby4KQW55aG93IHRoYXQgbm90IGJlaW5n IHRoZSBjYXNlIGFueW1vcmUgSSB3aWxsIGp1c3QgZG86CgppZiAoICFkZWx0YSApCglyZXR1cm4g LUVJTlZBTDsKPiAKPiA+KyAvKiBOYW1lIGlzIHBvcHVsYXRlZCBpbiB4c3BsaWNlX2VsZl9zZWN0 aW9uc19uYW1lLiAqLwo+IAo+IFN0YWxlIGZ1bmN0aW9uIG5hbWUgYWZhaWN0Lgo+IAo+ID4rIC8q Cj4gPisgKiBlbGYtPnN5bXRhYi0+c2VjLT5zaF9saW5rIHdvdWxkIHBvaW50IHRvIHRoZSByaWdo dCBzZWN0aW9uCj4gPisgKiBidXQgd2UgaGFkbid0IGZpbmlzaGVkIHBhcnNpbmcgYWxsIHRoZSBz ZWN0aW9ucy4KPiA+KyAqLwo+ID4rIGlmICggZWxmLT5zeW10YWItPnNlYy0+c2hfbGluayA+IGVs Zi0+aGRyLT5lX3NobnVtICkKPiAKPiA+PSAoYW5kIEkga25vdyBJIGhhZCBhc2tlZCBiZWZvcmUg dG8gY2hlY2sgYWxsIHRoZXNlIGJvdW5kcyBjaGVja3MgZm9yIG9mZgo+IGJ5IG9uZSBlcnJvcnMp Cj4gCj4gPisgaWYgKCAhZWxmLT5zeW10YWItPnNlYy0+c2hfc2l6ZSB8fAo+ID4rIGVsZi0+c3lt dGFiLT5zZWMtPnNoX2VudHNpemUgPCBzaXplb2YoRWxmX1N5bSkgKQo+IAo+IHx8IHNoX3NpemUg JSBzaF9lbnRzaXplCj4gCj4gPisgLyoKPiA+KyAqIFRoZXJlIGNhbiBiZSBtdWx0aXBsZSBTSFRf U1RSVEFCICguc2hzdHJ0YWIsIC5zdHJ0YWIpIHNvIHBpY2sgb25lCj4gPisgKiBhc3NvY2lhdGVk IHdpdGggdGhlIHN5bWJvbCB0YWJsZS4KPiA+KyAqLwo+IAo+IC4uLiBwaWNrIHRoZSBvbmUgLi4u Cj4gCj4gPitzdGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rpb25fbmFtZXMoc3RydWN0IHhzcGxp Y2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpCj4gPit7Cj4gPisgY29uc3QgY2hhciAqc2hz dHJ0YWI7Cj4gPisgdW5zaWduZWQgaW50IGk7Cj4gPisgRWxmX09mZiBvZmZzZXQsIGRlbHRhOwo+ ID4rIHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNlYzsKPiA+KyBpbnQgcmM7Cj4gPisKPiA+KyAv Kgo+ID4rICogVGhlIGVsZi0+c2VjWzAgLT4gZV9zaG51bV0gc3RydWN0dXJlcyBoYXZlIGJlZW4g dmVyaWZpZWQgYnkKPiA+KyAqIGVsZl9yZXNvbHZlX3NlY3Rpb25zLiBGaW5kIGZpbGUgb2Zmc2V0 IGZvciBzZWN0aW9uIHN0cmluZyB0YWJsZQo+ID4rICogKG5vcm1hbGx5IGNhbGxlZCAuc2hzdHJ0 YWIpCj4gPisgKi8KPiA+KyBzZWMgPSAmZWxmLT5zZWNbZWxmLT5oZHItPmVfc2hzdHJuZHhdOwo+ ID4rCj4gPisgcmMgPSBlbGZfdmVyaWZ5X3N0cnRhYihzZWMpOwo+ID4rIGlmICggcmMgKQo+ID4r IHsKPiA+KyBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBTZWN0aW9uIHN0cmluZyB0 YWJsZSBpcyBjb3JydXB0ZWRcbiIsCj4gPisgZWxmLT5uYW1lKTsKPiA+KyByZXR1cm4gcmM7Cj4g PisgfQo+ID4rCj4gPisgLyogVmVyaWZpZWQgaW4gZWxmX3Jlc29sdmVfc2VjdGlvbnMgYnV0IGp1 c3QgaW4gY2FzZS4gKi8KPiA+KyBvZmZzZXQgPSBzZWMtPnNlYy0+c2hfb2Zmc2V0Owo+ID4rIEFT U0VSVChvZmZzZXQgPCBlbGYtPmxlbiAmJiAob2Zmc2V0ICsgc2VjLT5zZWMtPnNoX3NpemUgPD0g ZWxmLT5sZW4pKTsKPiA+Kwo+ID4rIHNoc3RydGFiID0gZGF0YSArIG9mZnNldDsKPiA+Kwo+ID4r IGZvciAoIGkgPSAxOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCj4gPisgewo+ID4rIGRl bHRhID0gZWxmLT5zZWNbaV0uc2VjLT5zaF9uYW1lOwo+ID4rCj4gPisgaWYgKCBkZWx0YSAmJiBk ZWx0YSA+PSBzZWMtPnNlYy0+c2hfc2l6ZSApCj4gPisgewo+ID4rIGRwcmludGsoWEVOTE9HX0VS UiwgWFNQTElDRSAiJXM6IHNoc3RydGFiIFsldV0gZGF0YSBpcyBwYXN0IGVuZCBvZiBwYXlsb2Fk IVxuIiwKPiA+KyBlbGYtPm5hbWUsIGkpOwo+IAo+IElzbid0IHRoaXMgcmVkdW5kYW50IHdpdGgg dGhlIGNoZWNrIGluIGVsZl9yZXNvbHZlX3NlY3Rpb25zKCk/IE9yIGlzIHRoaXMgbmVlZGVkCj4g YmVjYXVzZSB0aGUgb25lIGhlcmUgcnVucyBiZWZvcmUgdGhhdCBvdGhlciBvbmU/CgpXZSBkb24n dCB2ZXJpZnkgc2hfbmFtZSBpbiBlbGZfcmVzb2x2ZV9zZWN0aW9ucy4KClRoaXMgaXMgd2hlcmUg d2UgY2hlY2sgdGhhdCBzaF9uYW1lIGlzIHdpdGhpbiB0aGUgc2hzdHJ0YWIuCgo+IAo+ID4rc3Rh dGljIGludCBlbGZfZ2V0X3N5bShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAq ZGF0YSkKPiA+K3sKPiA+KyBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzeW10YWJfc2Vj LCAqc3RydGFiX3NlYzsKPiA+KyBzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltICpzeW07Cj4gPisgdW5z aWduZWQgaW50IGksIGRlbHRhLCBvZmZzZXQsIG5zeW07Cj4gPisKPiA+KyBzeW10YWJfc2VjID0g ZWxmLT5zeW10YWI7Cj4gPisgc3RydGFiX3NlYyA9IGVsZi0+c3RydGFiOwo+ID4rCj4gPisgLyog UG9pbnRlcnMgYXJpdGhtZXRpYyB0byBnZXQgZmlsZSBvZmZzZXQuICovCj4gPisgb2Zmc2V0ID0g c3RydGFiX3NlYy0+ZGF0YSAtIGRhdGE7Cj4gPisKPiA+KyAvKiBDaGVja2VkIGFscmVhZHkgaW4g ZWxmX3Jlc29sdmVfc2VjdGlvbnMsIGJ1dCBqdXN0IGluIGNhc2UuICovCj4gPisgQVNTRVJUKG9m ZnNldCA9PSBzdHJ0YWJfc2VjLT5zZWMtPnNoX29mZnNldCk7Cj4gPisgQVNTRVJUKG9mZnNldCA8 IGVsZi0+bGVuICYmIChvZmZzZXQgKyBzdHJ0YWJfc2VjLT5zZWMtPnNoX3NpemUgPD0gZWxmLT5s ZW4pKTsKPiA+Kwo+ID4rIC8qIHN5bXRhYl9zZWMtPmRhdGEgd2FzIGNvbXB1dGVkIGluIGVsZl9y ZXNvbHZlX3NlY3Rpb25zLiAqLwo+ID4rIEFTU0VSVCgoc3ltdGFiX3NlYy0+c2VjLT5zaF9vZmZz ZXQgKyBkYXRhKSA9PSBzeW10YWJfc2VjLT5kYXRhKTsKPiA+Kwo+ID4rIC8qIE5vIG5lZWQgdG8g Y2hlY2sgdmFsdWVzIGFzIGVsZl9yZXNvbHZlX3NlY3Rpb25zIGRpZCBpdC4gKi8KPiA+KyBuc3lt ID0gc3ltdGFiX3NlYy0+c2VjLT5zaF9zaXplIC8gc3ltdGFiX3NlYy0+c2VjLT5zaF9lbnRzaXpl Owo+ID4rCj4gPisgc3ltID0geG1hbGxvY19hcnJheShzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltLCBu c3ltKTsKPiA+KyBpZiAoICFzeW0gKQo+ID4rIHsKPiA+KyBkcHJpbnRrKFhFTkxPR19FUlIsIFhT UExJQ0UgIiVzOiBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzeW1ib2xzXG4iLAo+ID4r IGVsZi0+bmFtZSk7Cj4gPisgcmV0dXJuIC1FTk9NRU07Cj4gPisgfQo+ID4rCj4gPisgLyogU28g d2UgZG9uJ3QgbGVhayBtZW1vcnkuICovCj4gPisgZWxmLT5zeW0gPSBzeW07Cj4gPisKPiA+KyBm b3IgKCBpID0gMTsgaSA8IG5zeW07IGkrKyApCj4gPisgewo+ID4rIEVsZl9TeW0gKnMgPSAmKChF bGZfU3ltICopc3ltdGFiX3NlYy0+ZGF0YSlbaV07Cj4gPisKPiA+KyAvKiBJZiBzdC0+bmFtZSBp cyBTVE5fVU5ERUYgemVybywgdGhlIGNoZWNrIHdpbGwgYWx3YXlzIGJlIHRydWUuICovCj4gPisg ZGVsdGEgPSBzLT5zdF9uYW1lOwo+ID4rCj4gPisgaWYgKCBkZWx0YSAmJiAoZGVsdGEgPiBzdHJ0 YWJfc2VjLT5zZWMtPnNoX3NpemUpICkKPiAKPiBOb3cgaGVyZSBJIGRvbid0IHNlZSB3aHkgeW91 IHNwZWNpYWwgY2FzZSBkZWx0YSBiZWluZyB6ZXJvLCB0aGUgbW9yZSB3aXRoIHRoZQo+IGNvbW1l bnQgcmlnaHQgYWJvdmUuCgpUaGF0IG9uZSBpcyBzdGFsZS4gUmVtb3ZlZCB0aGUgJ2lmICggZGVs dGEpJyBwYXJ0IGFuZCB0aGUgY29tbWVudC4KPiAKPiA+K3N0YXRpYyBpbnQgeHNwbGljZV9oZWFk ZXJfY2hlY2soY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCj4gPit7Cj4gPisgY29uc3Qg RWxmX0VoZHIgKmhkciA9IGVsZi0+aGRyOwo+ID4rCj4gPisgaWYgKCBzaXplb2YoKmVsZi0+aGRy KSA+IGVsZi0+bGVuICkKPiA+KyB7Cj4gPisgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIl czogU2VjdGlvbiBoZWFkZXIgaXMgYmlnZ2VyIHRoYW4gcGF5bG9hZCFcbiIsCj4gPisgZWxmLT5u YW1lKTsKPiA+KyByZXR1cm4gLUVJTlZBTDsKPiA+KyB9Cj4gPisKPiA+KyBpZiAoICFJU19FTEYo KmhkcikgKQo+ID4rIHsKPiA+KyBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBOb3Qg YW4gRUxGIHBheWxvYWQhXG4iLCBlbGYtPm5hbWUpOwo+ID4rIHJldHVybiAtRUlOVkFMOwo+ID4r IH0KPiA+Kwo+ID4rIGlmICggaGRyLT5lX2lkZW50W0VJX0NMQVNTXSAhPSBFTEZDTEFTUzY0IHx8 Cj4gPisgaGRyLT5lX2lkZW50W0VJX0RBVEFdICE9IEVMRkRBVEEyTFNCIHx8Cj4gPisgaGRyLT5l X2lkZW50W0VJX09TQUJJXSAhPSBFTEZPU0FCSV9TWVNWIHx8Cj4gPisgaGRyLT5lX3R5cGUgIT0g RVRfUkVMIHx8Cj4gPisgaGRyLT5lX3BobnVtICE9IDAgKQo+ID4rIHsKPiA+KyBkcHJpbnRrKFhF TkxPR19FUlIsIFhTUExJQ0UgIiVzOiBJbnZhbGlkIEVMRiBwYXlsb2FkIVxuIiwgZWxmLT5uYW1l KTsKPiA+KyByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPisgfQo+ID4rCj4gPisgaWYgKCBlbGYtPmhk ci0+ZV9zaHN0cm5keCA9PSBTSE5fVU5ERUYgKQo+ID4rIHsKPiA+KyBkcHJpbnRrKFhFTkxPR19F UlIsIFhTUExJQ0UgIiVzOiBTZWN0aW9uIG5hbWUgaWR4IGlzIHVuZGVmaW5lZCE/XG4iLAo+ID4r IGVsZi0+bmFtZSk7Cj4gPisgcmV0dXJuIC1FSU5WQUw7Cj4gPisgfQo+ID4rCj4gPisgLyogQ2hl Y2sgdGhhdCBzZWN0aW9uIG5hbWUgaW5kZXggaXMgd2l0aGluIHRoZSBzZWN0aW9ucy4gKi8KPiA+ KyBpZiAoIGVsZi0+aGRyLT5lX3Noc3RybmR4ID49IGVsZi0+aGRyLT5lX3NobnVtICkKPiA+KyB7 Cj4gPisgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU2VjdGlvbiBuYW1lIGlkeCAo JXUpIGlzIHBhc3QgZW5kIG9mIHNlY3Rpb25zICgldSkhXG4iLAo+ID4rIGVsZi0+bmFtZSwgZWxm LT5oZHItPmVfc2hzdHJuZHgsIGVsZi0+aGRyLT5lX3NobnVtKTsKPiA+KyByZXR1cm4gLUVJTlZB TDsKPiA+KyB9Cj4gPisKPiA+KyBpZiAoIGVsZi0+aGRyLT5lX3NobnVtID4gNjQgKQo+ID4rIHsK PiA+KyBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBUb28gbWFueSAoJXUpIHNlY3Rp b25zIVxuIiwKPiA+KyBlbGYtPm5hbWUsIGVsZi0+aGRyLT5lX3NobnVtKTsKPiA+KyByZXR1cm4g LUVJTlZBTDsKPiAKPiBUaGlzIGlzbid0IGludmFsaWQsIGJ1dCB1bnN1cHBvcnRlZC4KPiAKPiA+ KyBpZiAoIGVsZi0+aGRyLT5lX3Nob2ZmID4gZWxmLT5sZW4gKQo+ID4rIHsKPiA+KyBkcHJpbnRr KFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBCb2d1cyBlX3Nob2ZmIVxuIiwgZWxmLT5uYW1lKTsK PiA+KyByZXR1cm4gLUVJTlZBTDsKPiA+KyB9Cj4gCj4gSWYgdGhpcyBjaGVjayBpcyBuZWVkZWQs IHRoZW4gPj0uIEJ1dCBJIHRoaW5rIGl0IHNob3VsZCBiZSByZWR1bmRhbnQgd2l0aCB0aGUgbW9y ZQo+IGNvbXBsZXRlIG9uZSBpbiBlbGZfcmVzb2x2ZV9zZWN0aW9ucygpLgoKVGhpcyBpcyB0aGUg b3ZlcmZsb3cgY2hlY2sgQW5kcmV3IGFza2VkIGZvci4KPiAKPiA+K3N0cnVjdCB4c3BsaWNlX2Vs Zl9zZWMgewo+ID4rIEVsZl9TaGRyICpzZWM7IC8qIEhvb2tlZCB1cCBpbiBlbGZfcmVzb2x2ZV9z ZWN0aW9ucy4qLwo+IAo+IGNvbnN0Cj4gCj4gPitzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltIHsKPiA+ KyBFbGZfU3ltICpzeW07Cj4gCj4gY29uc3QKClRoYXQgd2lsbCBtYWtlICd4c3BsaWNlX2VsZl9y ZXNvbHZlX3N5bWJvbHMnIHVuaGFwcHk6CgplbGYtPnN5bVtpXS5zeW0tPnN0X3ZhbHVlID0gKHVu c2lnbmVkCmxvbmcpc3ltYm9sc19sb29rdXBfYnlfbmFtZShlbGYtPnN5bVtpXS5uYW1lKTsKClVu bGVzcyBJIGNhc3QgYXdheSBjb25zdG5lc3MuCj4gCj4gSmFuCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=