From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Subject: Re: [PATCH v4 3/4] libelf: rewrite symtab/strtab loading Date: Fri, 26 Feb 2016 18:02:15 +0100 Message-ID: <56D08517.8070801@citrix.com> References: <1455644269-40358-1-git-send-email-roger.pau@citrix.com> <1455644269-40358-4-git-send-email-roger.pau@citrix.com> <56D05DE602000078000D6B74@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.xen.org with esmtp (Exim 4.84) (envelope-from ) id 1aZLnj-0003te-GM for xen-devel@lists.xenproject.org; Fri, 26 Feb 2016 17:03:35 +0000 In-Reply-To: <56D05DE602000078000D6B74@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: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org RWwgMjYvMi8xNiBhIGxlcyAxNDoxNSwgSmFuIEJldWxpY2ggaGEgZXNjcml0Ogo+Pj4+IE9uIDE2 LjAyLjE2IGF0IDE4OjM3LCA8cm9nZXIucGF1QGNpdHJpeC5jb20+IHdyb3RlOgo+PiAtLS0gYS94 ZW4vY29tbW9uL2xpYmVsZi9saWJlbGYtbG9hZGVyLmMKPj4gKysrIGIveGVuL2NvbW1vbi9saWJl bGYvbGliZWxmLWxvYWRlci5jCj4+IEBAIC0xNjQsMjAgKzE2NCwzMyBAQCB2b2lkIGVsZl9wYXJz ZV9ic2RzeW1zKHN0cnVjdCBlbGZfYmluYXJ5ICplbGYsIHVpbnQ2NF90IHBzdGFydCkKPj4gICAg ICBzeiA9IHNpemVvZih1aW50MzJfdCk7Cj4+ICAKPj4gICAgICAvKiBTcGFjZSBmb3IgdGhlIGVs ZiBhbmQgZWxmIHNlY3Rpb24gaGVhZGVycyAqLwo+PiAtICAgIHN6ICs9IChlbGZfdXZhbChlbGYs IGVsZi0+ZWhkciwgZV9laHNpemUpICsKPj4gLSAgICAgICAgICAgZWxmX3NoZHJfY291bnQoZWxm KSAqIGVsZl91dmFsKGVsZiwgZWxmLT5laGRyLCBlX3NoZW50c2l6ZSkpOwo+PiArICAgIHN6ICs9 IGVsZl91dmFsKGVsZiwgZWxmLT5laGRyLCBlX2Voc2l6ZSkgKwo+PiArICAgICAgICAgIDMgKiBl bGZfdXZhbChlbGYsIGVsZi0+ZWhkciwgZV9zaGVudHNpemUpOwo+IAo+IEkgdGhpbmsgYSBsaXRl cmFsIDMgbGlrZSB0aGlzIGVpdGhlciBuZWVkcyBhICNkZWZpbmUgKGF0IG9uY2Ugc2VydmluZwo+ IGFzIGRvY3VtZW50YXRpb24pIG9yIGEgY29tbWVudC4gUGVyaGFwcyByYXRoZXIgdGhlIGZvcm1l ciwKPiBjb25zaWRlcmluZyB0aGF0IHRoZSAoc2FtZT8pIDMgYXBwZWFycyBhZ2FpbiBmdXJ0aGVy IGRvd24uIFBsdXMgLQo+IHdoYXQgZ3VhcmFudGVlcyB0aGVyZSBhcmUgMyBzZWN0aW9uIGhlYWRl cnMgaW4gdGhlIGltYWdlPwoKVGhpcyBpcyBub3QgcmVsYXRlZCB0byB0aGUgaW1hZ2UgaXRzZWxm LCBidXQgdG8gdGhlIG1ldGFkYXRhIHRoYXQgbGliZWxmCnBsYWNlcyBhdCB0aGUgZW5kIG9mIHRo ZSBsb2FkZWQga2VybmVsIGluIG9yZGVyIHRvIHN0YXNoIHRoZSBzeW10YWIgYW5kCnN0cnRhYiBm b3IgdGhlIGd1ZXN0IHRvIHVzZS4KClRoZSBsYXlvdXQgaXMgYXMgZm9sbG93cyAoSSBzaG91bGQg YWRkIHRoaXMgdG8gdGhlIHBhdGNoIGl0c2VsZiBhcyBhCmNvbW1lbnQsIHNpbmNlIEkgZ3Vlc3Mg dGhpcyBpcyBzdGlsbCBxdWl0ZSBjb25mdXNpbmcpOgoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKfCAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBLRVJORUwgICAgICAgICAgICAgICAgIHwK fCAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgcGVu ZAp8IEFMSUdOTUVOVCAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyBi c2Rfc3ltdGFiX3BzdGFydAp8ICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHNpemUgICAgICAg ICAgICAgICAgICAgfCBic2Rfc3ltdGFiX3BlbmQgLSBic2Rfc3ltdGFiX3BzdGFydAp8ICAgICAg ICAgICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8ICAgICAgICAg ICAgICAgICAgICAgICAgfAp8IEVMRiBoZWFkZXIgICAgICAgICAgICAgfAp8ICAgICAgICAgICAg ICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8ICAgICAgICAgICAgICAg ICAgICAgICAgfAp8IEVMRiBzZWN0aW9uIGhlYWRlciAwICAgfCBEdW1teSBzZWN0aW9uIGhlYWRl cgp8ICAgICAgICAgICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8 ICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEVMRiBzZWN0aW9uIGhlYWRlciAxICAgfCBTWU1U QUIgc2VjdGlvbiBoZWFkZXIKfCAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBFTEYgc2VjdGlvbiBo ZWFkZXIgMiAgIHwgU1RSVEFCIHNlY3Rpb24gaGVhZGVyCnwgICAgICAgICAgICAgICAgICAgICAg ICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgICAgICAgICAgICAgICAgICAgICAgICB8 CnwgU1lNVEFCICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICB8Cist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgICAgICAgICAgICAgICAgICAgICAgICB8CnwgU1RS VEFCICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICB8CistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rIGJzZF9zeW10YWJfcGVuZAoKVGhlcmUgYXJlIGFsd2F5cyBvbmx5 IHRyZWUgc2VjdGlvbnMgYmVjYXVzZSB0aGF0J3MgYWxsIHdlIG5lZWQsIHNlY3Rpb24KMCBpcyBp Z25vcmVkLCBzZWN0aW9uIDEgaXMgdXNlZCB0byBkZXNjcmliZSB0aGUgU1lNVEFCLCBhbmQgc2Vj dGlvbiAyIGlzCnVzZWQgdG8gZGVzY3JpYmUgdGhlIFNUUlRBQi4gQWNjb3JkaW5nIHRvIHRoZSBF TEYgc3BlYyB0aGVyZSBjYW4gb25seSBiZQpvbmUgU1lNVEFCLCBzbyB0aGF0J3MgYWxsIHdlIG5l ZWQuCgo+IAo+PiAgICAgIHN6ID0gZWxmX3JvdW5kX3VwKGVsZiwgc3opOwo+PiAgCj4+IC0gICAg LyogU3BhY2UgZm9yIHRoZSBzeW1ib2wgYW5kIHN0cmluZyB0YWJsZXMuICovCj4+ICsgICAgLyog U3BhY2UgZm9yIHRoZSBzeW1ib2wgYW5kIHN0cmluZyB0YWJsZS4gKi8KPj4gICAgICBmb3IgKCBp ID0gMDsgaSA8IGVsZl9zaGRyX2NvdW50KGVsZik7IGkrKyApCj4+ICAgICAgewo+PiAgICAgICAg ICBzaGRyID0gZWxmX3NoZHJfYnlfaW5kZXgoZWxmLCBpKTsKPj4gICAgICAgICAgaWYgKCAhZWxm X2FjY2Vzc19vayhlbGYsIEVMRl9IQU5ETEVfUFRSVkFMKHNoZHIpLCAxKSApCj4+ICAgICAgICAg ICAgICAvKiBpbnB1dCBoYXMgYW4gaW5zYW5lIHNlY3Rpb24gaGVhZGVyIGNvdW50IGZpZWxkICov Cj4+ICAgICAgICAgICAgICBicmVhazsKPj4gLSAgICAgICAgdHlwZSA9IGVsZl91dmFsKGVsZiwg c2hkciwgc2hfdHlwZSk7Cj4+IC0gICAgICAgIGlmICggKHR5cGUgPT0gU0hUX1NUUlRBQikgfHwg KHR5cGUgPT0gU0hUX1NZTVRBQikgKQo+PiAtICAgICAgICAgICAgc3ogPSBlbGZfcm91bmRfdXAo ZWxmLCBzeiArIGVsZl91dmFsKGVsZiwgc2hkciwgc2hfc2l6ZSkpOwo+PiArCj4+ICsgICAgICAg IGlmICggZWxmX3V2YWwoZWxmLCBzaGRyLCBzaF90eXBlKSAhPSBTSFRfU1lNVEFCICkKPj4gKyAg ICAgICAgICAgIGNvbnRpbnVlOwo+PiArCj4+ICsgICAgICAgIHN6ID0gZWxmX3JvdW5kX3VwKGVs Ziwgc3ogKyBlbGZfdXZhbChlbGYsIHNoZHIsIHNoX3NpemUpKTsKPj4gKyAgICAgICAgc2hkciA9 IGVsZl9zaGRyX2J5X2luZGV4KGVsZiwgZWxmX3V2YWwoZWxmLCBzaGRyLCBzaF9saW5rKSk7Cj4+ ICsKPj4gKyAgICAgICAgaWYgKCAhZWxmX2FjY2Vzc19vayhlbGYsIEVMRl9IQU5ETEVfUFRSVkFM KHNoZHIpLCAxKSApCj4+ICsgICAgICAgICAgICAvKiBpbnB1dCBoYXMgYW4gaW5zYW5lIHNlY3Rp b24gaGVhZGVyIGNvdW50IGZpZWxkICovCj4+ICsgICAgICAgICAgICBicmVhazsKPj4gKwo+PiAr ICAgICAgICBpZiAoIGVsZl91dmFsKGVsZiwgc2hkciwgc2hfdHlwZSkgIT0gU0hUX1NUUlRBQiAp Cj4+ICsgICAgICAgICAgICAvKiBJbnZhbGlkIHN5bXRhYiAtPiBzdHJ0YWIgbGluayAqLwo+PiAr ICAgICAgICAgICAgYnJlYWs7Cj4gCj4gVGhpcyBpcyBub3Qgc3VmZmljaWVudCAtIHdoYXQgaWYg c2hfbGluayBpcyBvdXQgb2YgYm91bmRzLCBidXQgdGhlCj4gYm9ndXNseSBhY2Nlc3NlZCBmaWVs ZCBoYXBwZW5zIHRvIGhvbGQgU0hUX1NUUlRBQj8gKE9kZGx5Cj4gZW5vdWdoIHlvdSBoYXZlIGF0 IGxlYXN0IGFuIFNITl9VTkRFRiBjaGVjayBpbiB0aGUgc2Vjb25kCj4gbG9vcCBiZWxvdy4pCgpU aGUgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd291bGQgYmUgZGV0ZWN0ZWQgYnkgZWxmX2FjY2Vzc19v ayAoaWYgaXQncyBvdXQKb2YgdGhlIHNjb3BlIG9mIHRoZSBFTEYgZmlsZSwgd2hpY2ggaXMgYWxs IHdlIGNhcmUgYWJvdXQpLiBJbiBmYWN0IHRoZQplbGZfYWNjZXNzX29rIGFib3ZlIGNvdWxkIGJl IHJlbW92ZWQgYmVjYXVzZSBlbGZfdXZhbCBhbHJlYWR5IHBlcmZvcm1zCm91dC1vZi1ib3VuZHMg Y2hlY2tzLiBUaGUgcmVzdWx0IGlzIGRlZmluaXRlbHkgbm8gd29yc2UgdGhhdCB3aGF0IHdlIGFy ZQpkb2luZyBBVE0uCgo+IAo+IEFsc28gZXZlbiBpZiAoSSBhc3N1bWUpIGVsZl9sb2FkX2ltYWdl KCkgd291bGQgcmVmdXNlIHRvIHJlYWQKPiBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGltYWdl LCB3b3VsZG4ndCB5b3UgYmV0dGVyIGNoZWNrIGhlcmUKPiB0aGF0IGJvdGggc3ltdGFiIGFuZCBz dHJ0YWIgYXJlIHdpdGhpbiBpbWFnZSBib3VuZHM/IFRoZSBtb3JlCj4gdGhhdCB5b3UgaWdub3Jl IGVycm9ycyBmcm9tIGVsZl9sb2FkX2ltYWdlKCkgKGFuZAo+IGVsZl9tZW17Y3B5LHNldH1fc2Fm ZSgpIGRvbid0IGV2ZW4gcmV0dXJuIGFueSk/CgpZZXMsIEkgd2lsbCBhZGQgZXJyb3IgY2hlY2tz IHRvIGVsZl9sb2FkX2ltYWdlIGNhbGxzIGJlbG93LgoKPj4gQEAgLTE4Niw3OSArMTk5LDE2OSBA QCB2b2lkIGVsZl9wYXJzZV9ic2RzeW1zKHN0cnVjdCBlbGZfYmluYXJ5ICplbGYsIAo+PiB1aW50 NjRfdCBwc3RhcnQpCj4+ICAKPj4gIHN0YXRpYyB2b2lkIGVsZl9sb2FkX2JzZHN5bXMoc3RydWN0 IGVsZl9iaW5hcnkgKmVsZikKPj4gIHsKPj4gLSAgICBFTEZfSEFORExFX0RFQ0woZWxmX2VoZHIp IHN5bV9laGRyOwo+PiAtICAgIHVuc2lnbmVkIGxvbmcgc3o7Cj4+IC0gICAgZWxmX3B0cnZhbCBt YXh2YTsKPj4gLSAgICBlbGZfcHRydmFsIHN5bWJhc2U7Cj4+IC0gICAgZWxmX3B0cnZhbCBzeW10 YWJfYWRkcjsKPj4gLSAgICBFTEZfSEFORExFX0RFQ0woZWxmX3NoZHIpIHNoZHI7Cj4+IC0gICAg dW5zaWduZWQgaSwgdHlwZTsKPj4gKyAgICAvKgo+PiArICAgICAqIEhlYWRlciB0aGF0IGlzIHBs YWNlZCBhdCB0aGUgZW5kIG9mIHRoZSBrZXJuZWwgYW5kIGFsbG93cwo+PiArICAgICAqIHRoZSBP UyB0byBmaW5kIHdoZXJlIHRoZSBzeW10YWIgYW5kIHN0cnRhYiBoYXZlIGJlZW4gbG9hZGVkLgo+ PiArICAgICAqIEl0IG1pbWljcyBhIHZhbGlkIEVMRiBmaWxlIGhlYWRlciwgYWx0aG91Z2ggaXQg b25seSBjb250YWlucwo+PiArICAgICAqIGEgc3ltdGFiIGFuZCBhIHN0cnRhYiBzZWN0aW9uLgo+ PiArICAgICAqCj4+ICsgICAgICogTkI6IGFjY29yZGluZyB0byB0aGUgRUxGIHNwZWMgdGhlcmUn cyBvbmx5IE9ORSBzeW10YWIgcGVyIEVMRgo+PiArICAgICAqIGZpbGUsIGFuZCBhY2NvcmRpbmds eSB3ZSB3aWxsIG9ubHkgbG9hZCB0aGUgY29ycmVzcG9uZGluZwo+PiArICAgICAqIHN0cnRhYiwg c28gd2Ugb25seSBuZWVkIHRocmVlIHNlY3Rpb24gaGVhZGVycyBpbiBvdXIgZmFrZSBFTEYKPj4g KyAgICAgKiBoZWFkZXIgKGZpcnN0IHNlY3Rpb24gaGVhZGVyIGlzIGFsd2F5cyBhIGR1bW15KS4K Pj4gKyAgICAgKi8KPj4gKyAgICBzdHJ1Y3Qgewo+PiArICAgICAgICB1aW50MzJfdCBzaXplOwo+ PiArICAgICAgICBzdHJ1Y3Qgewo+PiArICAgICAgICAgICAgZWxmX2VoZHIgaGVhZGVyOwo+PiAr ICAgICAgICAgICAgZWxmX3NoZHIgc2VjdGlvblszXTsKPj4gKyAgICAgICAgfSBfX2F0dHJpYnV0 ZV9fKChwYWNrZWQpKSBlbGZfaGVhZGVyOwo+PiArICAgIH0gX19hdHRyaWJ1dGVfXygocGFja2Vk KSkgaGVhZGVyOwo+IAo+IElmIHRoaXMgaXMgcGxhY2VkIGF0IHRoZSBlbmQsIGhvdyBjYW4gdGhl IE9TIHJlYXNvbmFibHkgdXNlIGl0Cj4gd2l0aG91dCBrbm93aW5nIHRoYXQgdGhlcmUgYXJlIGV4 YWN0bHkgMyBzZWN0aW9uIGhlYWRlcgo+IGVudHJpZXM/IEkuZS4gaG93IHdvdWxkIGl0IGZpbmQg dGhlIGJhc2Ugb2YgdGhpcyBzdHJ1Y3R1cmU/CgpTZWUgdGhlIGNvbW1lbmQgYmVsb3csIHRoZSBi YXNlIGlzIGZvdW5kIGF0IHRoZSBlbmQgb2YgdGhlIGtlcm5lbCwgYW5kCnRoZW4gdGhlIEVMRiBo ZWFkZXIgY29udGFpbnMgdGhlIHJpZ2h0IHBvaW50ZXJzIHRvIHRoZSBzZWN0aW9ucyBoZWFkZXJz CihieSBhcHByb3ByaWF0ZWx5IHNldHRpbmcgZV9zaG9mZikuCgpJTUhPLCB0aGlzIGlzIGFuIG92 ZXJseSBjb21wbGV4IHdheSB0byBwYXNzIGEgU1lNVEFCIGFuZCBTVFJUQUIsIGJ1dAppdCdzIGJh a2VkIGluIHRoZSBBQkksIHNvIEkgZG9uJ3Qgc2VlIHVzIGNoYW5naW5nIGl0LgoKPj4gKyAgICBF TEZfSEFORExFX0RFQ0woZWxmX2VoZHIpIGhlYWRlcl9oYW5kbGU7Cj4+ICsgICAgdW5zaWduZWQg bG9uZyBzaGRyX3NpemU7Cj4+ICsgICAgRUxGX0hBTkRMRV9ERUNMKGVsZl9zaGRyKSBzZWN0aW9u X2hhbmRsZTsKPj4gKyAgICBFTEZfSEFORExFX0RFQ0woZWxmX3NoZHIpIGltYWdlX2hhbmRsZTsK Pj4gKyAgICB1bnNpZ25lZCBpbnQgaSwgbGluazsKPj4gKyAgICBlbGZfcHRydmFsIGhlYWRlcl9i YXNlOwo+PiArICAgIGVsZl9wdHJ2YWwgZWxmX2hlYWRlcl9iYXNlOwo+PiArICAgIGVsZl9wdHJ2 YWwgc3ltdGFiX2Jhc2U7Cj4+ICsgICAgZWxmX3B0cnZhbCBzdHJ0YWJfYmFzZTsKPj4gIAo+PiAg ICAgIGlmICggIWVsZi0+YnNkX3N5bXRhYl9wc3RhcnQgKQo+PiAgICAgICAgICByZXR1cm47Cj4+ ICAKPj4gLSNkZWZpbmUgZWxmX2hkcl9lbG0oX2VsZiwgX2hkciwgX2VsbSwgX3ZhbCkgICAgIFwK Pj4gLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4g LSAgICBpZiAoIGVsZl82NGJpdChfZWxmKSApICAgICAgICAgICAgICAgICAgICAgIFwKPj4gLSAg ICAgICAgZWxmX3N0b3JlX2ZpZWxkKF9lbGYsIF9oZHIsIGU2NC5fZWxtLCBfdmFsKTsgIFwKPj4g LSAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gLSAg ICAgICAgZWxmX3N0b3JlX2ZpZWxkKF9lbGYsIF9oZHIsIGUzMi5fZWxtLCBfdmFsKTsgIFwKPj4g KyNkZWZpbmUgZWxmX3N0b3JlX2ZpZWxkX2JpdG5lc3MoX2VsZiwgX2hkciwgX2VsbSwgX3ZhbCkg ICAgICAgICAgICAgXAo+PiArZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgaWYgKCBlbGZfNjRiaXQoX2Vs ZikgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKyAgICAg ICAgZWxmX3N0b3JlX2ZpZWxkKF9lbGYsIF9oZHIsIGU2NC5fZWxtLCBfdmFsKTsgICAgICAgICAg ICAgICAgXAo+PiArICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAgIGVsZl9zdG9yZV9maWVsZChfZWxm LCBfaGRyLCBlMzIuX2VsbSwgX3ZhbCk7ICAgICAgICAgICAgICAgIFwKPj4gIH0gd2hpbGUgKCAw ICkKPj4gIAo+PiAtICAgIHN5bWJhc2UgPSBlbGZfZ2V0X3B0cihlbGYsIGVsZi0+YnNkX3N5bXRh Yl9wc3RhcnQpOwo+PiAtICAgIHN5bXRhYl9hZGRyID0gbWF4dmEgPSBzeW1iYXNlICsgc2l6ZW9m KHVpbnQzMl90KTsKPj4gLQo+PiAtICAgIC8qIFNldCB1cCBFbGYgaGVhZGVyLiAqLwo+PiAtICAg IHN5bV9laGRyID0gRUxGX01BS0VfSEFORExFKGVsZl9laGRyLCBzeW10YWJfYWRkcik7Cj4+IC0g ICAgc3ogPSBlbGZfdXZhbChlbGYsIGVsZi0+ZWhkciwgZV9laHNpemUpOwo+PiAtICAgIGVsZl9t ZW1jcHlfc2FmZShlbGYsIEVMRl9IQU5ETEVfUFRSVkFMKHN5bV9laGRyKSwgRUxGX0hBTkRMRV9Q VFJWQUwoZWxmLT5laGRyKSwgc3opOwo+PiAtICAgIG1heHZhICs9IHN6OyAvKiBubyByb3VuZCB1 cCAqLwo+PiArI2RlZmluZSBTWU1UQUJfSU5ERVggICAgMQo+PiArI2RlZmluZSBTVFJUQUJfSU5E RVggICAgMgo+PiAgCj4+IC0gICAgZWxmX2hkcl9lbG0oZWxmLCBzeW1fZWhkciwgZV9waG9mZiwg MCk7Cj4+IC0gICAgZWxmX2hkcl9lbG0oZWxmLCBzeW1fZWhkciwgZV9zaG9mZiwgZWxmX3V2YWwo ZWxmLCBlbGYtPmVoZHIsIGVfZWhzaXplKSk7Cj4+IC0gICAgZWxmX2hkcl9lbG0oZWxmLCBzeW1f ZWhkciwgZV9waGVudHNpemUsIDApOwo+PiAtICAgIGVsZl9oZHJfZWxtKGVsZiwgc3ltX2VoZHIs IGVfcGhudW0sIDApOwo+PiArICAgIC8qIEFsbG93IGVsZl9tZW1jcHlfc2FmZSB0byB3cml0ZSB0 byBzeW1ib2xfaGVhZGVyLiAqLwo+PiArICAgIGVsZi0+Y2FsbGVyX3hkZXN0X2Jhc2UgPSAmaGVh ZGVyOwo+PiArICAgIGVsZi0+Y2FsbGVyX3hkZXN0X3NpemUgPSBzaXplb2YoaGVhZGVyKTsKPj4g IAo+PiAtICAgIC8qIENvcHkgRWxmIHNlY3Rpb24gaGVhZGVycy4gKi8KPj4gLSAgICBzaGRyID0g RUxGX01BS0VfSEFORExFKGVsZl9zaGRyLCBtYXh2YSk7Cj4+IC0gICAgc3ogPSBlbGZfc2hkcl9j b3VudChlbGYpICogZWxmX3V2YWwoZWxmLCBlbGYtPmVoZHIsIGVfc2hlbnRzaXplKTsKPj4gLSAg ICBlbGZfbWVtY3B5X3NhZmUoZWxmLCBFTEZfSEFORExFX1BUUlZBTChzaGRyKSwKPj4gLSAgICAg ICAgICAgICAgICAgICAgRUxGX0lNQUdFX0JBU0UoZWxmKSArIGVsZl91dmFsKGVsZiwgZWxmLT5l aGRyLCBlX3Nob2ZmKSwKPj4gLSAgICAgICAgICAgICAgICAgICAgc3opOwo+PiAtICAgIG1heHZh ID0gZWxmX3JvdW5kX3VwKGVsZiwgKHVuc2lnbmVkIGxvbmcpbWF4dmEgKyBzeik7Cj4+ICsgICAg LyoKPj4gKyAgICAgKiBDYWxjdWxhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZSB2YXJpb3VzIGVsZW1l bnRzIGluIEdVRVNUIE1FTU9SWSBTUEFDRS4KPj4gKyAgICAgKiBUaGlzIGFkZHJlc3NlcyBNVVNU IG9ubHkgYmUgdXNlZCB3aXRoIGVsZl9sb2FkX2ltYWdlLgo+PiArICAgICAqCj4+ICsgICAgICog TkI6IHN0cnRhYl9iYXNlIGNhbm5vdCBiZSBjYWxjdWxhdGVkIGF0IHRoaXMgcG9pbnQgYmVjYXVz ZSB3ZSBkb24ndAo+PiArICAgICAqIGtub3cgdGhlIHNpemUgb2YgdGhlIHN5bXRhYiB5ZXQsIGFu ZCB0aGUgc3RydGFiIHdpbGwgYmUgcGxhY2VkIGFmdGVyIGl0Lgo+PiArICAgICAqLwo+PiArICAg IGhlYWRlcl9iYXNlID0gZWxmX2dldF9wdHIoZWxmLCBlbGYtPmJzZF9zeW10YWJfcHN0YXJ0KTsK Pj4gKyAgICBlbGZfaGVhZGVyX2Jhc2UgPSBlbGZfZ2V0X3B0cihlbGYsIGVsZi0+YnNkX3N5bXRh Yl9wc3RhcnQpICsKPj4gKyAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodWludDMyX3QpOwo+ PiArICAgIHN5bXRhYl9iYXNlID0gZWxmX3JvdW5kX3VwKGVsZiwgaGVhZGVyX2Jhc2UgKyBzaXpl b2YoaGVhZGVyKSk7Cj4+ICsKPj4gKyAgICAvKiBGaWxsIHRoZSBFTEYgaGVhZGVyLCBjb3BpZWQg ZnJvbSB0aGUgb3JpZ2luYWwgRUxGIGhlYWRlci4gKi8KPj4gKyAgICBoZWFkZXJfaGFuZGxlID0g RUxGX01BS0VfSEFORExFKGVsZl9laGRyLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFTEZfUkVBTFBUUjJQVFJWQUwoJmhlYWRlci5lbGZfaGVhZGVyLmhlYWRlcikpOwo+PiAr ICAgIGVsZl9tZW1jcHlfc2FmZShlbGYsIEVMRl9IQU5ETEVfUFRSVkFMKGhlYWRlcl9oYW5kbGUp LAo+PiArICAgICAgICAgICAgICAgICAgICBFTEZfSEFORExFX1BUUlZBTChlbGYtPmVoZHIpLAo+ PiArICAgICAgICAgICAgICAgICAgICBlbGZfdXZhbChlbGYsIGVsZi0+ZWhkciwgZV9laHNpemUp KTsKPj4gKwo+PiArICAgIC8qIFNldCB0aGUgb2Zmc2V0IHRvIHRoZSBzaGRyIGFycmF5LiAqLwo+ PiArICAgIGVsZl9zdG9yZV9maWVsZF9iaXRuZXNzKGVsZiwgaGVhZGVyX2hhbmRsZSwgZV9zaG9m ZiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZih0eXBlb2YoaGVhZGVy LmVsZl9oZWFkZXIpLCBzZWN0aW9uKSk7Cj4+ICsKPj4gKyAgICAvKiBTZXQgdGhlIHJpZ2h0IG51 bWJlciBvZiBzZWN0aW9uIGhlYWRlcnMuICovCj4+ICsgICAgZWxmX3N0b3JlX2ZpZWxkX2JpdG5l c3MoZWxmLCBoZWFkZXJfaGFuZGxlLCBlX3NobnVtLCAzKTsKPj4gKwo+PiArICAgIC8qIENsZWFy IGEgY291cGxlIG9mIGZpZWxkcyB3ZSBkb24ndCB1c2UuICovCj4+ICsgICAgZWxmX3N0b3JlX2Zp ZWxkX2JpdG5lc3MoZWxmLCBoZWFkZXJfaGFuZGxlLCBlX3Bob2ZmLCAwKTsKPj4gKyAgICBlbGZf c3RvcmVfZmllbGRfYml0bmVzcyhlbGYsIGhlYWRlcl9oYW5kbGUsIGVfcGhlbnRzaXplLCAwKTsK Pj4gKyAgICBlbGZfc3RvcmVfZmllbGRfYml0bmVzcyhlbGYsIGhlYWRlcl9oYW5kbGUsIGVfcGhu dW0sIDApOwo+IAo+IFBlcmhhcHMgYmV0dGVyIGp1c3QgZ2l2ZSB0aGUgc3RydWN0dXJlIGFib3Zl IGFuIGluaXRpYWxpemVyPwoKTm90IHJlYWxseSwgdGhlIHByb2JsZW0gaXMgdGhhdCB3ZSBjb3B5 IHRoZSBvcmlnaW5hbCBoZWFkZXIgZnJvbSB0aGUgRUxGCmJpbmFyeSwgYW5kIHRoZW4gd2UgbWFu Z2xlIGl0LiBUaGlzIGlzIGp1c3QgYSBmaXh1cCB0byBtYWtlIGl0IGNsZWFyCnRoYXQgbm8gcHJv Z3JhbSBoZWFkZXJzIGFyZSBwcmVzZW50ICh3ZSBqdXN0IHVzZSBzZWN0aW9uIGhlYWRlcnMgaW4K b3JkZXIgdG8gZGVzY3JpYmUgdGhlIFNZTVRBQiBhbmQgU1RSVEFCIHBvc2l0aW9ucykuCgo+PiAr ICAgIC8qIFplcm8gdGhlIGR1bW15IHNlY3Rpb24uICovCj4gCj4gRHVtbXk/IEFuZCBhbnl3YXkg SSB0aGluayB5b3UgbWVhbiAic2VjdGlvbiBoZWFkZXIiIGhlcmUuCgpZZXMsIHRoZSByaWdodCBj b21tZW50IHdvdWxkIGJlOiB6ZXJvIHRoZSBkdW1teSBzZWN0aW9uIGhlYWRlci4KCj4gCj4+ICsg ICAgc2VjdGlvbl9oYW5kbGUgPSBFTEZfTUFLRV9IQU5ETEUoZWxmX3NoZHIsCj4+ICsgICAgICAg ICAgICAgICAgICAgICBFTEZfUkVBTFBUUjJQVFJWQUwoJmhlYWRlci5lbGZfaGVhZGVyLnNlY3Rp b25bU0hOX1VOREVGXSkpOwo+PiArICAgIHNoZHJfc2l6ZSA9IGVsZl91dmFsKGVsZiwgZWxmLT5l aGRyLCBlX3NoZW50c2l6ZSk7Cj4+ICsgICAgZWxmX21lbXNldF9zYWZlKGVsZiwgRUxGX0hBTkRM RV9QVFJWQUwoc2VjdGlvbl9oYW5kbGUpLCAwLCBzaGRyX3NpemUpOwo+PiAgCj4+ICsgICAgLyoK Pj4gKyAgICAgKiBGaW5kIHRoZSBhY3R1YWwgc3ltdGFiIGFuZCBzdHJ0YWIgaW4gdGhlIEVMRi4K Pj4gKyAgICAgKgo+PiArICAgICAqIFRoZSBzeW10YWIgc2VjdGlvbiBoZWFkZXIgaXMgZ29pbmcg dG8gcmVzaWRlIGluIHNlY3Rpb25bU1lNVEFCX0lOREVYXSwKPj4gKyAgICAgKiB3aGlsZSB0aGUg Y29ycmVzcG9uZGluZyBzdHJ0YWIgaXMgZ29pbmcgdG8gYmUgcGxhY2VkIGluCj4+ICsgICAgICog c2VjdGlvbltTVFJUQUJfSU5ERVhdLiBzaF9vZmZzZXQgaXMgbWFuZ2xlZCBzbyBpdCBwb2ludHMg dG8gdGhlIG9mZnNldAo+PiArICAgICAqIHdoZXJlIHRoZSBzZWN0aW9ucyBhcmUgYWN0dWFsbHkg bG9hZGVkIChyZWxhdGl2ZSB0byB0aGUgRUxGIGhlYWRlcgo+PiArICAgICAqIGxvY2F0aW9uKS4K Pj4gKyAgICAgKi8KPj4gKyAgICBzZWN0aW9uX2hhbmRsZSA9IEVMRl9NQUtFX0hBTkRMRShlbGZf c2hkciwKPj4gKyAgICAgICAgICAgICAgICBFTEZfUkVBTFBUUjJQVFJWQUwoJmhlYWRlci5lbGZf aGVhZGVyLnNlY3Rpb25bU1lNVEFCX0lOREVYXSkpOwo+PiAgICAgIGZvciAoIGkgPSAwOyBpIDwg ZWxmX3NoZHJfY291bnQoZWxmKTsgaSsrICkKPj4gICAgICB7Cj4+IC0gICAgICAgIGVsZl9wdHJ2 YWwgb2xkX3NoZHJfcDsKPj4gLSAgICAgICAgZWxmX3B0cnZhbCBuZXdfc2hkcl9wOwo+PiAgCj4+ IC0gICAgICAgIHR5cGUgPSBlbGZfdXZhbChlbGYsIHNoZHIsIHNoX3R5cGUpOwo+PiAtICAgICAg ICBpZiAoICh0eXBlID09IFNIVF9TVFJUQUIpIHx8ICh0eXBlID09IFNIVF9TWU1UQUIpICkKPj4g KyAgICAgICAgaW1hZ2VfaGFuZGxlID0gZWxmX3NoZHJfYnlfaW5kZXgoZWxmLCBpKTsKPj4gKyAg ICAgICAgaWYgKCBlbGZfdXZhbChlbGYsIGltYWdlX2hhbmRsZSwgc2hfdHlwZSkgIT0gU0hUX1NZ TVRBQiApCj4+ICsgICAgICAgICAgICBjb250aW51ZTsKPj4gKwo+PiArICAgICAgICBlbGZfbWVt Y3B5X3NhZmUoZWxmLCBFTEZfSEFORExFX1BUUlZBTChzZWN0aW9uX2hhbmRsZSksCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICBFTEZfSEFORExFX1BUUlZBTChpbWFnZV9oYW5kbGUpLAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgc2hkcl9zaXplKTsKPj4gKwo+PiArICAgICAgICBsaW5r ID0gZWxmX3V2YWwoZWxmLCBzZWN0aW9uX2hhbmRsZSwgc2hfbGluayk7Cj4+ICsgICAgICAgIGlm ICggbGluayA9PSBTSE5fVU5ERUYgKQo+PiAgICAgICAgICB7Cj4+IC0gICAgICAgICAgICAgZWxm X21zZyhlbGYsICIlczogc2hkciAlaSBhdCAweCUiRUxGX1BSUFRSVkFMIiAtPiAweCUiRUxGX1BS UFRSVkFMIlxuIiwgX19mdW5jX18sIGksCj4+IC0gICAgICAgICAgICAgICAgICAgICBlbGZfc2Vj dGlvbl9zdGFydChlbGYsIHNoZHIpLCBtYXh2YSk7Cj4+IC0gICAgICAgICAgICAgc3ogPSBlbGZf dXZhbChlbGYsIHNoZHIsIHNoX3NpemUpOwo+PiAtICAgICAgICAgICAgIGVsZl9tZW1jcHlfc2Fm ZShlbGYsIG1heHZhLCBlbGZfc2VjdGlvbl9zdGFydChlbGYsIHNoZHIpLCBzeik7Cj4+IC0gICAg ICAgICAgICAgLyogTWFuZ2xlZCB0byBiZSBiYXNlZCBvbiBFTEYgaGVhZGVyIGxvY2F0aW9uLiAq Lwo+PiAtICAgICAgICAgICAgIGVsZl9oZHJfZWxtKGVsZiwgc2hkciwgc2hfb2Zmc2V0LCBtYXh2 YSAtIHN5bXRhYl9hZGRyKTsKPj4gLSAgICAgICAgICAgICBtYXh2YSA9IGVsZl9yb3VuZF91cChl bGYsICh1bnNpZ25lZCBsb25nKW1heHZhICsgc3opOwo+PiArICAgICAgICAgICAgZWxmX21hcmtf YnJva2VuKGVsZiwgImJhZCBsaW5rIGluIHN5bXRhYiIpOwo+PiArICAgICAgICAgICAgYnJlYWs7 Cj4+ICAgICAgICAgIH0KPj4gLSAgICAgICAgb2xkX3NoZHJfcCA9IEVMRl9IQU5ETEVfUFRSVkFM KHNoZHIpOwo+PiAtICAgICAgICBuZXdfc2hkcl9wID0gb2xkX3NoZHJfcCArIGVsZl91dmFsKGVs ZiwgZWxmLT5laGRyLCBlX3NoZW50c2l6ZSk7Cj4+IC0gICAgICAgIGlmICggbmV3X3NoZHJfcCA8 PSBvbGRfc2hkcl9wICkgLyogd3JhcHBlZCBvciBzdHVjayAqLwo+PiArCj4+ICsgICAgICAgIC8q IExvYWQgc3ltdGFiIGludG8gZ3Vlc3QgbWVtb3J5LiAqLwo+PiArICAgICAgICBlbGZfbG9hZF9p bWFnZShlbGYsIHN5bXRhYl9iYXNlLCBlbGZfc2VjdGlvbl9zdGFydChlbGYsIHNlY3Rpb25faGFu ZGxlKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZWxmX3V2YWwoZWxmLCBzZWN0aW9uX2hh bmRsZSwgc2hfc2l6ZSksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGVsZl91dmFsKGVsZiwg c2VjdGlvbl9oYW5kbGUsIHNoX3NpemUpKTsKPj4gKyAgICAgICAgZWxmX3N0b3JlX2ZpZWxkX2Jp dG5lc3MoZWxmLCBzZWN0aW9uX2hhbmRsZSwgc2hfb2Zmc2V0LAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzeW10YWJfYmFzZSAtIGVsZl9oZWFkZXJfYmFzZSk7Cj4+ICsgICAg ICAgIGVsZl9zdG9yZV9maWVsZF9iaXRuZXNzKGVsZiwgc2VjdGlvbl9oYW5kbGUsIHNoX2xpbmss Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUlRBQl9JTkRFWCk7Cj4+ICsK Pj4gKyAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBndWVzdCBhZGRyZXNzIHdoZXJlIHN0cnRhYiBp cyBsb2FkZWQuICovCj4+ICsgICAgICAgIHN0cnRhYl9iYXNlID0gZWxmX3JvdW5kX3VwKGVsZiwg c3ltdGFiX2Jhc2UgKwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGZf dXZhbChlbGYsIHNlY3Rpb25faGFuZGxlLCBzaF9zaXplKSk7Cj4+ICsKPj4gKyAgICAgICAgLyog TG9hZCBzdHJ0YWIgc2VjdGlvbiBoZWFkZXIuICovCj4+ICsgICAgICAgIHNlY3Rpb25faGFuZGxl ID0gRUxGX01BS0VfSEFORExFKGVsZl9zaGRyLAo+PiArICAgICAgICAgICAgICAgIEVMRl9SRUFM UFRSMlBUUlZBTCgmaGVhZGVyLmVsZl9oZWFkZXIuc2VjdGlvbltTVFJUQUJfSU5ERVhdKSk7Cj4+ ICsgICAgICAgIGVsZl9tZW1jcHlfc2FmZShlbGYsIEVMRl9IQU5ETEVfUFRSVkFMKHNlY3Rpb25f aGFuZGxlKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEVMRl9IQU5ETEVfUFRSVkFMKGVs Zl9zaGRyX2J5X2luZGV4KGVsZiwgbGluaykpLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg c2hkcl9zaXplKTsKPj4gKwo+PiArICAgICAgICBpZiAoIGVsZl91dmFsKGVsZiwgc2VjdGlvbl9o YW5kbGUsIHNoX3R5cGUpICE9IFNIVF9TVFJUQUIgKQo+PiAgICAgICAgICB7Cj4+IC0gICAgICAg ICAgICBlbGZfbWFya19icm9rZW4oZWxmLCAiYmFkIHNlY3Rpb24gaGVhZGVyIGxlbmd0aCIpOwo+ PiArICAgICAgICAgICAgZWxmX21hcmtfYnJva2VuKGVsZiwgInN0cnRhYiBub3QgZm91bmQiKTsK Pj4gICAgICAgICAgICAgIGJyZWFrOwo+PiAgICAgICAgICB9Cj4+IC0gICAgICAgIGlmICggIWVs Zl9hY2Nlc3Nfb2soZWxmLCBuZXdfc2hkcl9wLCAxKSApIC8qIG91dHNpZGUgaW1hZ2UgKi8KPj4g LSAgICAgICAgICAgIGJyZWFrOwo+PiAtICAgICAgICBzaGRyID0gRUxGX01BS0VfSEFORExFKGVs Zl9zaGRyLCBuZXdfc2hkcl9wKTsKPj4gKwo+PiArICAgICAgICAvKiBMb2FkIHN0cnRhYiBpbnRv IGd1ZXN0IG1lbW9yeS4gKi8KPj4gKyAgICAgICAgZWxmX2xvYWRfaW1hZ2UoZWxmLCBzdHJ0YWJf YmFzZSwgZWxmX3NlY3Rpb25fc3RhcnQoZWxmLCBzZWN0aW9uX2hhbmRsZSksCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIGVsZl91dmFsKGVsZiwgc2VjdGlvbl9oYW5kbGUsIHNoX3NpemUpLAo+ PiArICAgICAgICAgICAgICAgICAgICAgICBlbGZfdXZhbChlbGYsIHNlY3Rpb25faGFuZGxlLCBz aF9zaXplKSk7Cj4+ICsgICAgICAgIGVsZl9zdG9yZV9maWVsZF9iaXRuZXNzKGVsZiwgc2VjdGlv bl9oYW5kbGUsIHNoX29mZnNldCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydGFiX2Jhc2UgLSBlbGZfaGVhZGVyX2Jhc2UpOwo+PiArCj4+ICsgICAgICAgIC8qIFN0b3Jl IHRoZSB3aG9sZSBzaXplIChpbmNsdWRpbmcgaGVhZGVycyBhbmQgbG9hZGVkIHNlY3Rpb25zKS4g Ki8KPj4gKyAgICAgICAgaGVhZGVyLnNpemUgPSBzdHJ0YWJfYmFzZSArIGVsZl91dmFsKGVsZiwg c2VjdGlvbl9oYW5kbGUsIHNoX3NpemUpIAo+PiAtCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ZWxmX2hlYWRlcl9iYXNlOwo+PiArICAgICAgICBicmVhazsKPj4gICAgICB9Cj4gCj4gU28geW91 J3JlIHByb3Blcmx5IGJyZWFraW5nIG91dCBvZiB0aGUgbG9vcCBoZXJlIC0gd2h5IGRvbid0IHlv dQo+IGFsc28gZG8gdGhpcyBpbiB0aGUgcGFyc2luZyBvbmU/CgpPaCwgbXkgYmFkLCB0aGlzIGlz IGEgYnVnIGluIHRoZSBwYXJzaW5nIGNvZGUsIHdpbGwgZml4IGl0LCB0aGFua3MuCkZXSVcsIGl0 IHdvcmtzIGJlY2F1c2UgcHJvcGVyIEVMRiBiaW5hcmllcyBvbmx5IGhhdmUgb25lIFNZTVRBQiwg YnV0IHdlCnNob3VsZG4ndCByZWx5IG9uIHRoaXMuCgpSb2dlci4KCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=