From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24851 invoked by alias); 22 Jan 2013 20:40:59 -0000 Received: (qmail 24841 invoked by uid 22791); 22 Jan 2013 20:40:57 -0000 X-SWARE-Spam-Status: No, hits=-5.5 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,RP_MATCHES_RCVD,TW_BJ X-Spam-Check-By: sourceware.org Received: from mail-ea0-f181.google.com (HELO mail-ea0-f181.google.com) (209.85.215.181) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 22 Jan 2013 20:40:48 +0000 Received: by mail-ea0-f181.google.com with SMTP id i13so2230198eaa.40 for ; Tue, 22 Jan 2013 12:40:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type:x-gm-message-state; bh=briJ3uR8HnjKXUiA4fCpLqlPBjjpDkfgtBaLrkyVRSo=; b=ix0NPVPUq9C17RiKJHQinacrt3tq4cftpjuulGR6Jcw82olH4KEohkdwRFmxnmSA3d JSc+GihAfZWgC7QenKuG2sBemlMaRvnADVjI5tU17aKCc9RfMWubIoPELOrfbBtD3+KA I9UsX2Kw2uRwJxCXz4tvnLUMd0LAUENbyihhoT5O14VwBNZeK39lDqyBG2HZ5cLiimpZ +LbBSMX2cfYRMvr6d5/528RScpkACfCukKQp7NQpjp3LVBp0BHaUMYMe4lOh2Ct6X8dY MzgvVohe1bi9nrAsCy0N4qEuELNn7KMfbAZYMXwkRCmz1kM8QpbDIOMJOw0bx+PfpLl/ uLYg== MIME-Version: 1.0 X-Received: by 10.14.219.72 with SMTP id l48mr76592524eep.37.1358887246680; Tue, 22 Jan 2013 12:40:46 -0800 (PST) Received: by 10.14.212.4 with HTTP; Tue, 22 Jan 2013 12:40:46 -0800 (PST) In-Reply-To: <87sj5u31ku.fsf@fleche.redhat.com> References: <87sj5u31ku.fsf@fleche.redhat.com> Date: Tue, 22 Jan 2013 20:40:00 -0000 Message-ID: Subject: Re: [RFC - GDB Python API] New gdb.Architecture class From: Siva Chandra To: Tom Tromey Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=047d7b622124a0d38604d3e697e8 X-Gm-Message-State: ALoCoQm6M0/04QbW3+ZqiCuSrnrr0appE/1zvXmCiEKXcAwpcO8sqn6dQyHyFzBOtcCv7XDgA53l6jOPIk9kCwEP7UQD11w4doM4AF25SX+NJBk8IuaSgguvyude+bjGO8aOkHh5cDuKDWhaLf0d1Lq5o604HQlvn7aIDOjnwO6H5ByUuANg/SsNiymsvtobMqx4mWhwpcgsyyoCif63o5bSYvP7Oi+hxw== 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: 2013-01/txt/msg00537.txt.bz2 --047d7b622124a0d38604d3e697e8 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2358 Fixed all of Tom's nits in the attached patch. Also, added doc and NEWS entries in this patch. On Mon, Jan 21, 2013 at 9:09 AM, Tom Tromey wrote: > One other question is whether we care about object identity. > gdbarch_to_arch_object returns a new object each time. > Either way is fine depending on circumstances -- we do both already in > gdb -- but it ought to be an explicit choice. In the attached patch, I have made it such a way that if a Python architecture object exists, then a new reference is returned instead of a new object. To be frank, the class is so simple that I am not really sure which is the right approach. But I modified because I think (as gdbarch pointers do not change) references instead of whole objects might be more efficient memory wise(?). Siva> +gdbpy_current_arch (PyObject *self, PyObject *args) { > Do we need this function? The "current arch" is kind of a problematic > feature. It is semi-exposed to Python right now, but I think we're > mostly agreed that this was an early mistake. The only reason I added this function is because I can have something to add as tests for the new class! I have removed it now and only have tests for the new method gdb.Frame.architecture(). Will raise my questions about get_current_arch() and python_gdbarch in a separate thread. 2013-01-22 Siva Chandra Reddy Add a new class gdb.Architecture which exposes GDB's internal representation of architecture via GDB Python API. * Makefile.in: Add entries corresponding to the new file python/py-arch.c. * python/py-arch.c: Implement gdb.Architecture class. * python/py-frame.c (frapy_arch): Implement the method gdb.Frame.architecture(). (frame_object_methods): Add 'architecture' to the method table. * python/python-internal.h: Add declarations of new utility functions. * python/python.c (_initialize_python): Initialize gdb.Architecture class. doc/ * gdb.texinfo (Architectures In Python): New sub-sub-section describing the gdb.Architecture class. (Frames In Python): Add description about the new method Frame.architecture(). testsuite/ * gdb.python/frame.exp: Add a test for Frame.architecture() method. Thanks, Siva Chandra --047d7b622124a0d38604d3e697e8 Content-Type: text/plain; charset=US-ASCII; name="gdb_arch_patch_v2.txt" Content-Disposition: attachment; filename="gdb_arch_patch_v2.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hc9i6pt90 Content-length: 17093 ZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5p bgppbmRleCA3MzA1ZTZkLi45NTY5NjNlIDEwMDY0NAotLS0gYS9nZGIvTWFr ZWZpbGUuaW4KKysrIGIvZ2RiL01ha2VmaWxlLmluCkBAIC0yNzEsNiArMjcx LDcgQEAgU1VCRElSX1RVSV9DRkxBR1M9IFwKICMKIFNVQkRJUl9QWVRIT05f T0JTID0gXAogCXB5dGhvbi5vIFwKKwlweS1hcmNoLm8gXAogCXB5LWF1dG8t bG9hZC5vIFwKIAlweS1ibG9jay5vIFwKIAlweS1icGV2ZW50Lm8gXApAQCAt MzA0LDYgKzMwNSw3IEBAIFNVQkRJUl9QWVRIT05fT0JTID0gXAogCiBTVUJE SVJfUFlUSE9OX1NSQ1MgPSBcCiAJcHl0aG9uL3B5dGhvbi5jIFwKKwlweXRo b24vcHktYXJjaC5jIFwKIAlweXRob24vcHktYXV0by1sb2FkLmMgXAogCXB5 dGhvbi9weS1ibG9jay5jIFwKIAlweXRob24vcHktYnBldmVudC5jIFwKQEAg LTIwNDUsNiArMjA0NywxMCBAQCBweXRob24ubzogJChzcmNkaXIpL3B5dGhv bi9weXRob24uYwogCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNy Y2RpcikvcHl0aG9uL3B5dGhvbi5jCiAJJChQT1NUQ09NUElMRSkKIAorcHkt YXJjaC5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWFyY2guYworCSQoQ09NUElM RSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWFyY2gu YworCSQoUE9TVENPTVBJTEUpCisKIHB5LWF1dG8tbG9hZC5vOiAkKHNyY2Rp cikvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCiAJJChDT01QSUxFKSAkKFBZVEhP Tl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktYXV0by1sb2FkLmMKIAkk KFBPU1RDT01QSUxFKQpkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVX UwppbmRleCA0OWQ4NDQ3Li4wNjhlNTRjIDEwMDY0NAotLS0gYS9nZGIvTkVX UworKysgYi9nZGIvTkVXUwpAQCAtMzksNiArMzksMTIgQEAgTHlueCAxNzgg UG93ZXJQQwkJcG93ZXJwYy0qLWx5bngqMTc4CiAKICAgKiogUHl0aG9uIDMg aXMgbm93IHN1cHBvcnRlZCAoaW4gYWRkaXRpb24gdG8gUHl0aG9uIDIuNCBv ciBsYXRlcikKIAorICAqKiBOZXcgY2xhc3MgZ2RiLkFyY2hpdGVjdHVyZSBl eHBvc2VzIEdEQidzIGludGVybmFsIHJlcHJlc2VudGF0aW9uCisgICAgIG9m IGFyY2hpdGVjdHVyZSBpbiB0aGUgUHl0aG9uIEFQSS4KKworICAqKiBOZXcg bWV0aG9kIEZyYW1lLmFyY2hpdGVjdHVyZSByZXR1cm5zIHRoZSBnZGIuQXJj aGl0ZWN0dXJlIG9iamVjdAorICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBm cmFtZSdzIGFyY2hpdGVjdHVyZS4KKwogKiBOZXcgUHl0aG9uLWJhc2VkIGNv bnZlbmllbmNlIGZ1bmN0aW9uczoKIAogICAqKiAkX21lbWVxKGJ1ZjEsIGJ1 ZjIsIGxlbmd0aCkKZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8g Yi9nZGIvZG9jL2dkYi50ZXhpbmZvCmluZGV4IDcyOGU0NGIuLjllNmFlNjUg MTAwNjQ0Ci0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KKysrIGIvZ2RiL2Rv Yy9nZGIudGV4aW5mbwpAQCAtMjI4MDcsNiArMjI4MDcsNyBAQCBzaXR1YXRp b24sIGEgUHl0aG9uIEBjb2Rle0tleWJvYXJkSW50ZXJydXB0fSBleGNlcHRp b24gaXMgdGhyb3duLgogKiBGaW5pc2ggQnJlYWtwb2ludHMgaW4gUHl0aG9u OjogU2V0dGluZyBCcmVha3BvaW50cyBvbiBmdW5jdGlvbiByZXR1cm4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgUHl0aG9uLgog KiBMYXp5IFN0cmluZ3MgSW4gUHl0aG9uOjogICAgICBQeXRob24gcmVwcmVz ZW50YXRpb24gb2YgbGF6eSBzdHJpbmdzLgorKiBBcmNoaXRlY3R1cmVzIElu IFB5dGhvbjo6ICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgYXJjaGl0 ZWN0dXJlcy4KIEBlbmQgbWVudQogCiBAbm9kZSBCYXNpYyBQeXRob24KQEAg LTI1MTEwLDYgKzI1MTExLDExIEBAIFJldHVybnMgdGhlIGZ1bmN0aW9uIG5h bWUgb2YgdGhlIGZyYW1lLCBvciBAY29kZXtOb25lfSBpZiBpdCBjYW4ndCBi ZQogb2J0YWluZWQuCiBAZW5kIGRlZnVuCiAKK0BkZWZ1biBGcmFtZS5hcmNo aXRlY3R1cmUgKCkKK1JldHVybnMgdGhlIEBjb2Rle2dkYi5BcmNoaXRlY3R1 cmV9IG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoZSBmcmFtZSdzCithcmNo aXRlY3R1cmUuIEB4cmVme0FyY2hpdGVjdHVyZXMgSW4gUHl0aG9ufQorQGVu ZCBkZWZ1bgorCiBAZGVmdW4gRnJhbWUudHlwZSAoKQogUmV0dXJucyB0aGUg dHlwZSBvZiB0aGUgZnJhbWUuICBUaGUgdmFsdWUgY2FuIGJlIG9uZSBvZjoK IEB0YWJsZSBAY29kZQpAQCAtMjU5NzIsNiArMjU5NzgsMjAgQEAgcmVzb2x2 ZSB0aGlzIHRvIHRoZSBsYXp5IHN0cmluZydzIGNoYXJhY3RlciB0eXBlLCB1 c2UgdGhlIHR5cGUncwogd3JpdGFibGUuCiBAZW5kIGRlZnZhcgogCitAbm9k ZSBBcmNoaXRlY3R1cmVzIEluIFB5dGhvbgorQHN1YnN1YnNlY3Rpb24gUHl0 aG9uIHJlcHJlc2VudGF0aW9uIG9mIGFyY2hpdGVjdHVyZXMKK0BjaW5kZXgg UHl0aG9uIGFyY2hpdGVjdHVyZXMKKworQHZhbHVle0dEQk59IHVzZXMgYXJj aGl0ZWN0dXJlIHNwZWNpZmljIHBhcmFtZXRlcnMgYW5kIGFydGlmYWN0cyBp biBhCitudW1iZXIgb2YgaXRzIHZhcmlvdXMgY29tcHV0YXRpb25zLiAgQW4g YXJjaGl0ZWN0dXJlIGlzIHJlcHJlc2VudGVkCitieSBhbiBpbnN0YW5jZSBv ZiB0aGUgQGNvZGV7Z2RiLkFyY2hpdGVjdHVyZX0gY2xhc3MuCisKK0EgQGNv ZGV7Z2RiLkFyY2hpdGVjdHVyZX0gY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcg bWV0aG9kczoKKworQGRlZnVuIEFyY2hpdGVjdHVyZS5uYW1lICgpCitSZXR1 cm4gdGhlIG5hbWUgKHN0cmluZyB2YWx1ZSkgb2YgdGhlIGFyY2hpdGVjdHVy ZS4KK0BlbmQgZGVmdW4KKwogQG5vZGUgUHl0aG9uIEF1dG8tbG9hZGluZwog QHN1YnNlY3Rpb24gUHl0aG9uIEF1dG8tbG9hZGluZwogQGNpbmRleCBQeXRo b24gYXV0by1sb2FkaW5nCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWFy Y2guYyBiL2dkYi9weXRob24vcHktYXJjaC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjkzNzc0Y2UKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGIvcHl0aG9uL3B5LWFyY2guYwpAQCAtMCwwICsxLDE1NiBAQAorLyog UHl0aG9uIGludGVyZmFjZSB0byBhcmNoaXRlY3R1cmUKKworICAgQ29weXJp Z2h0IChDKSAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor CisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlICJkZWZzLmgiCisjaW5jbHVk ZSAiZ2RiYXJjaC5oIgorI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKyNpbmNs dWRlICJweXRob24taW50ZXJuYWwuaCIKKwordHlwZWRlZiBzdHJ1Y3QgYXJj aF9vYmplY3RfdHlwZV9vYmplY3QgeworICBQeU9iamVjdF9IRUFECisgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoOworICBzdHJ1Y3QgYXJjaF9vYmplY3Rf dHlwZV9vYmplY3QgKm5leHQ7Cit9IGFyY2hfb2JqZWN0OworCitzdGF0aWMg YXJjaF9vYmplY3QgKmFyY2hfb2JqZWN0X2xpc3QgPSBOVUxMOworc3RhdGlj IFB5VHlwZU9iamVjdCBhcmNoX29iamVjdF90eXBlOworCisvKiBSZXR1cm5z IHRoZSBzdHJ1Y3QgZ2RiYXJjaCB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRo ZSBnaXZlbiBQeXRob24KKyAgIGFyY2hpdGVjdHVyZSBvYmplY3QgT0JKLiAg Ki8KKworc3RydWN0IGdkYmFyY2ggKgorYXJjaF9vYmplY3RfdG9fZ2RiYXJj aCAoUHlPYmplY3QgKm9iaikKK3sKKyAgYXJjaF9vYmplY3QgKnB5X2FyY2gg PSAoYXJjaF9vYmplY3QgKikgb2JqOworCisgIHJldHVybiBweV9hcmNoLT5n ZGJhcmNoOworfQorCisvKiBSZXR1cm5zIHRoZSBQeXRob24gYXJjaGl0ZWN0 dXJlIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIEdEQkFSQ0guCisgICBJZiBh IFB5dGhvbiBvYmplY3QgY29ycmVzcG9uZGluZyB0byBHREJBUkNIIGFscmVh ZHkgZXhpc3RzLCB0aGVuIHJldHVybnMKKyAgIGEgbmV3IHJlZmVyZW5jZSB0 byB0aGUgZXhpc3Rpbmcgb2JqZWN0LiAgKi8KKworUHlPYmplY3QgKgorZ2Ri YXJjaF90b19hcmNoX29iamVjdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp Cit7CisgIGFyY2hfb2JqZWN0ICphcmNoX29iaiA9IGFyY2hfb2JqZWN0X2xp c3Q7CisgIFB5T2JqZWN0ICpuZXdfcmVmOworCisgIC8qIExvb2t1cCBpZiB0 aGUgZ2RiYXJjaCB2YWx1ZSBhbHJlYWR5IGhhcyBhIFB5dGhvbiBpbnN0YW5j ZS4gICovCisgIHdoaWxlIChhcmNoX29iaikKKyAgICB7CisgICAgICBpZiAo YXJjaF9vYmotPmdkYmFyY2ggPT0gZ2RiYXJjaCkKKyAgICAgICAgeworICAg ICAgICAgIG5ld19yZWYgPSAoUHlPYmplY3QgKikgYXJjaF9vYmo7CisgICAg ICAgICAgUHlfSU5DUkVGIChuZXdfcmVmKTsKKworICAgICAgICAgIHJldHVy biBuZXdfcmVmOworICAgICAgICB9CisKKyAgICAgIGFyY2hfb2JqID0gYXJj aF9vYmotPm5leHQ7CisgICAgfQorCisgIGFyY2hfb2JqID0gUHlPYmplY3Rf TmV3IChhcmNoX29iamVjdCwgJmFyY2hfb2JqZWN0X3R5cGUpOworICBpZiAo YXJjaF9vYmogPT0gTlVMTCkKKyAgICByZXR1cm4gTlVMTDsKKworICBhcmNo X29iai0+Z2RiYXJjaCA9IGdkYmFyY2g7CisgIGFyY2hfb2JqLT5uZXh0ID0g YXJjaF9vYmplY3RfbGlzdDsKKyAgYXJjaF9vYmplY3RfbGlzdCA9IGFyY2hf b2JqOworICAvKiBSZWYgY291bnQgc2hvdWxkIGJlIGluY3JlbWVudGVkIGFz IGEgcmVmZXJlbmNlIGlzIGFsc28gaGVsZCBieSB0aGUKKyAgICAgYXJjaF9v YmplY3RfbGlzdC4gICovCisgIG5ld19yZWYgPSAoUHlPYmplY3QgKikgYXJj aF9vYmo7CisgIFB5X0lOQ1JFRiAobmV3X3JlZik7CisKKyAgcmV0dXJuIG5l d19yZWY7Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIGdkYi5BcmNoaXRl Y3R1cmUubmFtZSAoc2VsZikgLT4gU3RyaW5nLgorICAgUmV0dXJucyB0aGUg bmFtZSBvZiB0aGUgYXJjaGl0ZWN0dXJlIGFzIGEgc3RyaW5nIHZhbHVlLiAg Ki8KKworc3RhdGljIFB5T2JqZWN0ICoKK2FyY2hweV9uYW1lIChQeU9iamVj dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gYXJjaF9vYmplY3RfdG9fZ2RiYXJjaCAoc2VsZik7Cisg IGNvbnN0IGNoYXIgKm5hbWUgPSAoZ2RiYXJjaF9iZmRfYXJjaF9pbmZvIChn ZGJhcmNoKSktPnByaW50YWJsZV9uYW1lOworICBQeU9iamVjdCAqcHlfbmFt ZSA9IFB5U3RyaW5nX0Zyb21TdHJpbmcgKG5hbWUpOworCisgIHJldHVybiBw eV9uYW1lOworfQorCisvKiBJbml0aWFsaXplcyB0aGUgQXJjaGl0ZWN0dXJl IGNsYXNzIGluIHRoZSBnZGIgbW9kdWxlLiAgKi8KKwordm9pZAorZ2RicHlf aW5pdGlhbGl6ZV9hcmNoICh2b2lkKQoreworICBhcmNoX29iamVjdF90eXBl LnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3OworICBpZiAoUHlUeXBlX1Jl YWR5ICgmYXJjaF9vYmplY3RfdHlwZSkgPCAwKQorICAgIHJldHVybjsKKwor ICBQeV9JTkNSRUYgKCZhcmNoX29iamVjdF90eXBlKTsKKyAgUHlNb2R1bGVf QWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiQXJjaGl0ZWN0dXJlIiwKKyAgICAg ICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikgJmFyY2hfb2JqZWN0X3R5 cGUpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgYXJjaF9vYmplY3RfbWV0 aG9kcyBbXSA9IHsKKyAgeyAibmFtZSIsIGFyY2hweV9uYW1lLCBNRVRIX05P QVJHUywKKyAgICAibmFtZSAoKSAtPiBTdHJpbmcuXG5cCitSZXR1cm4gdGhl IG5hbWUgb2YgdGhlIGFyY2hpdGVjdHVyZSBhcyBhIHN0cmluZyB2YWx1ZS4i IH0sCisgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQ eVR5cGVPYmplY3QgYXJjaF9vYmplY3RfdHlwZSA9IHsKKyAgUHlWYXJPYmpl Y3RfSEVBRF9JTklUIChOVUxMLCAwKQorICAiZ2RiLkFyY2hpdGVjdHVyZSIs ICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgIHNpemVvZiAoYXJj aF9vYmplY3QpLCAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwor ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9p dGVtc2l6ZSAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiB0cF9kZWFsbG9jICovCisgIDAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgIDAsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAg MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0 YXR0ciAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiB0cF9jb21wYXJlICovCisgIDAsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgMCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgIDAs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3Nl cXVlbmNlICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgMCwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgKi8KKyAgMCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAw LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIg Ki8KKyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog dHBfZ2V0YXR0cm8gKi8KKyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgMCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgIFB5 X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdz ICovCisgICJHREIgYXJjaGl0ZWN0dXJlIG9iamVjdCIsICAgICAgICAgIC8q IHRwX2RvYyAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAwLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAwLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAq LworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0 cF93ZWFrbGlzdG9mZnNldCAqLworICAwLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgIDAsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgIGFy Y2hfb2JqZWN0X21ldGhvZHMsICAgICAgICAgICAgICAgIC8qIHRwX21ldGhv ZHMgKi8KKyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogdHBfbWVtYmVycyAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgMCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAwLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisg IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rl c2NyX2dldCAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgMCwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAwLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICov CisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw X2FsbG9jICovCit9OwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1mcmFt ZS5jIGIvZ2RiL3B5dGhvbi9weS1mcmFtZS5jCmluZGV4IDRiMDI1ZGIuLmUy ZWI5YzUgMTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHktZnJhbWUuYworKysg Yi9nZGIvcHl0aG9uL3B5LWZyYW1lLmMKQEAgLTE2Nyw2ICsxNjcsMjUgQEAg ZnJhcHlfdHlwZSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQog ICByZXR1cm4gUHlJbnRfRnJvbUxvbmcgKHR5cGUpOwogfQogCisvKiBJbXBs ZW1lbnRhdGlvbiBvZiBnZGIuRnJhbWUuYXJjaGl0ZWN0dXJlIChzZWxmKSAt PiBnZGIuQXJjaGl0ZWN0dXJlLgorICAgUmV0dXJucyB0aGUgZnJhbWUncyBh cmNoaXRlY3R1cmUgYXMgYSBnZGIuQXJjaGl0ZWN0dXJlIG9iamVjdC4gICov CisKK3N0YXRpYyBQeU9iamVjdCAqCitmcmFweV9hcmNoIChQeU9iamVjdCAq c2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSA9IE5VTEw7ICAgIC8qIEluaXRpYWxpemUgdG8gYXBwZWFzZSBn Y2Mgd2FybmluZy4gICovCisgIGZyYW1lX29iamVjdCAqb2JqID0gKGZyYW1l X29iamVjdCAqKSBzZWxmOworICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2Vw dGlvbiBleGNlcHQ7CisKKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9N QVNLX0FMTCkKKyAgICB7CisgICAgICBGUkFQWV9SRVFVSVJFX1ZBTElEIChz ZWxmLCBmcmFtZSk7CisgICAgfQorICBHREJfUFlfSEFORExFX0VYQ0VQVElP TiAoZXhjZXB0KTsKKworICByZXR1cm4gZ2RiYXJjaF90b19hcmNoX29iamVj dCAob2JqLT5nZGJhcmNoKTsKK30KKwogLyogSW1wbGVtZW50YXRpb24gb2Yg Z2RiLkZyYW1lLnVud2luZF9zdG9wX3JlYXNvbiAoc2VsZikgLT4gSW50ZWdl ci4KICAgIFJldHVybnMgb25lIG9mIHRoZSBnZGIuRlJBTUVfVU5XSU5EXyog Y29uc3RhbnRzLiAgKi8KIApAQCAtNjMyLDYgKzY1MSw5IEBAIFJldHVybiB0 aGUgZnVuY3Rpb24gbmFtZSBvZiB0aGUgZnJhbWUsIG9yIE5vbmUgaWYgaXQg Y2FuJ3QgYmUgZGV0ZXJtaW5lZC4iIH0sCiAgIHsgInR5cGUiLCBmcmFweV90 eXBlLCBNRVRIX05PQVJHUywKICAgICAidHlwZSAoKSAtPiBJbnRlZ2VyLlxu XAogUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBmcmFtZS4iIH0sCisgIHsgImFy Y2hpdGVjdHVyZSIsIGZyYXB5X2FyY2gsIE1FVEhfTk9BUkdTLAorICAgICJh cmNoaXRlY3R1cmUgKCkgLT4gZ2RiLkFyY2hpdGVjdHVyZS5cblwKK1JldHVy biB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBmcmFtZS4iIH0sCiAgIHsgInVu d2luZF9zdG9wX3JlYXNvbiIsIGZyYXB5X3Vud2luZF9zdG9wX3JlYXNvbiwg TUVUSF9OT0FSR1MsCiAgICAgInVud2luZF9zdG9wX3JlYXNvbiAoKSAtPiBJ bnRlZ2VyLlxuXAogUmV0dXJuIHRoZSByZWFzb24gd2h5IGl0J3Mgbm90IHBv c3NpYmxlIHRvIGZpbmQgZnJhbWVzIG9sZGVyIHRoYW4gdGhpcy4iIH0sCmRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIGIvZ2Ri L3B5dGhvbi9weXRob24taW50ZXJuYWwuaAppbmRleCA3ZDUyYzA2Li44ZGZm MWQ3IDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5o CisrKyBiL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKQEAgLTI1MCw2 ICsyNTAsOCBAQCBQeU9iamVjdCAqcHNweV9nZXRfcHJpbnRlcnMgKFB5T2Jq ZWN0ICosIHZvaWQgKik7CiBQeU9iamVjdCAqb2JqZmlsZV90b19vYmpmaWxl X29iamVjdCAoc3RydWN0IG9iamZpbGUgKik7CiBQeU9iamVjdCAqb2JqZnB5 X2dldF9wcmludGVycyAoUHlPYmplY3QgKiwgdm9pZCAqKTsKIAorUHlPYmpl Y3QgKmdkYmFyY2hfdG9fYXJjaF9vYmplY3QgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoKTsKKwogdGhyZWFkX29iamVjdCAqY3JlYXRlX3RocmVhZF9vYmpl Y3QgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApOwogdGhyZWFkX29iamVjdCAq ZmluZF90aHJlYWRfb2JqZWN0IChwdGlkX3QgcHRpZCk7CiBQeU9iamVjdCAq ZmluZF9pbmZlcmlvcl9vYmplY3QgKGludCBwaWQpOwpAQCAtMjYzLDYgKzI2 NSw3IEBAIHN0cnVjdCB0eXBlICp0eXBlX29iamVjdF90b190eXBlIChQeU9i amVjdCAqb2JqKTsKIHN0cnVjdCBzeW10YWIgKnN5bXRhYl9vYmplY3RfdG9f c3ltdGFiIChQeU9iamVjdCAqb2JqKTsKIHN0cnVjdCBzeW10YWJfYW5kX2xp bmUgKnNhbF9vYmplY3RfdG9fc3ltdGFiX2FuZF9saW5lIChQeU9iamVjdCAq b2JqKTsKIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZV9vYmplY3RfdG9fZnJh bWVfaW5mbyAoUHlPYmplY3QgKmZyYW1lX29iaik7CitzdHJ1Y3QgZ2RiYXJj aCAqYXJjaF9vYmplY3RfdG9fZ2RiYXJjaCAoUHlPYmplY3QgKm9iaik7CiAK IHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9nZGJfcmVhZGxpbmUgKHZvaWQpOwog dm9pZCBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7CkBAIC0y OTMsNiArMjk2LDcgQEAgdm9pZCBnZGJweV9pbml0aWFsaXplX2NvbnRpbnVl X2V2ZW50ICh2b2lkKTsKIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9leGl0ZWRf ZXZlbnQgKHZvaWQpOwogdm9pZCBnZGJweV9pbml0aWFsaXplX3RocmVhZF9l dmVudCAodm9pZCk7CiB2b2lkIGdkYnB5X2luaXRpYWxpemVfbmV3X29iamZp bGVfZXZlbnQgKHZvaWQpOwordm9pZCBnZGJweV9pbml0aWFsaXplX2FyY2gg KHZvaWQpOwogCiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3B5X2Rl Y3JlZiAoUHlPYmplY3QgKnB5KTsKIApkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhv bi9weXRob24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMKaW5kZXggYjBmNzFh Mi4uNTNkZGVlOSAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weXRob24uYwor KysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCkBAIC0xNjIwLDYgKzE2MjAsNyBA QCBtZXNzYWdlID09IGFuIGVycm9yIG1lc3NhZ2Ugd2l0aG91dCBhIHN0YWNr IHdpbGwgYmUgcHJpbnRlZC4iKSwKICAgZ2RicHlfaW5pdGlhbGl6ZV9leGl0 ZWRfZXZlbnQgKCk7CiAgIGdkYnB5X2luaXRpYWxpemVfdGhyZWFkX2V2ZW50 ICgpOwogICBnZGJweV9pbml0aWFsaXplX25ld19vYmpmaWxlX2V2ZW50ICgp IDsKKyAgZ2RicHlfaW5pdGlhbGl6ZV9hcmNoICgpOwogCiAgIG9ic2VydmVy X2F0dGFjaF9iZWZvcmVfcHJvbXB0IChiZWZvcmVfcHJvbXB0X2hvb2spOwog CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJh bWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4 cAppbmRleCBhYTRkOTM3Li44MDZkYTk0IDEwMDY0NAotLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCisrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKQEAgLTM4LDYgKzM4LDEw IEBAIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJCbG9j ayBicmVhayBoZXJlLiJdCiBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi QmxvY2sgYnJlYWsgaGVyZS4iCiBnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJw eXRob24gYmYxID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpIiAiZ2V0IGZyYW1l IiAwCiAKKyMgVGVzdCBGcmFtZS5hcmNoaXRlY3R1cmUoKSBtZXRob2QuCitn ZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gc2hvd19hcmNoX3N0ciA9 IGdkYi5leGVjdXRlKFwic2hvdyBhcmNoaXRlY3R1cmVcIiwgdG9fc3RyaW5n PVRydWUpIiAic2hvdyBhcmNoIiAwCitnZGJfdGVzdCAicHl0aG9uIHByaW50 IGJmMS5hcmNoaXRlY3R1cmUoKS5uYW1lKCkgaW4gc2hvd19hcmNoX3N0ciIg IlRydWUiICJ0ZXN0IEZyYW1lLmFyY2hpdGVjdHVyZSgpIgorCiAjIEZpcnN0 IHRlc3QgdGhhdCByZWFkX3ZhciBpcyB1bmFmZmVjdGVkIGJ5IFBSIDExMDM2 IGNoYW5nZXMuCiBnZGJfdGVzdCAicHl0aG9uIHByaW50IChiZjEucmVhZF92 YXIoXCJpXCIpKSIgIlwic3R1ZmZcIiIgInRlc3QgaSIKIGdkYl90ZXN0ICJw eXRob24gcHJpbnQgKGJmMS5yZWFkX3ZhcihcImZcIikpIiAiXCJmb29cIiIg InRlc3QgZiIK --047d7b622124a0d38604d3e697e8--