From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22570 invoked by alias); 6 Jun 2011 19:21:18 -0000 Received: (qmail 22562 invoked by uid 22791); 6 Jun 2011 19:21:16 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.44.51) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 06 Jun 2011 19:21:01 +0000 Received: from kpbe14.cbf.corp.google.com (kpbe14.cbf.corp.google.com [172.25.105.78]) by smtp-out.google.com with ESMTP id p56JL0mf016854 for ; Mon, 6 Jun 2011 12:21:00 -0700 Received: from ywg4 (ywg4.prod.google.com [10.192.7.4]) by kpbe14.cbf.corp.google.com with ESMTP id p56JKrro012480 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Mon, 6 Jun 2011 12:20:59 -0700 Received: by ywg4 with SMTP id 4so2148338ywg.24 for ; Mon, 06 Jun 2011 12:20:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.151.42.9 with SMTP id u9mr4699210ybj.244.1307388058648; Mon, 06 Jun 2011 12:20:58 -0700 (PDT) Received: by 10.151.26.21 with HTTP; Mon, 6 Jun 2011 12:20:58 -0700 (PDT) In-Reply-To: References: Date: Mon, 06 Jun 2011 19:21:00 -0000 Message-ID: Subject: Re: -fdump-passes -fenable-xxx=func_name_list From: Xinliang David Li To: Richard Guenther Cc: GCC Patches Content-Type: multipart/mixed; boundary=001517512236d1c28c04a5100015 X-System-Of-Record: true 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: 2011-06/txt/msg00453.txt.bz2 --001517512236d1c28c04a5100015 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3807 Please take a look at the revised one. Thanks, David On Mon, Jun 6, 2011 at 4:22 AM, Richard Guenther wrote: > On Wed, Jun 1, 2011 at 7:24 PM, Xinliang David Li wr= ote: >> The attached is the split #1 patch that enhances -fenable/disable. >> >> Ok after testing? > > I expect the testcases will be quite fragile, so while I appreciate > test coverage for new options I think we should go without those > that involve any kind of UID. =A0Those which use assembler names > also will fail randomly dependent on how targets mangle their > functions - so I think we have to drop all testcases. > > Also > > +/* A helper function to determine if an identifier is valid to > + =A0 be an assembler name (better to use target specific hook). =A0*/ > + > +static bool > +is_valid_assembler_name (const char *str) > +{ > + =A0const char *p =3D str; > + =A0char c; > + > + =A0c =3D *p; > + =A0if (!((c >=3D 'a' && c <=3D 'z') > + =A0 =A0 =A0 =A0|| (c >=3D 'A' && c <=3D 'Z') > + =A0 =A0 =A0 =A0|| *p =3D=3D '_')) > + =A0 =A0return false; > + > + =A0p++; > + =A0while ((c =3D *p)) > + =A0 { > + =A0 =A0 if (!((c >=3D 'a' && c <=3D 'z') > + =A0 =A0 =A0 =A0 =A0 || (c >=3D 'A' && c <=3D 'Z') > + =A0 =A0 =A0 =A0 =A0 || (c >=3D '0' && c <=3D '9') > + =A0 =A0 =A0 =A0 =A0 || *p =3D=3D '_')) > + =A0 =A0 =A0 return false; > + =A0 =A0 p++; > + =A0 } > + > + =A0return true; > +} > > why all that complicated checks? =A0Why not just check for p[0] > in [^0-9] and re-structure the range parsing to switch between > UIDs and assembler-names that way? > > Thanks, > Richard. > >> Thanks, >> David >> >> On Wed, Jun 1, 2011 at 9:16 AM, Xinliang David Li w= rote: >>> On Wed, Jun 1, 2011 at 1:51 AM, Richard Guenther >>> wrote: >>>> On Wed, Jun 1, 2011 at 1:34 AM, Xinliang David Li = wrote: >>>>> The following patch implements the a new option that dumps gcc PASS >>>>> configuration. The sample output is attached. =A0There is one >>>>> limitation: some placeholder passes that are named with '*xxx' are >>>>> note registered thus they are not listed. They are not important as >>>>> they can not be turned on/off anyway. >>>>> >>>>> The patch also enhanced -fenable-xxx and -fdisable-xx to allow a list >>>>> of function assembler names to be specified. >>>>> >>>>> Ok for trunk? >>>> >>>> Please split the patch. >>>> >>>> I'm not too happy how you dump the pass configuration. =A0Why not simp= ly, >>>> at a _single_ place, walk the pass tree? =A0Instead of doing pieces of= it >>>> at pass execution time when it's not already dumped - that really looks >>>> gross. >>> >>> Yes, that was the original plan -- but it has problems >>> 1) the dumper needs to know the root pass lists -- which can change >>> frequently -- it can be a long term maintanance burden; >>> 2) the centralized dumper needs to be done after option processing >>> 3) not sure if gate functions have any side effects or have dependencie= s on cfun >>> >>> The proposed solutions IMHO is not that intrusive -- just three hooks >>> to do the dumping and tracking indentation. >>> >>>> >>>> The documentation should also link this option to the -fenable/disable >>>> options as obviously the pass names in that dump are those to be >>>> used for those flags (and not readily available anywhere else). >>> >>> Ok. >>> >>>> >>>> I also think that it would be way more useful to note in the individual >>>> dump files the functions (at the place they would usually appear) that >>>> have the pass explicitly enabled/disabled. >>> >>> Ok -- for ipa passes or tree/rtl passes where all functions are >>> explicitly disabled. >>> >>> Thanks, >>> >>> David >>> >>>> >>>> Richard. >>>> >>>>> Thanks, >>>>> >>>>> David >>>>> >>>> >>> >> > --001517512236d1c28c04a5100015 Content-Type: text/x-pascal; charset=US-ASCII; name="enable-disable-funcname2.p" Content-Disposition: attachment; filename="enable-disable-funcname2.p" Content-Transfer-Encoding: base64 X-Attachment-Id: f_golt2v430 Content-length: 17048 SW5kZXg6IGRvYy9pbnZva2UudGV4aQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBkb2MvaW52b2tlLnRleGkJKHJldmlzaW9uIDE3NDU0OSkKKysrIGRv Yy9pbnZva2UudGV4aQkod29ya2luZyBjb3B5KQpAQCAtNTA1NiwxMSArNTA1 NiwxMiBAQCBhcHBlbmRlZCB3aXRoIGEgc2VxdWVudGlhbCBudW1iZXIgc3Rh cnRpCiBEaXNhYmxlIHJ0bCBwYXNzIEB2YXJ7cGFzc30uICBAdmFye3Bhc3N9 IGlzIHRoZSBwYXNzIG5hbWUuICBJZiB0aGUgc2FtZSBwYXNzIGlzCiBzdGF0 aWNhbGx5IGludm9rZWQgaW4gdGhlIGNvbXBpbGVyIG11bHRpcGxlIHRpbWVz LCB0aGUgcGFzcyBuYW1lIHNob3VsZCBiZQogYXBwZW5kZWQgd2l0aCBhIHNl cXVlbnRpYWwgbnVtYmVyIHN0YXJ0aW5nIGZyb20gMS4gIEB2YXJ7cmFuZ2Ut bGlzdH0gaXMgYSBjb21tYQotc2VwZXJhdGVkIGxpc3Qgb2YgZnVuY3Rpb24g cmFuZ2VzLiAgRWFjaCByYW5nZSBpcyBhIG51bWJlciBwYWlyIHNlcGVyYXRl ZCBieSBhIGNvbG9uLgotVGhlIHJhbmdlIGlzIGluY2x1c2l2ZSBpbiBib3Ro IGVuZHMuICBJZiB0aGUgcmFuZ2UgaXMgdHJpdmlhbCwgdGhlIG51bWJlciBw YWlyIGNhbiBiZQotc2ltcGxpZmllZCBhIGEgc2luZ2xlIG51bWJlci4gIElm IHRoZSBmdW5jdGlvbidzIGNncmFwaCBub2RlJ3MgQHZhcnt1aWR9IGlzIGZh bGxpbmcKLXdpdGhpbiBvbmUgb2YgdGhlIHNwZWNpZmllZCByYW5nZXMsIHRo ZSBAdmFye3Bhc3N9IGlzIGRpc2FibGVkIGZvciB0aGF0IGZ1bmN0aW9uLgot VGhlIEB2YXJ7dWlkfSBpcyBzaG93biBpbiB0aGUgZnVuY3Rpb24gaGVhZGVy IG9mIGEgZHVtcCBmaWxlLgorc2VwZXJhdGVkIGxpc3Qgb2YgZnVuY3Rpb24g cmFuZ2VzIG9yIGFzc2VtYmxlciBuYW1lcy4gIEVhY2ggcmFuZ2UgaXMgYSBu dW1iZXIKK3BhaXIgc2VwZXJhdGVkIGJ5IGEgY29sb24uICBUaGUgcmFuZ2Ug aXMgaW5jbHVzaXZlIGluIGJvdGggZW5kcy4gIElmIHRoZSByYW5nZQoraXMg dHJpdmlhbCwgdGhlIG51bWJlciBwYWlyIGNhbiBiZSBzaW1wbGlmaWVkIGFz IGEgc2luZ2xlIG51bWJlci4gIElmIHRoZQorZnVuY3Rpb24ncyBjZ3JhcGgg bm9kZSdzIEB2YXJ7dWlkfSBpcyBmYWxsaW5nIHdpdGhpbiBvbmUgb2YgdGhl IHNwZWNpZmllZCByYW5nZXMsCit0aGUgQHZhcntwYXNzfSBpcyBkaXNhYmxl ZCBmb3IgdGhhdCBmdW5jdGlvbi4gIFRoZSBAdmFye3VpZH0gaXMgc2hvd24g aW4gdGhlCitmdW5jdGlvbiBoZWFkZXIgb2YgYSBkdW1wIGZpbGUuCiAKIEBp dGVtIC1mZGlzYWJsZS10cmVlLUB2YXJ7cGFzc30KIEBpdGVtIC1mZGlzYWJs ZS10cmVlLUB2YXJ7cGFzc309QHZhcntyYW5nZS1saXN0fQpAQCAtNTA5MCw3 ICs1MDkxLDggQEAgb2Ygb3B0aW9uIGFyZ3VtZW50cy4KICAgIC1mZW5hYmxl LXRyZWUtY3Vucm9sbD0xCiAjIGRpc2FibGUgZ2NzZTIgZm9yIGZ1bmN0aW9u cyBhdCB0aGUgZm9sbG93aW5nIHJhbmdlcyBbMSwxXSwKICMgWzMwMCw0MDBd LCBhbmQgWzQwMCwxMDAwXQotICAgLWZkaXNhYmxlLXJ0bC1nY3NlMj0xOjEw MCwzMDAsNDAwOjEwMDAKKyMgZGlzYWJsZSBnY3NlMiBmb3IgZnVuY3Rpb25z IGZvbyBhbmQgZm9vMgorICAgLWZkaXNhYmxlLXJ0bC1nY3NlMj1mb28sZm9v MgogIyBkaXNhYmxlIGVhcmx5IGlubGluaW5nCiAgICAtZmRpc2FibGUtdHJl ZS1laW5saW5lCiAjIGRpc2FibGUgaXBhIGlubGluaW5nCkluZGV4OiB0ZXN0 c3VpdGUvZ2NjLmRnL2lubGluZV8yLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gdGVzdHN1aXRlL2djYy5kZy9pbmxpbmVfMi5jCShyZXZpc2lvbiAw KQorKysgdGVzdHN1aXRlL2djYy5kZy9pbmxpbmVfMi5jCShyZXZpc2lvbiAw KQpAQCAtMCwwICsxLDIzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUtb3B0aW1pemVkIC1m ZGlzYWJsZS10cmVlLWVpbmxpbmU9MDoxMDAgLWZkaXNhYmxlLWlwYS1pbmxp bmUiIH0gKi8KK2ludCBnOworX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGlu ZSkpIHZvaWQgYmFyICh2b2lkKQoreworICBnKys7Cit9CisKK2ludCBmb28g KHZvaWQpCit7CisgIGJhciAoKTsKKyAgcmV0dXJuIGc7Cit9CisKK2ludCBm b28yICh2b2lkKQoreworICBiYXIoKTsKKyAgcmV0dXJuIGcgKyAxOworfQor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImJhciIg NSAib3B0aW1pemVkIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBjbGVhbnVw LXRyZWUtZHVtcCAib3B0aW1pemVkIiB9IH0gKi8KKy8qIHsgZGctZXhjZXNz LWVycm9ycyAiZXh0cmEgbm90ZXMiIH0gKi8KSW5kZXg6IHRlc3RzdWl0ZS9n Y2MuZGcvdW5yb2xsXzIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0 ZXN0c3VpdGUvZ2NjLmRnL3Vucm9sbF8yLmMJKHJldmlzaW9uIDApCisrKyB0 ZXN0c3VpdGUvZ2NjLmRnL3Vucm9sbF8yLmMJKHJldmlzaW9uIDApCkBAIC0w LDAgKzEsMzMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSAgeyB0YXJnZXQgaT84 Ni0qLWxpbnV4KiB4ODZfNjQtKi1saW51eCogfSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1PMiAtZmR1bXAtcnRsLWxvb3AyX3Vucm9sbCAtZm5vLXBlZWwt bG9vcHMgLWZkaXNhYmxlLXRyZWUtY3Vucm9sbD1mb28gLWZkaXNhYmxlLXRy ZWUtY3Vucm9sbGk9Zm9vIC1mZW5hYmxlLXJ0bC1sb29wMl91bnJvbGwiIH0g Ki8KKwordW5zaWduZWQgYVsxMDBdLCBiWzEwMF07CitpbmxpbmUgdm9pZCBi YXIoKQoreworIGFbMTBdID0gYlsxMF07Cit9CisKK2ludCBmb28odm9pZCkK K3sKKyAgaW50IGk7CisgIGJhcigpOworICBmb3IgKGkgPSAwOyBpIDwgMjsg aSsrKQorICB7CisgICAgIGFbaV09IGJbaV0gKyAxOworICB9CisgIHJldHVy biAxOworfQorCitpbnQgZm9vMih2b2lkKQoreworICBpbnQgaTsKKyAgZm9y IChpID0gMDsgaSA8IDI7IGkrKykKKyAgeworICAgICBhW2ldPSBiW2ldICsg MTsKKyAgfQorICByZXR1cm4gMTsKK30KKworLyogeyBkZy1maW5hbCB7IHNj YW4tcnRsLWR1bXAtdGltZXMgIkRlY2lkZWQgdG8gcGVlbCBsb29wIGNvbXBs ZXRlbHkiIDEgImxvb3AyX3Vucm9sbCIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgY2xlYW51cC1ydGwtZHVtcCAibG9vcDJfdW5yb2xsIiB9IH0gKi8KKy8q IHsgZGctZXhjZXNzLWVycm9ycyAiZXh0cmEgbm90ZXMiIH0gKi8KSW5kZXg6 IHRlc3RzdWl0ZS9nY2MuZGcvaW5saW5lXzMuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSB0ZXN0c3VpdGUvZ2NjLmRnL2lubGluZV8zLmMJKHJldmlz aW9uIDApCisrKyB0ZXN0c3VpdGUvZ2NjLmRnL2lubGluZV8zLmMJKHJldmlz aW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSAg IHsgdGFyZ2V0IGk/ODYtKi1saW51eCogeDg2XzY0LSotbGludXgqIH0gfSAq LworLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUtb3B0aW1pemVk IC1mZGlzYWJsZS10cmVlLWVpbmxpbmU9Zm9vLGZvbzIgLWZkaXNhYmxlLWlw YS1pbmxpbmUiIH0gKi8KK2ludCBnOworX19hdHRyaWJ1dGVfXygoYWx3YXlz X2lubGluZSkpIHZvaWQgYmFyICh2b2lkKQoreworICBnKys7Cit9CisKK2lu dCBmb28gKHZvaWQpCit7CisgIGJhciAoKTsKKyAgcmV0dXJuIGc7Cit9CisK K2ludCBmb28yICh2b2lkKQoreworICBiYXIoKTsKKyAgcmV0dXJuIGcgKyAx OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg ImJhciIgNSAib3B0aW1pemVkIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBj bGVhbnVwLXRyZWUtZHVtcCAib3B0aW1pemVkIiB9IH0gKi8KKy8qIHsgZGct ZXhjZXNzLWVycm9ycyAiZXh0cmEgbm90ZXMiIH0gKi8KSW5kZXg6IHRlc3Rz dWl0ZS9nY2MuZGcvdW5yb2xsXzMuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSB0ZXN0c3VpdGUvZ2NjLmRnL3Vucm9sbF8zLmMJKHJldmlzaW9uIDAp CisrKyB0ZXN0c3VpdGUvZ2NjLmRnL3Vucm9sbF8zLmMJKHJldmlzaW9uIDAp CkBAIC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSAgeyB0YXJn ZXQgaT84Ni0qLWxpbnV4KiB4ODZfNjQtKi1saW51eCogfSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1PMiAtZmR1bXAtcnRsLWxvb3AyX3Vucm9sbCAtZm5v LXBlZWwtbG9vcHMgLWZkaXNhYmxlLXRyZWUtY3Vucm9sbCAtZmRpc2FibGUt dHJlZS1jdW5yb2xsaSAtZmVuYWJsZS1ydGwtbG9vcDJfdW5yb2xsPWZvbyIg fSAqLworCit1bnNpZ25lZCBhWzEwMF0sIGJbMTAwXTsKK2lubGluZSB2b2lk IGJhcigpCit7CisgYVsxMF0gPSBiWzEwXTsKK30KKworaW50IGZvbyh2b2lk KQoreworICBpbnQgaTsKKyAgYmFyKCk7CisgIGZvciAoaSA9IDA7IGkgPCAy OyBpKyspCisgIHsKKyAgICAgYVtpXT0gYltpXSArIDE7CisgIH0KKyAgcmV0 dXJuIDE7Cit9CisKK2ludCBmb28yKHZvaWQpCit7CisgIGludCBpOworICBm b3IgKGkgPSAwOyBpIDwgMjsgaSsrKQorICB7CisgICAgIGFbaV09IGJbaV0g KyAxOworICB9CisgIHJldHVybiAxOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1ydGwtZHVtcC10aW1lcyAiRGVjaWRlZCB0byBwZWVsIGxvb3AgY29t cGxldGVseSIgMSAibG9vcDJfdW5yb2xsIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBjbGVhbnVwLXJ0bC1kdW1wICJsb29wMl91bnJvbGwiIH0gfSAqLwor LyogeyBkZy1leGNlc3MtZXJyb3JzICJleHRyYSBub3RlcyIgfSAqLwpJbmRl eDogdGVzdHN1aXRlL2djYy5kZy9pbmxpbmVfNC5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHRlc3RzdWl0ZS9nY2MuZGcvaW5saW5lXzQuYwkocmV2 aXNpb24gMCkKKysrIHRlc3RzdWl0ZS9nY2MuZGcvaW5saW5lXzQuYwkocmV2 aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorLyogeyBkZy1kbyBjb21waWxl ICB7IHRhcmdldCBpPzg2LSotbGludXgqIHg4Nl82NC0qLWxpbnV4KiB9IH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZHVtcC10cmVlLW9wdGltaXpl ZCAtZmRpc2FibGUtdHJlZS1laW5saW5lPWZvbzIgLWZkaXNhYmxlLWlwYS1p bmxpbmUiIH0gKi8KK2ludCBnOworX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lu bGluZSkpIHZvaWQgYmFyICh2b2lkKQoreworICBnKys7Cit9CisKK2ludCBm b28gKHZvaWQpCit7CisgIGJhciAoKTsKKyAgcmV0dXJuIGc7Cit9CisKK2lu dCBmb28yICh2b2lkKQoreworICBiYXIoKTsKKyAgcmV0dXJuIGcgKyAxOwor fQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImJh ciIgNCAib3B0aW1pemVkIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBjbGVh bnVwLXRyZWUtZHVtcCAib3B0aW1pemVkIiB9IH0gKi8KKy8qIHsgZGctZXhj ZXNzLWVycm9ycyAiZXh0cmEgbm90ZXMiIH0gKi8KSW5kZXg6IHRlc3RzdWl0 ZS9nY2MuZGcvdW5yb2xsXzQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSB0ZXN0c3VpdGUvZ2NjLmRnL3Vucm9sbF80LmMJKHJldmlzaW9uIDApCisr KyB0ZXN0c3VpdGUvZ2NjLmRnL3Vucm9sbF80LmMJKHJldmlzaW9uIDApCkBA IC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSAgeyB0YXJnZXQg aT84Ni0qLWxpbnV4KiB4ODZfNjQtKi1saW51eCogfSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PMiAtZmR1bXAtcnRsLWxvb3AyX3Vucm9sbCAtZm5vLXBl ZWwtbG9vcHMgLWZkaXNhYmxlLXRyZWUtY3Vucm9sbCAtZmRpc2FibGUtdHJl ZS1jdW5yb2xsaSAtZmVuYWJsZS1ydGwtbG9vcDJfdW5yb2xsPWZvbzIiIH0g Ki8KKwordW5zaWduZWQgYVsxMDBdLCBiWzEwMF07CitpbmxpbmUgdm9pZCBi YXIoKQoreworIGFbMTBdID0gYlsxMF07Cit9CisKK2ludCBmb28odm9pZCkK K3sKKyAgaW50IGk7CisgIGJhcigpOworICBmb3IgKGkgPSAwOyBpIDwgMjsg aSsrKQorICB7CisgICAgIGFbaV09IGJbaV0gKyAxOworICB9CisgIHJldHVy biAxOworfQorCitpbnQgZm9vMih2b2lkKQoreworICBpbnQgaTsKKyAgZm9y IChpID0gMDsgaSA8IDI7IGkrKykKKyAgeworICAgICBhW2ldPSBiW2ldICsg MTsKKyAgfQorICByZXR1cm4gMTsKK30KKworLyogeyBkZy1maW5hbCB7IHNj YW4tcnRsLWR1bXAtdGltZXMgIkRlY2lkZWQgdG8gcGVlbCBsb29wIGNvbXBs ZXRlbHkiIDEgImxvb3AyX3Vucm9sbCIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgY2xlYW51cC1ydGwtZHVtcCAibG9vcDJfdW5yb2xsIiB9IH0gKi8KKy8q IHsgZGctZXhjZXNzLWVycm9ycyAiZXh0cmEgbm90ZXMiIH0gKi8KSW5kZXg6 IHRlc3RzdWl0ZS9nY2MuZGcvaW5saW5lXzEuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSB0ZXN0c3VpdGUvZ2NjLmRnL2lubGluZV8xLmMJKHJldmlz aW9uIDApCisrKyB0ZXN0c3VpdGUvZ2NjLmRnL2lubGluZV8xLmMJKHJldmlz aW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmR1bXAtdHJlZS1vcHRpbWl6 ZWQgLWZkaXNhYmxlLXRyZWUtZWlubGluZSAtZmRpc2FibGUtaXBhLWlubGlu ZSIgfSAqLworaW50IGc7CitfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5l KSkgdm9pZCBiYXIgKHZvaWQpCit7CisgIGcrKzsKK30KKworaW50IGZvbyAo dm9pZCkKK3sKKyAgYmFyICgpOworICByZXR1cm4gZzsKK30KKworaW50IGZv bzIgKHZvaWQpCit7CisgIGJhcigpOworICByZXR1cm4gZyArIDE7Cit9CisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiYmFyIiA1 ICJvcHRpbWl6ZWQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IGNsZWFudXAt dHJlZS1kdW1wICJvcHRpbWl6ZWQiIH0gfSAqLworLyogeyBkZy1leGNlc3Mt ZXJyb3JzICJleHRyYSBub3RlcyIgfSAqLwpJbmRleDogdGVzdHN1aXRlL2dj Yy5kZy91bnJvbGxfMS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRl c3RzdWl0ZS9nY2MuZGcvdW5yb2xsXzEuYwkocmV2aXNpb24gMCkKKysrIHRl c3RzdWl0ZS9nY2MuZGcvdW5yb2xsXzEuYwkocmV2aXNpb24gMCkKQEAgLTAs MCArMSwzMyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLU8yIC1mZHVtcC1ydGwtbG9vcDJfdW5yb2xsIC1mbm8tcGVl bC1sb29wcyAtZmRpc2FibGUtdHJlZS1jdW5yb2xsIC1mZGlzYWJsZS10cmVl LWN1bnJvbGxpIC1mZW5hYmxlLXJ0bC1sb29wMl91bnJvbGwiIH0gKi8KKwor dW5zaWduZWQgYVsxMDBdLCBiWzEwMF07CitpbmxpbmUgdm9pZCBiYXIoKQor eworIGFbMTBdID0gYlsxMF07Cit9CisKK2ludCBmb28odm9pZCkKK3sKKyAg aW50IGk7CisgIGJhcigpOworICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQor ICB7CisgICAgIGFbaV09IGJbaV0gKyAxOworICB9CisgIHJldHVybiAxOwor fQorCitpbnQgZm9vMih2b2lkKQoreworICBpbnQgaTsKKyAgZm9yIChpID0g MDsgaSA8IDI7IGkrKykKKyAgeworICAgICBhW2ldPSBiW2ldICsgMTsKKyAg fQorICByZXR1cm4gMTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRs LWR1bXAtdGltZXMgIkRlY2lkZWQgdG8gcGVlbCBsb29wIGNvbXBsZXRlbHki IDIgImxvb3AyX3Vucm9sbCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2xl YW51cC1ydGwtZHVtcCAibG9vcDJfdW5yb2xsIiB9IH0gKi8KKy8qIHsgZGct ZXhjZXNzLWVycm9ycyAiZXh0cmEgbm90ZXMiIH0gKi8KSW5kZXg6IHBhc3Nl cy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhc3Nlcy5jCShyZXZp c2lvbiAxNzQ1NDkpCisrKyBwYXNzZXMuYwkod29ya2luZyBjb3B5KQpAQCAt NTMxLDYgKzUzMSw3IEBAIHN0cnVjdCB1aWRfcmFuZ2UKIHsKICAgdW5zaWdu ZWQgaW50IHN0YXJ0OwogICB1bnNpZ25lZCBpbnQgbGFzdDsKKyAgY29uc3Qg Y2hhciAqYXNzZW1fbmFtZTsKICAgc3RydWN0IHVpZF9yYW5nZSAqbmV4dDsK IH07CiAKQEAgLTU0Miw2ICs1NDMsNyBAQCBERUZfVkVDX0FMTE9DX1AodWlk X3JhbmdlX3AsIGhlYXApOwogc3RhdGljIFZFQyh1aWRfcmFuZ2VfcCwgaGVh cCkgKmVuYWJsZWRfcGFzc191aWRfcmFuZ2VfdGFiID0gTlVMTDsKIHN0YXRp YyBWRUModWlkX3JhbmdlX3AsIGhlYXApICpkaXNhYmxlZF9wYXNzX3VpZF9y YW5nZV90YWIgPSBOVUxMOwogCisKIC8qIFBhcnNlIG9wdGlvbiBzdHJpbmcg Zm9yIC1mZGlzYWJsZS0gYW5kIC1mZW5hYmxlLQogICAgVGhlIHN5bnRheCBv ZiB0aGUgb3B0aW9uczoKIApAQCAtNjI4LDYgKzYzMCw3IEBAIGVuYWJsZV9k aXNhYmxlX3Bhc3MgKGNvbnN0IGNoYXIgKmFyZywgYm8KIAkgIHVpZF9yYW5n ZV9wIG5ld19yYW5nZTsKIAkgIGNoYXIgKmludmFsaWQgPSBOVUxMOwogCSAg bG9uZyBzdGFydDsKKwkgIGNoYXIgKmZ1bmNfbmFtZSA9IE5VTEw7CiAKIAkg IG5leHRfcmFuZ2UgPSBzdHJjaHIgKG9uZV9yYW5nZSwgJywnKTsKIAkgIGlm IChuZXh0X3JhbmdlKQpAQCAtNjQ1LDE3ICs2NDgsMzEgQEAgZW5hYmxlX2Rp c2FibGVfcGFzcyAoY29uc3QgY2hhciAqYXJnLCBibwogCSAgc3RhcnQgPSBz dHJ0b2wgKG9uZV9yYW5nZSwgJmludmFsaWQsIDEwKTsKIAkgIGlmICgqaW52 YWxpZCB8fCBzdGFydCA8IDApCiAJICAgIHsKLQkgICAgICBlcnJvciAoIklu dmFsaWQgcmFuZ2UgJXMgaW4gb3B0aW9uICVzIiwKLQkJICAgICBvbmVfcmFu Z2UsCi0JCSAgICAgaXNfZW5hYmxlID8gIi1mZW5hYmxlIiA6ICItZmRpc2Fi bGUiKTsKLQkgICAgICBmcmVlIChhcmdzdHIpOwotCSAgICAgIHJldHVybjsK KyAgICAgICAgICAgICAgaWYgKGVuZF92YWwgfHwgKG9uZV9yYW5nZVswXSA+ PSAnMCcKKwkJCSAgICAgICYmIG9uZV9yYW5nZVswXSA8PSAnOScpKQorICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGVycm9yICgiSW52 YWxpZCByYW5nZSAlcyBpbiBvcHRpb24gJXMiLAorICAgICAgICAgICAgICAg ICAgICAgICAgIG9uZV9yYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICBpc19lbmFibGUgPyAiLWZlbmFibGUiIDogIi1mZGlzYWJsZSIpOworICAg ICAgICAgICAgICAgICAgZnJlZSAoYXJnc3RyKTsKKyAgICAgICAgICAgICAg ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisJICAgICAgZnVuY19u YW1lID0gb25lX3JhbmdlOwogCSAgICB9CiAJICBpZiAoIWVuZF92YWwpCiAJ ICAgIHsKIAkgICAgICBuZXdfcmFuZ2UgPSBYQ05FVyAoc3RydWN0IHVpZF9y YW5nZSk7Ci0JICAgICAgbmV3X3JhbmdlLT5zdGFydCA9ICh1bnNpZ25lZCkg c3RhcnQ7Ci0JICAgICAgbmV3X3JhbmdlLT5sYXN0ID0gKHVuc2lnbmVkKSBz dGFydDsKKyAgICAgICAgICAgICAgaWYgKCFmdW5jX25hbWUpCisgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgbmV3X3JhbmdlLT5zdGFy dCA9ICh1bnNpZ25lZCkgc3RhcnQ7CisgICAgICAgICAgICAgICAgICBuZXdf cmFuZ2UtPmxhc3QgPSAodW5zaWduZWQpIHN0YXJ0OworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgIG5ld19yYW5nZS0+c3RhcnQgPSAodW5zaWdu ZWQpIC0xOworICAgICAgICAgICAgICAgICAgbmV3X3JhbmdlLT5sYXN0ID0g KHVuc2lnbmVkKSAtMTsKKyAgICAgICAgICAgICAgICAgIG5ld19yYW5nZS0+ YXNzZW1fbmFtZSA9IHhzdHJkdXAgKGZ1bmNfbmFtZSk7CisgICAgICAgICAg ICAgICAgfQogCSAgICB9CiAJICBlbHNlCiAJICAgIHsKQEAgLTY3NywxNSAr Njk0LDI4IEBAIGVuYWJsZV9kaXNhYmxlX3Bhc3MgKGNvbnN0IGNoYXIgKmFy ZywgYm8KICAgICAgICAgICBuZXdfcmFuZ2UtPm5leHQgPSBzbG90OwogICAg ICAgICAgIFZFQ19yZXBsYWNlICh1aWRfcmFuZ2VfcCwgKnRhYiwgcGFzcy0+ c3RhdGljX3Bhc3NfbnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICBu ZXdfcmFuZ2UpOwotCiAgICAgICAgICAgaWYgKGlzX2VuYWJsZSkKLSAgICAg ICAgICAgIGluZm9ybSAoVU5LTk9XTl9MT0NBVElPTiwKLSAgICAgICAgICAg ICAgICAgICAgImVuYWJsZSBwYXNzICVzIGZvciBmdW5jdGlvbnMgaW4gdGhl IHJhbmdlIG9mIFsldSwgJXVdIiwKLSAgICAgICAgICAgICAgICAgICAgcGhh c2VfbmFtZSwgbmV3X3JhbmdlLT5zdGFydCwgbmV3X3JhbmdlLT5sYXN0KTsK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKG5ld19yYW5nZS0+ YXNzZW1fbmFtZSkKKyAgICAgICAgICAgICAgICBpbmZvcm0gKFVOS05PV05f TE9DQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAiZW5hYmxlIHBh c3MgJXMgZm9yIGZ1bmN0aW9uICVzIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHBoYXNlX25hbWUsIG5ld19yYW5nZS0+YXNzZW1fbmFtZSk7CisgICAg ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbmZvcm0gKFVOS05P V05fTE9DQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAiZW5hYmxl IHBhc3MgJXMgZm9yIGZ1bmN0aW9ucyBpbiB0aGUgcmFuZ2Ugb2YgWyV1LCAl dV0iLAorICAgICAgICAgICAgICAgICAgICAgICAgcGhhc2VfbmFtZSwgbmV3 X3JhbmdlLT5zdGFydCwgbmV3X3JhbmdlLT5sYXN0KTsKKyAgICAgICAgICAg IH0KICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmZvcm0gKFVOS05P V05fTE9DQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICJkaXNhYmxlIHBh c3MgJXMgZm9yIGZ1bmN0aW9ucyBpbiB0aGUgcmFuZ2Ugb2YgWyV1LCAldV0i LAotICAgICAgICAgICAgICAgICAgICBwaGFzZV9uYW1lLCBuZXdfcmFuZ2Ut PnN0YXJ0LCBuZXdfcmFuZ2UtPmxhc3QpOworICAgICAgICAgICAgeworICAg ICAgICAgICAgICBpZiAobmV3X3JhbmdlLT5hc3NlbV9uYW1lKQorICAgICAg ICAgICAgICAgIGluZm9ybSAoVU5LTk9XTl9MT0NBVElPTiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICJkaXNhYmxlIHBhc3MgJXMgZm9yIGZ1bmN0aW9u ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBoYXNlX25hbWUsIG5l d19yYW5nZS0+YXNzZW1fbmFtZSk7CisgICAgICAgICAgICAgIGVsc2UKKyAg ICAgICAgICAgICAgICBpbmZvcm0gKFVOS05PV05fTE9DQVRJT04sCisgICAg ICAgICAgICAgICAgICAgICAgICAiZGlzYWJsZSBwYXNzICVzIGZvciBmdW5j dGlvbnMgaW4gdGhlIHJhbmdlIG9mIFsldSwgJXVdIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgIHBoYXNlX25hbWUsIG5ld19yYW5nZS0+c3RhcnQsIG5l d19yYW5nZS0+bGFzdCk7CisgICAgICAgICAgICB9CiAKIAkgIG9uZV9yYW5n ZSA9IG5leHRfcmFuZ2U7CiAJfSB3aGlsZSAobmV4dF9yYW5nZSk7CkBAIC03 MTksNiArNzQ5LDcgQEAgaXNfcGFzc19leHBsaWNpdGx5X2VuYWJsZWRfb3Jf ZGlzYWJsZWQgKAogewogICB1aWRfcmFuZ2VfcCBzbG90LCByYW5nZTsKICAg aW50IGNncmFwaF91aWQ7CisgIGNvbnN0IGNoYXIgKmFuYW1lID0gTlVMTDsK IAogICBpZiAoIXRhYgogICAgICAgfHwgKHVuc2lnbmVkKSBwYXNzLT5zdGF0 aWNfcGFzc19udW1iZXIgPj0gVkVDX2xlbmd0aCAodWlkX3JhbmdlX3AsIHRh YikKQEAgLTczMCw2ICs3NjEsOCBAQCBpc19wYXNzX2V4cGxpY2l0bHlfZW5h YmxlZF9vcl9kaXNhYmxlZCAoCiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIGNn cmFwaF91aWQgPSBmdW5jID8gY2dyYXBoX2dldF9ub2RlIChmdW5jKS0+dWlk IDogMDsKKyAgaWYgKGZ1bmMgJiYgREVDTF9BU1NFTUJMRVJfTkFNRV9TRVRf UCAoZnVuYykpCisgICAgYW5hbWUgPSBJREVOVElGSUVSX1BPSU5URVIgKERF Q0xfQVNTRU1CTEVSX05BTUUgKGZ1bmMpKTsKIAogICByYW5nZSA9IHNsb3Q7 CiAgIHdoaWxlIChyYW5nZSkKQEAgLTczNyw2ICs3NzAsOSBAQCBpc19wYXNz X2V4cGxpY2l0bHlfZW5hYmxlZF9vcl9kaXNhYmxlZCAoCiAgICAgICBpZiAo KHVuc2lnbmVkKSBjZ3JhcGhfdWlkID49IHJhbmdlLT5zdGFydAogCSAgJiYg KHVuc2lnbmVkKSBjZ3JhcGhfdWlkIDw9IHJhbmdlLT5sYXN0KQogCXJldHVy biB0cnVlOworICAgICAgaWYgKHJhbmdlLT5hc3NlbV9uYW1lICYmIGFuYW1l CisgICAgICAgICAgJiYgIXN0cmNtcCAocmFuZ2UtPmFzc2VtX25hbWUsIGFu YW1lKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICByYW5nZSA9IHJh bmdlLT5uZXh0OwogICAgIH0KIAo= --001517512236d1c28c04a5100015--