From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v5 09/28] xsplice: Add helper elf routines Date: Tue, 5 Apr 2016 21:38:58 -0400 Message-ID: <20160406013857.GA5468@localhost.localdomain> References: <1458849640-22588-1-git-send-email-konrad.wilk@oracle.com> <1458849640-22588-10-git-send-email-konrad.wilk@oracle.com> <56FD2E2F02000078000E1BA2@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.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ancR1-0007rK-2F for xen-devel@lists.xenproject.org; Wed, 06 Apr 2016 01:39:07 +0000 Received: by mail-qk0-f193.google.com with SMTP id s190so1023550qke.2 for ; Tue, 05 Apr 2016 18:39:05 -0700 (PDT) Content-Disposition: inline In-Reply-To: <56FD2E2F02000078000E1BA2@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 Fraser , andrew.cooper3@citrix.com, Ian Jackson , Tim Deegan , mpohlack@amazon.de, ross.lagerwall@citrix.com, sasha.levin@oracle.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org PiA+ICtzdGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rpb25zKHN0cnVjdCB4c3BsaWNlX2VsZiAq ZWxmLCBjb25zdCB2b2lkICpkYXRhKQo+ID4gK3sKLi4gc25pcC4uCj4gPiArICAgIC8qIE4uQi4g V2UgYWxzbyB3aWxsIGluZ2VzdCBTSE5fVU5ERUYgc2VjdGlvbnMuICovCj4gCj4gQmVjYXVzZSBv Zj8gVGhlIG1lYW5pbmcgb2YgdGhlIGZpZWxkcyBpbiB0aGUgMC10aCBzZWN0aW9uIGhlYWRlciBp cwo+IGRpZmZlcmVudCBmcm9tIHRoYXQgb2Ygb3JkaW5hcnkgb25lcy4KPiAKPiA+ICsgICAgZm9y ICggaSA9IDA7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsgaSsrICkKClRoZSByZWFzb24gZm9yIHRo aXMgaXMgbm90IG9idmlvdXMgLi4gSW4gdGhlIHBheWxvYWQgbG9hZGluZyBwYXRjaCBJCml0ZXJh dGUgb3ZlciBlYWNoIGVsZi0+c2VjIChzdGFydGluZyBhdCB6ZXJvKSBhbmQgaW1tZWRpYXRlbHkK ZGVyZWZlcmVuY2UgdGhlIHNoX3R5cGU6CglpZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdz IC4uICkKCkFzIHlvdSBjYW4gaW1hZ2luZSBpZiBJIGRvbid0IHNldCBlbGYtPnNlY1swXS5zZWMg dGhpcyBibG93cyB1cC4gSGVuY2UKdGhlIG9kZCBzdGFydCBhdCB6ZXJvLgoKSG93ZXZlciBvbmUg Y2FuIGFzIHdlbGwganVzdCBmaXggdGhlIGxvb3AgaW4gJ21vdmVfcGF5bG9hZCcgdG8gc3RhcnQK YXQgMSBpbnN0ZWFkIG9mIDAgLSB3aGljaCBpcyB3aGF0IEkgZGlkLgoKPiA+ICsgICAgewo+ID4g KyAgICAgICAgc3NpemVfdCBkZWx0YSA9IGVsZi0+aGRyLT5lX3Nob2ZmICsgaSAqIGVsZi0+aGRy LT5lX3NoZW50c2l6ZTsKPiAKPiBXaHkgc3NpemVfdD8gKFRoaXMgYW55d2F5IHNob3VsZCBiZSBh IHN1aXRhYmxlIEVMRiB0eXBlLikKPiAKPiA+ICsKPiA+ICsgICAgICAgIGlmICggZGVsdGEgKyBz aXplb2YoRWxmX1NoZHIpID4gZWxmLT5sZW4gKQo+ID4gKyAgICAgICAgewo+ID4gKyAgICAgICAg ICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCAiJXMlczogU2VjdGlvbiBoZWFkZXIgWyVkXSBpcyBw YXN0IGVuZCBvZiBwYXlsb2FkIVxuIiwKPiA+ICsgICAgICAgICAgICAgICAgICAgIFhTUExJQ0Us IGVsZi0+bmFtZSwgaSk7Cj4gCj4gWFNQTElDRSBpcyBhIHN0cmluZyBsaXRlcmFsLCBzbyBzaG91 bGQgYmUgcHJlcGVuZGVkIHRvIHRoZSBmb3JtYXQKPiBzdHJpbmcgaW5zdGVhZCBvZiBmb3JjZWQg dGhyb3VnaCAlcy4gQW5kICV1IHBsZWFzZSBmb3IgdW5zaWduZWQKPiBhcmd1bWVudHMuCj4gCj4g QWxzbyB0aGlzIGNoZWNrIGRvZXNuJ3QgbmVlZCBkb2luZyBpbnNpZGUgdGhlIGxvb3AgLSB5b3Ug Y2FuIHNpbXBseQo+IGNoZWNrIG9uY2UgKHVzaW5nIGVfc2hudW0pIHRoYXQgdGhlIGVudGlyZSBz ZWN0aW9uIHRhYmxlIGlzIHZhbGlkLgo+IAo+ID4gKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Owo+ID4gKyAgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICAgc2VjW2ldLnNlYyA9IChFbGZfU2hk ciAqKShkYXRhICsgZGVsdGEpOwo+IAo+IFBvaW50bGVzcyBjYXN0IGJvZ3VzbHkgY2FzdGluZyBh d2F5IGNvbnN0bmVzcy4KPiAKPiA+ICsgICAgICAgIGRlbHRhID0gc2VjW2ldLnNlYy0+c2hfb2Zm c2V0Owo+ID4gKwo+ID4gKyAgICAgICAgaWYgKCBkZWx0YSA+IGVsZi0+bGVuICkKPiAKPiBUaGlz IGlzIHJlbGV2YW50IG9ubHkgZm9yIHNlY3Rpb25zIGhhdmluZyBub24temVybyBzaXplLiBBbmQg dGhlbiB5b3Ugb2YKPiBjb3Vyc2UgbmVlZCB0byB0YWtlIHNpemUgaW50byBhY2NvdW50IHdoZW4g ZG9uZyB0aGUgYm91bmRzIGNoZWNrLgo+IAo+ID4gKyAgICAgICAgewo+ID4gKyAgICAgICAgICAg IGRwcmludGsoWEVOTE9HX0RFQlVHLCAiJXMlczogU2VjdGlvbiBbJWRdIGRhdGEgaXMgcGFzdCBl bmQgb2YgcGF5bG9hZCFcbiIsCj4gPiArICAgICAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYt Pm5hbWUsIGkpOwo+ID4gKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKyAgICAgICAg fQo+ID4gKwo+ID4gKyAgICAgICAgc2VjW2ldLmRhdGEgPSBkYXRhICsgZGVsdGE7Cj4gPiArICAg ICAgICAvKiBOYW1lIGlzIHBvcHVsYXRlZCBpbiB4c3BsaWNlX2VsZl9zZWN0aW9uc19uYW1lLiAq Lwo+ID4gKyAgICAgICAgc2VjW2ldLm5hbWUgPSBOVUxMOwo+ID4gKwo+ID4gKyAgICAgICAgaWYg KCBzZWNbaV0uc2VjLT5zaF90eXBlID09IFNIVF9TWU1UQUIgKQo+ID4gKyAgICAgICAgewo+ID4g KyAgICAgICAgICAgIGlmICggZWxmLT5zeW10YWIgKQo+ID4gKyAgICAgICAgICAgIHsKPiA+ICsg ICAgICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsICIlcyVzOiBNdWx0aXBsZSBzeW1i b2wgdGFibGVzIVxuIiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYt Pm5hbWUpOwo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAKPiBUaGVyZSdz IG5vdGhpbmcgaW52YWxpZCBhYm91dCB0aGlzLCBpdCdzIHNpbXBseSB1bnN1cHBvcnRlZCBieSB0 aGUKPiBpbXBsZW1lbnRhdGlvbiAocmVhZDogYSBiZXR0ZXIgZXJyb3IgY29kZSBwbGVhc2UpLgo+ IAo+ID4gKyAgICAgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgICAgICBlbGYtPnN5bXRhYiA9 ICZzZWNbaV07Cj4gPiArCj4gPiArICAgICAgICAgICAgLyoKPiA+ICsgICAgICAgICAgICAgKiBl bGYtPnN5bXRhYi0+c2VjLT5zaF9saW5rIHdvdWxkIHBvaW50IHRvIHRoZSByaWdodCBzZWN0aW9u Cj4gPiArICAgICAgICAgICAgICogYnV0IHdlIGhhZG4ndCBmaW5pc2hlZCBwYXJzaW5nIGFsbCB0 aGUgc2VjdGlvbnMuCj4gPiArICAgICAgICAgICAgICovCj4gPiArICAgICAgICAgICAgaWYgKCBl bGYtPnN5bXRhYi0+c2VjLT5zaF9saW5rID4gZWxmLT5oZHItPmVfc2hudW0gKQo+IAo+ID49Cj4g Cj4gPiArICAgICAgICAgICAgewo+ID4gKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19E RUJVRywgIiVzJXM6IFN5bWJvbCB0YWJsZSBpZHggKCVkKSB0byBzdHJ0YWIgcGFzdCBlbmQgKCVk KVxuIiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYtPm5hbWUsIGVs Zi0+c3ltdGFiLT5zZWMtPnNoX2xpbmssCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxm LT5oZHItPmVfc2hudW0pOwo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ ICsgICAgICAgICAgICB9Cj4gPiArICAgICAgICB9Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAg aWYgKCAhZWxmLT5zeW10YWIgKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICBkcHJpbnRrKFhFTkxP R19ERUJVRywgIiVzJXM6IE5vIHN5bWJvbCB0YWJsZSBmb3VuZCFcbiIsCj4gPiArICAgICAgICAg ICAgICAgIFhTUExJQ0UsIGVsZi0+bmFtZSk7Cj4gPiArICAgICAgICByZXR1cm4gLUVJTlZBTDsK PiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICAvKiBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgU0hUX1NU UlRBQiBzbyBwaWNrIHRoZSByaWdodCBvbmUuICovCj4gPiArICAgIGVsZi0+c3RydGFiID0gJnNl Y1tlbGYtPnN5bXRhYi0+c2VjLT5zaF9saW5rXTsKPiAKPiBIb3cgYWJvdXQgY2hlY2tpbmcgdGhp cyByZWFsbHkgaXMgYSBTSFRfU1RSVEFCIHNlY3Rpb24/Cj4gCj4gPiArICAgIGlmICggIWVsZi0+ c3ltdGFiLT5zZWMtPnNoX3NpemUgfHwgIWVsZi0+c3ltdGFiLT5zZWMtPnNoX2VudHNpemUgfHwK PiA+ICsgICAgICAgICBlbGYtPnN5bXRhYi0+c2VjLT5zaF9lbnRzaXplICE9IHNpemVvZihFbGZf U3ltKSApCj4gCj4gVGhlIGZpcnN0IHNoX2VudHNpemUgY2hlY2sgaXMgcmVkdW5kYW50IHdpdGgg dGhlIHNlY29uZCwgYW5kIHRoZQo+IHNlY29uZCBpcyB0b28gc3RyaWN0ICg8IHN1ZmZpY2VzKS4K PiAKPiBBbHNvIHNob3VsZG4ndCB0aGUgc3RyaW5nIHRhYmxlIHNlY3Rpb24gYWxzbyBoYXZlIGF0 IGxlYXN0IG5vbi16ZXJvCj4gc2l6ZT8gQW5kIGl0cyBmaXJzdCBhbmQgbGFzdCBieXRlcyBiZSBO VUw/Cj4gCj4gPiArc3RhdGljIGludCBlbGZfcmVzb2x2ZV9zZWN0aW9uX25hbWVzKHN0cnVjdCB4 c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQo+ID4gK3sKPiA+ICsgICAgY29uc3Qg Y2hhciAqc2hzdHJ0YWI7Cj4gPiArICAgIHVuc2lnbmVkIGludCBpOwo+ID4gKyAgICB1bnNpZ25l ZCBpbnQgb2Zmc2V0LCBkZWx0YTsKPiA+ICsKPiA+ICsgICAgLyoKPiA+ICsgICAgICogVGhlIGVs Zi0+c2VjWzAgLT4gZV9zaG51bV0gc3RydWN0dXJlcyBoYXZlIGJlZW4gdmVyaWZpZWQgYnkKPiA+ ICsgICAgICogZWxmX3Jlc29sdmVfc2VjdGlvbnMuIEZpbmQgZmlsZSBvZmZzZXQgZm9yIHNlY3Rp b24gc3RyaW5nIHRhYmxlLgo+ID4gKyAgICAgKi8KPiA+ICsgICAgb2Zmc2V0ID0gIGVsZi0+c2Vj W2VsZi0+aGRyLT5lX3Noc3RybmR4XS5zZWMtPnNoX29mZnNldDsKPiAKPiBUcnVuY2F0aW5nIHRo ZSB2YWx1ZSBvbiA2NC1iaXQgRUxGLgo+IAo+ID4gKyAgICBpZiAoIG9mZnNldCA+IGVsZi0+bGVu ICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsICIlcyVzOiBz aHN0cnRhYiBzZWN0aW9uIG9mZnNldCAoJXUpIHBhc3QgZW5kIG9mIHBheWxvYWQhXG4iLAo+ID4g KyAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYtPm5hbWUsIGVsZi0+aGRyLT5lX3Noc3RybmR4 KTsKPiA+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAg IHNoc3RydGFiID0gKGRhdGEgKyBvZmZzZXQpOwo+IAo+IFBvaW50bGVzcyBwYXJlbnRoZXNlcy4K PiAKPiA+ICsgICAgLyogV2UgY291bGQgaWdub3JlIHRoZSBmaXJzdCBhcyBpdCBpcyByZXNlcnZl ZC4uICovCj4gCj4gRG91YmxlIGZ1bGwgc3RvcC4KPiAKPiA+ICsgICAgZm9yICggaSA9IDA7IGkg PCBlbGYtPmhkci0+ZV9zaG51bTsgaSsrICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgZGVsdGEg PSBlbGYtPnNlY1tpXS5zZWMtPnNoX25hbWU7Cj4gPiArCj4gPiArICAgICAgICBpZiAoIG9mZnNl dCArIGRlbHRhID4gZWxmLT5sZW4gKQo+IAo+IFRoaXMgaXMgdG9vIHdlYWs6IEFmdGVyIGhhdmlu ZyBib3VuZHMgY2hlY2tlZCB0aGUgc3RyaW5nIHRhYmxlIHNlY3Rpb24KPiB0byBiZSBpbnNpZGUg dGhlIGltYWdlLCB5b3Ugbm93IG5lZWQgdG8gYm91bmRzIGNoZWNrIHRoZSBzdHJpbmcgb2Zmc2V0 Cj4gdG8gYmUgaW5zaWRlIHRoZSBzdHJpbmcgdGFibGUuIEFsc28gaXQgc2VlbXMgKGp1c3QgbGlr ZSBhYm92ZSkgeW91Cj4gbm8td2hlcmUgY2hlY2sgdGhhdCB0aGUgcmVmZXJlbmNlZCBzZWN0aW9u IGFjdHVhbGx5IGlzIGEgc3RyaW5nIHRhYmxlLgo+IAo+ID4gK3N0YXRpYyBpbnQgZWxmX2dldF9z eW0oc3RydWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpCj4gPiArewo+ID4g KyAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzeW10YWJfc2VjLCAqc3RydGFiX3NlYzsKPiA+ ICsgICAgc3RydWN0IHhzcGxpY2VfZWxmX3N5bSAqc3ltOwo+ID4gKyAgICB1bnNpZ25lZCBpbnQg aSwgZGVsdGEsIG9mZnNldCwgbnN5bTsKPiA+ICsKPiA+ICsgICAgc3ltdGFiX3NlYyA9IGVsZi0+ c3ltdGFiOwo+ID4gKyAgICBzdHJ0YWJfc2VjID0gZWxmLT5zdHJ0YWI7Cj4gPiArCj4gPiArICAg IC8qIFBvaW50ZXJzIGFyaXRobWV0aWMgdG8gZ2V0IGZpbGUgb2Zmc2V0LiAqLwo+ID4gKyAgICBv ZmZzZXQgPSBzdHJ0YWJfc2VjLT5kYXRhIC0gZGF0YTsKPiA+ICsKPiA+ICsgICAgQVNTRVJUKG9m ZnNldCA9PSBzdHJ0YWJfc2VjLT5zZWMtPnNoX29mZnNldCk7Cj4gPiArCj4gPiArICAgIC8qIHN5 bXRhYl9zZWMtPmRhdGEgd2FzIGNvbXB1dGVkIGluIGVsZl9yZXNvbHZlX3NlY3Rpb25zLiAqLwo+ ID4gKyAgICBBU1NFUlQoKHN5bXRhYl9zZWMtPnNlYy0+c2hfb2Zmc2V0ICsgZGF0YSkgPT0gc3lt dGFiX3NlYy0+ZGF0YSk7Cj4gPiArCj4gPiArICAgIC8qIE5vIG5lZWQgdG8gY2hlY2sgdmFsdWVz IGFzIGVsZl9yZXNvbHZlX3NlY3Rpb25zIGRpZCBpdC4gKi8KPiA+ICsgICAgbnN5bSA9IHN5bXRh Yl9zZWMtPnNlYy0+c2hfc2l6ZSAvIHN5bXRhYl9zZWMtPnNlYy0+c2hfZW50c2l6ZTsKPiA+ICsK PiA+ICsgICAgc3ltID0geG1hbGxvY19hcnJheShzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltLCBuc3lt KTsKPiA+ICsgICAgaWYgKCAhc3ltICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgcHJpbnRrKFhF TkxPR19FUlIgIiVzJXM6IENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN5bWJvbHNcbiIs Cj4gPiArICAgICAgICAgICAgICAgWFNQTElDRSwgZWxmLT5uYW1lKTsKPiA+ICsgICAgICAgIHJl dHVybiAtRU5PTUVNOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIC8qIFNvIHdlIGRvbid0IGxl YWsgbWVtb3J5LiAqLwo+ID4gKyAgICBlbGYtPnN5bSA9IHN5bTsKPiA+ICsgICAgZm9yICggaSA9 IDA7IGkgPCBuc3ltOyBpKysgKQo+IAo+IEFzIHdpdGggc2VjdGlvbnMsIHRoZSAwdGggc3ltYm9s IHRhYmxlIGVudHJ5IGlzIHNwZWNpYWwgdG9vLgo+IAo+ID4gKyAgICB7Cj4gPiArICAgICAgICBF bGZfU3ltICpzOwo+ID4gKwo+ID4gKyAgICAgICAgaWYgKCBpICogc2l6ZW9mKEVsZl9TeW0pID4g ZWxmLT5sZW4gKQo+IAo+IENvbnNpZGVyaW5nIHRoYXQgd2Uga25vdyB0aGUgc3ltYm9sIHRhYmxl IHNlY3Rpb24gaXMgd2l0aGluIGJvdW5kcywKPiBJIGRvbid0IHRoaW5rIHRoaXMgY2hlY2sgZG9l cyBhbnkgZ29vZC4gUGx1cyBpdCBvdWdodCB0byBiZSBhZGRpbmcgMQo+IHRvIGkgYW5kIHRha2Ug dGhlIHNlY3Rpb24gZmlsZSBvZmZzZXQgaW50byBhY2NvdW50Lgo+IAo+ID4gKyAgICAgICAgewo+ ID4gKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCAiJXMlczogU3ltYm9sIGhlYWRl ciBbJWRdIGlzIHBhc3QgZW5kIG9mICBwYXlsb2FkIVxuIiwKPiA+ICsgICAgICAgICAgICAgICAg ICAgIFhTUExJQ0UsIGVsZi0+bmFtZSwgaSk7Cj4gPiArICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4gPiArICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICBzID0gJigoRWxmX1N5bSAqKXN5 bXRhYl9zZWMtPmRhdGEpW2ldOwo+ID4gKwo+ID4gKyAgICAgICAgLyogSWYgc3QtPm5hbWUgaXMg U1ROX1VOREVGIGlzIHplcm8sIHRoZSBjaGVjayB3aWxsIGFsd2F5cyBiZSB0cnVlLiAqLwo+IAo+ IE9kZCBkb3VibGUgdXNlIG9mICJpcyIuCj4gCj4gPiArICAgICAgICBkZWx0YSA9IHMtPnN0X25h bWU7Cj4gPiArCj4gPiArICAgICAgICAvKiBPZmZzZXQgaGFzIGJlZW4gY29tcHV0ZWQgZWFybGll ci4gKi8KPiA+ICsgICAgICAgIGlmICggb2Zmc2V0ICsgZGVsdGEgPiBlbGYtPmxlbiApCj4gCj4g VGhpcyBzaG91bGQgYWdhaW4gY2hlY2sgYWdhaW5zdCB0aGUgc3RyaW5nIHRhYmxlIHNpemUgYW5k IGFnYWluIHVzZSA+PSAuCgpJIHJld29ya2VkIHRoaXMgYSBiaXQgKGJvcnJvd2VkIHlvdXIgaWRl YSBvZiBjaGVja2luZyB0aGUgZnVsbCBzaXplIG9mCnRoZSBzZWN0aW9uIGJlZm9yZSB0aGUgbG9v cCkgLSB3aGljaCByZW1vdmVzIHRoZSBuZWVkIHRvIGNoZWNrCnRoZSBvZmZzZXQuCgpXaGF0IEkg ZW5kZWQgdXAgaXMgc29tZXRoaW5nIG11Y2ggc2ltcGxlciAoYXMgSSBrbm93IHRoZSBvZmZzZXQK aXMgT0sgLSBJIGp1c3QgbmVlZCB0byBjaGVjayB0aGF0IHRoZSBkZWx0YSBpcyB3aXRoaW4gdGhl IHNlY3Rpb24pOgoJaWYgKCBkZWx0YSAmJiAoZGVsdGEgPiBzdHJ0YWJfc2VjLT5zZWMtPnNlY19z aF9zaXplKSApCgkJLi4KClRoZSBvZmZzZXQgZ2V0cyAoaW4gdGhlIG5ldyBwYXRjaHNldCkgY2hl Y2tlZCBpbiBlbGZfcmVzb2x2ZV9zZWN0aW9uLgoKQWxiZWl0IEkgYW0gbm90IHN1cmUgYWJvdXQg dGhlID49IGluc3RlYWQgb2YgPiwgLi4gSSBuZWVkIHRvIHRoaW5rIG9mCnRoYXQuCgouLiBzbmlw Li4KPiA+ICt2b2lkIHhzcGxpY2VfZWxmX2ZyZWUoc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCj4g PiArewo+ID4gKyAgICB4ZnJlZShlbGYtPnNlYyk7Cj4gPiArICAgIGVsZi0+c2VjID0gTlVMTDsK PiA+ICsgICAgeGZyZWUoZWxmLT5zeW0pOwo+ID4gKyAgICBlbGYtPnN5bSA9IE5VTEw7Cj4gPiAr ICAgIGVsZi0+bnN5bSA9IDA7Cj4gPiArICAgIGVsZi0+bmFtZSA9IE5VTEw7Cj4gPiArICAgIGVs Zi0+bGVuID0gMDsKPiA+ICt9Cj4gCj4gSW5zdGVhZCBvZiB6ZXJvaW5nIHRoZXNlIGZpZWxkcywg d291bGRuJ3QgaXQgbWFrZSBzZW5zZSB0byBzaW1wbHkKPiB4ZnJlZShlbGYpIGFzIHRoZSBsYXN0 IGFjdGlvbiBoZXJlPwoKVGhlICBzdHJ1Y3QgeHNwbGljZV9lbGYgaXMgYWxsb2NhdGVkIG9uIHRo ZSBzdGFjayAoaW4gdGhlIG5leHQKcGF0Y2gpLgoKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBi L3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCi4uIHNuaXAuLgo+ID4gK3N0cnVjdCB4c3Bs aWNlX2VsZl9zeW0gewo+ID4gKyAgICBFbGZfU3ltICpzeW07Cj4gCj4gY29uc3Q/CgouLiB0aGlz IGlzIG11Y2ggaGFyZGVyLiBJIGVuZCB1cCBjb21wdXRpbmcgdGhlIHZhbHVlcyBmb3IKdGhlc2Ug c3ltYm9scyBhbmQgaGF2ZSB0byB3cml0ZSB0byB0aGlzIHRoaXMgc3RydWN0dXJlIGEgY291cGxl IG9mIHRpbWVzCihhdCB3b3JzdCkuCj4gCj4gPiArICAgIGNvbnN0IGNoYXIgKm5hbWU7Cj4gPiAr fTsKPiA+ICsKPiA+ICtzdHJ1Y3QgeHNwbGljZV9lbGYgewo+ID4gKyAgICBjb25zdCBjaGFyICpu YW1lOyAgICAgICAgICAgICAgLyogUG9pbnRlciB0byBwYXlsb2FkLT5uYW1lLiAqLwo+ID4gKyAg ICBzc2l6ZV90IGxlbjsgICAgICAgICAgICAgICAgICAgLyogTGVuZ3RoIG9mIHRoZSBFTEYgZmls ZS4gKi8KPiAKPiBXaHkgc3NpemVfdD8KCk1hZGUgaXQgJ3NpemVfdCcKPiAKPiA+ICsgICAgRWxm X0VoZHIgKmhkcjsgICAgICAgICAgICAgICAgIC8qIEVMRiBmaWxlLiAqLwo+ID4gKyAgICBzdHJ1 Y3QgeHNwbGljZV9lbGZfc2VjICpzZWM7ICAgLyogQXJyYXkgb2Ygc2VjdGlvbnMsIGFsbG9jYXRl ZCBieSB1cy4gKi8KPiA+ICsgICAgc3RydWN0IHhzcGxpY2VfZWxmX3N5bSAqc3ltOyAgIC8qIEFy cmF5IG9mIHN5bWJvbHMgLCBhbGxvY2F0ZWQgYnkgdXMuICovCj4gPiArICAgIHVuc2lnbmVkIGlu dCBuc3ltOwo+ID4gKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzeW10YWI7LyogUG9pbnRl ciB0byAuc3ltdGFiIHNlY3Rpb24gLSBha2EgdG8gc2VjW3hdLiAqLwo+ID4gKyAgICBzdHJ1Y3Qg eHNwbGljZV9lbGZfc2VjICpzdHJ0YWI7LyogUG9pbnRlciB0byAuc3RydGFiIHNlY3Rpb24gLSBh a2EgdG8gc2VjW3ldLiAqLwo+IAo+IE1hbnkgdGltZXMgLSBjb25zdD8KCkkgaGF2ZSBtYWRlIHRo ZSBzeW10YWIgYW5kIHN0cnRhYiBjb25zdCwgYnV0IHRoZSAnc2VjJyBhbmQgJ3N5bScKSSBjYW4n dCBlYXNpbHkuIFRoZXJlIGFyZSBtYW55IGluc3RhbmNlcyB3aGVyZSBJIHBva2UgaW4gdGhlCnNl Y3Rpb24gKGxpa2UgZm9yIEVMRiByZWxvY2F0aW9ucykgYW5kIGhhdmUgdG8gbW9kaWZ5IHRoaXMu CgpJIGNhbiBkbyBzb21lIGNhc3RpbmcgYnV0IGl0IGdldHMgYSBiaXQgLi4gbWVzc3kuCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=