From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9727 invoked by alias); 8 Dec 2011 09:26:36 -0000 Received: (qmail 9712 invoked by uid 22791); 8 Dec 2011 09:26:34 -0000 X-SWARE-Spam-Status: No, hits=-0.7 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ X-Spam-Check-By: sourceware.org Received: from mail-vw0-f41.google.com (HELO mail-vw0-f41.google.com) (209.85.212.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 08 Dec 2011 09:26:16 +0000 Received: by vbbfn1 with SMTP id fn1so1457943vbb.0 for ; Thu, 08 Dec 2011 01:26:15 -0800 (PST) Received: by 10.52.90.164 with SMTP id bx4mr1040620vdb.128.1323336375328; Thu, 08 Dec 2011 01:26:15 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.4.210 with HTTP; Thu, 8 Dec 2011 01:25:54 -0800 (PST) From: Kevin Pouget Date: Thu, 08 Dec 2011 10:17:00 -0000 Message-ID: Subject: [PATCH] Add bp_location to Python interface To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=20cf307cfc3691de8e04b391421c X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-12/txt/msg00257.txt.bz2 --20cf307cfc3691de8e04b391421c Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2182 Hello, I would like to discuss this patch which introduces a new Python class gdb.BpLocation, mapped from breakpoint.h::struct bp_location. I noticed that the Python interface doesn't offer so many details about breakpoint location, just gdb.Breakpoint.location, the string used to set the breakpoint (its linespec?) So this new class, which is currently strictly read-only and not instantiatable, exports the address and inferior in which the breakpoint was set (and an enabled flag, and a link to its owner breakpoint). BpLocation object are available through the gdb.Breakpoint.locations method. I think that this class would also help Python users to better control/understand where their breakpoints are set with Tom's recent changes about ambiguous linespec +* GDB now handles ambiguous linespecs more consistently; the existing + FILE:LINE support has been expanded to other types of linespecs. A + breakpoint will now have locations at all the matching points in all + inferiors, and locations will be added or subtracted according to + inferior changes. Please let me know what you think about it, build and tested with no regression on Fedora/x86_64 cordially, Kevin 2011-12-08 Kevin Pouget * Makefile.in (SUBDIR_PYTHON_OBS): Add py-bploc.o (SUBDIR_PYTHON_SRCS): Add python/py-bploc.c Add build rule for this file. * breakpoint.h (struct bploc_object): Forward declaration. (struct bp_location): Add py_bploc_obj. * breakpoint.c (free_bp_location): Call gdbpy_bplocation_free. * python/py-bploc.c: New file. * python/py-breakpoint.c (bppy_locations): New function. (breakpoint_object_methods): New method binding: locations(). * python/python-internal.h (bploc_object): New typedef. (bplocation_to_bplocation_object): New prototype. (gdbpy_initialize_bplocation): Likewise. * python/python.c (gdbpy_bplocation_free): New empty stub. (_initialize_python): Call gdbpy_initialize_bplocation. * python/python.h (gdbpy_bplocation_free): New prototype. doc/ * gdb.texinfo (Breakpoints In Python): Document gdb.Breakpoint.locations and gdb.BpLocation. testsuite/ * gdb.python/py-breakpoint.exp: Test gdb.BpLocation. --20cf307cfc3691de8e04b391421c Content-Type: text/x-patch; charset=US-ASCII; name="0001-Add-bp_location-to-Python-interface.patch" Content-Disposition: attachment; filename="0001-Add-bp_location-to-Python-interface.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gvxjuwnt0 Content-length: 30147 RnJvbSBlN2MwMThmOWVjZGJkOTIxOTlhODZhMTE3ODIyNWM3YWU2ODI4YTM5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLZXZpbiBQb3VnZXQg PGtldmluLnBvdWdldEBzdC5jb20+CkRhdGU6IFdlZCwgMTggTWF5IDIwMTEg MTA6MDI6MjMgLTA0MDAKU3ViamVjdDogW1BBVENIXSBBZGQgYnBfbG9jYXRp b24gdG8gUHl0aG9uIGludGVyZmFjZQoKLS0tCiBnZGIvTWFrZWZpbGUuaW4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIGdkYi9ORVdT ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwog Z2RiL2JyZWFrcG9pbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMyArCiBnZGIvYnJlYWtwb2ludC5oICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA2ICsKIGdkYi9kb2MvZ2RiLnRleGluZm8gICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMzcgKysrKwogZ2RiL3B5dGhvbi9weS1icGxv Yy5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMxMyArKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBnZGIvcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyAg ICAgICAgICAgICAgICAgfCAgIDM2ICsrKysKIGdkYi9weXRob24vcHl0aG9u LWludGVybmFsLmggICAgICAgICAgICAgICB8ICAgIDYgKwogZ2RiL3B5dGhv bi9weXRob24uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArCiBn ZGIvcHl0aG9uL3B5dGhvbi5oICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAyICsKIGdkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1icmVha3BvaW50 LmV4cCB8ICAgNTIgKysrKysKIDExIGZpbGVzIGNoYW5nZWQsIDQ3MiBpbnNl cnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdkYi9weXRob24vcHktYnBsb2MuYwoKZGlmZiAtLWdpdCBhL2dkYi9NYWtl ZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgppbmRleCBiNzFkYjMzLi40ODkz ZDNiIDEwMDY0NAotLS0gYS9nZGIvTWFrZWZpbGUuaW4KKysrIGIvZ2RiL01h a2VmaWxlLmluCkBAIC0yODEsNiArMjgxLDcgQEAgU1VCRElSX1BZVEhPTl9P QlMgPSBcCiAJcHktYmxvY2subyBcCiAJcHktYnBldmVudC5vIFwKIAlweS1i cmVha3BvaW50Lm8gXAorCXB5LWJwbG9jLm8gXAogCXB5LWNtZC5vIFwKIAlw eS1jb250aW51ZWV2ZW50Lm8gXAogCXB5LWV2ZW50Lm8gXApAQCAtMzEyLDYg KzMxMyw3IEBAIFNVQkRJUl9QWVRIT05fU1JDUyA9IFwKIAlweXRob24vcHkt YmxvY2suYyBcCiAJcHl0aG9uL3B5LWJwZXZlbnQuYyBcCiAJcHl0aG9uL3B5 LWJyZWFrcG9pbnQuYyBcCisJcHl0aG9uL3B5LWJwbG9jLmMgXAogCXB5dGhv bi9weS1jbWQuYyBcCiAJcHl0aG9uL3B5LWNvbnRpbnVlZXZlbnQuYyBcCiAJ cHl0aG9uL3B5LWV2ZW50LmMgXApAQCAtMjA4NSw2ICsyMDg3LDEwIEBAIHB5 LWJyZWFrcG9pbnQubzogJChzcmNkaXIpL3B5dGhvbi9weS1icmVha3BvaW50 LmMKIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5 dGhvbi9weS1icmVha3BvaW50LmMKIAkkKFBPU1RDT01QSUxFKQogCitweS1i cGxvYy5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWJwbG9jLmMKKwkkKENPTVBJ TEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1icGxv Yy5jCisJJChQT1NUQ09NUElMRSkKKwogcHktY21kLm86ICQoc3JjZGlyKS9w eXRob24vcHktY21kLmMKIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykg JChzcmNkaXIpL3B5dGhvbi9weS1jbWQuYwogCSQoUE9TVENPTVBJTEUpCmRp ZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dkYi9ORVdTCmluZGV4IDQyNzgyY2Uu LjMzZWJiYjAgMTAwNjQ0Ci0tLSBhL2dkYi9ORVdTCisrKyBiL2dkYi9ORVdT CkBAIC01Nyw2ICs1NywxMCBAQAogICAqKiBUaGUgImdkYi5icmVha3BvaW50 IiBmdW5jdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mCiAg ICAgICJnZGIuYnJlYWtwb2ludHMiLgogCisgICoqIEEgbmV3IG1ldGhvZCAi Z2RiLkJyZWFrcG9pbnQubG9jYXRpb25zIiBoYXMgYmVlbiBhZGRlZCwgYXMg d2VsbCBhcworICAgICB0aGUgY2xhc3MgZ2RiLkJwTG9jYXRpb24gdG8gcHJv dmlkZSBmdXJ0aGVyIGRldGFpbHMgYWJvdXQgYnJlYWtwb2ludAorICAgICBs b2NhdGlvbnMuCisKICAgKiogVHlwZSBvYmplY3RzIGZvciBzdHJ1Y3QgYW5k IHVuaW9uIHR5cGVzIG5vdyBhbGxvdyBhY2Nlc3MgdG8KICAgICAgdGhlIGZp ZWxkcyB1c2luZyBzdGFuZGFyZCBQeXRob24gZGljdGlvbmFyeSAobWFwcGlu ZykgbWV0aG9kcy4KICAgICAgRm9yIGV4YW1wbGUsICJzb21lX3R5cGVbJ215 ZmllbGQnXSIgbm93IHdvcmtzLCBhcyBkb2VzCmRpZmYgLS1naXQgYS9nZGIv YnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwppbmRleCBkOWQ1YmJl Li4wMjZkY2I0OCAxMDA2NDQKLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYworKysg Yi9nZGIvYnJlYWtwb2ludC5jCkBAIC01NjgxLDYgKzU2ODEsOSBAQCBzdGF0 aWMgdm9pZAogZnJlZV9icF9sb2NhdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9u ICpsb2MpCiB7CiAgIGxvYy0+b3BzLT5kdG9yIChsb2MpOworCisgIGdkYnB5 X2JwbG9jYXRpb25fZnJlZSAobG9jKTsKKwogICB4ZnJlZSAobG9jKTsKIH0K IApkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuaCBiL2dkYi9icmVha3Bv aW50LmgKaW5kZXggZGRmMTg4MS4uNWE4YTFhZiAxMDA2NDQKLS0tIGEvZ2Ri L2JyZWFrcG9pbnQuaAorKysgYi9nZGIvYnJlYWtwb2ludC5oCkBAIC0yOCw2 ICsyOCw3IEBACiBzdHJ1Y3QgdmFsdWU7CiBzdHJ1Y3QgYmxvY2s7CiBzdHJ1 Y3QgYnJlYWtwb2ludF9vYmplY3Q7CitzdHJ1Y3QgYnBsb2Nfb2JqZWN0Owog c3RydWN0IGdldF9udW1iZXJfb3JfcmFuZ2Vfc3RhdGU7CiBzdHJ1Y3QgdGhy ZWFkX2luZm87CiBzdHJ1Y3QgYnBzdGF0czsKQEAgLTQwNSw2ICs0MDYsMTEg QEAgc3RydWN0IGJwX2xvY2F0aW9uCiAgIC8qIFNvdXJjZSBmaWxlIG5hbWUg b2YgdGhpcyBhZGRyZXNzLiAgKi8KIAogICBjaGFyICpzb3VyY2VfZmlsZTsK KworICAvKiBQeXRob24gb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGxv Y2F0aW9uLiAgTWF5IGJlIE5VTEwgaWYgdGhlIGxvY2F0aW9uCisgICAgIGlz IG5vdCB5ZXQgZXhwb3J0ZWQgdG8gUHl0aG9uLiAgKi8KKworICBzdHJ1Y3Qg YnBsb2Nfb2JqZWN0ICpweV9icGxvY19vYmo7CiB9OwogCiAvKiBUaGlzIHN0 cnVjdHVyZSBpcyBhIGNvbGxlY3Rpb24gb2YgZnVuY3Rpb24gcG9pbnRlcnMg dGhhdCwgaWYgYXZhaWxhYmxlLApkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIu dGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KaW5kZXggNTBjMjk5ZS4u NDUzYjE4MSAxMDA2NDQKLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysg Yi9nZGIvZG9jL2dkYi50ZXhpbmZvCkBAIC0yNDMzNSw2ICsyNDMzNSw0MyBA QCBjb21tYW5kcywgc2VwYXJhdGVkIGJ5IG5ld2xpbmVzLiAgSWYgdGhlcmUg YXJlIG5vIGNvbW1hbmRzLCB0aGlzCiBhdHRyaWJ1dGUgaXMgQGNvZGV7Tm9u ZX0uICBUaGlzIGF0dHJpYnV0ZSBpcyBub3Qgd3JpdGFibGUuCiBAZW5kIGRl ZnZhcgogCitAZmluZGV4IGdkYi5sb2NhdGlvbnMKK0BkZWZ1biBnZGIubG9j YXRpb25zICgpCitSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIHRoZSBAY29k ZXtnZGIuQnBMb2NhdGlvbn0gb2JqZWN0cyAoc2VlIGJlbG93KQorYXNzb2Np YXRlZCB3aXRoIHRoaXMgYnJlYWtwb2ludC4KK0BlbmQgZGVmdW4KKworQSBi cmVha3BvaW50IGxvY2F0aW9uIGlzIHJlcHJlc2VudGVkIHdpdGggYSBAY29k ZXtnZGIuQnBMb2NhdGlvbn0gb2JqZWN0LAord2hpY2ggb2ZmZXJzIHRoZSBm b2xsb3dpbmcgYXR0cmlidXRlcyAoYWxsIHJlYWQgb25seSkgYW5kIG1ldGhv ZHMuCitQbGVhc2Ugbm90ZSB0aGF0IGJyZWFrcG9pbnQgbG9jYXRpb25zIGFy ZSB2ZXJ5IHRyYW5zaWVudCBlbnRpdGllcyBpbgorQHZhbHVle0dEQk59LCBz byBvbmUgc2hvdWxkIGF2b2lkIGtlZXBpbmcgcmVmZXJlbmNlcyB0byB0aGVt LgorCitAZGVmdmFyIEJwTG9jYXRpb24ub3duZXIKK1RoaXMgYXR0cmlidXRl IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBAY29kZXtnZGIuQnJlYWtwb2lu dH0gb2JqZWN0IHdoaWNoCitvd25zIHRoaXMgbG9jYXRpb24uCitAZW5kIGRl ZnZhcgorCitAZGVmdmFyIEJwTG9jYXRpb24uZW5hYmxlZAorVGhpcyBhdHRy aWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBsb2NhdGlvbiBpcyBjdXJy ZW50bHkgZW5hYmxlZCBvciBub3QuCitAZW5kIGRlZnZhcgorCitAZGVmdmFy IEJwTG9jYXRpb24uaW5mZXJpb3IKK1RoaXMgYXR0cmlidXRlIGhvbGRzIGEg cmVmZXJlbmNlIHRvIHRoZSBAY29kZXtnZGIuSW5mZXJpb3J9IGluZmVyaW9y IG9iamVjdAoraW4gd2hpY2ggdGhpcyBicmVha3BvaW50IGxvY2F0aW9uIGhh cyBiZWVuIGluc2VydGVkLiAgVGhlIHZhbHVlIHdpbGwgYmUgCitAY29kZXtO b25lfSBpZiB0aGVyZSBpcyBubyBpbmZlcmlvciBhc3NvY2lhdGVkIHdpdGgg dGhpcyBsb2NhdGlvbi4KK0BlbmQgZGVmdmFyCisKK0BkZWZ2YXIgQnBMb2Nh dGlvbi5hZGRyZXNzCitUaGlzIGF0dHJpYnV0ZSBob2xkcyBhIEBjb2Rle2dk Yi5WYWx1ZX0gb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFkZHJlc3Mg CithdCB3aGljaCB0aGUgYnJlYWtwb2ludCBoYXMgYmVlbiBpbnNlcnRlZC4K K0BlbmQgZGVmdmFyCisKK0BkZWZ1biBCcExvY2F0aW9uLmlzX3ZhbGlkICgp CitSZXR1cm5zIEBjb2Rle1RydWV9IGlmIHRoZSBAY29kZXtnZGIuQnBMb2Nh dGlvbn0gb2JqZWN0IGlzIHZhbGlkLAorQGNvZGV7RmFsc2V9IGlmIG5vdC4g IEEgQGNvZGV7Z2RiLkJwTG9jYXRpb259IG9iamVjdCB3aWxsIGJlY29tZSBp bnZhbGlkCitpZiBicmVha3BvaW50IHRvIHdoaWNoIGlzIGJlbG9uZyBpcyBk ZWxldGVkLgorQGVuZCBkZWZ1bgorCiBAbm9kZSBMYXp5IFN0cmluZ3MgSW4g UHl0aG9uCiBAc3Vic3Vic2VjdGlvbiBQeXRob24gcmVwcmVzZW50YXRpb24g b2YgbGF6eSBzdHJpbmdzLgogCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5 LWJwbG9jLmMgYi9nZGIvcHl0aG9uL3B5LWJwbG9jLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY5Yzc0ZAotLS0gL2Rldi9udWxs CisrKyBiL2dkYi9weXRob24vcHktYnBsb2MuYwpAQCAtMCwwICsxLDMxMyBA QAorLyogUHl0aG9uIGludGVyZmFjZSB0byBicmVha3BvaW50IGxvY2F0aW9u cy4KKworICAgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIu CisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKworI2luY2x1ZGUg ImRlZnMuaCIKKyNpbmNsdWRlICJpbmZlcmlvci5oIgorI2luY2x1ZGUgInB5 dGhvbi1pbnRlcm5hbC5oIgorI2luY2x1ZGUgIm9ic2VydmVyLmgiCisjaW5j bHVkZSAiZ2RiYXJjaC5oIgorCitzdHJ1Y3QgYnBsb2Nfb2JqZWN0Cit7Cisg IFB5T2JqZWN0X0hFQUQKKworICAvKiBUaGUgbG9jYXRpb24gY29ycmVzcG9u ZGluZyB0byB0aGlzIHB5IG9iamVjdC4gIE5VTEwgaXMgdGhlIGxvY2F0aW9u CisgICAgIGhhcyBiZWVuIGRlbGV0ZWQuICAqLworICBzdHJ1Y3QgYnBfbG9j YXRpb24gKmxvYzsKKworICAvKiAxIGlmIHRoZSBvd25lciBCUCBoYXMgYmVl biBkZWxldGVkLCAwIG90aGVyd2lzZS4gICovCisgIGludCBpbnZhbGlkX293 bmVyOworCisgIC8qIENhY2hlIGZvciB0aGUgZ2RiLlZhbHVlIG9iamVjdCBj b3JyZXNwb25kaW5nIHRvIGxvYy0+YWRkcmVzcy4gICovCisgIFB5T2JqZWN0 ICpweV9hZGRyZXNzOworfTsKKworLyogUmVxdWlyZSB0aGF0IExPQ0FUSU9O IGJlIGEgdmFsaWQgYnBfbG9jYXRpb247IHRocm93IGEgUHl0aG9uCisgICBl eGNlcHRpb24gaWYgaXQgaXMgaW52YWxpZC4gICovCisjZGVmaW5lIEJQTE9D UFlfUkVRVUlSRV9WQUxJRChMb2NhdGlvbikgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICBpZiAoKExvY2F0aW9uKS0+bG9jID09IE5VTEwpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy biBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF8oIkJwTG9jYXRpb24gaW52YWxpZC4iKSk7ICAgICAgICAgICAgICAgICBc CisgICAgfSB3aGlsZSAoMCkKKworc3RhdGljIFB5VHlwZU9iamVjdCBicGxv Y19vYmplY3RfdHlwZTsKKworLyogQ2FsbCBieSBmcmVlX2JwX2xvY2F0aW9u IHdoZW4gbG9jIGlzIGFib3V0IHRvIGJlIGZyZWVkLiAgKi8KKwordm9pZAor Z2RicHlfYnBsb2NhdGlvbl9mcmVlIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxv YykKK3sKKyAgaWYgKGxvYy0+cHlfYnBsb2Nfb2JqKQorICAgIHsKKyAgICAg IGxvYy0+cHlfYnBsb2Nfb2JqLT5sb2MgPSBOVUxMOworICAgICAgUHlfREVD UkVGIChsb2MtPnB5X2JwbG9jX29iaik7CisgICAgfQorfQorCisvKiBEaXNz b2NpYXRlIHRoZSBicF9sb2NhdGlvbiBmcm9tIHRoZSBQeXRob24gb2JqZWN0 LiAgKi8KKworc3RhdGljIHZvaWQKK2JwbG9jcHlfZGVhbGxvYyAoUHlPYmpl Y3QgKnNlbGYpCit7CisgIGJwbG9jX29iamVjdCAqc2VsZl9icGxvYyA9IChi cGxvY19vYmplY3QgKikgc2VsZjsKKworICBpZiAoc2VsZl9icGxvYy0+bG9j ICE9IE5VTEwpCisgICAgc2VsZl9icGxvYy0+bG9jLT5weV9icGxvY19vYmog PSBOVUxMOworCisgIFB5X1hERUNSRUYgKHNlbGZfYnBsb2MtPnB5X2FkZHJl c3MpOworCisgIHNlbGYtPm9iX3R5cGUtPnRwX2ZyZWUgKHNlbGYpOworfQor CisvKiBDcmVhdGUgb3IgYWNxdWlyZSBhIHJlZiB0byB0aGUgYnBfbG9jYXRp b24gb2JqZWN0IChnZGIuQnBMb2NhdGlvbikKKyAgIHRoYXQgZW5jYXBzdWxh dGVzIHRoZSBzdHJ1Y3QgYnBfbG9jYXRpb24gZnJvbSBHREIuICAqLworCitQ eU9iamVjdCAqCiticGxvY2F0aW9uX3RvX2JwbG9jYXRpb25fb2JqZWN0IChz dHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKK3sKKyAgYnBsb2Nfb2JqZWN0ICpi cGxvY19vYmo7CisKKyAgZ2RiX2Fzc2VydCAobG9jICE9IE5VTEwpOworICBp ZiAobG9jLT5weV9icGxvY19vYmopCisgICAgeworICAgICAgUHlfSU5DUkVG IChsb2MtPnB5X2JwbG9jX29iaik7CisgICAgICByZXR1cm4gKFB5T2JqZWN0 ICopIGxvYy0+cHlfYnBsb2Nfb2JqOworICAgIH0KKworICBicGxvY19vYmog PSBQeU9iamVjdF9OZXcgKGJwbG9jX29iamVjdCwgJmJwbG9jX29iamVjdF90 eXBlKTsKKyAgaWYgKCFicGxvY19vYmopCisgICAgeworICAgICAgUHlFcnJf U2V0U3RyaW5nIChQeUV4Y19NZW1vcnlFcnJvciwKKyAgICAgICAgICAgICAg ICAgICAgICAgXygiQ291bGQgbm90IGFsbG9jYXRlIEJwTG9jYXRpb24gb2Jq ZWN0LiIpKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICBicGxv Y19vYmotPmxvYyA9IGxvYzsKKyAgYnBsb2Nfb2JqLT5pbnZhbGlkX293bmVy ID0gMDsKKyAgYnBsb2Nfb2JqLT5weV9hZGRyZXNzID0gTlVMTDsKKyAgbG9j LT5weV9icGxvY19vYmogPSBicGxvY19vYmo7CisKKyAgcmV0dXJuIChQeU9i amVjdCAqKSBicGxvY19vYmo7Cit9CisKKy8qIFB5dGhvbiBmdW5jdGlvbiB0 byBnZXQgdGhlIEJQIG93bmluZyB0aGlzIGxvY2F0aW9uLCBpcyBhbnkuICAq LworCitzdGF0aWMgUHlPYmplY3QgKgorYnBsb2NweV9nZXRfb3duZXIgKFB5 T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICBicGxvY19vYmpl Y3QgKnNlbGZfYnBsb2MgPSAoYnBsb2Nfb2JqZWN0ICopIHNlbGY7CisKKyAg QlBMT0NQWV9SRVFVSVJFX1ZBTElEIChzZWxmX2JwbG9jKTsKKworICBpZiAo c2VsZl9icGxvYy0+aW52YWxpZF9vd25lcikKKyAgICBQeV9SRVRVUk5fTk9O RTsKKworICBpZiAoc2VsZl9icGxvYy0+bG9jLT5vd25lcgorICAgICAgJiYg c2VsZl9icGxvYy0+bG9jLT5vd25lci0+cHlfYnBfb2JqZWN0KQorICAgIHsK KyAgICAgIFB5X0lOQ1JFRiAoc2VsZl9icGxvYy0+bG9jLT5vd25lci0+cHlf YnBfb2JqZWN0KTsKKyAgICAgIHJldHVybiAoUHlPYmplY3QgKikgc2VsZl9i cGxvYy0+bG9jLT5vd25lci0+cHlfYnBfb2JqZWN0OworICAgIH0KKworICBQ eV9SRVRVUk5fTk9ORTsKK30KKworLyogUHl0aG9uIGZ1bmN0aW9uIHRvIHRl c3Qgd2hldGhlciBvciBub3QgdGhpcyBicmVha3BvaW50IGxvY2F0aW9uIGlz CisgICBlbmFibGVkLiAgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2JwbG9j cHlfZ2V0X2VuYWJsZWQgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJl KQoreworICBicGxvY19vYmplY3QgKnNlbGZfYnBsb2MgPSAoYnBsb2Nfb2Jq ZWN0ICopIHNlbGY7CisKKyAgQlBMT0NQWV9SRVFVSVJFX1ZBTElEIChzZWxm X2JwbG9jKTsKKworICBpZiAoc2VsZl9icGxvYy0+bG9jLT5lbmFibGVkKQor ICAgIFB5X1JFVFVSTl9UUlVFOworCisgIFB5X1JFVFVSTl9GQUxTRTsKK30K KworLyogUHl0aG9uIGZ1bmN0aW9uIHRvIGdldCB0aGUgYWRkcmVzcyBvZiB0 aGlzIGJyZWFrcG9pbnQgbG9jYXRpb24uIFRoZQorICAgZ2RiLlZhbHVlIG9i amVjdCB3aWxsIGJlIGNhY2hlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhY2Nl c3MuIFJldHVybnMKKyAgIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlLCB3aXRo IGEgcHl0aG9uIGV4Y2VwdGlvbiBzZXQuICAqLworCitzdGF0aWMgUHlPYmpl Y3QgKgorYnBsb2NweV9nZXRfYWRkcmVzcyAoUHlPYmplY3QgKnNlbGYsIHZv aWQgKmNsb3N1cmUpCit7CisgIGJwbG9jX29iamVjdCAqc2VsZl9icGxvYyA9 IChicGxvY19vYmplY3QgKikgc2VsZjsKKworICBCUExPQ1BZX1JFUVVJUkVf VkFMSUQgKHNlbGZfYnBsb2MpOworCisgIGlmICghc2VsZl9icGxvYy0+cHlf YWRkcmVzcykKKyAgICB7CisgICAgICAvKiBHZXQgdGhlIGFkZHJlc3MgVmFs dWUgb2JqZWN0IGFzIGEgdm9pZCAqLiAgKi8KKyAgICAgIHZvbGF0aWxlIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKKyAgICAgIHN0cnVjdCB0eXBl ICp2b2lkX3B0cl90eXBlOworICAgICAgc3RydWN0IHZhbHVlICp2YWwgPSBO VUxMIDsgLyogSW5pdGlhbGl6ZSB0byBhcHBlYXNlIGdjYyB3YXJuaW5nLiAg Ki8KKworICAgICAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FM TCkKKyAgICAgICAgeworICAgICAgICAgIHZvaWRfcHRyX3R5cGUgPSBsb29r dXBfcG9pbnRlcl90eXBlICgKKyAgICAgICAgICAgICAgYnVpbHRpbl90eXBl IChweXRob25fZ2RiYXJjaCktPmJ1aWx0aW5fdm9pZCk7CisgICAgICAgICAg dmFsID0gdmFsdWVfZnJvbV9wb2ludGVyICh2b2lkX3B0cl90eXBlLCBzZWxm X2JwbG9jLT5sb2MtPmFkZHJlc3MpOworICAgICAgICB9CisgICAgICBHREJf UFlfSEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKKworICAgICAgc2VsZl9i cGxvYy0+cHlfYWRkcmVzcyA9IHZhbHVlX3RvX3ZhbHVlX29iamVjdCAodmFs KTsKKyAgICAgIFB5X1hJTkNSRUYgKHNlbGZfYnBsb2MtPnB5X2FkZHJlc3Mp OworICAgIH0KKworICBQeV9YSU5DUkVGIChzZWxmX2JwbG9jLT5weV9hZGRy ZXNzKTsKKworICByZXR1cm4gc2VsZl9icGxvYy0+cHlfYWRkcmVzczsKK30K KworLyogUHl0aG9uIGZ1bmN0aW9uIHRvIGdldCB0aGUgaW5mZXJpb3IgaG9z dGluZyB0aGlzIGJyZWFrcG9pbnQgbG9jYXRpb24uCisgICBSZXR1cm4gUHlf Tm9uZSBpZiB0aGVyZSBpcyBubyBpbmZlcmlvciBhc3NvY2lhdGVkIHdpdGgg dGhlIHByb2dyYW0gc3BhY2Ugb2YKKyAgIHRoaXMgbG9jYXRpb24sIG9yIE5V TEwgaW4gY2FzZSBvZiBmYWlsdXJlLCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlv biBzZXQuICAqLworCitzdGF0aWMgUHlPYmplY3QgKgorYnBsb2NweV9nZXRf aW5mZXJpb3IgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQorewor ICBicGxvY19vYmplY3QgKnNlbGZfYnBsb2MgPSAoYnBsb2Nfb2JqZWN0ICop IHNlbGY7CisgIHN0cnVjdCBpbmZlcmlvciAqaW5mOworICBQeU9iamVjdCAq aW5mb2JqOworCisgIEJQTE9DUFlfUkVRVUlSRV9WQUxJRCAoc2VsZl9icGxv Yyk7CisKKyAgaW5mID0gZmluZF9pbmZlcmlvcl9mb3JfcHJvZ3JhbV9zcGFj ZSAoc2VsZl9icGxvYy0+bG9jLT5wc3BhY2UpOworICBpZiAoIWluZikKKyAg ICBQeV9SRVRVUk5fTk9ORTsKKworICBpbmZvYmogPSBpbmZlcmlvcl90b19p bmZlcmlvcl9vYmplY3QgKGluZik7CisgIFB5X1hJTkNSRUYgKGluZm9iaik7 CisKKyAgcmV0dXJuIGluZm9iajsKK30KKworLyogUHl0aG9uIGZ1bmN0aW9u IHdoaWNoIGNoZWNrcyB0aGUgdmFsaWRpdHkgb2YgYSBicCBsb2NhdGlvbiBv YmplY3QuICAqLworCitzdGF0aWMgUHlPYmplY3QgKgorYnBsb2NweV9pc192 YWxpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICBi cGxvY19vYmplY3QgKnNlbGZfYnBsb2MgPSAoYnBsb2Nfb2JqZWN0ICopIHNl bGY7CisKKyAgaWYgKHNlbGZfYnBsb2MtPmxvYykKKyAgICBQeV9SRVRVUk5f VFJVRTsKKyAgUHlfUkVUVVJOX0ZBTFNFOworfQorCisvKiBDYWxsYmFjayB0 cmlnZ2VyZWQgd2hlbiBhIGJyZWFrcG9pbnQgaXMgZGVsZXRlZC4gIFRoaXMg d2lsbCBpbnZhbGlkYXRlCisgICB0aGUgY29ycmVzcG9uZGluZyBicF9sb2Nh dGlvbiBQeXRob24gb2JqZWN0IG93bmVycy4gICovCisKK3N0YXRpYyB2b2lk CiticGxvY3B5X2JyZWFrcG9pbnRfZGVsZXRlZCAoc3RydWN0IGJyZWFrcG9p bnQgKmIpIHsKKyAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7CisKKyAgZm9y IChsb2MgPSBiLT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQorICAgIHsK KyAgICAgIGlmIChsb2MtPnB5X2JwbG9jX29iaikKKyAgICAgICAgbG9jLT5w eV9icGxvY19vYmotPmludmFsaWRfb3duZXIgPSAxOworICAgIH0KK30KKwor LyogSW5pdGlhbGl6ZSB0aGUgUHl0aG9uIGJwX2xvY2F0aW9uIGNvZGUuICAq LworCit2b2lkCitnZGJweV9pbml0aWFsaXplX2JwbG9jYXRpb24gKHZvaWQp Cit7CisgIGlmIChQeVR5cGVfUmVhZHkgKCZicGxvY19vYmplY3RfdHlwZSkg PCAwKQorICAgIHJldHVybjsKKworICBQeV9JTkNSRUYgKCZicGxvY19vYmpl Y3RfdHlwZSk7CisgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1 bGUsICJCcExvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg KFB5T2JqZWN0ICopICZicGxvY19vYmplY3RfdHlwZSkgPCAwKQorICAgIHJl dHVybjsKKworICBvYnNlcnZlcl9hdHRhY2hfYnJlYWtwb2ludF9kZWxldGVk IChicGxvY3B5X2JyZWFrcG9pbnRfZGVsZXRlZCk7Cit9CisKK3N0YXRpYyBQ eUdldFNldERlZiBicGxvY19vYmplY3RfZ2V0c2V0W10gPQoreworICB7ICJv d25lciIsIGJwbG9jcHlfZ2V0X293bmVyLCBOVUxMLAorICAgICJFYWNoIGJy ZWFrcG9pbnQgbG9jYXRpb24gbXVzdCBiZWxvbmcgdG8gZXhhY3RseSBvbmUg aGlnaGVyLWxldmVsIFwKK2JyZWFrcG9pbnQuICBUaGlzIHBvaW50ZXIgaXMg TlVMTCBpZmYgdGhpcyBicF9sb2NhdGlvbiBpcyBubyBcCitsb25nZXIgYXR0 YWNoZWQgdG8gYSBicmVha3BvaW50IChyZWFkLW9ubHkpLiIsCisgICAgTlVM TCB9LAorICB7ICJlbmFibGVkIiwgYnBsb2NweV9nZXRfZW5hYmxlZCwgTlVM TCwKKyAgICAiSXMgdGhpcyBwYXJ0aWN1bGFyIGxvY2F0aW9uIGVuYWJsZWQu IiwgTlVMTCB9LAorICB7ICJhZGRyZXNzIiwgYnBsb2NweV9nZXRfYWRkcmVz cywgTlVMTCwKKyAgICAiVGhlIGFkZHJlc3MgYXQgd2hpY2ggdGhlIGJyZWFr cG9pbnQgaGFzIGJlZW4gc2V0LiIsIE5VTEwgfSwKKyAgeyAiaW5mZXJpb3Ii LCBicGxvY3B5X2dldF9pbmZlcmlvciwgTlVMTCwKKyAgICAiVGhlIGluZmVy aW9yIGluIHdoaWNoIHRoaXMgYnJlYWtwb2ludCBsb2NhdGlvbiBoYXMgYmVl biBzZXQuIiwgTlVMTCB9LAorICB7IE5VTEwgfSAgLyogU2VudGluZWwuICAq LworfTsKKworCitzdGF0aWMgUHlNZXRob2REZWYgYnBsb2Nfb2JqZWN0X21l dGhvZHNbXSA9Cit7CisgIHsgImlzX3ZhbGlkIiwgYnBsb2NweV9pc192YWxp ZCwgTUVUSF9OT0FSR1MsCisgICAgIlJldHVybiB0cnVlIGlmIHRoaXMgYnJl YWtwb2ludCBsb2NhdGlvbiBpcyB2YWxpZCwgZmFsc2UgaWYgbm90LiIgfSwK KyAgeyBOVUxMIH0gLyogU2VudGluZWwuICAqLworfTsKKworc3RhdGljIFB5 VHlwZU9iamVjdCBicGxvY19vYmplY3RfdHlwZSA9Cit7CisgIFB5T2JqZWN0 X0hFQURfSU5JVCAoTlVMTCkKKyAgMCwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiBvYl9zaXplICovCisgICJnZGIuQnBM b2NhdGlvbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFt ZSAqLworICBzaXplb2YgKGJwbG9jX29iamVjdCksICAgICAgICAgICAgICAg ICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAwLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICov CisgIGJwbG9jcHlfZGVhbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogdHBfZGVhbGxvYyAqLworICAwLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgIDAsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBf Z2V0YXR0ciAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJl ICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogdHBfcmVwciAqLworICAwLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAw LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IHRwX2FzX3NlcXVlbmNlICovCisgIDAsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAw LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IHRwX2hhc2ggICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAwLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwor ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIHRwX2dldGF0dHJvICovCisgIDAsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgMCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0 cF9hc19idWZmZXIgKi8KKyAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBG TEFHU19CQVNFVFlQRSwgICAvKiB0cF9mbGFncyAqLworICAiR0RCIGJyZWFr cG9pbnQgbG9jYXRpb24gb2JqZWN0IiwgICAgICAgICAgIC8qIHRwX2RvYyAq LworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIHRwX3RyYXZlcnNlICovCisgIDAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgMCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0 cF9yaWNoY29tcGFyZSAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisg IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogdHBfaXRlciAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgIGJwbG9jX29i amVjdF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0 aG9kcyAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgYnBsb2Nfb2JqZWN0X2dl dHNldCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8K KyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiB0cF9iYXNlICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAwLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2Ny X2dldCAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAwLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZz ZXQgKi8KKyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiB0cF9pbml0ICovCisgIDAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KK307CmRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBiL2dkYi9w eXRob24vcHktYnJlYWtwb2ludC5jCmluZGV4IDExZDYwZmUuLjBmYWU3NDcg MTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHktYnJlYWtwb2ludC5jCisrKyBi L2dkYi9weXRob24vcHktYnJlYWtwb2ludC5jCkBAIC02MjAsNiArNjIwLDQw IEBAIGJwcHlfZ2V0X2lnbm9yZV9jb3VudCAoUHlPYmplY3QgKnNlbGYsIHZv aWQgKmNsb3N1cmUpCiAgIHJldHVybiBQeUludF9Gcm9tTG9uZyAoc2VsZl9i cC0+YnAtPmlnbm9yZV9jb3VudCk7CiB9CiAKKworLyogUHl0aG9uIGZ1bmN0 aW9uIHdoaWNoIHJldHVybnMgdGhlIEJwTG9jYXRpb24gb2JqZWN0cyBhc3Nv Y2lhdGVkCisgICB3aXRoIHRoaXMgYnJlYWtwb2ludC4gICovCisKK3N0YXRp YyBQeU9iamVjdCAqCiticHB5X2xvY2F0aW9ucyAoUHlPYmplY3QgKnNlbGYs IFB5T2JqZWN0ICphcmdzKQoreworICBicmVha3BvaW50X29iamVjdCAqc2Vs Zl9icCA9IChicmVha3BvaW50X29iamVjdCAqKSBzZWxmOworICBQeU9iamVj dCAqbGlzdDsKKyAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7CisgIGludCBl cnI7CisKKyAgQlBQWV9SRVFVSVJFX1ZBTElEIChzZWxmX2JwKTsKKworICBs aXN0ID0gUHlMaXN0X05ldyAoMCk7CisgIGlmICghbGlzdCkKKyAgICByZXR1 cm4gTlVMTDsKKworICBlcnIgPSAwOworICBmb3IgKGxvYyA9IHNlbGZfYnAt PmJwLT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQorICAgIHsKKyAgICAg IFB5T2JqZWN0ICpsb2Nfb2JqID0gIGJwbG9jYXRpb25fdG9fYnBsb2NhdGlv bl9vYmplY3QgKGxvYyk7CisgICAgICBlcnIgPSBQeUxpc3RfQXBwZW5kIChs aXN0LCBsb2Nfb2JqKTsKKyAgICAgIGlmIChlcnIgPT0gLTEpCisgICAgICAg IHsKKyAgICAgICAgICBQeV9ERUNSRUYgKGxpc3QpOworICAgICAgICAgIHJl dHVybiBOVUxMOworICAgICAgICB9CisgICAgICBQeV9ERUNSRUYgKGxvY19v YmopOworICAgIH0KKworICByZXR1cm4gUHlMaXN0X0FzVHVwbGUgKGxpc3Qp OworfQorCiAvKiBQeXRob24gZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IGJy ZWFrcG9pbnQuICAqLwogc3RhdGljIGludAogYnBweV9pbml0IChQeU9iamVj dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBA IC0xMDAzLDYgKzEwMzcsOCBAQCBzdGF0aWMgUHlNZXRob2REZWYgYnJlYWtw b2ludF9vYmplY3RfbWV0aG9kc1tdID0KICAgICAiUmV0dXJuIHRydWUgaWYg dGhpcyBicmVha3BvaW50IGlzIHZhbGlkLCBmYWxzZSBpZiBub3QuIiB9LAog ICB7ICJkZWxldGUiLCBicHB5X2RlbGV0ZV9icmVha3BvaW50LCBNRVRIX05P QVJHUywKICAgICAiRGVsZXRlIHRoZSB1bmRlcmx5aW5nIEdEQiBicmVha3Bv aW50LiIgfSwKKyAgeyAibG9jYXRpb25zIiwgYnBweV9sb2NhdGlvbnMsIE1F VEhfTk9BUkdTLAorICAgICJHZXQgYSBsaXN0IG9mIGdkYi5CcExvY2F0aW9u IG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnJlYWtwb2ludC4iIH0s CiAgIHsgTlVMTCB9IC8qIFNlbnRpbmVsLiAgKi8KIH07CiAKZGlmZiAtLWdp dCBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmggYi9nZGIvcHl0aG9u L3B5dGhvbi1pbnRlcm5hbC5oCmluZGV4IGVmMzlkNWQuLjQ5YmIzMmUgMTAw NjQ0Ci0tLSBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKKysrIGIv Z2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaApAQCAtMTI0LDYgKzEyNCw5 IEBAIGV4dGVybiBQeVR5cGVPYmplY3Qgc3RvcF9ldmVudF9vYmplY3RfdHlw ZTsKIC8qIERlZmluZWQgaW4gcHktYnJlYWtwb2ludC5jICovCiB0eXBlZGVm IHN0cnVjdCBicmVha3BvaW50X29iamVjdCBicmVha3BvaW50X29iamVjdDsK IAorLyogRGVmaW5lZCBpbiBweS1icGxvYy5jICovCit0eXBlZGVmIHN0cnVj dCBicGxvY19vYmplY3QgYnBsb2Nfb2JqZWN0OworCiB0eXBlZGVmIHN0cnVj dAogewogICBQeU9iamVjdF9IRUFECkBAIC0xNzYsNiArMTc5LDggQEAgUHlP YmplY3QgKnBzcHlfZ2V0X3ByaW50ZXJzIChQeU9iamVjdCAqLCB2b2lkICop OwogUHlPYmplY3QgKm9iamZpbGVfdG9fb2JqZmlsZV9vYmplY3QgKHN0cnVj dCBvYmpmaWxlICopOwogUHlPYmplY3QgKm9iamZweV9nZXRfcHJpbnRlcnMg KFB5T2JqZWN0ICosIHZvaWQgKik7CiAKK1B5T2JqZWN0ICpicGxvY2F0aW9u X3RvX2JwbG9jYXRpb25fb2JqZWN0IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxv Yyk7CisKIHRocmVhZF9vYmplY3QgKmNyZWF0ZV90aHJlYWRfb2JqZWN0IChz dHJ1Y3QgdGhyZWFkX2luZm8gKnRwKTsKIHRocmVhZF9vYmplY3QgKmZpbmRf dGhyZWFkX29iamVjdCAocHRpZF90IHB0aWQpOwogUHlPYmplY3QgKmZpbmRf aW5mZXJpb3Jfb2JqZWN0IChpbnQgcGlkKTsKQEAgLTIwMiw2ICsyMDcsNyBA QCB2b2lkIGdkYnB5X2luaXRpYWxpemVfZnVuY3Rpb25zICh2b2lkKTsKIHZv aWQgZ2RicHlfaW5pdGlhbGl6ZV9wc3BhY2UgKHZvaWQpOwogdm9pZCBnZGJw eV9pbml0aWFsaXplX29iamZpbGUgKHZvaWQpOwogdm9pZCBnZGJweV9pbml0 aWFsaXplX2JyZWFrcG9pbnRzICh2b2lkKTsKK3ZvaWQgZ2RicHlfaW5pdGlh bGl6ZV9icGxvY2F0aW9uICh2b2lkKTsKIHZvaWQgZ2RicHlfaW5pdGlhbGl6 ZV9sYXp5X3N0cmluZyAodm9pZCk7CiB2b2lkIGdkYnB5X2luaXRpYWxpemVf cGFyYW1ldGVycyAodm9pZCk7CiB2b2lkIGdkYnB5X2luaXRpYWxpemVfdGhy ZWFkICh2b2lkKTsKZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMg Yi9nZGIvcHl0aG9uL3B5dGhvbi5jCmluZGV4IGIwYjlhOWMuLmRlNmI1MWYg MTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHl0aG9uLmMKKysrIGIvZ2RiL3B5 dGhvbi9weXRob24uYwpAQCAtMTA1OCw2ICsxMDU4LDEyIEBAIGdkYnB5X2Jy ZWFrcG9pbnRfaGFzX3B5X2NvbmQgKHN0cnVjdCBicmVha3BvaW50X29iamVj dCAqYnBfb2JqKQogCQkgICAgInNjcmlwdGluZyBpcyBub3Qgc3VwcG9ydGVk LiIpKTsKIH0KIAordm9pZAorZ2RicHlfYnBsb2NhdGlvbl9mcmVlIChzdHJ1 Y3QgYnJlYWtwb2ludF9vYmplY3QgKmJwX29iaikKK3sKKyAgcmV0dXJuOwor fQorCiAjZW5kaWYgLyogSEFWRV9QWVRIT04gKi8KIAogDApAQCAtMTI0Nyw2 ICsxMjUzLDcgQEAgRW5hYmxlcyBvciBkaXNhYmxlcyBwcmludGluZyBvZiBQ eXRob24gc3RhY2sgdHJhY2VzLiIpLAogICBnZGJweV9pbml0aWFsaXplX3Bz cGFjZSAoKTsKICAgZ2RicHlfaW5pdGlhbGl6ZV9vYmpmaWxlICgpOwogICBn ZGJweV9pbml0aWFsaXplX2JyZWFrcG9pbnRzICgpOworICBnZGJweV9pbml0 aWFsaXplX2JwbG9jYXRpb24gKCk7CiAgIGdkYnB5X2luaXRpYWxpemVfbGF6 eV9zdHJpbmcgKCk7CiAgIGdkYnB5X2luaXRpYWxpemVfdGhyZWFkICgpOwog ICBnZGJweV9pbml0aWFsaXplX2luZmVyaW9yICgpOwpkaWZmIC0tZ2l0IGEv Z2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9weXRob24vcHl0aG9uLmgKaW5k ZXggYWU1NWNjMi4uY2VlOGE2YiAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9w eXRob24uaAorKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCkBAIC00Nyw0ICs0 Nyw2IEBAIGludCBnZGJweV9zaG91bGRfc3RvcCAoc3RydWN0IGJyZWFrcG9p bnRfb2JqZWN0ICpicF9vYmopOwogCiBpbnQgZ2RicHlfYnJlYWtwb2ludF9o YXNfcHlfY29uZCAoc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0ICpicF9vYmop OwogCit2b2lkIGdkYnB5X2JwbG9jYXRpb25fZnJlZSAoc3RydWN0IGJwX2xv Y2F0aW9uICpsb2MpOworCiAjZW5kaWYgLyogR0RCX1BZVEhPTl9IICovCmRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktYnJlYWtw b2ludC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktYnJlYWtw b2ludC5leHAKaW5kZXggZTBkZDA4Ny4uZDk0NmQ3YiAxMDA2NDQKLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWJyZWFrcG9pbnQuZXhwCisr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1icmVha3BvaW50LmV4 cApAQCAtMzAxLDMgKzMwMSw1NSBAQCBnZGJfcHlfdGVzdF9zaWxlbnRfY21k ICAicHl0aG9uIHdwMSA9IHdwX2V2YWwgKFwicmVzdWx0XCIsIHR5cGU9Z2Ri LkJQX1dBVENIUE9JTgogZ2RiX3Rlc3QgImNvbnRpbnVlIiAiLipcW1d3XF1h dGNocG9pbnQuKnJlc3VsdC4qT2xkIHZhbHVlID0uKk5ldyB2YWx1ZSA9IDc4 OC4qIiAiVGVzdCB3YXRjaHBvaW50IHdyaXRlIgogZ2RiX3Rlc3QgInB5dGhv biBwcmludCBuZXZlcl9ldmFsX2JwMS5jb3VudCIgIjAiIFwKICAgICAiQ2hl Y2sgdGhhdCB0aGlzIHVucmVsYXRlZCBicmVha3BvaW50cyBldmFsIGZ1bmN0 aW9uIHdhcyBuZXZlciBjYWxsZWQuIgorCisjIGdkYi5CcExvY2F0aW9uCisK KyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KK2NsZWFuX3Jlc3RhcnQgJHt0 ZXN0ZmlsZX0KKworaWYgIVtydW50b19tYWluXSB0aGVuIHsKKyAgICBmYWls ICJDYW5ub3QgcnVuIHRvIG1haW4uIgorICAgIHJldHVybiAwCit9CitkZWxl dGVfYnJlYWtwb2ludHMKK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGRldGFj aC1vbi1mb3JrIG9mZiIgImRvbid0IGRldGFjaCBvbiBmb3JrIgorZ2RiX3Rl c3QgImNhbGwgZm9yaygpIiAiTmV3IHByb2Nlc3MgLioiICJjcmVhdGUgYSBz ZWNvbmQgaW5mZXJpb3IiCisKK2dkYl9icmVha3BvaW50ICJtYWluIgorZ2Ri X3Rlc3QgInB5IHByaW50IGxlbihnZGIuYnJlYWtwb2ludHMoKSkiICIxIiAi ZW5zdXJlIHRoYXQgdGhyZXJlIGlzIG9ubHkgb25lIEJQIgorZ2RiX3Rlc3Rf bm9fb3V0cHV0IHtweSBicDAgPSBnZGIuYnJlYWtwb2ludHMoKVswXX0gInNh dmUgYnJlYWtwb2ludCAwIgorZ2RiX3Rlc3QgInB5IHByaW50IGxlbihicDAu bG9jYXRpb25zKCkpIiAiMiIgImVuc3VyZSB0aGF0IHRocmVyZSBhcmUgMiBs b2NhdGlvbnMiCisKK2dkYl90ZXN0X25vX291dHB1dCB7cHkgbG9jMCA9IGJw MC5sb2NhdGlvbnMoKVswXX0gInNhdmUgbG9jYXRpb24gMCIKK2dkYl90ZXN0 X25vX291dHB1dCB7cHkgbG9jMSA9IGJwMC5sb2NhdGlvbnMoKVsxXX0gInNh dmUgbG9jYXRpb24gMSIKKworZ2RiX3Rlc3QgInB5IHByaW50IGxvYzAub3du ZXIgPT0gbG9jMS5vd25lciA9PSBicDAiICJUcnVlIiAidmVyaWZ5IG93bmVy c2hpcCIKK2dkYl90ZXN0ICJweSBwcmludCBsb2MwLmFkZHJlc3MgPT0gbG9j MS5hZGRyZXNzICIgIlRydWUiICJ2ZXJpZnkgYWRkcmVzc2VzIGFyZSBpZGVu dGljYWwiCisjIGhvdyB0byBjaGVjayBhZGRyZXNzIGxvY2F0aW9uID8gIT0g YWRkcmVzcyhtYWluKQorCitnZGJfdGVzdCB7cHkgcHJpbnQgbG9jMC5pbmZl cmlvciA9PSBnZGIuaW5mZXJpb3JzKClbMF19ICJUcnVlIiAidmVyaWZ5IGlu ZmVyaW9yIGZvciBsb2MgMCIgI2luZiAyCitnZGJfdGVzdCB7cHkgcHJpbnQg bG9jMS5pbmZlcmlvciA9PSBnZGIuaW5mZXJpb3JzKClbMV19ICJUcnVlIiAi dmVyaWZ5IGluZmVyaW9yIGZvciBsb2MgMSIgI2luZiAxCisKK2dkYl90ZXN0 ICJweSBwcmludCBsb2MwLmVuYWJsZWQgPT0gbG9jMS5lbmFibGVkID09IFRy dWUiICJUcnVlIiAidmVyaWZ5IHRoYXQgbG9jYXRpb25zIGFyZSBlbmFibGVk IgorCitnZGJfdGVzdCAicHkgcHJpbnQgbG9jMC5pbmZlcmlvci5udW0iICIy IiAiZW5zdXJlIHRoYXQgbG9jMCBpcyBvbiBpbmZlcmlvciAyIgorCitnZGJf dGVzdCAiZGV0YWNoIGluZmVyaW9yIDIiICJEZXRhY2hpbmcgZnJvbSBwcm9n cmFtOi4qIiAiZGV0YWNoIGluZmVyaW9yIDIiCitnZGJfdGVzdCAiaW5mZXJp b3IgMSIgIlN3aXRjaGluZyB0byBpbmZlcmlvciAuKiIgInN3aXRjaCB0byBp bmZlcmlvciAxIgorZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJyZW1vdmUtaW5mZXJp b3JzIDIiICJyZW1vdmUgaW5mZXJpb3IgMiIKK2dkYl90ZXN0ICJweSBwcmlu dCBsb2MwLmluZmVyaW9yIiAiTm9uZSIgInJlbW92ZWQgaW5mZXJpb3Igc2V0 IHRvIE5vbmUiCisKK2RlbGV0ZV9icmVha3BvaW50cworZ2RiX3Rlc3QgInB5 IHByaW50IGJwMC5pc192YWxpZCgpIiAiRmFsc2UiICJ2ZXJpZnkgdGhhdCBC UCBoYXMgYmVlbiBpbnZhbGlkYXRlZCIKK2dkYl90ZXN0ICJweSBicDAubG9j YXRpb25zKCkiICIuKlJ1bnRpbWVFcnJvcjogQnJlYWtwb2ludCAuKiBpcyBp bnZhbGlkLioiXAorICAgICAgICAgInZlcmlmeSB0aGF0IGxvY2F0aW9ucyBj YW4ndCBhY2Nlc3NlZCBvbiBhbiBpbnZhbGlkIGJyZWFrcG9pbnQiCisgICAg ICAgICAKK2dkYl90ZXN0ICJweSBwcmludCBsb2MwLmlzX3ZhbGlkKCkiICJG YWxzZSIgInZlcmlmeSB0aGF0IGxvY2F0aW9uIGlzIGludmFsaWQiCitnZGJf dGVzdCAicHkgcHJpbnQgbG9jMC5vd25lciIgIi4qUnVudGltZUVycm9yOiBC cExvY2F0aW9uIGludmFsaWQuKiJcCisgICAgICAgICAidmVyaWZ5IHRoYXQg b3duZXIgY2FuJ3QgYmUgYWNjZXNzZWQiCitnZGJfdGVzdCAicHkgcHJpbnQg bG9jMC5lbmFibGVkIiAiLipSdW50aW1lRXJyb3I6IEJwTG9jYXRpb24gaW52 YWxpZC4qIlwKKyAgICAgICAgICJ2ZXJpZnkgdGhhdCBsb2NhdGlvbiBjYW4n dCBiZSBhY2Nlc3NlZCIKK2dkYl90ZXN0ICJweSBwcmludCBsb2MwLmFkZHJl c3MiICIuKlJ1bnRpbWVFcnJvcjogQnBMb2NhdGlvbiBpbnZhbGlkLioiXAor ICAgICAgICAgInZlcmlmeSB0aGF0IGxvY2F0aW9uIGNhbid0IGJlIGFjY2Vz c2VkIgorZ2RiX3Rlc3QgInB5IHByaW50IGxvYzAuaW5mZXJpb3IiICIuKlJ1 bnRpbWVFcnJvcjogQnBMb2NhdGlvbiBpbnZhbGlkLioiXAorICAgICAgICAg InZlcmlmeSB0aGF0IGluZmVyaW9yIGNhbid0IGJlIGFjY2Vzc2VkIgotLSAK MS43LjYuNAoK --20cf307cfc3691de8e04b391421c--