From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9543 invoked by alias); 18 Aug 2010 19:05:48 -0000 Received: (qmail 9531 invoked by uid 22791); 18 Aug 2010 19:05:47 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from mail-qy0-f182.google.com (HELO mail-qy0-f182.google.com) (209.85.216.182) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 18 Aug 2010 19:05:41 +0000 Received: by qyk4 with SMTP id 4so1051621qyk.20 for ; Wed, 18 Aug 2010 12:05:38 -0700 (PDT) MIME-Version: 1.0 Received: by 10.224.37.19 with SMTP id v19mr5757581qad.15.1282158338682; Wed, 18 Aug 2010 12:05:38 -0700 (PDT) Received: by 10.229.231.201 with HTTP; Wed, 18 Aug 2010 12:05:38 -0700 (PDT) In-Reply-To: References: <4C0EB10C.3050701@redhat.com> <4C1AD953.3020008@redhat.com> Date: Wed, 18 Aug 2010 19:29:00 -0000 Message-ID: Subject: Re: [Patch] PR c++/26256 From: =?ISO-8859-1?Q?Fabien_Ch=EAne?= To: Jason Merrill Cc: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary=001517503cc852b006048e1dc0c1 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-08/txt/msg01390.txt.bz2 --001517503cc852b006048e1dc0c1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2626 2010/7/30 Fabien Ch=EAne : > Hi Jason, Hi All, > > 2010/6/18 Jason Merrill : >> On 06/16/2010 04:30 PM, Fabien Ch=EAne wrote: >>> >>> @@ -2703,6 +2703,8 @@ count_fields (tree fields) >>> =A0 int n_fields =3D 0; >>> =A0 for (x =3D fields; x; x =3D TREE_CHAIN (x)) >>> =A0 =A0 { >>> + =A0 =A0 =A0if (TREE_CODE (x) =3D=3D USING_DECL) >>> + =A0 =A0 =A0 continue; >>> @@ -2720,6 +2722,9 @@ add_fields_to_record_type (tree fields, >>> =A0 tree x; >>> =A0 for (x =3D fields; x; x =3D TREE_CHAIN (x)) >>> =A0 =A0 { >>> + =A0 =A0 =A0if (TREE_CODE (x) =3D=3D USING_DECL) >>> + =A0 =A0 =A0 continue; >> >> I don't think we want to skip USING_DECLs here; we aren't only counting >> FIELD_DECLs, we count TYPE_DECLs and CONST_DECLs, too. > > I will try to change that, but for now, it ICEs if we do not skip USING_D= ECLs. > > I'm close to the result, but I'm not sure about how should behave the > compiler with the following examples. > I think that in both cases, the using declaration is invalid, can you > confirm that ? I've treated all of them as invalid. Here is an updated patch. The fight against the testsuite makes me go a little bit beyond the scope of PR 26256. Tested x86_64-unknown-linux-gnu with no regressions. Is it ok for trunk ? gcc/ChangeLog 2010-08-18 Fabien Ch=EAne PR c++/26256 * dbxout.c (dbxout_type_fields): Ignore using declarations. gcc/testsuite/ChangeLog 2010-08-18 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/lookup/using28.C: New. * g++.dg/lookup/using29.C: New. * g++.dg/debug/using4.C: New. * g++.dg/debug/using5.C: New. * g++.old-deja/g++.other/using1.C: Adjust. * g++.old-deja/g++.other/using8.C: Likewise. * g++.dg/template/using2.C: Likewise. gcc/cp/ChangeLog 2010-08-18 Fabien Ch=EAne PR c++/26256 * search.c (lookup_field_1): Get rid of the comment saying that USING_DECL should not be returned, and actually return USING_DECL if appropriate. * semantics.c (finish_member_declaration): Store USING_DECLs with TYPE_DECLs. * typeck.c (build_class_member_access_expr): Handle USING_DECLs. * class.c (check_field_decls): Keep using declarations and diagnose conflicting declarations involving USING_DECLs. Call diagnose_conflicting_using_decls. (diagnose_conflicting_using_decls): New function. (handle_using_decl): Tweak to make things work for g++.old-deja/g++.other/using8.C. --=20 Fabien --001517503cc852b006048e1dc0c1 Content-Type: application/octet-stream; name="pr26256.patch" Content-Disposition: attachment; filename="pr26256.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gd0p2gkb0 Content-length: 19382 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5vdGhlci91 c2luZzEuQwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1 aXRlL2crKy5vbGQtZGVqYS9nKysub3RoZXIvdXNpbmcxLkMJKHJldmlzaW9u IDE2MDg1NykKKysrIGdjYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5v dGhlci91c2luZzEuQwkod29ya2luZyBjb3B5KQpAQCAtMTksOSArMTksOSBA QCBwdWJsaWM6CiBjbGFzcyBEMiA6IHB1YmxpYyBCIHsgLy8geyBkZy1lcnJv ciAiIiB9IGNvbmZsaWN0aW5nIGFjY2VzcyBzcGVjaWZpY2F0aW9ucwogcHVi bGljOgogICB1c2luZyBCOjphOwotICB1c2luZyBCOjpiOworICB1c2luZyBC OjpiOyAvLyB7IGRnLW1lc3NhZ2UgIiIgfSBjb25mbGljdGluZyBkZWNsYXJh dGlvbgogCiBwcml2YXRlOgotICB1c2luZyBCOjpiOyAKKyAgdXNpbmcgQjo6 YjsgLy8geyBkZy1lcnJvciAiIiB9IGNvbmZsaWN0cwogfTsKICAKSW5kZXg6 IGdjYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5vdGhlci91c2luZzgu Qwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2cr Ky5vbGQtZGVqYS9nKysub3RoZXIvdXNpbmc4LkMJKHJldmlzaW9uIDE2MDg1 NykKKysrIGdjYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5vdGhlci91 c2luZzguQwkod29ya2luZyBjb3B5KQpAQCAtMTQsMTAgKzE0LDYgQEAgc3Ry dWN0IEEKICAgdm9pZCBEICgpOwogfTsKIAotc3RydWN0IEEyIHsKLSAgdHlw ZWRlZiBpbnQgZjsKLX07Ci0KIHN0cnVjdCBCIDogQSAKIHsKICAgdXNpbmcg QTo6ZjsKSW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRnL2RlYnVnL3VzaW5n NC5DCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUv ZysrLmRnL2RlYnVnL3VzaW5nNC5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvZGVidWcvdXNpbmc0LkMJKHJldmlzaW9uIDApCkBA IC0wLDAgKzEsMjQgQEAKKy8vIFBSIGMrKy8yNjI1NgorLy8geyBkZy1kbyBj b21waWxlIH0KKworc3RydWN0IEEKK3sKKyAgICB0eXBlZGVmIGNoYXIgdHlw ZTsKK307CisKK3N0cnVjdCBCCit7CisgICAgdHlwZWRlZiBpbnQgdHlwZTsK K307CisKK3N0cnVjdCBDIDogQSwgQgoreworICAgIHVzaW5nIEE6OnR5cGU7 CisgICAgdHlwZSBmICh0eXBlKTsKK307CisKK0M6OnR5cGUgQzo6ZiggdHlw ZSApIAoreworICAgIHR5cGUgYyA9ICdlJzsKKyAgICByZXR1cm4gYzsKK30K SW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRnL2RlYnVnL3VzaW5nNS5DCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRn L2RlYnVnL3VzaW5nNS5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvZGVidWcvdXNpbmc1LkMJKHJldmlzaW9uIDApCkBAIC0wLDAg KzEsMjMgQEAKKy8vIFBSIGMrKy8yNjI1NgorLy8geyBkZy1kbyBjb21waWxl IH0KKworc3RydWN0IEEKK3sKKyAgICBpbnQgaTsKK307CisKK3N0cnVjdCBC Cit7CisgICAgaW50IGk7Cit9OworCitzdHJ1Y3QgQyA6IEEsIEIKK3sKKyAg ICB1c2luZyBCOjppOworICAgIGludCBmICgpOworfTsKKworaW50IEM6OmYo KSAKK3sKKyAgICByZXR1cm4gaTsKK30KSW5kZXg6IGdjYy90ZXN0c3VpdGUv ZysrLmRnL2xvb2t1cC91c2luZzI0LkMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMjQuQwko cmV2aXNpb24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91 c2luZzI0LkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKy8vIFBS IGMrKy8yNjI1NgorLy8geyBkZy1kbyBjb21waWxlIH0KKworc3RydWN0IEEg eyBpbnQgbmV4dDsgfTsKK3N0cnVjdCBCIHsgaW50IG5leHQ7IH07CitzdHJ1 Y3QgQyA6IEIgeyB1c2luZyBCOjpuZXh0OyB9OworCitzdHJ1Y3QgRCA6IEEs IEMKK3sKKyAgIHVzaW5nIEM6Om5leHQ7CisgICB2b2lkIGYoKSB7IG5leHQg PSAxOyB9Cit9OwpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3Vw L3VzaW5nMjguQwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVz dHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmcyOC5DCShyZXZpc2lvbiAwKQor KysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3VzaW5nMjguQwkocmV2 aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorLy8gUFIgYysrLzI2MjU2Cisv LyB7IGRnLWRvIGNvbXBpbGUgfQorCitzdHJ1Y3QgQSB7IGludCBmOyB9Owor c3RydWN0IEIgeyBpbnQgZjsgfTsKK3N0cnVjdCBDIDogQSwgQiB7IHVzaW5n IEI6OmY7IH07CisKK3N0cnVjdCBEIDogQworeworICAgIHZvaWQgZygpIHsg ZiA9IDE7IH0KK307CkluZGV4OiBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29r dXAvdXNpbmcyNS5DCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90 ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91c2luZzI1LkMJKHJldmlzaW9uIDAp CisrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmcyNS5DCShy ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBACisvLyBQUiBjKysvMjYyNTYK Ky8vIHsgZGctZG8gcnVuIH0KKworc3RydWN0IEEgCit7CisgICAgaW50IG5l eHQ7IAorfTsKKworc3RydWN0IEIgCit7CisgICAgaW50IG5leHQ7IAorfTsK Kworc3RydWN0IEMgOiBwdWJsaWMgQSwgcHVibGljIEIgCit7CisgICAgdXNp bmcgQTo6bmV4dDsgCit9OworCit2b2lkIGZvbyhDJiBjKSB7IGMubmV4dCA9 IDQyOyB9CisKK2ludCBtYWluKCkKK3sKKyAgICBDIGM7CisgICAgZm9vIChj KTsKKyAgICBjLkI6Om5leHQgPSAxMjsKKyAgICBpZiAoYy5uZXh0ICE9IDQy IHx8IGMuQTo6bmV4dCAhPSA0MiB8fCBjLkI6Om5leHQgIT0gMTIpCisgICAg CV9fYnVpbHRpbl9hYm9ydCgpOworfQpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvbG9va3VwL3VzaW5nMjkuQwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmcyOS5DCShy ZXZpc2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3VwL3Vz aW5nMjkuQwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAorLy8geyBk Zy1kbyBjb21waWxlIH0KKworc3RydWN0IEEgCit7CisgIGludCBpOworfTsK Kworc3RydWN0IEIKK3sKKyAgaW50IGk7Cit9OworCisKK3N0cnVjdCBDIDog QSwgQgoreworICB1c2luZyBBOjppOyAvLyB7IGRnLW1lc3NhZ2UgImNvbmZs aWN0aW5nIHVzaW5nIGRlY2xhcmF0aW9uIiB9CisgIHVzaW5nIEI6Omk7IC8v IHsgZGctZXJyb3IgInVzaW5nIGRlY2xhcmF0aW9uIiB9Cit9OworCisKK3N0 cnVjdCBFCit7CisgIHR5cGVkZWYgaW50IHR5cGU7Cit9OworCitzdHJ1Y3Qg RgoreworICB0eXBlZGVmIGludCB0eXBlOworfTsKKworc3RydWN0IEcgOiBF LCBGCit7CisgIHVzaW5nIEU6OnR5cGU7IC8vIHsgZGctbWVzc2FnZSAiY29u ZmxpY3RpbmcgdXNpbmcgZGVjbGFyYXRpb24iIH0KKyAgdXNpbmcgRjo6dHlw ZTsgLy8geyBkZy1lcnJvciAidXNpbmcgZGVjbGFyYXRpb24iIH0KK307CisK Kworc3RydWN0IEgKK3sKKyAgdHlwZWRlZiBpbnQgdHlwZTsKK307CisKK3N0 cnVjdCBJIDogSAoreworICB0eXBlZGVmIGludCB0eXBlOyAvLyB7IGRnLW1l c3NhZ2UgImxvY2FsIG1lbWJlciIgfQorICB1c2luZyBIOjp0eXBlOyAvLyB7 IGRnLWVycm9yICJpbnZhbGlkIiB9Cit9OworCisKK3N0cnVjdCBJMiA6IEgK K3sKKyAgdXNpbmcgSDo6dHlwZTsgLy8geyBkZy1tZXNzYWdlICJjb25mbGlj dGluZyB1c2luZyBkZWNsYXJhdGlvbiIgfQorICB0eXBlZGVmIGludCB0eXBl OyAvLyB7IGRnLWVycm9yICJjb25mbGljdHMiIH0KK307CisKKworc3RydWN0 IEoKK3sKKyAgICBzdHJ1Y3QgdHlwZSB7fTsKK307CisKK3N0cnVjdCBLIDog SgoreworICAgIHN0cnVjdCB0eXBlIHt9OyAvLyB7IGRnLW1lc3NhZ2UgImxv Y2FsIG1lbWJlciIgfQorICAgIHVzaW5nIEo6OnR5cGU7IC8vIHsgZGctZXJy b3IgImludmFsaWQiIH0KK307CisKK3N0cnVjdCBMIDogSgoreworICAgIHVz aW5nIEo6OnR5cGU7IC8vIHsgZGctbWVzc2FnZSAiY29uZmxpY3RpbmcgdXNp bmcgZGVjbGFyYXRpb24iIH0KKyAgICBzdHJ1Y3QgdHlwZSB7fTsgLy8geyBk Zy1lcnJvciAiY29uZmxpY3RzIiB9Cit9OworCisKK3N0cnVjdCBNCit7Cisg IHR5cGVkZWYgaW50IHR5cGU7CisgIHN0cnVjdCB0eXBlMiB7fTsKK307CisK K3N0cnVjdCBOIDogTQoreworICB1c2luZyBNOjp0eXBlOyAvLyB7IGRnLW1l c3NhZ2UgImNvbmZsaWN0aW5nIHVzaW5nIGRlY2xhcmF0aW9uIiB9CisgIHVz aW5nIE06OnR5cGU7IC8vIHsgZGctZXJyb3IgImNvbmZsaWN0cyIgfQorICB1 c2luZyBNOjp0eXBlMjsgLy8geyBkZy1tZXNzYWdlICJjb25mbGljdGluZyB1 c2luZyBkZWNsYXJhdGlvbiIgfQorICB1c2luZyBNOjp0eXBlMjsgLy8geyBk Zy1lcnJvciAiY29uZmxpY3RzIiB9Cit9OwpJbmRleDogZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvbG9va3VwL3VzaW5nMjYuQwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29rdXAvdXNpbmcyNi5D CShyZXZpc2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9va3Vw L3VzaW5nMjYuQwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorLy8g UFIgYysrLzI2MjU2CisvLyB7IGRnLWRvIGNvbXBpbGUgfQorCitzdHJ1Y3Qg QSAKK3sKKyAgICBkb3VibGUgbmV4dDsgCit9OworCitzdHJ1Y3QgQiAKK3sK K3ByaXZhdGU6CisgICAgaW50IG5leHQ7IC8vIHsgZGctZXJyb3IgInByaXZh dGUiIH0KK307CisKK3N0cnVjdCBDCit7CisgICAgaW50IG5leHQ7Cit9Owor CitzdHJ1Y3QgRCA6IEEsIEIsIEMgLy8geyBkZy1lcnJvciAiY29udGV4dCIg fQoreworICAgIHVzaW5nIEI6Om5leHQ7CisgICAgdm9pZCBmKCkKKyAgICB7 CisJbmV4dCA9IDEyOworICAgIH0KK307CkluZGV4OiBnY2MvdGVzdHN1aXRl L2crKy5kZy9sb29rdXAvdXNpbmcyMy5DCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91c2luZzIzLkMJ KHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9sb29rdXAv dXNpbmcyMy5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACisvLyBQ UiBjKysvMjYyNTYKKy8vIHsgZGctZG8gY29tcGlsZSB9CisKK3N0cnVjdCBB Cit7Citwcml2YXRlOgorICAgIHR5cGVkZWYgaW50IHR5cGU7IC8vIHsgZGct ZXJyb3IgInByaXZhdGUiIH0KK307CisKK3N0cnVjdCBCCit7CisgICAgdHlw ZWRlZiBkb3VibGUgdHlwZTsKK307CisKK3N0cnVjdCBDIDogQSwgQiAvLyB7 IGRnLWVycm9yICJjb250ZXh0IiB9Cit7CisgICAgdXNpbmcgQTo6dHlwZTsg CisgICAgdHlwZSBkOyAvLyB7IGRnLWVycm9yICJjb250ZXh0IiB9Cit9Owor CisKSW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91c2luZzI3 LkMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvbG9va3VwL3VzaW5nMjcuQwkocmV2aXNpb24gMCkKKysrIGdjYy90 ZXN0c3VpdGUvZysrLmRnL2xvb2t1cC91c2luZzI3LkMJKHJldmlzaW9uIDAp CkBAIC0wLDAgKzEsNDkgQEAKKy8vIFBSIGMrKy8yNjI1NgorLy8geyBkZy1k byBydW4gfQorCitzdHJ1Y3QgQQoreworICAgIHR5cGVkZWYgaW50IHR5cGU7 Cit9OworCitzdHJ1Y3QgQgoreworICAgIHR5cGVkZWYgZG91YmxlIHR5cGU7 Cit9OworCitzdHJ1Y3QgQyA6IEEsIEIKK3sKKyAgICB1c2luZyBBOjp0eXBl OworICAgIHR5cGUgZDsKKworICAgIHZvaWQgZigpCisgICAgeworCXR5cGUg ZTsKKwlpZiAoc2l6ZW9mICh0eXBlKSAhPSBzaXplb2YgKEE6OnR5cGUpKQor CSAgICBfX2J1aWx0aW5fYWJvcnQoKTsKKyAgICB9CisKKyAgICB2b2lkIGco KTsKK307CisKK3ZvaWQgQzo6ZygpCit7CisgICAgdHlwZSB4OworICAgIGlm IChzaXplb2YgKHR5cGUpICE9IHNpemVvZiAoQTo6dHlwZSkpCisgICAgCV9f YnVpbHRpbl9hYm9ydCgpOworfQorCitpbnQgbWFpbiAoKQoreworICAgIGlm IChzaXplb2YgKEM6OnR5cGUpICE9IHNpemVvZiAoQTo6dHlwZSkpCisgICAg CV9fYnVpbHRpbl9hYm9ydCgpOworCisgICAgaWYgKHNpemVvZiAoQzo6ZCkg IT0gc2l6ZW9mIChBOjp0eXBlKSkKKyAgICAJX19idWlsdGluX2Fib3J0KCk7 CisKKyAgICBDOjp0eXBlIHg7CisgICAgQyBjOworICAgIGMuZigpOworICAg IGMuZygpOworfQorCkluZGV4OiBnY2MvdGVzdHN1aXRlL2crKy5kZy90ZW1w bGF0ZS91c2luZzIuQwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv dGVzdHN1aXRlL2crKy5kZy90ZW1wbGF0ZS91c2luZzIuQwkocmV2aXNpb24g MTYwODU3KQorKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvdGVtcGxhdGUvdXNp bmcyLkMJKHdvcmtpbmcgY29weSkKQEAgLTcsMjQgKzcsMjUgQEAKIAogdGVt cGxhdGUgPGNsYXNzIFQ+CiBzdHJ1Y3QgRm9vIHsKLSAgaW50IGk7IC8vIHsg ZGctZXJyb3IgIkZvbyIgfQorICBpbnQgaTsKIH07CiAKIHN0cnVjdCBCYXog CiB7Ci0gIGludCBpOyAvLyB7IGRnLWVycm9yICJCYXoiIH0KKyAgaW50IGk7 CiB9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBCYXIgOiBwdWJs aWMgRm9vPFQ+LCBCYXogewotICB1c2luZyBGb288VD46Omk7Ci0gIHVzaW5n IEJhejo6aTsKK3N0cnVjdCBCYXIgOiBwdWJsaWMgRm9vPFQ+LCBCYXogCit7 CisgIHVzaW5nIEZvbzxUPjo6aTsgLy8geyBkZy1tZXNzYWdlICJjb25mbGlj dGluZyB1c2luZyBkZWNsYXJhdGlvbiIgfSAKKyAgdXNpbmcgQmF6OjppOyAv LyB7IGRnLWVycm9yICJjb25mbGljdHMiIH0gCiAKLSAgaW50IGZvbyAoKSB7 IHJldHVybiBpOyB9IC8vIHsgZGctZXJyb3IgInJlcXVlc3QgZm9yIG1lbWJl ciIgfQorICBpbnQgZm9vICgpIHsgcmV0dXJuIGk7IH0KIH07CiAKIHZvaWQg Zm9vIChCYXI8aW50PiAmYmFyKQogewotICBiYXIuZm9vKCk7IC8vIHsgZGct bWVzc2FnZSAiaW5zdGFudGlhdGVkIiB9CisgICAgYmFyLmZvbygpOwogfQog CkluZGV4OiBnY2MvY3AvdHlwZWNrLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZ2NjL2NwL3R5cGVjay5jCShyZXZpc2lvbiAxNjA4NTcpCisrKyBn Y2MvY3AvdHlwZWNrLmMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA CiAvKiBCdWlsZCBleHByZXNzaW9ucyB3aXRoIHR5cGUgY2hlY2tpbmcgZm9y IEMrKyBjb21waWxlci4KICAgIENvcHlyaWdodCAoQykgMTk4NywgMTk4OCwg MTk4OSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5 OCwKLSAgIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIw MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkKKyAgIDE5OTksIDIwMDAsIDIw MDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs IDIwMDksIDIwMTAKICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgogICAgSGFja2VkIGJ5IE1pY2hhZWwgVGllbWFubiAodGllbWFubkBjeWdu dXMuY29tKQogCkBAIC0yNDAwLDYgKzI0MDAsMTEgQEAgYnVpbGRfY2xhc3Nf bWVtYmVyX2FjY2Vzc19leHByICh0cmVlIG9iagogCXJlc3VsdCA9IGJ1aWxk MiAoQ09NUE9VTkRfRVhQUiwgVFJFRV9UWVBFIChyZXN1bHQpLAogCQkJIG9i amVjdCwgcmVzdWx0KTsKICAgICB9CisgIGVsc2UgaWYgKFRSRUVfQ09ERSAo bWVtYmVyKSA9PSBVU0lOR19ERUNMKQorICAgICAgIHJlc3VsdCA9IGJ1aWxk X2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwciAob2JqZWN0LAorCQkJCQkJVVNJ TkdfREVDTF9ERUNMUyAobWVtYmVyKSwKKwkJCQkJCWFjY2Vzc19wYXRoLCBw cmVzZXJ2ZV9yZWZlcmVuY2UsCisJCQkJCQljb21wbGFpbik7CiAgIGVsc2UK ICAgICB7CiAgICAgICBpZiAoY29tcGxhaW4gJiB0Zl9lcnJvcikKSW5kZXg6 IGdjYy9jcC9jbGFzcy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdj Yy9jcC9jbGFzcy5jCShyZXZpc2lvbiAxNjA4NTcpCisrKyBnY2MvY3AvY2xh c3MuYwkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3IEBAIHN0YXRp YyBib29sIGJhc2VfZGVyaXZlZF9mcm9tICh0cmVlLCB0cmUKIHN0YXRpYyBp bnQgZW1wdHlfYmFzZV9hdF9ub256ZXJvX29mZnNldF9wICh0cmVlLCB0cmVl LCBzcGxheV90cmVlKTsKIHN0YXRpYyB0cmVlIGVuZF9vZl9iYXNlICh0cmVl KTsKIHN0YXRpYyB0cmVlIGdldF92Y2FsbF9pbmRleCAodHJlZSwgdHJlZSk7 CitzdGF0aWMgYm9vbCBkaWFnbm9zZV9jb25mbGljdGluZ191c2luZ19kZWNs cyAodHJlZSwgdHJlZSwgdHJlZSk7CiAKIC8qIFZhcmlhYmxlcyBzaGFyZWQg YmV0d2VlbiBjbGFzcy5jIGFuZCBjYWxsLmMuICAqLwogCkBAIC0xMjIyLDcg KzEyMjMsOCBAQCBoYW5kbGVfdXNpbmdfZGVjbCAodHJlZSB1c2luZ19kZWNs LCB0cmVlCiAJICByZXR1cm47CiAJfQogICAgIH0KLSAgZWxzZSBpZiAoIURF Q0xfQVJUSUZJQ0lBTCAob2xkX3ZhbHVlKSkKKyAgZWxzZSBpZiAoIURFQ0xf QVJUSUZJQ0lBTCAob2xkX3ZhbHVlKQorCSAgIHx8IFRSRUVfQ09ERSAoZGVj bCkgIT0gRlVOQ1RJT05fREVDTCkKICAgICB7CiAgICAgICBlcnJvciAoIiVx K0QgaW52YWxpZCBpbiAlcSNUIiwgdXNpbmdfZGVjbCwgdCk7CiAgICAgICBl cnJvciAoIiAgYmVjYXVzZSBvZiBsb2NhbCBtZW1iZXIgJXErI0Qgd2l0aCBz YW1lIG5hbWUiLCBvbGRfdmFsdWUpOwpAQCAtMjg3Myw2ICsyODc1LDI5IEBA IGNoZWNrX2ZpZWxkX2RlY2wgKHRyZWUgZmllbGQsCiAgICAgfQogfQogCisv KiBJc3N1ZSBhbiBlcnJvciBpZiBVU0lOR19ERUNMIGNvbmZsaWN0cyB3aXRo IGEgREVDTCBhbHJlYWR5IGluCisgICBzY29wZS4gSWYgUkVBTF9ERUNMIGlz IGEgdXNpbmcgZGVjbGFyYXRpb24sIHRoZW4gREVDTCA9PQorICAgVVNJTkdf REVDTF9ERUNMUyAoUkVBTF9ERUNMKTsgb3RoZXJ3aXNlLCBERUNMIGFuZCBV U0lOR19ERUNMX0RFQ0xTCisgICBhcmUgdGhlIHNhbWUuICAqLworc3RhdGlj IGJvb2wKK2RpYWdub3NlX2NvbmZsaWN0aW5nX3VzaW5nX2RlY2xzICh0cmVl IGRlY2wsIHRyZWUgcmVhbF9kZWNsLCB0cmVlIHVzaW5nX2RlY2wpCit7Cisg IGlmICgoVFJFRV9DT0RFIChkZWNsKSA9PSBGSUVMRF9ERUNMCisgICAgICAg fHwgVFJFRV9DT0RFIChkZWNsKSA9PSBUWVBFX0RFQ0wpCisgICAgICAmJiBU UkVFX0NPREUgKFVTSU5HX0RFQ0xfREVDTFMgKHVzaW5nX2RlY2wpKSAhPSBG VU5DVElPTl9ERUNMCisgICAgICAmJiBERUNMX05BTUUgKGRlY2wpID09IERF Q0xfTkFNRSAodXNpbmdfZGVjbCkpCisgICAgeworICAgICAgZXJyb3JfYXQg KERFQ0xfU09VUkNFX0xPQ0FUSU9OIChyZWFsX2RlY2wpLAorCQkiZGVjbGFy YXRpb24gJXFEIGNvbmZsaWN0cyB3aXRoIGEgdXNpbmcgZGVjbGFyYXRpb24g IgorCQkiYWxyZWFkeSBpbiBzY29wZSIsIHJlYWxfZGVjbCk7CisgICAgICBp bmZvcm0gKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh1c2luZ19kZWNsKSwKKwkg ICAgICAiY29uZmxpY3RpbmcgdXNpbmcgZGVjbGFyYXRpb24gJXFEIiwgdXNp bmdfZGVjbCk7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgIHJldHVy biBmYWxzZTsKK30KKworCiAvKiBDaGVjayB0aGUgZGF0YSBtZW1iZXJzIChi b3RoIHN0YXRpYyBhbmQgbm9uLXN0YXRpYyksIGNsYXNzLXNjb3BlZAogICAg dHlwZWRlZnMsIGV0Yy4sIGFwcGVhcmluZyBpbiB0aGUgZGVjbGFyYXRpb24g b2YgVC4gIElzc3VlCiAgICBhcHByb3ByaWF0ZSBkaWFnbm9zdGljcy4gIFNl dHMgQUNDRVNTX0RFQ0xTIHRvIGEgbGlzdCAoaW4KQEAgLTI5MjgsMTUgKzI5 NTMsMTcgQEAgY2hlY2tfZmllbGRfZGVjbHMgKHRyZWUgdCwgdHJlZSAqYWNj ZXNzXwogCiAgICAgICBpZiAoVFJFRV9DT0RFICh4KSA9PSBVU0lOR19ERUNM KQogCXsKLQkgIC8qIFBydW5lIHRoZSBhY2Nlc3MgZGVjbGFyYXRpb24gZnJv bSB0aGUgbGlzdCBvZiBmaWVsZHMuICAqLwotCSAgKmZpZWxkID0gVFJFRV9D SEFJTiAoeCk7CisJICB0cmVlIGY7CisJICBmb3IgKGYgPSB4OyBmICE9IE5V TExfVFJFRTsgZiA9IFRSRUVfQ0hBSU4gKGYpKQorCSAgICB7CisJICAgICAg aWYgKGYgIT0geAorCQkgICYmICFkaWFnbm9zZV9jb25mbGljdGluZ191c2lu Z19kZWNscyAoZiwgZiwgeCkKKwkJICAmJiBUUkVFX0NPREUgKGYpID09IFVT SU5HX0RFQ0wpCisJCWRpYWdub3NlX2NvbmZsaWN0aW5nX3VzaW5nX2RlY2xz IChVU0lOR19ERUNMX0RFQ0xTIChmKSwgZiwgeCk7CisJICAgIH0KIAogCSAg LyogU2F2ZSB0aGUgYWNjZXNzIGRlY2xhcmF0aW9ucyBmb3Igb3VyIGNhbGxl ci4gICovCiAJICAqYWNjZXNzX2RlY2xzID0gdHJlZV9jb25zIChOVUxMX1RS RUUsIHgsICphY2Nlc3NfZGVjbHMpOwotCi0JICAvKiBTaW5jZSB3ZSd2ZSBy ZXNldCAqRklFTEQgdGhlcmUncyBubyByZWFzb24gdG8gc2tpcCB0byB0aGUK LQkgICAgIG5leHQgZmllbGQuICAqLwotCSAgbmV4dCA9IGZpZWxkOwogCSAg Y29udGludWU7CiAJfQogCkluZGV4OiBnY2MvY3Avc2VtYW50aWNzLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2NwL3NlbWFudGljcy5jCShy ZXZpc2lvbiAxNjA4NTcpCisrKyBnY2MvY3Avc2VtYW50aWNzLmMJKHdvcmtp bmcgY29weSkKQEAgLTI0ODksNyArMjQ4OSw4IEBAIGZpbmlzaF9tZW1iZXJf ZGVjbGFyYXRpb24gKHRyZWUgZGVjbCkKIAkgYWxzbyBrZWVwIGEgcG9pbnRl ciB0byB0aGUgY29ycmVjdCBpbnNlcnRpb24gcG9pbnRzIGluIHRoZQogCSBs aXN0LikgICovCiAKLSAgICAgIGlmIChUUkVFX0NPREUgKGRlY2wpID09IFRZ UEVfREVDTCkKKyAgICAgIGlmIChUUkVFX0NPREUgKGRlY2wpID09IFRZUEVf REVDTAorCSAgfHwgVFJFRV9DT0RFIChkZWNsKSA9PSBVU0lOR19ERUNMKQog CVRZUEVfRklFTERTIChjdXJyZW50X2NsYXNzX3R5cGUpCiAJICA9IGNoYWlu b24gKFRZUEVfRklFTERTIChjdXJyZW50X2NsYXNzX3R5cGUpLCBkZWNsKTsK ICAgICAgIGVsc2UKSW5kZXg6IGdjYy9jcC9zZWFyY2guYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBnY2MvY3Avc2VhcmNoLmMJKHJldmlzaW9uIDE2 MDg1NykKKysrIGdjYy9jcC9zZWFyY2guYwkod29ya2luZyBjb3B5KQpAQCAt MSw3ICsxLDcgQEAKIC8qIEJyZWFkdGgtZmlyc3QgYW5kIGRlcHRoLWZpcnN0 IHJvdXRpbmVzIGZvcgogICAgc2VhcmNoaW5nIG11bHRpcGxlLWluaGVyaXRh bmNlIGxhdHRpY2UgZm9yIEdOVSBDKysuCiAgICBDb3B5cmlnaHQgKEMpIDE5 ODcsIDE5ODksIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcs IDE5OTgsCi0gICAxOTk5LCAyMDAwLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1 LCAyMDA3LCAyMDA4LCAyMDA5CisgICAxOTk5LCAyMDAwLCAyMDAyLCAyMDAz LCAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwCiAgICBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgIENvbnRyaWJ1dGVkIGJ5 IE1pY2hhZWwgVGllbWFubiAodGllbWFubkBjeWdudXMuY29tKQogCkBAIC00 NjAsMTkgKzQ2MCwxOCBAQCBsb29rdXBfZmllbGRfMSAodHJlZSB0eXBlLCB0 cmVlIG5hbWUsIGJvCiAJICBpZiAodGVtcCkKIAkgICAgcmV0dXJuIHRlbXA7 CiAJfQorCiAgICAgICBpZiAoVFJFRV9DT0RFIChmaWVsZCkgPT0gVVNJTkdf REVDTCkKIAl7Ci0JICAvKiBXZSBnZW5lcmFsbHkgdHJlYXQgY2xhc3Mtc2Nv cGUgdXNpbmctZGVjbGFyYXRpb25zIGFzCi0JICAgICBBUk0tc3R5bGUgYWNj ZXNzIHNwZWNpZmljYXRpb25zLCBiZWNhdXNlIHN1cHBvcnQgZm9yIHRoZQot CSAgICAgSVNPIHNlbWFudGljcyBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQu ICBTbywgaW4gZ2VuZXJhbCwKLQkgICAgIHRoZXJlJ3Mgbm8gcmVhc29uIHRv IHJldHVybiBhIFVTSU5HX0RFQ0wsIGFuZCB0aGUgcmVzdCBvZgotCSAgICAg dGhlIGNvbXBpbGVyIGNhbm5vdCBoYW5kbGUgdGhhdC4gIE9uY2UgdGhlIGNs YXNzIGlzCi0JICAgICBkZWZpbmVkLCBVU0lOR19ERUNMcyBhcmUgcHVyZ2Vk IGZyb20gVFlQRV9GSUVMRFM7IHNlZQotCSAgICAgaGFuZGxlX3VzaW5nX2Rl Y2wuICBIb3dldmVyLCB3ZSBtYWtlIHNwZWNpYWwgZWZmb3J0cyB0bwotCSAg ICAgbWFrZSB1c2luZy1kZWNsYXJhdGlvbnMgaW4gY2xhc3MgdGVtcGxhdGVz IGFuZCBjbGFzcwotCSAgICAgdGVtcGxhdGUgcGFydGlhbCBzcGVjaWFsaXph dGlvbnMgd29yayBjb3JyZWN0bHkuICAqLwogCSAgaWYgKCFERUNMX0RFUEVO REVOVF9QIChmaWVsZCkpCi0JICAgIGNvbnRpbnVlOworCSAgICB7CisJICAg ICAgdHJlZSB1c2luZ19kZWNsID0gVVNJTkdfREVDTF9ERUNMUyAoZmllbGQp OworCSAgICAgIGlmICgoVFJFRV9DT0RFICh1c2luZ19kZWNsKSA9PSBGSUVM RF9ERUNMCisJICAgICAgCSAgIHx8IFRSRUVfQ09ERSAodXNpbmdfZGVjbCkg PT0gVFlQRV9ERUNMKQorCSAgICAgIAkgICYmIERFQ0xfTkFNRSAodXNpbmdf ZGVjbCkgPT0gbmFtZSkKKwkJcmV0dXJuIHVzaW5nX2RlY2w7CisJICAgICAg Y29udGludWU7CisJICAgIH0KIAl9CiAKICAgICAgIGlmIChERUNMX05BTUUg KGZpZWxkKSA9PSBuYW1lCkluZGV4OiBnY2MvZGJ4b3V0LmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gZ2NjL2RieG91dC5jCShyZXZpc2lvbiAxNjA4 NTcpCisrKyBnY2MvZGJ4b3V0LmMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr MSw2IEBACiAvKiBPdXRwdXQgZGJ4LWZvcm1hdCBzeW1ib2wgdGFibGUgaW5m b3JtYXRpb24gZnJvbSBHTlUgY29tcGlsZXIuCiAgICBDb3B5cmlnaHQgKEMp IDE5ODcsIDE5ODgsIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5 OTcsIDE5OTgsCi0gICAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAy MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5CisgICAxOTk5LCAy MDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3 LCAyMDA4LCAyMDA5LCAyMDEwCiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KIAogVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgpAQCAtMTQz MSw2ICsxNDMxLDggQEAgZGJ4b3V0X3R5cGVfZmllbGRzICh0cmVlIHR5cGUp CiAgICAgICBpZiAoVFJFRV9DT0RFICh0ZW0pID09IFRZUEVfREVDTAogCSAg LyogT21pdCBoZXJlIHRoZSBuYW1lbGVzcyBmaWVsZHMgdGhhdCBhcmUgdXNl ZCB0byBza2lwIGJpdHMuICAqLwogCSAgfHwgREVDTF9JR05PUkVEX1AgKHRl bSkKKwkgIC8qIE9taXQgVVNJTkdfREVDTCAqLworCSAgfHwgVFJFRV9DT0RF ICh0ZW0pID49IExBU1RfQU5EX1VOVVNFRF9UUkVFX0NPREUKIAkgIC8qIE9t aXQgZmllbGRzIHdob3NlIHBvc2l0aW9uIG9yIHNpemUgYXJlIHZhcmlhYmxl IG9yIHRvbyBsYXJnZSB0bwogCSAgICAgcmVwcmVzZW50LiAgKi8KIAkgIHx8 IChUUkVFX0NPREUgKHRlbSkgPT0gRklFTERfREVDTAo= --001517503cc852b006048e1dc0c1--