From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31125 invoked by alias); 30 May 2014 23:01:18 -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 31113 invoked by uid 89); 30 May 2014 23:01:18 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,SPF_PASS autolearn=no version=3.3.2 X-HELO: mail-wg0-f44.google.com Received: from mail-wg0-f44.google.com (HELO mail-wg0-f44.google.com) (74.125.82.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Fri, 30 May 2014 23:01:15 +0000 Received: by mail-wg0-f44.google.com with SMTP id a1so2671924wgh.27 for ; Fri, 30 May 2014 16:01:12 -0700 (PDT) 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 :content-type; bh=Yo/JSOCS686cuxSoE7j1DBrCL7U8aEcsQThORj185Uw=; b=SXv10npBIPAHXQ7ow5iRIvSiQ2bKzWmuhwtk0CJRpQB5Y4MFw909riQ8rOGYXMCOYh 1JJ9wVQzelOxRyEbwesDibKEKPuJJzwq1pZh0LqMG3bO4KNYlyEbgshSJxf0VRVUkCK0 KOyNbAVfKYdlFPOY+OPZeS3G9Z2uNiJktZDHX9sig0ZMwlEVrVk9/+zh+NjRj23N/8pt +mW0RzaUIA+dVpMwQeYXokDEWlLMMBnzfsdyhVCW38OK90NSRgNt5qli6zwaw3dFAheE /SKCSejwv4GTDiLMaYaeKirgN3sdVErg314lOEuoHIWFbIvTzdhSgLYffwNHMCUnujpL xUWQ== X-Gm-Message-State: ALoCoQng+Zqu7VhaixSejch9fppdGFY5tMJ32V3gT9ahmaYnnJSvoa3ZAS3iMTpnNFgIJ372TsxN MIME-Version: 1.0 X-Received: by 10.180.7.137 with SMTP id j9mr806477wia.7.1401490872563; Fri, 30 May 2014 16:01:12 -0700 (PDT) Received: by 10.217.51.7 with HTTP; Fri, 30 May 2014 16:01:12 -0700 (PDT) Date: Fri, 30 May 2014 23:01:00 -0000 Message-ID: Subject: [PATCH 3/4 v19] Add support for lookup, overload resolution and invocation of xmethods of C++ classes From: Siva Chandra To: gdb-patches Content-Type: multipart/mixed; boundary=f46d044287a09db0b604faa605a1 X-IsSubscribed: yes X-SW-Source: 2014-05/txt/msg00764.txt.bz2 --f46d044287a09db0b604faa605a1 Content-Type: text/plain; charset=UTF-8 Content-length: 1041 No changes from v18. ChangeLog 2014-05-30 Siva Chandra Reddy * eval.c (evaluate_subexp_standard): Call the xmethod if the best match method returned by find_overload_match is an xmethod. * valarith.c (value_x_binop, value_x_unop): Call the xmethod if the best matching operator returned by find_overload_match is an xmethod. * valops.c: #include "extension.h". (find_method_list): Add "fn_list" and "xm_worker_vec" arguments. Return void. The list of matching source methods is returned in "fn_list" and a vector of matching debug method workers is returned in "xm_worker_vec". Update all callers. (value_find_oload_method_list): Likewise. (find_oload_champ): Add "xm_worker_vec" parameter. If it is non-NULL, then the index of the best matching method in this vector is returned. Update all callers. (find_overload_match): Include xmethods while performing overload resolution. --f46d044287a09db0b604faa605a1 Content-Type: text/plain; charset=US-ASCII; name="xmethod_cpp_support_v19.txt" Content-Disposition: attachment; filename="xmethod_cpp_support_v19.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hvu3h4960 Content-length: 29577 ZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCmluZGV4IDE0 YmY2ZjcuLmQzNzRiNmEgMTAwNjQ0Ci0tLSBhL2dkYi9ldmFsLmMKKysrIGIv Z2RiL2V2YWwuYwpAQCAtMTc2NSwxMSArMTc2NSwxNiBAQCBldmFsdWF0ZV9z dWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKIAkg ICAgZXJyb3IgKF8oIkV4cHJlc3Npb24gb2YgdHlwZSBvdGhlciB0aGFuICIK IAkJICAgICAiXCJGdW5jdGlvbiByZXR1cm5pbmcgLi4uXCIgdXNlZCBhcyBm dW5jdGlvbiIpKTsKIAl9Ci0gICAgICBpZiAoVFlQRV9DT0RFICh2YWx1ZV90 eXBlIChhcmd2ZWNbMF0pKSA9PSBUWVBFX0NPREVfSU5URVJOQUxfRlVOQ1RJ T04pCi0JcmV0dXJuIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKGV4cC0+Z2Ri YXJjaCwgZXhwLT5sYW5ndWFnZV9kZWZuLAotCQkJCSAgICAgICBhcmd2ZWNb MF0sIG5hcmdzLCBhcmd2ZWMgKyAxKTsKLQotICAgICAgcmV0dXJuIGNhbGxf ZnVuY3Rpb25fYnlfaGFuZCAoYXJndmVjWzBdLCBuYXJncywgYXJndmVjICsg MSk7CisgICAgICBzd2l0Y2ggKFRZUEVfQ09ERSAodmFsdWVfdHlwZSAoYXJn dmVjWzBdKSkpCisJeworCWNhc2UgVFlQRV9DT0RFX0lOVEVSTkFMX0ZVTkNU SU9OOgorCSAgcmV0dXJuIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKGV4cC0+ Z2RiYXJjaCwgZXhwLT5sYW5ndWFnZV9kZWZuLAorCQkJCQkgYXJndmVjWzBd LCBuYXJncywgYXJndmVjICsgMSk7CisJY2FzZSBUWVBFX0NPREVfWE1FVEhP RDoKKwkgIHJldHVybiBjYWxsX3htZXRob2QgKGFyZ3ZlY1swXSwgbmFyZ3Ms IGFyZ3ZlYyArIDEpOworCWRlZmF1bHQ6CisJICByZXR1cm4gY2FsbF9mdW5j dGlvbl9ieV9oYW5kIChhcmd2ZWNbMF0sIG5hcmdzLCBhcmd2ZWMgKyAxKTsK Kwl9CiAgICAgICAvKiBwYWk6IEZJWE1FIHNhdmUgdmFsdWUgZnJvbSBjYWxs X2Z1bmN0aW9uX2J5X2hhbmQsIHRoZW4gYWRqdXN0CiAJIHBjIGJ5IGFkanVz dF9mbl9wYyBpZiArdmUuICAqLwogCmRpZmYgLS1naXQgYS9nZGIvdmFsYXJp dGguYyBiL2dkYi92YWxhcml0aC5jCmluZGV4IDhlODYzZTMuLjRkYTQxY2Ig MTAwNjQ0Ci0tLSBhL2dkYi92YWxhcml0aC5jCisrKyBiL2dkYi92YWxhcml0 aC5jCkBAIC00ODksOCArNDg5LDE2IEBAIHZhbHVlX3hfYmlub3AgKHN0cnVj dCB2YWx1ZSAqYXJnMSwgc3RydWN0IHZhbHVlICphcmcyLCBlbnVtIGV4cF9v cGNvZGUgb3AsCiAJICAgID0gVFlQRV9UQVJHRVRfVFlQRSAoY2hlY2tfdHlw ZWRlZiAodmFsdWVfdHlwZSAoYXJndmVjWzBdKSkpOwogCSAgcmV0dXJuIHZh bHVlX3plcm8gKHJldHVybl90eXBlLCBWQUxVRV9MVkFMIChhcmcxKSk7CiAJ fQotICAgICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoYXJndmVj WzBdLCAyIC0gc3RhdGljX21lbWZ1bmNwLAotCQkJCSAgICBhcmd2ZWMgKyAx KTsKKworICAgICAgaWYgKFRZUEVfQ09ERSAodmFsdWVfdHlwZSAoYXJndmVj WzBdKSkgPT0gVFlQRV9DT0RFX1hNRVRIT0QpCisJeworCSAgLyogU3RhdGlj IHhtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4gICovCisJICBnZGJf YXNzZXJ0IChzdGF0aWNfbWVtZnVuY3AgPT0gMCk7CisJICByZXR1cm4gY2Fs bF94bWV0aG9kIChhcmd2ZWNbMF0sIDIsIGFyZ3ZlYyArIDEpOworCX0KKyAg ICAgIGVsc2UKKwlyZXR1cm4gY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChhcmd2 ZWNbMF0sIDIgLSBzdGF0aWNfbWVtZnVuY3AsCisJCQkJICAgICAgYXJndmVj ICsgMSk7CiAgICAgfQogICB0aHJvd19lcnJvciAoTk9UX0ZPVU5EX0VSUk9S LAogICAgICAgICAgICAgICAgXygibWVtYmVyIGZ1bmN0aW9uICVzIG5vdCBm b3VuZCIpLCB0c3RyKTsKQEAgLTU5Myw3ICs2MDEsMTQgQEAgdmFsdWVfeF91 bm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGVudW0gZXhwX29wY29kZSBvcCwg ZW51bSBub3NpZGUgbm9zaWRlKQogCSAgICA9IFRZUEVfVEFSR0VUX1RZUEUg KGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZ3ZlY1swXSkpKTsKIAkg IHJldHVybiB2YWx1ZV96ZXJvIChyZXR1cm5fdHlwZSwgVkFMVUVfTFZBTCAo YXJnMSkpOwogCX0KLSAgICAgIHJldHVybiBjYWxsX2Z1bmN0aW9uX2J5X2hh bmQgKGFyZ3ZlY1swXSwgbmFyZ3MsIGFyZ3ZlYyArIDEpOworICAgICAgaWYg KFRZUEVfQ09ERSAodmFsdWVfdHlwZSAoYXJndmVjWzBdKSkgPT0gVFlQRV9D T0RFX1hNRVRIT0QpCisJeworCSAgLyogU3RhdGljIHhtZXRob2RzIGFyZSBu b3Qgc3VwcG9ydGVkIHlldC4gICovCisJICBnZGJfYXNzZXJ0IChzdGF0aWNf bWVtZnVuY3AgPT0gMCk7CisJICByZXR1cm4gY2FsbF94bWV0aG9kIChhcmd2 ZWNbMF0sIDEsIGFyZ3ZlYyArIDEpOworCX0KKyAgICAgIGVsc2UKKwlyZXR1 cm4gY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChhcmd2ZWNbMF0sIG5hcmdzLCBh cmd2ZWMgKyAxKTsKICAgICB9CiAgIHRocm93X2Vycm9yIChOT1RfRk9VTkRf RVJST1IsCiAgICAgICAgICAgICAgICBfKCJtZW1iZXIgZnVuY3Rpb24gJXMg bm90IGZvdW5kIiksIHRzdHIpOwpkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5j IGIvZ2RiL3ZhbG9wcy5jCmluZGV4IGU5MTVlMzQuLmUwYzg4NzMgMTAwNjQ0 Ci0tLSBhL2dkYi92YWxvcHMuYworKysgYi9nZGIvdmFsb3BzLmMKQEAgLTQy LDYgKzQyLDcgQEAKICNpbmNsdWRlICJvYnNlcnZlci5oIgogI2luY2x1ZGUg Im9iamZpbGVzLmgiCiAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgorI2luY2x1 ZGUgImV4dGVuc2lvbi5oIgogCiBleHRlcm4gdW5zaWduZWQgaW50IG92ZXJs b2FkX2RlYnVnOwogLyogTG9jYWwgZnVuY3Rpb25zLiAgKi8KQEAgLTcwLDgg KzcxLDggQEAgaW50IGZpbmRfb2xvYWRfY2hhbXBfbmFtZXNwYWNlX2xvb3Ag KHN0cnVjdCB2YWx1ZSAqKiwgaW50LAogCQkJCSAgICAgY29uc3QgaW50IG5v X2FkbCk7CiAKIHN0YXRpYyBpbnQgZmluZF9vbG9hZF9jaGFtcCAoc3RydWN0 IHZhbHVlICoqLCBpbnQsIGludCwKLQkJCSAgICAgc3RydWN0IGZuX2ZpZWxk ICosIHN0cnVjdCBzeW1ib2wgKiosCi0JCQkgICAgIHN0cnVjdCBiYWRuZXNz X3ZlY3RvciAqKik7CisJCQkgICAgIHN0cnVjdCBmbl9maWVsZCAqLCBWRUMg KHhtZXRob2Rfd29ya2VyX3B0cikgKiwKKwkJCSAgICAgc3RydWN0IHN5bWJv bCAqKiwgc3RydWN0IGJhZG5lc3NfdmVjdG9yICoqKTsKIAogc3RhdGljIGlu dCBvbG9hZF9tZXRob2Rfc3RhdGljX3AgKHN0cnVjdCBmbl9maWVsZCAqLCBp bnQpOwogCkBAIC05OCw5ICs5OSwxMCBAQCBzdGF0aWMgQ09SRV9BRERSIGFs bG9jYXRlX3NwYWNlX2luX2luZmVyaW9yIChpbnQpOwogCiBzdGF0aWMgc3Ry dWN0IHZhbHVlICpjYXN0X2ludG9fY29tcGxleCAoc3RydWN0IHR5cGUgKiwg c3RydWN0IHZhbHVlICopOwogCi1zdGF0aWMgc3RydWN0IGZuX2ZpZWxkICpm aW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiosIGNvbnN0IGNoYXIg KiwKLQkJCQkJICBpbnQsIHN0cnVjdCB0eXBlICosIGludCAqLAotCQkJCQkg IHN0cnVjdCB0eXBlICoqLCBpbnQgKik7CitzdGF0aWMgdm9pZCBmaW5kX21l dGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiosIGNvbnN0IGNoYXIgKiwKKwkJ CSAgICAgIGludCwgc3RydWN0IHR5cGUgKiwgc3RydWN0IGZuX2ZpZWxkICoq LCBpbnQgKiwKKwkJCSAgICAgIFZFQyAoeG1ldGhvZF93b3JrZXJfcHRyKSAq KiwKKwkJCSAgICAgIHN0cnVjdCB0eXBlICoqLCBpbnQgKik7CiAKIHZvaWQg X2luaXRpYWxpemVfdmFsb3BzICh2b2lkKTsKIApAQCAtMjI1Niw1MyArMjI1 OCw4NyBAQCB2YWx1ZV9zdHJ1Y3RfZWx0X2JpdHBvcyAoc3RydWN0IHZhbHVl ICoqYXJncCwgaW50IGJpdHBvcywgc3RydWN0IHR5cGUgKmZ0eXBlLAogfQog CiAvKiBTZWFyY2ggdGhyb3VnaCB0aGUgbWV0aG9kcyBvZiBhbiBvYmplY3Qg KGFuZCBpdHMgYmFzZXMpIHRvIGZpbmQgYQotICAgc3BlY2lmaWVkIG1ldGhv ZC4gIFJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgZm5fZmllbGQgbGlzdCBv ZgotICAgb3ZlcmxvYWRlZCBpbnN0YW5jZXMuCisgICBzcGVjaWZpZWQgbWV0 aG9kLiAgUmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBmbl9maWVsZCBsaXN0 IEZOX0xJU1Qgb2YKKyAgIG92ZXJsb2FkZWQgaW5zdGFuY2VzIGRlZmluZWQg aW4gdGhlIHNvdXJjZSBsYW5ndWFnZS4gIElmIGF2YWlsYWJsZQorICAgYW5k IG1hdGNoaW5nLCBhIHZlY3RvciBvZiBtYXRjaGluZyB4bWV0aG9kcyBkZWZp bmVkIGluIGV4dGVuc2lvbgorICAgbGFuZ3VhZ2VzIGFyZSBhbHNvIHJldHVy bmVkIGluIFhNX1dPUktFUl9WRUMKIAogICAgSGVscGVyIGZ1bmN0aW9uIGZv ciB2YWx1ZV9maW5kX29sb2FkX2xpc3QuCiAgICBBUkdQIGlzIGEgcG9pbnRl ciB0byBhIHBvaW50ZXIgdG8gYSB2YWx1ZSAodGhlIG9iamVjdCkuCiAgICBN RVRIT0QgaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWV0aG9kIG5hbWUu CiAgICBPRkZTRVQgaXMgdGhlIG9mZnNldCB3aXRoaW4gdGhlIHZhbHVlLgog ICAgVFlQRSBpcyB0aGUgYXNzdW1lZCB0eXBlIG9mIHRoZSBvYmplY3QuCi0g ICBOVU1fRk5TIGlzIHRoZSBudW1iZXIgb2Ygb3ZlcmxvYWRlZCBpbnN0YW5j ZXMuCisgICBGTl9MSVNUIGlzIHRoZSBwb2ludGVyIHRvIG1hdGNoaW5nIG92 ZXJsb2FkZWQgaW5zdGFuY2VzIGRlZmluZWQgaW4KKyAgICAgIHNvdXJjZSBs YW5ndWFnZS4gIFNpbmNlIHRoaXMgaXMgYSByZWN1cnNpdmUgZnVuY3Rpb24s ICpGTl9MSVNUCisgICAgICBzaG91bGQgYmUgc2V0IHRvIE5VTEwgd2hlbiBj YWxsaW5nIHRoaXMgZnVuY3Rpb24uCisgICBOVU1fRk5TIGlzIHRoZSBudW1i ZXIgb2Ygb3ZlcmxvYWRlZCBpbnN0YW5jZXMuICAqTlVNX0ZOUyBzaG91bGQg YmUgc2V0IHRvCisgICAgICAwIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9u LgorICAgWE1fV09SS0VSX1ZFQyBpcyB0aGUgdmVjdG9yIG9mIG1hdGNoaW5n IHhtZXRob2Qgd29ya2Vycy4gICpYTV9XT1JLRVJfVkVDCisgICAgICBzaG91 bGQgYWxzbyBiZSBzZXQgdG8gTlVMTCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5j dGlvbi4KICAgIEJBU0VUWVBFIGlzIHNldCB0byB0aGUgYWN0dWFsIHR5cGUg b2YgdGhlIHN1Ym9iamVjdCB3aGVyZSB0aGUKICAgICAgIG1ldGhvZCBpcyBm b3VuZC4KICAgIEJPRkZTRVQgaXMgdGhlIG9mZnNldCBvZiB0aGUgYmFzZSBz dWJvYmplY3Qgd2hlcmUgdGhlIG1ldGhvZCBpcyBmb3VuZC4gICovCiAKLXN0 YXRpYyBzdHJ1Y3QgZm5fZmllbGQgKgorc3RhdGljIHZvaWQKIGZpbmRfbWV0 aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1l dGhvZCwKLQkJICBpbnQgb2Zmc2V0LCBzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50 ICpudW1fZm5zLAorCQkgIGludCBvZmZzZXQsIHN0cnVjdCB0eXBlICp0eXBl LAorCQkgIHN0cnVjdCBmbl9maWVsZCAqKmZuX2xpc3QsIGludCAqbnVtX2Zu cywKKwkJICBWRUMgKHhtZXRob2Rfd29ya2VyX3B0cikgKip4bV93b3JrZXJf dmVjLAogCQkgIHN0cnVjdCB0eXBlICoqYmFzZXR5cGUsIGludCAqYm9mZnNl dCkKIHsKICAgaW50IGk7Ci0gIHN0cnVjdCBmbl9maWVsZCAqZjsKLSAgQ0hF Q0tfVFlQRURFRiAodHlwZSk7CisgIHN0cnVjdCBmbl9maWVsZCAqZiA9IE5V TEw7CisgIFZFQyAoeG1ldGhvZF93b3JrZXJfcHRyKSAqd29ya2VyX3ZlYyA9 IE5VTEwsICpuZXdfdmVjID0gTlVMTDsKIAotICAqbnVtX2ZucyA9IDA7Cisg IGdkYl9hc3NlcnQgKGZuX2xpc3QgIT0gTlVMTCAmJiB4bV93b3JrZXJfdmVj ICE9IE5VTEwpOworICBDSEVDS19UWVBFREVGICh0eXBlKTsKIAotICAvKiBG aXJzdCBjaGVjayBpbiBvYmplY3QgaXRzZWxmLiAgKi8KLSAgZm9yIChpID0g VFlQRV9ORk5fRklFTERTICh0eXBlKSAtIDE7IGkgPj0gMDsgaS0tKQorICAv KiBGaXJzdCBjaGVjayBpbiBvYmplY3QgaXRzZWxmLgorICAgICBUaGlzIGZ1 bmN0aW9uIGlzIGNhbGxlZCByZWN1cnNpdmVseSB0byBzZWFyY2ggdGhyb3Vn aCBiYXNlIGNsYXNzZXMuCisgICAgIElmIHRoZXJlIGlzIGEgc291cmNlIG1l dGhvZCBtYXRjaCBmb3VuZCBhdCBzb21lIHN0YWdlLCB0aGVuIHdlIG5lZWQg bm90CisgICAgIGxvb2sgZm9yIHNvdXJjZSBtZXRob2RzIGluIGNvbnNlcXVl bnQgcmVjdXJzaXZlIGNhbGxzLiAgKi8KKyAgaWYgKCgqZm5fbGlzdCkgPT0g TlVMTCkKICAgICB7Ci0gICAgICAvKiBwYWk6IEZJWE1FIFdoYXQgYWJvdXQg b3BlcmF0b3JzIGFuZCB0eXBlIGNvbnZlcnNpb25zPyAgKi8KLSAgICAgIGNv bnN0IGNoYXIgKmZuX2ZpZWxkX25hbWUgPSBUWVBFX0ZOX0ZJRUxETElTVF9O QU1FICh0eXBlLCBpKTsKLQotICAgICAgaWYgKGZuX2ZpZWxkX25hbWUgJiYg KHN0cmNtcF9pdyAoZm5fZmllbGRfbmFtZSwgbWV0aG9kKSA9PSAwKSkKKyAg ICAgIGZvciAoaSA9IFRZUEVfTkZOX0ZJRUxEUyAodHlwZSkgLSAxOyBpID49 IDA7IGktLSkKIAl7Ci0JICBpbnQgbGVuID0gVFlQRV9GTl9GSUVMRExJU1Rf TEVOR1RIICh0eXBlLCBpKTsKLQkgIHN0cnVjdCBmbl9maWVsZCAqZiA9IFRZ UEVfRk5fRklFTERMSVNUMSAodHlwZSwgaSk7CisJICAvKiBwYWk6IEZJWE1F IFdoYXQgYWJvdXQgb3BlcmF0b3JzIGFuZCB0eXBlIGNvbnZlcnNpb25zPyAg Ki8KKwkgIGNvbnN0IGNoYXIgKmZuX2ZpZWxkX25hbWUgPSBUWVBFX0ZOX0ZJ RUxETElTVF9OQU1FICh0eXBlLCBpKTsKKworCSAgaWYgKGZuX2ZpZWxkX25h bWUgJiYgKHN0cmNtcF9pdyAoZm5fZmllbGRfbmFtZSwgbWV0aG9kKSA9PSAw KSkKKwkgICAgeworCSAgICAgIGludCBsZW4gPSBUWVBFX0ZOX0ZJRUxETElT VF9MRU5HVEggKHR5cGUsIGkpOworCSAgICAgIGYgPSBUWVBFX0ZOX0ZJRUxE TElTVDEgKHR5cGUsIGkpOworCSAgICAgICpmbl9saXN0ID0gZjsKIAotCSAg Km51bV9mbnMgPSBsZW47Ci0JICAqYmFzZXR5cGUgPSB0eXBlOwotCSAgKmJv ZmZzZXQgPSBvZmZzZXQ7CisJICAgICAgKm51bV9mbnMgPSBsZW47CisJICAg ICAgKmJhc2V0eXBlID0gdHlwZTsKKwkgICAgICAqYm9mZnNldCA9IG9mZnNl dDsKIAotCSAgLyogUmVzb2x2ZSBhbnkgc3R1YiBtZXRob2RzLiAgKi8KLQkg IGNoZWNrX3N0dWJfbWV0aG9kX2dyb3VwICh0eXBlLCBpKTsKKwkgICAgICAv KiBSZXNvbHZlIGFueSBzdHViIG1ldGhvZHMuICAqLworCSAgICAgIGNoZWNr X3N0dWJfbWV0aG9kX2dyb3VwICh0eXBlLCBpKTsKIAotCSAgcmV0dXJuIGY7 CisJICAgICAgYnJlYWs7CisJICAgIH0KIAl9CiAgICAgfQogCi0gIC8qIE5v dCBmb3VuZCBpbiBvYmplY3QsIGNoZWNrIGluIGJhc2Ugc3Vib2JqZWN0cy4g ICovCisgIC8qIFVubGlrZSBzb3VyY2UgbWV0aG9kcywgeG1ldGhvZHMgY2Fu IGJlIGFjY3VtdWxhdGVkIG92ZXIgc3VjY2Vzc2l2ZQorICAgICByZWN1cnNp dmUgY2FsbHMuICBJbiBvdGhlciB3b3JkcywgYW4geG1ldGhvZCBuYW1lZCAn bScgaW4gYSBjbGFzcworICAgICB3aWxsIG5vdCBoaWRlIGFuIHhtZXRob2Qg bmFtZWQgJ20nIGluIGl0cyBiYXNlIGNsYXNzKGVzKS4gIFdlIHdhbnQKKyAg ICAgaXQgdG8gYmUgdGhpcyB3YXkgYmVjYXVzZSB4bWV0aG9kcyBhcmUgYWZ0 ZXIgYWxsIGNvbnZlbmllbmNlIGZ1bmN0aW9ucworICAgICBhbmQgaGVuY2Ug dGhlcmUgaXMgbm8gcG9pbnQgcmVzdHJpY3RpbmcgdGhlbSB3aXRoIHNvbWV0 aGluZyBsaWtlIG1ldGhvZAorICAgICBoaWRpbmcuICBNb3Jlb3ZlciwgaWYg aGlkaW5nIGlzIGRvbmUgZm9yIHhtZXRob2RzIGFzIHdlbGwsIHRoZW4gd2Ug d2lsbAorICAgICBoYXZlIHRvIHByb3ZpZGUgYSBtZWNoYW5pc20gdG8gdW4t aGlkZSAobGlrZSB0aGUgJ3VzaW5nJyBjb25zdHJ1Y3QpLiAgKi8KKyAgd29y a2VyX3ZlYyA9IGdldF9tYXRjaGluZ194bWV0aG9kX3dvcmtlcnMgKHR5cGUs IG1ldGhvZCk7CisgIG5ld192ZWMgPSBWRUNfbWVyZ2UgKHhtZXRob2Rfd29y a2VyX3B0ciwgKnhtX3dvcmtlcl92ZWMsIHdvcmtlcl92ZWMpOworCisgIFZF Q19mcmVlICh4bWV0aG9kX3dvcmtlcl9wdHIsICp4bV93b3JrZXJfdmVjKTsK KyAgVkVDX2ZyZWUgKHhtZXRob2Rfd29ya2VyX3B0ciwgd29ya2VyX3ZlYyk7 CisgICp4bV93b3JrZXJfdmVjID0gbmV3X3ZlYzsKKworICAvKiBJZiBzb3Vy Y2UgbWV0aG9kcyBhcmUgbm90IGZvdW5kIGluIGN1cnJlbnQgY2xhc3MsIGxv b2sgZm9yIHRoZW0gaW4gdGhlCisgICAgIGJhc2UgY2xhc3Nlcy4gIFdlIGFs c28gaGF2ZSB0byBnbyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgdG8gZ2F0 aGVyCisgICAgIGV4dGVuc2lvbiBtZXRob2RzLiAgKi8KICAgZm9yIChpID0g VFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKSAtIDE7IGkgPj0gMDsgaS0tKQog ICAgIHsKICAgICAgIGludCBiYXNlX29mZnNldDsKQEAgLTIzMTksMjggKzIz NTUsMzUgQEAgZmluZF9tZXRob2RfbGlzdCAoc3RydWN0IHZhbHVlICoqYXJn cCwgY29uc3QgY2hhciAqbWV0aG9kLAogCXsKIAkgIGJhc2Vfb2Zmc2V0ID0g VFlQRV9CQVNFQ0xBU1NfQklUUE9TICh0eXBlLCBpKSAvIDg7CiAJfQotICAg ICAgZiA9IGZpbmRfbWV0aG9kX2xpc3QgKGFyZ3AsIG1ldGhvZCwgYmFzZV9v ZmZzZXQgKyBvZmZzZXQsCi0JCQkgICAgVFlQRV9CQVNFQ0xBU1MgKHR5cGUs IGkpLCBudW1fZm5zLCAKLQkJCSAgICBiYXNldHlwZSwgYm9mZnNldCk7Ci0g ICAgICBpZiAoZikKLQlyZXR1cm4gZjsKKworICAgICAgZmluZF9tZXRob2Rf bGlzdCAoYXJncCwgbWV0aG9kLCBiYXNlX29mZnNldCArIG9mZnNldCwKKwkJ CVRZUEVfQkFTRUNMQVNTICh0eXBlLCBpKSwgZm5fbGlzdCwgbnVtX2ZucywK KwkJCXhtX3dvcmtlcl92ZWMsIGJhc2V0eXBlLCBib2Zmc2V0KTsKICAgICB9 Ci0gIHJldHVybiBOVUxMOwogfQogCi0vKiBSZXR1cm4gdGhlIGxpc3Qgb2Yg b3ZlcmxvYWRlZCBtZXRob2RzIG9mIGEgc3BlY2lmaWVkIG5hbWUuCisvKiBS ZXR1cm4gdGhlIGxpc3Qgb2Ygb3ZlcmxvYWRlZCBtZXRob2RzIG9mIGEgc3Bl Y2lmaWVkIG5hbWUuICBUaGUgbWV0aG9kcworICAgY291bGQgYmUgdGhvc2Ug R0RCIGZpbmRzIGluIHRoZSBiaW5hcnksIG9yIHhtZXRob2QuICBNZXRob2Rz IGZvdW5kIGluCisgICB0aGUgYmluYXJ5IGFyZSByZXR1cm5lZCBpbiBGTl9M SVNULCBhbmQgeG1ldGhvZHMgYXJlIHJldHVybmVkIGluCisgICBYTV9XT1JL RVJfVkVDLgogCiAgICBBUkdQIGlzIGEgcG9pbnRlciB0byBhIHBvaW50ZXIg dG8gYSB2YWx1ZSAodGhlIG9iamVjdCkuCiAgICBNRVRIT0QgaXMgdGhlIG1l dGhvZCBuYW1lLgogICAgT0ZGU0VUIGlzIHRoZSBvZmZzZXQgd2l0aGluIHRo ZSB2YWx1ZSBjb250ZW50cy4KKyAgIEZOX0xJU1QgaXMgdGhlIHBvaW50ZXIg dG8gbWF0Y2hpbmcgb3ZlcmxvYWRlZCBpbnN0YW5jZXMgZGVmaW5lZCBpbgor ICAgICAgc291cmNlIGxhbmd1YWdlLgogICAgTlVNX0ZOUyBpcyB0aGUgbnVt YmVyIG9mIG92ZXJsb2FkZWQgaW5zdGFuY2VzLgorICAgWE1fV09SS0VSX1ZF QyBpcyB0aGUgdmVjdG9yIG9mIG1hdGNoaW5nIHhtZXRob2Qgd29ya2VycyBk ZWZpbmVkIGluCisgICAgICBleHRlbnNpb24gbGFuZ3VhZ2VzLgogICAgQkFT RVRZUEUgaXMgc2V0IHRvIHRoZSB0eXBlIG9mIHRoZSBiYXNlIHN1Ym9iamVj dCB0aGF0IGRlZmluZXMgdGhlCiAgICAgICBtZXRob2QuCiAgICBCT0ZGU0VU IGlzIHRoZSBvZmZzZXQgb2YgdGhlIGJhc2Ugc3Vib2JqZWN0IHdoaWNoIGRl ZmluZXMgdGhlIG1ldGhvZC4gICovCiAKLXN0YXRpYyBzdHJ1Y3QgZm5fZmll bGQgKgorc3RhdGljIHZvaWQKIHZhbHVlX2ZpbmRfb2xvYWRfbWV0aG9kX2xp c3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1ldGhvZCwK LQkJCSAgICAgIGludCBvZmZzZXQsIGludCAqbnVtX2ZucywgCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0LCBzdHJ1Y3QgZm5f ZmllbGQgKipmbl9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50ICpudW1fZm5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVkVDICh4bWV0aG9kX3dvcmtlcl9wdHIpICoqeG1fd29ya2VyX3ZlYywK IAkJCSAgICAgIHN0cnVjdCB0eXBlICoqYmFzZXR5cGUsIGludCAqYm9mZnNl dCkKIHsKICAgc3RydWN0IHR5cGUgKnQ7CkBAIC0yMzYyLDggKzI0MDUsMTUg QEAgdmFsdWVfZmluZF9vbG9hZF9tZXRob2RfbGlzdCAoc3RydWN0IHZhbHVl ICoqYXJncCwgY29uc3QgY2hhciAqbWV0aG9kLAogICAgIGVycm9yIChfKCJB dHRlbXB0IHRvIGV4dHJhY3QgYSBjb21wb25lbnQgb2YgYSAiCiAJICAgICAi dmFsdWUgdGhhdCBpcyBub3QgYSBzdHJ1Y3Qgb3IgdW5pb24iKSk7CiAKLSAg cmV0dXJuIGZpbmRfbWV0aG9kX2xpc3QgKGFyZ3AsIG1ldGhvZCwgMCwgdCwg bnVtX2ZucywgCi0JCQkgICBiYXNldHlwZSwgYm9mZnNldCk7CisgIGdkYl9h c3NlcnQgKGZuX2xpc3QgIT0gTlVMTCAmJiB4bV93b3JrZXJfdmVjICE9IE5V TEwpOworCisgIC8qIENsZWFyIHRoZSBsaXN0cy4gICovCisgICpmbl9saXN0 ID0gTlVMTDsKKyAgKm51bV9mbnMgPSAwOworICAqeG1fd29ya2VyX3ZlYyA9 IE5VTEw7CisKKyAgZmluZF9tZXRob2RfbGlzdCAoYXJncCwgbWV0aG9kLCAw LCB0LCBmbl9saXN0LCBudW1fZm5zLCB4bV93b3JrZXJfdmVjLAorCQkgICAg YmFzZXR5cGUsIGJvZmZzZXQpOwogfQogCiAvKiBHaXZlbiBhbiBhcnJheSBv ZiBhcmd1bWVudHMgKEFSR1MpICh3aGljaCBpbmNsdWRlcyBhbgpAQCAtMjQx OCwxNiArMjQ2OCwyMyBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3Qg dmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsCiAgIC8qIEluZGV4IG9mIGJlc3Qg b3ZlcmxvYWRlZCBmdW5jdGlvbi4gICovCiAgIGludCBmdW5jX29sb2FkX2No YW1wID0gLTE7CiAgIGludCBtZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAg aW50IHNyY19tZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAgaW50IGV4dF9t ZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAgaW50IHNyY19hbmRfZXh0X2Vx dWFsID0gMDsKIAogICAvKiBUaGUgbWVhc3VyZSBmb3IgdGhlIGN1cnJlbnQg YmVzdCBtYXRjaC4gICovCiAgIHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAqbWV0 aG9kX2JhZG5lc3MgPSBOVUxMOwogICBzdHJ1Y3QgYmFkbmVzc192ZWN0b3Ig KmZ1bmNfYmFkbmVzcyA9IE5VTEw7CisgIHN0cnVjdCBiYWRuZXNzX3ZlY3Rv ciAqZXh0X21ldGhvZF9iYWRuZXNzID0gTlVMTDsKKyAgc3RydWN0IGJhZG5l c3NfdmVjdG9yICpzcmNfbWV0aG9kX2JhZG5lc3MgPSBOVUxMOwogCiAgIHN0 cnVjdCB2YWx1ZSAqdGVtcCA9IG9iajsKICAgLyogRm9yIG1ldGhvZHMsIHRo ZSBsaXN0IG9mIG92ZXJsb2FkZWQgbWV0aG9kcy4gICovCiAgIHN0cnVjdCBm bl9maWVsZCAqZm5zX3B0ciA9IE5VTEw7CiAgIC8qIEZvciBub24tbWV0aG9k cywgdGhlIGxpc3Qgb2Ygb3ZlcmxvYWRlZCBmdW5jdGlvbiBzeW1ib2xzLiAg Ki8KICAgc3RydWN0IHN5bWJvbCAqKm9sb2FkX3N5bXMgPSBOVUxMOworICAv KiBGb3IgeG1ldGhvZHMsIHRoZSBWRUMgb2YgeG1ldGhvZCB3b3JrZXJzLiAg Ki8KKyAgVkVDICh4bWV0aG9kX3dvcmtlcl9wdHIpICp4bV93b3JrZXJfdmVj ID0gTlVMTDsKICAgLyogTnVtYmVyIG9mIG92ZXJsb2FkZWQgaW5zdGFuY2Vz IGJlaW5nIGNvbnNpZGVyZWQuICAqLwogICBpbnQgbnVtX2ZucyA9IDA7CiAg IHN0cnVjdCB0eXBlICpiYXNldHlwZSA9IE5VTEw7CkBAIC0yNDM5LDYgKzI0 OTYsOCBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUgKiph cmdzLCBpbnQgbmFyZ3MsCiAgIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSA9IE5V TEw7CiAgIGVudW0gb2xvYWRfY2xhc3NpZmljYXRpb24gbWF0Y2hfcXVhbGl0 eTsKICAgZW51bSBvbG9hZF9jbGFzc2lmaWNhdGlvbiBtZXRob2RfbWF0Y2hf cXVhbGl0eSA9IElOQ09NUEFUSUJMRTsKKyAgZW51bSBvbG9hZF9jbGFzc2lm aWNhdGlvbiBzcmNfbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBJTkNPTVBBVElC TEU7CisgIGVudW0gb2xvYWRfY2xhc3NpZmljYXRpb24gZXh0X21ldGhvZF9t YXRjaF9xdWFsaXR5ID0gSU5DT01QQVRJQkxFOwogICBlbnVtIG9sb2FkX2Ns YXNzaWZpY2F0aW9uIGZ1bmNfbWF0Y2hfcXVhbGl0eSA9IElOQ09NUEFUSUJM RTsKIAogICAvKiBHZXQgdGhlIGxpc3Qgb2Ygb3ZlcmxvYWRlZCBtZXRob2Rz IG9yIGZ1bmN0aW9ucy4gICovCkBAIC0yNDY3LDEyICsyNTI2LDExIEBAIGZp bmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBu YXJncywKIAl9CiAKICAgICAgIC8qIFJldHJpZXZlIHRoZSBsaXN0IG9mIG1l dGhvZHMgd2l0aCB0aGUgbmFtZSBOQU1FLiAgKi8KLSAgICAgIGZuc19wdHIg PSB2YWx1ZV9maW5kX29sb2FkX21ldGhvZF9saXN0ICgmdGVtcCwgbmFtZSwg Ci0JCQkJCSAgICAgIDAsICZudW1fZm5zLCAKLQkJCQkJICAgICAgJmJhc2V0 eXBlLCAmYm9mZnNldCk7CisgICAgICB2YWx1ZV9maW5kX29sb2FkX21ldGhv ZF9saXN0ICgmdGVtcCwgbmFtZSwgMCwgJmZuc19wdHIsICZudW1fZm5zLAor CQkJCSAgICAmeG1fd29ya2VyX3ZlYywgJmJhc2V0eXBlLCAmYm9mZnNldCk7 CiAgICAgICAvKiBJZiB0aGlzIGlzIGEgbWV0aG9kIG9ubHkgc2VhcmNoLCBh bmQgbm8gbWV0aG9kcyB3ZXJlIGZvdW5kCiAgICAgICAgICB0aGUgc2VhcmNo IGhhcyBmYWlsZC4gICovCi0gICAgICBpZiAobWV0aG9kID09IE1FVEhPRCAm JiAoIWZuc19wdHIgfHwgIW51bV9mbnMpKQorICAgICAgaWYgKG1ldGhvZCA9 PSBNRVRIT0QgJiYgKCFmbnNfcHRyIHx8ICFudW1fZm5zKSAmJiAheG1fd29y a2VyX3ZlYykKIAllcnJvciAoXygiQ291bGRuJ3QgZmluZCBtZXRob2QgJXMl cyVzIiksCiAJICAgICAgIG9ial90eXBlX25hbWUsCiAJICAgICAgIChvYmpf dHlwZV9uYW1lICYmICpvYmpfdHlwZV9uYW1lKSA/ICI6OiIgOiAiIiwKQEAg LTI0ODMsMTggKzI1NDEsODMgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3Ry dWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAogICAgICAgaWYgKGZuc19w dHIpCiAJewogCSAgZ2RiX2Fzc2VydCAoVFlQRV9ET01BSU5fVFlQRSAoZm5z X3B0clswXS50eXBlKSAhPSBOVUxMKTsKLQkgIG1ldGhvZF9vbG9hZF9jaGFt cCA9IGZpbmRfb2xvYWRfY2hhbXAgKGFyZ3MsIG5hcmdzLAotCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2ZucywgZm5z X3B0ciwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5VTEwsICZtZXRob2RfYmFkbmVzcyk7CiAKLQkgIG1ldGhvZF9tYXRj aF9xdWFsaXR5ID0KLQkgICAgICBjbGFzc2lmeV9vbG9hZF9tYXRjaCAobWV0 aG9kX2JhZG5lc3MsIG5hcmdzLAotCSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvbG9hZF9tZXRob2Rfc3RhdGljX3AgKGZuc19wdHIsCi0JCQkJCQkJ ICAgbWV0aG9kX29sb2FkX2NoYW1wKSk7CisJICBzcmNfbWV0aG9kX29sb2Fk X2NoYW1wID0gZmluZF9vbG9hZF9jaGFtcCAoYXJncywgbmFyZ3MsCisJCQkJ CQkgICAgIG51bV9mbnMsIGZuc19wdHIsIE5VTEwsCisJCQkJCQkgICAgIE5V TEwsICZzcmNfbWV0aG9kX2JhZG5lc3MpOworCisJICBzcmNfbWV0aG9kX21h dGNoX3F1YWxpdHkgPSBjbGFzc2lmeV9vbG9hZF9tYXRjaAorCSAgICAoc3Jj X21ldGhvZF9iYWRuZXNzLCBuYXJncywKKwkgICAgIG9sb2FkX21ldGhvZF9z dGF0aWNfcCAoZm5zX3B0ciwgc3JjX21ldGhvZF9vbG9hZF9jaGFtcCkpOwog Ci0JICBtYWtlX2NsZWFudXAgKHhmcmVlLCBtZXRob2RfYmFkbmVzcyk7CisJ ICBtYWtlX2NsZWFudXAgKHhmcmVlLCBzcmNfbWV0aG9kX2JhZG5lc3MpOwor CX0KKworICAgICAgaWYgKFZFQ19sZW5ndGggKHhtZXRob2Rfd29ya2VyX3B0 ciwgeG1fd29ya2VyX3ZlYykgPiAwKQorCXsKKwkgIGV4dF9tZXRob2Rfb2xv YWRfY2hhbXAgPSBmaW5kX29sb2FkX2NoYW1wIChhcmdzLCBuYXJncywKKwkJ CQkJCSAgICAgMCwgTlVMTCwgeG1fd29ya2VyX3ZlYywKKwkJCQkJCSAgICAg TlVMTCwgJmV4dF9tZXRob2RfYmFkbmVzcyk7CisJICBleHRfbWV0aG9kX21h dGNoX3F1YWxpdHkgPSBjbGFzc2lmeV9vbG9hZF9tYXRjaCAoZXh0X21ldGhv ZF9iYWRuZXNzLAorCQkJCQkJCSAgIG5hcmdzLCAwKTsKKwkgIG1ha2VfY2xl YW51cCAoeGZyZWUsIGV4dF9tZXRob2RfYmFkbmVzcyk7CisJICBtYWtlX2Ns ZWFudXAgKGZyZWVfeG1ldGhvZF93b3JrZXJfdmVjLCB4bV93b3JrZXJfdmVj KTsKIAl9CiAKKyAgICAgIGlmIChzcmNfbWV0aG9kX29sb2FkX2NoYW1wID49 IDAgJiYgZXh0X21ldGhvZF9vbG9hZF9jaGFtcCA+PSAwKQorCXsKKwkgIHN3 aXRjaCAoY29tcGFyZV9iYWRuZXNzIChleHRfbWV0aG9kX2JhZG5lc3MsIHNy Y19tZXRob2RfYmFkbmVzcykpCisJICAgIHsKKwkgICAgICBjYXNlIDA6IC8q IFNyYyBtZXRob2QgYW5kIHhtZXRob2QgYXJlIGVxdWFsbHkgZ29vZC4gICov CisJCXNyY19hbmRfZXh0X2VxdWFsID0gMTsKKwkJLyogSWYgc3JjIG1ldGhv ZCBhbmQgeG1ldGhvZCBhcmUgZXF1YWxseSBnb29kLCB0aGVuCisJCSAgIHht ZXRob2Qgc2hvdWxkIGJlIHRoZSB3aW5uZXIuICBIZW5jZSwgZmFsbCB0aHJv dWdoIHRvIHRoZQorCQkgICBjYXNlIHdoZXJlIGEgeG1ldGhvZCBpcyBiZXR0 ZXIgdGhhbiB0aGUgc291cmNlCisJCSAgIG1ldGhvZCwgZXhjZXB0IHdoZW4g dGhlIHhtZXRob2QgbWF0Y2ggcXVhbGl0eSBpcworCQkgICBub24tc3RhbmRh cmQuICAqLworCQkvKiBGQUxMVEhST1VHSCAqLworCSAgICAgIGNhc2UgMTog LyogU3JjIG1ldGhvZCBhbmQgZXh0IG1ldGhvZCBhcmUgaW5jb21wYXRpYmxl LiAgKi8KKwkJLyogSWYgZXh0IG1ldGhvZCBtYXRjaCBpcyBub3Qgc3RhbmRh cmQsIHRoZW4gbGV0IHNvdXJjZSBtZXRob2QKKwkJICAgd2luLiAgT3RoZXJ3 aXNlLCBmYWxsdGhyb3VnaCB0byBsZXQgeG1ldGhvZCB3aW4uICAqLworCQlp ZiAoZXh0X21ldGhvZF9tYXRjaF9xdWFsaXR5ICE9IFNUQU5EQVJEKQorCQkg IHsKKwkJICAgIG1ldGhvZF9vbG9hZF9jaGFtcCA9IHNyY19tZXRob2Rfb2xv YWRfY2hhbXA7CisJCSAgICBtZXRob2RfYmFkbmVzcyA9IHNyY19tZXRob2Rf YmFkbmVzczsKKwkJICAgIGV4dF9tZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsK KwkJICAgIG1ldGhvZF9tYXRjaF9xdWFsaXR5ID0gc3JjX21ldGhvZF9tYXRj aF9xdWFsaXR5OworCQkgICAgYnJlYWs7CisJCSAgfQorCQkvKiBGQUxMVEhS T1VHSCAqLworCSAgICAgIGNhc2UgMjogLyogRXh0IG1ldGhvZCBpcyBjaGFt cGlvbi4gICovCisJCW1ldGhvZF9vbG9hZF9jaGFtcCA9IGV4dF9tZXRob2Rf b2xvYWRfY2hhbXA7CisJCW1ldGhvZF9iYWRuZXNzID0gZXh0X21ldGhvZF9i YWRuZXNzOworCQlzcmNfbWV0aG9kX29sb2FkX2NoYW1wID0gLTE7CisJCW1l dGhvZF9tYXRjaF9xdWFsaXR5ID0gZXh0X21ldGhvZF9tYXRjaF9xdWFsaXR5 OworCQlicmVhazsKKwkgICAgICBjYXNlIDM6IC8qIFNyYyBtZXRob2QgaXMg Y2hhbXBpb24uICAqLworCQltZXRob2Rfb2xvYWRfY2hhbXAgPSBzcmNfbWV0 aG9kX29sb2FkX2NoYW1wOworCQltZXRob2RfYmFkbmVzcyA9IHNyY19tZXRo b2RfYmFkbmVzczsKKwkJZXh0X21ldGhvZF9vbG9hZF9jaGFtcCA9IC0xOwor CQltZXRob2RfbWF0Y2hfcXVhbGl0eSA9IHNyY19tZXRob2RfbWF0Y2hfcXVh bGl0eTsKKwkJYnJlYWs7CisJICAgICAgZGVmYXVsdDoKKwkJZ2RiX2Fzc2Vy dF9ub3RfcmVhY2hlZCAoIlVuZXhwZWN0ZWQgb3ZlcmxvYWQgY29tcGFyaXNv biAiCisJCQkJCSJyZXN1bHQiKTsKKwkJYnJlYWs7CisJICAgIH0KKwl9Cisg ICAgICBlbHNlIGlmIChzcmNfbWV0aG9kX29sb2FkX2NoYW1wID49IDApCisJ eworCSAgbWV0aG9kX29sb2FkX2NoYW1wID0gc3JjX21ldGhvZF9vbG9hZF9j aGFtcDsKKwkgIG1ldGhvZF9iYWRuZXNzID0gc3JjX21ldGhvZF9iYWRuZXNz OworCSAgbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBzcmNfbWV0aG9kX21hdGNo X3F1YWxpdHk7CisJfQorICAgICAgZWxzZSBpZiAoZXh0X21ldGhvZF9vbG9h ZF9jaGFtcCA+PSAwKQorCXsKKwkgIG1ldGhvZF9vbG9hZF9jaGFtcCA9IGV4 dF9tZXRob2Rfb2xvYWRfY2hhbXA7CisJICBtZXRob2RfYmFkbmVzcyA9IGV4 dF9tZXRob2RfYmFkbmVzczsKKwkgIG1ldGhvZF9tYXRjaF9xdWFsaXR5ID0g ZXh0X21ldGhvZF9tYXRjaF9xdWFsaXR5OworCX0KICAgICB9CiAKICAgaWYg KG1ldGhvZCA9PSBOT05fTUVUSE9EIHx8IG1ldGhvZCA9PSBCT1RIKQpAQCAt MjY0MiwxMiArMjc2NSwyMSBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1 Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsCiAKICAgaWYgKG1ldGhvZF9v bG9hZF9jaGFtcCA+PSAwKQogICAgIHsKLSAgICAgIGlmIChUWVBFX0ZOX0ZJ RUxEX1ZJUlRVQUxfUCAoZm5zX3B0ciwgbWV0aG9kX29sb2FkX2NoYW1wKSkK LQkqdmFscCA9IHZhbHVlX3ZpcnR1YWxfZm5fZmllbGQgKCZ0ZW1wLCBmbnNf cHRyLCBtZXRob2Rfb2xvYWRfY2hhbXAsCi0JCQkJCWJhc2V0eXBlLCBib2Zm c2V0KTsKKyAgICAgIGlmIChzcmNfbWV0aG9kX29sb2FkX2NoYW1wID49IDAp CisJeworCSAgaWYgKFRZUEVfRk5fRklFTERfVklSVFVBTF9QIChmbnNfcHRy LCBtZXRob2Rfb2xvYWRfY2hhbXApKQorCSAgICAqdmFscCA9IHZhbHVlX3Zp cnR1YWxfZm5fZmllbGQgKCZ0ZW1wLCBmbnNfcHRyLCBtZXRob2Rfb2xvYWRf Y2hhbXAsCisJCQkJCSAgICBiYXNldHlwZSwgYm9mZnNldCk7CisJICBlbHNl CisJICAgICp2YWxwID0gdmFsdWVfZm5fZmllbGQgKCZ0ZW1wLCBmbnNfcHRy LCBtZXRob2Rfb2xvYWRfY2hhbXAsCisJCQkJICAgIGJhc2V0eXBlLCBib2Zm c2V0KTsKKwl9CiAgICAgICBlbHNlCi0JKnZhbHAgPSB2YWx1ZV9mbl9maWVs ZCAoJnRlbXAsIGZuc19wdHIsIG1ldGhvZF9vbG9hZF9jaGFtcCwKLQkJCQli YXNldHlwZSwgYm9mZnNldCk7CisJeworCSAgKnZhbHAgPSB2YWx1ZV9vZl94 bWV0aG9kIChjbG9uZV94bWV0aG9kX3dvcmtlcgorCSAgICAoVkVDX2luZGV4 ICh4bWV0aG9kX3dvcmtlcl9wdHIsIHhtX3dvcmtlcl92ZWMsCisJCQlleHRf bWV0aG9kX29sb2FkX2NoYW1wKSkpOworCX0KICAgICB9CiAgIGVsc2UKICAg ICAqc3ltcCA9IG9sb2FkX3N5bXNbZnVuY19vbG9hZF9jaGFtcF07CkBAIC0y Nzk5LDcgKzI5MzEsNyBAQCBmaW5kX29sb2FkX2NoYW1wX25hbWVzcGFjZV9s b29wIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsCiAgICAgKytu dW1fZm5zOwogCiAgIG5ld19vbG9hZF9jaGFtcCA9IGZpbmRfb2xvYWRfY2hh bXAgKGFyZ3MsIG5hcmdzLCBudW1fZm5zLAotCQkJCSAgICAgIE5VTEwsIG5l d19vbG9hZF9zeW1zLAorCQkJCSAgICAgIE5VTEwsIE5VTEwsIG5ld19vbG9h ZF9zeW1zLAogCQkJCSAgICAgICZuZXdfb2xvYWRfY2hhbXBfYnYpOwogCiAg IC8qIENhc2UgMTogV2UgZm91bmQgYSBnb29kIG1hdGNoLiAgRnJlZSBlYXJs aWVyIG1hdGNoZXMgKGlmIGFueSksCkBAIC0yODM3LDkgKzI5NjksMTMgQEAg ZmluZF9vbG9hZF9jaGFtcF9uYW1lc3BhY2VfbG9vcCAoc3RydWN0IHZhbHVl ICoqYXJncywgaW50IG5hcmdzLAogCiAvKiBMb29rIGZvciBhIGZ1bmN0aW9u IHRvIHRha2UgTkFSR1MgYXJncyBvZiBBUkdTLiAgRmluZAogICAgdGhlIGJl c3QgbWF0Y2ggZnJvbSBhbW9uZyB0aGUgb3ZlcmxvYWRlZCBtZXRob2RzIG9y IGZ1bmN0aW9ucwotICAgZ2l2ZW4gYnkgRk5TX1BUUiBvciBPTE9BRF9TWU1T LCByZXNwZWN0aXZlbHkuICBPbmUsIGFuZCBvbmx5IG9uZSBvZgotICAgRk5T X1BUUiBhbmQgT0xPQURfU1lNUyBjYW4gYmUgbm9uLU5VTEwuICBUaGUgbnVt YmVyIG9mCi0gICBtZXRob2RzL2Z1bmN0aW9ucyBpbiB0aGUgbm9uLU5VTEwg bGlzdCBpcyBnaXZlbiBieSBOVU1fRk5TLgorICAgZ2l2ZW4gYnkgRk5TX1BU UiBvciBPTE9BRF9TWU1TIG9yIFhNX1dPUktFUl9WRUMsIHJlc3BlY3RpdmVs eS4KKyAgIE9uZSwgYW5kIG9ubHkgb25lIG9mIEZOU19QVFIsIE9MT0FEX1NZ TVMgYW5kIFhNX1dPUktFUl9WRUMgY2FuIGJlCisgICBub24tTlVMTC4KKwor ICAgSWYgWE1fV09SS0VSX1ZFQyBpcyBOVUxMLCB0aGVuIHRoZSBsZW5ndGgg b2YgdGhlIGFycmF5cyBGTlNfUFRSCisgICBvciBPTE9BRF9TWU1TICh3aGlj aGV2ZXIgaXMgbm9uLU5VTEwpIGlzIHNwZWNpZmllZCBpbiBOVU1fRk5TLgor CiAgICBSZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBiZXN0IG1hdGNoOyBzdG9y ZSBhbiBpbmRpY2F0aW9uIG9mIHRoZQogICAgcXVhbGl0eSBvZiB0aGUgbWF0 Y2ggaW4gT0xPQURfQ0hBTVBfQlYuCiAKQEAgLTI4NDgsMTAgKzI5ODQsMTMg QEAgZmluZF9vbG9hZF9jaGFtcF9uYW1lc3BhY2VfbG9vcCAoc3RydWN0IHZh bHVlICoqYXJncywgaW50IG5hcmdzLAogc3RhdGljIGludAogZmluZF9vbG9h ZF9jaGFtcCAoc3RydWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAogCQkg IGludCBudW1fZm5zLCBzdHJ1Y3QgZm5fZmllbGQgKmZuc19wdHIsCisJCSAg VkVDICh4bWV0aG9kX3dvcmtlcl9wdHIpICp4bV93b3JrZXJfdmVjLAogCQkg IHN0cnVjdCBzeW1ib2wgKipvbG9hZF9zeW1zLAogCQkgIHN0cnVjdCBiYWRu ZXNzX3ZlY3RvciAqKm9sb2FkX2NoYW1wX2J2KQogewogICBpbnQgaXg7Cisg IGludCBmbl9jb3VudDsKKyAgaW50IHhtX3dvcmtlcl92ZWNfbiA9IFZFQ19s ZW5ndGggKHhtZXRob2Rfd29ya2VyX3B0ciwgeG1fd29ya2VyX3ZlYyk7CiAg IC8qIEEgbWVhc3VyZSBvZiBob3cgZ29vZCBhbiBvdmVybG9hZGVkIGluc3Rh bmNlIGlzLiAgKi8KICAgc3RydWN0IGJhZG5lc3NfdmVjdG9yICpidjsKICAg LyogSW5kZXggb2YgYmVzdCBvdmVybG9hZGVkIGZ1bmN0aW9uLiAgKi8KQEAg LTI4NjEsNDAgKzMwMDAsNDkgQEAgZmluZF9vbG9hZF9jaGFtcCAoc3RydWN0 IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAogICAvKiAwID0+IG5vIGFtYmln dWl0eSwgMSA9PiB0d28gZ29vZCBmdW5jcywgMiA9PiBpbmNvbXBhcmFibGUg ZnVuY3MuICAqLwogCiAgIC8qIEEgY2hhbXBpb24gY2FuIGJlIGZvdW5kIGFt b25nIG1ldGhvZHMgYWxvbmUsIG9yIGFtb25nIGZ1bmN0aW9ucwotICAgICBh bG9uZSwgYnV0IG5vdCBib3RoLiAgKi8KLSAgZ2RiX2Fzc2VydCAoKGZuc19w dHIgIT0gTlVMTCkgKyAob2xvYWRfc3ltcyAhPSBOVUxMKSA9PSAxKTsKKyAg ICAgYWxvbmUsIG9yIGluIHhtZXRob2RzIGFsb25lLCBidXQgbm90IGluIG1v cmUgdGhhbiBvbmUgb2YgdGhlc2UKKyAgICAgZ3JvdXBzLiAgKi8KKyAgZ2Ri X2Fzc2VydCAoKGZuc19wdHIgIT0gTlVMTCkgKyAob2xvYWRfc3ltcyAhPSBO VUxMKSArICh4bV93b3JrZXJfdmVjICE9IE5VTEwpCisJICAgICAgPT0gMSk7 CiAKICAgKm9sb2FkX2NoYW1wX2J2ID0gTlVMTDsKIAorICBmbl9jb3VudCA9 ICh4bV93b3JrZXJfdmVjICE9IE5VTEwKKwkgICAgICA/IFZFQ19sZW5ndGgg KHhtZXRob2Rfd29ya2VyX3B0ciwgeG1fd29ya2VyX3ZlYykKKwkgICAgICA6 IG51bV9mbnMpOwogICAvKiBDb25zaWRlciBlYWNoIGNhbmRpZGF0ZSBpbiB0 dXJuLiAgKi8KLSAgZm9yIChpeCA9IDA7IGl4IDwgbnVtX2ZuczsgaXgrKykK KyAgZm9yIChpeCA9IDA7IGl4IDwgZm5fY291bnQ7IGl4KyspCiAgICAgewog ICAgICAgaW50IGpqOwotICAgICAgaW50IHN0YXRpY19vZmZzZXQ7CisgICAg ICBpbnQgc3RhdGljX29mZnNldCA9IDA7CiAgICAgICBpbnQgbnBhcm1zOwog ICAgICAgc3RydWN0IHR5cGUgKipwYXJtX3R5cGVzOworICAgICAgc3RydWN0 IHhtZXRob2Rfd29ya2VyICp3b3JrZXIgPSBOVUxMOwogCi0gICAgICBpZiAo Zm5zX3B0ciAhPSBOVUxMKQorICAgICAgaWYgKHhtX3dvcmtlcl92ZWMgIT0g TlVMTCkKIAl7Ci0JICBucGFybXMgPSBUWVBFX05GSUVMRFMgKFRZUEVfRk5f RklFTERfVFlQRSAoZm5zX3B0ciwgaXgpKTsKLQkgIHN0YXRpY19vZmZzZXQg PSBvbG9hZF9tZXRob2Rfc3RhdGljX3AgKGZuc19wdHIsIGl4KTsKKwkgIHdv cmtlciA9IFZFQ19pbmRleCAoeG1ldGhvZF93b3JrZXJfcHRyLCB4bV93b3Jr ZXJfdmVjLCBpeCk7CisJICBwYXJtX3R5cGVzID0gZ2V0X3htZXRob2RfYXJn X3R5cGVzICh3b3JrZXIsICZucGFybXMpOwogCX0KICAgICAgIGVsc2UKIAl7 Ci0JICAvKiBJZiBpdCdzIG5vdCBhIG1ldGhvZCwgdGhpcyBpcyB0aGUgcHJv cGVyIHBsYWNlLiAgKi8KLQkgIG5wYXJtcyA9IFRZUEVfTkZJRUxEUyAoU1lN Qk9MX1RZUEUgKG9sb2FkX3N5bXNbaXhdKSk7Ci0JICBzdGF0aWNfb2Zmc2V0 ID0gMDsKKwkgIGlmIChmbnNfcHRyICE9IE5VTEwpCisJICAgIHsKKwkgICAg ICBucGFybXMgPSBUWVBFX05GSUVMRFMgKFRZUEVfRk5fRklFTERfVFlQRSAo Zm5zX3B0ciwgaXgpKTsKKwkgICAgICBzdGF0aWNfb2Zmc2V0ID0gb2xvYWRf bWV0aG9kX3N0YXRpY19wIChmbnNfcHRyLCBpeCk7CisJICAgIH0KKwkgIGVs c2UKKwkgICAgbnBhcm1zID0gVFlQRV9ORklFTERTIChTWU1CT0xfVFlQRSAo b2xvYWRfc3ltc1tpeF0pKTsKKworCSAgcGFybV90eXBlcyA9IChzdHJ1Y3Qg dHlwZSAqKikKKwkgICAgeG1hbGxvYyAobnBhcm1zICogKHNpemVvZiAoc3Ry dWN0IHR5cGUgKikpKTsKKwkgIGZvciAoamogPSAwOyBqaiA8IG5wYXJtczsg amorKykKKwkgICAgcGFybV90eXBlc1tqal0gPSAoZm5zX3B0ciAhPSBOVUxM CisJCQkgICAgICA/IChUWVBFX0ZOX0ZJRUxEX0FSR1MgKGZuc19wdHIsIGl4 KVtqal0udHlwZSkKKwkJCSAgICAgIDogVFlQRV9GSUVMRF9UWVBFIChTWU1C T0xfVFlQRSAob2xvYWRfc3ltc1tpeF0pLAorCQkJICAgICAgamopKTsKIAl9 CiAKLSAgICAgIC8qIFByZXBhcmUgYXJyYXkgb2YgcGFyYW1ldGVyIHR5cGVz LiAgKi8KLSAgICAgIHBhcm1fdHlwZXMgPSAoc3RydWN0IHR5cGUgKiopIAot CXhtYWxsb2MgKG5wYXJtcyAqIChzaXplb2YgKHN0cnVjdCB0eXBlICopKSk7 Ci0gICAgICBmb3IgKGpqID0gMDsgamogPCBucGFybXM7IGpqKyspCi0JcGFy bV90eXBlc1tqal0gPSAoZm5zX3B0ciAhPSBOVUxMCi0JCQkgID8gKFRZUEVf Rk5fRklFTERfQVJHUyAoZm5zX3B0ciwgaXgpW2pqXS50eXBlKQotCQkJICA6 IFRZUEVfRklFTERfVFlQRSAoU1lNQk9MX1RZUEUgKG9sb2FkX3N5bXNbaXhd KSwgCi0JCQkJCSAgICAgamopKTsKLQogICAgICAgLyogQ29tcGFyZSBwYXJh bWV0ZXIgdHlwZXMgdG8gc3VwcGxpZWQgYXJndW1lbnQgdHlwZXMuICBTa2lw CiAgICAgICAgICBUSElTIGZvciBzdGF0aWMgbWV0aG9kcy4gICovCiAgICAg ICBidiA9IHJhbmtfZnVuY3Rpb24gKHBhcm1fdHlwZXMsIG5wYXJtcywgCkBA IC0yOTI4LDEwICszMDc2LDE0IEBAIGZpbmRfb2xvYWRfY2hhbXAgKHN0cnVj dCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywKICAgICAgIHhmcmVlIChwYXJt X3R5cGVzKTsKICAgICAgIGlmIChvdmVybG9hZF9kZWJ1ZykKIAl7Ci0JICBp ZiAoZm5zX3B0cikKKwkgIGlmIChmbnNfcHRyICE9IE5VTEwpCiAJICAgIGZw cmludGZfZmlsdGVyZWQgKGdkYl9zdGRlcnIsCiAJCQkgICAgICAiT3Zlcmxv YWRlZCBtZXRob2QgaW5zdGFuY2UgJXMsICMgb2YgcGFybXMgJWRcbiIsCiAJ CQkgICAgICBmbnNfcHRyW2l4XS5waHlzbmFtZSwgbnBhcm1zKTsKKwkgIGVs c2UgaWYgKHhtX3dvcmtlcl92ZWMgIT0gTlVMTCkKKwkgICAgZnByaW50Zl9m aWx0ZXJlZCAoZ2RiX3N0ZGVyciwKKwkJCSAgICAgICJYbWV0aG9kIHdvcmtl ciwgIyBvZiBwYXJtcyAlZFxuIiwKKwkJCSAgICAgIG5wYXJtcyk7CiAJICBl bHNlCiAJICAgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRlcnIsCiAJCQkg ICAgICAiT3ZlcmxvYWRlZCBmdW5jdGlvbiBpbnN0YW5jZSAiCg== --f46d044287a09db0b604faa605a1--