From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23246 invoked by alias); 14 Sep 2009 23:04:24 -0000 Received: (qmail 23238 invoked by uid 22791); 14 Sep 2009 23:04:22 -0000 X-SWARE-Spam-Status: No, hits=-0.8 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_14,KAM_STOCKGEN,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.45.13) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 14 Sep 2009 23:04:18 +0000 Received: from zps75.corp.google.com (zps75.corp.google.com [172.25.146.75]) by smtp-out.google.com with ESMTP id n8EN4Fw7002911 for ; Mon, 14 Sep 2009 16:04:15 -0700 Received: from yxe15 (yxe15.prod.google.com [10.190.2.15]) by zps75.corp.google.com with ESMTP id n8EN4DFc010253 for ; Mon, 14 Sep 2009 16:04:13 -0700 Received: by yxe15 with SMTP id 15so4443081yxe.13 for ; Mon, 14 Sep 2009 16:04:13 -0700 (PDT) MIME-Version: 1.0 Received: by 10.151.21.1 with SMTP id y1mr11121419ybi.3.1252969453231; Mon, 14 Sep 2009 16:04:13 -0700 (PDT) In-Reply-To: References: <20090910231912.0733A843B9@localhost> Date: Mon, 14 Sep 2009 23:04:00 -0000 Message-ID: Subject: Re: [RFC] better dwarf checking for values on the stack From: Doug Evans To: Tom Tromey Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=000e0cd4b3062c9f97047391afb0 X-System-Of-Record: true 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: 2009-09/txt/msg00466.txt.bz2 --000e0cd4b3062c9f97047391afb0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1888 On Mon, Sep 14, 2009 at 10:53 AM, Tom Tromey wrote: >>>>>> "Doug" =3D=3D Doug Evans writes: > > Tom> It seems to me that the inferior-stack-ness of a value must be an > Tom> attribute carried alongside the value on the dwarf stack. > > Doug> How about this? > > Yeah, I think this is the way to go. =A0Thanks. Thanks. I'll check this in in a few days if there are no further issues. 2009-09-14 Doug Evans * dwarf2expr.h (dwarf_value_location): Add more comments describing enum values. (struct dwarf_stack_value): New struct. (struct dwarf_expr_context): Change type of `stack' from CORE_ADDR* to struct dwarf_stack_value*. (struct dwarf_expr_piece): Move `v.value' into its own struct, v.expr, all uses updated. Add v.expr.in_stack_memory. (dwarf_expr_push): Update declaration. (dwarf_expr_fetch_in_stack_memory): Declare. * dwarf2expr.c (dwarf_expr_grow_stack): Update calculation of size of stack value. (dwarf_expr_push): New arg in_stack_memory, all callers updated. (dwarf_expr_fetch_in_stack_memory): New function. (add_piece): Set in_stack_memory for non-literal values. (execute_stack_op): Allow ops to specify where the value is on the program's stack. (execute_stack_op, case DW_OP_fbreg): Mark value as in stack memory. (execute_stack_op, case DW_OP_call_frame_cfa): Ditto. (execute_stack_op, case DW_OP_dup): Copy in_stack_memory flag. (execute_stack_op, cases DW_OP_pick, DW_OP_over): Ditto. (execute_stack_op, cases DW_OP_swap, DW_OP_rot): Update type of dwarf stack value. * dwarf2loc.c (read_pieced_value): Call read_stack for values known to be on the program's stack. (dwarf2_evaluate_loc_desc, case DWARF_VALUE_MEMORY): Call set_value_stack only for objects known to be in stack memory. * dwarf2-frame.c (execute_stack_op): New arg initial_in_stack_memory, all callers updated. --000e0cd4b3062c9f97047391afb0 Content-Type: text/plain; charset=US-ASCII; name="gdb-090914-dwarf-stack-value-3.patch.txt" Content-Disposition: attachment; filename="gdb-090914-dwarf-stack-value-3.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fzltll610 Content-length: 18695 MjAwOS0wOS0xNCAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog ZHdhcmYyZXhwci5oIChkd2FyZl92YWx1ZV9sb2NhdGlvbik6IEFkZCBtb3Jl IGNvbW1lbnRzIGRlc2NyaWJpbmcKCWVudW0gdmFsdWVzLgoJKHN0cnVjdCBk d2FyZl9zdGFja192YWx1ZSk6IE5ldyBzdHJ1Y3QuCgkoc3RydWN0IGR3YXJm X2V4cHJfY29udGV4dCk6IENoYW5nZSB0eXBlIG9mIGBzdGFjaycgZnJvbSBD T1JFX0FERFIqCgl0byBzdHJ1Y3QgZHdhcmZfc3RhY2tfdmFsdWUqLgoJKHN0 cnVjdCBkd2FyZl9leHByX3BpZWNlKTogTW92ZSBgdi52YWx1ZScgaW50byBp dHMgb3duIHN0cnVjdCwgdi5leHByLAoJYWxsIHVzZXMgdXBkYXRlZC4gIEFk ZCB2LmV4cHIuaW5fc3RhY2tfbWVtb3J5LgoJKGR3YXJmX2V4cHJfcHVzaCk6 IFVwZGF0ZSBkZWNsYXJhdGlvbi4KCShkd2FyZl9leHByX2ZldGNoX2luX3N0 YWNrX21lbW9yeSk6IERlY2xhcmUuCgkqIGR3YXJmMmV4cHIuYyAoZHdhcmZf ZXhwcl9ncm93X3N0YWNrKTogVXBkYXRlIGNhbGN1bGF0aW9uIG9mCglzaXpl IG9mIHN0YWNrIHZhbHVlLgoJKGR3YXJmX2V4cHJfcHVzaCk6IE5ldyBhcmcg aW5fc3RhY2tfbWVtb3J5LCBhbGwgY2FsbGVycyB1cGRhdGVkLgoJKGR3YXJm X2V4cHJfZmV0Y2hfaW5fc3RhY2tfbWVtb3J5KTogTmV3IGZ1bmN0aW9uLgoJ KGFkZF9waWVjZSk6IFNldCBpbl9zdGFja19tZW1vcnkgZm9yIG5vbi1saXRl cmFsIHZhbHVlcy4KCShleGVjdXRlX3N0YWNrX29wKTogQWxsb3cgb3BzIHRv IHNwZWNpZnkgd2hlcmUgdGhlIHZhbHVlIGlzIG9uIHRoZQoJcHJvZ3JhbSdz IHN0YWNrLgoJKGV4ZWN1dGVfc3RhY2tfb3AsIGNhc2UgRFdfT1BfZmJyZWcp OiBNYXJrIHZhbHVlIGFzIGluIHN0YWNrIG1lbW9yeS4KCShleGVjdXRlX3N0 YWNrX29wLCBjYXNlIERXX09QX2NhbGxfZnJhbWVfY2ZhKTogRGl0dG8uCgko ZXhlY3V0ZV9zdGFja19vcCwgY2FzZSBEV19PUF9kdXApOiBDb3B5IGluX3N0 YWNrX21lbW9yeSBmbGFnLgoJKGV4ZWN1dGVfc3RhY2tfb3AsIGNhc2VzIERX X09QX3BpY2ssIERXX09QX292ZXIpOiBEaXR0by4KCShleGVjdXRlX3N0YWNr X29wLCBjYXNlcyBEV19PUF9zd2FwLCBEV19PUF9yb3QpOiBVcGRhdGUgdHlw ZSBvZgoJZHdhcmYgc3RhY2sgdmFsdWUuCgkqIGR3YXJmMmxvYy5jIChyZWFk X3BpZWNlZF92YWx1ZSk6IENhbGwgcmVhZF9zdGFjayBmb3IgdmFsdWVzIGtu b3duCgl0byBiZSBvbiB0aGUgcHJvZ3JhbSdzIHN0YWNrLgoJKGR3YXJmMl9l dmFsdWF0ZV9sb2NfZGVzYywgY2FzZSBEV0FSRl9WQUxVRV9NRU1PUlkpOiBD YWxsCglzZXRfdmFsdWVfc3RhY2sgb25seSBmb3Igb2JqZWN0cyBrbm93biB0 byBiZSBpbiBzdGFjayBtZW1vcnkuCgkqIGR3YXJmMi1mcmFtZS5jIChleGVj dXRlX3N0YWNrX29wKTogTmV3IGFyZyBpbml0aWFsX2luX3N0YWNrX21lbW9y eSwKCWFsbCBjYWxsZXJzIHVwZGF0ZWQuCgpJbmRleDogZHdhcmYyLWZyYW1l LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMv c3JjL2dkYi9kd2FyZjItZnJhbWUuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS45OApkaWZmIC11IC1wIC1yMS45OCBkd2FyZjItZnJhbWUuYwotLS0gZHdh cmYyLWZyYW1lLmMJMTEgU2VwIDIwMDkgMTg6Mzg6MzkgLTAwMDAJMS45OAor KysgZHdhcmYyLWZyYW1lLmMJMTQgU2VwIDIwMDkgMjI6NDM6MjggLTAwMDAK QEAgLTM1Nyw3ICszNTcsOCBAQCByZWdpc3RlciAlcyAoIyVkKSBhdCAlcyIp LAogCiBzdGF0aWMgQ09SRV9BRERSCiBleGVjdXRlX3N0YWNrX29wIChnZGJf Ynl0ZSAqZXhwLCBVTE9OR0VTVCBsZW4sIGludCBhZGRyX3NpemUsCi0JCSAg c3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIENPUkVfQUREUiBpbml0 aWFsKQorCQkgIHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCBDT1JF X0FERFIgaW5pdGlhbCwKKwkJICBpbnQgaW5pdGlhbF9pbl9zdGFja19tZW1v cnkpCiB7CiAgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsKICAg Q09SRV9BRERSIHJlc3VsdDsKQEAgLTM3NSw3ICszNzYsNyBAQCBleGVjdXRl X3N0YWNrX29wIChnZGJfYnl0ZSAqZXhwLCBVTE9OR0VTCiAgIGN0eC0+Z2V0 X2ZyYW1lX2NmYSA9IG5vX2dldF9mcmFtZV9jZmE7CiAgIGN0eC0+Z2V0X3Rs c19hZGRyZXNzID0gbm9fZ2V0X3Rsc19hZGRyZXNzOwogCi0gIGR3YXJmX2V4 cHJfcHVzaCAoY3R4LCBpbml0aWFsKTsKKyAgZHdhcmZfZXhwcl9wdXNoIChj dHgsIGluaXRpYWwsIGluaXRpYWxfaW5fc3RhY2tfbWVtb3J5KTsKICAgZHdh cmZfZXhwcl9ldmFsIChjdHgsIGV4cCwgbGVuKTsKICAgcmVzdWx0ID0gZHdh cmZfZXhwcl9mZXRjaCAoY3R4LCAwKTsKIApAQCAtOTc1LDcgKzk3Niw3IEBA IGR3YXJmMl9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnQKICAg ICBjYXNlIENGQV9FWFA6CiAgICAgICBjYWNoZS0+Y2ZhID0KIAlleGVjdXRl X3N0YWNrX29wIChmcy0+cmVncy5jZmFfZXhwLCBmcy0+cmVncy5jZmFfZXhw X2xlbiwKLQkJCSAgY2FjaGUtPmFkZHJfc2l6ZSwgdGhpc19mcmFtZSwgMCk7 CisJCQkgIGNhY2hlLT5hZGRyX3NpemUsIHRoaXNfZnJhbWUsIDAsIDApOwog ICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgpAQCAtMTEzMSw3ICsxMTMy LDcgQEAgZHdhcmYyX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFt ZQogICAgIGNhc2UgRFdBUkYyX0ZSQU1FX1JFR19TQVZFRF9FWFA6CiAgICAg ICBhZGRyID0gZXhlY3V0ZV9zdGFja19vcCAoY2FjaGUtPnJlZ1tyZWdudW1d LmxvYy5leHAsCiAJCQkgICAgICAgY2FjaGUtPnJlZ1tyZWdudW1dLmV4cF9s ZW4sCi0JCQkgICAgICAgY2FjaGUtPmFkZHJfc2l6ZSwgdGhpc19mcmFtZSwg Y2FjaGUtPmNmYSk7CisJCQkgICAgICAgY2FjaGUtPmFkZHJfc2l6ZSwgdGhp c19mcmFtZSwgY2FjaGUtPmNmYSwgMSk7CiAgICAgICByZXR1cm4gZnJhbWVf dW53aW5kX2dvdF9tZW1vcnkgKHRoaXNfZnJhbWUsIHJlZ251bSwgYWRkcik7 CiAKICAgICBjYXNlIERXQVJGMl9GUkFNRV9SRUdfU0FWRURfVkFMX09GRlNF VDoKQEAgLTExNDEsNyArMTE0Miw3IEBAIGR3YXJmMl9mcmFtZV9wcmV2X3Jl Z2lzdGVyIChzdHJ1Y3QgZnJhbWUKICAgICBjYXNlIERXQVJGMl9GUkFNRV9S RUdfU0FWRURfVkFMX0VYUDoKICAgICAgIGFkZHIgPSBleGVjdXRlX3N0YWNr X29wIChjYWNoZS0+cmVnW3JlZ251bV0ubG9jLmV4cCwKIAkJCSAgICAgICBj YWNoZS0+cmVnW3JlZ251bV0uZXhwX2xlbiwKLQkJCSAgICAgICBjYWNoZS0+ YWRkcl9zaXplLCB0aGlzX2ZyYW1lLCBjYWNoZS0+Y2ZhKTsKKwkJCSAgICAg ICBjYWNoZS0+YWRkcl9zaXplLCB0aGlzX2ZyYW1lLCBjYWNoZS0+Y2ZhLCAx KTsKICAgICAgIHJldHVybiBmcmFtZV91bndpbmRfZ290X2NvbnN0YW50ICh0 aGlzX2ZyYW1lLCByZWdudW0sIGFkZHIpOwogCiAgICAgY2FzZSBEV0FSRjJf RlJBTUVfUkVHX1VOU1BFQ0lGSUVEOgpJbmRleDogZHdhcmYyZXhwci5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvZHdhcmYyZXhwci5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM3CmRp ZmYgLXUgLXAgLXIxLjM3IGR3YXJmMmV4cHIuYwotLS0gZHdhcmYyZXhwci5j CTExIFNlcCAyMDA5IDIzOjExOjM0IC0wMDAwCTEuMzcKKysrIGR3YXJmMmV4 cHIuYwkxNCBTZXAgMjAwOSAyMjo0MzoyOCAtMDAwMApAQCAtODcsNyArODcs NyBAQCBkd2FyZl9leHByX2dyb3dfc3RhY2sgKHN0cnVjdCBkd2FyZl9leHBy CiAgICAgewogICAgICAgc2l6ZV90IG5ld2xlbiA9IGN0eC0+c3RhY2tfbGVu ICsgbmVlZCArIDEwOwogICAgICAgY3R4LT5zdGFjayA9IHhyZWFsbG9jIChj dHgtPnN0YWNrLAotCQkJICAgICBuZXdsZW4gKiBzaXplb2YgKENPUkVfQURE UikpOworCQkJICAgICBuZXdsZW4gKiBzaXplb2YgKHN0cnVjdCBkd2FyZl9z dGFja192YWx1ZSkpOwogICAgICAgY3R4LT5zdGFja19hbGxvY2F0ZWQgPSBu ZXdsZW47CiAgICAgfQogfQpAQCAtOTUsMTAgKzk1LDE1IEBAIGR3YXJmX2V4 cHJfZ3Jvd19zdGFjayAoc3RydWN0IGR3YXJmX2V4cHIKIC8qIFB1c2ggVkFM VUUgb250byBDVFgncyBzdGFjay4gICovCiAKIHZvaWQKLWR3YXJmX2V4cHJf cHVzaCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBDT1JFX0FE RFIgdmFsdWUpCitkd2FyZl9leHByX3B1c2ggKHN0cnVjdCBkd2FyZl9leHBy X2NvbnRleHQgKmN0eCwgQ09SRV9BRERSIHZhbHVlLAorCQkgaW50IGluX3N0 YWNrX21lbW9yeSkKIHsKKyAgc3RydWN0IGR3YXJmX3N0YWNrX3ZhbHVlICp2 OworCiAgIGR3YXJmX2V4cHJfZ3Jvd19zdGFjayAoY3R4LCAxKTsKLSAgY3R4 LT5zdGFja1tjdHgtPnN0YWNrX2xlbisrXSA9IHZhbHVlOworICB2ID0gJmN0 eC0+c3RhY2tbY3R4LT5zdGFja19sZW4rK107CisgIHYtPnZhbHVlID0gdmFs dWU7CisgIHYtPmluX3N0YWNrX21lbW9yeSA9IGluX3N0YWNrX21lbW9yeTsK IH0KIAogLyogUG9wIHRoZSB0b3AgaXRlbSBvZmYgb2YgQ1RYJ3Mgc3RhY2su ICAqLwpAQCAtMTE5LDcgKzEyNCwxOSBAQCBkd2FyZl9leHByX2ZldGNoIChz dHJ1Y3QgZHdhcmZfZXhwcl9jb250CiAgIGlmIChjdHgtPnN0YWNrX2xlbiA8 PSBuKQogICAgICBlcnJvciAoXygiQXNrZWQgZm9yIHBvc2l0aW9uICVkIG9m IHN0YWNrLCBzdGFjayBvbmx5IGhhcyAlZCBlbGVtZW50cyBvbiBpdC4iKSwK IAkgICAgbiwgY3R4LT5zdGFja19sZW4pOwotICByZXR1cm4gY3R4LT5zdGFj a1tjdHgtPnN0YWNrX2xlbiAtICgxICsgbildOworICByZXR1cm4gY3R4LT5z dGFja1tjdHgtPnN0YWNrX2xlbiAtICgxICsgbildLnZhbHVlOworCit9CisK Ky8qIFJldHJpZXZlIHRoZSBpbl9zdGFja19tZW1vcnkgZmxhZyBvZiB0aGUg Tid0aCBpdGVtIG9uIENUWCdzIHN0YWNrLiAgKi8KKworaW50Citkd2FyZl9l eHByX2ZldGNoX2luX3N0YWNrX21lbW9yeSAoc3RydWN0IGR3YXJmX2V4cHJf Y29udGV4dCAqY3R4LCBpbnQgbikKK3sKKyAgaWYgKGN0eC0+c3RhY2tfbGVu IDw9IG4pCisgICAgIGVycm9yIChfKCJBc2tlZCBmb3IgcG9zaXRpb24gJWQg b2Ygc3RhY2ssIHN0YWNrIG9ubHkgaGFzICVkIGVsZW1lbnRzIG9uIGl0LiIp LAorCSAgICBuLCBjdHgtPnN0YWNrX2xlbik7CisgIHJldHVybiBjdHgtPnN0 YWNrW2N0eC0+c3RhY2tfbGVuIC0gKDEgKyBuKV0uaW5fc3RhY2tfbWVtb3J5 OwogCiB9CiAKQEAgLTE0OCw3ICsxNjUsMTAgQEAgYWRkX3BpZWNlIChzdHJ1 Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdAogICAgICAgcC0+di5saXRlcmFs Lmxlbmd0aCA9IGN0eC0+bGVuOwogICAgIH0KICAgZWxzZQotICAgIHAtPnYu dmFsdWUgPSBkd2FyZl9leHByX2ZldGNoIChjdHgsIDApOworICAgIHsKKyAg ICAgIHAtPnYuZXhwci52YWx1ZSA9IGR3YXJmX2V4cHJfZmV0Y2ggKGN0eCwg MCk7CisgICAgICBwLT52LmV4cHIuaW5fc3RhY2tfbWVtb3J5ID0gZHdhcmZf ZXhwcl9mZXRjaF9pbl9zdGFja19tZW1vcnkgKGN0eCwgMCk7CisgICAgfQog fQogCiAvKiBFdmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBhdCBBRERSIChMRU4g Ynl0ZXMgbG9uZykgdXNpbmcgdGhlIGNvbnRleHQKQEAgLTMyOSw2ICszNDks MTMgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJmX2V4cHJfY29u dAogICAgIHsKICAgICAgIGVudW0gZHdhcmZfbG9jYXRpb25fYXRvbSBvcCA9 ICpvcF9wdHIrKzsKICAgICAgIENPUkVfQUREUiByZXN1bHQ7CisgICAgICAv KiBBc3N1bWUgdGhlIHZhbHVlIGlzIG5vdCBpbiBzdGFjayBtZW1vcnkuCisJ IENvZGUgdGhhdCBrbm93cyBvdGhlcndpc2Ugc2V0cyB0aGlzIHRvIDEuCisJ IFNvbWUgYXJpdGhtZXRpYyBvbiBzdGFjayBhZGRyZXNzZXMgY2FuIHByb2Jh Ymx5IGJlIGFzc3VtZWQgdG8gc3RpbGwKKwkgYmUgYSBzdGFjayBhZGRyZXNz LCBidXQgd2Ugc2tpcCB0aGlzIGNvbXBsaWNhdGlvbiBmb3Igbm93LgorCSBU aGlzIGlzIGp1c3QgYW4gb3B0aW1pemF0aW9uLCBzbyBpdCdzIGFsd2F5cyBv ayB0byBwdW50CisJIGFuZCBsZWF2ZSB0aGlzIGFzIDAuICAqLworICAgICAg aW50IGluX3N0YWNrX21lbW9yeSA9IDA7CiAgICAgICBVTE9OR0VTVCB1b2Zm c2V0LCByZWc7CiAgICAgICBMT05HRVNUIG9mZnNldDsKIApAQCAtNTU3LDEy ICs1ODQsMTUgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJmX2V4 cHJfY29udAogCSAgICBpZiAoY3R4LT5sb2NhdGlvbiA9PSBEV0FSRl9WQUxV RV9SRUdJU1RFUikKIAkgICAgICByZXN1bHQgPSAoY3R4LT5yZWFkX3JlZykg KGN0eC0+YmF0b24sIHJlc3VsdCk7CiAJICAgIHJlc3VsdCA9IHJlc3VsdCAr IG9mZnNldDsKKwkgICAgaW5fc3RhY2tfbWVtb3J5ID0gMTsKIAkgICAgY3R4 LT5zdGFja19sZW4gPSBiZWZvcmVfc3RhY2tfbGVuOwogCSAgICBjdHgtPmxv Y2F0aW9uID0gRFdBUkZfVkFMVUVfTUVNT1JZOwogCSAgfQogCSAgYnJlYWs7 CisKIAljYXNlIERXX09QX2R1cDoKIAkgIHJlc3VsdCA9IGR3YXJmX2V4cHJf ZmV0Y2ggKGN0eCwgMCk7CisJICBpbl9zdGFja19tZW1vcnkgPSBkd2FyZl9l eHByX2ZldGNoX2luX3N0YWNrX21lbW9yeSAoY3R4LCAwKTsKIAkgIGJyZWFr OwogCiAJY2FzZSBEV19PUF9kcm9wOgpAQCAtNTcyLDExICs2MDIsMTIgQEAg ZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJmX2V4cHJfY29udAogCWNh c2UgRFdfT1BfcGljazoKIAkgIG9mZnNldCA9ICpvcF9wdHIrKzsKIAkgIHJl c3VsdCA9IGR3YXJmX2V4cHJfZmV0Y2ggKGN0eCwgb2Zmc2V0KTsKKwkgIGlu X3N0YWNrX21lbW9yeSA9IGR3YXJmX2V4cHJfZmV0Y2hfaW5fc3RhY2tfbWVt b3J5IChjdHgsIG9mZnNldCk7CiAJICBicmVhazsKIAkgIAogCWNhc2UgRFdf T1Bfc3dhcDoKIAkgIHsKLQkgICAgQ09SRV9BRERSIHQxLCB0MjsKKwkgICAg c3RydWN0IGR3YXJmX3N0YWNrX3ZhbHVlIHQxLCB0MjsKIAogCSAgICBpZiAo Y3R4LT5zdGFja19sZW4gPCAyKQogCSAgICAgICBlcnJvciAoXygiTm90IGVu b3VnaCBlbGVtZW50cyBmb3IgRFdfT1Bfc3dhcC4gTmVlZCAyLCBoYXZlICVk LiIpLApAQCAtNTkwLDExICs2MjEsMTIgQEAgZXhlY3V0ZV9zdGFja19vcCAo c3RydWN0IGR3YXJmX2V4cHJfY29udAogCiAJY2FzZSBEV19PUF9vdmVyOgog CSAgcmVzdWx0ID0gZHdhcmZfZXhwcl9mZXRjaCAoY3R4LCAxKTsKKwkgIGlu X3N0YWNrX21lbW9yeSA9IGR3YXJmX2V4cHJfZmV0Y2hfaW5fc3RhY2tfbWVt b3J5IChjdHgsIDEpOwogCSAgYnJlYWs7CiAKIAljYXNlIERXX09QX3JvdDoK IAkgIHsKLQkgICAgQ09SRV9BRERSIHQxLCB0MiwgdDM7CisJICAgIHN0cnVj dCBkd2FyZl9zdGFja192YWx1ZSB0MSwgdDIsIHQzOwogCiAJICAgIGlmIChj dHgtPnN0YWNrX2xlbiA8IDMpCiAJICAgICAgIGVycm9yIChfKCJOb3QgZW5v dWdoIGVsZW1lbnRzIGZvciBEV19PUF9yb3QuIE5lZWQgMywgaGF2ZSAlZC4i KSwKQEAgLTc1OCw2ICs3OTAsNyBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1 Y3QgZHdhcmZfZXhwcl9jb250CiAKIAljYXNlIERXX09QX2NhbGxfZnJhbWVf Y2ZhOgogCSAgcmVzdWx0ID0gKGN0eC0+Z2V0X2ZyYW1lX2NmYSkgKGN0eC0+ YmF0b24pOworCSAgaW5fc3RhY2tfbWVtb3J5ID0gMTsKIAkgIGJyZWFrOwog CiAJY2FzZSBEV19PUF9HTlVfcHVzaF90bHNfYWRkcmVzczoKQEAgLTgyMCw3 ICs4NTMsNyBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZfZXhw cl9jb250CiAJfQogCiAgICAgICAvKiBNb3N0IHRoaW5ncyBwdXNoIGEgcmVz dWx0IHZhbHVlLiAgKi8KLSAgICAgIGR3YXJmX2V4cHJfcHVzaCAoY3R4LCBy ZXN1bHQpOworICAgICAgZHdhcmZfZXhwcl9wdXNoIChjdHgsIHJlc3VsdCwg aW5fc3RhY2tfbWVtb3J5KTsKICAgICBub19wdXNoOjsKICAgICB9CiAKSW5k ZXg6IGR3YXJmMmV4cHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2R3YXJmMmV4cHIuaCx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4xOApkaWZmIC11IC1wIC1yMS4xOCBkd2FyZjJleHBy LmgKLS0tIGR3YXJmMmV4cHIuaAkxMSBTZXAgMjAwOSAxODozODozOSAtMDAw MAkxLjE4CisrKyBkd2FyZjJleHByLmgJMTQgU2VwIDIwMDkgMjI6NDM6Mjgg LTAwMDAKQEAgLTI2LDIyICsyNiw0MSBAQAogLyogVGhlIGxvY2F0aW9uIG9m IGEgdmFsdWUuICAqLwogZW51bSBkd2FyZl92YWx1ZV9sb2NhdGlvbgogewot ICAvKiBUaGUgcGllY2UgaXMgaW4gbWVtb3J5LiAgKi8KKyAgLyogVGhlIHBp ZWNlIGlzIGluIG1lbW9yeS4KKyAgICAgVGhlIHZhbHVlIG9uIHRoZSBkd2Fy ZiBzdGFjayBpcyBpdHMgYWRkcmVzcy4gICovCiAgIERXQVJGX1ZBTFVFX01F TU9SWSwKLSAgLyogVGhlIHBpZWNlIGlzIGluIGEgcmVnaXN0ZXIuICAqLwor CisgIC8qIFRoZSBwaWVjZSBpcyBpbiBhIHJlZ2lzdGVyLgorICAgICBUaGUg dmFsdWUgb24gdGhlIGR3YXJmIHN0YWNrIGlzIHRoZSByZWdpc3RlciBudW1i ZXIuICAqLwogICBEV0FSRl9WQUxVRV9SRUdJU1RFUiwKLSAgLyogVGhlIHBp ZWNlIGlzIG9uIHRoZSBzdGFjay4gICovCisKKyAgLyogVGhlIHBpZWNlIGlz IG9uIHRoZSBkd2FyZiBzdGFjay4gICovCiAgIERXQVJGX1ZBTFVFX1NUQUNL LAorCiAgIC8qIFRoZSBwaWVjZSBpcyBhIGxpdGVyYWwuICAqLwogICBEV0FS Rl9WQUxVRV9MSVRFUkFMCiB9OwogCisvKiBUaGUgZHdhcmYgZXhwcmVzc2lv biBzdGFjay4gICovCisKK3N0cnVjdCBkd2FyZl9zdGFja192YWx1ZQorewor ICBDT1JFX0FERFIgdmFsdWU7CisKKyAgLyogTm9uLXplcm8gaWYgdGhlIHBp ZWNlIGlzIGluIG1lbW9yeSBhbmQgaXMga25vd24gdG8gYmUKKyAgICAgb24g dGhlIHByb2dyYW0ncyBzdGFjay4gIEl0IGlzIGFsd2F5cyBvayB0byBzZXQg dGhpcyB0byB6ZXJvLgorICAgICBUaGlzIGlzIHVzZWQsIGZvciBleGFtcGxl LCB0byBvcHRpbWl6ZSBtZW1vcnkgYWNjZXNzIGZyb20gdGhlIHRhcmdldC4K KyAgICAgSXQgY2FuIHZhc3RseSBzcGVlZCB1cCBiYWNrdHJhY2VzIG9uIGxv bmcgbGF0ZW5jeSBjb25uZWN0aW9ucyB3aGVuCisgICAgICJzZXQgc3RhY2st Y2FjaGUgb24iLiAgKi8KKyAgaW50IGluX3N0YWNrX21lbW9yeTsKK307CisK IC8qIFRoZSBleHByZXNzaW9uIGV2YWx1YXRvciB3b3JrcyB3aXRoIGEgZHdh cmZfZXhwcl9jb250ZXh0LCBkZXNjcmliaW5nCiAgICBpdHMgY3VycmVudCBz dGF0ZSBhbmQgaXRzIGNhbGxiYWNrcy4gICovCiBzdHJ1Y3QgZHdhcmZfZXhw cl9jb250ZXh0CiB7CiAgIC8qIFRoZSBzdGFjayBvZiB2YWx1ZXMsIGFsbG9j YXRlZCB3aXRoIHhtYWxsb2MuICAqLwotICBDT1JFX0FERFIgKnN0YWNrOwor ICBzdHJ1Y3QgZHdhcmZfc3RhY2tfdmFsdWUgKnN0YWNrOwogCiAgIC8qIFRo ZSBudW1iZXIgb2YgdmFsdWVzIGN1cnJlbnRseSBwdXNoZWQgb24gdGhlIHN0 YWNrLCBhbmQgdGhlCiAgICAgIG51bWJlciBvZiBlbGVtZW50cyBhbGxvY2F0 ZWQgdG8gdGhlIHN0YWNrLiAgKi8KQEAgLTExMSw3ICsxMzAsNyBAQCBzdHJ1 Y3QgZHdhcmZfZXhwcl9jb250ZXh0CiAgICAgIEVhY2ggdGltZSBEV19PUF9w aWVjZSBpcyBleGVjdXRlZCwgd2UgYWRkIGEgbmV3IGVsZW1lbnQgdG8gdGhl CiAgICAgIGVuZCBvZiB0aGlzIGFycmF5LCByZWNvcmRpbmcgdGhlIGN1cnJl bnQgdG9wIG9mIHRoZSBzdGFjaywgdGhlCiAgICAgIGN1cnJlbnQgbG9jYXRp b24sIGFuZCB0aGUgc2l6ZSBnaXZlbiBhcyB0aGUgb3BlcmFuZCB0bwotICAg ICBEV19PUF9waWVjZS4gIFdlIHRoZW4gcG9wIHRoZSB0b3AgdmFsdWUgZnJv bSB0aGUgc3RhY2ssIHJlc3QgdGhlCisgICAgIERXX09QX3BpZWNlLiAgV2Ug dGhlbiBwb3AgdGhlIHRvcCB2YWx1ZSBmcm9tIHRoZSBzdGFjaywgcmVzZXQg dGhlCiAgICAgIGxvY2F0aW9uLCBhbmQgcmVzdW1lIGV2YWx1YXRpb24uCiAK ICAgICAgVGhlIER3YXJmIHNwZWMgZG9lc24ndCBzYXkgd2hldGhlciBEV19P UF9waWVjZSBwb3BzIHRoZSB0b3AgdmFsdWUKQEAgLTE0MCw4ICsxNTksMTQg QEAgc3RydWN0IGR3YXJmX2V4cHJfcGllY2UKIAogICB1bmlvbgogICB7Ci0g ICAgLyogVGhpcyBwaWVjZSdzIGFkZHJlc3Mgb3IgcmVnaXN0ZXIgbnVtYmVy LiAgKi8KLSAgICBDT1JFX0FERFIgdmFsdWU7CisgICAgc3RydWN0CisgICAg eworICAgICAgLyogVGhpcyBwaWVjZSdzIGFkZHJlc3Mgb3IgcmVnaXN0ZXIg bnVtYmVyLiAgKi8KKyAgICAgIENPUkVfQUREUiB2YWx1ZTsKKyAgICAgIC8q IE5vbi16ZXJvIGlmIHRoZSBwaWVjZSBpcyBrbm93biB0byBiZSBpbiBtZW1v cnkgYW5kIG9uCisJIHRoZSBwcm9ncmFtJ3Mgc3RhY2suICAqLworICAgICAg aW50IGluX3N0YWNrX21lbW9yeTsKKyAgICB9IGV4cHI7CiAKICAgICBzdHJ1 Y3QKICAgICB7CkBAIC0xNjIsMTEgKzE4NywxMyBAQCB2b2lkIGZyZWVfZHdh cmZfZXhwcl9jb250ZXh0IChzdHJ1Y3QgZHdhCiBzdHJ1Y3QgY2xlYW51cCAq CiAgICAgbWFrZV9jbGVhbnVwX2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChz dHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgpOwogCi12b2lkIGR3YXJm X2V4cHJfcHVzaCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBD T1JFX0FERFIgdmFsdWUpOwordm9pZCBkd2FyZl9leHByX3B1c2ggKHN0cnVj dCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgQ09SRV9BRERSIHZhbHVlLAor CQkgICAgICBpbnQgaW5fc3RhY2tfbWVtb3J5KTsKIHZvaWQgZHdhcmZfZXhw cl9wb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCk7CiB2b2lk IGR3YXJmX2V4cHJfZXZhbCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAq Y3R4LCB1bnNpZ25lZCBjaGFyICphZGRyLAogCQkgICAgICBzaXplX3QgbGVu KTsKIENPUkVfQUREUiBkd2FyZl9leHByX2ZldGNoIChzdHJ1Y3QgZHdhcmZf ZXhwcl9jb250ZXh0ICpjdHgsIGludCBuKTsKK2ludCBkd2FyZl9leHByX2Zl dGNoX2luX3N0YWNrX21lbW9yeSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4 dCAqY3R4LCBpbnQgbik7CiAKIAogZ2RiX2J5dGUgKnJlYWRfdWxlYjEyOCAo Z2RiX2J5dGUgKmJ1ZiwgZ2RiX2J5dGUgKmJ1Zl9lbmQsIFVMT05HRVNUICog cik7CkluZGV4OiBkd2FyZjJsb2MuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2R3YXJmMmxvYy5jLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjY3CmRpZmYgLXUgLXAgLXIxLjY3IGR3YXJm MmxvYy5jCi0tLSBkd2FyZjJsb2MuYwkxMSBTZXAgMjAwOSAxODozODozOSAt MDAwMAkxLjY3CisrKyBkd2FyZjJsb2MuYwkxNCBTZXAgMjAwOSAyMjo0Mzoy OCAtMDAwMApAQCAtMjY1LDE0ICsyNjUsMTcgQEAgcmVhZF9waWVjZWRfdmFs dWUgKHN0cnVjdCB2YWx1ZSAqdikKIAkgICAgc3RydWN0IGdkYmFyY2ggKmFy Y2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwogCSAgICBiZmRfYnl0ZSBy ZWd2YWxbTUFYX1JFR0lTVEVSX1NJWkVdOwogCSAgICBpbnQgZ2RiX3JlZ251 bSA9IGdkYmFyY2hfZHdhcmYyX3JlZ190b19yZWdudW0gKGFyY2gsCi0JCQkJ CQkJICAgcC0+di52YWx1ZSk7CisJCQkJCQkJICAgcC0+di5leHByLnZhbHVl KTsKIAkgICAgZ2V0X2ZyYW1lX3JlZ2lzdGVyIChmcmFtZSwgZ2RiX3JlZ251 bSwgcmVndmFsKTsKIAkgICAgbWVtY3B5IChjb250ZW50cyArIG9mZnNldCwg cmVndmFsLCBwLT5zaXplKTsKIAkgIH0KIAkgIGJyZWFrOwogCiAJY2FzZSBE V0FSRl9WQUxVRV9NRU1PUlk6Ci0JICByZWFkX21lbW9yeSAocC0+di52YWx1 ZSwgY29udGVudHMgKyBvZmZzZXQsIHAtPnNpemUpOworCSAgaWYgKHAtPnYu ZXhwci5pbl9zdGFja19tZW1vcnkpCisJICAgIHJlYWRfc3RhY2sgKHAtPnYu ZXhwci52YWx1ZSwgY29udGVudHMgKyBvZmZzZXQsIHAtPnNpemUpOworCSAg ZWxzZQorCSAgICByZWFkX21lbW9yeSAocC0+di5leHByLnZhbHVlLCBjb250 ZW50cyArIG9mZnNldCwgcC0+c2l6ZSk7CiAJICBicmVhazsKIAogCWNhc2Ug RFdBUkZfVkFMVUVfU1RBQ0s6CkBAIC0yODIsNyArMjg1LDcgQEAgcmVhZF9w aWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdikKIAkgICAgaW50IGFkZHJf c2l6ZSA9IGdkYmFyY2hfYWRkcl9iaXQgKGMtPmFyY2gpIC8gODsKIAkgICAg c3RvcmVfdW5zaWduZWRfaW50ZWdlciAoYnl0ZXMsIGFkZHJfc2l6ZSwKIAkJ CQkgICAgZ2RiYXJjaF9ieXRlX29yZGVyIChjLT5hcmNoKSwKLQkJCQkgICAg cC0+di52YWx1ZSk7CisJCQkJICAgIHAtPnYuZXhwci52YWx1ZSk7CiAJICAg IG4gPSBwLT5zaXplOwogCSAgICBpZiAobiA+IGFkZHJfc2l6ZSkKIAkgICAg ICBuID0gYWRkcl9zaXplOwpAQCAtMzMwLDEyICszMzMsMTIgQEAgd3JpdGVf cGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnRvLCBzdAogCWNhc2UgRFdB UkZfVkFMVUVfUkVHSVNURVI6CiAJICB7CiAJICAgIHN0cnVjdCBnZGJhcmNo ICphcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKLQkgICAgaW50IGdk Yl9yZWdudW0gPSBnZGJhcmNoX2R3YXJmMl9yZWdfdG9fcmVnbnVtIChhcmNo LCBwLT52LnZhbHVlKTsKKwkgICAgaW50IGdkYl9yZWdudW0gPSBnZGJhcmNo X2R3YXJmMl9yZWdfdG9fcmVnbnVtIChhcmNoLCBwLT52LmV4cHIudmFsdWUp OwogCSAgICBwdXRfZnJhbWVfcmVnaXN0ZXIgKGZyYW1lLCBnZGJfcmVnbnVt LCBjb250ZW50cyArIG9mZnNldCk7CiAJICB9CiAJICBicmVhazsKIAljYXNl IERXQVJGX1ZBTFVFX01FTU9SWToKLQkgIHdyaXRlX21lbW9yeSAocC0+di52 YWx1ZSwgY29udGVudHMgKyBvZmZzZXQsIHAtPnNpemUpOworCSAgd3JpdGVf bWVtb3J5IChwLT52LmV4cHIudmFsdWUsIGNvbnRlbnRzICsgb2Zmc2V0LCBw LT5zaXplKTsKIAkgIGJyZWFrOwogCWRlZmF1bHQ6CiAJICBzZXRfdmFsdWVf b3B0aW1pemVkX291dCAodG8sIDEpOwpAQCAtNDM0LDExICs0MzcsMTMgQEAg ZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3Qgc3ltYm9sIAogCWNh c2UgRFdBUkZfVkFMVUVfTUVNT1JZOgogCSAgewogCSAgICBDT1JFX0FERFIg YWRkcmVzcyA9IGR3YXJmX2V4cHJfZmV0Y2ggKGN0eCwgMCk7CisJICAgIGlu dCBpbl9zdGFja19tZW1vcnkgPSBkd2FyZl9leHByX2ZldGNoX2luX3N0YWNr X21lbW9yeSAoY3R4LCAwKTsKIAogCSAgICByZXR2YWwgPSBhbGxvY2F0ZV92 YWx1ZSAoU1lNQk9MX1RZUEUgKHZhcikpOwogCSAgICBWQUxVRV9MVkFMIChy ZXR2YWwpID0gbHZhbF9tZW1vcnk7CiAJICAgIHNldF92YWx1ZV9sYXp5IChy ZXR2YWwsIDEpOwotCSAgICBzZXRfdmFsdWVfc3RhY2sgKHJldHZhbCwgMSk7 CisJICAgIGlmIChpbl9zdGFja19tZW1vcnkpCisJICAgICAgc2V0X3ZhbHVl X3N0YWNrIChyZXR2YWwsIDEpOwogCSAgICBzZXRfdmFsdWVfYWRkcmVzcyAo cmV0dmFsLCBhZGRyZXNzKTsKIAkgIH0KIAkgIGJyZWFrOwpAQCAtNDg1LDEw ICs0OTAsNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCBz eW1ib2wgCiAKICAgcmV0dXJuIHJldHZhbDsKIH0KLQotCi0KLQogDAogLyog SGVscGVyIGZ1bmN0aW9ucyBhbmQgYmF0b24gZm9yIGR3YXJmMl9sb2NfZGVz Y19uZWVkc19mcmFtZS4gICovCiAK --000e0cd4b3062c9f97047391afb0--