From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x144.google.com (mail-il1-x144.google.com [IPv6:2607:f8b0:4864:20::144]) by sourceware.org (Postfix) with ESMTPS id E1E99389042A for ; Tue, 23 Jun 2020 19:04:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org E1E99389042A Received: by mail-il1-x144.google.com with SMTP id t85so11129242ili.5 for ; Tue, 23 Jun 2020 12:04:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=BucImNk3vP5LLKZYjIQc78uLMcDsv/ihf7GMk48p1LA=; b=AuMRpg9WoSnTdtIgeHqetodmdSwG7RBEwNrsFTzspR7Y6+vW8sZW4BehiDiE+2secF UARr3wQIPg0aWYU1F/4+pb/7fpw4t/P0dcuHi2DVIPQiJtwZVxVG/jangs+A9KmqMxPW 9y8vR194QNUtKrZ1j1aalDIZPZ8DpUP+7nAe29V/bxXwX79xcAH82AK48o/N5v09OC/S p/jH7DYKeFZ77KpQZap/PIUvB51S3IxSvEMDJASya0qerW5J9TNFEjLd0/y8mi0OK7kf k3sWriOPb/b14wX9GDTtVw9h0BGmiRAfXBkTpSlwkeiFuhZwRdFvwQjd+shuQCBlXBIL KI3w== X-Gm-Message-State: AOAM530sNNGz27k8ytsAfAmwOtxlrXx5fARwdZ+JQlJlw7VYB6PXVGv2 pNXGQ2qrePMCjF6J5ypY5Oc6raXAaCQcjClgivKtuVQO X-Google-Smtp-Source: ABdhPJx5hjy+XIMNNfm7XvF94sugcZz+pbIP604MmF4D+tfkpzp4VYlOd+whDA+2PQ0xhS6NnX9e3ICpkZw8hM/YfL8= X-Received: by 2002:a05:6e02:10c:: with SMTP id t12mr24070316ilm.187.1592939071998; Tue, 23 Jun 2020 12:04:31 -0700 (PDT) MIME-Version: 1.0 References: <87lfl634rs.fsf@tromey.com> <87h7vsqk5h.fsf@tromey.com> <87h7v815n7.fsf@tromey.com> In-Reply-To: <87h7v815n7.fsf@tromey.com> From: Caroline Tice Date: Tue, 23 Jun 2020 12:04:20 -0700 Message-ID: Subject: Re: [PATCH] Fix issues with reading rnglists, especially from dwo files, for DWARF v5 To: Tom Tromey Cc: Caroline Tice via Gdb-patches , Eric Christopher Content-Type: multipart/mixed; boundary="0000000000008bd5c305a8c50774" X-Spam-Status: No, score=-23.5 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH, GIT_PATCH_0, HTML_MESSAGE, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL, USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Jun 2020 19:04:34 -0000 --0000000000008bd5c305a8c50774 Content-Type: text/plain; charset="UTF-8" On Thu, Jun 18, 2020 at 1:27 PM Tom Tromey wrote: > >>>>> "Caroline" == Caroline Tice via Gdb-patches < > gdb-patches@sourceware.org> writes: > > Thanks for the patch. > > Caroline> + /* if (dwarf2_attr_no_follow (comp_unit_die, > DW_AT_ranges)) */ > > No need for commented-out code. > > Done. > Caroline> + if (comp_unit_die->attr (DW_AT_ranges) != nullptr) > Caroline> + { > Caroline> + cu->cu_ranges_from_skeleton = true; > Caroline> + } > > You can remove the braces here. Normally in gdb there are only braces > if there are multiple statements (or a comment). > > Done. > Caroline> + if (tag == DW_TAG_compile_unit && > Caroline> + cu->cu_ranges_from_skeleton) > > The GNU / gdb style is to break before operators, not after (including > assignment FWIW). There are several occurrences of this, I didn't mark > them all. > > Done. > Caroline> + if (section == nullptr) > Caroline> + error(_("Cannot find .debug_rnglists section [in module > %s]"), > > Space before "(". > > Done. > Caroline> diff --git a/testsuite/gdb.dwarf2/dw5-rnglist-test.cc > b/testsuite/gdb.dwarf2/dw5-rnglist-test.cc > Caroline> new file mode 100644 > Caroline> index 0000000..4d650e1279 > Caroline> --- /dev/null > Caroline> +++ b/testsuite/gdb.dwarf2/dw5-rnglist-test.cc > Caroline> @@ -0,0 +1,71 @@ > Caroline> +#include > > Tests also need the copyright header. > > Done. > Caroline> diff --git a/testsuite/gdb.dwarf2/dw5-rnglist-test.exp > b/testsuite/gdb.dwarf2/dw5-rnglist-test.exp > Caroline> new file mode 100644 > Caroline> index 0000000..b5c6c3bfe3 > Caroline> --- /dev/null > Caroline> +++ b/testsuite/gdb.dwarf2/dw5-rnglist-test.exp > Caroline> @@ -0,0 +1,40 @@ > Caroline> +# Copyright 2011-2020 Free Software Foundation, Inc. > > This should probably just be 2020. > > Done. > Tom > I believe I have addressed all of your comments. The updated patch is attached. Please let me know if this is ok now. Thanks! -- Caroline Tice cmtice@google.com --0000000000008bd5c305a8c50774 Content-Type: application/octet-stream; name="gdb-dwo-rnglists.updated2.patch" Content-Disposition: attachment; filename="gdb-dwo-rnglists.updated2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kbsaqd4e0 ZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKaW5kZXgg ZTY1NjZmOTY0OS4uMjZjZTk3MWZlYSAxMDA2NDQKLS0tIGEvZ2RiL2R3YXJmMi9yZWFkLmMKKysr IGIvZ2RiL2R3YXJmMi9yZWFkLmMKQEAgLTM0MCw2ICszNDAsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGR3b3Bfc2VjdGlvbl9uYW1lcwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25fbmFtZXMgbG9j bGlzdHNfZHdvOwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25fbmFtZXMgbWFjaW5mb19kd287CiAg IHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9uYW1lcyBtYWNyb19kd287CisgIHN0cnVjdCBkd2FyZjJf c2VjdGlvbl9uYW1lcyBybmdsaXN0c19kd287CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9uYW1l cyBzdHJfZHdvOwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25fbmFtZXMgc3RyX29mZnNldHNfZHdv OwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25fbmFtZXMgdHlwZXNfZHdvOwpAQCAtMzU1LDYgKzM1 Niw3IEBAIGR3b3Bfc2VjdGlvbl9uYW1lcyA9CiAgIHsgIi5kZWJ1Z19sb2NsaXN0cy5kd28iLCAi LnpkZWJ1Z19sb2NsaXN0cy5kd28iIH0sCiAgIHsgIi5kZWJ1Z19tYWNpbmZvLmR3byIsICIuemRl YnVnX21hY2luZm8uZHdvIiB9LAogICB7ICIuZGVidWdfbWFjcm8uZHdvIiwgIi56ZGVidWdfbWFj cm8uZHdvIiB9LAorICB7ICIuZGVidWdfcm5nbGlzdHMuZHdvIiwgIi56ZGVidWdfcm5nbGlzdHMu ZHdvIiB9LAogICB7ICIuZGVidWdfc3RyLmR3byIsICIuemRlYnVnX3N0ci5kd28iIH0sCiAgIHsg Ii5kZWJ1Z19zdHJfb2Zmc2V0cy5kd28iLCAiLnpkZWJ1Z19zdHJfb2Zmc2V0cy5kd28iIH0sCiAg IHsgIi5kZWJ1Z190eXBlcy5kd28iLCAiLnpkZWJ1Z190eXBlcy5kd28iIH0sCkBAIC00NDgsNiAr NDUwLDkgQEAgc3RydWN0IGR3YXJmMl9jdQogICAvKiBCYXNlIGFkZHJlc3Mgb2YgdGhpcyBjb21w aWxhdGlvbiB1bml0LiAgKi8KICAgZ2RiOjpvcHRpb25hbDxDT1JFX0FERFI+IGJhc2VfYWRkcmVz czsKIAorICAvKiBDVSBybmdsaXN0IHJhbmdlcyBjYW1lIGZyb20gc2tlbGV0b24gdW5pdC4gKi8K KyAgYm9vbCBjdV9yYW5nZXNfZnJvbV9za2VsZXRvbiA9IGZhbHNlOworCiAgIC8qIFRoZSBsYW5n dWFnZSB3ZSBhcmUgZGVidWdnaW5nLiAgKi8KICAgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSA9IGxh bmd1YWdlX3Vua25vd247CiAgIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5ndWFnZV9k ZWZuID0gbnVsbHB0cjsKQEAgLTY1MCw2ICs2NTUsNyBAQCBzdHJ1Y3QgZHdvX3NlY3Rpb25zCiAg IHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGxvY2xpc3RzOwogICBzdHJ1Y3QgZHdhcmYyX3Nl Y3Rpb25faW5mbyBtYWNpbmZvOwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBtYWNybzsK KyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gcm5nbGlzdHM7CiAgIHN0cnVjdCBkd2FyZjJf c2VjdGlvbl9pbmZvIHN0cjsKICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gc3RyX29mZnNl dHM7CiAgIC8qIEluIHRoZSBjYXNlIG9mIGEgdmlydHVhbCBEV08gZmlsZSwgdGhlc2UgdHdvIGFy ZSB1bnVzZWQuICAqLwpAQCAtMTM3OSwxMSArMTM4NSwxNiBAQCBzdGF0aWMgdm9pZCByZWFkX2Nh bGxfc2l0ZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KTsKIHN0YXRpYyB2b2lkIHJlYWRfdmFyaWFibGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSk7CiAKIHN0YXRpYyBpbnQgZHdhcmYyX3Jhbmdlc19yZWFkICh1bnNp Z25lZCwgQ09SRV9BRERSICosIENPUkVfQUREUiAqLAotCQkJICAgICAgIHN0cnVjdCBkd2FyZjJf Y3UgKiwgZHdhcmYyX3BzeW10YWIgKik7CisJCQkgICAgICAgc3RydWN0IGR3YXJmMl9jdSAqLCBk d2FyZjJfcHN5bXRhYiAqLAorCQkJICAgICAgIGR3YXJmX3RhZyk7CiAKIC8qIFJldHVybiB0aGUg LmRlYnVnX2xvY2xpc3RzIHNlY3Rpb24gdG8gdXNlIGZvciBjdS4gICovCiBzdGF0aWMgc3RydWN0 IGR3YXJmMl9zZWN0aW9uX2luZm8gKmN1X2RlYnVnX2xvY19zZWN0aW9uIChzdHJ1Y3QgZHdhcmYy X2N1ICpjdSk7CiAKKy8qIFJldHVybiB0aGUgLmRlYnVnX3JuZ2xpc3RzIHNlY3Rpb24gdG8gdXNl IGZvciBjdS4gICovCitzdGF0aWMgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmN1X2RlYnVn X3JuZ2xpc3Rfc2VjdGlvbgorICAoc3RydWN0IGR3YXJmMl9jdSAqY3UpOworCiAvKiBIb3cgZHdh cmYyX2dldF9wY19ib3VuZHMgY29uc3RydWN0ZWQgaXRzICpMT1dQQyBhbmQgKkhJR0hQQyByZXR1 cm4KICAgIHZhbHVlcy4gIEtlZXAgdGhlIGl0ZW1zIG9yZGVyZWQgd2l0aCBpbmNyZWFzaW5nIGNv bnN0cmFpbnRzIGNvbXBsaWFuY2UuICAqLwogZW51bSBwY19ib3VuZHNfa2luZApAQCAtNzE4MSw2 ICs3MTkyLDggQEAgY3V0dV9yZWFkZXI6OmN1dHVfcmVhZGVyIChkd2FyZjJfcGVyX2N1X2RhdGEg KnRoaXNfY3UsCiAJICAgICAgZHVtbXlfcCA9IHRydWU7CiAJICAgICAgcmV0dXJuOwogCSAgICB9 CisgICAgICAgICAgaWYgKGNvbXBfdW5pdF9kaWUtPmF0dHIgKERXX0FUX3JhbmdlcykgIT0gbnVs bHB0cikKKyAgICAgICAgICAgICAgY3UtPmN1X3Jhbmdlc19mcm9tX3NrZWxldG9uID0gdHJ1ZTsK IAkgIGNvbXBfdW5pdF9kaWUgPSBkd29fY29tcF91bml0X2RpZTsKIAl9CiAgICAgICBlbHNlCkBA IC0xMjM5Nyw2ICsxMjQxMCwxMSBAQCBkd2FyZjJfbG9jYXRlX2R3b19zZWN0aW9ucyAoYmZkICph YmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQgKmR3b19zZWN0aW9uc19wdHIpCiAgICAgICBkd29f c2VjdGlvbnMtPm1hY3JvLnMuc2VjdGlvbiA9IHNlY3RwOwogICAgICAgZHdvX3NlY3Rpb25zLT5t YWNyby5zaXplID0gYmZkX3NlY3Rpb25fc2l6ZSAoc2VjdHApOwogICAgIH0KKyAgZWxzZSBpZiAo c2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJm5hbWVzLT5ybmdsaXN0c19kd28pKQorICAgIHsK KyAgICAgIGR3b19zZWN0aW9ucy0+cm5nbGlzdHMucy5zZWN0aW9uID0gc2VjdHA7CisgICAgICBk d29fc2VjdGlvbnMtPnJuZ2xpc3RzLnNpemUgPSBiZmRfc2VjdGlvbl9zaXplIChzZWN0cCk7Cisg ICAgfQogICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmbmFtZXMtPnN0cl9k d28pKQogICAgIHsKICAgICAgIGR3b19zZWN0aW9ucy0+c3RyLnMuc2VjdGlvbiA9IHNlY3RwOwpA QCAtMTM3NDEsNyArMTM3NTksNyBAQCByZWFkX3ZhcmlhYmxlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2s+CiBz dGF0aWMgYm9vbAogZHdhcmYyX3JuZ2xpc3RzX3Byb2Nlc3MgKHVuc2lnbmVkIG9mZnNldCwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UsCi0JCQkgQ2FsbGJhY2sgJiZjYWxsYmFjaykKKwkJCSBkd2FyZl90 YWcgdGFnLCBDYWxsYmFjayAmJmNhbGxiYWNrKQogewogICBkd2FyZjJfcGVyX29iamZpbGUgKnBl cl9vYmpmaWxlID0gY3UtPnBlcl9vYmpmaWxlOwogICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9 IHBlcl9vYmpmaWxlLT5vYmpmaWxlOwpAQCAtMTM3NTEsMTcgKzEzNzY5LDM2IEBAIGR3YXJmMl9y bmdsaXN0c19wcm9jZXNzICh1bnNpZ25lZCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAog ICBjb25zdCBnZGJfYnl0ZSAqYnVmZmVyOwogICBDT1JFX0FERFIgYmFzZWFkZHI7CiAgIGJvb2wg b3ZlcmZsb3cgPSBmYWxzZTsKKyAgVUxPTkdFU1QgYWRkcl9pbmRleDsKKyAgYm9vbCBpZ25vcmVf ZHdvX3VuaXQgPSBmYWxzZTsKKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnJuZ2xpc3Rz X3NlY3Rpb247CiAKICAgYmFzZSA9IGN1LT5iYXNlX2FkZHJlc3M7CiAKLSAgcGVyX29iamZpbGUt PnBlcl9iZmQtPnJuZ2xpc3RzLnJlYWQgKG9iamZpbGUpOwotICBpZiAob2Zmc2V0ID49IHBlcl9v YmpmaWxlLT5wZXJfYmZkLT5ybmdsaXN0cy5zaXplKQorICAvKiBJZiB0aGUgRFdfQVRfcmFuZ2Vz IGF0dHJpYnV0ZSB3YXMgcGFydCBvZiBhIERXX1RBR19za2VsZXRvbl91bml0IHRoYXQgd2FzCisg ICAgIGNoYW5nZWQgaW50byBhIERXX1RBR19jb21waWxlX3VuaXQgYWZ0ZXIgY2FsbGluZyByZWFk X2N1dHVfZGllX2Zyb21fZHdvLAorICAgICB3ZSB3YW50IHRvIHVzZSB0aGUgcm5nbGlzdCBpbiB0 aGUgb2JqZmlsZSByYXRoZXIgdGhhbiB0aGUgb25lIGluIHRoZQorICAgICBkd29fdW5pdC4gKi8K KyAgaWYgKHRhZyA9PSBEV19UQUdfY29tcGlsZV91bml0CisgICAgICAmJiBjdS0+Y3VfcmFuZ2Vz X2Zyb21fc2tlbGV0b24pCisgICAgaWdub3JlX2R3b191bml0ID0gdHJ1ZTsKKworICAvKiBFbHNl LCBpZiB0aGVyZSdzIGEgZHdvX3VuaXQsIHdlIHdhbnQgdGhlIHJuZ2xpc3QgZnJvbSB0aGUgZHdv IGZpbGUuICAqLworICBpZiAoY3UtPmR3b191bml0CisgICAgICAmJiBjdS0+ZHdvX3VuaXQtPmR3 b19maWxlLT5zZWN0aW9ucy5ybmdsaXN0cy5zaXplID4gMAorICAgICAgJiYgIWlnbm9yZV9kd29f dW5pdCkKKyAgICAgIHJuZ2xpc3RzX3NlY3Rpb24gPSAmY3UtPmR3b191bml0LT5kd29fZmlsZS0+ c2VjdGlvbnMucm5nbGlzdHM7CisgIGVsc2UKKyAgICAgIHJuZ2xpc3RzX3NlY3Rpb24gPSAmcGVy X29iamZpbGUtPnBlcl9iZmQtPnJuZ2xpc3RzOworCisgIHJuZ2xpc3RzX3NlY3Rpb24tPnJlYWQg KG9iamZpbGUpOworICBpZiAob2Zmc2V0ID49IHJuZ2xpc3RzX3NlY3Rpb24tPnNpemUpCiAgICAg ewogICAgICAgY29tcGxhaW50IChfKCJPZmZzZXQgJWQgb3V0IG9mIGJvdW5kcyBmb3IgRFdfQVRf cmFuZ2VzIGF0dHJpYnV0ZSIpLAogCQkgb2Zmc2V0KTsKICAgICAgIHJldHVybiBmYWxzZTsKICAg ICB9Ci0gIGJ1ZmZlciA9IHBlcl9vYmpmaWxlLT5wZXJfYmZkLT5ybmdsaXN0cy5idWZmZXIgKyBv ZmZzZXQ7CisgIGJ1ZmZlciA9IHJuZ2xpc3RzX3NlY3Rpb24tPmJ1ZmZlciArIG9mZnNldDsKIAog ICBiYXNlYWRkciA9IG9iamZpbGUtPnRleHRfc2VjdGlvbl9vZmZzZXQgKCk7CiAKQEAgLTEzNzY5 LDggKzEzODA2LDggQEAgZHdhcmYyX3JuZ2xpc3RzX3Byb2Nlc3MgKHVuc2lnbmVkIG9mZnNldCwg c3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgICAgewogICAgICAgLyogSW5pdGlhbGl6ZSBpdCBkdWUg dG8gYSBmYWxzZSBjb21waWxlciB3YXJuaW5nLiAgKi8KICAgICAgIENPUkVfQUREUiByYW5nZV9i ZWdpbm5pbmcgPSAwLCByYW5nZV9lbmQgPSAwOwotICAgICAgY29uc3QgZ2RiX2J5dGUgKmJ1Zl9l bmQgPSAocGVyX29iamZpbGUtPnBlcl9iZmQtPnJuZ2xpc3RzLmJ1ZmZlcgotCQkJCSArIHBlcl9v YmpmaWxlLT5wZXJfYmZkLT5ybmdsaXN0cy5zaXplKTsKKyAgICAgIGNvbnN0IGdkYl9ieXRlICpi dWZfZW5kID0gKHJuZ2xpc3RzX3NlY3Rpb24tPmJ1ZmZlcgorCQkJCSArIHJuZ2xpc3RzX3NlY3Rp b24tPnNpemUpOwogICAgICAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7CiAKICAgICAgIGlmIChi dWZmZXIgPT0gYnVmX2VuZCkKQEAgLTEzNzkyLDYgKzEzODI5LDExIEBAIGR3YXJmMl9ybmdsaXN0 c19wcm9jZXNzICh1bnNpZ25lZCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogCSAgYmFz ZSA9IGN1LT5oZWFkZXIucmVhZF9hZGRyZXNzIChvYmZkLCBidWZmZXIsICZieXRlc19yZWFkKTsK IAkgIGJ1ZmZlciArPSBieXRlc19yZWFkOwogCSAgYnJlYWs7CisgICAgICAgIGNhc2UgRFdfUkxF X2Jhc2VfYWRkcmVzc3g6CisgICAgICAgICAgYWRkcl9pbmRleCA9IHJlYWRfdW5zaWduZWRfbGVi MTI4IChvYmZkLCBidWZmZXIsICZieXRlc19yZWFkKTsKKyAgICAgICAgICBidWZmZXIgKz0gYnl0 ZXNfcmVhZDsKKyAgICAgICAgICBiYXNlID0gcmVhZF9hZGRyX2luZGV4IChjdSwgYWRkcl9pbmRl eCk7CisgICAgICAgICAgYnJlYWs7CiAJY2FzZSBEV19STEVfc3RhcnRfbGVuZ3RoOgogCSAgaWYg KGJ1ZmZlciArIGN1LT5oZWFkZXIuYWRkcl9zaXplID4gYnVmX2VuZCkKIAkgICAgewpAQCAtMTM4 MTAsNiArMTM4NTIsMTkgQEAgZHdhcmYyX3JuZ2xpc3RzX3Byb2Nlc3MgKHVuc2lnbmVkIG9mZnNl dCwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAJICAgICAgYnJlYWs7CiAJICAgIH0KIAkgIGJyZWFr OworCWNhc2UgRFdfUkxFX3N0YXJ0eF9sZW5ndGg6CisgICAgICAgICAgYWRkcl9pbmRleCA9IHJl YWRfdW5zaWduZWRfbGViMTI4IChvYmZkLCBidWZmZXIsICZieXRlc19yZWFkKTsKKyAgICAgICAg ICBidWZmZXIgKz0gYnl0ZXNfcmVhZDsKKyAgICAgICAgICByYW5nZV9iZWdpbm5pbmcgPSByZWFk X2FkZHJfaW5kZXggKGN1LCBhZGRyX2luZGV4KTsKKyAgICAgICAgICBpZiAoYnVmZmVyID4gYnVm X2VuZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgb3ZlcmZsb3cgPSB0cnVlOworICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICByYW5nZV9lbmQgPSAo cmFuZ2VfYmVnaW5uaW5nCisgICAgICAgICAgICAgICAgICAgICAgICsgcmVhZF91bnNpZ25lZF9s ZWIxMjggKG9iZmQsIGJ1ZmZlciwgJmJ5dGVzX3JlYWQpKTsKKyAgICAgICAgICBidWZmZXIgKz0g Ynl0ZXNfcmVhZDsKKyAgICAgICAgICBicmVhazsKIAljYXNlIERXX1JMRV9vZmZzZXRfcGFpcjoK IAkgIHJhbmdlX2JlZ2lubmluZyA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChvYmZkLCBidWZmZXIs ICZieXRlc19yZWFkKTsKIAkgIGJ1ZmZlciArPSBieXRlc19yZWFkOwpAQCAtMTM4MzgsNyArMTM4 OTMsMjAgQEAgZHdhcmYyX3JuZ2xpc3RzX3Byb2Nlc3MgKHVuc2lnbmVkIG9mZnNldCwgc3RydWN0 IGR3YXJmMl9jdSAqY3UsCiAJICByYW5nZV9lbmQgPSBjdS0+aGVhZGVyLnJlYWRfYWRkcmVzcyAo b2JmZCwgYnVmZmVyLCAmYnl0ZXNfcmVhZCk7CiAJICBidWZmZXIgKz0gYnl0ZXNfcmVhZDsKIAkg IGJyZWFrOwotCWRlZmF1bHQ6CisJY2FzZSBEV19STEVfc3RhcnR4X2VuZHg6CisgICAgICAgICAg YWRkcl9pbmRleCA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChvYmZkLCBidWZmZXIsICZieXRlc19y ZWFkKTsKKyAgICAgICAgICBidWZmZXIgKz0gYnl0ZXNfcmVhZDsKKyAgICAgICAgICByYW5nZV9i ZWdpbm5pbmcgPSByZWFkX2FkZHJfaW5kZXggKGN1LCBhZGRyX2luZGV4KTsKKyAgICAgICAgICBp ZiAoYnVmZmVyID4gYnVmX2VuZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgb3ZlcmZs b3cgPSB0cnVlOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICBhZGRyX2luZGV4ID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKG9iZmQsIGJ1ZmZlciwgJmJ5dGVz X3JlYWQpOworICAgICAgICAgIGJ1ZmZlciArPSBieXRlc19yZWFkOworICAgICAgICAgIHJhbmdl X2VuZCA9IHJlYWRfYWRkcl9pbmRleCAoY3UsIGFkZHJfaW5kZXgpOworICAgICAgICAgIGJyZWFr OworIAlkZWZhdWx0OgogCSAgY29tcGxhaW50IChfKCJJbnZhbGlkIC5kZWJ1Z19ybmdsaXN0cyBk YXRhIChubyBiYXNlIGFkZHJlc3MpIikpOwogCSAgcmV0dXJuIGZhbHNlOwogCX0KQEAgLTEzODY2 LDggKzEzOTM0LDEyIEBAIGR3YXJmMl9ybmdsaXN0c19wcm9jZXNzICh1bnNpZ25lZCBvZmZzZXQs IHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgICAgaWYgKHJhbmdlX2JlZ2lubmluZyA9PSByYW5n ZV9lbmQpCiAJY29udGludWU7CiAKLSAgICAgIHJhbmdlX2JlZ2lubmluZyArPSAqYmFzZTsKLSAg ICAgIHJhbmdlX2VuZCArPSAqYmFzZTsKKyAgICAgIC8qIE9ubHkgRFdfUkxFX29mZnNldF9wYWly IG5lZWRzIHRoZSBiYXNlIGFkZHJlc3MgYWRkZWQuICAqLworICAgICAgaWYgKHJsZXQgPT0gRFdf UkxFX29mZnNldF9wYWlyKQorCXsKKwkgIHJhbmdlX2JlZ2lubmluZyArPSAqYmFzZTsKKwkgIHJh bmdlX2VuZCArPSAqYmFzZTsKKwl9CiAKICAgICAgIC8qIEEgbm90LXVuY29tbW9uIGNhc2Ugb2Yg YmFkIGRlYnVnIGluZm8uCiAJIERvbid0IHBvbGx1dGUgdGhlIGFkZHJtYXAgd2l0aCBiYWQgZGF0 YS4gICovCkBAIC0xMzkwMCw3ICsxMzk3Miw3IEBAIGR3YXJmMl9ybmdsaXN0c19wcm9jZXNzICh1 bnNpZ25lZCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogCiB0ZW1wbGF0ZSA8dHlwZW5h bWUgQ2FsbGJhY2s+CiBzdGF0aWMgaW50Ci1kd2FyZjJfcmFuZ2VzX3Byb2Nlc3MgKHVuc2lnbmVk IG9mZnNldCwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCitkd2FyZjJfcmFuZ2VzX3Byb2Nlc3MgKHVu c2lnbmVkIG9mZnNldCwgc3RydWN0IGR3YXJmMl9jdSAqY3UsIGR3YXJmX3RhZyB0YWcsCiAJCSAg ICAgICBDYWxsYmFjayAmJmNhbGxiYWNrKQogewogICBkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9v YmpmaWxlID0gY3UtPnBlcl9vYmpmaWxlOwpAQCAtMTM5MTYsNyArMTM5ODgsNyBAQCBkd2FyZjJf cmFuZ2VzX3Byb2Nlc3MgKHVuc2lnbmVkIG9mZnNldCwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAg IENPUkVfQUREUiBiYXNlYWRkcjsKIAogICBpZiAoY3VfaGVhZGVyLT52ZXJzaW9uID49IDUpCi0g ICAgcmV0dXJuIGR3YXJmMl9ybmdsaXN0c19wcm9jZXNzIChvZmZzZXQsIGN1LCBjYWxsYmFjayk7 CisgICAgcmV0dXJuIGR3YXJmMl9ybmdsaXN0c19wcm9jZXNzIChvZmZzZXQsIGN1LCB0YWcsIGNh bGxiYWNrKTsKIAogICBiYXNlID0gY3UtPmJhc2VfYWRkcmVzczsKIApAQCAtMTQwMDIsNyArMTQw NzQsNyBAQCBkd2FyZjJfcmFuZ2VzX3Byb2Nlc3MgKHVuc2lnbmVkIG9mZnNldCwgc3RydWN0IGR3 YXJmMl9jdSAqY3UsCiBzdGF0aWMgaW50CiBkd2FyZjJfcmFuZ2VzX3JlYWQgKHVuc2lnbmVkIG9m ZnNldCwgQ09SRV9BRERSICpsb3dfcmV0dXJuLAogCQkgICAgQ09SRV9BRERSICpoaWdoX3JldHVy biwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCi0JCSAgICBkd2FyZjJfcHN5bXRhYiAqcmFuZ2VzX3Bz dCkKKwkJICAgIGR3YXJmMl9wc3ltdGFiICpyYW5nZXNfcHN0LCBkd2FyZl90YWcgdGFnKQogewog ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5wZXJfb2JqZmlsZS0+b2JqZmlsZTsKICAg c3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBvYmpmaWxlLT5hcmNoICgpOwpAQCAtMTQwMTIsNyAr MTQwODQsNyBAQCBkd2FyZjJfcmFuZ2VzX3JlYWQgKHVuc2lnbmVkIG9mZnNldCwgQ09SRV9BRERS ICpsb3dfcmV0dXJuLAogICBDT1JFX0FERFIgaGlnaCA9IDA7CiAgIGludCByZXR2YWw7CiAKLSAg cmV0dmFsID0gZHdhcmYyX3Jhbmdlc19wcm9jZXNzIChvZmZzZXQsIGN1LAorICByZXR2YWwgPSBk d2FyZjJfcmFuZ2VzX3Byb2Nlc3MgKG9mZnNldCwgY3UsIHRhZywKICAgICBbJl0gKENPUkVfQURE UiByYW5nZV9iZWdpbm5pbmcsIENPUkVfQUREUiByYW5nZV9lbmQpCiAgICAgewogICAgICAgaWYg KHJhbmdlc19wc3QgIT0gTlVMTCkKQEAgLTE0MTA1LDcgKzE0MTc3LDggQEAgZHdhcmYyX2dldF9w Y19ib3VuZHMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBDT1JFX0FERFIgKmxvd3BjLAogCSAgLyog RFdfQVRfcm5nbGlzdHNfYmFzZSBkb2VzIG5vdCBhcHBseSB0byBESUVzIGZyb20gdGhlIERXTyBz a2VsZXRvbi4KIAkgICAgIFdlIHRha2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgRFdfQVRf cmFuZ2VzIGRvZXMgbm90IGFwcGVhcgogCSAgICAgaW4gRFdfVEFHX2NvbXBpbGVfdW5pdCBvZiBE V08gZmlsZXMuICAqLwotCSAgaW50IG5lZWRfcmFuZ2VzX2Jhc2UgPSBkaWUtPnRhZyAhPSBEV19U QUdfY29tcGlsZV91bml0OworCSAgaW50IG5lZWRfcmFuZ2VzX2Jhc2UgPSAoZGllLT50YWcgIT0g RFdfVEFHX2NvbXBpbGVfdW5pdAorCQkJCSAgJiYgYXR0ci0+Zm9ybSAhPSBEV19GT1JNX3JuZ2xp c3R4KTsKIAkgIHVuc2lnbmVkIGludCByYW5nZXNfb2Zmc2V0ID0gKERXX1VOU05EIChhdHRyKQog CQkJCQkrIChuZWVkX3Jhbmdlc19iYXNlCiAJCQkJCSAgID8gY3UtPnJhbmdlc19iYXNlCkBAIC0x NDExMyw3ICsxNDE4Niw4IEBAIGR3YXJmMl9nZXRfcGNfYm91bmRzIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgQ09SRV9BRERSICpsb3dwYywKIAogCSAgLyogVmFsdWUgb2YgdGhlIERXX0FUX3Jhbmdl cyBhdHRyaWJ1dGUgaXMgdGhlIG9mZnNldCBpbiB0aGUKIAkgICAgIC5kZWJ1Z19yYW5nZXMgc2Vj dGlvbi4gICovCi0JICBpZiAoIWR3YXJmMl9yYW5nZXNfcmVhZCAocmFuZ2VzX29mZnNldCwgJmxv dywgJmhpZ2gsIGN1LCBwc3QpKQorCSAgaWYgKCFkd2FyZjJfcmFuZ2VzX3JlYWQgKHJhbmdlc19v ZmZzZXQsICZsb3csICZoaWdoLCBjdSwgcHN0LAorCQkJCSAgIGRpZS0+dGFnKSkKIAkgICAgcmV0 dXJuIFBDX0JPVU5EU19JTlZBTElEOwogCSAgLyogRm91bmQgZGlzY29udGludW91cyByYW5nZSBv ZiBhZGRyZXNzZXMuICAqLwogCSAgcmV0ID0gUENfQk9VTkRTX1JBTkdFUzsKQEAgLTE0Mjc2LDcg KzE0MzUwLDggQEAgZHdhcmYyX3JlY29yZF9ibG9ja19yYW5nZXMgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAogICAgICAgLyogRFdfQVRfcm5nbGlzdHNfYmFzZSBk b2VzIG5vdCBhcHBseSB0byBESUVzIGZyb20gdGhlIERXTyBza2VsZXRvbi4KIAkgV2UgdGFrZSBh ZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBEV19BVF9yYW5nZXMgZG9lcyBub3QgYXBwZWFyCiAJ IGluIERXX1RBR19jb21waWxlX3VuaXQgb2YgRFdPIGZpbGVzLiAgKi8KLSAgICAgIGludCBuZWVk X3Jhbmdlc19iYXNlID0gZGllLT50YWcgIT0gRFdfVEFHX2NvbXBpbGVfdW5pdDsKKyAgICAgIGlu dCBuZWVkX3Jhbmdlc19iYXNlID0gKGRpZS0+dGFnICE9IERXX1RBR19jb21waWxlX3VuaXQKKwkJ CSAgICAgICYmIGF0dHItPmZvcm0gIT0gRFdfRk9STV9ybmdsaXN0eCk7CiAKICAgICAgIC8qIFRo ZSB2YWx1ZSBvZiB0aGUgRFdfQVRfcmFuZ2VzIGF0dHJpYnV0ZSBpcyB0aGUgb2Zmc2V0IG9mIHRo ZQogICAgICAgICAgYWRkcmVzcyByYW5nZSBsaXN0IGluIHRoZSAuZGVidWdfcmFuZ2VzIHNlY3Rp b24uICAqLwpAQCAtMTQyODQsNyArMTQzNTksNyBAQCBkd2FyZjJfcmVjb3JkX2Jsb2NrX3Jhbmdl cyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBibG9jayAqYmxvY2ssCiAJCQkgICAgICAr IChuZWVkX3Jhbmdlc19iYXNlID8gY3UtPnJhbmdlc19iYXNlIDogMCkpOwogCiAgICAgICBzdGQ6 OnZlY3RvcjxibG9ja3JhbmdlPiBibG9ja3ZlYzsKLSAgICAgIGR3YXJmMl9yYW5nZXNfcHJvY2Vz cyAob2Zmc2V0LCBjdSwKKyAgICAgIGR3YXJmMl9yYW5nZXNfcHJvY2VzcyAob2Zmc2V0LCBjdSwg ZGllLT50YWcsCiAJWyZdIChDT1JFX0FERFIgc3RhcnQsIENPUkVfQUREUiBlbmQpCiAJewogCSAg c3RhcnQgKz0gYmFzZWFkZHI7CkBAIC0xODExNSw2ICsxODE5MCwxMSBAQCByZWFkX2Z1bGxfZGll XzEgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCiAgIGF1dG8gbWF5YmVf YWRkcl9iYXNlID0gZGllLT5hZGRyX2Jhc2UgKCk7CiAgIGlmIChtYXliZV9hZGRyX2Jhc2UuaGFz X3ZhbHVlICgpKQogICAgIGN1LT5hZGRyX2Jhc2UgPSAqbWF5YmVfYWRkcl9iYXNlOworCisgIGF0 dHIgPSBkaWUtPmF0dHIgKERXX0FUX3JuZ2xpc3RzX2Jhc2UpOworICBpZiAoYXR0ciAhPSBudWxs cHRyKQorICAgIGN1LT5yYW5nZXNfYmFzZSA9IERXX1VOU05EIChhdHRyKTsKKwogICBmb3IgKGlu dCBpbmRleCA6IGluZGV4ZXNfdGhhdF9uZWVkX3JlcHJvY2VzcykKICAgICByZWFkX2F0dHJpYnV0 ZV9yZXByb2Nlc3MgKHJlYWRlciwgJmRpZS0+YXR0cnNbaW5kZXhdKTsKICAgKmRpZXAgPSBkaWU7 CkBAIC0xODYzMyw3ICsxODcxMyw4IEBAIHBhcnRpYWxfZGllX2luZm86OnJlYWQgKGNvbnN0IHN0 cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCiAJICAgIC8qIEl0IHdvdWxkIGJlIG5pY2Ug dG8gcmV1c2UgZHdhcmYyX2dldF9wY19ib3VuZHMgaGVyZSwKIAkgICAgICAgYnV0IHRoYXQgcmVx dWlyZXMgYSBmdWxsIERJRSwgc28gaW5zdGVhZCB3ZSBqdXN0CiAJICAgICAgIHJlaW1wbGVtZW50 IGl0LiAgKi8KLQkgICAgaW50IG5lZWRfcmFuZ2VzX2Jhc2UgPSB0YWcgIT0gRFdfVEFHX2NvbXBp bGVfdW5pdDsKKwkgICAgaW50IG5lZWRfcmFuZ2VzX2Jhc2UgPSAodGFnICE9IERXX1RBR19jb21w aWxlX3VuaXQKKwkJCQkgICAgJiYgYXR0ci5mb3JtICE9IERXX0ZPUk1fcm5nbGlzdHgpOwogCSAg ICB1bnNpZ25lZCBpbnQgcmFuZ2VzX29mZnNldCA9IChEV19VTlNORCAoJmF0dHIpCiAJCQkJCSAg KyAobmVlZF9yYW5nZXNfYmFzZQogCQkJCQkgICAgID8gY3UtPnJhbmdlc19iYXNlCkBAIC0xODY0 Miw3ICsxODcyMyw3IEBAIHBhcnRpYWxfZGllX2luZm86OnJlYWQgKGNvbnN0IHN0cnVjdCBkaWVf cmVhZGVyX3NwZWNzICpyZWFkZXIsCiAJICAgIC8qIFZhbHVlIG9mIHRoZSBEV19BVF9yYW5nZXMg YXR0cmlidXRlIGlzIHRoZSBvZmZzZXQgaW4gdGhlCiAJICAgICAgIC5kZWJ1Z19yYW5nZXMgc2Vj dGlvbi4gICovCiAJICAgIGlmIChkd2FyZjJfcmFuZ2VzX3JlYWQgKHJhbmdlc19vZmZzZXQsICZs b3dwYywgJmhpZ2hwYywgY3UsCi0JCQkJICAgIG51bGxwdHIpKQorCQkJCSAgICBudWxscHRyLCB0 YWcpKQogCSAgICAgIGhhc19wY19pbmZvID0gMTsKIAkgIH0KIAkgIGJyZWFrOwpAQCAtMTkwNDMs NiArMTkxMjQsNDkgQEAgcmVhZF9sb2NsaXN0X2luZGV4IChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwg VUxPTkdFU1QgbG9jbGlzdF9pbmRleCkKICAgICByZXR1cm4gYmZkX2dldF82NCAoYWJmZCwgaW5m b19wdHIpICsgbG9jbGlzdF9iYXNlOwogfQogCisvKiBHaXZlbiBhIERXX0ZPUk1fcm5nbGlzdHgg dmFsdWUgcm5nbGlzdF9pbmRleCwgZmV0Y2ggdGhlIG9mZnNldCBmcm9tIHRoZQorICAgYXJyYXkg b2Ygb2Zmc2V0cyBpbiB0aGUgLmRlYnVnX3JuZ2xpc3RzIHNlY3Rpb24uICAqLworc3RhdGljIENP UkVfQUREUgorcmVhZF9ybmdsaXN0X2luZGV4IChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgVUxPTkdF U1Qgcm5nbGlzdF9pbmRleCkKK3sKKyAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqZHdhcmYy X3Blcl9vYmpmaWxlID0gY3UtPnBlcl9vYmpmaWxlOworICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZTsKKyAgYmZkICphYmZkID0gb2JqZmlsZS0+ b2JmZDsKKyAgVUxPTkdFU1Qgcm5nbGlzdF9oZWFkZXJfc2l6ZSA9CisgICAgKGN1LT5oZWFkZXIu aW5pdGlhbF9sZW5ndGhfc2l6ZSA9PSA0ID8gTE9DTElTVF9IRUFERVJfU0laRTMyCisgICAgIDog TE9DTElTVF9IRUFERVJfU0laRTY0KTsKKyAgVUxPTkdFU1Qgcm5nbGlzdF9iYXNlID0KKyAgICAg IChjdS0+ZHdvX3VuaXQpID8gcm5nbGlzdF9oZWFkZXJfc2l6ZSA6IGN1LT5yYW5nZXNfYmFzZTsK KworICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiA9IGN1X2RlYnVnX3JuZ2xp c3Rfc2VjdGlvbiAoY3UpOworICBpZiAoc2VjdGlvbiA9PSBudWxscHRyKQorICAgIGVycm9yIChf KCJDYW5ub3QgZmluZCAuZGVidWdfcm5nbGlzdHMgc2VjdGlvbiBbaW4gbW9kdWxlICVzXSIpLAor CSAgIG9iamZpbGVfbmFtZShvYmpmaWxlKSk7CisgIHNlY3Rpb24tPnJlYWQgKG9iamZpbGUpOwor ICBpZiAoc2VjdGlvbi0+YnVmZmVyID09IE5VTEwpCisgICAgZXJyb3IgKF8oIkRXX0ZPUk1fcm5n bGlzdHggdXNlZCB3aXRob3V0IC5kZWJ1Z19ybmdsaXN0cyBzZWN0aW9uICIKKwkgICAgICJbaW4g bW9kdWxlICVzXSIpLAorICAgICAgIG9iamZpbGVfbmFtZSAob2JqZmlsZSkpOworICBzdHJ1Y3Qg bG9jbGlzdF9oZWFkZXIgaGVhZGVyOworICByZWFkX2xvY2xpc3RfaGVhZGVyICgmaGVhZGVyLCBz ZWN0aW9uKTsKKyAgaWYgKHJuZ2xpc3RfaW5kZXggPj0gaGVhZGVyLm9mZnNldF9lbnRyeV9jb3Vu dCkKKyAgICBlcnJvciAoXygiRFdfRk9STV9ybmdsaXN0eCBpbmRleCBwb2ludGluZyBvdXRzaWRl IG9mICIKKwkgICAgICIuZGVidWdfcm5nbGlzdHMgb2Zmc2V0IGFycmF5IFtpbiBtb2R1bGUgJXNd IiksCisJICAgIG9iamZpbGVfbmFtZShvYmpmaWxlKSk7CisgIGlmIChybmdsaXN0X2Jhc2UgKyBy bmdsaXN0X2luZGV4ICogY3UtPmhlYWRlci5vZmZzZXRfc2l6ZQorICAgICAgICA+PSBzZWN0aW9u LT5zaXplKQorICAgIGVycm9yIChfKCJEV19GT1JNX3JuZ2xpc3R4IHBvaW50aW5nIG91dHNpZGUg b2YgIgorICAgICAgICAgICAgICIuZGVidWdfcm5nbGlzdHMgc2VjdGlvbiBbaW4gbW9kdWxlICVz XSIpLAorICAgICAgICAgIG9iamZpbGVfbmFtZShvYmpmaWxlKSk7CisgIGNvbnN0IGdkYl9ieXRl ICppbmZvX3B0cgorICAgID0gc2VjdGlvbi0+YnVmZmVyICsgcm5nbGlzdF9iYXNlICsgcm5nbGlz dF9pbmRleCAqIGN1LT5oZWFkZXIub2Zmc2V0X3NpemU7CisKKyAgaWYgKGN1LT5oZWFkZXIub2Zm c2V0X3NpemUgPT0gNCkKKyAgICByZXR1cm4gcmVhZF80X2J5dGVzIChhYmZkLCBpbmZvX3B0cikg KyBybmdsaXN0X2Jhc2U7CisgIGVsc2UKKyAgICByZXR1cm4gcmVhZF84X2J5dGVzIChhYmZkLCBp bmZvX3B0cikgKyBybmdsaXN0X2Jhc2U7Cit9CisKIC8qIFByb2Nlc3MgdGhlIGF0dHJpYnV0ZXMg dGhhdCBoYWQgdG8gYmUgc2tpcHBlZCBpbiB0aGUgZmlyc3Qgcm91bmQuIFRoZXNlCiAgICBhdHRy aWJ1dGVzIGFyZSB0aGUgb25lcyB0aGF0IG5lZWQgc3RyX29mZnNldHNfYmFzZSBvciBhZGRyX2Jh c2UgYXR0cmlidXRlcy4KICAgIFRoZXkgY291bGQgbm90IGhhdmUgYmVlbiBwcm9jZXNzZWQgaW4g dGhlIGZpcnN0IHJvdW5kLCBiZWNhdXNlIGF0IHRoZSB0aW1lCkBAIC0xOTA2MSw2ICsxOTE4NSw5 IEBAIHJlYWRfYXR0cmlidXRlX3JlcHJvY2VzcyAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3Bl Y3MgKnJlYWRlciwKICAgICAgIGNhc2UgRFdfRk9STV9sb2NsaXN0eDoKIAkgRFdfVU5TTkQgKGF0 dHIpID0gcmVhZF9sb2NsaXN0X2luZGV4IChjdSwgRFdfVU5TTkQgKGF0dHIpKTsKIAkgYnJlYWs7 CisgICAgICBjYXNlIERXX0ZPUk1fcm5nbGlzdHg6CisgICAgICAgIERXX1VOU05EIChhdHRyKSA9 IHJlYWRfcm5nbGlzdF9pbmRleCAoY3UsIERXX1VOU05EIChhdHRyKSk7CisgICAgICAgIGJyZWFr OwogICAgICAgY2FzZSBEV19GT1JNX3N0cng6CiAgICAgICBjYXNlIERXX0ZPUk1fc3RyeDE6CiAg ICAgICBjYXNlIERXX0ZPUk1fc3RyeDI6CkBAIC0xOTI0Miw4ICsxOTM2OSwxMCBAQCByZWFkX2F0 dHJpYnV0ZV92YWx1ZSAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKICAg ICAgIERXX1NORCAoYXR0cikgPSByZWFkX3NpZ25lZF9sZWIxMjggKGFiZmQsIGluZm9fcHRyLCAm Ynl0ZXNfcmVhZCk7CiAgICAgICBpbmZvX3B0ciArPSBieXRlc19yZWFkOwogICAgICAgYnJlYWs7 Ci0gICAgY2FzZSBEV19GT1JNX3VkYXRhOgogICAgIGNhc2UgRFdfRk9STV9ybmdsaXN0eDoKKyAg ICAgICpuZWVkX3JlcHJvY2VzcyA9IHRydWU7CisgICAgICAvKiBGQUxMVEhST1VHSCAqLworICAg IGNhc2UgRFdfRk9STV91ZGF0YToKICAgICAgIERXX1VOU05EIChhdHRyKSA9IHJlYWRfdW5zaWdu ZWRfbGViMTI4IChhYmZkLCBpbmZvX3B0ciwgJmJ5dGVzX3JlYWQpOwogICAgICAgaW5mb19wdHIg Kz0gYnl0ZXNfcmVhZDsKICAgICAgIGJyZWFrOwpAQCAtMjMzMzIsNiArMjM0NjEsMjUgQEAgY3Vf ZGVidWdfbG9jX3NlY3Rpb24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogCQkJCSAgOiAmcGVyX29i amZpbGUtPnBlcl9iZmQtPmxvYyk7CiB9CiAKKy8qIFJldHVybiB0aGUgLmRlYnVnX3JuZ2xpc3Rz IHNlY3Rpb24gdG8gdXNlIGZvciBDVS4gICovCitzdGF0aWMgc3RydWN0IGR3YXJmMl9zZWN0aW9u X2luZm8gKgorY3VfZGVidWdfcm5nbGlzdF9zZWN0aW9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK K3sKKyAgaWYgKGN1LT5oZWFkZXIudmVyc2lvbiA8IDUpCisgICAgZXJyb3IgKF8oIi5kZWJ1Z19y bmdsaXN0cyBzZWN0aW9uIGNhbm5vdCBiZSB1c2VkIGluIERXQVJGICVkIiksCisJICAgY3UtPmhl YWRlci52ZXJzaW9uKTsKKyAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqZHdhcmYyX3Blcl9v YmpmaWxlID0gY3UtPnBlcl9vYmpmaWxlOworCisgIGlmIChjdS0+ZHdvX3VuaXQpCisgICAgewor ICAgICAgc3RydWN0IGR3b19zZWN0aW9ucyAqc2VjdGlvbnMgPSAmY3UtPmR3b191bml0LT5kd29f ZmlsZS0+c2VjdGlvbnM7CisKKyAgICAgIGlmIChzZWN0aW9ucy0+cm5nbGlzdHMuc2l6ZSA+IDAp CisJcmV0dXJuICZzZWN0aW9ucy0+cm5nbGlzdHM7CisgICAgfQorICByZXR1cm4gJmR3YXJmMl9w ZXJfb2JqZmlsZS0+cGVyX2JmZC0+cm5nbGlzdHM7Cit9CisKIC8qIEEgaGVscGVyIGZ1bmN0aW9u IHRoYXQgZmlsbHMgaW4gYSBkd2FyZjJfbG9jbGlzdF9iYXRvbi4gICovCiAKIHN0YXRpYyB2b2lk CmRpZmYgLS1naXQgYS90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzUtcm5nbGlzdC10ZXN0LmNjIGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHc1LXJuZ2xpc3QtdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4xN2Y3ODg0M2QyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvZHc1LXJuZ2xpc3QtdGVzdC5jYwpAQCAtMCwwICsxLDg4IEBACisvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorCisgICBDb3B5 cmlnaHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHZlY3Rv cj4KKworc3RydWN0IG5vZGUgeworICBpbnQgaWQ7CisgIG5vZGUgKmxlZnQ7CisgIG5vZGUgKnJp Z2h0OworICBib29sIHZpc2l0ZWQ7Cit9OworCitub2RlICBub2RlX2FycmF5WzUwXTsKK3Vuc2ln bmVkIGludCBDVVJfSURYID0gMDsKKworbm9kZSAqIG1ha2Vfbm9kZSAoaW50IHZhbCkKK3sKKyAg bm9kZSAqbmV3X25vZGUgPSAmKG5vZGVfYXJyYXlbQ1VSX0lEWCsrXSk7CisgIG5ld19ub2RlLT5s ZWZ0ID0gTlVMTDsKKyAgbmV3X25vZGUtPnJpZ2h0ID0gTlVMTDsKKyAgbmV3X25vZGUtPmlkID0g dmFsOworICBuZXdfbm9kZS0+dmlzaXRlZCA9IGZhbHNlOworCisgIHJldHVybiBuZXdfbm9kZTsK K30KKwordm9pZCB0cmVlX2luc2VydCAobm9kZSAqcm9vdCwgaW50IHZhbCkKK3sKKyAgaWYgKHZh bCA8IHJvb3QtPmlkKQorICAgIHsKKyAgICAgIGlmIChyb290LT5sZWZ0KQorICAgICAgICB0cmVl X2luc2VydCAocm9vdC0+bGVmdCwgdmFsKTsKKyAgICAgIGVsc2UKKyAgICAgICAgcm9vdC0+bGVm dCA9IG1ha2Vfbm9kZSh2YWwpOworICAgIH0KKyAgZWxzZSBpZiAodmFsID4gcm9vdC0+aWQpCisg ICAgeworICAgICAgaWYgKHJvb3QtPnJpZ2h0KQorICAgICAgICB0cmVlX2luc2VydCAocm9vdC0+ cmlnaHQsIHZhbCk7CisgICAgICBlbHNlCisgICAgICAgIHJvb3QtPnJpZ2h0ID0gbWFrZV9ub2Rl KHZhbCk7CisgICAgfQorfQorCit2b2lkIGlub3JkZXIobm9kZSAqcm9vdCkgeworICBzdGQ6OnZl Y3Rvcjxub2RlICo+IHRvZG87CisgIHRvZG8ucHVzaF9iYWNrKHJvb3QpOworICB3aGlsZSAoIXRv ZG8uZW1wdHkoKSl7CisgICAgbm9kZSAqY3VyciA9IHRvZG8uYmFjaygpOworICAgIHRvZG8ucG9w X2JhY2soKTsgLyogYnJlYWstaGVyZSAqLworICAgIGlmIChjdXJyLT52aXNpdGVkKSB7CisgICAg ICBzdGQ6OmNvdXQgPDwgY3Vyci0+aWQgPDwgIiAiOworICAgIH0gZWxzZSB7CisgICAgICBjdXJy LT52aXNpdGVkID0gdHJ1ZTsKKyAgICAgIGlmIChjdXJyLT5yaWdodCkgeyB0b2RvLnB1c2hfYmFj ayhjdXJyLT5yaWdodCk7IH0KKyAgICAgIHRvZG8ucHVzaF9iYWNrKGN1cnIpOworICAgICAgaWYg KGN1cnItPmxlZnQpIHsgdG9kby5wdXNoX2JhY2soY3Vyci0+bGVmdCk7IH0KKyAgICB9CisgIH0K K30KKworaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgbm9kZSAqcm9vdCA9 IG1ha2Vfbm9kZSAoMzUpOworCisgIHRyZWVfaW5zZXJ0IChyb290LCAyOCk7CisgIHRyZWVfaW5z ZXJ0IChyb290LCAyMCk7CisgIHRyZWVfaW5zZXJ0IChyb290LCA2MCk7CisKKyAgaW5vcmRlciAo cm9vdCk7CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzUtcm5nbGlzdC10ZXN0LmV4cCBiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3NS1ybmdsaXN0 LXRlc3QuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNmMzNGI1ZGQK LS0tIC9kZXYvbnVsbAorKysgYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzUtcm5nbGlzdC10ZXN0 LmV4cApAQCAtMCwwICsxLDQwIEBACisjIENvcHlyaWdodCAyMDIwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjIENoZWNrIHRoYXQgR0RCIGNh biBmaW5kIHRoZSB2YXJpYWJsZXMgaW4gYSBsZXhpY2FsIGJsb2NrIHdpdGggYQorIyBEV19GT1JN X3JuZ2xpc3R4IERXX0FUX3JhbmdlcyBmaWVsZC4gIFRoaXMgdGVzdCBpcyBpbnRlbmRlZCBmb3Ig RFdBUkYtNSwKKyMgY29tcGlsZWQgd2l0aCBjbGFuZysrLgorCitzdGFuZGFyZF90ZXN0ZmlsZSAu Y2MKKworIyBUaGlzIHRlc3QgaXMgaW50ZW5kZWQgZm9yIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBE V0FSRi01LgorIyBTaW5jZSB3ZSBwYXNzIGFuIGV4cGxpY2l0IC1nZHdhcmYtNSB0byB0aGUgY29t cGlsZXIsCisjIHdlIGxldCB0aGF0IGJlIHRoZSB0ZXN0IG9mIHdoZXRoZXIgdGhlIHRhcmdldCBz dXBwb3J0cyBpdC4KKworaWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAiZmFpbGVkIHRvIHByZXBh cmUiICIke3Rlc3RmaWxlfSIgXAorICAgICAgICAgICRzcmNmaWxlIHtkZWJ1ZyBjKysgYWRkaXRp b25hbF9mbGFncz0tZ2R3YXJmLTUgXAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25h bF9mbGFncz0tTzB9XSB9IHsKKyAgICByZXR1cm4gLTEKK30KKworaWYgIVtydW50b19tYWluXSB7 CisgICAgcmV0dXJuIC0xCit9CisKK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJicmVhay1oZXJlIl0KK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1oZXJlIiAi LiogYnJlYWstaGVyZSAuKiIKKworZ2RiX3Rlc3QgInByaW50IGN1cnIiICJcXFwobm9kZSBcXFwq XFxcKSAkaGV4IDxub2RlX2FycmF5PiIKK2dkYl90ZXN0ICJwcmludCAqY3VyciIgIj0ge2lkID0g MzUsIGxlZnQgPSAkaGV4IDxub2RlX2FycmF5XFwrJGRlY2ltYWw+LCByaWdodCA9ICRoZXggPG5v ZGVfYXJyYXlcXCskZGVjaW1hbD4sIHZpc2l0ZWQgPSBmYWxzZX0iCg== --0000000000008bd5c305a8c50774--