From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18976 invoked by alias); 3 Apr 2012 10:35:29 -0000 Received: (qmail 18637 invoked by uid 22791); 3 Apr 2012 10:35:28 -0000 X-SWARE-Spam-Status: No, hits=-4.6 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-iy0-f169.google.com (HELO mail-iy0-f169.google.com) (209.85.210.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 03 Apr 2012 10:35:14 +0000 Received: by iajr24 with SMTP id r24so6849413iaj.0 for ; Tue, 03 Apr 2012 03:35:14 -0700 (PDT) Received: by 10.50.149.129 with SMTP id ua1mr8199063igb.43.1333449314010; Tue, 03 Apr 2012 03:35:14 -0700 (PDT) MIME-Version: 1.0 Received: by 10.42.222.194 with HTTP; Tue, 3 Apr 2012 03:34:50 -0700 (PDT) In-Reply-To: <87zkaxn9zf.fsf@fleche.redhat.com> References: <83r4z8eqoa.fsf@gnu.org> <87zkaxn9zf.fsf@fleche.redhat.com> From: Kevin Pouget Date: Tue, 03 Apr 2012 10:35:00 -0000 Message-ID: Subject: Re: [PATCH] Add bp_location to Python interface To: Tom Tromey Cc: gdb-patches@sourceware.org, pmuldoon@redhat.com, Eli Zaretskii Content-Type: multipart/mixed; boundary=e89a8f13ec7eb004d204bcc3dc36 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: 2012-04/txt/msg00028.txt.bz2 --e89a8f13ec7eb004d204bcc3dc36 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 4495 On Fri, Mar 30, 2012 at 9:51 PM, Tom Tromey wrote: > > >>>>> "Kevin" =3D=3D Kevin Pouget writes: > > Kevin> ping > > I'm sorry about the long delay on this. thanks for the follow-up, I've been busy as well and had no time to ping it. > Kevin> =A0free_bp_location (struct bp_location *loc) > [...] > Kevin> + =A0gdbpy_bplocation_free (loc); > > I wonder whether tying these wrapper objects to the bp_location is > really best. > > We do take this approach for many other objects exposed to Python, but > those objects tend to be rather long-lived, and also to some extent > visible across gdb -- as opposed to breakpoint locations, which are > entirely managed by the breakpoint module. > > A different approach would be to instantiate and fill in the location > objects when the 'location' method is called, and give them "copy" > semantics instead. > > I'm not totally convinced either way, and I would like to know what you > think about this. I think it's a good idea, it avoids the confusion of "short life" objects which can't be saved, etc. Now, I state in the documentation that > Breakpoint location > objects represent the state of the breakpoint location at the time the me= thod > @code{Breakpoint.locations} is called, and will not be further updated. which sounds better than the previous version > Kevin> +@findex gdb.locations > Kevin> +@defun gdb.locations () > > The "gdb." here seems incorrect. > This is a method on Breakpoint. changed > Kevin> +Return a tuple containing a sequence of @code{gdb.BpLocation} > objects > > "tuple containing a sequence" sounds weird. =A0I would say just "a > sequence" and not specify that it must be a tuple; it is commonplace in > Python to operate on sequences generically, and we might as well leave > ourselves whatever leeway we reasonably can. changed, the original sentence doesn't really make sense to me, "a tuple containing" was just redundant > Kevin> +@defvar BpLocation.inferior > > Locations are really tied to program spaces, not inferiors. > Offhand it seems to me that we should respect this in the API. I'm not convinced here; actually, I'm not sure to understand the point of the Progspaces class, in its current state at least; and there is no (as far as I've seen) equivalent of "find_inferior_for_program_space" in Py, so one of the key interest of BpLocation would be unavailable ... > Kevin> +bplocpy_breakpoint_deleted (struct breakpoint *b) { > > Wrong brace placement. fixed > Kevin> + =A0tuple =3D PyList_AsTuple (list); > Kevin> + =A0Py_DECREF (list); > > In keeping with the doc change, you could just return the list here, > rather than convert to a tuple. the idea here was that a tuple is not mutable, whereas a list is -- () vs. []. I've removed the tuple, although although I'm not sure when I'm supposed to use the List or the Tuple. > Kevin> +gdb_test "py print len(gdb.breakpoints())" "1" "ensure that threre > is only one BP" > > Typo, "threre". > Also the line should be split, here and elsewhere in the .exp. fixed > Kevin> +# how to check address location ? !=3D address(main) > > It is tricky due to prologues, but you could check the output of "info > symbol" on the address and see that it is "main". I've added a test going this way, but I'm not very happy with the implement= ation > gdb_test "py gdb.execute('info symbol %s' % loc1.address)" "main .* in s= ection \.text.*" "verify location address" because the exact result is "main + 15" ... but I don't know if there is any better way to do it. there's no regression against the current git tree on x86_64/F16 2012-03-04 Kevin Pouget Add bp_location to Python interface * 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. * 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. =09 doc/ Add bp_location to Python interface * gdb.texinfo (Breakpoints In Python): Document gdb.Breakpoint.locations and gdb.BpLocation. testsuite/ Add bp_location to Python interface * gdb.python/py-breakpoint.exp: Test gdb.BpLocation. --e89a8f13ec7eb004d204bcc3dc36 Content-Type: application/octet-stream; name="0001-Add-gdb.BpLocation-to-Python-interface.patch" Content-Disposition: attachment; filename="0001-Add-gdb.BpLocation-to-Python-interface.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h0kt99f30 Content-length: 25466 RnJvbSA5OGI2MzIzMWNjYmY5M2RlODlhOWNiNTk2Y2U5ZWZlZTAxM2VlNTM2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLZXZpbiBQb3VnZXQg PGtldmluLnBvdWdldEBzdC5jb20+CkRhdGU6IFdlZCwgMTggTWF5IDIwMTEg MTA6MDI6MjMgLTA0MDAKU3ViamVjdDogW1BBVENIXSBBZGQgZ2RiLkJwTG9j YXRpb24gdG8gUHl0aG9uIGludGVyZmFjZQoKLS0tCiBnZGIvTWFrZWZpbGUu aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIGdkYi9O RVdTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQg KwogZ2RiL2JyZWFrcG9pbnQuaCAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMSArCiBnZGIvZG9jL2dkYi50ZXhpbmZvICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDM2ICsrKysKIGdkYi9weXRob24vcHktYnBsb2MuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAyNDYgKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogZ2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMgICAgICAg ICAgICAgICAgIHwgICAzNiArKysrCiBnZGIvcHl0aG9uL3B5dGhvbi1pbnRl cm5hbC5oICAgICAgICAgICAgICAgfCAgICA2ICsKIGdkYi9weXRob24vcHl0 aG9uLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LWJyZWFrcG9pbnQuZXhwIHwgICA1NCAr KysrKysKIDkgZmlsZXMgY2hhbmdlZCwgMzkwIGluc2VydGlvbnMoKyksIDAg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3B5dGhvbi9w eS1icGxvYy5jCgpkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2Ri L01ha2VmaWxlLmluCmluZGV4IDQ0ZDc2ZjIuLjc4NGRjNzYgMTAwNjQ0Ci0t LSBhL2dkYi9NYWtlZmlsZS5pbgorKysgYi9nZGIvTWFrZWZpbGUuaW4KQEAg LTI2OSw2ICsyNjksNyBAQCBTVUJESVJfUFlUSE9OX09CUyA9IFwKIAlweS1h dXRvLWxvYWQubyBcCiAJcHktYmxvY2subyBcCiAJcHktYnBldmVudC5vIFwK KwlweS1icGxvYy5vIFwKIAlweS1icmVha3BvaW50Lm8gXAogCXB5LWNtZC5v IFwKIAlweS1jb250aW51ZWV2ZW50Lm8gXApAQCAtMzAxLDYgKzMwMiw3IEBA IFNVQkRJUl9QWVRIT05fU1JDUyA9IFwKIAlweXRob24vcHktYXV0by1sb2Fk LmMgXAogCXB5dGhvbi9weS1ibG9jay5jIFwKIAlweXRob24vcHktYnBldmVu dC5jIFwKKwlweXRob24vcHktYnBsb2MuYyBcCiAJcHl0aG9uL3B5LWJyZWFr cG9pbnQuYyBcCiAJcHl0aG9uL3B5LWNtZC5jIFwKIAlweXRob24vcHktY29u dGludWVldmVudC5jIFwKQEAgLTIwMzcsNiArMjAzOSwxMCBAQCBweS1icGV2 ZW50Lm86ICQoc3JjZGlyKS9weXRob24vcHktYnBldmVudC5jCiAJJChDT01Q SUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktYnBl dmVudC5jCiAJJChQT1NUQ09NUElMRSkKIAorcHktYnBsb2MubzogJChzcmNk aXIpL3B5dGhvbi9weS1icGxvYy5jCisJJChDT01QSUxFKSAkKFBZVEhPTl9D RkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktYnBsb2MuYworCSQoUE9TVENP TVBJTEUpCisKIHB5LWJyZWFrcG9pbnQubzogJChzcmNkaXIpL3B5dGhvbi9w eS1icmVha3BvaW50LmMKIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykg JChzcmNkaXIpL3B5dGhvbi9weS1icmVha3BvaW50LmMKIAkkKFBPU1RDT01Q SUxFKQpkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUwppbmRleCA1 ODg1ZDMyLi5mMjQ0OTllIDEwMDY0NAotLS0gYS9nZGIvTkVXUworKysgYi9n ZGIvTkVXUwpAQCAtMzIsNiArMzIsMTAgQEAKICAgKiogQSBuZXcgbWV0aG9k ICdyZWZlcmVuY2VkX3ZhbHVlJyBvbiBnZGIuVmFsdWUgb2JqZWN0cyB3aGlj aCBjYW4KICAgICAgZGVyZWZlcmVuY2UgcG9pbnRlciBhcyB3ZWxsIGFzIEMr KyByZWZlcmVuY2UgdmFsdWVzLgogCisgICoqIEEgbmV3IG1ldGhvZCAiZ2Ri LkJyZWFrcG9pbnQubG9jYXRpb25zIiBoYXMgYmVlbiBhZGRlZCwgYXMgd2Vs bCBhcworICAgICB0aGUgY2xhc3MgZ2RiLkJwTG9jYXRpb24gdG8gcHJvdmlk ZSBmdXJ0aGVyIGRldGFpbHMgYWJvdXQgYnJlYWtwb2ludAorICAgICBsb2Nh dGlvbnMuCisKICogR0RCc2VydmVyIG5vdyBzdXBwb3J0cyBzdGRpbyBjb25u ZWN0aW9ucy4KICAgRS5nLiAoZ2RiKSB0YXJnZXQgcmVtb3RlIHwgc3NoIG15 aG9zdCBnZGJzZXJ2ZXIgLSBoZWxsbwogCmRpZmYgLS1naXQgYS9nZGIvYnJl YWtwb2ludC5oIGIvZ2RiL2JyZWFrcG9pbnQuaAppbmRleCBlMGVlZWFhLi4x MWU1Y2VlIDEwMDY0NAotLS0gYS9nZGIvYnJlYWtwb2ludC5oCisrKyBiL2dk Yi9icmVha3BvaW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKIHN0cnVjdCB2YWx1 ZTsKIHN0cnVjdCBibG9jazsKIHN0cnVjdCBicmVha3BvaW50X29iamVjdDsK K3N0cnVjdCBicGxvY19vYmplY3Q7CiBzdHJ1Y3QgZ2V0X251bWJlcl9vcl9y YW5nZV9zdGF0ZTsKIHN0cnVjdCB0aHJlYWRfaW5mbzsKIHN0cnVjdCBicHN0 YXRzOwpkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9k b2MvZ2RiLnRleGluZm8KaW5kZXggODAwMjQyOS4uOTFjMWUyYyAxMDA2NDQK LS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysgYi9nZGIvZG9jL2dkYi50 ZXhpbmZvCkBAIC0yNDYwMSw2ICsyNDYwMSw0MiBAQCBjb21tYW5kcywgc2Vw YXJhdGVkIGJ5IG5ld2xpbmVzLiAgSWYgdGhlcmUgYXJlIG5vIGNvbW1hbmRz LCB0aGlzCiBhdHRyaWJ1dGUgaXMgQGNvZGV7Tm9uZX0uICBUaGlzIGF0dHJp YnV0ZSBpcyBub3Qgd3JpdGFibGUuCiBAZW5kIGRlZnZhcgogCitAZmluZGV4 IEJyZWFrcG9pbnQubG9jYXRpb25zCitAZGVmdW4gQnJlYWtwb2ludC5sb2Nh dGlvbnMgKCkKK1JldHVybiBhIHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIEBj b2Rle2dkYi5CcExvY2F0aW9ufSBvYmplY3RzIAorKHNlZSBiZWxvdykgYXNz b2NpYXRlZCB3aXRoIHRoaXMgYnJlYWtwb2ludC4gIEEgYnJlYWtwb2ludCB3 aXRoIG5vIGxvY2F0aW9uCitpcyBhIHBlbmRpbmcgYnJlYWtwb2ludCAoQHB4 cmVme1NldCBCcmVha3MsICwgcGVuZGluZyBicmVha3BvaW50c30pLgorQGVu ZCBkZWZ1bgorCitBIGJyZWFrcG9pbnQgbG9jYXRpb24gaXMgcmVwcmVzZW50 ZWQgYnkgYSBAY29kZXtnZGIuQnBMb2NhdGlvbn0gb2JqZWN0LAord2hpY2gg b2ZmZXJzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyAoYWxsIHJlYWQgb25s eSkuIEJyZWFrcG9pbnQgbG9jYXRpb24gCitvYmplY3RzIHJlcHJlc2VudCB0 aGUgc3RhdGUgb2YgdGhlIGJyZWFrcG9pbnQgbG9jYXRpb24gYXQgdGhlIHRp bWUgdGhlIG1ldGhvZAorQGNvZGV7QnJlYWtwb2ludC5sb2NhdGlvbnN9IGlz IGNhbGxlZCwgYW5kIHdpbGwgbm90IGJlIGZ1cnRoZXIgdXBkYXRlZC4KKwor QGRlZnZhciBCcExvY2F0aW9uLm93bmVyCitUaGlzIGF0dHJpYnV0ZSBob2xk cyBhIHJlZmVyZW5jZSB0byB0aGUgQGNvZGV7Z2RiLkJyZWFrcG9pbnR9IG9i amVjdCB3aGljaAorb3ducyB0aGlzIGxvY2F0aW9uLiAgVGhpcyBhdHRyaWJ1 dGUgaXMgbm90IHdyaXRhYmxlLiAgRnJvbSBhbiBpbXBsZW1lbnRhdGlvbiAK K3BvaW50IG9mIHZpZXcsIHRoZXJlIGlzIGEgb25lLXRvLW1hbnkgcmVsYXRp b24gYmV0d2VlbiBhIGJyZWFrcG9pbnQgYW5kCitpdHMgbG9jYXRpb25zLCBl dmVuIGlmIHR3byBicmVha3BvaW50cyBhcmUgc2V0IGF0IHNhbWUgYWRkcmVz cy4KK0BlbmQgZGVmdmFyCisKK0BkZWZ2YXIgQnBMb2NhdGlvbi5lbmFibGVk CitUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIGxvY2F0 aW9uIGlzIGN1cnJlbnRseSBlbmFibGVkIG9yIG5vdC4KK1RoaXMgYXR0cmli dXRlIGlzIG5vdCB3cml0YWJsZS4KK0BlbmQgZGVmdmFyCisKK0BkZWZ2YXIg QnBMb2NhdGlvbi5pbmZlcmlvcgorVGhpcyBhdHRyaWJ1dGUgaG9sZHMgYSBy ZWZlcmVuY2UgdG8gdGhlIEBjb2Rle2dkYi5JbmZlcmlvcn0gb2JqZWN0Citp biB3aGljaCB0aGlzIGJyZWFrcG9pbnQgbG9jYXRpb24gaGFzIGJlZW4gaW5z ZXJ0ZWQuICBUaGUgdmFsdWUgd2lsbCBiZSAKK0Bjb2Rle05vbmV9IGlmIHRo ZXJlIGlzIG5vIGluZmVyaW9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGxvY2F0 aW9uLiAgIFRoaXMgCithdHRyaWJ1dGUgaXMgbm90IHdyaXRhYmxlLgorQGVu ZCBkZWZ2YXIKKworQGRlZnZhciBCcExvY2F0aW9uLmFkZHJlc3MKK1RoaXMg YXR0cmlidXRlIGhvbGRzIGEgQGNvZGV7Z2RiLlZhbHVlfSBvYmplY3QgY29y cmVzcG9uZGluZyB0byB0aGUgYWRkcmVzcyAKK2F0IHdoaWNoIHRoZSBicmVh a3BvaW50IGhhcyBiZWVuIGluc2VydGVkLiAgIFRoaXMgYXR0cmlidXRlIGlz IG5vdCB3cml0YWJsZS4KK0BlbmQgZGVmdmFyCisKIEBub2RlIEZpbmlzaCBC cmVha3BvaW50cyBpbiBQeXRob24KIEBzdWJzdWJzZWN0aW9uIEZpbmlzaCBC cmVha3BvaW50cwogCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWJwbG9j LmMgYi9nZGIvcHl0aG9uL3B5LWJwbG9jLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZmRmNWIwNQotLS0gL2Rldi9udWxsCisrKyBi L2dkYi9weXRob24vcHktYnBsb2MuYwpAQCAtMCwwICsxLDI0NiBAQAorLyog UHl0aG9uIGludGVyZmFjZSB0byBicmVha3BvaW50IGxvY2F0aW9ucy4KKwor ICAgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKworI2luY2x1ZGUgImRlZnMu aCIKKyNpbmNsdWRlICJpbmZlcmlvci5oIgorI2luY2x1ZGUgInB5dGhvbi1p bnRlcm5hbC5oIgorI2luY2x1ZGUgIm9ic2VydmVyLmgiCisjaW5jbHVkZSAi Z2RiYXJjaC5oIgorCitzdHJ1Y3QgYnBsb2Nfb2JqZWN0Cit7CisgIFB5T2Jq ZWN0X0hFQUQKKworICBQeU9iamVjdCAqaW5mZXJpb3I7CisgIFB5T2JqZWN0 ICpvd25lcjsKKyAgaW50IGVuYWJsZWQ7CisgIFB5T2JqZWN0ICphZGRyOwor fTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBicGxvY19vYmplY3RfdHlwZTsK KworLyogRGlzc29jaWF0ZSB0aGUgYnBfbG9jYXRpb24gZnJvbSB0aGUgUHl0 aG9uIG9iamVjdC4gICovCisKK3N0YXRpYyB2b2lkCiticGxvY3B5X2RlYWxs b2MgKFB5T2JqZWN0ICpzZWxmKQoreworICBicGxvY19vYmplY3QgKnNlbGZf YnBsb2MgPSAoYnBsb2Nfb2JqZWN0ICopIHNlbGY7CisKKyAgUHlfREVDUkVG IChzZWxmX2JwbG9jLT5pbmZlcmlvcik7CisgIFB5X0RFQ1JFRiAoc2VsZl9i cGxvYy0+b3duZXIpOworICBQeV9ERUNSRUYgKHNlbGZfYnBsb2MtPmFkZHIp OworCisgIHNlbGYtPm9iX3R5cGUtPnRwX2ZyZWUgKHNlbGYpOworfQorCisv KiBSZXR1cm5zIGEgYnBfbG9jYXRpb24gb2JqZWN0IChnZGIuQnBMb2NhdGlv bikgaG9sZGluZyB0aGUgaW5mb3JtYXRpb24gb2YKKyAgIExPQyBmcm9tIEdE Qiwgb3IgTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUsIHdpdGggYSBQeXRob24g ZXhjZXB0aW9uIHNldC4gICovCisKK1B5T2JqZWN0ICoKK2JwbG9jYXRpb25f dG9fYnBsb2NhdGlvbl9vYmplY3QgKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9j KQoreworICBicGxvY19vYmplY3QgKmJwbG9jX29iajsKKyAgc3RydWN0IGlu ZmVyaW9yICppbmZlcmlvcjsKKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNl cHRpb24gZXhjZXB0OworICBzdHJ1Y3QgdmFsdWUgKmFkZHIgPSBOVUxMOyAv KiBJbml0aWFsaXplIHRvIGFwcGVhc2UgZ2NjIHdhcm5pbmcuICAqLworCisg IGJwbG9jX29iaiA9IFB5T2JqZWN0X05ldyAoYnBsb2Nfb2JqZWN0LCAmYnBs b2Nfb2JqZWN0X3R5cGUpOworICBpZiAoIWJwbG9jX29iaikKKyAgICByZXR1 cm4gTlVMTDsKKworICBicGxvY19vYmotPmVuYWJsZWQgPSBsb2MtPmVuYWJs ZWQ7CisKKyAgaW5mZXJpb3IgPSBmaW5kX2luZmVyaW9yX2Zvcl9wcm9ncmFt X3NwYWNlIChsb2MtPnBzcGFjZSk7CisgIGlmIChpbmZlcmlvcikKKyAgICBi cGxvY19vYmotPmluZmVyaW9yID0gaW5mZXJpb3JfdG9faW5mZXJpb3Jfb2Jq ZWN0IChpbmZlcmlvcik7CisgIGVsc2UKKyAgICBicGxvY19vYmotPmluZmVy aW9yID0gUHlfTm9uZTsKKworICBpZiAoIWJwbG9jX29iai0+aW5mZXJpb3Ip CisgICAgICByZXR1cm4gTlVMTDsKKyAgUHlfSU5DUkVGIChicGxvY19vYmot PmluZmVyaW9yKTsKKworICAvKiBDYW5ub3QgZmFpbCwgdHJpZ2dlcmVkIGZy b20gQnJlYWtwb2ludC5sb2NhdGlvbnMuICAqLworICBpZiAobG9jLT5vd25l ciAmJiBsb2MtPm93bmVyLT5weV9icF9vYmplY3QpCisgICAgYnBsb2Nfb2Jq LT5vd25lciA9IChQeU9iamVjdCAqKSBsb2MtPm93bmVyLT5weV9icF9vYmpl Y3Q7CisgIGVsc2UKKyAgICBicGxvY19vYmotPm93bmVyID0gUHlfTm9uZTsK KyAgUHlfSU5DUkVGIChicGxvY19vYmotPm93bmVyKTsKKworICAvKiBHZXQg dGhlIGFkZHJlc3MgVmFsdWUgb2JqZWN0LiAgKi8KKyAgVFJZX0NBVENIIChl eGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKKyAgICB7CisgICAgICBzdHJ1Y3Qg dHlwZSAqdmFsX3R5cGUgPSBOVUxMOyAvKiBJbml0aWFsaXplIHRvIGFwcGVh c2UgZ2NjIHdhcm5pbmcuICAqLworCisgICAgICBpZiAoaXNfd2F0Y2hwb2lu dCAobG9jLT5vd25lcikpCisgICAgICAgIHsKKyAgICAgICAgICBzdHJ1Y3Qg d2F0Y2hwb2ludCAqd3AgPSAoc3RydWN0IHdhdGNocG9pbnQgKikgbG9jLT5v d25lcjsKKworICAgICAgICAgIGlmICh3cC0+dmFsKQorICAgICAgICAgICAg dmFsX3R5cGUgPSB2YWx1ZV90eXBlICh3cC0+dmFsKTsKKyAgICAgICAgfQor CisgICAgICBpZiAoIXZhbF90eXBlKQorICAgICAgICB2YWxfdHlwZSA9IGJ1 aWx0aW5fdHlwZSAocHl0aG9uX2dkYmFyY2gpLT5idWlsdGluX3ZvaWQ7CisK KyAgICAgIGFkZHIgPSB2YWx1ZV9mcm9tX3BvaW50ZXIgKGxvb2t1cF9wb2lu dGVyX3R5cGUgKHZhbF90eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbG9jLT5hZGRyZXNzKTsKKyAgICB9CisgIGlmIChleGNlcHQu cmVhc29uIDwgMCkKKyAgICB7CisgICAgICBnZGJweV9jb252ZXJ0X2V4Y2Vw dGlvbiAoZXhjZXB0KTsKKyAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAg YnBsb2Nfb2JqLT5hZGRyID0gdmFsdWVfdG9fdmFsdWVfb2JqZWN0IChhZGRy KTsKKyAgaWYgKCFicGxvY19vYmotPmFkZHIpCisgICAgZ290byBmYWlsOwor CisgIFB5X0lOQ1JFRiAoYnBsb2Nfb2JqLT5hZGRyKTsKKworICByZXR1cm4g KFB5T2JqZWN0ICopIGJwbG9jX29iajsKKworZmFpbDoKKyAgUHlfWERFQ1JF RiAoYnBsb2Nfb2JqLT5pbmZlcmlvcik7CisgIFB5X1hERUNSRUYgKGJwbG9j X29iai0+b3duZXIpOworICByZXR1cm4gTlVMTDsKK30KKworLyogUHl0aG9u IGZ1bmN0aW9uIHRvIGdldCB0aGUgQlAgb3duaW5nIHRoaXMgbG9jYXRpb24u ICAqLworCitzdGF0aWMgUHlPYmplY3QgKgorYnBsb2NweV9nZXRfb3duZXIg KFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICBicGxvY19v YmplY3QgKnNlbGZfYnBsb2MgPSAoYnBsb2Nfb2JqZWN0ICopIHNlbGY7CisK KyAgUHlfSU5DUkVGIChzZWxmX2JwbG9jLT5vd25lcik7CisKKyAgcmV0dXJu IHNlbGZfYnBsb2MtPm93bmVyOworfQorCisvKiBQeXRob24gZnVuY3Rpb24g dG8gdGVzdCB3aGV0aGVyIG9yIG5vdCB0aGlzIGJyZWFrcG9pbnQgbG9jYXRp b24gaXMKKyAgIGVuYWJsZWQuICAqLworCitzdGF0aWMgUHlPYmplY3QgKgor YnBsb2NweV9nZXRfZW5hYmxlZCAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNs b3N1cmUpCit7CisgIGJwbG9jX29iamVjdCAqc2VsZl9icGxvYyA9IChicGxv Y19vYmplY3QgKikgc2VsZjsKKworICBpZiAoc2VsZl9icGxvYy0+ZW5hYmxl ZCkKKyAgICBQeV9SRVRVUk5fVFJVRTsKKyAgZWxzZQorICAgIFB5X1JFVFVS Tl9GQUxTRTsKK30KKworLyogUHl0aG9uIGZ1bmN0aW9uIHRvIGdldCB0aGUg YWRkcmVzcyBvZiB0aGlzIGJyZWFrcG9pbnQgbG9jYXRpb24uICBUaGUKKyAg IGdkYi5WYWx1ZSBvYmplY3Qgd2lsbCBiZSBjYWNoZWQgaWYgdGhpcyBpcyB0 aGUgZmlyc3QgYWNjZXNzLiAgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2Jw bG9jcHlfZ2V0X2FkZHJlc3MgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9z dXJlKQoreworICBicGxvY19vYmplY3QgKnNlbGZfYnBsb2MgPSAoYnBsb2Nf b2JqZWN0ICopIHNlbGY7CisKKyAgUHlfSU5DUkVGIChzZWxmX2JwbG9jLT5h ZGRyKTsKKworICByZXR1cm4gc2VsZl9icGxvYy0+YWRkcjsKK30KKworLyog UHl0aG9uIGZ1bmN0aW9uIHRvIGdldCB0aGUgaW5mZXJpb3IgaG9zdGluZyB0 aGlzIGJyZWFrcG9pbnQgbG9jYXRpb24uCisgICBSZXR1cm4gUHlfTm9uZSBp ZiB0aGVyZSBpcyBubyBpbmZlcmlvciBhc3NvY2lhdGVkIHdpdGggdGhlIHBy b2dyYW0gc3BhY2Ugb2YKKyAgIHRoaXMgbG9jYXRpb24uICAqLworCitzdGF0 aWMgUHlPYmplY3QgKgorYnBsb2NweV9nZXRfaW5mZXJpb3IgKFB5T2JqZWN0 ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICBicGxvY19vYmplY3QgKnNl bGZfYnBsb2MgPSAoYnBsb2Nfb2JqZWN0ICopIHNlbGY7CisKKyAgUHlfSU5D UkVGIChzZWxmX2JwbG9jLT5pbmZlcmlvcik7CisKKyAgcmV0dXJuIHNlbGZf YnBsb2MtPmluZmVyaW9yOworfQorCisvKiBJbml0aWFsaXplIHRoZSBQeXRo b24gYnBfbG9jYXRpb24gY29kZS4gICovCisKK3ZvaWQKK2dkYnB5X2luaXRp YWxpemVfYnBsb2NhdGlvbiAodm9pZCkKK3sKKyAgaWYgKFB5VHlwZV9SZWFk eSAoJmJwbG9jX29iamVjdF90eXBlKSA8IDApCisgICAgcmV0dXJuOworCisg IFB5X0lOQ1JFRiAoJmJwbG9jX29iamVjdF90eXBlKTsKKyAgUHlNb2R1bGVf QWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiQnBMb2NhdGlvbiIsIChQeU9iamVj dCAqKSAmYnBsb2Nfb2JqZWN0X3R5cGUpOworfQorCitzdGF0aWMgUHlHZXRT ZXREZWYgYnBsb2Nfb2JqZWN0X2dldHNldFtdID0KK3sKKyAgeyAib3duZXIi LCBicGxvY3B5X2dldF9vd25lciwgTlVMTCwKKyAgICAiRWFjaCBicmVha3Bv aW50IGxvY2F0aW9uIG11c3QgYmVsb25nIHRvIGV4YWN0bHkgb25lIGhpZ2hl ci1sZXZlbCBcCiticmVha3BvaW50LiIsCisgICAgTlVMTCB9LAorICB7ICJl bmFibGVkIiwgYnBsb2NweV9nZXRfZW5hYmxlZCwgTlVMTCwKKyAgICAiSXMg dGhpcyBwYXJ0aWN1bGFyIGxvY2F0aW9uIGVuYWJsZWQuIiwgTlVMTCB9LAor ICB7ICJhZGRyZXNzIiwgYnBsb2NweV9nZXRfYWRkcmVzcywgTlVMTCwKKyAg ICAiVGhlIGFkZHJlc3MgYXQgd2hpY2ggdGhlIGJyZWFrcG9pbnQgaGFzIGJl ZW4gc2V0LiIsIE5VTEwgfSwKKyAgeyAiaW5mZXJpb3IiLCBicGxvY3B5X2dl dF9pbmZlcmlvciwgTlVMTCwKKyAgICAiVGhlIGluZmVyaW9yIGluIHdoaWNo IHRoaXMgYnJlYWtwb2ludCBsb2NhdGlvbiBoYXMgYmVlbiBzZXQuIiwgTlVM TCB9LAorICB7IE5VTEwgfSAgLyogU2VudGluZWwuICAqLworfTsKKworc3Rh dGljIFB5VHlwZU9iamVjdCBicGxvY19vYmplY3RfdHlwZSA9Cit7CisgIFB5 T2JqZWN0X0hFQURfSU5JVCAoTlVMTCkKKyAgMCwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvYl9zaXplICovCisgICJn ZGIuQnBMb2NhdGlvbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog dHBfbmFtZSAqLworICBzaXplb2YgKGJwbG9jX29iamVjdCksICAgICAgICAg ICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAwLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1z aXplICovCisgIGJwbG9jcHlfZGVhbGxvYywgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAwLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisg IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogdHBfZ2V0YXR0ciAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgMCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9j b21wYXJlICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAwLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAq LworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgIDAsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAq LworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIHRwX2hhc2ggICovCisgIDAsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAwLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0 ciAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgIDAsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8K KyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiB0cF9hc19idWZmZXIgKi8KKyAgUHlfVFBGTEFHU19ERUZBVUxUIHwg UHlfVFBGTEFHU19CQVNFVFlQRSwgICAvKiB0cF9mbGFncyAqLworICAiR0RC IGJyZWFrcG9pbnQgbG9jYXRpb24gb2JqZWN0IiwgICAgICAgICAgIC8qIHRw X2RvYyAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgIDAsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8K KyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAwLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0 ICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogdHBfaXRlciAqLworICAwLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgIDAs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog dHBfbWV0aG9kcyAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgYnBsb2Nfb2Jq ZWN0X2dldHNldCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRz ZXQgKi8KKyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiB0cF9iYXNlICovCisgIDAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAwLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw X2Rlc2NyX2dldCAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAwLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rp Y3RvZmZzZXQgKi8KKyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgIDAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8K K307CmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBi L2dkYi9weXRob24vcHktYnJlYWtwb2ludC5jCmluZGV4IGIyYzYyNWYuLjNk YTU3MDMgMTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHktYnJlYWtwb2ludC5j CisrKyBiL2dkYi9weXRob24vcHktYnJlYWtwb2ludC5jCkBAIC01ODUsNiAr NTg1LDQwIEBAIGJwcHlfZ2V0X2lnbm9yZV9jb3VudCAoUHlPYmplY3QgKnNl bGYsIHZvaWQgKmNsb3N1cmUpCiAgIHJldHVybiBQeUludF9Gcm9tTG9uZyAo c2VsZl9icC0+YnAtPmlnbm9yZV9jb3VudCk7CiB9CiAKKworLyogUHl0aG9u IGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgdGhlIEJwTG9jYXRpb24gb2JqZWN0 cyBhc3NvY2lhdGVkCisgICB3aXRoIHRoaXMgYnJlYWtwb2ludC4gICovCisK K3N0YXRpYyBQeU9iamVjdCAqCiticHB5X2xvY2F0aW9ucyAoUHlPYmplY3Qg KnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICBicmVha3BvaW50X29iamVj dCAqc2VsZl9icCA9IChicmVha3BvaW50X29iamVjdCAqKSBzZWxmOworICBQ eU9iamVjdCAqbGlzdDsKKyAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7Cisg IGludCBlcnI7CisKKyAgQlBQWV9SRVFVSVJFX1ZBTElEIChzZWxmX2JwKTsK KworICBsaXN0ID0gUHlMaXN0X05ldyAoMCk7CisgIGlmICghbGlzdCkKKyAg ICByZXR1cm4gTlVMTDsKKworICBlcnIgPSAwOworICBmb3IgKGxvYyA9IHNl bGZfYnAtPmJwLT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQorICAgIHsK KyAgICAgIFB5T2JqZWN0ICpsb2Nfb2JqID0gIGJwbG9jYXRpb25fdG9fYnBs b2NhdGlvbl9vYmplY3QgKGxvYyk7CisgICAgICBlcnIgPSBQeUxpc3RfQXBw ZW5kIChsaXN0LCBsb2Nfb2JqKTsKKyAgICAgIGlmIChlcnIgPT0gLTEpCisg ICAgICAgIHsKKyAgICAgICAgICBQeV9ERUNSRUYgKGxpc3QpOworICAgICAg ICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICBQeV9ERUNSRUYg KGxvY19vYmopOworICAgIH0KKworICByZXR1cm4gbGlzdDsKK30KKwogLyog UHl0aG9uIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBicmVha3BvaW50LiAg Ki8KIHN0YXRpYyBpbnQKIGJwcHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtOTc2LDYgKzEw MTAsOCBAQCBzdGF0aWMgUHlNZXRob2REZWYgYnJlYWtwb2ludF9vYmplY3Rf bWV0aG9kc1tdID0KICAgICAiUmV0dXJuIHRydWUgaWYgdGhpcyBicmVha3Bv aW50IGlzIHZhbGlkLCBmYWxzZSBpZiBub3QuIiB9LAogICB7ICJkZWxldGUi LCBicHB5X2RlbGV0ZV9icmVha3BvaW50LCBNRVRIX05PQVJHUywKICAgICAi RGVsZXRlIHRoZSB1bmRlcmx5aW5nIEdEQiBicmVha3BvaW50LiIgfSwKKyAg eyAibG9jYXRpb25zIiwgYnBweV9sb2NhdGlvbnMsIE1FVEhfTk9BUkdTLAor ICAgICJHZXQgYSBsaXN0IG9mIGdkYi5CcExvY2F0aW9uIG9iamVjdHMgYXNz b2NpYXRlZCB3aXRoIHRoaXMgYnJlYWtwb2ludC4iIH0sCiAgIHsgTlVMTCB9 IC8qIFNlbnRpbmVsLiAgKi8KIH07CiAKZGlmZiAtLWdpdCBhL2dkYi9weXRo b24vcHl0aG9uLWludGVybmFsLmggYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRl cm5hbC5oCmluZGV4IGJhZTYxYzIuLmU4NTJiY2UgMTAwNjQ0Ci0tLSBhL2dk Yi9weXRob24vcHl0aG9uLWludGVybmFsLmgKKysrIGIvZ2RiL3B5dGhvbi9w eXRob24taW50ZXJuYWwuaApAQCAtMTY2LDYgKzE2Niw5IEBAIHR5cGVkZWYg c3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0CiBleHRlcm4gYnJlYWtwb2ludF9v YmplY3QgKmJwcHlfcGVuZGluZ19vYmplY3Q7CiAKIAorLyogRGVmaW5lZCBp biBweS1icGxvYy5jICovCit0eXBlZGVmIHN0cnVjdCBicGxvY19vYmplY3Qg YnBsb2Nfb2JqZWN0OworCiB0eXBlZGVmIHN0cnVjdAogewogICBQeU9iamVj dF9IRUFECkBAIC0yMTgsNiArMjIxLDggQEAgUHlPYmplY3QgKnBzcHlfZ2V0 X3ByaW50ZXJzIChQeU9iamVjdCAqLCB2b2lkICopOwogUHlPYmplY3QgKm9i amZpbGVfdG9fb2JqZmlsZV9vYmplY3QgKHN0cnVjdCBvYmpmaWxlICopOwog UHlPYmplY3QgKm9iamZweV9nZXRfcHJpbnRlcnMgKFB5T2JqZWN0ICosIHZv aWQgKik7CiAKK1B5T2JqZWN0ICpicGxvY2F0aW9uX3RvX2JwbG9jYXRpb25f b2JqZWN0IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYyk7CisKIHRocmVhZF9v YmplY3QgKmNyZWF0ZV90aHJlYWRfb2JqZWN0IChzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRwKTsKIHRocmVhZF9vYmplY3QgKmZpbmRfdGhyZWFkX29iamVjdCAo cHRpZF90IHB0aWQpOwogUHlPYmplY3QgKmZpbmRfaW5mZXJpb3Jfb2JqZWN0 IChpbnQgcGlkKTsKQEAgLTI0Niw2ICsyNTEsNyBAQCB2b2lkIGdkYnB5X2lu aXRpYWxpemVfcHNwYWNlICh2b2lkKTsKIHZvaWQgZ2RicHlfaW5pdGlhbGl6 ZV9vYmpmaWxlICh2b2lkKTsKIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9icmVh a3BvaW50cyAodm9pZCk7CiB2b2lkIGdkYnB5X2luaXRpYWxpemVfZmluaXNo YnJlYWtwb2ludHMgKHZvaWQpOwordm9pZCBnZGJweV9pbml0aWFsaXplX2Jw bG9jYXRpb24gKHZvaWQpOwogdm9pZCBnZGJweV9pbml0aWFsaXplX2xhenlf c3RyaW5nICh2b2lkKTsKIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9wYXJhbWV0 ZXJzICh2b2lkKTsKIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV90aHJlYWQgKHZv aWQpOwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uYyBiL2dkYi9w eXRob24vcHl0aG9uLmMKaW5kZXggOTM4Mjc1YS4uZGY5ZGVlZSAxMDA2NDQK LS0tIGEvZ2RiL3B5dGhvbi9weXRob24uYworKysgYi9nZGIvcHl0aG9uL3B5 dGhvbi5jCkBAIC0xMjU3LDYgKzEyNTcsNyBAQCBtZXNzYWdlID09IGFuIGVy cm9yIG1lc3NhZ2Ugd2l0aG91dCBhIHN0YWNrIHdpbGwgYmUgcHJpbnRlZC4i KSwKICAgZ2RicHlfaW5pdGlhbGl6ZV9vYmpmaWxlICgpOwogICBnZGJweV9p bml0aWFsaXplX2JyZWFrcG9pbnRzICgpOwogICBnZGJweV9pbml0aWFsaXpl X2ZpbmlzaGJyZWFrcG9pbnRzICgpOworICBnZGJweV9pbml0aWFsaXplX2Jw bG9jYXRpb24gKCk7CiAgIGdkYnB5X2luaXRpYWxpemVfbGF6eV9zdHJpbmcg KCk7CiAgIGdkYnB5X2luaXRpYWxpemVfdGhyZWFkICgpOwogICBnZGJweV9p bml0aWFsaXplX2luZmVyaW9yICgpOwpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LWJyZWFrcG9pbnQuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LWJyZWFrcG9pbnQuZXhwCmluZGV4IGYzZDQw OWUuLmY2NzQ0ZTUgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1icmVha3BvaW50LmV4cAorKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktYnJlYWtwb2ludC5leHAKQEAgLTE3OCw2ICsxNzgsMTUg QEAgaWYgIVtydW50b19tYWluXSB0aGVuIHsKIH0KIAogZ2RiX3B5X3Rlc3Rf c2lsZW50X2NtZCAgInB5dGhvbiB3cDEgPSBnZGIuQnJlYWtwb2ludCAoXCJy ZXN1bHRcIiwgdHlwZT1nZGIuQlBfV0FUQ0hQT0lOVCwgd3BfY2xhc3M9Z2Ri LldQX1dSSVRFICkiICJTZXQgd2F0Y2hwb2ludCIgMAorCitnZGJfdGVzdCAi cHl0aG9uIHByaW50IGxlbih3cDEubG9jYXRpb25zKCkpID09IDEiICJUcnVl IiBcCisgICAgICAgICAiY2hlY2sgd2F0Y2hwb2ludCBsb2NhdGlvbiIKK2dk Yl90ZXN0ICJweXRob24gcHJpbnQgd3AxLmxvY2F0aW9ucygpXFswXF0uaW5m ZXJpb3IubnVtIiAiMSIgXAorICAgICAgICAgImNoZWNrIHdhdGNocG9pbnQg bG9jYXRpb24ncyBpbmZlcmlvciIKK2dkYl90ZXN0ICJweXRob24gcHJpbnQg d3AxLmxvY2F0aW9ucygpXFswXF0uYWRkcmVzcyAgICBcCisgICAgICAgICAg ICA9PSBnZGIucGFyc2VfYW5kX2V2YWwoXCImcmVzdWx0XCIpIiAiVHJ1ZSIg XAorICAgICAgICAgICJjaGVjayB3YXRjaHBvaW50IGxvY2F0aW9uJ3MgYWRk cmVzcyIKKwogZ2RiX3Rlc3QgImNvbnRpbnVlIiAiLipcW1d3XF1hdGNocG9p bnQuKnJlc3VsdC4qT2xkIHZhbHVlID0gMC4qTmV3IHZhbHVlID0gMjUuKm1h aW4uKiIgIlRlc3Qgd2F0Y2hwb2ludCB3cml0ZSIKIAogIyBJbnRlcm5hbCBi cmVha3BvaW50cy4KQEAgLTMwMCwzICszMDksNDggQEAgZ2RiX3B5X3Rlc3Rf c2lsZW50X2NtZCAgInB5dGhvbiB3cDEgPSB3cF9ldmFsIChcInJlc3VsdFwi LCB0eXBlPWdkYi5CUF9XQVRDSFBPSU4KIGdkYl90ZXN0ICJjb250aW51ZSIg Ii4qXFtXd1xdYXRjaHBvaW50LipyZXN1bHQuKk9sZCB2YWx1ZSA9LipOZXcg dmFsdWUgPSA3ODguKiIgIlRlc3Qgd2F0Y2hwb2ludCB3cml0ZSIKIGdkYl90 ZXN0ICJweXRob24gcHJpbnQgbmV2ZXJfZXZhbF9icDEuY291bnQiICIwIiBc CiAgICAgIkNoZWNrIHRoYXQgdGhpcyB1bnJlbGF0ZWQgYnJlYWtwb2ludHMg ZXZhbCBmdW5jdGlvbiB3YXMgbmV2ZXIgY2FsbGVkLiIKKworIyBnZGIuQnBM b2NhdGlvbgorCisjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCitjbGVhbl9y ZXN0YXJ0ICR7dGVzdGZpbGV9CisKK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7 CisgICAgZmFpbCAiQ2Fubm90IHJ1biB0byBtYWluLiIKKyAgICByZXR1cm4g MAorfQorZGVsZXRlX2JyZWFrcG9pbnRzCitnZGJfdGVzdF9ub19vdXRwdXQg InNldCBkZXRhY2gtb24tZm9yayBvZmYiICJkb24ndCBkZXRhY2ggb24gZm9y ayIKK2dkYl90ZXN0ICJjYWxsIGZvcmsoKSIgIk5ldyBwcm9jZXNzIC4qIiAi Y3JlYXRlIGEgc2Vjb25kIGluZmVyaW9yIgorCitnZGJfYnJlYWtwb2ludCAi bWFpbiIKK2dkYl90ZXN0ICJweSBwcmludCBsZW4oZ2RiLmJyZWFrcG9pbnRz KCkpIiAiMSIgXAorICAgICAgICAgImVuc3VyZSB0aGF0IHRoZXJlIGlzIG9u bHkgb25lIEJQIgorZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtweSBicDAgPSBnZGIu YnJlYWtwb2ludHMoKVswXX0gInNhdmUgYnJlYWtwb2ludCAwIgorZ2RiX3Rl c3QgInB5IHByaW50IGxlbihicDAubG9jYXRpb25zKCkpIiAiMiIgXAorICAg ICAgICAgImVuc3VyZSB0aGF0IHRocmVyZSBhcmUgMiBsb2NhdGlvbnMiCisK K2dkYl90ZXN0X25vX291dHB1dCB7cHkgbG9jMCA9IGJwMC5sb2NhdGlvbnMo KVswXX0gInNhdmUgbG9jYXRpb24gMCIKK2dkYl90ZXN0X25vX291dHB1dCB7 cHkgbG9jMSA9IGJwMC5sb2NhdGlvbnMoKVsxXX0gInNhdmUgbG9jYXRpb24g MSIKKworZ2RiX3Rlc3QgInB5IHByaW50IGxvYzAub3duZXIgPT0gbG9jMS5v d25lciA9PSBicDAiICJUcnVlIiAidmVyaWZ5IG93bmVyc2hpcCIKK2dkYl90 ZXN0ICJweSBwcmludCBsb2MwLmFkZHJlc3MgPT0gbG9jMS5hZGRyZXNzICIg IlRydWUiIFwKKyAgICAgICAgICJ2ZXJpZnkgYWRkcmVzc2VzIGFyZSBpZGVu dGljYWwiCitnZGJfdGVzdCAicHkgZ2RiLmV4ZWN1dGUoJ2luZm8gc3ltYm9s ICVzJyAlIGxvYzEuYWRkcmVzcykiIFwKKyAgICAgICAgICJtYWluIC4qIGlu IHNlY3Rpb24gXC50ZXh0LioiICJ2ZXJpZnkgbG9jYXRpb24gYWRkcmVzcyIK KworZ2RiX3Rlc3Qge3B5IHByaW50IGxvYzAuaW5mZXJpb3IgPT0gZ2RiLmlu ZmVyaW9ycygpWzBdfSAiVHJ1ZSIgXAorCQkgInZlcmlmeSBpbmZlcmlvciBm b3IgbG9jIDAiICNpbmYgMgorZ2RiX3Rlc3Qge3B5IHByaW50IGxvYzEuaW5m ZXJpb3IgPT0gZ2RiLmluZmVyaW9ycygpWzFdfSAiVHJ1ZSIgXAorICAgICAg ICAgInZlcmlmeSBpbmZlcmlvciBmb3IgbG9jIDEiICNpbmYgMQorCitnZGJf dGVzdCAicHkgcHJpbnQgbG9jMC5lbmFibGVkID09IGxvYzEuZW5hYmxlZCA9 PSBUcnVlIiAiVHJ1ZSIgXAorICAgICAgICAgInZlcmlmeSB0aGF0IGxvY2F0 aW9ucyBhcmUgZW5hYmxlZCIKKworZ2RiX3Rlc3QgInB5IHByaW50IGxvYzAu aW5mZXJpb3IubnVtIiAiMiIgImVuc3VyZSB0aGF0IGxvYzAgaXMgb24gaW5m ZXJpb3IgMiIKKworZGVsZXRlX2JyZWFrcG9pbnRzCitnZGJfdGVzdCAicHkg cHJpbnQgYnAwLmlzX3ZhbGlkKCkiICJGYWxzZSIgXAorICAgICAgICAgInZl cmlmeSB0aGF0IEJQIGhhcyBiZWVuIGludmFsaWRhdGVkIgorZ2RiX3Rlc3Qg InB5IGJwMC5sb2NhdGlvbnMoKSIgIi4qUnVudGltZUVycm9yOiBCcmVha3Bv aW50IC4qIGlzIGludmFsaWQuKiJcCisgICAgICAgICAidmVyaWZ5IHRoYXQg bG9jYXRpb25zIGNhbid0IGFjY2Vzc2VkIG9uIGFuIGludmFsaWQgYnJlYWtw b2ludCIKLS0gCjEuNy43LjYKCg== --e89a8f13ec7eb004d204bcc3dc36--