From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v10 12/24] xsplice, symbols: Implement fast symbol names -> virtual addresses lookup Date: Wed, 27 Apr 2016 15:27:09 -0400 Message-ID: <1461785241-4481-13-git-send-email-konrad.wilk@oracle.com> References: <1461785241-4481-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avVDQ-0007xO-ME for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 19:33:40 +0000 In-Reply-To: <1461785241-4481-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 a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGlj aEBzdXNlLmNvbT4KCi0tLQpDQzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ0M6IEphbiBC ZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ0M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29w ZXIzQGNpdHJpeC5jb20+Cgp2ODogTmV3CiAtIFJlbW92ZSB0aGUgZGVidWcgY29kZQogLSBSZXR1 cm4gdGhlICdtaWQnIGluZGV4IGluIHN5bWJvbF9hZGRyZXNzZXMsIG5vdCB0aGUgJ2xvdycuCnY5 OgogLSBNYWtlIGl0IHJldHVybiB2b2lkKgogLSBEaXRjaCB0aGUgb2xkIGltcGxlbWVudGF0aW9u LiBVc2UgYSBzaW5nbGUgZml4ZWQtc2l6ZSBhcnJheQogICB3aXRoIHR3byB1aW50MzJfdCB2YWx1 ZXMgLSBvZmZzZXQgaW4gc3RyZWFtIGFuZCBvZmZzZXQgaW4gYWRkcmVzcy4KIC0gQ2hhbmdlIHBy aW50ZiBpbiBzeW1ib2xzLmMgdG8gJXUuIENoYW5nZSBwYXJhbWV0ZXIgdG8gLS1zb3J0LWJ5LW5h bWUuCiAtIFNxdWFzaCB0aGUgdHdvIHNlcGVyYXRlIGltcGxlbWVudGF0aW9uIG9mIHN5bWJvbHNf bG9va3VwX2J5X25hbWUKICAgaW4gb25lIGZ1bmN0aW9uIHVzaW5nICNpZmRlZnMuCiAtIEZpeCBj b21tZW50IGFuZCBzaW1wbGlmeSBjb21wYXJlX25hbWVfb3JpZyBjb2RlLgp2MTA6CiAgQWRkZWQg UmV2aWV3ZWQtYnkKLS0tCiB4ZW4vYXJjaC94ODYvTWFrZWZpbGUgICAgICB8ICAzICsrKwogeGVu L2NvbW1vbi9LY29uZmlnICAgICAgICAgfCAxMiArKysrKysrKysrKwogeGVuL2NvbW1vbi9zeW1i b2xzLWR1bW15LmMgfCAgNSArKysrKwogeGVuL2NvbW1vbi9zeW1ib2xzLmMgICAgICAgfCAyOCAr KysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaCAgfCAg OCArKysrKysrKwogeGVuL3Rvb2xzL3N5bWJvbHMuYyAgICAgICAgfCA1MCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiA2IGZpbGVzIGNoYW5nZWQsIDEwNCBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9N YWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQppbmRleCBmZGY0MjAyLi45MDBmYTU5IDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L01ha2Vm aWxlCkBAIC03NCw2ICs3NCw5IEBAIGVmaS15IDo9ICQoc2hlbGwgaWYgWyAhIC1yICQoQkFTRURJ UikvaW5jbHVkZS94ZW4vY29tcGlsZS5oIC1vIFwKIAogaWZkZWYgQ09ORklHX1hTUExJQ0UKIGFs bF9zeW1ib2xzID0gLS1hbGwtc3ltYm9scworaWZkZWYgQ09ORklHX0ZBU1RfU1lNQk9MX0xPT0tV UAorYWxsX3N5bWJvbHMgPSAtLWFsbC1zeW1ib2xzIC0tc29ydC1ieS1uYW1lCitlbmRpZgogZWxz ZQogYWxsX3N5bWJvbHMgPQogZW5kaWYKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vS2NvbmZpZyBi L3hlbi9jb21tb24vS2NvbmZpZwppbmRleCA2OTJlZjUxLi5lNGY4NmMyIDEwMDY0NAotLS0gYS94 ZW4vY29tbW9uL0tjb25maWcKKysrIGIveGVuL2NvbW1vbi9LY29uZmlnCkBAIC0yMDAsNCArMjAw LDE2IEBAIGNvbmZpZyBYU1BMSUNFCiAKIAkgIElmIHVuc3VyZSwgc2F5IFkuCiAKK2NvbmZpZyBG QVNUX1NZTUJPTF9MT09LVVAKKwlib29sICJGYXN0IHN5bWJvbCBsb29rdXAgKGJpZ2dlciBiaW5h cnkpIgorCWRlZmF1bHQgeQorCWRlcGVuZHMgb24gWFNQTElDRQorCS0tLWhlbHAtLS0KKwkgIFdo ZW4gc2VhcmNoaW5nIGZvciBzeW1ib2wgYWRkcmVzc2VzIHdlIGNhbiB1c2UgdGhlIGJ1aWx0LWlu IHN5c3RlbQorCSAgdGhhdCBpcyBvcHRpbWl6ZWQgZm9yIHNlYXJjaGluZyBzeW1ib2xzIHVzaW5n IGFkZHJlc3NlcyBhcyB0aGUga2V5LgorCSAgSG93ZXZlciB1c2luZyBpdCBmb3IgdGhlIGludmVy c2UgKGZpbmQgYWRkcmVzcyB1c2luZyB0aGUgc3ltYm9sIG5hbWUpCisJICBpdCBpcyBzbG93LiBU aGlzIGV4dHJhIGRhdGEgYW5kIGNvZGUgKH41NWtCKSBzcGVlZHMgdXAgdGhlIHNlYXJjaC4KKwkg IFRoZSBvbmx5IHVzZXIgb2YgdGhpcyBpcyB4U3BsaWNlLgorCisJICBJZiB1bnN1cmUsIHNheSBZ LgogZW5kbWVudQpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zeW1ib2xzLWR1bW15LmMgYi94ZW4v Y29tbW9uL3N5bWJvbHMtZHVtbXkuYwppbmRleCA1MDkwYzNiLi4wNDRkZmQzIDEwMDY0NAotLS0g YS94ZW4vY29tbW9uL3N5bWJvbHMtZHVtbXkuYworKysgYi94ZW4vY29tbW9uL3N5bWJvbHMtZHVt bXkuYwpAQCAtNSw2ICs1LDcgQEAKIAogI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KICNpbmNsdWRl IDx4ZW4vdHlwZXMuaD4KKyNpbmNsdWRlIDx4ZW4vc3ltYm9scy5oPgogCiAjaWZkZWYgU1lNQk9M U19PUklHSU4KIGNvbnN0IHVuc2lnbmVkIGludCBzeW1ib2xzX29mZnNldHNbMV07CkBAIC0xNCw2 ICsxNSwxMCBAQCBjb25zdCB1bnNpZ25lZCBsb25nIHN5bWJvbHNfYWRkcmVzc2VzWzFdOwogY29u c3QgdW5zaWduZWQgaW50IHN5bWJvbHNfbnVtX3N5bXM7CiBjb25zdCB1OCBzeW1ib2xzX25hbWVz WzFdOwogCisjaWZkZWYgQ09ORklHX0ZBU1RfU1lNQk9MX0xPT0tVUAorY29uc3Qgc3RydWN0IHN5 bWJvbF9vZmZzZXQgc3ltYm9sc19zb3J0ZWRfb2Zmc2V0c1sxXTsKKyNlbmRpZgorCiBjb25zdCB1 OCBzeW1ib2xzX3Rva2VuX3RhYmxlWzFdOwogY29uc3QgdTE2IHN5bWJvbHNfdG9rZW5faW5kZXhb MV07CiAKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc3ltYm9scy5jIGIveGVuL2NvbW1vbi9zeW1i b2xzLmMKaW5kZXggZTAyYTJhZi4uMTI3NjVkMyAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zeW1i b2xzLmMKKysrIGIveGVuL2NvbW1vbi9zeW1ib2xzLmMKQEAgLTMxLDYgKzMxLDggQEAgZXh0ZXJu IGNvbnN0IHVuc2lnbmVkIGxvbmcgc3ltYm9sc19hZGRyZXNzZXNbXTsKIGV4dGVybiBjb25zdCB1 bnNpZ25lZCBpbnQgc3ltYm9sc19udW1fc3ltczsKIGV4dGVybiBjb25zdCB1OCBzeW1ib2xzX25h bWVzW107CiAKK2V4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX29mZnNldCBzeW1ib2xzX3NvcnRl ZF9vZmZzZXRzW107CisKIGV4dGVybiBjb25zdCB1OCBzeW1ib2xzX3Rva2VuX3RhYmxlW107CiBl eHRlcm4gY29uc3QgdTE2IHN5bWJvbHNfdG9rZW5faW5kZXhbXTsKIApAQCAtMjExLDE0ICsyMTMs MzkgQEAgaW50IHhlbnN5bXNfcmVhZCh1aW50MzJfdCAqc3ltbnVtLCBjaGFyICp0eXBlLAogdW5z aWduZWQgbG9uZyBzeW1ib2xzX2xvb2t1cF9ieV9uYW1lKGNvbnN0IGNoYXIgKnN5bW5hbWUpCiB7 CiAgICAgY2hhciBuYW1lW0tTWU1fTkFNRV9MRU4gKyAxXTsKKyNpZmRlZiBDT05GSUdfRkFTVF9T WU1CT0xfTE9PS1VQCisgICAgdW5zaWduZWQgbG9uZyBsb3csIGhpZ2g7CisjZWxzZQogICAgIHVp bnQzMl90IHN5bW51bSA9IDA7CiAgICAgY2hhciB0eXBlOwogICAgIHVuc2lnbmVkIGxvbmcgYWRk cjsKICAgICBpbnQgcmM7CisjZW5kaWYKIAogICAgIGlmICggKnN5bW5hbWUgPT0gJ1wwJyApCiAg ICAgICAgIHJldHVybiAwOwogCisjaWZkZWYgQ09ORklHX0ZBU1RfU1lNQk9MX0xPT0tVUAorICAg IGxvdyA9IDA7CisgICAgaGlnaCA9IHN5bWJvbHNfbnVtX3N5bXM7CisgICAgd2hpbGUgKCBsb3cg PCBoaWdoICkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbWlkID0gbG93ICsgKChoaWdo IC0gbG93KSAvIDIpOworICAgICAgICBjb25zdCBzdHJ1Y3Qgc3ltYm9sX29mZnNldCAqczsKKyAg ICAgICAgaW50IHJjOworCisgICAgICAgIHMgPSAmc3ltYm9sc19zb3J0ZWRfb2Zmc2V0c1ttaWRd OworICAgICAgICAodm9pZClzeW1ib2xzX2V4cGFuZF9zeW1ib2wocy0+c3RyZWFtLCBuYW1lKTsK KyAgICAgICAgLyogRm9ybWF0IGlzOiBbZmlsZW5hbWVdIzxzeW1ib2w+LiBzeW1ib2xzX2V4cGFu ZF9zeW1ib2wgZWF0cyB0eXBlLiovCisgICAgICAgIHJjID0gc3RyY21wKHN5bW5hbWUsIG5hbWUp OworICAgICAgICBpZiAoIHJjIDwgMCApCisgICAgICAgICAgICBoaWdoID0gbWlkOworICAgICAg ICBlbHNlIGlmICggcmMgPiAwICkKKyAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7CisgICAgICAg IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBzeW1ib2xzX2FkZHJlc3Mocy0+YWRkcik7CisgICAg fQorI2Vsc2UKICAgICBkbyB7CiAgICAgICAgIHJjID0geGVuc3ltc19yZWFkKCZzeW1udW0sICZ0 eXBlLCAmYWRkciwgbmFtZSk7CiAgICAgICAgIGlmICggcmMgKQpAQCAtMjI5LDYgKzI1Niw3IEBA IHVuc2lnbmVkIGxvbmcgc3ltYm9sc19sb29rdXBfYnlfbmFtZShjb25zdCBjaGFyICpzeW1uYW1l KQogCiAgICAgfSB3aGlsZSAoIG5hbWVbMF0gIT0gJ1wwJyApOwogCisjZW5kaWYKICAgICByZXR1 cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaCBiL3hlbi9p bmNsdWRlL3hlbi9zeW1ib2xzLmgKaW5kZXggMDE1ZmNiNC4uMjBiYmIyOCAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5o CkBAIC0yNSw0ICsyNSwxMiBAQCBpbnQgeGVuc3ltc19yZWFkKHVpbnQzMl90ICpzeW1udW0sIGNo YXIgKnR5cGUsCiAKIHVuc2lnbmVkIGxvbmcgc3ltYm9sc19sb29rdXBfYnlfbmFtZShjb25zdCBj aGFyICpzeW1uYW1lKTsKIAorLyoKKyAqIEEgc29ydGVkIChieSBzeW1ib2xzKSBsb29rdXAgdGFi bGUgdGFibGUgdG8gc3ltYm9sc19uYW1lcyAoc3RyZWFtKQorICogYW5kIHN5bWJvbHNfYWRkcmVz cyAob3Igb2Zmc2V0KS4KKyAqLworc3RydWN0IHN5bWJvbF9vZmZzZXQgeworICAgIHVpbnQzMl90 IHN0cmVhbTsgLyogLi4gaW4gdGhlIGNvbXByZXNzZWQgc3RyZWFtLiovCisgICAgdWludDMyX3Qg YWRkcjsgICAvKiAuLiBhbmQgaW4gdGhlIGZpeGVkIHNpemUgYWRkcmVzcyBhcnJheS4gKi8KK307 CiAjZW5kaWYgLypfWEVOX1NZTUJPTFNfSCovCmRpZmYgLS1naXQgYS94ZW4vdG9vbHMvc3ltYm9s cy5jIGIveGVuL3Rvb2xzL3N5bWJvbHMuYwppbmRleCAxOTZkYjc0Li45NDFmYmU3IDEwMDY0NAot LS0gYS94ZW4vdG9vbHMvc3ltYm9scy5jCisrKyBiL3hlbi90b29scy9zeW1ib2xzLmMKQEAgLTQw LDYgKzQwLDEwIEBAIHN0cnVjdCBzeW1fZW50cnkgewogCXVuc2lnbmVkIGxvbmcgbG9uZyBhZGRy OwogCXVuc2lnbmVkIGludCBsZW47CiAJdW5zaWduZWQgY2hhciAqc3ltOworCWNoYXIgKm9yaWdf c3ltYm9sOworCXVuc2lnbmVkIGludCBhZGRyX2lkeDsKKwl1bnNpZ25lZCBpbnQgc3RyZWFtX29m ZnNldDsKKwl1bnNpZ25lZCBjaGFyIHR5cGU7CiB9OwogI2RlZmluZSBTWU1CT0xfTkFNRShzKSAo KGNoYXIgKikocyktPnN5bSArIDEpCiAKQEAgLTQ3LDggKzUxLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qg c3ltX2VudHJ5ICp0YWJsZTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgdGFibGVfc2l6ZSwgdGFibGVf Y250Owogc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBfc3RleHQsIF9ldGV4dCwgX3Npbml0dGV4 dCwgX2Vpbml0dGV4dCwgX3NleHRyYXRleHQsIF9lZXh0cmF0ZXh0Owogc3RhdGljIGludCBhbGxf c3ltYm9scyA9IDA7CitzdGF0aWMgaW50IHNvcnRfYnlfbmFtZSA9IDA7CiBzdGF0aWMgY2hhciBz eW1ib2xfcHJlZml4X2NoYXIgPSAnXDAnOwogc3RhdGljIGVudW0geyBmbXRfYnNkLCBmbXRfc3lz diB9IGlucHV0X2Zvcm1hdDsKK3N0YXRpYyBpbnQgY29tcGFyZV9uYW1lKGNvbnN0IHZvaWQgKnAx LCBjb25zdCB2b2lkICpwMik7CiAKIGludCB0b2tlbl9wcm9maXRbMHgxMDAwMF07CiAKQEAgLTE3 NSw4ICsxODEsMTEgQEAgc3RhdGljIGludCByZWFkX3N5bWJvbChGSUxFICppbiwgc3RydWN0IHN5 bV9lbnRyeSAqcykKIAkJKnN5bSsrID0gJyMnOwogCX0KIAlzdHJjcHkoc3ltLCBzdHIpOworCWlm IChzb3J0X2J5X25hbWUpIHsKKwkJcy0+b3JpZ19zeW1ib2wgPSBzdHJkdXAoU1lNQk9MX05BTUUo cykpOworCQlzLT50eXBlID0gc3R5cGU7IC8qIEFzIHMtPnN5bVswXSBlbmRzIG1hbmdsZWQuICov CisJfQogCXMtPnN5bVswXSA9IHN0eXBlOwotCiAJcmMgPSAwOwogCiAgc2tpcF90YWlsOgpAQCAt Mjc2LDYgKzI4NSwyMSBAQCBzdGF0aWMgaW50IGV4cGFuZF9zeW1ib2wodW5zaWduZWQgY2hhciAq ZGF0YSwgaW50IGxlbiwgY2hhciAqcmVzdWx0KQogCXJldHVybiB0b3RhbDsKIH0KIAorLyogU29y dCBieSBvcmlnaW5hbCAobm9uIG1hbmdsZWQpIHN5bWJvbCBuYW1lLCB0aGVuIHR5cGUuICovCitz dGF0aWMgaW50IGNvbXBhcmVfbmFtZV9vcmlnKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpw MikKK3sKKwljb25zdCBzdHJ1Y3Qgc3ltX2VudHJ5ICpzeW0xID0gcDE7CisJY29uc3Qgc3RydWN0 IHN5bV9lbnRyeSAqc3ltMiA9IHAyOworCWludCByYzsKKworCXJjID0gc3RyY21wKHN5bTEtPm9y aWdfc3ltYm9sLCBzeW0yLT5vcmlnX3N5bWJvbCk7CisKKwlpZiAoIXJjKQorCQlyYyA9IHN5bTEt PnR5cGUgLSBzeW0yLT50eXBlOworCisJcmV0dXJuIHJjOworfQorCiBzdGF0aWMgdm9pZCB3cml0 ZV9zcmModm9pZCkKIHsKIAl1bnNpZ25lZCBpbnQgaSwgaywgb2ZmOwpAQCAtMzI1LDYgKzM0OSw3 IEBAIHN0YXRpYyB2b2lkIHdyaXRlX3NyYyh2b2lkKQogCQkJcHJpbnRmKCIsIDB4JTAyeCIsIHRh YmxlW2ldLnN5bVtrXSk7CiAJCXByaW50ZigiXG4iKTsKIAorCQl0YWJsZVtpXS5zdHJlYW1fb2Zm c2V0ID0gb2ZmOwogCQlvZmYgKz0gdGFibGVbaV0ubGVuICsgMTsKIAl9CiAJcHJpbnRmKCJcbiIp OwpAQCAtMzM0LDcgKzM1OSw2IEBAIHN0YXRpYyB2b2lkIHdyaXRlX3NyYyh2b2lkKQogCQlwcmlu dGYoIlx0LmxvbmdcdCVkXG4iLCBtYXJrZXJzW2ldKTsKIAlwcmludGYoIlxuIik7CiAKLQlmcmVl KG1hcmtlcnMpOwogCiAJb3V0cHV0X2xhYmVsKCJzeW1ib2xzX3Rva2VuX3RhYmxlIik7CiAJb2Zm ID0gMDsKQEAgLTM1MCw2ICszNzQsMjUgQEAgc3RhdGljIHZvaWQgd3JpdGVfc3JjKHZvaWQpCiAJ Zm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQogCQlwcmludGYoIlx0LnNob3J0XHQlZFxuIiwgYmVz dF9pZHhbaV0pOwogCXByaW50ZigiXG4iKTsKKworCWlmICghc29ydF9ieV9uYW1lKSB7CisJCWZy ZWUobWFya2Vycyk7CisJCXJldHVybjsKKwl9CisKKwkvKiBTb3J0ZWQgYnkgb3JpZ2luYWwgc3lt Ym9sIG5hbWVzIGFuZCB0eXBlLiAqLworCXFzb3J0KHRhYmxlLCB0YWJsZV9jbnQsIHNpemVvZigq dGFibGUpLCBjb21wYXJlX25hbWVfb3JpZyk7CisKKwlvdXRwdXRfbGFiZWwoInN5bWJvbHNfc29y dGVkX29mZnNldHMiKTsKKwkvKiBBIGZpeGVkIHNpemVkIGFycmF5IHdpdGggdHdvIGVudHJpZXM6 IG9mZnNldCBpbiB0aGUKKwkgKiBjb21wcmVzc2VkIHN0cmVhbSAoZm9yIHN5bWJvbCBuYW1lKSwg YW5kIG9mZnNldCBpbgorCSAqIHN5bWJvbHNfYWRkcmVzc2VzIChvciBzeW1ib2xzX29mZnNldCku ICovCisJZm9yIChpID0gMDsgaSA8IHRhYmxlX2NudDsgaSsrKSB7CisJCXByaW50ZigiXHQubG9u ZyAldSwgJXVcbiIsIHRhYmxlW2ldLnN0cmVhbV9vZmZzZXQsIHRhYmxlW2ldLmFkZHJfaWR4KTsK Kwl9CisJcHJpbnRmKCJcbiIpOworCisJZnJlZShtYXJrZXJzKTsKIH0KIAogCkBAIC00MTAsNiAr NDUzLDcgQEAgc3RhdGljIHZvaWQgY29tcHJlc3Nfc3ltYm9scyh1bnNpZ25lZCBjaGFyICpzdHIs IGludCBpZHgpCiAJCWxlbiA9IHRhYmxlW2ldLmxlbjsKIAkJcDEgPSB0YWJsZVtpXS5zeW07CiAK KwkJdGFibGVbaV0uYWRkcl9pZHggPSBpOwogCQkvKiBmaW5kIHRoZSB0b2tlbiBvbiB0aGUgc3lt Ym9sICovCiAJCXAyID0gbWVtbWVtX3B2dChwMSwgbGVuLCBzdHIsIDIpOwogCQlpZiAoIXAyKSBj b250aW51ZTsKQEAgLTU2MSw2ICs2MDUsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJCQkJaW5wdXRfZm9ybWF0ID0gZm10X3N5c3Y7CiAJCQllbHNlIGlmIChzdHJjbXAoYXJn dltpXSwgIi0tc29ydCIpID09IDApCiAJCQkJdW5zb3J0ZWQgPSB0cnVlOworCQkJZWxzZSBpZiAo c3RyY21wKGFyZ3ZbaV0sICItLXNvcnQtYnktbmFtZSIpID09IDApCisJCQkJc29ydF9ieV9uYW1l ID0gMTsKIAkJCWVsc2UgaWYgKHN0cmNtcChhcmd2W2ldLCAiLS13YXJuLWR1cCIpID09IDApCiAJ CQkJd2Fybl9kdXAgPSB0cnVlOwogCQkJZWxzZQotLSAKMi41LjAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=