From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6890 invoked by alias); 17 Apr 2012 23:01:12 -0000 Received: (qmail 6868 invoked by uid 22791); 17 Apr 2012 23:01:06 -0000 X-SWARE-Spam-Status: No, hits=-5.4 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,TW_EG,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-vx0-f169.google.com (HELO mail-vx0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 17 Apr 2012 23:00:33 +0000 Received: by vcbfk14 with SMTP id fk14so5616373vcb.0 for ; Tue, 17 Apr 2012 16:00:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=6T/a35NtaxVbWeP6BPhlumexUVsC86XtiNy0QxqEtm0=; b=dgsByBa5niPKBCEbHKkZWx8a6IM9C7jGNxEGaU3hPoCcHPkNq0jHrEoj9LRa1Ww7GH 18IvCV08FIbRkFwKtPXqusrrEweR2YrFmlkemuhnNwzAOpCfMuppE+mXpsn3RpxVcIbh NXB6h+sV6XZJA8AiipvLoJrA+KUeaFK4y1j+W7+O69rzvP2TdHupuMBFZmTTrEUXoUVn B8EvsLZtifkPoQY471SG3H6NsHsqpZzxSPjy9LoJGa76O6NpSP4qTRs3r6rahOmj3cgg L/7mRuyoFsT++/xJpIIjtEglFSqy2t+1avVEDYacvoKCe7kIqnY4g1Amd1dlXiwR/MHR N0eQ== Received: by 10.52.68.77 with SMTP id u13mr7256812vdt.81.1334703632075; Tue, 17 Apr 2012 16:00:32 -0700 (PDT) MIME-Version: 1.0 Received: by 10.52.68.77 with SMTP id u13mr7256801vdt.81.1334703631951; Tue, 17 Apr 2012 16:00:31 -0700 (PDT) Received: by 10.220.115.78 with HTTP; Tue, 17 Apr 2012 16:00:31 -0700 (PDT) In-Reply-To: References: <20120416144011.GH2852@adacore.com> <4F8C3350.1030601@redhat.com> Date: Tue, 17 Apr 2012 23:12:00 -0000 Message-ID: Subject: Re: [RFA] Ensure result of make_cleanup is never NULL. From: Doug Evans To: Pedro Alves , Joel Brobecker Cc: gdb-patches Content-Type: multipart/mixed; boundary=20cf307d022cdce71b04bde7e7d6 X-System-Of-Record: true X-Gm-Message-State: ALoCoQlnl73khb0t3dySkXyGlOVpYLOvJ+RYcgrRZBQyy/ouEVxmRX7vQfaKVGzFJAWqxjNRMNbFNzXdn53pCwpo9OOZePchx5nTpv96aXXwA9pVgVqbw4A0WJEWfDIHIPRDf7HDbIeNg/OBdc6ei/SUbfSOIYv8LQ== 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/msg00523.txt.bz2 --20cf307d022cdce71b04bde7e7d6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2102 On Mon, Apr 16, 2012 at 8:21 AM, Doug Evans wrote: > > On Apr 16, 2012 7:58 AM, "Pedro Alves" wrote: >> >> On 04/16/2012 03:40 PM, Joel Brobecker wrote: >> >> >> +/* A fencepost used to mark the end of a cleanup chain. >> >> + =A0 The value is chosen to be non-NULL so that make_cleanup never >> >> returns NULL, >> >> + =A0 and cause a segv if dereferenced. =A0*/ >> >> +#define CLEANUP_FENCEPOST ((struct cleanup *) 1) >> > >> > Just a tiny idea, not really important, but JIC: Could we use an enum >> > intead of a define so that GDB prints "CLEANUP_FENCEPOST" rather than >> > a numeric value when we print a cleanup pointer that's the fencepost? >> >> >> No, because what you'll be printing will have type struct cleanup pointe= r, >> not >> whatever enum it was cast from. >> >> I see at least two ways to get something like that: >> >> - a gdb specific pretty printer for cleanups. >> >> - Make the sentinel a real object: >> >> =A0 static struct cleanup sentinel_cleanup; >> =A0 #define CLEANUP_FENCEPOST &sentinel_cleanup >> >> =A0And get Tromey's "set print symbol" patch in, which IIRC/IIUC, the >> =A0latest version makes GDB print the symbol name corresponding >> =A0to addresses by default. =A0Then gdb would print something like: >> >> =A0 (gdb) p old_chain >> =A0 $1 =3D 0xfoobar >> >> -- >> Pedro Alves > > That was my other plan.=A0 I can do that instead. How about this? 2012-04-17 Doug Evans * cleanups.h (struct cleanup): Move to cleanups.c. (make_cleanup_dtor_ftype): New typedef. (make_cleanup_dtor): Use it. (ALL_CLEANUPS): Replace with ... (all_cleanups): ... this. Declare. All uses updated. * cleanups.c (cleanup_sentinel): New static global. (CLEANUP_SENTINEL): Define. (cleanup_chain, final_cleanup_chain): Initialize to CLEANUP_SENTINE= L. (make_my_cleanup2): Assert result is non-NULL. (all_cleanups): New function. (save_my_cleanups): Initialize new chain to CLEANUP_SENTINEL instead of NULL. --20cf307d022cdce71b04bde7e7d6 Content-Type: text/plain; charset=US-ASCII; name="gdb-120417-cleanups-sentinel-1.patch.txt" Content-Disposition: attachment; filename="gdb-120417-cleanups-sentinel-1.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h15k244w0 Content-length: 11147 MjAxMi0wNC0xNyAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog Y2xlYW51cHMuaCAoc3RydWN0IGNsZWFudXApOiBNb3ZlIHRvIGNsZWFudXBz LmMuCgkobWFrZV9jbGVhbnVwX2R0b3JfZnR5cGUpOiBOZXcgdHlwZWRlZi4K CShtYWtlX2NsZWFudXBfZHRvcik6IFVzZSBpdC4KCShBTExfQ0xFQU5VUFMp OiBSZXBsYWNlIHdpdGggLi4uCgkoYWxsX2NsZWFudXBzKTogLi4uIHRoaXMu ICBEZWNsYXJlLiAgQWxsIHVzZXMgdXBkYXRlZC4KCSogY2xlYW51cHMuYzog I2luY2x1ZGUgImdkYl9hc3NlcnQuaCIuCgkoY2xlYW51cF9zZW50aW5lbCk6 IE5ldyBzdGF0aWMgZ2xvYmFsLgoJKENMRUFOVVBfU0VOVElORUwpOiBEZWZp bmUuCgkoY2xlYW51cF9jaGFpbiwgZmluYWxfY2xlYW51cF9jaGFpbik6IElu aXRpYWxpemUgdG8gQ0xFQU5VUF9TRU5USU5FTC4KCShtYWtlX215X2NsZWFu dXAyKTogQXNzZXJ0IHJlc3VsdCBpcyBub24tTlVMTC4KCShhbGxfY2xlYW51 cHMpOiBOZXcgZnVuY3Rpb24uCgkoc2F2ZV9teV9jbGVhbnVwcyk6IEluaXRp YWxpemUgbmV3IGNoYWluIHRvIENMRUFOVVBfU0VOVElORUwgaW5zdGVhZAoJ b2YgTlVMTC4KCkluZGV4OiBjbGVhbnVwcy5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvY2xlYW51cHMuYyx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXUgLXAgLXIxLjIgY2xl YW51cHMuYwotLS0gY2xlYW51cHMuYwkxNyBBcHIgMjAxMiAyMToyNDo0NyAt MDAwMAkxLjIKKysrIGNsZWFudXBzLmMJMTcgQXByIDIwMTIgMjI6NDY6MTAg LTAwMDAKQEAgLTE4LDE1ICsxOCw1MCBAQAogICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLwogCiAjaW5jbHVkZSAiZGVmcy5oIgorI2luY2x1ZGUg ImdkYl9hc3NlcnQuaCIKKworLyogVGhlIGNsZWFudXAgbGlzdCByZWNvcmRz IHRoaW5ncyB0aGF0IGhhdmUgdG8gYmUgdW5kb25lCisgICBpZiBhbiBlcnJv ciBoYXBwZW5zIChkZXNjcmlwdG9ycyB0byBiZSBjbG9zZWQsIG1lbW9yeSB0 byBiZSBmcmVlZCwgZXRjLikKKyAgIEVhY2ggbGluayBpbiB0aGUgY2hhaW4g cmVjb3JkcyBhIGZ1bmN0aW9uIHRvIGNhbGwgYW5kIGFuCisgICBhcmd1bWVu dCB0byBnaXZlIGl0LgorCisgICBVc2UgbWFrZV9jbGVhbnVwIHRvIGFkZCBh biBlbGVtZW50IHRvIHRoZSBjbGVhbnVwIGNoYWluLgorICAgVXNlIGRvX2Ns ZWFudXBzIHRvIGRvIGFsbCBjbGVhbnVwIGFjdGlvbnMgYmFjayB0byBhIGdp dmVuCisgICBwb2ludCBpbiB0aGUgY2hhaW4uICBVc2UgZGlzY2FyZF9jbGVh bnVwcyB0byByZW1vdmUgY2xlYW51cHMKKyAgIGZyb20gdGhlIGNoYWluIGJh Y2sgdG8gYSBnaXZlbiBwb2ludCwgbm90IGRvaW5nIHRoZW0uCisKKyAgIElm IHRoZSBhcmd1bWVudCBpcyBwb2ludGVyIHRvIGFsbG9jYXRlZCBtZW1vcnks IHRoZW4geW91IG5lZWQKKyAgIHRvIGFkZGl0aW9uYWxseSBzZXQgdGhlICdm cmVlX2FyZycgbWVtYmVyIHRvIGEgZnVuY3Rpb24gdGhhdCB3aWxsCisgICBm cmVlIHRoYXQgbWVtb3J5LiAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxl ZCBib3RoIHdoZW4gdGhlIGNsZWFudXAKKyAgIGlzIGV4ZWN1dGVkIGFuZCB3 aGVuIGl0J3MgZGlzY2FyZGVkLiAgKi8KKworc3RydWN0IGNsZWFudXAKK3sK KyAgc3RydWN0IGNsZWFudXAgKm5leHQ7CisgIHZvaWQgKCpmdW5jdGlvbikg KHZvaWQgKik7CisgIHZvaWQgKCpmcmVlX2FyZykgKHZvaWQgKik7CisgIHZv aWQgKmFyZzsKK307CisKKy8qIFVzZWQgdG8gbWFyayB0aGUgZW5kIG9mIGEg Y2xlYW51cCBjaGFpbi4KKyAgIFRoZSB2YWx1ZSBpcyBjaG9zZW4gc28gdGhh dCBpdDoKKyAgIC0gaXMgbm9uLU5VTEwgc28gdGhhdCBtYWtlX2NsZWFudXAg bmV2ZXIgcmV0dXJucyBOVUxMLAorICAgLSBjYXVzZXMgYSBzZWd2IGlmIGRl cmVmZXJlbmNlZAorICAgICBbdGhvdWdoIHRoaXMgd29uJ3QgY2F0Y2ggZXJy b3JzIHRoYXQgYSB2YWx1ZSBvZiwgc2F5LAorICAgICAoKHN0cnVjdCBjbGVh bnVwICopIC0xKSB3aWxsXQorICAgLSBkaXNwbGF5cyBhcyBzb21ldGhpbmcg dXNlZnVsIHdoZW4gcHJpbnRlZCBpbiBnZGIuICAqLworc3RhdGljIHN0cnVj dCBjbGVhbnVwIGNsZWFudXBfc2VudGluZWw7CisKKy8qIEhhbmR5IG1hY3Jv IHRvIHVzZSB3aGVuIHJlZmVycmluZyB0byBjbGVhbnVwX3NlbnRpbmVsLiAg Ki8KKyNkZWZpbmUgQ0xFQU5VUF9TRU5USU5FTCAoJmNsZWFudXBfc2VudGlu ZWwpCiAKIC8qIENoYWluIG9mIGNsZWFudXAgYWN0aW9ucyBlc3RhYmxpc2hl ZCB3aXRoIG1ha2VfY2xlYW51cCwKICAgIHRvIGJlIGV4ZWN1dGVkIGlmIGFu IGVycm9yIGhhcHBlbnMuICAqLworc3RhdGljIHN0cnVjdCBjbGVhbnVwICpj bGVhbnVwX2NoYWluID0gQ0xFQU5VUF9TRU5USU5FTDsKIAotLyogQ2xlYW5l ZCB1cCBhZnRlciBhIGZhaWxlZCBjb21tYW5kLiAgKi8KLXN0YXRpYyBzdHJ1 Y3QgY2xlYW51cCAqY2xlYW51cF9jaGFpbjsKLQotLyogQ2xlYW5lZCB1cCB3 aGVuIGdkYiBleGl0cy4gICovCi1zdGF0aWMgc3RydWN0IGNsZWFudXAgKmZp bmFsX2NsZWFudXBfY2hhaW47CisvKiBDaGFpbiBvZiBjbGVhbnVwIGFjdGlv bnMgZXN0YWJsaXNoZWQgd2l0aCBtYWtlX2ZpbmFsX2NsZWFudXAsCisgICB0 byBiZSBleGVjdXRlZCB3aGVuIGdkYiBleGl0cy4gICovCitzdGF0aWMgc3Ry dWN0IGNsZWFudXAgKmZpbmFsX2NsZWFudXBfY2hhaW4gPSBDTEVBTlVQX1NF TlRJTkVMOwogCiAvKiBNYWluIHdvcmtlciByb3V0aW5lIHRvIGNyZWF0ZSBh IGNsZWFudXAuCiAgICBQTVlfQ0hBSU4gaXMgYSBwb2ludGVyIHRvIGVpdGhl ciBjbGVhbnVwX2NoYWluIG9yIGZpbmFsX2NsZWFudXBfY2hhaW4uCkBAIC01 MSw2ICs4Niw3IEBAIG1ha2VfbXlfY2xlYW51cDIgKHN0cnVjdCBjbGVhbnVw ICoqcG15X2MKICAgbmV3LT5hcmcgPSBhcmc7CiAgICpwbXlfY2hhaW4gPSBu ZXc7CiAKKyAgZ2RiX2Fzc2VydCAob2xkX2NoYWluICE9IE5VTEwpOwogICBy ZXR1cm4gb2xkX2NoYWluOwogfQogCkBAIC0xMjAsNiArMTU2LDE1IEBAIGRv X215X2NsZWFudXBzIChzdHJ1Y3QgY2xlYW51cCAqKnBteV9jaGEKICAgICB9 CiB9CiAKKy8qIFJldHVybiBhIHZhbHVlIHRoYXQgY2FuIGJlIHBhc3NlZCB0 byBkb19jbGVhbnVwcywgZG9fZmluYWxfY2xlYW51cHMgdG8KKyAgIGluZGlj YXRlIHBlcmZvcm0gYWxsIGNsZWFudXBzLiAgKi8KKworc3RydWN0IGNsZWFu dXAgKgorYWxsX2NsZWFudXBzICh2b2lkKQoreworICByZXR1cm4gQ0xFQU5V UF9TRU5USU5FTDsKK30KKwogLyogRGlzY2FyZCBjbGVhbnVwcyBhbmQgZG8g dGhlIGFjdGlvbnMgdGhleSBkZXNjcmliZQogICAgdW50aWwgd2UgZ2V0IGJh Y2sgdG8gdGhlIHBvaW50IE9MRF9DSEFJTiBpbiB0aGUgY2xlYW51cF9jaGFp bi4gICovCiAKQEAgLTE4NSw3ICsyMzAsNyBAQCBzYXZlX215X2NsZWFudXBz IChzdHJ1Y3QgY2xlYW51cCAqKnBteV9jCiB7CiAgIHN0cnVjdCBjbGVhbnVw ICpvbGRfY2hhaW4gPSAqcG15X2NoYWluOwogCi0gICpwbXlfY2hhaW4gPSAw OworICAqcG15X2NoYWluID0gQ0xFQU5VUF9TRU5USU5FTDsKICAgcmV0dXJu IG9sZF9jaGFpbjsKIH0KIApJbmRleDogY2xlYW51cHMuaAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2NsZWFu dXBzLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC11IC1wIC1y MS4yIGNsZWFudXBzLmgKLS0tIGNsZWFudXBzLmgJMTcgQXByIDIwMTIgMjE6 MjQ6NDcgLTAwMDAJMS4yCisrKyBjbGVhbnVwcy5oCTE3IEFwciAyMDEyIDIy OjQ2OjEwIC0wMDAwCkBAIC0xOSwyOCArMTksOCBAQAogI2lmbmRlZiBDTEVB TlVQU19ICiAjZGVmaW5lIENMRUFOVVBTX0gKIAotLyogVGhlIGNsZWFudXAg bGlzdCByZWNvcmRzIHRoaW5ncyB0aGF0IGhhdmUgdG8gYmUgdW5kb25lCi0g ICBpZiBhbiBlcnJvciBoYXBwZW5zIChkZXNjcmlwdG9ycyB0byBiZSBjbG9z ZWQsIG1lbW9yeSB0byBiZSBmcmVlZCwgZXRjLikKLSAgIEVhY2ggbGluayBp biB0aGUgY2hhaW4gcmVjb3JkcyBhIGZ1bmN0aW9uIHRvIGNhbGwgYW5kIGFu Ci0gICBhcmd1bWVudCB0byBnaXZlIGl0LgotCi0gICBVc2UgbWFrZV9jbGVh bnVwIHRvIGFkZCBhbiBlbGVtZW50IHRvIHRoZSBjbGVhbnVwIGNoYWluLgot ICAgVXNlIGRvX2NsZWFudXBzIHRvIGRvIGFsbCBjbGVhbnVwIGFjdGlvbnMg YmFjayB0byBhIGdpdmVuCi0gICBwb2ludCBpbiB0aGUgY2hhaW4uICBVc2Ug ZGlzY2FyZF9jbGVhbnVwcyB0byByZW1vdmUgY2xlYW51cHMKLSAgIGZyb20g dGhlIGNoYWluIGJhY2sgdG8gYSBnaXZlbiBwb2ludCwgbm90IGRvaW5nIHRo ZW0uCi0KLSAgIElmIHRoZSBhcmd1bWVudCBpcyBwb2ludGVyIHRvIGFsbG9j YXRlZCBtZW1vcnksIHRoZW4geW91IG5lZWQKLSAgIHRvIGFkZGl0aW9uYWxs eSBzZXQgdGhlICdmcmVlX2FyZycgbWVtYmVyIHRvIGEgZnVuY3Rpb24gdGhh dCB3aWxsCi0gICBmcmVlIHRoYXQgbWVtb3J5LiAgVGhpcyBmdW5jdGlvbiB3 aWxsIGJlIGNhbGxlZCBib3RoIHdoZW4gdGhlIGNsZWFudXAKLSAgIGlzIGV4 ZWN1dGVkIGFuZCB3aGVuIGl0J3MgZGlzY2FyZGVkLiAgKi8KLQotc3RydWN0 IGNsZWFudXAKLSAgewotICAgIHN0cnVjdCBjbGVhbnVwICpuZXh0OwotICAg IHZvaWQgKCpmdW5jdGlvbikgKHZvaWQgKik7Ci0gICAgdm9pZCAoKmZyZWVf YXJnKSAodm9pZCAqKTsKLSAgICB2b2lkICphcmc7Ci0gIH07CisvKiBPdXRz aWRlIG9mIGNsZWFudXBzLmMsIHRoaXMgaXMgYW4gb3BhcXVlIHR5cGUuICAq Lworc3RydWN0IGNsZWFudXA7CiAKIC8qIE5PVEU6IGNhZ25leS8yMDAwLTAz LTA0OiBUaGlzIHR5cGVkZWYgaXMgc3RyaWN0bHkgZm9yIHRoZQogICAgbWFr ZV9jbGVhbnVwIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBiZWxvdy4gIERvIG5v dCB1c2UgdGhpcyB0eXBlZGVmCkBAIC00OSwyMSArMjksMjUgQEAgc3RydWN0 IGNsZWFudXAKICAgIENhbGxpbmcgYSBmKGNoYXIqKSBmdW5jdGlvbiB3aXRo IGYodm9pZCopIGlzIG5vbi1wb3J0YWJsZS4gICovCiB0eXBlZGVmIHZvaWQg KG1ha2VfY2xlYW51cF9mdHlwZSkgKHZvaWQgKik7CiAKKy8qIEZ1bmN0aW9u IHR5cGUgZm9yIHRoZSBkdG9yIGluIG1ha2VfY2xlYW51cF9kdG9yLiAgKi8K K3R5cGVkZWYgdm9pZCAobWFrZV9jbGVhbnVwX2R0b3JfZnR5cGUpICh2b2lk ICopOworCiAvKiBXQVJOSU5HOiBUaGUgcmVzdWx0IG9mIHRoZSAibWFrZSBj bGVhbnVwIiByb3V0aW5lcyBpcyBub3QgdGhlIGludHVpdGl2ZQogICAgY2hv aWNlIG9mIGJlaW5nIGEgaGFuZGxlIG9uIHRoZSBqdXN0LWNyZWF0ZWQgY2xl YW51cC4gIEluc3RlYWQgaXQgaXMgYW4KICAgIG9wYXF1ZSBoYW5kbGUgb2Yg dGhlIGNsZWFudXAgbWVjaGFuaXNtIGFuZCByZXByZXNlbnRzIGFsbCBjbGVh bnVwcyBjcmVhdGVkCi0gICBmcm9tIHRoYXQgcG9pbnQgb253YXJkcy4gICov CisgICBmcm9tIHRoYXQgcG9pbnQgb253YXJkcy4KKyAgIFRoZSByZXN1bHQg aXMgZ3VhcmFudGVlZCB0byBiZSBub24tTlVMTCB0aG91Z2guICAqLwogCiBl eHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cCAobWFrZV9jbGVh bnVwX2Z0eXBlICosIHZvaWQgKik7CiAKIGV4dGVybiBzdHJ1Y3QgY2xlYW51 cCAqbWFrZV9jbGVhbnVwX2R0b3IgKG1ha2VfY2xlYW51cF9mdHlwZSAqLCB2 b2lkICosCi0JCQkJCSAgdm9pZCAoKmR0b3IpICh2b2lkICopKTsKKwkJCQkJ ICBtYWtlX2NsZWFudXBfZHRvcl9mdHlwZSAqKTsKIAogZXh0ZXJuIHN0cnVj dCBjbGVhbnVwICptYWtlX2ZpbmFsX2NsZWFudXAgKG1ha2VfY2xlYW51cF9m dHlwZSAqLCB2b2lkICopOwogCiAvKiBBIHNwZWNpYWwgdmFsdWUgdG8gcGFz cyB0byBkb19jbGVhbnVwcyBhbmQgZG9fZmluYWxfY2xlYW51cHMKICAgIHRv IHRlbGwgdGhlbSB0byBkbyBhbGwgY2xlYW51cHMuICAqLwotI2RlZmluZQlB TExfQ0xFQU5VUFMJKChzdHJ1Y3QgY2xlYW51cCAqKTApCitleHRlcm4gc3Ry dWN0IGNsZWFudXAgKmFsbF9jbGVhbnVwcyAodm9pZCk7CiAKIGV4dGVybiB2 b2lkIGRvX2NsZWFudXBzIChzdHJ1Y3QgY2xlYW51cCAqKTsKIGV4dGVybiB2 b2lkIGRvX2ZpbmFsX2NsZWFudXBzIChzdHJ1Y3QgY2xlYW51cCAqKTsKSW5k ZXg6IGV4Y2VwdGlvbnMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2V4Y2VwdGlvbnMuYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS41MApkaWZmIC11IC1wIC1yMS41MCBleGNlcHRpb25z LmMKLS0tIGV4Y2VwdGlvbnMuYwk0IEphbiAyMDEyIDA4OjE3OjAxIC0wMDAw CTEuNTAKKysrIGV4Y2VwdGlvbnMuYwkxNyBBcHIgMjAxMiAyMjo0NjoxMCAt MDAwMApAQCAtMjI0LDcgKzIyNCw3IEBAIHRocm93X2V4Y2VwdGlvbiAoc3Ry dWN0IGdkYl9leGNlcHRpb24gZXgKICAgcXVpdF9mbGFnID0gMDsKICAgaW1t ZWRpYXRlX3F1aXQgPSAwOwogCi0gIGRvX2NsZWFudXBzIChBTExfQ0xFQU5V UFMpOworICBkb19jbGVhbnVwcyAoYWxsX2NsZWFudXBzICgpKTsKIAogICAv KiBKdW1wIHRvIHRoZSBjb250YWluaW5nIGNhdGNoX2Vycm9ycygpIGNhbGws IGNvbW11bmljYXRpbmcgUkVBU09OCiAgICAgIHRvIHRoYXQgY2FsbCB2aWEg c2V0am1wJ3MgcmV0dXJuIHZhbHVlLiAgTm90ZSB0aGF0IFJFQVNPTiBjYW4n dApJbmRleDogbWFpbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9jdnMvc3JjL3NyYy9nZGIvbWFpbi5jLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjEwOApkaWZmIC11IC1wIC1yMS4xMDggbWFpbi5jCi0tLSBtYWlu LmMJMTcgQXByIDIwMTIgMTU6NTY6MjEgLTAwMDAJMS4xMDgKKysrIG1haW4u YwkxNyBBcHIgMjAxMiAyMjo0NjoxMCAtMDAwMApAQCAtMjMxLDcgKzIzMSw3 IEBAIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCAodm9pZCAqZGF0YSkKICAgICAg YXJlIG5vdCB0aGF0IHdlbGwgYmVoYXZlZC4gIGRvX2NsZWFudXBzIHNob3Vs ZCBlaXRoZXIgYmUgcmVwbGFjZWQKICAgICAgd2l0aCBhIGRvX2NsZWFudXBz IGNhbGwgKHRvIGNvdmVyIHRoZSBwcm9ibGVtKSBvciBhbiBhc3NlcnRpb24K ICAgICAgY2hlY2sgdG8gZGV0ZWN0IGJhZCBGVU5DcyBjb2RlLiAgKi8KLSAg ZG9fY2xlYW51cHMgKEFMTF9DTEVBTlVQUyk7CisgIGRvX2NsZWFudXBzIChh bGxfY2xlYW51cHMgKCkpOwogICAvKiBJZiB0aGUgY29tbWFuZF9sb29wIHJl dHVybmVkLCBub3JtYWxseSAocmF0aGVyIHRoYW4gdGhyZXcgYW4KICAgICAg ZXJyb3IpIHdlIHRyeSB0byBxdWl0LiAgSWYgdGhlIHF1aXQgaXMgYWJvcnRl ZCwgY2F0Y2hfZXJyb3JzKCkKICAgICAgd2hpY2ggY2FsbGVkIHRoaXMgY2F0 Y2ggdGhlIHNpZ25hbCBhbmQgcmVzdGFydCB0aGUgY29tbWFuZApJbmRleDog dG9wLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9z cmMvc3JjL2dkYi90b3AuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMTQK ZGlmZiAtdSAtcCAtcjEuMjE0IHRvcC5jCi0tLSB0b3AuYwkxIE1hciAyMDEy IDE5OjMwOjIwIC0wMDAwCTEuMjE0CisrKyB0b3AuYwkxNyBBcHIgMjAxMiAy Mjo0NjoxMCAtMDAwMApAQCAtMTI5Nyw4ICsxMjk3LDkgQEAgcXVpdF90YXJn ZXQgKHZvaWQgKmFyZykKICAgaWYgKHdyaXRlX2hpc3RvcnlfcCAmJiBoaXN0 b3J5X2ZpbGVuYW1lKQogICAgIHdyaXRlX2hpc3RvcnkgKGhpc3RvcnlfZmls ZW5hbWUpOwogCi0gIGRvX2ZpbmFsX2NsZWFudXBzIChBTExfQ0xFQU5VUFMp OyAgICAvKiBEbyBhbnkgZmluYWwgY2xlYW51cHMgYmVmb3JlCi0JCQkJCSAg ZXhpdGluZy4gICovCisgIC8qIERvIGFueSBmaW5hbCBjbGVhbnVwcyBiZWZv cmUgZXhpdGluZy4gICovCisgIGRvX2ZpbmFsX2NsZWFudXBzIChhbGxfY2xl YW51cHMgKCkpOworCiAgIHJldHVybiAwOwogfQogCg== --20cf307d022cdce71b04bde7e7d6--