From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21143 invoked by alias); 8 Oct 2016 16:27:33 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 21118 invoked by uid 89); 8 Oct 2016 16:27:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.3 required=5.0 tests=AWL,BAYES_20,RCVD_IN_DNSWL_LOW,RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.2 spammy=diag_kind, Further, 56927, sk:same_ty X-HELO: mail-oi0-f46.google.com Received: from mail-oi0-f46.google.com (HELO mail-oi0-f46.google.com) (209.85.218.46) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 08 Oct 2016 16:27:21 +0000 Received: by mail-oi0-f46.google.com with SMTP id m72so87494913oik.3 for ; Sat, 08 Oct 2016 09:27:21 -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:in-reply-to:references:from:date :message-id:subject:to:cc; bh=I1Hb+Ik+tSgVu9lZS8bIEYZSJyelqZIx762sUi4XtHM=; b=d1T5+7EK1Nuhv2fNjK0aRNsb/EsBB2bRICuhFEEs+U9RNYT5m9f4sTpOBAQufQ2f2s 5jaR8/obKM8feGOpDMMeOZztF8mYDvIULMJSvrQpicdG7mwd+cMixJoOda7pNzpdt6RP JF6ev+shaNaelbqhXwDzMy7A+HJl0YKza3gSObfb6O2zux56MxuEPlG27b3FVztN7Igv 1uoGMCIqEldm9gkM4XFt306/x9W2zxJXRBnlWVOscrwVGricWLm+qmnQfe2MNJNcp/13 U7baUpaWl1fBKTLPpLo9u3kvCK3Ce2L2uUJgUWC5pWY6mggUFJ883foYGjhupk5DRuMe YpUA== X-Gm-Message-State: AA6/9Rl4P7pktz+eEaJbqNyS4TBK3cKks5p3X3sFDAc3tuEBxo2sp5h/DhF/HIF9UzA5pxd/lZbPoNXAwhwvb6I3 X-Received: by 10.157.41.235 with SMTP id g40mr15146754otd.158.1475944040100; Sat, 08 Oct 2016 09:27:20 -0700 (PDT) MIME-Version: 1.0 Received: by 10.182.87.231 with HTTP; Sat, 8 Oct 2016 09:26:59 -0700 (PDT) In-Reply-To: References: <68323906-2179-82c7-98f9-0fd2ddb40ab5@redhat.com> From: Jason Merrill Date: Sat, 08 Oct 2016 16:27:00 -0000 Message-ID: Subject: Re: C++ PATCH for P0135, C++17 guaranteed copy elision To: Jason Merrill Cc: gcc-patches List , Ville Voutilainen Content-Type: multipart/mixed; boundary=001a1141b4e0382728053e5d00d1 X-IsSubscribed: yes X-SW-Source: 2016-10/txt/msg00529.txt.bz2 --001a1141b4e0382728053e5d00d1 Content-Type: text/plain; charset=UTF-8 Content-length: 763 On Thu, Oct 6, 2016 at 5:26 PM, Jason Merrill wrote: > Here's an update that handles more cases. And a further update that handles direct-initialization, which the actual proposal doesn't specify at all. I'm dealing with direct-initialization from a type with a conversion operator that produces a prvalue of the type being initialized by treating direct-initialization from an unrelated type like copy-initialization with access to explicit conversions. And relatedly, for conversion from a braced-init-list with a single element: we look for constructors as normal, but also consider conversion functions from the element type. I should probably write up some wording for this for Issaquah. Tested x86_64-pc-linux-gnu, applied to trunk. --001a1141b4e0382728053e5d00d1 Content-Type: text/plain; charset=US-ASCII; name="elision3.diff" Content-Disposition: attachment; filename="elision3.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iu1ev95g1 Content-length: 18866 Y29tbWl0IGIwNGY0NmI3M2RhN2NhNDNiMDRhNTUyMTE0NGM2MGFhMGNlYWY4 YmYKQXV0aG9yOiBKYXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpE YXRlOiAgIFRodSBPY3QgNiAxNzoyODo0MCAyMDE2IC0wNDAwCgogICAgICAg ICAgICBGdXJ0aGVyIFAwMTM1IHJlZmluZW1lbnQuCiAgICAKICAgICAgICAg ICAgKiBjYWxsLmMgKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBD b25zaWRlciBjb252ZXJzaW9ucyBmcm9tCiAgICAgICAgICAgIGEgc2luZ2xl IGVsZW1lbnQgaW4gYW4gaW5pdGlhbGl6ZXItbGlzdC4KICAgICAgICAgICAg KGJ1aWxkX3RlbXApOiBVbmRvIGVhcmx5X2VsaWRlX2NvcHkgY2hhbmdlLgog ICAgICAgICAgICAoYnVpbGRfb3Zlcl9jYWxsKTogQ2hlY2sgdGhhdCB3ZSBk b24ndCB0cnkgdG8gY29weSBhIFRBUkdFVF9FWFBSCiAgICAgICAgICAgIGlu IEMrKzE3IG1vZGUuICBTZXQgdXNlcl9jb252X3AgaGVyZS4KICAgICAgICAg ICAgKGNvbnZlcnRfbGlrZV9yZWFsKTogTm90IGhlcmUuCiAgICAgICAgICAg IChjaGVja19zZWxmX2RlbGVnYXRpb24pOiBTcGxpdCBvdXQgZnJvbS4uLgog ICAgICAgICAgICAoYnVpbGRfc3BlY2lhbF9tZW1iZXJfY2FsbCk6IC4uLmhl cmUuICBIYW5kbGUgQysrMTcgY29weSBlbGlzaW9uLgogICAgICAgICAgICAq IGN2dC5jIChlYXJseV9lbGlkZV9jb3B5KTogUmVtb3ZlLgogICAgICAgICAg ICAob2NwX2NvbnZlcnQpOiBVbmRvIGVhcmx5X2VsaWRlX2NvcHkgY2hhbmdl LgogICAgICAgICAgICAqIGV4Y2VwdC5jIChidWlsZF90aHJvdyk6IExpa2V3 aXNlLgogICAgICAgICAgICAqIGluaXQuYyAoZXhwYW5kX2RlZmF1bHRfaW5p dCk6IExpa2V3aXNlLgogICAgICAgICAgICAqIHR5cGVjay5jIChjcF9idWls ZF9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoKZGlmZiAtLWdpdCBhL2djYy9j cC9jYWxsLmMgYi9nY2MvY3AvY2FsbC5jCmluZGV4IDZmZWFmN2UuLjRiZWU0 ODcgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jYWxsLmMKKysrIGIvZ2NjL2NwL2Nh bGwuYwpAQCAtMzY3MSw2ICszNjcxLDE0IEBAIGJ1aWxkX3VzZXJfdHlwZV9j b252ZXJzaW9uXzEgKHRyZWUgdG90eXBlLCB0cmVlIGV4cHIsIGludCBmbGFn cywKICAgICAgICBjcmVhdGluZyBhIGdhcmJhZ2UgQkFTRUxJTks7IGNvbnN0 cnVjdG9ycyBjYW4ndCBiZSBpbmhlcml0ZWQuICAqLwogICAgIGN0b3JzID0g bG9va3VwX2ZuZmllbGRzX3Nsb3QgKHRvdHlwZSwgY29tcGxldGVfY3Rvcl9p ZGVudGlmaWVyKTsKIAorICAvKiBGSVhNRSBQMDEzNSBkb2Vzbid0IHNheSB3 aGF0IHRvIGRvIGluIEMrKzE3IGFib3V0IGxpc3QtaW5pdGlhbGl6YXRpb24g ZnJvbQorICAgICBhIHNpbmdsZSBlbGVtZW50LiAgRm9yIG5vdywgbGV0J3Mg aGFuZGxlIGNvbnN0cnVjdG9ycyBhcyBiZWZvcmUgYW5kIGFsc28KKyAgICAg Y29uc2lkZXIgY29udmVyc2lvbiBvcGVyYXRvcnMgZnJvbSB0aGUgZWxlbWVu dC4gICovCisgIGlmIChjeHhfZGlhbGVjdCA+PSBjeHgxegorICAgICAgJiYg QlJBQ0VfRU5DTE9TRURfSU5JVElBTElaRVJfUCAoZXhwcikKKyAgICAgICYm IENPTlNUUlVDVE9SX05FTFRTIChleHByKSA9PSAxKQorICAgIGZyb210eXBl ID0gVFJFRV9UWVBFIChDT05TVFJVQ1RPUl9FTFQgKGV4cHIsIDApLT52YWx1 ZSk7CisKICAgaWYgKE1BWUJFX0NMQVNTX1RZUEVfUCAoZnJvbXR5cGUpKQog ICAgIHsKICAgICAgIHRyZWUgdG9fbm9ucmVmID0gbm9uX3JlZmVyZW5jZSAo dG90eXBlKTsKQEAgLTM3NDUsNyArMzc1MywxMyBAQCBidWlsZF91c2VyX3R5 cGVfY29udmVyc2lvbl8xICh0cmVlIHRvdHlwZSwgdHJlZSBleHByLCBpbnQg ZmxhZ3MsCiAgICAgfQogCiAgIGlmIChjb252X2ZucykKLSAgICBmaXJzdF9h cmcgPSBleHByOworICAgIHsKKyAgICAgIGlmIChCUkFDRV9FTkNMT1NFRF9J TklUSUFMSVpFUl9QIChleHByKSkKKwkvKiBGSVhNRSBzZWUgYWJvdmUgYWJv dXQgQysrMTcuICAqLworCWZpcnN0X2FyZyA9IENPTlNUUlVDVE9SX0VMVCAo ZXhwciwgMCktPnZhbHVlOworICAgICAgZWxzZQorCWZpcnN0X2FyZyA9IGV4 cHI7CisgICAgfQogCiAgIGZvciAoOyBjb252X2ZuczsgY29udl9mbnMgPSBU UkVFX0NIQUlOIChjb252X2ZucykpCiAgICAgewpAQCAtNjM2NywxMSArNjM4 MSw2IEBAIGJ1aWxkX3RlbXAgKHRyZWUgZXhwciwgdHJlZSB0eXBlLCBpbnQg ZmxhZ3MsCiAKICAgKmRpYWdub3N0aWNfa2luZCA9IERLX1VOU1BFQ0lGSUVE OwogCi0gIGlmIChUUkVFX0NPREUgKGV4cHIpID09IENPTlNUUlVDVE9SKQot ICAgIGV4cHIgPSBnZXRfdGFyZ2V0X2V4cHJfc2ZpbmFlIChleHByLCBjb21w bGFpbik7Ci0gIGlmIChlYXJseV9lbGlkZV9jb3B5ICh0eXBlLCBleHByKSkK LSAgICByZXR1cm4gZXhwcjsKLQogICAvKiBJZiB0aGUgc291cmNlIGlzIGEg cGFja2VkIGZpZWxkLCBjYWxsaW5nIHRoZSBjb3B5IGNvbnN0cnVjdG9yIHdp bGwgcmVxdWlyZQogICAgICBiaW5kaW5nIHRoZSBmaWVsZCB0byB0aGUgcmVm ZXJlbmNlIHBhcmFtZXRlciB0byB0aGUgY29weSBjb25zdHJ1Y3RvciwgYW5k CiAgICAgIHdlJ2xsIGVuZCB1cCB3aXRoIGFuIGluZmluaXRlIGxvb3AuICBJ ZiB3ZSBjYW4gdXNlIGEgYml0d2lzZSBjb3B5LCB0aGVuCkBAIC02NTYzLDcg KzY1NzIsNiBAQCBjb252ZXJ0X2xpa2VfcmVhbCAoY29udmVyc2lvbiAqY29u dnMsIHRyZWUgZXhwciwgdHJlZSBmbiwgaW50IGFyZ251bSwKICAgICAgIHsK IAlzdHJ1Y3Qgel9jYW5kaWRhdGUgKmNhbmQgPSBjb252cy0+Y2FuZDsKIAl0 cmVlIGNvbnZmbiA9IGNhbmQtPmZuOwotCXVuc2lnbmVkIGk7CiAKIAkvKiBX aGVuIGNvbnZlcnRpbmcgZnJvbSBhbiBpbml0IGxpc3Qgd2UgY29uc2lkZXIg ZXhwbGljaXQKIAkgICBjb25zdHJ1Y3RvcnMsIGJ1dCBhY3R1YWxseSB0cnlp bmcgdG8gY2FsbCBvbmUgaXMgYW4gZXJyb3IuICAqLwpAQCAtNjYwOSwxMiAr NjYxNywxMCBAQCBjb252ZXJ0X2xpa2VfcmVhbCAoY29udmVyc2lvbiAqY29u dnMsIHRyZWUgZXhwciwgdHJlZSBmbiwgaW50IGFyZ251bSwKIAogCWV4cHIg PSBtYXJrX3J2YWx1ZV91c2UgKGV4cHIpOwogCi0JLyogU2V0IHVzZXJfY29u dl9wIG9uIHRoZSBhcmd1bWVudCBjb252ZXJzaW9ucywgc28gcnZhbHVlL2Jh c2UKLQkgICBoYW5kbGluZyBrbm93cyBub3QgdG8gYWxsb3cgYW55IG1vcmUg VURDcy4gICovCi0JZm9yIChpID0gMDsgaSA8IGNhbmQtPm51bV9jb252czsg KytpKQotCSAgY2FuZC0+Y29udnNbaV0tPnVzZXJfY29udl9wID0gdHJ1ZTsK LQotCWV4cHIgPSBidWlsZF9vdmVyX2NhbGwgKGNhbmQsIExPT0tVUF9OT1JN QUwsIGNvbXBsYWluKTsKKwkvKiBQYXNzIExPT0tVUF9OT19DT05WRVJTSU9O IHNvIHJ2YWx1ZS9iYXNlIGhhbmRsaW5nIGtub3dzIG5vdCB0byBhbGxvdwor CSAgIGFueSBtb3JlIFVEQ3MuICAqLworCWV4cHIgPSBidWlsZF9vdmVyX2Nh bGwgKGNhbmQsIExPT0tVUF9OT1JNQUx8TE9PS1VQX05PX0NPTlZFUlNJT04s CisJCQkJY29tcGxhaW4pOwogCiAJLyogSWYgdGhpcyBpcyBhIGNvbnN0cnVj dG9yIG9yIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFuIGFnZ3IgdHlwZSwKIAkg ICB3ZSBuZWVkIHRvIGJ1aWxkIHVwIGEgVEFSR0VUX0VYUFIuICAqLwpAQCAt Njc5Miw2ICs2Nzk4LDEwIEBAIGNvbnZlcnRfbGlrZV9yZWFsIChjb252ZXJz aW9uICpjb252cywgdHJlZSBleHByLCB0cmVlIGZuLCBpbnQgYXJnbnVtLAog CWZsYWdzIHw9IExPT0tVUF9PTkxZQ09OVkVSVElORzsKICAgICAgIGlmIChj b252cy0+cnZhbHVlZG5lc3NfbWF0Y2hlc19wKQogCWZsYWdzIHw9IExPT0tV UF9QUkVGRVJfUlZBTFVFOworICAgICAgaWYgKFRSRUVfQ09ERSAoZXhwcikg PT0gVEFSR0VUX0VYUFIKKwkgICYmIFRBUkdFVF9FWFBSX0xJU1RfSU5JVF9Q IChleHByKSkKKwkvKiBDb3B5LWxpc3QtaW5pdGlhbGl6YXRpb24gZG9lc24n dCBhY3R1YWxseSBpbnZvbHZlIGEgY29weS4gICovCisJcmV0dXJuIGV4cHI7 CiAgICAgICBleHByID0gYnVpbGRfdGVtcCAoZXhwciwgdG90eXBlLCBmbGFn cywgJmRpYWdfa2luZCwgY29tcGxhaW4pOwogICAgICAgaWYgKGRpYWdfa2lu ZCAmJiBjb21wbGFpbikKIAl7CkBAIC03NzEwLDYgKzc3MjAsMTMgQEAgYnVp bGRfb3Zlcl9jYWxsIChzdHJ1Y3Qgel9jYW5kaWRhdGUgKmNhbmQsIGludCBm bGFncywgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAJCSAgICAgICAiICAo eW91IGNhbiBkaXNhYmxlIHRoaXMgd2l0aCAtZm5vLWRlZHVjZS1pbml0LWxp c3QpIik7CiAJICAgIH0KIAl9CisKKyAgICAgIC8qIFNldCB1c2VyX2NvbnZf cCBvbiB0aGUgYXJndW1lbnQgY29udmVyc2lvbnMsIHNvIHJ2YWx1ZS9iYXNl IGhhbmRsaW5nCisJIGtub3dzIG5vdCB0byBhbGxvdyBhbnkgbW9yZSBVRENz LiAgVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgd2UKKwkgcHJvY2VzcyBj YW5kLT53YXJuaW5ncy4gICovCisgICAgICBpZiAoZmxhZ3MgJiBMT09LVVBf Tk9fQ09OVkVSU0lPTikKKwljb252LT51c2VyX2NvbnZfcCA9IHRydWU7CisK ICAgICAgIHZhbCA9IGNvbnZlcnRfbGlrZV93aXRoX2NvbnRleHQgKGNvbnYs IGFyZywgZm4sIGkgLSBpc19tZXRob2QsCiAJCQkJICAgICAgIGNvbnZlcnNp b25fd2FybmluZwogCQkJCSAgICAgICA/IGNvbXBsYWluCkBAIC03ODI1LDgg Kzc4NDIsNyBAQCBidWlsZF9vdmVyX2NhbGwgKHN0cnVjdCB6X2NhbmRpZGF0 ZSAqY2FuZCwgaW50IGZsYWdzLCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbikK IAkgc3Vib2JqZWN0LiAgKi8KICAgICAgIGlmIChDSEVDS0lOR19QICYmIGN4 eF9kaWFsZWN0ID49IGN4eDF6KQogCWdjY19hc3NlcnQgKFRSRUVfQ09ERSAo YXJnKSAhPSBUQVJHRVRfRVhQUgotCQkgICAgLy8gRklYTUUgd2Ugc2hvdWxk bid0IGNvcHkgZm9yIGRpcmVjdC1pbml0IGVpdGhlcgotCQkgICAgfHwgIShm bGFncyAmIExPT0tVUF9PTkxZQ09OVkVSVElORykKKwkJICAgIHx8IHNlZW5f ZXJyb3IgKCkKIAkJICAgIC8qIFNlZSB1bnNhZmVfY29weV9lbGlzaW9uX3Au ICAqLwogCQkgICAgfHwgREVDTF9CQVNFX0NPTlNUUlVDVE9SX1AgKGZuKSk7 CiAKQEAgLTgwODksNiArODEwNSwxOSBAQCBpbl9jaGFyZ2VfYXJnX2Zvcl9u YW1lICh0cmVlIG5hbWUpCiAgIHJldHVybiBOVUxMX1RSRUU7CiB9CiAKKy8q IFdlJ3ZlIGJ1aWx0IHVwIGEgY29uc3RydWN0b3IgY2FsbCBSRVQuICBDb21w bGFpbiBpZiBpdCBkZWxlZ2F0ZXMgdG8gdGhlCisgICBjb25zdHJ1Y3RvciB3 ZSdyZSBjdXJyZW50bHkgY29tcGlsaW5nLiAgKi8KKworc3RhdGljIHZvaWQK K2NoZWNrX3NlbGZfZGVsZWdhdGlvbiAodHJlZSByZXQpCit7CisgIGlmIChU UkVFX0NPREUgKHJldCkgPT0gVEFSR0VUX0VYUFIpCisgICAgcmV0ID0gVEFS R0VUX0VYUFJfSU5JVElBTCAocmV0KTsKKyAgdHJlZSBmbiA9IGNwX2dldF9j YWxsZWVfZm5kZWNsIChyZXQpOworICBpZiAoZm4gJiYgREVDTF9BQlNUUkFD VF9PUklHSU4gKGZuKSA9PSBjdXJyZW50X2Z1bmN0aW9uX2RlY2wpCisgICAg ZXJyb3IgKCJjb25zdHJ1Y3RvciBkZWxlZ2F0ZXMgdG8gaXRzZWxmIik7Cit9 CisKIC8qIEJ1aWxkIGEgY2FsbCB0byBhIGNvbnN0cnVjdG9yLCBkZXN0cnVj dG9yLCBvciBhbiBhc3NpZ25tZW50CiAgICBvcGVyYXRvciBmb3IgSU5TVEFO Q0UsIGFuIGV4cHJlc3Npb24gd2l0aCBjbGFzcyB0eXBlLiAgTkFNRQogICAg aW5kaWNhdGVzIHRoZSBzcGVjaWFsIG1lbWJlciBmdW5jdGlvbiB0byBjYWxs OyAqQVJHUyBhcmUgdGhlCkBAIC04MTYyLDYgKzgxOTEsMzggQEAgYnVpbGRf c3BlY2lhbF9tZW1iZXJfY2FsbCAodHJlZSBpbnN0YW5jZSwgdHJlZSBuYW1l LCB2ZWM8dHJlZSwgdmFfZ2M+ICoqYXJncywKIAogICBnY2NfYXNzZXJ0IChp bnN0YW5jZSAhPSBOVUxMX1RSRUUpOwogCisgIC8qIEluIEMrKzE3LCAiSWYg dGhlIGluaXRpYWxpemVyIGV4cHJlc3Npb24gaXMgYSBwcnZhbHVlIGFuZCB0 aGUKKyAgICAgY3YtdW5xdWFsaWZpZWQgdmVyc2lvbiBvZiB0aGUgc291cmNl IHR5cGUgaXMgdGhlIHNhbWUgY2xhc3MgYXMgdGhlIGNsYXNzCisgICAgIG9m IHRoZSBkZXN0aW5hdGlvbiwgdGhlIGluaXRpYWxpemVyIGV4cHJlc3Npb24g aXMgdXNlZCB0byBpbml0aWFsaXplIHRoZQorICAgICBkZXN0aW5hdGlvbiBv YmplY3QuIiAgSGFuZGxlIHRoYXQgaGVyZSB0byBhdm9pZCBkb2luZyBvdmVy bG9hZAorICAgICByZXNvbHV0aW9uLiAgKi8KKyAgaWYgKGN4eF9kaWFsZWN0 ID49IGN4eDF6CisgICAgICAmJiBhcmdzICYmIHZlY19zYWZlX2xlbmd0aCAo KmFyZ3MpID09IDEKKyAgICAgICYmIG5hbWUgPT0gY29tcGxldGVfY3Rvcl9p ZGVudGlmaWVyKQorICAgIHsKKyAgICAgIHRyZWUgYXJnID0gKCoqYXJncylb MF07CisKKyAgICAgIC8qIEZJWE1FIFAwMTM1IGRvZXNuJ3Qgc2F5IGhvdyB0 byBoYW5kbGUgZGlyZWN0IGluaXRpYWxpemF0aW9uIGZyb20gYQorCSB0eXBl IHdpdGggYSBzdWl0YWJsZSBjb252ZXJzaW9uIG9wZXJhdG9yLiAgTGV0J3Mg aGFuZGxlIGl0IGxpa2UKKwkgY29weS1pbml0aWFsaXphdGlvbiwgYnV0IGFs bG93aW5nIGV4cGxpY3QgY29udmVyc2lvbnMuICAqLworICAgICAgaWYgKCFy ZWZlcmVuY2VfcmVsYXRlZF9wIChjbGFzc190eXBlLCBUUkVFX1RZUEUgKGFy ZykpKQorCWFyZyA9IHBlcmZvcm1faW1wbGljaXRfY29udmVyc2lvbl9mbGFn cyAoY2xhc3NfdHlwZSwgYXJnLAorCQkJCQkJIHRmX3dhcm5pbmcsIGZsYWdz KTsKKyAgICAgIGlmIChUUkVFX0NPREUgKGFyZykgPT0gVEFSR0VUX0VYUFIK KwkgICYmIChzYW1lX3R5cGVfaWdub3JpbmdfdG9wX2xldmVsX3F1YWxpZmll cnNfcAorCSAgICAgIChjbGFzc190eXBlLCBUUkVFX1RZUEUgKGFyZykpKSkK Kwl7CisJICBpZiAoaXNfZHVtbXlfb2JqZWN0IChpbnN0YW5jZSkpCisJICAg IHJldHVybiBhcmc7CisJICBpZiAoKGNvbXBsYWluICYgdGZfZXJyb3IpCisJ ICAgICAgJiYgKGZsYWdzICYgTE9PS1VQX0RFTEVHQVRJTkdfQ09OUykpCisJ ICAgIGNoZWNrX3NlbGZfZGVsZWdhdGlvbiAoYXJnKTsKKwkgIC8qIEF2b2lk IGNoYW5nZSBvZiBiZWhhdmlvciBvbiBXdW51c2VkLXZhci0yLkMuICAqLwor CSAgbWFya19sdmFsdWVfdXNlIChpbnN0YW5jZSk7CisJICByZXR1cm4gYnVp bGQyIChJTklUX0VYUFIsIGNsYXNzX3R5cGUsIGluc3RhbmNlLCBhcmcpOwor CX0KKyAgICB9CisKICAgZm5zID0gbG9va3VwX2ZuZmllbGRzIChiaW5mbywg bmFtZSwgMSk7CiAKICAgLyogV2hlbiBtYWtpbmcgYSBjYWxsIHRvIGEgY29u c3RydWN0b3Igb3IgZGVzdHJ1Y3RvciBmb3IgYSBzdWJvYmplY3QKQEAgLTgy MDYsMTEgKzgyNjcsOCBAQCBidWlsZF9zcGVjaWFsX21lbWJlcl9jYWxsICh0 cmVlIGluc3RhbmNlLCB0cmVlIG5hbWUsIHZlYzx0cmVlLCB2YV9nYz4gKiph cmdzLAogCiAgIGlmICgoY29tcGxhaW4gJiB0Zl9lcnJvcikKICAgICAgICYm IChmbGFncyAmIExPT0tVUF9ERUxFR0FUSU5HX0NPTlMpCi0gICAgICAmJiBu YW1lID09IGNvbXBsZXRlX2N0b3JfaWRlbnRpZmllciAKLSAgICAgICYmIFRS RUVfQ09ERSAocmV0KSA9PSBDQUxMX0VYUFIKLSAgICAgICYmIChERUNMX0FC U1RSQUNUX09SSUdJTiAoVFJFRV9PUEVSQU5EIChDQUxMX0VYUFJfRk4gKHJl dCksIDApKQotCSAgPT0gY3VycmVudF9mdW5jdGlvbl9kZWNsKSkKLSAgICBl cnJvciAoImNvbnN0cnVjdG9yIGRlbGVnYXRlcyB0byBpdHNlbGYiKTsKKyAg ICAgICYmIG5hbWUgPT0gY29tcGxldGVfY3Rvcl9pZGVudGlmaWVyKQorICAg IGNoZWNrX3NlbGZfZGVsZWdhdGlvbiAocmV0KTsKIAogICByZXR1cm4gcmV0 OwogfQpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2NwLXRyZWUuaCBiL2djYy9jcC9j cC10cmVlLmgKaW5kZXggNmEwODYyNy4uOGIwNDQyZiAxMDA2NDQKLS0tIGEv Z2NjL2NwL2NwLXRyZWUuaAorKysgYi9nY2MvY3AvY3AtdHJlZS5oCkBAIC01 NjkyLDcgKzU2OTIsNiBAQCBleHRlcm4gdHJlZSBjb252ZXJ0X3RvX3JlZmVy ZW5jZQkJKHRyZWUsIHRyZWUsIGludCwgaW50LCB0cmVlLAogCQkJCQkJIHRz dWJzdF9mbGFnc190KTsKIGV4dGVybiB0cmVlIGNvbnZlcnRfZnJvbV9yZWZl cmVuY2UJCSh0cmVlKTsKIGV4dGVybiB0cmVlIGZvcmNlX3J2YWx1ZQkJCSh0 cmVlLCB0c3Vic3RfZmxhZ3NfdCk7Ci1leHRlcm4gYm9vbCBlYXJseV9lbGlk ZV9jb3B5CQkJKHRyZWUsIHRyZWUpOwogZXh0ZXJuIHRyZWUgb2NwX2NvbnZl cnQJCQkJKHRyZWUsIHRyZWUsIGludCwgaW50LAogCQkJCQkJIHRzdWJzdF9m bGFnc190KTsKIGV4dGVybiB0cmVlIGNwX2NvbnZlcnQJCQkJKHRyZWUsIHRy ZWUsIHRzdWJzdF9mbGFnc190KTsKZGlmZiAtLWdpdCBhL2djYy9jcC9jdnQu YyBiL2djYy9jcC9jdnQuYwppbmRleCAwNjM0NTdmLi4yZjVmMTVhIDEwMDY0 NAotLS0gYS9nY2MvY3AvY3Z0LmMKKysrIGIvZ2NjL2NwL2N2dC5jCkBAIC02 NTgsMjcgKzY1OCw2IEBAIGNwX2NvbnZlcnRfYW5kX2NoZWNrICh0cmVlIHR5 cGUsIHRyZWUgZXhwciwgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAgIHJl dHVybiByZXN1bHQ7CiB9CiAKLS8qIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91 bGQgYXZvaWQgZXZlbiBkb2luZyBvdmVybG9hZCByZXNvbHV0aW9uIGZvciBj b3B5aW5nCi0gICBFWFBSIHRvIGluaXRpYWxpemUgYSBUWVBFLiAgKi8KLQot Ym9vbAotZWFybHlfZWxpZGVfY29weSAodHJlZSB0eXBlLCB0cmVlIGV4cHIp Ci17Ci0gIGlmIChUUkVFX0NPREUgKGV4cHIpICE9IFRBUkdFVF9FWFBSKQot ICAgIHJldHVybiBmYWxzZTsKLSAgLyogTGlzdC1pbml0aWFsaXphdGlvbiBh bmQgZGlyZWN0LWluaXRpYWxpemF0aW9uIGRvbid0IGludm9sdmUgYSBjb3B5 LiAgKi8KLSAgaWYgKFRBUkdFVF9FWFBSX0xJU1RfSU5JVF9QIChleHByKQot ICAgICAgfHwgVEFSR0VUX0VYUFJfRElSRUNUX0lOSVRfUCAoZXhwcikpCi0g ICAgcmV0dXJuIHRydWU7Ci0gIC8qIEluIEMrKzE3LCAiSWYgdGhlIGluaXRp YWxpemVyIGV4cHJlc3Npb24gaXMgYSBwcnZhbHVlIGFuZCB0aGUKLSAgICAg Y3YtdW5xdWFsaWZpZWQgdmVyc2lvbiBvZiB0aGUgc291cmNlIHR5cGUgaXMg dGhlIHNhbWUgY2xhc3MgYXMgdGhlIGNsYXNzCi0gICAgIG9mIHRoZSBkZXN0 aW5hdGlvbiwgdGhlIGluaXRpYWxpemVyIGV4cHJlc3Npb24gaXMgdXNlZCB0 byBpbml0aWFsaXplIHRoZQotICAgICBkZXN0aW5hdGlvbiBvYmplY3QuIiAg Ki8KLSAgcmV0dXJuIChjeHhfZGlhbGVjdCA+PSBjeHgxegotCSAgJiYgKHNh bWVfdHlwZV9pZ25vcmluZ190b3BfbGV2ZWxfcXVhbGlmaWVyc19wCi0JICAg ICAgKHR5cGUsIFRSRUVfVFlQRSAoZXhwcikpKSk7Ci19Ci0KIC8qIENvbnZl cnNpb24uLi4KIAogICAgRkxBR1MgaW5kaWNhdGVzIGhvdyB3ZSBzaG91bGQg YmVoYXZlLiAgKi8KQEAgLTcxNCw4ICs2OTMsNyBAQCBvY3BfY29udmVydCAo dHJlZSB0eXBlLCB0cmVlIGV4cHIsIGludCBjb252dHlwZSwgaW50IGZsYWdz LAogICBpZiAoZXJyb3Jfb3BlcmFuZF9wIChlKSkKICAgICByZXR1cm4gZXJy b3JfbWFya19ub2RlOwogCi0gIGlmIChNQVlCRV9DTEFTU19UWVBFX1AgKHR5 cGUpICYmIChjb252dHlwZSAmIENPTlZfRk9SQ0VfVEVNUCkKLSAgICAgICYm ICFlYXJseV9lbGlkZV9jb3B5ICh0eXBlLCBlKSkKKyAgaWYgKE1BWUJFX0NM QVNTX1RZUEVfUCAodHlwZSkgJiYgKGNvbnZ0eXBlICYgQ09OVl9GT1JDRV9U RU1QKSkKICAgICAvKiBXZSBuZWVkIGEgbmV3IHRlbXBvcmFyeTsgZG9uJ3Qg dGFrZSB0aGlzIHNob3J0Y3V0LiAgKi87CiAgIGVsc2UgaWYgKHNhbWVfdHlw ZV9pZ25vcmluZ190b3BfbGV2ZWxfcXVhbGlmaWVyc19wICh0eXBlLCBUUkVF X1RZUEUgKGUpKSkKICAgICB7CmRpZmYgLS1naXQgYS9nY2MvY3AvZXhjZXB0 LmMgYi9nY2MvY3AvZXhjZXB0LmMKaW5kZXggMmY4ODA4Mi4uMWM2MGIwOCAx MDA2NDQKLS0tIGEvZ2NjL2NwL2V4Y2VwdC5jCisrKyBiL2djYy9jcC9leGNl cHQuYwpAQCAtNjgzLDcgKzY4Myw3IEBAIGJ1aWxkX3Rocm93ICh0cmVlIGV4 cCkKICAgICAgIG9iamVjdCA9IGNwX2J1aWxkX2luZGlyZWN0X3JlZiAob2Jq ZWN0LCBST19OVUxMLCB0Zl93YXJuaW5nX29yX2Vycm9yKTsKIAogICAgICAg LyogQW5kIGluaXRpYWxpemUgdGhlIGV4Y2VwdGlvbiBvYmplY3QuICAqLwot ICAgICAgaWYgKENMQVNTX1RZUEVfUCAodGVtcF90eXBlKSAmJiAhZWFybHlf ZWxpZGVfY29weSAodGVtcF90eXBlLCBleHApKQorICAgICAgaWYgKENMQVNT X1RZUEVfUCAodGVtcF90eXBlKSkKIAl7CiAJICBpbnQgZmxhZ3MgPSBMT09L VVBfTk9STUFMIHwgTE9PS1VQX09OTFlDT05WRVJUSU5HOwogCSAgdmVjPHRy ZWUsIHZhX2djPiAqZXhwX3ZlYzsKZGlmZiAtLWdpdCBhL2djYy9jcC9pbml0 LmMgYi9nY2MvY3AvaW5pdC5jCmluZGV4IGE4NzNiYjEuLmI0YjVlMGEgMTAw NjQ0Ci0tLSBhL2djYy9jcC9pbml0LmMKKysrIGIvZ2NjL2NwL2luaXQuYwpA QCAtMTY0NCwxMyArMTY0NCw2IEBAIGV4cGFuZF9kZWZhdWx0X2luaXQgKHRy ZWUgYmluZm8sIHRyZWUgdHJ1ZV9leHAsIHRyZWUgZXhwLCB0cmVlIGluaXQs IGludCBmbGFncywKIAlpbml0ID0gcmVzaGFwZV9pbml0ICh0eXBlLCBpbml0 LCBjb21wbGFpbik7CiAgICAgfQogCi0gIC8qIEFsc28gcHVsbCBvdXQgYSBU QVJHRVRfRVhQUiB0aGF0IHdlIHdhbnQgdG8gYXZvaWQgY29weWluZy4gICov Ci0gIGlmIChpbml0ICYmIHRydWVfZXhwID09IGV4cAotICAgICAgJiYgVFJF RV9DT0RFIChpbml0KSA9PSBUUkVFX0xJU1QKLSAgICAgICYmIGxpc3RfbGVu Z3RoIChpbml0KSA9PSAxCi0gICAgICAmJiBlYXJseV9lbGlkZV9jb3B5ICh0 eXBlLCBUUkVFX1ZBTFVFIChpbml0KSkpCi0gICAgaW5pdCA9IFRSRUVfVkFM VUUgKGluaXQpOwotCiAgIGlmIChpbml0ICYmIEJSQUNFX0VOQ0xPU0VEX0lO SVRJQUxJWkVSX1AgKGluaXQpCiAgICAgICAmJiBDUF9BR0dSRUdBVEVfVFlQ RV9QICh0eXBlKSkKICAgICAvKiBBIGJyYWNlLWVuY2xvc2VkIGluaXRpYWxp emVyIGZvciBhbiBhZ2dyZWdhdGUuICBJbiBDKysweCB0aGlzIGNhbgpAQCAt MTY2MSwxMiArMTY1NCwxNCBAQCBleHBhbmRfZGVmYXVsdF9pbml0ICh0cmVl IGJpbmZvLCB0cmVlIHRydWVfZXhwLCB0cmVlIGV4cCwgdHJlZSBpbml0LCBp bnQgZmxhZ3MsCiAgICAgIGluaXRpYWxpemVyLCB3aGV0aGVyIHRoYXQgaGFw cGVuZWQganVzdCBhYm92ZSBvciBpbgogICAgICBjcF9wYXJzZXJfbGF0ZV9w YXJzaW5nX25zZG1pLgogCi0gICAgIEEgVEFSR0VUX0VYUFIgZm9yIHdoaWNo IGVhcmx5X2VsaWRlX2NvcHkgaXMgdHJ1ZSByZXByZXNlbnRzIHRoZSB3aG9s ZQotICAgICBpbml0aWFsaXphdGlvbiwgc28gd2Ugc2hvdWxkbid0IGJ1aWxk IHVwIGFub3RoZXIgY3RvciBjYWxsLiAgKi8KLQorICAgICBBIFRBUkdFVF9F WFBSIHdpdGggVEFSR0VUX0VYUFJfRElSRUNUX0lOSVRfUCBvciBUQVJHRVRf RVhQUl9MSVNUX0lOSVRfUAorICAgICBzZXQgcmVwcmVzZW50cyB0aGUgd2hv bGUgaW5pdGlhbGl6YXRpb24sIHNvIHdlIHNob3VsZG4ndCBidWlsZCB1cAor ICAgICBhbm90aGVyIGN0b3IgY2FsbC4gICovCiAgIGlmIChpbml0CiAgICAg ICAmJiAoVFJFRV9DT0RFIChpbml0KSA9PSBDT05TVFJVQ1RPUgotCSAgfHwg ZWFybHlfZWxpZGVfY29weSAodHlwZSwgaW5pdCkpCisJICB8fCAoVFJFRV9D T0RFIChpbml0KSA9PSBUQVJHRVRfRVhQUgorCSAgICAgICYmIChUQVJHRVRf RVhQUl9ESVJFQ1RfSU5JVF9QIChpbml0KQorCQkgIHx8IFRBUkdFVF9FWFBS X0xJU1RfSU5JVF9QIChpbml0KSkpKQogICAgICAgJiYgc2FtZV90eXBlX2ln bm9yaW5nX3RvcF9sZXZlbF9xdWFsaWZpZXJzX3AgKFRSRUVfVFlQRSAoaW5p dCksIHR5cGUpKQogICAgIHsKICAgICAgIC8qIEVhcmx5IGluaXRpYWxpemF0 aW9uIHZpYSBhIFRBUkdFVF9FWFBSIG9ubHkgd29ya3MgZm9yCmRpZmYgLS1n aXQgYS9nY2MvY3AvdHlwZWNrLmMgYi9nY2MvY3AvdHlwZWNrLmMKaW5kZXgg NjQ1NjI2OS4uNTY5NDQyZiAxMDA2NDQKLS0tIGEvZ2NjL2NwL3R5cGVjay5j CisrKyBiL2djYy9jcC90eXBlY2suYwpAQCAtNzYzOSw4ICs3NjM5LDYgQEAg Y3BfYnVpbGRfbW9kaWZ5X2V4cHIgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGxo cywgZW51bSB0cmVlX2NvZGUgbW9kaWZ5Y29kZSwKIAl9CiAgICAgICBlbHNl IGlmICghIE1BWUJFX0NMQVNTX1RZUEVfUCAobGhzdHlwZSkpCiAJLyogRG8g dGhlIGRlZmF1bHQgdGhpbmcuICAqLzsKLSAgICAgIGVsc2UgaWYgKGVhcmx5 X2VsaWRlX2NvcHkgKGxoc3R5cGUsIHJocykpCi0JLyogRG8gdGhlIGRlZmF1 bHQgdGhpbmcuICAqLzsKICAgICAgIGVsc2UKIAl7CiAJICB2ZWM8dHJlZSwg dmFfZ2M+ICpyaHNfdmVjID0gbWFrZV90cmVlX3ZlY3Rvcl9zaW5nbGUgKHJo cyk7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAweC9p bml0bGlzdDEyLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAweC9pbml0 bGlzdDEyLkMKaW5kZXggNWVmZGM2Ny4uZjcyYTZkYSAxMDA2NDQKLS0tIGEv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMHgvaW5pdGxpc3QxMi5DCisrKyBi L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDB4L2luaXRsaXN0MTIuQwpAQCAt MSw2ICsxLDUgQEAKIC8vIFBSIGMrKy8zODY5OAogLy8geyBkZy1kbyBjb21w aWxlIHsgdGFyZ2V0IGMrKzExIH0gfQotLy8geyBkZy1wcnVuZS1vdXRwdXQg Im5vdGUiIH0KIAogc3RydWN0IEEKIHsKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDF6L2VsaWRlMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMXovZWxpZGUxLkMKaW5kZXggNzE0NzZlMi4uNDhiODliMSAx MDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovZWxpZGUx LkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovZWxpZGUxLkMK QEAgLTIzLDMgKzIzLDEwIEBAIEEgZigpIHsKICAgZWxzZQogICAgIHJldHVy biBBKCk7CiB9CisKK0EqIGFwID0gbmV3IEEoZigpKTsKKworc3RydWN0IEIg eworICBBIGE7CisgIEIoKTogYShBKCkpIHt9Cit9OwpkaWZmIC0tZ2l0IGEv bGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3ZhcmlhbnQvY29tcGls ZS5jYyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC92YXJpYW50 L2NvbXBpbGUuY2MKaW5kZXggODVhNjk3Zi4uNDAxNmQ5ZSAxMDA2NDQKLS0t IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3ZhcmlhbnQvY29t cGlsZS5jYworKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwv dmFyaWFudC9jb21waWxlLmNjCkBAIC05MSw4ICs5MSw4IEBAIHZvaWQgbW92 ZV9jdG9yKCkKIHsKICAgc3RhdGljX2Fzc2VydChpc19tb3ZlX2NvbnN0cnVj dGlibGVfdjx2YXJpYW50PGludCwgc3RyaW5nPj4sICIiKTsKICAgc3RhdGlj X2Fzc2VydCghaXNfbW92ZV9jb25zdHJ1Y3RpYmxlX3Y8dmFyaWFudDxBbGxE ZWxldGVkLCBzdHJpbmc+PiwgIiIpOwotICBzdGF0aWNfYXNzZXJ0KCFub2V4 Y2VwdCh2YXJpYW50PGludCwgRW1wdHk+KHZhcmlhbnQ8aW50LCBFbXB0eT4o KSkpLCAiIik7Ci0gIHN0YXRpY19hc3NlcnQobm9leGNlcHQodmFyaWFudDxp bnQsIERlZmF1bHROb2V4Y2VwdD4odmFyaWFudDxpbnQsIERlZmF1bHROb2V4 Y2VwdD4oKSkpLCAiIik7CisgIHN0YXRpY19hc3NlcnQoIW5vZXhjZXB0KHZh cmlhbnQ8aW50LCBFbXB0eT4oZGVjbHZhbDx2YXJpYW50PGludCwgRW1wdHk+ PigpKSksICIiKTsKKyAgc3RhdGljX2Fzc2VydChub2V4Y2VwdCh2YXJpYW50 PGludCwgRGVmYXVsdE5vZXhjZXB0PihkZWNsdmFsPHZhcmlhbnQ8aW50LCBE ZWZhdWx0Tm9leGNlcHQ+PigpKSksICIiKTsKIH0KIAogdm9pZCBhcmJpdHJh cnlfY3RvcigpCg== --001a1141b4e0382728053e5d00d1--