From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29076 invoked by alias); 12 Jul 2012 05:19:48 -0000 Received: (qmail 29059 invoked by uid 22791); 12 Jul 2012 05:19:45 -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,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-ob0-f169.google.com (HELO mail-ob0-f169.google.com) (209.85.214.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 12 Jul 2012 05:19:31 +0000 Received: by obhx4 with SMTP id x4so3167246obh.0 for ; Wed, 11 Jul 2012 22:19:30 -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=o2NuPBMQRU/ColPOjW+/Wi2658RQvybQ7g2lQu9pKN8=; b=EHtrpNu4uz1XAXvZm69priKvFWngrrUafFP0rehWv1HxHZ2kMp4BQIqD5+lKKFIH4r cX9FOBbWQ5yEDhKXOz0xx3p7KUwA5cRzF/N/mxqQ2Bo7kQWHQv1dBZEZ58wQ4OWjzmMQ SDUxOvofjVSe5mMX5dOFMQRtkmf4ITOhfHp1HMOvdn0PpEK5EifFdYz1zdA/qEA60tET E+LyanhpX9opUqwM2duqZosoUiV/HSqlcXDiTjf8iQRQA+2yePEgsaBRweUMT2al2rU4 eJdx9drTH0Of3rGmN+klkRv1gT6dvNEuDWIWupWERtsBjTP3M+zU2dFT+AooQ4uUcjUY uqgA== Received: by 10.182.14.101 with SMTP id o5mr6666721obc.1.1342070370405; Wed, 11 Jul 2012 22:19:30 -0700 (PDT) MIME-Version: 1.0 Received: by 10.182.14.101 with SMTP id o5mr6666706obc.1.1342070370176; Wed, 11 Jul 2012 22:19:30 -0700 (PDT) Received: by 10.60.50.133 with HTTP; Wed, 11 Jul 2012 22:19:30 -0700 (PDT) In-Reply-To: <20120703125419.GA14860@host2.jankratochvil.net> References: <20120605011446.670FD1E123B@ruffy2.mtv.corp.google.com> <20120622193539.GA7344@host2.jankratochvil.net> <20120624183352.GA15915@host2.jankratochvil.net> <20120703125419.GA14860@host2.jankratochvil.net> Date: Thu, 12 Jul 2012 05:19:00 -0000 Message-ID: Subject: Re: [RFA] Fix inconsistency in blockvector addrmap vs non-addrmap handling From: Doug Evans To: Jan Kratochvil Cc: gdb-patches@sourceware.org, tromey@redhat.com, palves@redhat.com Content-Type: multipart/mixed; boundary=14dae9399badad8e6e04c49b1ba6 X-System-Of-Record: true X-Gm-Message-State: ALoCoQnFA9T1Qq1Ot+GuC3kzbC1mY1ULkro0Ir7wzrH4JuNxp5JQuhWUS7g7ICtfq6LOqqkjW1BeTpzY9ItkI3ANvB+9C5oK0TZcpl0GBa3Pq35400S6EWC7Uy8ZSod3DnQmUDZ3rkJCr/batT+40D9eLrsAgovoGCQdun0/FSqrIL3qwo2pUos18sPuVmIF04QUTEyvaDvY 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-07/txt/msg00151.txt.bz2 --14dae9399badad8e6e04c49b1ba6 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 3027 On Tue, Jul 3, 2012 at 5:54 AM, Jan Kratochvil wrote: >> - If it does actually fix the bug in question it seems more accidental >> than on purpose. > > I do not see why you think so. I think I was confused about something. >> - If we really want to take this step then start,end on global,static >> blocks needs to go. > > > GDB needs some BLOCK_START / BLOCK_END abstraction for things like sorting > blocks and finding the most narrow block etc. > > GDB needs some abstraction of the code. For -O2 -g code in fact there are no > longer any source statements boundaries, there is no execution order etc. The > abstraction of inferior for the purposes of GDB user interface will be > probably always broken in some way for -O2 -g code as for real -O2 -g code one > cannot simplify it more than what 'disas' shows. > > This patch tries to exactly match process_psymtab_comp_unit_reader and > dw2_do_instantiate_symtab. I call it a bugfix. I do not try to redesign GDB > in this patch. > > Whether BLOCK_END or BLOCK_START could be removed is more a GDB design change. > Currently it is a fallback for GDB code not yet prepared to use > BLOCKVECTOR_MAP. As usual in GDB there are kept both the older and modern > ways how to do things as nobody wants to update all the code in GDB at once so > we could drop the old code. > Note that I was specifically referring to GLOBAL and STATIC blocks. There the concept of having a start and end has lost its meaning. They have a lower bound and an upper bound which may be useful in sorting, but using their start/end values as start/end values is problematic. > >> Until then we're just satisfying a desire to apply dwarf correctly >> without really accomplishing anything. > > I tried to exploit some case where the patch of mine behaves more correctly > than the patch of yours but I cannot. Any code which accesses STATIC_BLOCK's > assigned ranges already checks first objfile->psymtabs_addrmap which already > has exactly correct CU's DW_AT_ranges map. I was playing with a case of "pc 0x42 in read in psymtab, but not in symtab" case today. gdb has other problems that get in the way, but having more consistency between partial and full syms has to be a good thing. [btw, seems kinda odd to have two addrmaps: one for psymtabs/index and one for fullsyms. I wonder if there's an opportunity here.] Here's an updated version of your patch to match the current tree. 2012-07-11 Jan Kratochvil Doug Evans * buildsym.c (end_symtab_1): Split it to ... (end_symtab_get_static_block): ... this ... (end_symtab_from_static_block): ... and this function. (end_symtab, end_expandable_symtab): Call them. * buildsym.h (end_symtab_get_static_block) (end_symtab_from_static_block): New declarations. * dwarf2read.c (process_full_comp_unit): New variable static_block. Set its valid CU ranges. --14dae9399badad8e6e04c49b1ba6 Content-Type: text/plain; charset=US-ASCII; name="gdb-120711-static-block-ranges-1.patch.txt" Content-Disposition: attachment; filename="gdb-120711-static-block-ranges-1.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h4je19a00 Content-length: 12493 MjAxMi0wNy0xMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgoJICAgIERvdWcgRXZhbnMgIDxkamVAZ29vZ2xlLmNvbT4K CgkqIGJ1aWxkc3ltLmMgKGVuZF9zeW10YWJfMSk6IFNwbGl0IGl0IHRvIC4u LgoJKGVuZF9zeW10YWJfZ2V0X3N0YXRpY19ibG9jayk6IC4uLiB0aGlzIC4u LgoJKGVuZF9zeW10YWJfZnJvbV9zdGF0aWNfYmxvY2spOiAuLi4gYW5kIHRo aXMgZnVuY3Rpb24uCgkoZW5kX3N5bXRhYiwgZW5kX2V4cGFuZGFibGVfc3lt dGFiKTogQ2FsbCB0aGVtLgoJKiBidWlsZHN5bS5oIChlbmRfc3ltdGFiX2dl dF9zdGF0aWNfYmxvY2spCgkoZW5kX3N5bXRhYl9mcm9tX3N0YXRpY19ibG9j ayk6IE5ldyBkZWNsYXJhdGlvbnMuCgkqIGR3YXJmMnJlYWQuYyAocHJvY2Vz c19mdWxsX2NvbXBfdW5pdCk6IE5ldyB2YXJpYWJsZSBzdGF0aWNfYmxvY2su CglTZXQgaXRzIHZhbGlkIENVIHJhbmdlcy4KCkluZGV4OiBidWlsZHN5bS5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny Yy9nZGIvYnVpbGRzeW0uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMDAK ZGlmZiAtdSAtcCAtcjEuMTAwIGJ1aWxkc3ltLmMKLS0tIGJ1aWxkc3ltLmMJ MTAgSnVsIDIwMTIgMjA6MjA6MTUgLTAwMDAJMS4xMDAKKysrIGJ1aWxkc3lt LmMJMTIgSnVsIDIwMTIgMDQ6NTY6MDYgLTAwMDAKQEAgLTk1Nyw0MiArOTU3 LDI4IEBAIHJlc2V0X3N5bXRhYl9nbG9iYWxzICh2b2lkKQogICAgIH0KIH0K IAotLyogRmluaXNoIHRoZSBzeW1ib2wgZGVmaW5pdGlvbnMgZm9yIG9uZSBt YWluIHNvdXJjZSBmaWxlLCBjbG9zZSBvZmYKLSAgIGFsbCB0aGUgbGV4aWNh bCBjb250ZXh0cyBmb3IgdGhhdCBmaWxlIChjcmVhdGluZyBzdHJ1Y3QgYmxv Y2sncyBmb3IKLSAgIHRoZW0pLCB0aGVuIG1ha2UgdGhlIHN0cnVjdCBzeW10 YWIgZm9yIHRoYXQgZmlsZSBhbmQgcHV0IGl0IGluIHRoZQotICAgbGlzdCBv ZiBhbGwgc3VjaC4KLQotICAgRU5EX0FERFIgaXMgdGhlIGFkZHJlc3Mgb2Yg dGhlIGVuZCBvZiB0aGUgZmlsZSdzIHRleHQuICBTRUNUSU9OIGlzCi0gICB0 aGUgc2VjdGlvbiBudW1iZXIgKGluIG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0 cykgb2YgdGhlIGJsb2NrdmVjdG9yCi0gICBhbmQgbGluZXRhYmxlLgotCi0g ICBJZiBFWFBBTkRBQkxFIGlzIG5vbi16ZXJvIHRoZSBkaWN0aW9uYXJpZXMg Zm9yIHRoZSBnbG9iYWwgYW5kIHN0YXRpYwotICAgYmxvY2tzIGFyZSBtYWRl IGV4cGFuZGFibGUuCi0KLSAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSBm b3IgZW5kX3N5bXRhYigpIHRvIHJldHVybiBOVUxMLiAgSW4KLSAgIHBhcnRp Y3VsYXIsIGZvciB0aGUgRFdBUkYgY2FzZSBhdCBsZWFzdCwgaXQgd2lsbCBy ZXR1cm4gTlVMTCB3aGVuCi0gICBpdCBmaW5kcyBhIGNvbXBpbGF0aW9uIHVu aXQgdGhhdCBoYXMgZXhhY3RseSBvbmUgRElFLCBhCi0gICBUQUdfY29tcGls ZV91bml0IERJRS4gIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHdlIGxpbmsgaW4g YW4gb2JqZWN0Ci0gICBmaWxlIHRoYXQgd2FzIGNvbXBpbGVkIGZyb20gYW4g ZW1wdHkgc291cmNlIGZpbGUuICBSZXR1cm5pbmcgTlVMTAotICAgaXMgcHJv YmFibHkgbm90IHRoZSBjb3JyZWN0IHRoaW5nIHRvIGRvLCBiZWNhdXNlIHRo ZW4gZ2RiIHdpbGwKLSAgIG5ldmVyIGtub3cgYWJvdXQgdGhpcyBlbXB0eSBm aWxlIChGSVhNRSkuICAqLwotCi1zdGF0aWMgc3RydWN0IHN5bXRhYiAqCi1l bmRfc3ltdGFiXzEgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGludCBzZWN0aW9uLAotCSAgICAgIGludCBleHBhbmRh YmxlKQorLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGZpcnN0IHBhcnQgb2Yg ZW5kX3N5bXRhYi4gIEl0IGFsbG93cyBtb2RpZnlpbmcKKyAgIFNUQVRJQ19C TE9DSyBiZWZvcmUgaXQgZ2V0cyBmaW5hbGl6ZWQgYnkgZW5kX3N5bXRhYl9m cm9tX3N0YXRpY19ibG9jay4KKyAgIElmIHRoZSByZXR1cm5lZCB2YWx1ZSBp cyBOVUxMIHRoZXJlIGlzIG5vIGJsb2NrdmVjdG9yIGNyZWF0ZWQgZm9yCisg ICB0aGlzIHN5bXRhYiAoeW91IHN0aWxsIG11c3QgY2FsbCBlbmRfc3ltdGFi X2Zyb21fc3RhdGljX2Jsb2NrKS4KKworICAgRU5EX0FERFIgaXMgdGhlIHNh bWUgYXMgZm9yIGVuZF9zeW10YWI6IHRoZSBhZGRyZXNzIG9mIHRoZSBlbmQg b2YgdGhlCisgICBmaWxlJ3MgdGV4dC4KKworICAgSWYgRVhQQU5EQUJMRSBp cyBub24temVybyB0aGUgU1RBVElDX0JMT0NLIGRpY3Rpb25hcnkgaXMgbWFk ZQorICAgZXhwYW5kYWJsZS4gICovCisKK3N0cnVjdCBibG9jayAqCitlbmRf c3ltdGFiX2dldF9zdGF0aWNfYmxvY2sgKENPUkVfQUREUiBlbmRfYWRkciwg c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisJCQkgICAgIGludCBleHBhbmRh YmxlKQogewotICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWIgPSBOVUxMOwotICBz dHJ1Y3QgYmxvY2t2ZWN0b3IgKmJsb2NrdmVjdG9yOwotICBzdHJ1Y3Qgc3Vi ZmlsZSAqc3ViZmlsZTsKLSAgc3RydWN0IGNvbnRleHRfc3RhY2sgKmNzdGs7 Ci0gIHN0cnVjdCBzdWJmaWxlICpuZXh0c3ViOwotCiAgIC8qIEZpbmlzaCB0 aGUgbGV4aWNhbCBjb250ZXh0IG9mIHRoZSBsYXN0IGZ1bmN0aW9uIGluIHRo ZSBmaWxlOyBwb3AKICAgICAgdGhlIGNvbnRleHQgc3RhY2suICAqLwogCiAg IGlmIChjb250ZXh0X3N0YWNrX2RlcHRoID4gMCkKICAgICB7Ci0gICAgICBj c3RrID0gcG9wX2NvbnRleHQgKCk7CisgICAgICBzdHJ1Y3QgY29udGV4dF9z dGFjayAqY3N0ayA9IHBvcF9jb250ZXh0ICgpOworCiAgICAgICAvKiBNYWtl IGEgYmxvY2sgZm9yIHRoZSBsb2NhbCBzeW1ib2xzIHdpdGhpbi4gICovCiAg ICAgICBmaW5pc2hfYmxvY2sgKGNzdGstPm5hbWUsICZsb2NhbF9zeW1ib2xz LCBjc3RrLT5vbGRfYmxvY2tzLAogCQkgICAgY3N0ay0+c3RhcnRfYWRkciwg ZW5kX2FkZHIsIG9iamZpbGUpOwpAQCAtMTA1OCwxOCArMTA0NCw1MSBAQCBl bmRfc3ltdGFiXzEgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0CiAgICAg ICAmJiBoYXZlX2xpbmVfbnVtYmVycyA9PSAwCiAgICAgICAmJiBwZW5kaW5n X21hY3JvcyA9PSBOVUxMKQogICAgIHsKLSAgICAgIC8qIElnbm9yZSBzeW10 YWJzIHRoYXQgaGF2ZSBubyBmdW5jdGlvbnMgd2l0aCByZWFsIGRlYnVnZ2lu ZwotICAgICAgICAgaW5mby4gICovCisgICAgICAvKiBJZ25vcmUgc3ltdGFi cyB0aGF0IGhhdmUgbm8gZnVuY3Rpb25zIHdpdGggcmVhbCBkZWJ1Z2dpbmcg aW5mby4gICovCisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgIGVsc2UK KyAgICB7CisgICAgICAvKiBEZWZpbmUgdGhlIFNUQVRJQ19CTE9DSy4gICov CisgICAgICByZXR1cm4gZmluaXNoX2Jsb2NrX2ludGVybmFsIChOVUxMLCAm ZmlsZV9zeW1ib2xzLCBOVUxMLAorCQkJCSAgICBsYXN0X3NvdXJjZV9zdGFy dF9hZGRyLCBlbmRfYWRkciwgb2JqZmlsZSwKKwkJCQkgICAgMCwgZXhwYW5k YWJsZSk7CisgICAgfQorfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUg c2Vjb25kIHBhcnQgb2YgZW5kX3N5bXRhYi4gIFBhc3MgU1RBVElDX0JMT0NL CisgICBhcyB2YWx1ZSByZXR1cm5lZCBieSBlbmRfc3ltdGFiX2dldF9zdGF0 aWNfYmxvY2suCisKKyAgIFNFQ1RJT04gaXMgdGhlIHNhbWUgYXMgZm9yIGVu ZF9zeW10YWI6IHRoZSBzZWN0aW9uIG51bWJlcgorICAgKGluIG9iamZpbGUt PnNlY3Rpb25fb2Zmc2V0cykgb2YgdGhlIGJsb2NrdmVjdG9yIGFuZCBsaW5l dGFibGUuCisKKyAgIElmIEVYUEFOREFCTEUgaXMgbm9uLXplcm8gdGhlIEdM T0JBTF9CTE9DSyBkaWN0aW9uYXJ5IGlzIG1hZGUKKyAgIGV4cGFuZGFibGUu ICAqLworCitzdHJ1Y3Qgc3ltdGFiICoKK2VuZF9zeW10YWJfZnJvbV9zdGF0 aWNfYmxvY2sgKHN0cnVjdCBibG9jayAqc3RhdGljX2Jsb2NrLAorCQkJICAg ICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzZWN0aW9uLAorCQkJ ICAgICAgaW50IGV4cGFuZGFibGUpCit7CisgIHN0cnVjdCBzeW10YWIgKnN5 bXRhYiA9IE5VTEw7CisgIHN0cnVjdCBibG9ja3ZlY3RvciAqYmxvY2t2ZWN0 b3I7CisgIHN0cnVjdCBzdWJmaWxlICpzdWJmaWxlOworICBzdHJ1Y3Qgc3Vi ZmlsZSAqbmV4dHN1YjsKKworICBpZiAoc3RhdGljX2Jsb2NrID09IE5VTEwp CisgICAgeworICAgICAgLyogSWdub3JlIHN5bXRhYnMgdGhhdCBoYXZlIG5v IGZ1bmN0aW9ucyB3aXRoIHJlYWwgZGVidWdnaW5nIGluZm8uICAqLwogICAg ICAgYmxvY2t2ZWN0b3IgPSBOVUxMOwogICAgIH0KICAgZWxzZQogICAgIHsK LSAgICAgIC8qIERlZmluZSB0aGUgU1RBVElDX0JMT0NLICYgR0xPQkFMX0JM T0NLLCBhbmQgYnVpbGQgdGhlCisgICAgICBDT1JFX0FERFIgZW5kX2FkZHIg PSBCTE9DS19FTkQgKHN0YXRpY19ibG9jayk7CisKKyAgICAgIC8qIERlZmlu ZSBhZnRlciBTVEFUSUNfQkxPQ0sgYWxzbyBHTE9CQUxfQkxPQ0ssIGFuZCBi dWlsZCB0aGUKICAgICAgICAgIGJsb2NrdmVjdG9yLiAgKi8KLSAgICAgIGZp bmlzaF9ibG9ja19pbnRlcm5hbCAoMCwgJmZpbGVfc3ltYm9scywgMCwgbGFz dF9zb3VyY2Vfc3RhcnRfYWRkciwKLQkJCSAgICAgZW5kX2FkZHIsIG9iamZp bGUsIDAsIGV4cGFuZGFibGUpOwotICAgICAgZmluaXNoX2Jsb2NrX2ludGVy bmFsICgwLCAmZ2xvYmFsX3N5bWJvbHMsIDAsIGxhc3Rfc291cmNlX3N0YXJ0 X2FkZHIsCi0JCQkgICAgIGVuZF9hZGRyLCBvYmpmaWxlLCAxLCBleHBhbmRh YmxlKTsKKyAgICAgIGZpbmlzaF9ibG9ja19pbnRlcm5hbCAoTlVMTCwgJmds b2JhbF9zeW1ib2xzLCBOVUxMLAorCQkJICAgICBsYXN0X3NvdXJjZV9zdGFy dF9hZGRyLCBlbmRfYWRkciwgb2JqZmlsZSwKKwkJCSAgICAgMSwgZXhwYW5k YWJsZSk7CiAgICAgICBibG9ja3ZlY3RvciA9IG1ha2VfYmxvY2t2ZWN0b3Ig KG9iamZpbGUpOwogICAgIH0KIApAQCAtMTI1MSwyMSArMTI3MCw0NiBAQCBl bmRfc3ltdGFiXzEgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0CiAgIHJl dHVybiBzeW10YWI7CiB9CiAKLS8qIFNlZSBlbmRfc3ltdGFiXzEgZm9yIGRl dGFpbHMuICAqLworLyogRmluaXNoIHRoZSBzeW1ib2wgZGVmaW5pdGlvbnMg Zm9yIG9uZSBtYWluIHNvdXJjZSBmaWxlLCBjbG9zZSBvZmYKKyAgIGFsbCB0 aGUgbGV4aWNhbCBjb250ZXh0cyBmb3IgdGhhdCBmaWxlIChjcmVhdGluZyBz dHJ1Y3QgYmxvY2sncyBmb3IKKyAgIHRoZW0pLCB0aGVuIG1ha2UgdGhlIHN0 cnVjdCBzeW10YWIgZm9yIHRoYXQgZmlsZSBhbmQgcHV0IGl0IGluIHRoZQor ICAgbGlzdCBvZiBhbGwgc3VjaC4KKworICAgRU5EX0FERFIgaXMgdGhlIGFk ZHJlc3Mgb2YgdGhlIGVuZCBvZiB0aGUgZmlsZSdzIHRleHQuICBTRUNUSU9O IGlzCisgICB0aGUgc2VjdGlvbiBudW1iZXIgKGluIG9iamZpbGUtPnNlY3Rp b25fb2Zmc2V0cykgb2YgdGhlIGJsb2NrdmVjdG9yCisgICBhbmQgbGluZXRh YmxlLgorCisgICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgZm9yIGVuZF9z eW10YWIoKSB0byByZXR1cm4gTlVMTC4gIEluCisgICBwYXJ0aWN1bGFyLCBm b3IgdGhlIERXQVJGIGNhc2UgYXQgbGVhc3QsIGl0IHdpbGwgcmV0dXJuIE5V TEwgd2hlbgorICAgaXQgZmluZHMgYSBjb21waWxhdGlvbiB1bml0IHRoYXQg aGFzIGV4YWN0bHkgb25lIERJRSwgYQorICAgVEFHX2NvbXBpbGVfdW5pdCBE SUUuICBUaGlzIGNhbiBoYXBwZW4gd2hlbiB3ZSBsaW5rIGluIGFuIG9iamVj dAorICAgZmlsZSB0aGF0IHdhcyBjb21waWxlZCBmcm9tIGFuIGVtcHR5IHNv dXJjZSBmaWxlLiAgUmV0dXJuaW5nIE5VTEwKKyAgIGlzIHByb2JhYmx5IG5v dCB0aGUgY29ycmVjdCB0aGluZyB0byBkbywgYmVjYXVzZSB0aGVuIGdkYiB3 aWxsCisgICBuZXZlciBrbm93IGFib3V0IHRoaXMgZW1wdHkgZmlsZSAoRklY TUUpLgorCisgICBJZiB5b3UgbmVlZCB0byBtb2RpZnkgU1RBVElDX0JMT0NL IGJlZm9yZSBpdCBpcyBmaW5hbGl6ZWQgeW91IHNob3VsZAorICAgY2FsbCBl bmRfc3ltdGFiX2dldF9zdGF0aWNfYmxvY2sgYW5kIGVuZF9zeW10YWJfZnJv bV9zdGF0aWNfYmxvY2sKKyAgIHlvdXJzZWxmLiAgKi8KIAogc3RydWN0IHN5 bXRhYiAqCiBlbmRfc3ltdGFiIChDT1JFX0FERFIgZW5kX2FkZHIsIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc2VjdGlvbikKIHsKLSAgcmV0dXJu IGVuZF9zeW10YWJfMSAoZW5kX2FkZHIsIG9iamZpbGUsIHNlY3Rpb24sIDAp OworICBzdHJ1Y3QgYmxvY2sgKnN0YXRpY19ibG9jazsKKworICBzdGF0aWNf YmxvY2sgPSBlbmRfc3ltdGFiX2dldF9zdGF0aWNfYmxvY2sgKGVuZF9hZGRy LCBvYmpmaWxlLCAwKTsKKyAgcmV0dXJuIGVuZF9zeW10YWJfZnJvbV9zdGF0 aWNfYmxvY2sgKHN0YXRpY19ibG9jaywgb2JqZmlsZSwgc2VjdGlvbiwgMCk7 CiB9CiAKLS8qIFNlZSBlbmRfc3ltdGFiXzEgZm9yIGRldGFpbHMuICAqLwor LyogU2FtZSBhcyBlbmRfc3ltdGFiIGV4Y2VwdCBjcmVhdGUgYSBzeW10YWIg dGhhdCBjYW4gYmUgbGF0ZXIgYWRkZWQgdG8uICAqLwogCiBzdHJ1Y3Qgc3lt dGFiICoKIGVuZF9leHBhbmRhYmxlX3N5bXRhYiAoQ09SRV9BRERSIGVuZF9h ZGRyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKIAkJICAgICAgIGludCBz ZWN0aW9uKQogewotICByZXR1cm4gZW5kX3N5bXRhYl8xIChlbmRfYWRkciwg b2JqZmlsZSwgc2VjdGlvbiwgMSk7CisgIHN0cnVjdCBibG9jayAqc3RhdGlj X2Jsb2NrOworCisgIHN0YXRpY19ibG9jayA9IGVuZF9zeW10YWJfZ2V0X3N0 YXRpY19ibG9jayAoZW5kX2FkZHIsIG9iamZpbGUsIDEpOworICByZXR1cm4g ZW5kX3N5bXRhYl9mcm9tX3N0YXRpY19ibG9jayAoc3RhdGljX2Jsb2NrLCBv YmpmaWxlLCBzZWN0aW9uLCAxKTsKIH0KIAogLyogU3Vicm91dGluZSBvZiBh dWdtZW50X3R5cGVfc3ltdGFiIHRvIHNpbXBsaWZ5IGl0LgpJbmRleDogYnVp bGRzeW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz L3NyYy9zcmMvZ2RiL2J1aWxkc3ltLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMzMKZGlmZiAtdSAtcCAtcjEuMzMgYnVpbGRzeW0uaAotLS0gYnVpbGRz eW0uaAkxMCBKdWwgMjAxMiAyMDoyMDoxNSAtMDAwMAkxLjMzCisrKyBidWls ZHN5bS5oCTEyIEp1bCAyMDEyIDA0OjU2OjA2IC0wMDAwCkBAIC0yNTgsNiAr MjU4LDE1IEBAIGV4dGVybiB2b2lkIHB1c2hfc3ViZmlsZSAodm9pZCk7CiAK IGV4dGVybiBjaGFyICpwb3Bfc3ViZmlsZSAodm9pZCk7CiAKK2V4dGVybiBz dHJ1Y3QgYmxvY2sgKmVuZF9zeW10YWJfZ2V0X3N0YXRpY19ibG9jayAoQ09S RV9BRERSIGVuZF9hZGRyLAorCQkJCQkJICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKKwkJCQkJCSAgaW50IGV4cGFuZGFibGUpOworCitleHRlcm4gc3Ry dWN0IHN5bXRhYiAqZW5kX3N5bXRhYl9mcm9tX3N0YXRpY19ibG9jayAoc3Ry dWN0IGJsb2NrICpzdGF0aWNfYmxvY2ssCisJCQkJCQkgICAgc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCisJCQkJCQkgICAgaW50IHNlY3Rpb24sCisJCQkJ CQkgICAgaW50IGV4cGFuZGFibGUpOworCiBleHRlcm4gc3RydWN0IHN5bXRh YiAqZW5kX3N5bXRhYiAoQ09SRV9BRERSIGVuZF9hZGRyLAogCQkJCSAgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzZWN0aW9uKTsKIApJbmRleDog ZHdhcmYycmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9jdnMvc3JjL3NyYy9nZGIvZHdhcmYycmVhZC5jLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjY4NApkaWZmIC11IC1wIC1yMS42ODQgZHdhcmYycmVhZC5j Ci0tLSBkd2FyZjJyZWFkLmMJMTAgSnVsIDIwMTIgMjA6Mjg6MzIgLTAwMDAJ MS42ODQKKysrIGR3YXJmMnJlYWQuYwkxMiBKdWwgMjAxMiAwNDo1NjowNyAt MDAwMApAQCAtNjU5Myw2ICs2NTkzLDcgQEAgcHJvY2Vzc19mdWxsX2NvbXBf dW5pdCAoc3RydWN0IGR3YXJmMl9wZQogICBzdHJ1Y3Qgc3ltdGFiICpzeW10 YWI7CiAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvLCAqZGVsYXllZF9saXN0 X2NsZWFudXA7CiAgIENPUkVfQUREUiBiYXNlYWRkcjsKKyAgc3RydWN0IGJs b2NrICpzdGF0aWNfYmxvY2s7CiAKICAgYmFzZWFkZHIgPSBBTk9GRlNFVCAo b2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLCBTRUNUX09GRl9URVhUIChvYmpm aWxlKSk7CiAKQEAgLTY2MjMsNyArNjYyNCwxNyBAQCBwcm9jZXNzX2Z1bGxf Y29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3BlCiAgICAgIGl0LCBieSBzY2Fu bmluZyB0aGUgRElFJ3MgYmVsb3cgdGhlIGNvbXBpbGF0aW9uIHVuaXQuICAq LwogICBnZXRfc2NvcGVfcGNfYm91bmRzIChjdS0+ZGllcywgJmxvd3BjLCAm aGlnaHBjLCBjdSk7CiAKLSAgc3ltdGFiID0gZW5kX3N5bXRhYiAoaGlnaHBj ICsgYmFzZWFkZHIsIG9iamZpbGUsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUp KTsKKyAgc3RhdGljX2Jsb2NrID0gZW5kX3N5bXRhYl9nZXRfc3RhdGljX2Js b2NrIChoaWdocGMgKyBiYXNlYWRkciwgb2JqZmlsZSwgMCk7CisKKyAgLyog SWYgdGhlIGNvbXAgdW5pdCBoYXMgRFdfQVRfcmFuZ2VzLCBpdCBtYXkgaGF2 ZSBkaXNjb250aWd1b3VzIHJhbmdlcy4KKyAgICAgQWxzbywgRFdfQVRfcmFu Z2VzIG1heSByZWNvcmQgcmFuZ2VzIG5vdCBiZWxvbmdpbmcgdG8gYW55IGNo aWxkIERJRXMKKyAgICAgKHN1Y2ggYXMgdmlydHVhbCBtZXRob2QgdGFibGVz KS4gIFJlY29yZCB0aGUgcmFuZ2VzIGluIFNUQVRJQ19CTE9DSydzCisgICAg IGFkZHJtYXAgdG8gaGVscCBlbnN1cmUgaXQgaGFzIGFuIGFjY3VyYXRlIG1h cCBvZiBwYyB2YWx1ZXMgYmVsb25naW5nIHRvCisgICAgIHRoaXMgY29tcCB1 bml0LiAgKi8KKyAgZHdhcmYyX3JlY29yZF9ibG9ja19yYW5nZXMgKGN1LT5k aWVzLCBzdGF0aWNfYmxvY2ssIGJhc2VhZGRyLCBjdSk7CisKKyAgc3ltdGFi ID0gZW5kX3N5bXRhYl9mcm9tX3N0YXRpY19ibG9jayAoc3RhdGljX2Jsb2Nr LCBvYmpmaWxlLAorCQkJCQkgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSksIDAp OwogCiAgIGlmIChzeW10YWIgIT0gTlVMTCkKICAgICB7Cg== --14dae9399badad8e6e04c49b1ba6--