From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v9 15/27] xsplice, symbols: Implement fast symbol names -> virtual addresses lookup Date: Mon, 25 Apr 2016 11:35:02 -0400 Message-ID: <1461598514-5440-16-git-send-email-konrad.wilk@oracle.com> References: <1461598514-5440-1-git-send-email-konrad.wilk@oracle.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 1auiYR-00043h-Nw for xen-devel@lists.xenproject.org; Mon, 25 Apr 2016 15:36:07 +0000 In-Reply-To: <1461598514-5440-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Keir Fraser , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhlIGN1cnJlbnQgbWVjaGFuaXNtIGlzIGdlYXJlZCB0b3dhcmRzIGZhc3QgdmlydHVhbCBhZGRy ZXNzIC0+CnN5bWJvbCBuYW1lcyBsb29rdXAuIFRoaXMgaXMgZmluZSBmb3IgdGhlIG5vcm1hbCB1 c2UgY2FzZXMKKEJVR19PTiwgV0FSTl9PTiwgZXRjKSwgYnV0IGZvciB4U3BsaWNlIC0gd2hlcmUg d2UgbmVlZCB0byBmaW5kCmh5cGVydmlzb3Igc3ltYm9scyAtIGl0IGlzIHNsb3cuCgpUbyB1bmRl cnN0YW5kIHRoaXMgcGF0Y2gsIGEgZGVzY3JpcHRpb24gb2YgdGhlIGV4aXN0aW5nCm1ldGhvZCBp cyBleHBsYWluZWQgZmlyc3QuIEZvciBmb2xrcyBmYW1pbGFyIGdvIHRvICdORVcgQ09ERTonLgoK SE9XIElUIFdPUktTOgoKVGhlIHN5bWJvbCB0YWJsZSBsb29rdXAgbWVjaGFuaXNtIHVzZXMgYSBz aW1wbGUgZW5jb2RpbmcgbWVjaGFuaXNtCndoZXJlIGl0IGV4dHJhY3RzIHRoZSBjb21tb24gYXNj aWkgY2hhcmFjdGVycyB0aGF0IHRoZSBzeW1ib2wncyB1c2UuCgpUaGlzIHNhdmVzIHVzIHNwYWNl LiBUaGUgbG9va3VwIG1lY2hhbmlzbSBpcyBnZWFyZWQgdG93YXJkcyBsb29raW5nCnVwIHN5bWJv bHMgYmFzZWQgb24gYWRkcmVzcy4gV2UgaGF2ZSBvbmUgMC4uTiAod2hlcmUgTiBpcwp0aGUgbnVt YmVyIG9mIHN5bWJvbHMsIHNvIDY4NDkgZm9yIGV4YW1wbGUpIHRhYmxlOgoKc3ltYm9sc19hZGRy ZXNzZXNbMC4uTl0KCkFuZCBhbiAxLTEgKGluIGEgbG9vc2UgZmFzaGlvbikgb2YgdGhlIHN5bWJv bHMgKGVuY29kZWQpIGluIGEKc3ltYm9sc19uYW1lcyBzdHJlYW0gb2Ygc2l6ZSBOLgoKVGhlIE4g aXMgdmFyaWFibGUgKGxhdGVyIG9uIHRoYXQgYmVsb3cpCgpUaGUgc3ltYm9sc19uYW1lcyBhcmUg c29ydGVkIGJhc2VkIG9uIHN5bWJvbHNfYWRkcmVzc2VzLCB3aGljaAptZWFucyB0aGF0IHRoZSBk ZWNvZGVkIGVudHJpZXMgaW5zaWRlIHN5bWJvbHNfbmFtZXMgYXJlIG5vdCBpbgphc2NlbmRpbmcg b3IgZGVzY2VuZGluZyBvcmRlci4KClRoZXJlIGlzIGFsc28gdGhlIGVuY29kaW5nIG1lY2hhbmlz bSAtIHRoZSB0YWJsZSBvZiAyNTUgZW50cmllcwpjYWxsZWQgc3ltYm9sc190b2tlbl9pbmRleFtd LiBBbmQgdGhlIHN5bWJvbHNfdG9rZW5fdGFibGUgd2hpY2gKaXMgYW4gc3RyZWFtIG9mIEFTQ0lJ WiBjaGFyYWN0ZXJzLCBzdWNoIGFzIChpdCByZWFsbHkKaXMgbm90IGEgdGFibGUgYXMgdGhlIHZh bHVlcyBhcmUgdmFyaWFibGUpOgoKQDAgICAuYXNjaXogICJjcmVkaXQiCkA2ICAgLmFzY2l6ICAi bWFzayIKLi4KQDMwMCAuYXNjaXogICJTIgoKQW5kIHRoZSBzeW1ib2xzX3Rva2VuX2luZGV4OgpA MCAgICAgICAgLnNob3J0ICAwCkAxICAgICAgICAuc2hvcnQgIDcKQDIgICAgICAgIC5zaG9ydCAg MTIKQDQgICAgICAgIC5zaG9ydCAgMTYKLi4uCkA4NCAgICAgICAgIC5zaG9ydCAgMzAwCgpUaGUg cmVsYXRpb25zaGlwIGJldHdlZW4gdGhlbSBpcyB0aGF0IHRoZSBzeW1ib2xzX3Rva2VuX2luZGV4 CmdpdmVzIHVzIHRoZSBvZmZzZXQgdG8gc3ltYm9sc190b2tlbl90YWJsZS4KClRoZSBzeW1ib2xf bmFtZXNbXSBhcnJheSBpcyBhIHN0cmVhbSBvZiBlbmNvZGVkIHZhbHVlcy4gRWFjaCB2YWx1ZQpm b2xsb3dzIHRoZSBzYW1lIHBhdHRlcm4gLSA8bGVuPiBmb2xsb3dlZCBieSA8ZW5jb2RpbmcgdmFs dWVzPi4KQW5kIHRoZSBhbm90aGVyIDxsZW4+IGZvbGxvd2VkIGJ5IDxlbmNvZGluZyB2YWx1ZXM+ LgoKSGVuY2UgdG8gZmluZCB0aGUgcmlnaHQgb25lIHlvdSBuZWVkIHRvIHJlYWQgPGxlbj4sIGFk ZCA8bGVuPgoodG8gc2tpcCBvdmVyKSwgcmVhZCA8bGVuPiwgYWRkIDxsZW4+LCBhbmQgc28gb24g dW50aWwgb25lCmZpbmRzIHRoZSByaWdodCB0dXBsZSBvZmZzZXQuCgpUaGUgPGVuY29kaW5nIHZh bHVlcz4gYXJlIHRoZSBpbmRpY2llcyBpbnRvIHRoZSBzeW1ib2xzX3Rva2VuX2luZGV4LgoKTWVh bmluZyBpZiB5b3UgaGF2ZToKICAweDA0LCAweDU0LCAweGRhLCAweGUyLCAweDc0CiAgWzQsIDg0 LCAyMTgsIDIyNiwgMTE2IGluIGh1bWFuIG51bWJlcmluZ10KClRoZSAweDA0IHRlbGxzIHVzIHRo YXQgdGhlIHN5bWJvbCBpcyBmb3VyIGJ5dGVzIHBhc3QgdGhpcyBvbmUgKHNvIG5leHQKc3ltYm9s IG9mZnNldCBzdGFydHMgYXQgNSkuIElmIHdlIGxvb2t1cCBzeW1ib2xzX3Rva2VuX2luZGV4Wzg0 XSB3ZSBnZXQgMzAwLgpzeW1ib2xzX3Rva2VuWzMwMF0gZ2V0cyB1cyB0aGUgIlMiLiBBbmQgc28g b24sIHRoZSBzdHJpbmcgZXZlbnR1YWxseQplbmQgdXAgYmVpbmcgZGVjb2RlIHRvIGJlICdTX3N0 ZXh0Jy4gVGhlIGZpcnN0IGNoYXJhY3RlciBpcyB0aGUgdHlwZSwKdGhlbiBvcHRpb25hbGx5IGZv bGx3ZWQgYnkgdGhlIGZpbGVuYW1lIChhbmQgIyByaWdodCBhZnRlciBmaWxlbmFtZSkKYW5kIHRo ZW4gbGFzdGx5IHRoZSBzeW1ib2wsIHN1Y2ggYXM6Cgp0dnBtdV9pbnRlbC5jI2NvcmUyX3ZwbXVf ZG9faW50ZXJydXB0CgpLZWVwIGluIG1pbmQgdGhhdCB0aGVyZSBhcmUgdHdvIGZpeGVkIHNpemVk IHRhYmxlczoKc3ltYm9sc19hZGRyZXNzZXNbMC4uc3ltYm9sc19udW1fc3ltc10sIGFuZApzeW1i b2xzX21hcmtlcnNbMC4uc3ltYm9sc19udW1fc3ltcy8yNTVdLgoKVGhlIHN5bWJvbHNfbWFya2Vy cyBpcyB1c2VkIHRvIHNwZWVkIHNlYXJjaGluZyBmb3IgdGhlIHJpZ2h0IGFkZHJlc3MuCkl0IGdp dmVzIHVzIHRoZSBvZmZzZXRzIHdpdGhpbiBzeW1ib2xfbmFtZXMgdGhhdCBzdGFydCBhdCB0aGUg PGxlbj48ZW5jb2RlZCB2YWx1ZT4uCgpUaGUgd2F5IHRvIGZpbmQgYSBzeW1ib2wgYmFzZWQgb24g dGhlIGFkZHJlc3MgaXM6CjEpIEZpZ3VyZSBvdXQgdGhlICd0dXBsZSBvZmZzZXQnIGZyb20gc3lt Ym9sc19hZGRyZXNzWzAuLnN5bWJvbHNfbnVtX3N5bXNdLgogICBUaGlzIHRhYmxlIGlzIHNvcnRl ZCBieSB2aXJ0dWFsIGFkZHJlc3NlcyBzbyBmaW5kaW5nIHRoZSB2YWx1ZSBpcyBzaW1wbGUuCjIp IEdldCBzdGFydGluZyBvZmZzZXQgb2Ygc3ltYm9sX25hbWVzIGJ5IHJldHJpZXZpbmcgdmFsdWUg b2YKICAgc3ltYm9sX21hcmtlcnNbJ3R1cGxlIG9mZnNldCcgLyAyNTVdLgozKS4gSXRlcmF0ZSB1 cCB0byAndHVwbGVfb2Zmc2V0ICYgMjU1JyBpbiBzeW1ib2xzX21hcmtlcnMgc3RyZWFtIHN0YXJ0 aW5nCiAgIGF0ICdvZmZzZXQnLgo0KS4gRGVjb2RlIHRoZSA8bGVuPjxlbmNvZGVkIHZhbHVlPgoK VGhpcyBob3dldmVyIGRvZXMgbm90IHdvcmsgdmVyeSB3ZWxsIGlmIHdlIHdhbnQgdG8gc2VhcmNo IHRoZSBvdGhlcgp3YXkgLSB3ZSBoYXZlIHRoZSBzeW1ib2wgbmFtZSBhbmQgd2FudCB0byBmaW5k IHRoZSBhZGRyZXNzLgoKTkVXIENPREU6CgpUbyBtYWtlIHRoYXQgd29yayB3ZSBhZGQgb25lIGZp eGVkIHNpemUgdGFibGUgY2FsbGVkIHN5bWJvbHNfc29ydGVkX29mZnNldHMgd2hpY2gKaGFzIHR3 byBlbGVtZW50czogb2Zmc2V0IGluIHN5bWJvbCBzdHJlYW0sIG9mZnNldCBpbiB0aGUgc3ltYm9s LWFkZHJlc3MuCgpUaGlzIHdob2xlIGFycmF5IGlzIHNvcnRlZCBvbiB0aGUgb3JpZ2luYWwgc3lt Ym9sIG5hbWUgZHVyaW5nIGJ1aWxkLXRpbWUKKGluIGNhc2Ugb2YgY29sbGlzaW9uIHdlIGFsc28g dGFrZSBpbnRvIGFjY291bnQgdGhlIHR5cGUpLgoKVGhlIHZhbHVlcyBhcmUgZm9yIGV4YW1wbGU6 CgpzeW1ib2xzX3NvcnRlZF9vZmZzZXRzOgogICAgLmxvbmcgODMzNjMsIDYzMDIgIyBbLmJzcywg bGVuPTVdCiAgICAubG9uZyA4MDQ1OSwgNjA4NCAjIFsuZGF0YSwgbGVuPTVdCi4uCltUaGUgIyBh ZGRlZCBmb3IgY2xhcml0eV0KCldoaWNoIG1ha2VzIGl0IGluY3JlZGlibHkgZWFzeSB0byBnZXQg aW4gdGhlIHN5bWJvbHNfbmFtZXMgYW5kIGFsc28Kc3ltYm9sc19hZGRyZXNzZXMgKG9yIHN5bWJv bHNfb2Zmc2V0cykKClNlYXJjaGluZyBmb3Igc3ltYm9scyBpcyBzaW1wbGlmaWVkIGFzIHdlIGNh biBkbyBhIGJpbmFyeSBzZWFyY2gKb24gc3ltYm9sc19zb3J0ZWRfb2Zmc2V0cy4gU2luY2UgdGhl IHN5bWJvbHMgYXJlIHNvcnRlZCBpdCB0YWtlcyBvbgphdmVyYWdlIDEzIGNhbGxzIHRvIHN5bWJv bHNfZXhwYW5kX3N5bWJvbC4KClNpZ25lZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8 a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KLS0tCkNDOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3Jn PgpDQzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDQzogQW5kcmV3IENvb3BlciA8 YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCnY4OiBOZXcKIC0gUmVtb3ZlIHRoZSBkZWJ1ZyBj b2RlCiAtIFJldHVybiB0aGUgJ21pZCcgaW5kZXggaW4gc3ltYm9sX2FkZHJlc3Nlcywgbm90IHRo ZSAnbG93Jy4Kdjk6CiAtIE1ha2UgaXQgcmV0dXJuIHZvaWQqCiAtIERpdGNoIHRoZSBvbGQgaW1w bGVtZW50YXRpb24uIFVzZSBhIHNpbmdsZSBmaXhlZC1zaXplIGFycmF5CiAgIHdpdGggdHdvIHVp bnQzMl90IHZhbHVlcyAtIG9mZnNldCBpbiBzdHJlYW0gYW5kIG9mZnNldCBpbiBhZGRyZXNzLgog LSBDaGFuZ2UgcHJpbnRmIGluIHN5bWJvbHMuYyB0byAldS4gQ2hhbmdlIHBhcmFtZXRlciB0byAt LXNvcnQtYnktbmFtZS4KIC0gU3F1YXNoIHRoZSB0d28gc2VwZXJhdGUgaW1wbGVtZW50YXRpb24g b2Ygc3ltYm9sc19sb29rdXBfYnlfbmFtZQogICBpbiBvbmUgZnVuY3Rpb24gdXNpbmcgI2lmZGVm cy4KIC0gRml4IGNvbW1lbnQgYW5kIHNpbXBsaWZ5IGNvbXBhcmVfbmFtZV9vcmlnIGNvZGUuCi0t LQogeGVuL2FyY2gveDg2L01ha2VmaWxlICAgICAgfCAgMyArKysKIHhlbi9jb21tb24vS2NvbmZp ZyAgICAgICAgIHwgMTIgKysrKysrKysrKysKIHhlbi9jb21tb24vc3ltYm9scy1kdW1teS5jIHwg IDUgKysrKysKIHhlbi9jb21tb24vc3ltYm9scy5jICAgICAgIHwgMjggKysrKysrKysrKysrKysr KysrKysrKysrKysKIHhlbi9pbmNsdWRlL3hlbi9zeW1ib2xzLmggIHwgIDggKysrKysrKysKIHhl bi90b29scy9zeW1ib2xzLmMgICAgICAgIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLQogNiBmaWxlcyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvTWFrZWZpbGUgYi94ZW4v YXJjaC94ODYvTWFrZWZpbGUKaW5kZXggZmRmNDIwMi4uOTAwZmE1OSAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQpAQCAtNzQsNiAr NzQsOSBAQCBlZmkteSA6PSAkKHNoZWxsIGlmIFsgISAtciAkKEJBU0VESVIpL2luY2x1ZGUveGVu L2NvbXBpbGUuaCAtbyBcCiAKIGlmZGVmIENPTkZJR19YU1BMSUNFCiBhbGxfc3ltYm9scyA9IC0t YWxsLXN5bWJvbHMKK2lmZGVmIENPTkZJR19GQVNUX1NZTUJPTF9MT09LVVAKK2FsbF9zeW1ib2xz ID0gLS1hbGwtc3ltYm9scyAtLXNvcnQtYnktbmFtZQorZW5kaWYKIGVsc2UKIGFsbF9zeW1ib2xz ID0KIGVuZGlmCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL0tjb25maWcgYi94ZW4vY29tbW9uL0tj b25maWcKaW5kZXggNjkyZWY1MS4uZTRmODZjMiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9LY29u ZmlnCisrKyBiL3hlbi9jb21tb24vS2NvbmZpZwpAQCAtMjAwLDQgKzIwMCwxNiBAQCBjb25maWcg WFNQTElDRQogCiAJICBJZiB1bnN1cmUsIHNheSBZLgogCitjb25maWcgRkFTVF9TWU1CT0xfTE9P S1VQCisJYm9vbCAiRmFzdCBzeW1ib2wgbG9va3VwIChiaWdnZXIgYmluYXJ5KSIKKwlkZWZhdWx0 IHkKKwlkZXBlbmRzIG9uIFhTUExJQ0UKKwktLS1oZWxwLS0tCisJICBXaGVuIHNlYXJjaGluZyBm b3Igc3ltYm9sIGFkZHJlc3NlcyB3ZSBjYW4gdXNlIHRoZSBidWlsdC1pbiBzeXN0ZW0KKwkgIHRo YXQgaXMgb3B0aW1pemVkIGZvciBzZWFyY2hpbmcgc3ltYm9scyB1c2luZyBhZGRyZXNzZXMgYXMg dGhlIGtleS4KKwkgIEhvd2V2ZXIgdXNpbmcgaXQgZm9yIHRoZSBpbnZlcnNlIChmaW5kIGFkZHJl c3MgdXNpbmcgdGhlIHN5bWJvbCBuYW1lKQorCSAgaXQgaXMgc2xvdy4gVGhpcyBleHRyYSBkYXRh IGFuZCBjb2RlICh+NTVrQikgc3BlZWRzIHVwIHRoZSBzZWFyY2guCisJICBUaGUgb25seSB1c2Vy IG9mIHRoaXMgaXMgeFNwbGljZS4KKworCSAgSWYgdW5zdXJlLCBzYXkgWS4KIGVuZG1lbnUKZGlm ZiAtLWdpdCBhL3hlbi9jb21tb24vc3ltYm9scy1kdW1teS5jIGIveGVuL2NvbW1vbi9zeW1ib2xz LWR1bW15LmMKaW5kZXggNTA5MGMzYi4uMDQ0ZGZkMyAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9z eW1ib2xzLWR1bW15LmMKKysrIGIveGVuL2NvbW1vbi9zeW1ib2xzLWR1bW15LmMKQEAgLTUsNiAr NSw3IEBACiAKICNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CiAjaW5jbHVkZSA8eGVuL3R5cGVzLmg+ CisjaW5jbHVkZSA8eGVuL3N5bWJvbHMuaD4KIAogI2lmZGVmIFNZTUJPTFNfT1JJR0lOCiBjb25z dCB1bnNpZ25lZCBpbnQgc3ltYm9sc19vZmZzZXRzWzFdOwpAQCAtMTQsNiArMTUsMTAgQEAgY29u c3QgdW5zaWduZWQgbG9uZyBzeW1ib2xzX2FkZHJlc3Nlc1sxXTsKIGNvbnN0IHVuc2lnbmVkIGlu dCBzeW1ib2xzX251bV9zeW1zOwogY29uc3QgdTggc3ltYm9sc19uYW1lc1sxXTsKIAorI2lmZGVm IENPTkZJR19GQVNUX1NZTUJPTF9MT09LVVAKK2NvbnN0IHN0cnVjdCBzeW1ib2xfb2Zmc2V0IHN5 bWJvbHNfc29ydGVkX29mZnNldHNbMV07CisjZW5kaWYKKwogY29uc3QgdTggc3ltYm9sc190b2tl bl90YWJsZVsxXTsKIGNvbnN0IHUxNiBzeW1ib2xzX3Rva2VuX2luZGV4WzFdOwogCmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL3N5bWJvbHMuYyBiL3hlbi9jb21tb24vc3ltYm9scy5jCmluZGV4IDhi NGQwZmQuLmM2OTMxZTkgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc3ltYm9scy5jCisrKyBiL3hl bi9jb21tb24vc3ltYm9scy5jCkBAIC0zMSw2ICszMSw4IEBAIGV4dGVybiBjb25zdCB1bnNpZ25l ZCBsb25nIHN5bWJvbHNfYWRkcmVzc2VzW107CiBleHRlcm4gY29uc3QgdW5zaWduZWQgaW50IHN5 bWJvbHNfbnVtX3N5bXM7CiBleHRlcm4gY29uc3QgdTggc3ltYm9sc19uYW1lc1tdOwogCitleHRl cm4gY29uc3Qgc3RydWN0IHN5bWJvbF9vZmZzZXQgc3ltYm9sc19zb3J0ZWRfb2Zmc2V0c1tdOwor CiBleHRlcm4gY29uc3QgdTggc3ltYm9sc190b2tlbl90YWJsZVtdOwogZXh0ZXJuIGNvbnN0IHUx NiBzeW1ib2xzX3Rva2VuX2luZGV4W107CiAKQEAgLTIxMSwxNCArMjEzLDM5IEBAIGludCB4ZW5z eW1zX3JlYWQodWludDMyX3QgKnN5bW51bSwgY2hhciAqdHlwZSwKIHZvaWQgKnN5bWJvbHNfbG9v a3VwX2J5X25hbWUoY29uc3QgY2hhciAqc3ltbmFtZSkKIHsKICAgICBjaGFyIG5hbWVbS1NZTV9O QU1FX0xFTiArIDFdOworI2lmZGVmIENPTkZJR19GQVNUX1NZTUJPTF9MT09LVVAKKyAgICB1bnNp Z25lZCBsb25nIGxvdywgaGlnaDsKKyNlbHNlCiAgICAgdWludDMyX3Qgc3ltbnVtID0gMDsKICAg ICBjaGFyIHR5cGU7CiAgICAgdW5zaWduZWQgbG9uZyBhZGRyOwogICAgIGludCByYzsKKyNlbmRp ZgogCiAgICAgaWYgKCAqc3ltbmFtZSA9PSAnXDAnICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAK KyNpZmRlZiBDT05GSUdfRkFTVF9TWU1CT0xfTE9PS1VQCisgICAgbG93ID0gMDsKKyAgICBoaWdo ID0gc3ltYm9sc19udW1fc3ltczsKKyAgICB3aGlsZSAoIGxvdyA8IGhpZ2ggKQorICAgIHsKKyAg ICAgICAgdW5zaWduZWQgbG9uZyBtaWQgPSBsb3cgKyAoKGhpZ2ggLSBsb3cpIC8gMik7CisgICAg ICAgIGNvbnN0IHN0cnVjdCBzeW1ib2xfb2Zmc2V0ICpzOworICAgICAgICBpbnQgcmM7CisKKyAg ICAgICAgcyA9ICZzeW1ib2xzX3NvcnRlZF9vZmZzZXRzW21pZF07CisgICAgICAgICh2b2lkKXN5 bWJvbHNfZXhwYW5kX3N5bWJvbChzLT5zdHJlYW0sIG5hbWUpOworICAgICAgICAvKiBGb3JtYXQg aXM6IFtmaWxlbmFtZV0jPHN5bWJvbD4uIHN5bWJvbHNfZXhwYW5kX3N5bWJvbCBlYXRzIHR5cGUu Ki8KKyAgICAgICAgcmMgPSBzdHJjbXAoc3ltbmFtZSwgbmFtZSk7CisgICAgICAgIGlmICggcmMg PCAwICkKKyAgICAgICAgICAgIGhpZ2ggPSBtaWQ7CisgICAgICAgIGVsc2UgaWYgKCByYyA+IDAg KQorICAgICAgICAgICAgbG93ID0gbWlkICsgMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg cmV0dXJuICh2b2lkICopc3ltYm9sc19hZGRyZXNzKHMtPmFkZHIpOworICAgIH0KKyNlbHNlCiAg ICAgZG8gewogICAgICAgICByYyA9IHhlbnN5bXNfcmVhZCgmc3ltbnVtLCAmdHlwZSwgJmFkZHIs IG5hbWUpOwogICAgICAgICBpZiAoIHJjICkKQEAgLTIyOSw2ICsyNTYsNyBAQCB2b2lkICpzeW1i b2xzX2xvb2t1cF9ieV9uYW1lKGNvbnN0IGNoYXIgKnN5bW5hbWUpCiAKICAgICB9IHdoaWxlICgg bmFtZVswXSAhPSAnXDAnICk7CiAKKyNlbmRpZgogICAgIHJldHVybiBOVUxMOwogfQogCmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5oIGIveGVuL2luY2x1ZGUveGVuL3N5bWJv bHMuaAppbmRleCAyMTIyYTVkLi4wZjU4NzZhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4v c3ltYm9scy5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9zeW1ib2xzLmgKQEAgLTI1LDQgKzI1LDEy IEBAIGludCB4ZW5zeW1zX3JlYWQodWludDMyX3QgKnN5bW51bSwgY2hhciAqdHlwZSwKIAogdm9p ZCAqc3ltYm9sc19sb29rdXBfYnlfbmFtZShjb25zdCBjaGFyICpzeW1uYW1lKTsKIAorLyoKKyAq IEEgc29ydGVkIChieSBzeW1ib2xzKSBsb29rdXAgdGFibGUgdGFibGUgdG8gc3ltYm9sc19uYW1l cyAoc3RyZWFtKQorICogYW5kIHN5bWJvbHNfYWRkcmVzcyAob3Igb2Zmc2V0KS4KKyAqLworc3Ry dWN0IHN5bWJvbF9vZmZzZXQgeworICAgIHVpbnQzMl90IHN0cmVhbTsgLyogLi4gaW4gdGhlIGNv bXByZXNzZWQgc3RyZWFtLiovCisgICAgdWludDMyX3QgYWRkcjsgICAvKiAuLiBhbmQgaW4gdGhl IGZpeGVkIHNpemUgYWRkcmVzcyBhcnJheS4gKi8KK307CiAjZW5kaWYgLypfWEVOX1NZTUJPTFNf SCovCmRpZmYgLS1naXQgYS94ZW4vdG9vbHMvc3ltYm9scy5jIGIveGVuL3Rvb2xzL3N5bWJvbHMu YwppbmRleCAxOTZkYjc0Li45NDFmYmU3IDEwMDY0NAotLS0gYS94ZW4vdG9vbHMvc3ltYm9scy5j CisrKyBiL3hlbi90b29scy9zeW1ib2xzLmMKQEAgLTQwLDYgKzQwLDEwIEBAIHN0cnVjdCBzeW1f ZW50cnkgewogCXVuc2lnbmVkIGxvbmcgbG9uZyBhZGRyOwogCXVuc2lnbmVkIGludCBsZW47CiAJ dW5zaWduZWQgY2hhciAqc3ltOworCWNoYXIgKm9yaWdfc3ltYm9sOworCXVuc2lnbmVkIGludCBh ZGRyX2lkeDsKKwl1bnNpZ25lZCBpbnQgc3RyZWFtX29mZnNldDsKKwl1bnNpZ25lZCBjaGFyIHR5 cGU7CiB9OwogI2RlZmluZSBTWU1CT0xfTkFNRShzKSAoKGNoYXIgKikocyktPnN5bSArIDEpCiAK QEAgLTQ3LDggKzUxLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2VudHJ5ICp0YWJsZTsKIHN0YXRp YyB1bnNpZ25lZCBpbnQgdGFibGVfc2l6ZSwgdGFibGVfY250Owogc3RhdGljIHVuc2lnbmVkIGxv bmcgbG9uZyBfc3RleHQsIF9ldGV4dCwgX3Npbml0dGV4dCwgX2Vpbml0dGV4dCwgX3NleHRyYXRl eHQsIF9lZXh0cmF0ZXh0Owogc3RhdGljIGludCBhbGxfc3ltYm9scyA9IDA7CitzdGF0aWMgaW50 IHNvcnRfYnlfbmFtZSA9IDA7CiBzdGF0aWMgY2hhciBzeW1ib2xfcHJlZml4X2NoYXIgPSAnXDAn Owogc3RhdGljIGVudW0geyBmbXRfYnNkLCBmbXRfc3lzdiB9IGlucHV0X2Zvcm1hdDsKK3N0YXRp YyBpbnQgY29tcGFyZV9uYW1lKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMik7CiAKIGlu dCB0b2tlbl9wcm9maXRbMHgxMDAwMF07CiAKQEAgLTE3NSw4ICsxODEsMTEgQEAgc3RhdGljIGlu dCByZWFkX3N5bWJvbChGSUxFICppbiwgc3RydWN0IHN5bV9lbnRyeSAqcykKIAkJKnN5bSsrID0g JyMnOwogCX0KIAlzdHJjcHkoc3ltLCBzdHIpOworCWlmIChzb3J0X2J5X25hbWUpIHsKKwkJcy0+ b3JpZ19zeW1ib2wgPSBzdHJkdXAoU1lNQk9MX05BTUUocykpOworCQlzLT50eXBlID0gc3R5cGU7 IC8qIEFzIHMtPnN5bVswXSBlbmRzIG1hbmdsZWQuICovCisJfQogCXMtPnN5bVswXSA9IHN0eXBl OwotCiAJcmMgPSAwOwogCiAgc2tpcF90YWlsOgpAQCAtMjc2LDYgKzI4NSwyMSBAQCBzdGF0aWMg aW50IGV4cGFuZF9zeW1ib2wodW5zaWduZWQgY2hhciAqZGF0YSwgaW50IGxlbiwgY2hhciAqcmVz dWx0KQogCXJldHVybiB0b3RhbDsKIH0KIAorLyogU29ydCBieSBvcmlnaW5hbCAobm9uIG1hbmds ZWQpIHN5bWJvbCBuYW1lLCB0aGVuIHR5cGUuICovCitzdGF0aWMgaW50IGNvbXBhcmVfbmFtZV9v cmlnKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikKK3sKKwljb25zdCBzdHJ1Y3Qgc3lt X2VudHJ5ICpzeW0xID0gcDE7CisJY29uc3Qgc3RydWN0IHN5bV9lbnRyeSAqc3ltMiA9IHAyOwor CWludCByYzsKKworCXJjID0gc3RyY21wKHN5bTEtPm9yaWdfc3ltYm9sLCBzeW0yLT5vcmlnX3N5 bWJvbCk7CisKKwlpZiAoIXJjKQorCQlyYyA9IHN5bTEtPnR5cGUgLSBzeW0yLT50eXBlOworCisJ cmV0dXJuIHJjOworfQorCiBzdGF0aWMgdm9pZCB3cml0ZV9zcmModm9pZCkKIHsKIAl1bnNpZ25l ZCBpbnQgaSwgaywgb2ZmOwpAQCAtMzI1LDYgKzM0OSw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlX3Ny Yyh2b2lkKQogCQkJcHJpbnRmKCIsIDB4JTAyeCIsIHRhYmxlW2ldLnN5bVtrXSk7CiAJCXByaW50 ZigiXG4iKTsKIAorCQl0YWJsZVtpXS5zdHJlYW1fb2Zmc2V0ID0gb2ZmOwogCQlvZmYgKz0gdGFi bGVbaV0ubGVuICsgMTsKIAl9CiAJcHJpbnRmKCJcbiIpOwpAQCAtMzM0LDcgKzM1OSw2IEBAIHN0 YXRpYyB2b2lkIHdyaXRlX3NyYyh2b2lkKQogCQlwcmludGYoIlx0LmxvbmdcdCVkXG4iLCBtYXJr ZXJzW2ldKTsKIAlwcmludGYoIlxuIik7CiAKLQlmcmVlKG1hcmtlcnMpOwogCiAJb3V0cHV0X2xh YmVsKCJzeW1ib2xzX3Rva2VuX3RhYmxlIik7CiAJb2ZmID0gMDsKQEAgLTM1MCw2ICszNzQsMjUg QEAgc3RhdGljIHZvaWQgd3JpdGVfc3JjKHZvaWQpCiAJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsr KQogCQlwcmludGYoIlx0LnNob3J0XHQlZFxuIiwgYmVzdF9pZHhbaV0pOwogCXByaW50ZigiXG4i KTsKKworCWlmICghc29ydF9ieV9uYW1lKSB7CisJCWZyZWUobWFya2Vycyk7CisJCXJldHVybjsK Kwl9CisKKwkvKiBTb3J0ZWQgYnkgb3JpZ2luYWwgc3ltYm9sIG5hbWVzIGFuZCB0eXBlLiAqLwor CXFzb3J0KHRhYmxlLCB0YWJsZV9jbnQsIHNpemVvZigqdGFibGUpLCBjb21wYXJlX25hbWVfb3Jp Zyk7CisKKwlvdXRwdXRfbGFiZWwoInN5bWJvbHNfc29ydGVkX29mZnNldHMiKTsKKwkvKiBBIGZp eGVkIHNpemVkIGFycmF5IHdpdGggdHdvIGVudHJpZXM6IG9mZnNldCBpbiB0aGUKKwkgKiBjb21w cmVzc2VkIHN0cmVhbSAoZm9yIHN5bWJvbCBuYW1lKSwgYW5kIG9mZnNldCBpbgorCSAqIHN5bWJv bHNfYWRkcmVzc2VzIChvciBzeW1ib2xzX29mZnNldCkuICovCisJZm9yIChpID0gMDsgaSA8IHRh YmxlX2NudDsgaSsrKSB7CisJCXByaW50ZigiXHQubG9uZyAldSwgJXVcbiIsIHRhYmxlW2ldLnN0 cmVhbV9vZmZzZXQsIHRhYmxlW2ldLmFkZHJfaWR4KTsKKwl9CisJcHJpbnRmKCJcbiIpOworCisJ ZnJlZShtYXJrZXJzKTsKIH0KIAogCkBAIC00MTAsNiArNDUzLDcgQEAgc3RhdGljIHZvaWQgY29t cHJlc3Nfc3ltYm9scyh1bnNpZ25lZCBjaGFyICpzdHIsIGludCBpZHgpCiAJCWxlbiA9IHRhYmxl W2ldLmxlbjsKIAkJcDEgPSB0YWJsZVtpXS5zeW07CiAKKwkJdGFibGVbaV0uYWRkcl9pZHggPSBp OwogCQkvKiBmaW5kIHRoZSB0b2tlbiBvbiB0aGUgc3ltYm9sICovCiAJCXAyID0gbWVtbWVtX3B2 dChwMSwgbGVuLCBzdHIsIDIpOwogCQlpZiAoIXAyKSBjb250aW51ZTsKQEAgLTU2MSw2ICs2MDUs OCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJaW5wdXRfZm9ybWF0ID0g Zm10X3N5c3Y7CiAJCQllbHNlIGlmIChzdHJjbXAoYXJndltpXSwgIi0tc29ydCIpID09IDApCiAJ CQkJdW5zb3J0ZWQgPSB0cnVlOworCQkJZWxzZSBpZiAoc3RyY21wKGFyZ3ZbaV0sICItLXNvcnQt YnktbmFtZSIpID09IDApCisJCQkJc29ydF9ieV9uYW1lID0gMTsKIAkJCWVsc2UgaWYgKHN0cmNt cChhcmd2W2ldLCAiLS13YXJuLWR1cCIpID09IDApCiAJCQkJd2Fybl9kdXAgPSB0cnVlOwogCQkJ ZWxzZQotLSAKMi41LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=