From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14278 invoked by alias); 11 May 2010 19:44:42 -0000 Received: (qmail 14265 invoked by uid 22791); 11 May 2010 19:44:40 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-wy0-f175.google.com (HELO mail-wy0-f175.google.com) (74.125.82.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 11 May 2010 19:44:35 +0000 Received: by wyb34 with SMTP id 34so802692wyb.20 for ; Tue, 11 May 2010 12:44:32 -0700 (PDT) MIME-Version: 1.0 Received: by 10.216.188.201 with SMTP id a51mr3854300wen.224.1273607072645; Tue, 11 May 2010 12:44:32 -0700 (PDT) Received: by 10.216.70.2 with HTTP; Tue, 11 May 2010 12:44:32 -0700 (PDT) Date: Tue, 11 May 2010 19:44:00 -0000 Message-ID: Subject: [Patch] PR c++/26256 From: =?ISO-8859-1?Q?Fabien_Ch=EAne?= To: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary=0016364d27412602b9048656c1c1 X-IsSubscribed: yes 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 X-SW-Source: 2010-05/txt/msg00786.txt.bz2 --0016364d27412602b9048656c1c1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1907 Hello, Here is a patch to fix PR c++/26256, which deals with using declarations. I've tried a naive approach: basically, when a field decl is ambiguous, lookup_member (invoked with protect =3D 1) returns a TREE_LIST. So when we are in this case, I have implemented a lookup in the object scope, which try to disambiguate the field decl using 'using decl'. If the lookup succeeds, just return the selected field decl in the TREE_LIST. I've also implemented the dual fix for type fields. The principle is the same than above, if a field type is ambiguous, lookup_name_real returns a TREE_LIST. In this case, we have to do a lookup in the appropriate class scope, and return the selected field type in the TREE_LIST if the lookup succeds. Thought ? Bootstrapped with all default languages, tested x86_64/Linux. gcc/testsuite/ChangeLog: 2010-05-11 Fabien Ch=EAne PR c++/26256 * g++.dg/lookup/using23.C: New. * g++.dg/lookup/using24.C: New. * g++.dg/lookup/using25.C: New. * g++.dg/lookup/using26.C: New. * g++.dg/lookup/using27.C: New. * g++.dg/debug/using4.C: New. * g++.dg/debug/using5.C: New. gcc/cp/ChangeLog: 2010-05-11 Fabien Ch=EAne PR c++/26256 * cp-tree.h (disambiguate_with_using_decl): Declare. * name-lookup.c (disambiguate_with_using_decl): Define. Try to disambiguate a field type or a field decl with using declarations. * search.c (lookup-member): Call disambiguate_with_using_decl when a field decl is ambiguous. * parser.c (cp_parser_lookup_name): Call disambiguate_with_using_decl when a field type is ambiguous. * class.c (count_fields): Ignore using declarations. (add_fields_to_record_type): Likewise. (check_field_decls): Keep using declarations. gcc/ChangeLog: 2010-05-11 Fabien Ch=EAne PR c++/26256 * dbxout.c (dbxout_type_fields): Ignore using declarations. --=20 Fabien --0016364d27412602b9048656c1c1 Content-Type: application/octet-stream; name="pr26256.patch" Content-Disposition: attachment; filename="pr26256.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g93s66r40 Content-length: 14100 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRnL2RlYnVnL3VzaW5nNC5DCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRn L2RlYnVnL3VzaW5nNC5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvZGVidWcvdXNpbmc0LkMJKHJldmlzaW9uIDApCkBAIC0wLDAg KzEsMjQgQEAKKy8vIFBSIGMrKy8yNjI1NgorLy8geyBkZy1kbyBjb21waWxl IH0KKworc3RydWN0IEEKK3sKKyAgICB0eXBlZGVmIGNoYXIgdHlwZTsKK307 CisKK3N0cnVjdCBCCit7CisgICAgdHlwZWRlZiBpbnQgdHlwZTsKK307CisK K3N0cnVjdCBDIDogQSwgQgoreworICAgIHVzaW5nIEE6OnR5cGU7CisgICAg dHlwZSBmICh0eXBlKTsKK307CisKK0M6OnR5cGUgQzo6ZiggdHlwZSApIAor eworICAgIHR5cGUgYyA9ICdlJzsKKyAgICByZXR1cm4gYzsKK30KSW5kZXg6 IGdjYy90ZXN0c3VpdGUvZysrLmRnL2RlYnVnL3VzaW5nNS5DCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2RlYnVn L3VzaW5nNS5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvZGVidWcvdXNpbmc1LkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMg QEAKKy8vIFBSIGMrKy8yNjI1NgorLy8geyBkZy1kbyBjb21waWxlIH0KKwor c3RydWN0IEEKK3sKKyAgICBpbnQgaTsKK307CisKK3N0cnVjdCBCCit7Cisg ICAgaW50IGk7Cit9OworCitzdHJ1Y3QgQyA6IEEsIEIKK3sKKyAgICB1c2lu ZyBCOjppOworICAgIGludCBmICgpOworfTsKKworaW50IEM6OmYoKSAKK3sK KyAgICByZXR1cm4gaTsKK30KSW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRn L2xvb2t1cC91c2luZzI0LkMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMjQuQwkocmV2aXNp b24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91c2luZzI0 LkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKKy8vIFBSIGMrKy8y NjI1NgorLy8geyBkZy1kbyBjb21waWxlIH0KKworc3RydWN0IExpc3REUHJv dG8geworICAgIHVuc2lnbmVkIGxlbmd0aCgpOworICAgIGJvb2wgZW1wdHko KTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBmaXJzdCgpOworICAg IHZvaWQgbmV4dCgpOworICAgIGVudW0gQWN0aW9uIHsgTk9STUFMLCBSRU1P VkVfQ1VSUkVOVCB9OworfTsKK3N0cnVjdCBTZXRMRDogTGlzdERQcm90byB7 CisgICAgdm9pZCByZW1vdmUoKQorICAgIHtMaXN0RFByb3RvOjpBY3Rpb24g YSA9IHRoaXMtPk5PUk1BTDt9CisgICAgTGlzdERQcm90bzo6bGVuZ3RoOwor ICAgIExpc3REUHJvdG86OmVtcHR5OworICAgIExpc3REUHJvdG86OmNsZWFy OworICAgIExpc3REUHJvdG86OmZpcnN0OworICAgIExpc3REUHJvdG86Om5l eHQ7CisKKyAgICB1c2luZyBMaXN0RFByb3RvOjpOT1JNQUw7CisgICAgdXNp bmcgTGlzdERQcm90bzo6UkVNT1ZFX0NVUlJFTlQ7Cit9OworCkluZGV4OiBn Y2MvdGVzdHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmcyNS5DCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2xvb2t1 cC91c2luZzI1LkMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9sb29rdXAvdXNpbmcyNS5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx LDI4IEBACisvLyBQUiBjKysvMjYyNTYKKy8vIHsgZGctZG8gcnVuIH0KKwor c3RydWN0IEEgCit7CisgICAgaW50IG5leHQ7IAorfTsKKworc3RydWN0IEIg Cit7CisgICAgaW50IG5leHQ7IAorfTsKKworc3RydWN0IEMgOiBwdWJsaWMg QSwgcHVibGljIEIgCit7CisgICAgdXNpbmcgQTo6bmV4dDsgCit9OworCit2 b2lkIGZvbyhDJiBjKSB7IGMubmV4dCA9IDQyOyB9CisKK2ludCBtYWluKCkK K3sKKyAgICBDIGM7CisgICAgZm9vIChjKTsKKyAgICBjLkI6Om5leHQgPSAx MjsKKyAgICBpZiAoYy5uZXh0ICE9IDQyIHx8IGMuQTo6bmV4dCAhPSA0MiB8 fCBjLkI6Om5leHQgIT0gMTIpCisgICAgCV9fYnVpbHRpbl9hYm9ydCgpOwor fQpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMjYu Qwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9sb29rdXAvdXNpbmcyNi5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMjYuQwkocmV2aXNpb24gMCkK QEAgLTAsMCArMSwyNyBAQAorLy8gUFIgYysrLzI2MjU2CisvLyB7IGRnLWRv IGNvbXBpbGUgfQorCitzdHJ1Y3QgQSAKK3sKKyAgICBkb3VibGUgbmV4dDsg Cit9OworCitzdHJ1Y3QgQiAKK3sKK3ByaXZhdGU6CisgICAgaW50IG5leHQ7 IC8vIHsgZGctZXJyb3IgInByaXZhdGUiIH0KK307CisKK3N0cnVjdCBDCit7 CisgICAgaW50IG5leHQ7Cit9OworCitzdHJ1Y3QgRCA6IEEsIEIsIEMgLy8g eyBkZy1lcnJvciAiY29udGV4dCIgfQoreworICAgIHVzaW5nIEI6Om5leHQ7 CisgICAgdm9pZCBmKCkKKyAgICB7CisJbmV4dCA9IDEyOworICAgIH0KK307 CkluZGV4OiBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmcyMy5D Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysr LmRnL2xvb2t1cC91c2luZzIzLkMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVz dHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmcyMy5DCShyZXZpc2lvbiAwKQpA QCAtMCwwICsxLDIxIEBACisvLyBQUiBjKysvMjYyNTYKKy8vIHsgZGctZG8g Y29tcGlsZSB9CisKK3N0cnVjdCBBCit7Citwcml2YXRlOgorICAgIHR5cGVk ZWYgaW50IHR5cGU7IC8vIHsgZGctZXJyb3IgInByaXZhdGUiIH0KK307CisK K3N0cnVjdCBCCit7CisgICAgdHlwZWRlZiBkb3VibGUgdHlwZTsKK307CisK K3N0cnVjdCBDIDogQSwgQiAvLyB7IGRnLWVycm9yICJjb250ZXh0IiB9Cit7 CisgICAgdXNpbmcgQTo6dHlwZTsgCisgICAgdHlwZSBkOyAvLyB7IGRnLWVy cm9yICJjb250ZXh0IiB9Cit9OworCisKSW5kZXg6IGdjYy90ZXN0c3VpdGUv ZysrLmRnL2xvb2t1cC91c2luZzI3LkMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMjcuQwko cmV2aXNpb24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91 c2luZzI3LkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8vIFBS IGMrKy8yNjI1NgorLy8geyBkZy1kbyBydW4gfQorCitzdHJ1Y3QgQQorewor ICAgIHR5cGVkZWYgaW50IHR5cGU7Cit9OworCitzdHJ1Y3QgQgoreworICAg IHR5cGVkZWYgZG91YmxlIHR5cGU7Cit9OworCitzdHJ1Y3QgQyA6IEEsIEIK K3sKKyAgICB1c2luZyBBOjp0eXBlOworICAgIHR5cGUgZDsKKworICAgIHZv aWQgZigpCisgICAgeworCXR5cGUgZTsKKwlpZiAoc2l6ZW9mICh0eXBlKSAh PSBzaXplb2YgKEE6OnR5cGUpKQorCSAgICBfX2J1aWx0aW5fYWJvcnQoKTsK KyAgICB9CisKKyAgICB2b2lkIGcoKTsKK307CisKK3ZvaWQgQzo6ZygpCit7 CisgICAgdHlwZSB4OworICAgIGlmIChzaXplb2YgKHR5cGUpICE9IHNpemVv ZiAoQTo6dHlwZSkpCisgICAgCV9fYnVpbHRpbl9hYm9ydCgpOworfQorCitp bnQgbWFpbiAoKQoreworICAgIGlmIChzaXplb2YgKEM6OnR5cGUpICE9IHNp emVvZiAoQTo6dHlwZSkpCisgICAgCV9fYnVpbHRpbl9hYm9ydCgpOworCisg ICAgaWYgKHNpemVvZiAoQzo6ZCkgIT0gc2l6ZW9mIChBOjp0eXBlKSkKKyAg ICAJX19idWlsdGluX2Fib3J0KCk7CisKKyAgICBDOjp0eXBlIHg7CisgICAg QyBjOworICAgIGMuZigpOworICAgIGMuZygpOworfQorCkluZGV4OiBnY2Mv Y3AvY2xhc3MuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvY3Av Y2xhc3MuYwkocmV2aXNpb24gMTU4NTcyKQorKysgZ2NjL2NwL2NsYXNzLmMJ KHdvcmtpbmcgY29weSkKQEAgLTI3MDQsNiArMjcwNCw4IEBAIGNvdW50X2Zp ZWxkcyAodHJlZSBmaWVsZHMpCiAgIGludCBuX2ZpZWxkcyA9IDA7CiAgIGZv ciAoeCA9IGZpZWxkczsgeDsgeCA9IFRSRUVfQ0hBSU4gKHgpKQogICAgIHsK KyAgICAgIGlmIChUUkVFX0NPREUgKHgpID09IFVTSU5HX0RFQ0wpCisJY29u dGludWU7CiAgICAgICBpZiAoVFJFRV9DT0RFICh4KSA9PSBGSUVMRF9ERUNM ICYmIEFOT05fQUdHUl9UWVBFX1AgKFRSRUVfVFlQRSAoeCkpKQogCW5fZmll bGRzICs9IGNvdW50X2ZpZWxkcyAoVFlQRV9GSUVMRFMgKFRSRUVfVFlQRSAo eCkpKTsKICAgICAgIGVsc2UKQEAgLTI3MjEsNiArMjcyMyw5IEBAIGFkZF9m aWVsZHNfdG9fcmVjb3JkX3R5cGUgKHRyZWUgZmllbGRzLCAKICAgdHJlZSB4 OwogICBmb3IgKHggPSBmaWVsZHM7IHg7IHggPSBUUkVFX0NIQUlOICh4KSkK ICAgICB7CisgICAgICBpZiAoVFJFRV9DT0RFICh4KSA9PSBVU0lOR19ERUNM KQorCWNvbnRpbnVlOworCiAgICAgICBpZiAoVFJFRV9DT0RFICh4KSA9PSBG SUVMRF9ERUNMICYmIEFOT05fQUdHUl9UWVBFX1AgKFRSRUVfVFlQRSAoeCkp KQogCWlkeCA9IGFkZF9maWVsZHNfdG9fcmVjb3JkX3R5cGUgKFRZUEVfRklF TERTIChUUkVFX1RZUEUgKHgpKSwgZmllbGRfdmVjLCBpZHgpOwogICAgICAg ZWxzZQpAQCAtMjkzNSwxNSArMjk0MCw4IEBAIGNoZWNrX2ZpZWxkX2RlY2xz ICh0cmVlIHQsIHRyZWUgKmFjY2Vzc18KIAogICAgICAgaWYgKFRSRUVfQ09E RSAoeCkgPT0gVVNJTkdfREVDTCkKIAl7Ci0JICAvKiBQcnVuZSB0aGUgYWNj ZXNzIGRlY2xhcmF0aW9uIGZyb20gdGhlIGxpc3Qgb2YgZmllbGRzLiAgKi8K LQkgICpmaWVsZCA9IFRSRUVfQ0hBSU4gKHgpOwotCiAJICAvKiBTYXZlIHRo ZSBhY2Nlc3MgZGVjbGFyYXRpb25zIGZvciBvdXIgY2FsbGVyLiAgKi8KIAkg ICphY2Nlc3NfZGVjbHMgPSB0cmVlX2NvbnMgKE5VTExfVFJFRSwgeCwgKmFj Y2Vzc19kZWNscyk7Ci0KLQkgIC8qIFNpbmNlIHdlJ3ZlIHJlc2V0ICpGSUVM RCB0aGVyZSdzIG5vIHJlYXNvbiB0byBza2lwIHRvIHRoZQotCSAgICAgbmV4 dCBmaWVsZC4gICovCi0JICBuZXh0ID0gZmllbGQ7CiAJICBjb250aW51ZTsK IAl9CiAKSW5kZXg6IGdjYy9jcC9wYXJzZXIuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBnY2MvY3AvcGFyc2VyLmMJKHJldmlzaW9uIDE1ODU3MikK KysrIGdjYy9jcC9wYXJzZXIuYwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx LDYgQEAKIC8qIEMrKyBQYXJzZXIuCiAgICBDb3B5cmlnaHQgKEMpIDIwMDAs IDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsCi0gICAyMDA1LCAyMDA3LCAyMDA4 LCAyMDA5ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIDIw MDUsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgogICAgV3JpdHRlbiBieSBNYXJrIE1pdGNoZWxsIDxt YXJrQGNvZGVzb3VyY2VyeS5jb20+LgogCiAgICBUaGlzIGZpbGUgaXMgcGFy dCBvZiBHQ0MuCkBAIC0xODEyMSw2ICsxODEyMSw5IEBAIGNwX3BhcnNlcl9s b29rdXBfbmFtZSAoY3BfcGFyc2VyICpwYXJzZXIKICAgaWYgKGlzX3RlbXBs YXRlKQogICAgIGRlY2wgPSBtYXliZV9nZXRfdGVtcGxhdGVfZGVjbF9mcm9t X3R5cGVfZGVjbCAoZGVjbCk7CiAKKyAgLyogSGFuZGxlIHVzaW5nIGRlY2xz LiAqLworICBkZWNsID0gZGlzYW1iaWd1YXRlX3dpdGhfdXNpbmdfZGVjbCAo ZGVjbCwgcGFyc2VyLT5xdWFsaWZ5aW5nX3Njb3BlKTsKKwogICAvKiBJZiBp dCdzIGEgVFJFRV9MSVNULCB0aGUgcmVzdWx0IG9mIHRoZSBsb29rdXAgd2Fz IGFtYmlndW91cy4gICovCiAgIGlmIChUUkVFX0NPREUgKGRlY2wpID09IFRS RUVfTElTVCkKICAgICB7CkluZGV4OiBnY2MvY3AvY3AtdHJlZS5oCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9jcC9jcC10cmVlLmgJKHJldmlz aW9uIDE1ODU3MikKKysrIGdjYy9jcC9jcC10cmVlLmgJKHdvcmtpbmcgY29w eSkKQEAgLTQ2NDgsNiArNDY0OCw3IEBAIGV4dGVybiB0cmVlIGNoZWNrX2Zv cl9vdXRfb2Zfc2NvcGVfdmFyaWEKIGV4dGVybiB2b2lkIHByaW50X290aGVy X2JpbmRpbmdfc3RhY2sJCShzdHJ1Y3QgY3BfYmluZGluZ19sZXZlbCAqKTsK IGV4dGVybiB0cmVlIG1heWJlX3B1c2hfZGVjbAkJCSh0cmVlKTsKIGV4dGVy biB0cmVlIGN1cnJlbnRfZGVjbF9uYW1lc3BhY2UJCSh2b2lkKTsKK2V4dGVy biB0cmVlIGRpc2FtYmlndWF0ZV93aXRoX3VzaW5nX2RlY2wgICAgICAgICh0 cmVlLCB0cmVlKTsKIAogLyogZGVjbC5jICovCiBleHRlcm4gdHJlZSBwb3Bs ZXZlbAkJCQkoaW50LCBpbnQsIGludCk7CkluZGV4OiBnY2MvY3Avc2VhcmNo LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2NwL3NlYXJjaC5j CShyZXZpc2lvbiAxNTg1NzIpCisrKyBnY2MvY3Avc2VhcmNoLmMJKHdvcmtp bmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKiBCcmVhZHRoLWZpcnN0IGFu ZCBkZXB0aC1maXJzdCByb3V0aW5lcyBmb3IKICAgIHNlYXJjaGluZyBtdWx0 aXBsZS1pbmhlcml0YW5jZSBsYXR0aWNlIGZvciBHTlUgQysrLgogICAgQ29w eXJpZ2h0IChDKSAxOTg3LCAxOTg5LCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1 LCAxOTk2LCAxOTk3LCAxOTk4LAotICAgMTk5OSwgMjAwMCwgMjAwMiwgMjAw MywgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOQorICAgMTk5OSwgMjAw MCwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOSwg MjAxMAogICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBD b250cmlidXRlZCBieSBNaWNoYWVsIFRpZW1hbm4gKHRpZW1hbm5AY3lnbnVz LmNvbSkKIApAQCAtMTIyNSw2ICsxMjI1LDE3IEBAIGxvb2t1cF9tZW1iZXIg KHRyZWUgeGJhc2V0eXBlLCB0cmVlIG5hbWUKIAlwcm90ZWN0ID0gMDsKICAg ICB9CiAKKyAgaWYgKHByb3RlY3QgPT0gMSAmJiBsZmkuYW1iaWd1b3VzKQor ICAgIHsKKyAgICAgIHRyZWUgZGlzYW1iID0gZGlzYW1iaWd1YXRlX3dpdGhf dXNpbmdfZGVjbCAobGZpLmFtYmlndW91cywgCisJCQkJCQkgIFRSRUVfVFlQ RSAoYmFzZXR5cGVfcGF0aCkpOworICAgICAgaWYgKFRSRUVfQ09ERSAoZGlz YW1iKSAhPSBUUkVFX0xJU1QpCisJeworCSAgcnZhbCA9IGRpc2FtYjsKKwkg IGVycnN0ciA9IDA7CisJfQorICAgIH0KKwogICAvKiBbY2xhc3MuYWNjZXNz XQogCiAgICAgIEluIHRoZSBjYXNlIG9mIG92ZXJsb2FkZWQgZnVuY3Rpb24g bmFtZXMsIGFjY2VzcyBjb250cm9sIGlzCkluZGV4OiBnY2MvY3AvbmFtZS1s b29rdXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvY3AvbmFt ZS1sb29rdXAuYwkocmV2aXNpb24gMTU4NTcyKQorKysgZ2NjL2NwL25hbWUt bG9va3VwLmMJKHdvcmtpbmcgY29weSkKQEAgLTU1MDksNCArNTUwOSw2MCBA QCBjcF9lbWl0X2RlYnVnX2luZm9fZm9yX3VzaW5nICh0cmVlIHQsIHRyCiAg ICAgICB9CiB9CiAKKy8qIFRyeSB0byBkaXNhbWJpZ3VhdGUgYW4gYW1iaWd1 b3VzIERFQ0wsIHdpdGggdXNpbmcKKyAgIGRlY2xhcmF0aW9ucy4gUmV0dXJu cyBERUNMIGlmIERFQ0wgY2Fubm90IGJlIGRpc2FtYmlndWF0ZWQsCisgICBv dGhlcndpc2UgcmV0dXJucyB0aGUgc2VsZWN0ZWQgY2FuZGlkYXRlIChub3Qg YSBUUkVFX0xJU1QpLiBUaGUKKyAgIGxvb2t1cCBpcyBkb25lIGluIFNDT1BF IGlmIGl0IGlzIG5vdCBhIE5VTExfVFJFRSwgb3RoZXJ3aXNlLCBpbgorICAg Y3VycmVudF9jbGFzc190eXBlIGlmIGl0IGlzIG5vdCBhIE5VTExfVFJFRS4g Ki8KK3RyZWUKK2Rpc2FtYmlndWF0ZV93aXRoX3VzaW5nX2RlY2wgKHRyZWUg ZGVjbCwgdHJlZSBzY29wZSkKK3sKKyAgaW50IGNhbmRpZGF0ZXMgPSAwOwor ICB0cmVlIGRlY2xfYWZ0ZXJfdXNpbmcgPSBOVUxMX1RSRUU7CisgIHRyZWUg ZmllbGQgPSBOVUxMX1RSRUU7CisgIHRyZWUgZGVjbF9zY29wZSA9IE5VTExf VFJFRTsKKworICBpZiAoVFJFRV9DT0RFIChkZWNsKSAhPSBUUkVFX0xJU1Qp CisgICAgcmV0dXJuIGRlY2w7CisgICAgICAKKyAgaWYgKHNjb3BlKQorICAg IGRlY2xfc2NvcGUgPSBzY29wZTsKKyAgZWxzZSBpZiAoY3VycmVudF9jbGFz c190eXBlKQorICAgIGRlY2xfc2NvcGUgPSBjdXJyZW50X2NsYXNzX3R5cGU7 CisgIC8qIGVsc2UgaWYgKG9iamVjdF9zY29wZSkgKi8KKyAgLyogICBkZWNs X3Njb3BlID0gVFJFRV9UWVBFIChvYmplY3Rfc2NvcGUpOyAqLworCisgIGlm IChkZWNsX3Njb3BlID09IE5VTExfVFJFRQorICAgICAgfHwgIUNMQVNTX1RZ UEVfUCAoZGVjbF9zY29wZSkpCisgICAgcmV0dXJuIGRlY2w7CisKKyAgZm9y IChmaWVsZCA9IFRZUEVfRklFTERTIChkZWNsX3Njb3BlKTsKKyAgICAgICBm aWVsZDsKKyAgICAgICBmaWVsZCA9IFRSRUVfQ0hBSU4gKGZpZWxkKSkKKyAg ICB7CisgICAgICBpZiAoVFJFRV9DT0RFIChmaWVsZCkgPT0gVVNJTkdfREVD TCkKKwl7CisJICB0cmVlIHVzaW5nX2RlY2wgPSBVU0lOR19ERUNMX0RFQ0xT IChmaWVsZCk7CisJICB0cmVlIGZuOworCSAgZm9yIChmbiA9IGRlY2w7IGZu ICE9IE5VTExfVFJFRTsgZm4gPSBUUkVFX0NIQUlOIChmbikpCisJICAgIHsK KwkgICAgICBpZiAoc2FtZV90eXBlX3AgKCBUUkVFX1RZUEUgKFRSRUVfVkFM VUUgKGZuKSksCisJCQkJVFJFRV9UWVBFICh1c2luZ19kZWNsKSkpCisJCXsK KwkJICBkZWNsX2FmdGVyX3VzaW5nID0gdHJlZV9jb25zIChOVUxMX1RSRUUs CisJCQkJCQl1c2luZ19kZWNsLAorCQkJCQkJZGVjbF9hZnRlcl91c2luZyk7 CisJCSAgKysgY2FuZGlkYXRlczsKKwkJICBicmVhazsKKwkJfQorCSAgICB9 CisJfQorICAgIH0KKworICBpZiAoY2FuZGlkYXRlcyA9PSAxKQorICAgICAg ZGVjbCA9IFRSRUVfVkFMVUUgKGRlY2xfYWZ0ZXJfdXNpbmcpOworICByZXR1 cm4gZGVjbDsKK30KKworCiAjaW5jbHVkZSAiZ3QtY3AtbmFtZS1sb29rdXAu aCIKSW5kZXg6IGdjYy9kYnhvdXQuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnY2MvZGJ4b3V0LmMJKHJldmlzaW9uIDE1ODU3MikKKysrIGdjYy9k YnhvdXQuYwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qIE91 dHB1dCBkYngtZm9ybWF0IHN5bWJvbCB0YWJsZSBpbmZvcm1hdGlvbiBmcm9t IEdOVSBjb21waWxlci4KICAgIENvcHlyaWdodCAoQykgMTk4NywgMTk4OCwg MTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwKLSAg IDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIw MDYsIDIwMDcsIDIwMDgsIDIwMDkKKyAgIDE5OTksIDIwMDAsIDIwMDEsIDIw MDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDks IDIwMTAKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBU aGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCkBAIC0xNDMxLDYgKzE0MzEsOCBA QCBkYnhvdXRfdHlwZV9maWVsZHMgKHRyZWUgdHlwZSkKICAgICAgIGlmIChU UkVFX0NPREUgKHRlbSkgPT0gVFlQRV9ERUNMCiAJICAvKiBPbWl0IGhlcmUg dGhlIG5hbWVsZXNzIGZpZWxkcyB0aGF0IGFyZSB1c2VkIHRvIHNraXAgYml0 cy4gICovCiAJICB8fCBERUNMX0lHTk9SRURfUCAodGVtKQorCSAgLyogT21p dCBVU0lOR19ERUNMICovCisJICB8fCBUUkVFX0NPREUgKHRlbSkgPT0gVVNJ TkdfREVDTAogCSAgLyogT21pdCBmaWVsZHMgd2hvc2UgcG9zaXRpb24gb3Ig c2l6ZSBhcmUgdmFyaWFibGUgb3IgdG9vIGxhcmdlIHRvCiAJICAgICByZXBy ZXNlbnQuICAqLwogCSAgfHwgKFRSRUVfQ09ERSAodGVtKSA9PSBGSUVMRF9E RUNMCg== --0016364d27412602b9048656c1c1--