From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27223 invoked by alias); 27 Nov 2014 06:55:51 -0000 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 Received: (qmail 27210 invoked by uid 89); 27 Nov 2014 06:55:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mail-ob0-f176.google.com Received: from mail-ob0-f176.google.com (HELO mail-ob0-f176.google.com) (209.85.214.176) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Thu, 27 Nov 2014 06:55:46 +0000 Received: by mail-ob0-f176.google.com with SMTP id vb8so3298007obc.7 for ; Wed, 26 Nov 2014 22:55:45 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to:cc :content-type; bh=DFTQ/YO60XQfPGY/KK5Ml8Kb+IhRBBGbqSyfMfZQCxY=; b=WhySIFwk/gMytRxbEliucmHc8LoEvjHKTQ/mQSVmhsEpNglcItNU0fn9utKvnurnGR kQRNHvl9/TVaf4enSK+rEtSwDckjThfl0Hq8LuYHRc8Gp4RtPz3aWCp2oJyj+NsEcsDU w8GEhel/cehDRVFu6p+SSwOZL0PLBn0OQ16VHVMrGpwE9cOhpOf8tzv5SnPrSyDMw4Ni 70EkxC62YRKeBI2RGHVXFBk5ZsMu9lzkm3r4JotnQ521kOKqSKcRGHc/7cp1DdYMfESf N0n7lD1iZdHA/jD//4VkrD3VhD9P8KAOjX5oy0/TPZr268aJpJrlVi2CQ2zalL3MvYnt hC5Q== X-Gm-Message-State: ALoCoQkj/lvDDUCvBNijSrHT0ZNRiDGlbqQqtMScv5IBw9rDv80CD0p28+utk3VM/cXBNPIgYWLq MIME-Version: 1.0 X-Received: by 10.182.213.2 with SMTP id no2mr21583996obc.76.1417071344900; Wed, 26 Nov 2014 22:55:44 -0800 (PST) Received: by 10.202.225.68 with HTTP; Wed, 26 Nov 2014 22:55:44 -0800 (PST) Date: Thu, 27 Nov 2014 06:55:00 -0000 Message-ID: Subject: [PATCH v6] Make chained function calls in expressions work From: Siva Chandra To: gdb-patches Cc: Ulrich Weigand Content-Type: multipart/mixed; boundary=001a11c2de64229d3c0508d1a259 X-IsSubscribed: yes X-SW-Source: 2014-11/txt/msg00677.txt.bz2 --001a11c2de64229d3c0508d1a259 Content-Type: text/plain; charset=UTF-8 Content-length: 1707 Link to v5: https://sourceware.org/ml/gdb-patches/2014-11/msg00394.html I have made all the changes suggested by Ulrich Weigand in his comments for v5. gdb/ChangeLog: 2014-11-27 Siva Chandra Reddy * eval.c: Include gdbthread.h. (evaluate_subexp): Enable thread stack temporaries before evaluating a complete expression and clean them up after the evaluation is complete. * gdbthread.h: Include common/vec.h. (value_ptr): New typedef. (VEC (value_ptr)): New vector type. (value_vec): New typedef. (struct thread_info): Add new fields stack_temporaries_enabled and stack_temporaries. (enable_thread_stack_temporaries) (thread_stack_temporaries_enabled_p, push_thread_stack_temporary) (get_last_thread_stack_temporary) (value_in_thread_stack_temporaries): Declare. * gdbtypes.c (class_or_union_p): New function. * gdbtypes.h (class_or_union_p): Declare. * infcall.c (call_function_by_hand): Store return values of class type as temporaries on stack. * thread.c (enable_thread_stack_temporaries): New function. (thread_stack_temporaries_enabled_p, push_thread_stack_temporary) (get_last_thread_stack_temporary): Likewise. (value_in_thread_stack_temporaries): Likewise. * value.c (value_force_lval): New function. * value.h (value_force_lval): Declare. gdb/testsuite/ChangeLog: 2014-11-27 Siva Chandra Reddy * gdb.cp/chained-calls.cc: New file. * gdb.cp/chained-calls.exp: New file. * gdb.cp/smartp.exp: Remove KFAIL for "p c2->inta". --001a11c2de64229d3c0508d1a259 Content-Type: text/plain; charset=US-ASCII; name="chained-calls-v6.txt" Content-Disposition: attachment; filename="chained-calls-v6.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i2zrk9dy0 Content-length: 23616 ZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCmluZGV4IDY1 NWVhMjIuLmExMzc5M2MgMTAwNjQ0Ci0tLSBhL2dkYi9ldmFsLmMKKysrIGIv Z2RiL2V2YWwuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImV4cHJl c3Npb24uaCIKICNpbmNsdWRlICJ0YXJnZXQuaCIKICNpbmNsdWRlICJmcmFt ZS5oIgorI2luY2x1ZGUgImdkYnRocmVhZC5oIgogI2luY2x1ZGUgImxhbmd1 YWdlLmgiCQkvKiBGb3IgQ0FTVF9JU19DT05WRVJTSU9OLiAgKi8KICNpbmNs dWRlICJmLWxhbmcuaCIJCS8qIEZvciBhcnJheSBib3VuZCBzdHVmZi4gICov CiAjaW5jbHVkZSAiY3AtYWJpLmgiCkBAIC02Myw4ICs2NCwyOCBAQCBzdHJ1 Y3QgdmFsdWUgKgogZXZhbHVhdGVfc3ViZXhwIChzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsIHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAJCSBpbnQgKnBv cywgZW51bSBub3NpZGUgbm9zaWRlKQogewotICByZXR1cm4gKCpleHAtPmxh bmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5ldmFsdWF0ZV9leHApIAorICBz dHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7CisgIHN0cnVjdCB2YWx1ZSAqcmV0 dmFsOworICBpbnQgY2xlYW51cF90ZW1wcyA9IDA7CisKKyAgaWYgKCpwb3Mg PT0gMCAmJiB0YXJnZXRfaGFzX2V4ZWN1dGlvbgorICAgICAgJiYgZXhwLT5s YW5ndWFnZV9kZWZuLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykK KyAgICB7CisgICAgICBjbGVhbnVwcyA9IGVuYWJsZV90aHJlYWRfc3RhY2tf dGVtcG9yYXJpZXMgKGluZmVyaW9yX3B0aWQpOworICAgICAgY2xlYW51cF90 ZW1wcyA9IDE7CisgICAgfQorCisgIHJldHZhbCA9ICgqZXhwLT5sYW5ndWFn ZV9kZWZuLT5sYV9leHBfZGVzYy0+ZXZhbHVhdGVfZXhwKQogICAgIChleHBl Y3RfdHlwZSwgZXhwLCBwb3MsIG5vc2lkZSk7CisKKyAgaWYgKGNsZWFudXBf dGVtcHMpCisgICAgeworICAgICAgaWYgKHZhbHVlX2luX3RocmVhZF9zdGFj a190ZW1wb3JhcmllcyAocmV0dmFsLCBpbmZlcmlvcl9wdGlkKSkKKwlyZXR2 YWwgPSB2YWx1ZV9ub25fbHZhbCAocmV0dmFsKTsKKyAgICAgIGRvX2NsZWFu dXBzIChjbGVhbnVwcyk7CisgICAgfQorCisgIHJldHVybiByZXR2YWw7CiB9 CiAMCiAvKiBQYXJzZSB0aGUgc3RyaW5nIEVYUCBhcyBhIEMgZXhwcmVzc2lv biwgZXZhbHVhdGUgaXQsCmRpZmYgLS1naXQgYS9nZGIvZ2RidGhyZWFkLmgg Yi9nZGIvZ2RidGhyZWFkLmgKaW5kZXggNGZkNWY2OS4uYzdlMjU4ZiAxMDA2 NDQKLS0tIGEvZ2RiL2dkYnRocmVhZC5oCisrKyBiL2dkYi9nZGJ0aHJlYWQu aApAQCAtMjgsNiArMjgsNyBAQCBzdHJ1Y3Qgc3ltdGFiOwogI2luY2x1ZGUg InVpLW91dC5oIgogI2luY2x1ZGUgImluZmVyaW9yLmgiCiAjaW5jbHVkZSAi YnRyYWNlLmgiCisjaW5jbHVkZSAiY29tbW9uL3ZlYy5oIgogCiAvKiBGcm9u dGVuZCB2aWV3IG9mIHRoZSB0aHJlYWQgc3RhdGUuICBQb3NzaWJsZSBleHRl bnNpb25zOiBzdGVwcGluZywKICAgIGZpbmlzaGluZywgdW50aWwobGluZyks Li4uICAqLwpAQCAtMTUyLDYgKzE1MywxMCBAQCBzdHJ1Y3QgdGhyZWFkX3N1 c3BlbmRfc3RhdGUKICAgZW51bSBnZGJfc2lnbmFsIHN0b3Bfc2lnbmFsOwog fTsKIAordHlwZWRlZiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3B0cjsKK0RFRl9W RUNfUCAodmFsdWVfcHRyKTsKK3R5cGVkZWYgVkVDICh2YWx1ZV9wdHIpIHZh bHVlX3ZlYzsKKwogc3RydWN0IHRocmVhZF9pbmZvCiB7CiAgIHN0cnVjdCB0 aHJlYWRfaW5mbyAqbmV4dDsKQEAgLTI2NCw2ICsyNjksMTQgQEAgc3RydWN0 IHRocmVhZF9pbmZvCiAKICAgLyogQnJhbmNoIHRyYWNlIGluZm9ybWF0aW9u IGZvciB0aGlzIHRocmVhZC4gICovCiAgIHN0cnVjdCBidHJhY2VfdGhyZWFk X2luZm8gYnRyYWNlOworCisgIC8qIEZsYWcgd2hpY2ggaW5kaWNhdGVzIHRo YXQgdGhlIHN0YWNrIHRlbXBvcmFyaWVzIHNob3VsZCBiZSBzdG9yZWQgd2hp bGUKKyAgICAgZXZhbHVhdGluZyBleHByZXNzaW9ucy4gICovCisgIGludCBz dGFja190ZW1wb3Jhcmllc19lbmFibGVkOworCisgIC8qIFZhbHVlcyB0aGF0 IGFyZSBzdG9yZWQgYXMgdGVtcG9yYXJpZXMgb24gc3RhY2sgd2hpbGUgZXZh bHVhdGluZworICAgICBleHByZXNzaW9ucy4gICovCisgIHZhbHVlX3ZlYyAq c3RhY2tfdGVtcG9yYXJpZXM7CiB9OwogCiAvKiBDcmVhdGUgYW4gZW1wdHkg dGhyZWFkIGxpc3QsIG9yIGVtcHR5IHRoZSBleGlzdGluZyBvbmUuICAqLwpA QCAtNDY1LDYgKzQ3OCwxNiBAQCBleHRlcm4gdm9pZCBwcnVuZV90aHJlYWRz ICh2b2lkKTsKIAogaW50IHBjX2luX3RocmVhZF9zdGVwX3JhbmdlIChDT1JF X0FERFIgcGMsIHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkKTsKIAorZXh0 ZXJuIHN0cnVjdCBjbGVhbnVwICplbmFibGVfdGhyZWFkX3N0YWNrX3RlbXBv cmFyaWVzIChwdGlkX3QgcHRpZCk7CisKK2V4dGVybiBpbnQgdGhyZWFkX3N0 YWNrX3RlbXBvcmFyaWVzX2VuYWJsZWRfcCAocHRpZF90IHB0aWQpOworCitl eHRlcm4gdm9pZCBwdXNoX3RocmVhZF9zdGFja190ZW1wb3JhcnkgKHB0aWRf dCBwdGlkLCBzdHJ1Y3QgdmFsdWUgKnYpOworCitleHRlcm4gc3RydWN0IHZh bHVlICpnZXRfbGFzdF90aHJlYWRfc3RhY2tfdGVtcG9yYXJ5IChwdGlkX3Qp OworCitleHRlcm4gaW50IHZhbHVlX2luX3RocmVhZF9zdGFja190ZW1wb3Jh cmllcyAoc3RydWN0IHZhbHVlICosIHB0aWRfdCk7CisKIGV4dGVybiBzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRocmVhZF9saXN0OwogCiAjZW5kaWYgLyogR0RC VEhSRUFEX0ggKi8KZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5jIGIvZ2Ri L2dkYnR5cGVzLmMKaW5kZXggNjFkMjU5ZC4uNjExYTBlNyAxMDA2NDQKLS0t IGEvZ2RiL2dkYnR5cGVzLmMKKysrIGIvZ2RiL2dkYnR5cGVzLmMKQEAgLTI1 MDgsNiArMjUwOCwxNSBAQCBpc19zY2FsYXJfdHlwZV9yZWN1cnNpdmUgKHN0 cnVjdCB0eXBlICp0KQogICByZXR1cm4gMDsKIH0KIAorLyogUmV0dXJuIHRy dWUgaXMgVCBpcyBhIGNsYXNzIG9yIGEgdW5pb24uICBGYWxzZSBvdGhlcndp c2UuICAqLworCitpbnQKK2NsYXNzX29yX3VuaW9uX3AgKGNvbnN0IHN0cnVj dCB0eXBlICp0KQoreworICByZXR1cm4gKFRZUEVfQ09ERSAodCkgPT0gVFlQ RV9DT0RFX1NUUlVDVAorICAgICAgICAgIHx8IFRZUEVfQ09ERSAodCkgPT0g VFlQRV9DT0RFX1VOSU9OKTsKK30KKwogLyogQSBoZWxwZXIgZnVuY3Rpb24g d2hpY2ggcmV0dXJucyB0cnVlIGlmIHR5cGVzIEEgYW5kIEIgcmVwcmVzZW50 IHRoZQogICAgInNhbWUiIGNsYXNzIHR5cGUuICBUaGlzIGlzIHRydWUgaWYg dGhlIHR5cGVzIGhhdmUgdGhlIHNhbWUgbWFpbgogICAgdHlwZSwgb3IgdGhl IHNhbWUgbmFtZS4gICovCmRpZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuaCBi L2dkYi9nZGJ0eXBlcy5oCmluZGV4IDE0YTFmMDguLmE1NmY1NDMgMTAwNjQ0 Ci0tLSBhL2dkYi9nZGJ0eXBlcy5oCisrKyBiL2dkYi9nZGJ0eXBlcy5oCkBA IC0xODIzLDYgKzE4MjMsOCBAQCBleHRlcm4gaW50IGlzX2ludGVncmFsX3R5 cGUgKHN0cnVjdCB0eXBlICopOwogCiBleHRlcm4gaW50IGlzX3NjYWxhcl90 eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IHR5cGUgKik7CiAKK2V4dGVybiBpbnQg Y2xhc3Nfb3JfdW5pb25fcCAoY29uc3Qgc3RydWN0IHR5cGUgKik7CisKIGV4 dGVybiB2b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5cGUgKGNoYXIgKiwgaW50 KTsKIAogZXh0ZXJuIGh0YWJfdCBjcmVhdGVfY29waWVkX3R5cGVzX2hhc2gg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKZGlmZiAtLWdpdCBhL2dkYi9p bmZjYWxsLmMgYi9nZGIvaW5mY2FsbC5jCmluZGV4IGJiYWM2OTMuLjcxODM5 M2MgMTAwNjQ0Ci0tLSBhL2dkYi9pbmZjYWxsLmMKKysrIGIvZ2RiL2luZmNh bGwuYwpAQCAtNDk1LDYgKzQ5NSw3IEBAIGNhbGxfZnVuY3Rpb25fYnlfaGFu ZCAoc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgaW50IG5hcmdzLCBzdHJ1Y3Qg dmFsdWUgKiphcmdzKQogICBwdGlkX3QgY2FsbF90aHJlYWRfcHRpZDsKICAg c3RydWN0IGdkYl9leGNlcHRpb24gZTsKICAgY2hhciBuYW1lX2J1ZltSQVdf RlVOQ1RJT05fQUREUkVTU19TSVpFXTsKKyAgaW50IHN0YWNrX3RlbXBvcmFy aWVzID0gdGhyZWFkX3N0YWNrX3RlbXBvcmFyaWVzX2VuYWJsZWRfcCAoaW5m ZXJpb3JfcHRpZCk7CiAKICAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZ UEVfQ09ERV9QVFIpCiAgICAgZnR5cGUgPSBjaGVja190eXBlZGVmIChUWVBF X1RBUkdFVF9UWVBFIChmdHlwZSkpOwpAQCAtNTkzLDYgKzU5NCwzMyBAQCBj YWxsX2Z1bmN0aW9uX2J5X2hhbmQgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24s IGludCBuYXJncywgc3RydWN0IHZhbHVlICoqYXJncykKICAgICAgICAgIElm IHRoZSBBQkkgc3BlY2lmaWVzIGEgIlJlZCBab25lIiAoc2VlIHRoZSBkb2Nv KSB0aGUgY29kZQogICAgICAgICAgYmVsb3cgd2lsbCBxdWlldGx5IHRyYXNo IGl0LiAgKi8KICAgICAgIHNwID0gb2xkX3NwOworCisgICAgLyogU2tpcCBv dmVyIHRoZSBzdGFjayB0ZW1wb3JhcmllcyB0aGF0IG1pZ2h0IGhhdmUgYmVl biBnZW5lcmF0ZWQgZHVyaW5nCisgICAgICAgdGhlIGV2YWx1YXRpb24gb2Yg YW4gZXhwcmVzc2lvbi4gICovCisgICAgaWYgKHN0YWNrX3RlbXBvcmFyaWVz KQorICAgICAgeworCXN0cnVjdCB2YWx1ZSAqbGFzdHZhbDsKKworCWxhc3R2 YWwgPSBnZXRfbGFzdF90aHJlYWRfc3RhY2tfdGVtcG9yYXJ5IChpbmZlcmlv cl9wdGlkKTsKKyAgICAgICAgaWYgKGxhc3R2YWwgIT0gTlVMTCkKKwkgIHsK KwkgICAgQ09SRV9BRERSIGxhc3R2YWxfYWRkciA9IHZhbHVlX2FkZHJlc3Mg KGxhc3R2YWwpOworCisJICAgIGlmIChnZGJhcmNoX2lubmVyX3RoYW4gKGdk YmFyY2gsIDEsIDIpKQorCSAgICAgIHsKKwkJZ2RiX2Fzc2VydCAoc3AgPj0g bGFzdHZhbF9hZGRyKTsKKwkJc3AgPSBsYXN0dmFsX2FkZHI7CisJICAgICAg fQorCSAgICBlbHNlCisJICAgICAgeworCQlnZGJfYXNzZXJ0IChzcCA8PSBs YXN0dmFsX2FkZHIpOworCQlzcCA9IGxhc3R2YWxfYWRkciArIFRZUEVfTEVO R1RIICh2YWx1ZV90eXBlIChsYXN0dmFsKSk7CisJICAgICAgfQorCisJICAg IGlmIChnZGJhcmNoX2ZyYW1lX2FsaWduX3AgKGdkYmFyY2gpKQorCSAgICAg IHNwID0gZ2RiYXJjaF9mcmFtZV9hbGlnbiAoZ2RiYXJjaCwgc3ApOworCSAg fQorICAgICAgfQogICB9CiAKICAgZnVuYWRkciA9IGZpbmRfZnVuY3Rpb25f YWRkciAoZnVuY3Rpb24sICZ2YWx1ZXNfdHlwZSk7CkBAIC03MTksOSArNzQ3 LDIxIEBAIGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoc3RydWN0IHZhbHVlICpm dW5jdGlvbiwgaW50IG5hcmdzLCBzdHJ1Y3QgdmFsdWUgKiphcmdzKQogCiAg IC8qIFJlc2VydmUgc3BhY2UgZm9yIHRoZSByZXR1cm4gc3RydWN0dXJlIHRv IGJlIHdyaXR0ZW4gb24gdGhlCiAgICAgIHN0YWNrLCBpZiBuZWNlc3Nhcnku ICBNYWtlIGNlcnRhaW4gdGhhdCB0aGUgdmFsdWUgaXMgY29ycmVjdGx5Ci0g ICAgIGFsaWduZWQuICAqLworICAgICBhbGlnbmVkLgorCisgICAgIFdoaWxl IGV2YWx1YXRpbmcgZXhwcmVzc2lvbnMsIHdlIHJlc2VydmUgc3BhY2Ugb24g dGhlIHN0YWNrIGZvcgorICAgICByZXR1cm4gdmFsdWVzIG9mIGNsYXNzIHR5 cGUgZXZlbiBpZiB0aGUgbGFuZ3VhZ2UgQUJJIGFuZCB0aGUgdGFyZ2V0Cisg ICAgIEFCSSBkbyBub3QgcmVxdWlyZSB0aGF0IHRoZSByZXR1cm4gdmFsdWUg YmUgcGFzc2VkIGFzIGEgaGlkZGVuIGZpcnN0CisgICAgIGFyZ3VtZW50LiAg VGhpcyBpcyBiZWNhdXNlIHdlIHdhbnQgdG8gc3RvcmUgdGhlIHJldHVybiB2 YWx1ZSBhcyBhbgorICAgICBvbi1zdGFjayB0ZW1wb3Jhcnkgd2hpbGUgdGhl IGV4cHJlc3Npb24gaXMgYmVpbmcgZXZhbHVhdGVkLiAgVGhpcworICAgICBl bmFibGVzIHVzIHRvIGhhdmUgY2hhaW5lZCBmdW5jdGlvbiBjYWxscyBpbiBl eHByZXNzaW9ucy4KIAotICBpZiAoc3RydWN0X3JldHVybiB8fCBoaWRkZW5f Zmlyc3RfcGFyYW1fcCkKKyAgICAgS2VlcGluZyB0aGUgcmV0dXJuIHZhbHVl cyBhcyBvbi1zdGFjayB0ZW1wb3JhcmllcyB3aGlsZSB0aGUgZXhwcmVzc2lv bgorICAgICBpcyBiZWluZyBldmFsdWF0ZWQgaXMgT0sgYmVjYXVzZSB0aGUg dGhyZWFkIGlzIHN0b3BwZWQgdW50aWwgdGhlCisgICAgIGV4cHJlc3Npb24g aXMgY29tcGxldGVseSBldmFsdWF0ZWQuICAqLworCisgIGlmIChzdHJ1Y3Rf cmV0dXJuIHx8IGhpZGRlbl9maXJzdF9wYXJhbV9wCisgICAgICB8fCAoc3Rh Y2tfdGVtcG9yYXJpZXMgJiYgY2xhc3Nfb3JfdW5pb25fcCAodmFsdWVzX3R5 cGUpKSkKICAgICB7CiAgICAgICBpZiAoZ2RiYXJjaF9pbm5lcl90aGFuIChn ZGJhcmNoLCAxLCAyKSkKIAl7CkBAIC0xMDU5LDMxICsxMDk5LDQwIEBAIFdo ZW4gdGhlIGZ1bmN0aW9uIGlzIGRvbmUgZXhlY3V0aW5nLCBHREIgd2lsbCBz aWxlbnRseSBzdG9wLiIpLAogICAgICAgIEF0IHRoaXMgc3RhZ2UsIGxlYXZl IHRoZSBSRVRCVUYgYWxvbmUuICAqLwogICAgIHJlc3RvcmVfaW5mY2FsbF9j b250cm9sX3N0YXRlIChpbmZfc3RhdHVzKTsKIAotICAgIC8qIEZpZ3VyZSBv dXQgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBmdW5jdGlvbi4gICovCi0g ICAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWUgKHZhbHVlc190eXBlKTsKLQot ICAgIGlmIChoaWRkZW5fZmlyc3RfcGFyYW1fcCkKLSAgICAgIHJlYWRfdmFs dWVfbWVtb3J5IChyZXR2YWwsIDAsIDEsIHN0cnVjdF9hZGRyLAotCQkJIHZh bHVlX2NvbnRlbnRzX3JhdyAocmV0dmFsKSwKLQkJCSBUWVBFX0xFTkdUSCAo dmFsdWVzX3R5cGUpKTsKLSAgICBlbHNlIGlmIChUWVBFX0NPREUgKHRhcmdl dF92YWx1ZXNfdHlwZSkgIT0gVFlQRV9DT0RFX1ZPSUQpCisgICAgaWYgKFRZ UEVfQ09ERSAodmFsdWVzX3R5cGUpID09IFRZUEVfQ09ERV9WT0lEKQorICAg ICAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWUgKHZhbHVlc190eXBlKTsKKyAg ICBlbHNlIGlmIChzdHJ1Y3RfcmV0dXJuIHx8IGhpZGRlbl9maXJzdF9wYXJh bV9wKQogICAgICAgewotCS8qIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIHZv aWQsIGRvbid0IGJvdGhlciBmZXRjaGluZyB0aGUKLQkgICByZXR1cm4gdmFs dWUuICAqLwotCXN3aXRjaCAoZ2RiYXJjaF9yZXR1cm5fdmFsdWUgKGdkYmFy Y2gsIGZ1bmN0aW9uLCB0YXJnZXRfdmFsdWVzX3R5cGUsCi0JCQkJICAgICAg TlVMTCwgTlVMTCwgTlVMTCkpCisJaWYgKHN0YWNrX3RlbXBvcmFyaWVzKQor CSAgeworCSAgICByZXR2YWwgPSB2YWx1ZV9mcm9tX2NvbnRlbnRzX2FuZF9h ZGRyZXNzICh2YWx1ZXNfdHlwZSwgTlVMTCwKKwkJCQkJCSAgICAgIHN0cnVj dF9hZGRyKTsKKwkgICAgcHVzaF90aHJlYWRfc3RhY2tfdGVtcG9yYXJ5IChp bmZlcmlvcl9wdGlkLCByZXR2YWwpOworCSAgfQorCWVsc2UKIAkgIHsKLQkg IGNhc2UgUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT046Ci0JICBj YXNlIFJFVFVSTl9WQUxVRV9BQklfUkVUVVJOU19BRERSRVNTOgotCSAgY2Fz ZSBSRVRVUk5fVkFMVUVfQUJJX1BSRVNFUlZFU19BRERSRVNTOgotCSAgICBn ZGJhcmNoX3JldHVybl92YWx1ZSAoZ2RiYXJjaCwgZnVuY3Rpb24sIHZhbHVl c190eXBlLAotCQkJCSAgcmV0YnVmLCB2YWx1ZV9jb250ZW50c19yYXcgKHJl dHZhbCksIE5VTEwpOwotCSAgICBicmVhazsKLQkgIGNhc2UgUkVUVVJOX1ZB TFVFX1NUUlVDVF9DT05WRU5USU9OOgorCSAgICByZXR2YWwgPSBhbGxvY2F0 ZV92YWx1ZSAodmFsdWVzX3R5cGUpOwogCSAgICByZWFkX3ZhbHVlX21lbW9y eSAocmV0dmFsLCAwLCAxLCBzdHJ1Y3RfYWRkciwKIAkJCSAgICAgICB2YWx1 ZV9jb250ZW50c19yYXcgKHJldHZhbCksCiAJCQkgICAgICAgVFlQRV9MRU5H VEggKHZhbHVlc190eXBlKSk7Ci0JICAgIGJyZWFrOworCSAgfQorICAgICAg fQorICAgIGVsc2UKKyAgICAgIHsKKwlyZXR2YWwgPSBhbGxvY2F0ZV92YWx1 ZSAodmFsdWVzX3R5cGUpOworCWdkYmFyY2hfcmV0dXJuX3ZhbHVlIChnZGJh cmNoLCBmdW5jdGlvbiwgdmFsdWVzX3R5cGUsCisJCQkgICAgICByZXRidWYs IHZhbHVlX2NvbnRlbnRzX3JhdyAocmV0dmFsKSwgTlVMTCk7CisJaWYgKHN0 YWNrX3RlbXBvcmFyaWVzICYmIGNsYXNzX29yX3VuaW9uX3AgKHZhbHVlc190 eXBlKSkKKwkgIHsKKwkgICAgLyogVmFsdWVzIG9mIGNsYXNzIHR5cGUgcmV0 dXJuZWQgaW4gcmVnaXN0ZXJzIGFyZSBjb3BpZWQgb250bworCSAgICAgICB0 aGUgc3RhY2sgYW5kIHRoZWlyIGx2YWxfdHlwZSBzZXQgdG8gbHZhbF9tZW1v cnkuICBUaGlzIGlzCisJICAgICAgIHJlcXVpcmVkIGJlY2F1c2UgZnVydGhl ciBldmFsdWF0aW9uIG9mIHRoZSBleHByZXNzaW9uCisJICAgICAgIGNvdWxk IHBvdGVudGlhbGx5IGludm9rZSBtZXRob2RzIG9uIHRoZSByZXR1cm4gdmFs dWUKKwkgICAgICAgcmVxdWlyaW5nIEdEQiB0byBldmFsdWF0ZSB0aGUgInRo aXMiIHBvaW50ZXIuICBUbyBldmFsdWF0ZQorCSAgICAgICB0aGUgdGhpcyBw b2ludGVyLCBHREIgbmVlZHMgdGhlIG1lbW9yeSBhZGRyZXNzIG9mIHRoZQor CSAgICAgICB2YWx1ZS4gICovCisJICAgIHZhbHVlX2ZvcmNlX2x2YWwgKHJl dHZhbCwgc3RydWN0X2FkZHIpOworCSAgICBwdXNoX3RocmVhZF9zdGFja190 ZW1wb3JhcnkgKGluZmVyaW9yX3B0aWQsIHJldHZhbCk7CiAJICB9CiAgICAg ICB9CiAKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NoYWlu ZWQtY2FsbHMuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jaGFpbmVkLWNh bGxzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEz MGVjM2IKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9jaGFpbmVkLWNhbGxzLmNjCkBAIC0wLDAgKzEsMjAzIEBACisvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgor CisgICBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworY2xhc3Mg UworeworcHVibGljOgorICBTICgpIHsgfQorICBTIChTICZvYmopOworCisg IFMgb3BlcmF0b3IrIChjb25zdCBTICZzKTsKKworICBpbnQgYTsKK307CisK K1M6OlMgKFMgJm9iaikKK3sKKyAgYSA9IG9iai5hOworfQorCitTCitTOjpv cGVyYXRvcisgKGNvbnN0IFMgJnMpCit7CisgIFMgcmVzOworCisgIHJlcy5h ID0gYSArIHMuYTsKKworICByZXR1cm4gcmVzOworfQorCitTCitmIChpbnQg aSkKK3sKKyAgUyBzOworCisgIHMuYSA9IGk7CisKKyAgcmV0dXJuIHM7Cit9 CisKK2ludAorZyAoY29uc3QgUyAmcykKK3sKKyAgcmV0dXJuIHMuYTsKK30K KworY2xhc3MgQQoreworcHVibGljOgorICBBIG9wZXJhdG9yKyAoY29uc3Qg QSAmKTsKKyAgaW50IGE7Cit9OworCitBCitBOjpvcGVyYXRvcisgKGNvbnN0 IEEgJm9iaikKK3sKKyAgQSBuOworCisgIG4uYSA9IGEgKyBvYmouYTsKKwor ICByZXR1cm4gbjsKK30KKworQQorcCAoKQoreworICBBIGE7CisgIGEuYSA9 IDEyMzQ1Njc4OworICByZXR1cm4gYTsKK30KKworQQorciAoKQoreworICBB IGE7CisgIGEuYSA9IDEwMDAwMDAwOworICByZXR1cm4gYTsKK30KKworQQor cSAoY29uc3QgQSAmYSkKK3sKKyAgcmV0dXJuIGE7Cit9CisKK2NsYXNzIEIK K3sKK3B1YmxpYzoKKyAgaW50IGJbMTAyNF07Cit9OworCitCCittYWtlYiAo KQoreworICBCIGI7CisgIGludCBpOworCisgIGZvciAoaSA9IDA7IGkgPCAx MDI0OyBpKyspCisgICAgYi5iW2ldID0gaTsKKworICByZXR1cm4gYjsKK30K KworaW50CitnZXRiIChjb25zdCBCICZiLCBpbnQgaSkKK3sKKyAgcmV0dXJu IGIuYltpXTsKK30KKworY2xhc3MgQworeworcHVibGljOgorICBDICgpOwor ICB+QyAoKTsKKworICBBIG9wZXJhdG9yKiAoKTsKKworICBBICphX3B0cjsK K307CisKK0M6OkMgKCkKK3sKKyAgYV9wdHIgPSBuZXcgQTsKKyAgYV9wdHIt PmEgPSA1Njc4OworfQorCitDOjp+QyAoKQoreworICBkZWxldGUgYV9wdHI7 Cit9CisKK0EKK0M6Om9wZXJhdG9yKiAoKQoreworICByZXR1cm4gKmFfcHRy OworfQorCisjZGVmaW5lIFRZUEVfSU5ERVggMQorCitlbnVtIHR5cGUKK3sK KyAgSU5ULAorICBDSEFSCit9OworCit1bmlvbiBVCit7CitwdWJsaWM6Cisg IFUgKHR5cGUgdCk7CisgIHR5cGUgZ2V0X3R5cGUgKCk7CisKKyAgaW50IGE7 CisgIGNoYXIgYzsKKyAgdHlwZSB0cFsyXTsKK307CisKK1U6OlUgKHR5cGUg dCkKK3sKKyAgdHBbVFlQRV9JTkRFWF0gPSB0OworfQorCitVCittYWtlX2lu dCAoKQoreworICByZXR1cm4gVSAoSU5UKTsKK30KKworVQorbWFrZV9jaGFy ICgpCit7CisgIHJldHVybiBVIChDSEFSKTsKK30KKwordHlwZQorVTo6Z2V0 X3R5cGUgKCkKK3sKKyAgcmV0dXJuIHRwW1RZUEVfSU5ERVhdOworfQorCitp bnQKK21haW4gKCkKK3sKKyAgaW50IGkgPSBnKGYoMCkpOworICBBIGEgPSBx KHAoKSArIHIoKSk7CisKKyAgQiBiID0gbWFrZWIgKCk7CisgIEMgYzsKKwor ICByZXR1cm4gaSArIGdldGIoYiwgMCk7ICAvKiBCcmVhayBoZXJlICAqLwor fQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY2hhaW5lZC1j YWxscy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jaGFpbmVkLWNhbGxz LmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTAz YmVhCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av Y2hhaW5lZC1jYWxscy5leHAKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmln aHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2Ri IHRlc3RzdWl0ZQorCitpZiB7W3NraXBfY3BsdXNfdGVzdHNdfSB7IGNvbnRp bnVlIH0KKworc3RhbmRhcmRfdGVzdGZpbGUgLmNjCisKK2lmIHtbcHJlcGFy ZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmls ZSB7ZGVidWcgYysrfV19IHsKKyAgICByZXR1cm4gLTEKK30KKworaWYgeyFb cnVudG9fbWFpbl19IHsKKyAgICByZXR1cm4gLTEKK30KKworZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkJyZWFrIGhlcmUiXQorZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkJyZWFrIGhlcmUiCisKK2dkYl90 ZXN0ICJwIGcoZigxMjM0NSkpIiAiLiogPSAxMjM0NSIgImcoZigpKSIKK2dk Yl90ZXN0ICJwIHEocCgpKSIgIi4qID0ge2EgPSAxMjM0NTY3OH0iICJxKHAo KSkiCitnZGJfdGVzdCAicCBwKCkgKyByKCkiICIuKiA9IHthID0gMjIzNDU2 Nzh9IiAicCgpICsgcigpIgorZ2RiX3Rlc3QgInAgcShwKCkgKyByKCkpIiAi LiogPSB7YSA9IDIyMzQ1Njc4fSIgInEocCgpICsgcigpKSIKK2dkYl90ZXN0 ICJwIGcoZig2NzAwKSArIGYoODkpKSIgIi4qID0gNjc4OSIgImcoZigpICsg ZigpKSIKK2dkYl90ZXN0ICJwIGcoZihnKGYoMzAwKSArIGYoNDApKSkgKyBm KDUpKSIgIi4qID0gMzQ1IiBcCisgICAgImcoZihnKGYoKSArIGYoKSkpICsg ZigpKSIKK2dkYl90ZXN0ICJwIGdldGIobWFrZWIoKSwgNzg5KSIgIi4qID0g Nzg5IiAiZ2V0YihtYWtlYigpLCAuLi4pIgorZ2RiX3Rlc3QgInAgKmMiICIu KiA9IHthID0gNTY3OH0iICIqYyIKK2dkYl90ZXN0ICJwICpjICsgKmMiICIu KiA9IHthID0gMTEzNTZ9IiAiKmMgKyAqYyIKK2dkYl90ZXN0ICJQIHEoKmMg KyAqYykiICIuKiA9IHthID0gMTEzNTZ9IiAicSgqYyArICpjKSIKK2dkYl90 ZXN0ICJwIG1ha2VfaW50KCkuZ2V0X3R5cGUgKCkiICIuKiA9IElOVCIgIm1h a2VfaW50KCkuZ2V0X3R5cGUgKCkiCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9zbWFydHAuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av c21hcnRwLmV4cAppbmRleCAyYTEwMjhhLi5lM2QyNzFmIDEwMDY0NAotLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zbWFydHAuZXhwCisrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL3NtYXJ0cC5leHAKQEAgLTcyLDYgKzcyLDUgQEAg Z2RiX3Rlc3QgInAgYi0+Zm9vKCkiICAgICAgICAgIj0gNjYiCiBnZGJfdGVz dCAicCBjLT5mb28oKSIgICAgICAgICAiPSA2NiIKIGdkYl90ZXN0ICJwIGMt PmludGEiICAgICAgICAgICI9IDc3IgogCi1zZXR1cF9rZmFpbCAiZ2RiLzEx NjA2IiAiKi0qLSoiCiBnZGJfdGVzdCAicCBjMi0+aW50YSIgICAgICAgICAg Ij0gNzciCiAKZGlmZiAtLWdpdCBhL2dkYi90aHJlYWQuYyBiL2dkYi90aHJl YWQuYwppbmRleCA1Yzk0MjY0Li5hNTVhNDdhIDEwMDY0NAotLS0gYS9nZGIv dGhyZWFkLmMKKysrIGIvZ2RiL3RocmVhZC5jCkBAIC02MzYsNiArNjM2LDEw OSBAQCBwcnVuZV90aHJlYWRzICh2b2lkKQogICAgIH0KIH0KIAorLyogRGlz YWJsZSBzdG9yaW5nIHN0YWNrIHRlbXBvcmFyaWVzIGZvciB0aGUgdGhyZWFk IHdob3NlIGlkIGlzCisgICBzdG9yZWQgaW4gREFUQS4gICovCisKK3N0YXRp YyB2b2lkCitkaXNhYmxlX3RocmVhZF9zdGFja190ZW1wb3JhcmllcyAodm9p ZCAqZGF0YSkKK3sKKyAgcHRpZF90ICpwZCA9IGRhdGE7CisgIHN0cnVjdCB0 aHJlYWRfaW5mbyAqdHAgPSBmaW5kX3RocmVhZF9wdGlkICgqcGQpOworCisg IGlmICh0cCAhPSBOVUxMKQorICAgIHsKKyAgICAgIHRwLT5zdGFja190ZW1w b3Jhcmllc19lbmFibGVkID0gMDsKKyAgICAgIFZFQ19mcmVlICh2YWx1ZV9w dHIsIHRwLT5zdGFja190ZW1wb3Jhcmllcyk7CisgICAgfQorCisgIHhmcmVl IChwZCk7Cit9CisKKy8qIEVuYWJsZSBzdG9yaW5nIHN0YWNrIHRlbXBvcmFy aWVzIGZvciB0aHJlYWQgd2l0aCBpZCBQVElEIGFuZCByZXR1cm4gYQorICAg Y2xlYW51cCB3aGljaCBjYW4gZGlzYWJsZSBhbmQgY2xlYXIgdGhlIHN0YWNr IHRlbXBvcmFyaWVzLiAgKi8KKworc3RydWN0IGNsZWFudXAgKgorZW5hYmxl X3RocmVhZF9zdGFja190ZW1wb3JhcmllcyAocHRpZF90IHB0aWQpCit7Cisg IHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBmaW5kX3RocmVhZF9wdGlkIChw dGlkKTsKKyAgcHRpZF90ICAqZGF0YTsKKyAgc3RydWN0IGNsZWFudXAgKmM7 CisKKyAgZ2RiX2Fzc2VydCAodHAgIT0gTlVMTCk7CisKKyAgdHAtPnN0YWNr X3RlbXBvcmFyaWVzX2VuYWJsZWQgPSAxOworICB0cC0+c3RhY2tfdGVtcG9y YXJpZXMgPSBOVUxMOworICBkYXRhID0gKHB0aWRfdCAqKSB4bWFsbG9jIChz aXplb2YgKHB0aWRfdCkpOworICAqZGF0YSA9IHB0aWQ7CisgIGMgPSBtYWtl X2NsZWFudXAgKGRpc2FibGVfdGhyZWFkX3N0YWNrX3RlbXBvcmFyaWVzLCBk YXRhKTsKKworICByZXR1cm4gYzsKK30KKworLyogUmV0dXJuIG5vbi16ZXJv IHZhbHVlIGlmIHN0YWNrIHRlbXBvcmFpZXMgYXJlIGVuYWJsZWQgZm9yIHRo ZSB0aHJlYWQKKyAgIHdpdGggaWQgUFRJRC4gICovCisKK2ludAordGhyZWFk X3N0YWNrX3RlbXBvcmFyaWVzX2VuYWJsZWRfcCAocHRpZF90IHB0aWQpCit7 CisgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBmaW5kX3RocmVhZF9wdGlk IChwdGlkKTsKKworICBpZiAodHAgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsK KyAgZWxzZQorICAgIHJldHVybiB0cC0+c3RhY2tfdGVtcG9yYXJpZXNfZW5h YmxlZDsKK30KKworLyogUHVzaCBWIG9uIHRvIHRoZSBzdGFjayB0ZW1wb3Jh cmllcyBvZiB0aGUgdGhyZWFkIHdpdGggaWQgUFRJRC4gICovCisKK3ZvaWQK K3B1c2hfdGhyZWFkX3N0YWNrX3RlbXBvcmFyeSAocHRpZF90IHB0aWQsIHN0 cnVjdCB2YWx1ZSAqdikKK3sKKyAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9 IGZpbmRfdGhyZWFkX3B0aWQgKHB0aWQpOworCisgIGdkYl9hc3NlcnQgKHRw ICE9IE5VTEwgJiYgdHAtPnN0YWNrX3RlbXBvcmFyaWVzX2VuYWJsZWQpOwor ICBWRUNfc2FmZV9wdXNoICh2YWx1ZV9wdHIsIHRwLT5zdGFja190ZW1wb3Jh cmllcywgdik7Cit9CisKKy8qIFJldHVybiAxIGlmIFZBTCBpcyBhbW9uZyB0 aGUgc3RhY2sgdGVtcG9yYXJpZXMgb2YgdGhlIHRocmVhZAorICAgd2l0aCBp ZCBQVElELiAgUmV0dXJuIDAgb3RoZXJ3aXNlLiAgKi8KKworaW50Cit2YWx1 ZV9pbl90aHJlYWRfc3RhY2tfdGVtcG9yYXJpZXMgKHN0cnVjdCB2YWx1ZSAq dmFsLCBwdGlkX3QgcHRpZCkKK3sKKyAgc3RydWN0IHRocmVhZF9pbmZvICp0 cCA9IGZpbmRfdGhyZWFkX3B0aWQgKHB0aWQpOworCisgIGdkYl9hc3NlcnQg KHRwICE9IE5VTEwgJiYgdHAtPnN0YWNrX3RlbXBvcmFyaWVzX2VuYWJsZWQp OworICBpZiAoIVZFQ19lbXB0eSAodmFsdWVfcHRyLCB0cC0+c3RhY2tfdGVt cG9yYXJpZXMpKQorICAgIHsKKyAgICAgIHN0cnVjdCB2YWx1ZSAqdjsKKyAg ICAgIGludCBpOworCisgICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAo dmFsdWVfcHRyLCB0cC0+c3RhY2tfdGVtcG9yYXJpZXMsIGksIHYpOyBpKysp CisJaWYgKHYgPT0gdmFsKQorCSAgcmV0dXJuIDE7CisgICAgfQorCisgIHJl dHVybiAwOworfQorCisvKiBSZXR1cm4gYW4gYWRkcmVzcyBhZnRlciBza2lw cGluZyBvdmVyIHRoZSBjdXJyZW50IHN0YWNrIHRlbXBvcmFyaWVzCisgICBv ZiB0aHJlYWQgd2l0aCBpZCBQVElELiAgU1AgaXMgdGhlIGN1cnJlbnQgc3Rh Y2sgZnJhbWUgcG9pbnRlci4gIE5vbi16ZXJvCisgICBET1dOV0FSRCBpbmRp Y2F0ZXMgdGhhdCB0aGUgc3RhY2sgZ3Jvd3MgZG93bndhcmRzL2JhY2t3YXJk cy4gICovCisKK3N0cnVjdCB2YWx1ZSAqCitnZXRfbGFzdF90aHJlYWRfc3Rh Y2tfdGVtcG9yYXJ5IChwdGlkX3QgcHRpZCkKK3sKKyAgc3RydWN0IHZhbHVl ICpsYXN0dmFsID0gTlVMTDsKKyAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9 IGZpbmRfdGhyZWFkX3B0aWQgKHB0aWQpOworCisgIGdkYl9hc3NlcnQgKHRw ICE9IE5VTEwpOworICBpZiAoIVZFQ19lbXB0eSAodmFsdWVfcHRyLCB0cC0+ c3RhY2tfdGVtcG9yYXJpZXMpKQorICAgIGxhc3R2YWwgPSBWRUNfbGFzdCAo dmFsdWVfcHRyLCB0cC0+c3RhY2tfdGVtcG9yYXJpZXMpOworCisgIHJldHVy biBsYXN0dmFsOworfQorCiB2b2lkCiB0aHJlYWRfY2hhbmdlX3B0aWQgKHB0 aWRfdCBvbGRfcHRpZCwgcHRpZF90IG5ld19wdGlkKQogewpkaWZmIC0tZ2l0 IGEvZ2RiL3ZhbHVlLmMgYi9nZGIvdmFsdWUuYwppbmRleCBlY2ZiMTU0Li4z YTljM2E5IDEwMDY0NAotLS0gYS9nZGIvdmFsdWUuYworKysgYi9nZGIvdmFs dWUuYwpAQCAtMTcyNCw2ICsxNzI0LDE4IEBAIHZhbHVlX25vbl9sdmFsIChz dHJ1Y3QgdmFsdWUgKmFyZykKICAgIHJldHVybiBhcmc7CiB9CiAKKy8qIFdy aXRlIGNvbnRlbnRzIG9mIFYgYXQgQUREUiBhbmQgc2V0IGl0cyBsdmFsIHR5 cGUgdG8gYmUgTFZBTF9NRU1PUlkuICAqLworCit2b2lkCit2YWx1ZV9mb3Jj ZV9sdmFsIChzdHJ1Y3QgdmFsdWUgKnYsIENPUkVfQUREUiBhZGRyKQorewor ICBnZGJfYXNzZXJ0IChWQUxVRV9MVkFMICh2KSA9PSBub3RfbHZhbCk7CisK KyAgd3JpdGVfbWVtb3J5IChhZGRyLCB2YWx1ZV9jb250ZW50c19yYXcgKHYp LCBUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSAodikpKTsKKyAgdi0+bHZhbCA9 IGx2YWxfbWVtb3J5OworICB2LT5sb2NhdGlvbi5hZGRyZXNzID0gYWRkcjsK K30KKwogdm9pZAogc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3Ry dWN0IHZhbHVlICpjb21wb25lbnQsCiAJCQkgICAgICBjb25zdCBzdHJ1Y3Qg dmFsdWUgKndob2xlKQpkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIv dmFsdWUuaAppbmRleCBlMzYwM2MzLi5hOGMzM2ZiIDEwMDY0NAotLS0gYS9n ZGIvdmFsdWUuaAorKysgYi9nZGIvdmFsdWUuaApAQCAtMTAzOCw2ICsxMDM4 LDggQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfY29weSAoc3RydWN0 IHZhbHVlICopOwogCiBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9ub25f bHZhbCAoc3RydWN0IHZhbHVlICopOwogCitleHRlcm4gdm9pZCB2YWx1ZV9m b3JjZV9sdmFsIChzdHJ1Y3QgdmFsdWUgKiwgQ09SRV9BRERSKTsKKwogZXh0 ZXJuIHZvaWQgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKiwg c3RydWN0IG9iamZpbGUgKiwgaHRhYl90KTsKIAogLyogRnJvbSB2YWxvcHMu YyAqLwo= --001a11c2de64229d3c0508d1a259--