From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22984 invoked by alias); 1 Jun 2011 17:24:51 -0000 Received: (qmail 22961 invoked by uid 22791); 1 Jun 2011 17:24:46 -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; Wed, 01 Jun 2011 17:24:31 +0000 Received: from wpaz13.hot.corp.google.com (wpaz13.hot.corp.google.com [172.24.198.77]) by smtp-out.google.com with ESMTP id p51HOUCp008953 for ; Wed, 1 Jun 2011 10:24:30 -0700 Received: from yxl31 (yxl31.prod.google.com [10.190.3.223]) by wpaz13.hot.corp.google.com with ESMTP id p51HN0rI031255 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Wed, 1 Jun 2011 10:24:29 -0700 Received: by yxl31 with SMTP id 31so73yxl.41 for ; Wed, 01 Jun 2011 10:24:29 -0700 (PDT) MIME-Version: 1.0 Received: by 10.150.59.15 with SMTP id h15mr6430329yba.73.1306949069187; Wed, 01 Jun 2011 10:24:29 -0700 (PDT) Received: by 10.151.26.21 with HTTP; Wed, 1 Jun 2011 10:24:29 -0700 (PDT) In-Reply-To: References: Date: Wed, 01 Jun 2011 17:24: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=000e0cd6e7c8022c3904a4a9cbb6 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/msg00070.txt.bz2 --000e0cd6e7c8022c3904a4a9cbb6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2149 The attached is the split #1 patch that enhances -fenable/disable. Ok after testing? Thanks, David On Wed, Jun 1, 2011 at 9:16 AM, Xinliang David Li wrot= e: > On Wed, Jun 1, 2011 at 1:51 AM, Richard Guenther > wrote: >> On Wed, Jun 1, 2011 at 1:34 AM, Xinliang David Li w= rote: >>> 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 simply, >> 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 dependencies = 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 >>> >> > --000e0cd6e7c8022c3904a4a9cbb6 Content-Type: text/x-pascal; charset=US-ASCII; name="enable-disable-funcname.p" Content-Disposition: attachment; filename="enable-disable-funcname.p" Content-Transfer-Encoding: base64 X-Attachment-Id: f_goejpyki0 Content-length: 19386 SW5kZXg6IGRvYy9pbnZva2UudGV4aQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBkb2MvaW52b2tlLnRleGkJKHJldmlzaW9uIDE3NDQyNCkKKysrIGRv 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 ZGlzYWJsZS10cmVlLWVpbmxpbmU9MDozIC1mZGlzYWJsZS1pcGEtaW5saW5l IiB9ICovCitpbnQgZzsKK19fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUp KSB2b2lkIGJhciAodm9pZCkKK3sKKyAgZysrOworfQorCitpbnQgZm9vICh2 b2lkKQoreworICBiYXIgKCk7CisgIHJldHVybiBnOworfQorCitpbnQgZm9v MiAodm9pZCkKK3sKKyAgYmFyKCk7CisgIHJldHVybiBnICsgMTsKK30KKwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJiYXIiIDUg Im9wdGltaXplZCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2xlYW51cC10 cmVlLWR1bXAgIm9wdGltaXplZCIgfSB9ICovCisvKiB7IGRnLWV4Y2Vzcy1l cnJvcnMgImV4dHJhIG5vdGVzIiB9ICovCkluZGV4OiB0ZXN0c3VpdGUvZ2Nj LmRnL2lubGluZV82LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGVz dHN1aXRlL2djYy5kZy9pbmxpbmVfNi5jCShyZXZpc2lvbiAwKQorKysgdGVz dHN1aXRlL2djYy5kZy9pbmxpbmVfNi5jCShyZXZpc2lvbiAwKQpAQCAtMCww ICsxLDIzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1v cHRpb25zICItTzIgLWZkdW1wLXRyZWUtb3B0aW1pemVkIC1mZGlzYWJsZS10 cmVlLWVpbmxpbmU9Zm9vMiAtZmRpc2FibGUtaXBhLWlubGluZSIgfSAqLwor aW50IGc7CitfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkgdm9pZCBi YXIgKHZvaWQpCit7CisgIGcrKzsKK30KKworaW50IGZvbyAodm9pZCkKK3sK KyAgYmFyICgpOworICByZXR1cm4gZzsKK30KKworaW50IGZvbzIgKHZvaWQp Cit7CisgIGJhcigpOworICByZXR1cm4gZyArIDE7Cit9CisKKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiYmFyIiA0ICJvcHRpbWl6 ZWQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IGNsZWFudXAtdHJlZS1kdW1w ICJvcHRpbWl6ZWQiIH0gfSAqLworLyogeyBkZy1leGNlc3MtZXJyb3JzICJl eHRyYSBub3RlcyIgfSAqLwpJbmRleDogdGVzdHN1aXRlL2djYy5kZy91bnJv bGxfMi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3RzdWl0ZS9n Y2MuZGcvdW5yb2xsXzIuYwkocmV2aXNpb24gMCkKKysrIHRlc3RzdWl0ZS9n Y2MuZGcvdW5yb2xsXzIuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBA QAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LU8yIC1mZHVtcC1ydGwtbG9vcDJfdW5yb2xsIC1mbm8tcGVlbC1sb29wcyAt ZmRpc2FibGUtdHJlZS1jdW5yb2xsPTEgLWZkaXNhYmxlLXRyZWUtY3Vucm9s bGk9MSAtZmVuYWJsZS1ydGwtbG9vcDJfdW5yb2xsIiB9ICovCisKK3Vuc2ln bmVkIGFbMTAwXSwgYlsxMDBdOworaW5saW5lIHZvaWQgYmFyKCkKK3sKKyBh WzEwXSA9IGJbMTBdOworfQorCitpbnQgZm9vKHZvaWQpCit7CisgIGludCBp OworICBiYXIoKTsKKyAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykKKyAgewor ICAgICBhW2ldPSBiW2ldICsgMTsKKyAgfQorICByZXR1cm4gMTsKK30KKwor aW50IGZvbzIodm9pZCkKK3sKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkg PCAyOyBpKyspCisgIHsKKyAgICAgYVtpXT0gYltpXSArIDE7CisgIH0KKyAg cmV0dXJuIDE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1w LXRpbWVzICJEZWNpZGVkIHRvIHBlZWwgbG9vcCBjb21wbGV0ZWx5IiAxICJs b29wMl91bnJvbGwiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IGNsZWFudXAt cnRsLWR1bXAgImxvb3AyX3Vucm9sbCIgfSB9ICovCisvKiB7IGRnLWV4Y2Vz cy1lcnJvcnMgImV4dHJhIG5vdGVzIiB9ICovCkluZGV4OiB0ZXN0c3VpdGUv Z2NjLmRnL2lubGluZV8zLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g dGVzdHN1aXRlL2djYy5kZy9pbmxpbmVfMy5jCShyZXZpc2lvbiAwKQorKysg dGVzdHN1aXRlL2djYy5kZy9pbmxpbmVfMy5jCShyZXZpc2lvbiAwKQpAQCAt MCwwICsxLDIzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUtb3B0aW1pemVkIC1mZGlzYWJs ZS10cmVlLWVpbmxpbmU9MDoxLDIsOTk6MTAwIC1mZGlzYWJsZS1pcGEtaW5s aW5lIiB9ICovCitpbnQgZzsKK19fYXR0cmlidXRlX18oKGFsd2F5c19pbmxp bmUpKSB2b2lkIGJhciAodm9pZCkKK3sKKyAgZysrOworfQorCitpbnQgZm9v ICh2b2lkKQoreworICBiYXIgKCk7CisgIHJldHVybiBnOworfQorCitpbnQg Zm9vMiAodm9pZCkKK3sKKyAgYmFyKCk7CisgIHJldHVybiBnICsgMTsKK30K KworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJiYXIi IDUgIm9wdGltaXplZCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2xlYW51 cC10cmVlLWR1bXAgIm9wdGltaXplZCIgfSB9ICovCisvKiB7IGRnLWV4Y2Vz cy1lcnJvcnMgImV4dHJhIG5vdGVzIiB9ICovCkluZGV4OiB0ZXN0c3VpdGUv Z2NjLmRnL3Vucm9sbF8zLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g dGVzdHN1aXRlL2djYy5kZy91bnJvbGxfMy5jCShyZXZpc2lvbiAwKQorKysg dGVzdHN1aXRlL2djYy5kZy91bnJvbGxfMy5jCShyZXZpc2lvbiAwKQpAQCAt MCwwICsxLDMzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItTzIgLWZkdW1wLXJ0bC1sb29wMl91bnJvbGwgLWZuby1w ZWVsLWxvb3BzIC1mZGlzYWJsZS10cmVlLWN1bnJvbGwgLWZkaXNhYmxlLXRy ZWUtY3Vucm9sbGkgLWZlbmFibGUtcnRsLWxvb3AyX3Vucm9sbD0xIiB9ICov CisKK3Vuc2lnbmVkIGFbMTAwXSwgYlsxMDBdOworaW5saW5lIHZvaWQgYmFy KCkKK3sKKyBhWzEwXSA9IGJbMTBdOworfQorCitpbnQgZm9vKHZvaWQpCit7 CisgIGludCBpOworICBiYXIoKTsKKyAgZm9yIChpID0gMDsgaSA8IDI7IGkr KykKKyAgeworICAgICBhW2ldPSBiW2ldICsgMTsKKyAgfQorICByZXR1cm4g MTsKK30KKworaW50IGZvbzIodm9pZCkKK3sKKyAgaW50IGk7CisgIGZvciAo aSA9IDA7IGkgPCAyOyBpKyspCisgIHsKKyAgICAgYVtpXT0gYltpXSArIDE7 CisgIH0KKyAgcmV0dXJuIDE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2Fu LXJ0bC1kdW1wLXRpbWVzICJEZWNpZGVkIHRvIHBlZWwgbG9vcCBjb21wbGV0 ZWx5IiAxICJsb29wMl91bnJvbGwiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IGNsZWFudXAtcnRsLWR1bXAgImxvb3AyX3Vucm9sbCIgfSB9ICovCisvKiB7 IGRnLWV4Y2Vzcy1lcnJvcnMgImV4dHJhIG5vdGVzIiB9ICovCkluZGV4OiB0 ZXN0c3VpdGUvZ2NjLmRnL2lubGluZV80LmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gdGVzdHN1aXRlL2djYy5kZy9pbmxpbmVfNC5jCShyZXZpc2lv biAwKQorKysgdGVzdHN1aXRlL2djYy5kZy9pbmxpbmVfNC5jCShyZXZpc2lv biAwKQpAQCAtMCwwICsxLDIzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUtb3B0aW1pemVk IC1mZGlzYWJsZS10cmVlLWVpbmxpbmU9MToxLDMsNDoxMDAgLWZkaXNhYmxl LWlwYS1pbmxpbmUiIH0gKi8KK2ludCBnOworX19hdHRyaWJ1dGVfXygoYWx3 YXlzX2lubGluZSkpIHZvaWQgYmFyICh2b2lkKQoreworICBnKys7Cit9CisK K2ludCBmb28gKHZvaWQpCit7CisgIGJhciAoKTsKKyAgcmV0dXJuIGc7Cit9 CisKK2ludCBmb28yICh2b2lkKQoreworICBiYXIoKTsKKyAgcmV0dXJuIGcg KyAxOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGlt ZXMgImJhciIgNCAib3B0aW1pemVkIiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBjbGVhbnVwLXRyZWUtZHVtcCAib3B0aW1pemVkIiB9IH0gKi8KKy8qIHsg ZGctZXhjZXNzLWVycm9ycyAiZXh0cmEgbm90ZXMiIH0gKi8KSW5kZXg6IHRl c3RzdWl0ZS9nY2MuZGcvdW5yb2xsXzQuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSB0ZXN0c3VpdGUvZ2NjLmRnL3Vucm9sbF80LmMJKHJldmlzaW9u IDApCisrKyB0ZXN0c3VpdGUvZ2NjLmRnL3Vucm9sbF80LmMJKHJldmlzaW9u IDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmR1bXAtcnRsLWxvb3AyX3Vucm9s bCAtZm5vLXBlZWwtbG9vcHMgLWZkaXNhYmxlLXRyZWUtY3Vucm9sbCAtZmRp c2FibGUtdHJlZS1jdW5yb2xsaSAtZmVuYWJsZS1ydGwtbG9vcDJfdW5yb2xs PWZvbzIiIH0gKi8KKwordW5zaWduZWQgYVsxMDBdLCBiWzEwMF07Citpbmxp bmUgdm9pZCBiYXIoKQoreworIGFbMTBdID0gYlsxMF07Cit9CisKK2ludCBm b28odm9pZCkKK3sKKyAgaW50IGk7CisgIGJhcigpOworICBmb3IgKGkgPSAw OyBpIDwgMjsgaSsrKQorICB7CisgICAgIGFbaV09IGJbaV0gKyAxOworICB9 CisgIHJldHVybiAxOworfQorCitpbnQgZm9vMih2b2lkKQoreworICBpbnQg aTsKKyAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykKKyAgeworICAgICBhW2ld PSBiW2ldICsgMTsKKyAgfQorICByZXR1cm4gMTsKK30KKworLyogeyBkZy1m aW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIkRlY2lkZWQgdG8gcGVlbCBs b29wIGNvbXBsZXRlbHkiIDEgImxvb3AyX3Vucm9sbCIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgY2xlYW51cC1ydGwtZHVtcCAibG9vcDJfdW5yb2xsIiB9 IH0gKi8KKy8qIHsgZGctZXhjZXNzLWVycm9ycyAiZXh0cmEgbm90ZXMiIH0g Ki8KSW5kZXg6IHRlc3RzdWl0ZS9nY2MuZGcvaW5saW5lXzEuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSB0ZXN0c3VpdGUvZ2NjLmRnL2lubGluZV8x LmMJKHJldmlzaW9uIDApCisrKyB0ZXN0c3VpdGUvZ2NjLmRnL2lubGluZV8x LmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmR1bXAtdHJl ZS1vcHRpbWl6ZWQgLWZkaXNhYmxlLXRyZWUtZWlubGluZSAtZmRpc2FibGUt aXBhLWlubGluZSIgfSAqLworaW50IGc7CitfX2F0dHJpYnV0ZV9fKChhbHdh eXNfaW5saW5lKSkgdm9pZCBiYXIgKHZvaWQpCit7CisgIGcrKzsKK30KKwor aW50IGZvbyAodm9pZCkKK3sKKyAgYmFyICgpOworICByZXR1cm4gZzsKK30K KworaW50IGZvbzIgKHZvaWQpCit7CisgIGJhcigpOworICByZXR1cm4gZyAr IDE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAiYmFyIiA1ICJvcHRpbWl6ZWQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IGNsZWFudXAtdHJlZS1kdW1wICJvcHRpbWl6ZWQiIH0gfSAqLworLyogeyBk Zy1leGNlc3MtZXJyb3JzICJleHRyYSBub3RlcyIgfSAqLwpJbmRleDogdGVz dHN1aXRlL2djYy5kZy9pbmxpbmVfNS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHRlc3RzdWl0ZS9nY2MuZGcvaW5saW5lXzUuYwkocmV2aXNpb24g MCkKKysrIHRlc3RzdWl0ZS9nY2MuZGcvaW5saW5lXzUuYwkocmV2aXNpb24g MCkKQEAgLTAsMCArMSwyMyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZHVtcC10cmVlLW9wdGltaXplZCAt ZmRpc2FibGUtdHJlZS1laW5saW5lPWZvbyxmb28yIC1mZGlzYWJsZS1pcGEt aW5saW5lIiB9ICovCitpbnQgZzsKK19fYXR0cmlidXRlX18oKGFsd2F5c19p bmxpbmUpKSB2b2lkIGJhciAodm9pZCkKK3sKKyAgZysrOworfQorCitpbnQg Zm9vICh2b2lkKQoreworICBiYXIgKCk7CisgIHJldHVybiBnOworfQorCitp bnQgZm9vMiAodm9pZCkKK3sKKyAgYmFyKCk7CisgIHJldHVybiBnICsgMTsK K30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJi YXIiIDUgIm9wdGltaXplZCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2xl YW51cC10cmVlLWR1bXAgIm9wdGltaXplZCIgfSB9ICovCisvKiB7IGRnLWV4 Y2Vzcy1lcnJvcnMgImV4dHJhIG5vdGVzIiB9ICovCkluZGV4OiB0ZXN0c3Vp dGUvZ2NjLmRnL3Vucm9sbF8xLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gdGVzdHN1aXRlL2djYy5kZy91bnJvbGxfMS5jCShyZXZpc2lvbiAwKQor KysgdGVzdHN1aXRlL2djYy5kZy91bnJvbGxfMS5jCShyZXZpc2lvbiAwKQpA QCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXJ0bC1sb29wMl91bnJvbGwgLWZu by1wZWVsLWxvb3BzIC1mZGlzYWJsZS10cmVlLWN1bnJvbGwgLWZkaXNhYmxl LXRyZWUtY3Vucm9sbGkgLWZlbmFibGUtcnRsLWxvb3AyX3Vucm9sbCIgfSAq LworCit1bnNpZ25lZCBhWzEwMF0sIGJbMTAwXTsKK2lubGluZSB2b2lkIGJh cigpCit7CisgYVsxMF0gPSBiWzEwXTsKK30KKworaW50IGZvbyh2b2lkKQor eworICBpbnQgaTsKKyAgYmFyKCk7CisgIGZvciAoaSA9IDA7IGkgPCAyOyBp KyspCisgIHsKKyAgICAgYVtpXT0gYltpXSArIDE7CisgIH0KKyAgcmV0dXJu IDE7Cit9CisKK2ludCBmb28yKHZvaWQpCit7CisgIGludCBpOworICBmb3Ig KGkgPSAwOyBpIDwgMjsgaSsrKQorICB7CisgICAgIGFbaV09IGJbaV0gKyAx OworICB9CisgIHJldHVybiAxOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1ydGwtZHVtcC10aW1lcyAiRGVjaWRlZCB0byBwZWVsIGxvb3AgY29tcGxl dGVseSIgMiAibG9vcDJfdW5yb2xsIiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBjbGVhbnVwLXJ0bC1kdW1wICJsb29wMl91bnJvbGwiIH0gfSAqLworLyog eyBkZy1leGNlc3MtZXJyb3JzICJleHRyYSBub3RlcyIgfSAqLwpJbmRleDog cGFzc2VzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFzc2VzLmMJ KHJldmlzaW9uIDE3NDQyNCkKKysrIHBhc3Nlcy5jCSh3b3JraW5nIGNvcHkp CkBAIC01MzAsNiArNTMwLDcgQEAgc3RydWN0IHVpZF9yYW5nZQogewogICB1 bnNpZ25lZCBpbnQgc3RhcnQ7CiAgIHVuc2lnbmVkIGludCBsYXN0OworICBj b25zdCBjaGFyICphc3NlbV9uYW1lOwogICBzdHJ1Y3QgdWlkX3JhbmdlICpu ZXh0OwogfTsKIApAQCAtNTQxLDYgKzU0MiwzNSBAQCBERUZfVkVDX0FMTE9D X1AodWlkX3JhbmdlX3AsIGhlYXApOwogc3RhdGljIFZFQyh1aWRfcmFuZ2Vf cCwgaGVhcCkgKmVuYWJsZWRfcGFzc191aWRfcmFuZ2VfdGFiID0gTlVMTDsK IHN0YXRpYyBWRUModWlkX3JhbmdlX3AsIGhlYXApICpkaXNhYmxlZF9wYXNz X3VpZF9yYW5nZV90YWIgPSBOVUxMOwogCisvKiBBIGhlbHBlciBmdW5jdGlv biB0byBkZXRlcm1pbmUgaWYgYW4gaWRlbnRpZmllciBpcyB2YWxpZCB0bwor ICAgYmUgYW4gYXNzZW1ibGVyIG5hbWUgKGJldHRlciB0byB1c2UgdGFyZ2V0 IHNwZWNpZmljIGhvb2spLiAgKi8KKworc3RhdGljIGJvb2wKK2lzX3ZhbGlk X2Fzc2VtYmxlcl9uYW1lIChjb25zdCBjaGFyICpzdHIpCit7CisgIGNvbnN0 IGNoYXIgKnAgPSBzdHI7CisgIGNoYXIgYzsKKworICBjID0gKnA7CisgIGlm ICghKChjID49ICdhJyAmJiBjIDw9ICd6JykKKyAgICAgICAgfHwgKGMgPj0g J0EnICYmIGMgPD0gJ1onKQorICAgICAgICB8fCAqcCA9PSAnXycpKQorICAg IHJldHVybiBmYWxzZTsKKworICBwKys7CisgIHdoaWxlICgoYyA9ICpwKSkK KyAgIHsKKyAgICAgaWYgKCEoKGMgPj0gJ2EnICYmIGMgPD0gJ3onKQorICAg ICAgICAgICB8fCAoYyA+PSAnQScgJiYgYyA8PSAnWicpCisgICAgICAgICAg IHx8IChjID49ICcwJyAmJiBjIDw9ICc5JykKKyAgICAgICAgICAgfHwgKnAg PT0gJ18nKSkKKyAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIHArKzsKKyAg IH0KKworICByZXR1cm4gdHJ1ZTsKK30KKwogLyogUGFyc2Ugb3B0aW9uIHN0 cmluZyBmb3IgLWZkaXNhYmxlLSBhbmQgLWZlbmFibGUtCiAgICBUaGUgc3lu dGF4IG9mIHRoZSBvcHRpb25zOgogCkBAIC02MjcsNiArNjU3LDcgQEAgZW5h YmxlX2Rpc2FibGVfcGFzcyAoY29uc3QgY2hhciAqYXJnLCBibwogCSAgdWlk X3JhbmdlX3AgbmV3X3JhbmdlOwogCSAgY2hhciAqaW52YWxpZCA9IE5VTEw7 CiAJICBsb25nIHN0YXJ0OworCSAgY2hhciAqZnVuY19uYW1lID0gTlVMTDsK IAogCSAgbmV4dF9yYW5nZSA9IHN0cmNociAob25lX3JhbmdlLCAnLCcpOwog CSAgaWYgKG5leHRfcmFuZ2UpCkBAIC02NDQsMTcgKzY3NSwzMSBAQCBlbmFi bGVfZGlzYWJsZV9wYXNzIChjb25zdCBjaGFyICphcmcsIGJvCiAJICBzdGFy dCA9IHN0cnRvbCAob25lX3JhbmdlLCAmaW52YWxpZCwgMTApOwogCSAgaWYg KCppbnZhbGlkIHx8IHN0YXJ0IDwgMCkKIAkgICAgewotCSAgICAgIGVycm9y ICgiSW52YWxpZCByYW5nZSAlcyBpbiBvcHRpb24gJXMiLAotCQkgICAgIG9u ZV9yYW5nZSwKLQkJICAgICBpc19lbmFibGUgPyAiLWZlbmFibGUiIDogIi1m ZGlzYWJsZSIpOwotCSAgICAgIGZyZWUgKGFyZ3N0cik7Ci0JICAgICAgcmV0 dXJuOworICAgICAgICAgICAgICBpZiAoZW5kX3ZhbCB8fCAhaXNfdmFsaWRf YXNzZW1ibGVyX25hbWUgKG9uZV9yYW5nZSkpCisgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgZXJyb3IgKCJJbnZhbGlkIHJhbmdlICVz IGluIG9wdGlvbiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgb25l X3JhbmdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2VuYWJsZSA/ ICItZmVuYWJsZSIgOiAiLWZkaXNhYmxlIik7CisgICAgICAgICAgICAgICAg ICBmcmVlIChhcmdzdHIpOworICAgICAgICAgICAgICAgICAgcmV0dXJuOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZQorICAgICAg ICAgICAgICAgIGZ1bmNfbmFtZSA9IG9uZV9yYW5nZTsKIAkgICAgfQogCSAg aWYgKCFlbmRfdmFsKQogCSAgICB7CiAJICAgICAgbmV3X3JhbmdlID0gWENO RVcgKHN0cnVjdCB1aWRfcmFuZ2UpOwotCSAgICAgIG5ld19yYW5nZS0+c3Rh cnQgPSAodW5zaWduZWQpIHN0YXJ0OwotCSAgICAgIG5ld19yYW5nZS0+bGFz dCA9ICh1bnNpZ25lZCkgc3RhcnQ7CisgICAgICAgICAgICAgIGlmICghZnVu Y19uYW1lKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg IG5ld19yYW5nZS0+c3RhcnQgPSAodW5zaWduZWQpIHN0YXJ0OworICAgICAg ICAgICAgICAgICAgbmV3X3JhbmdlLT5sYXN0ID0gKHVuc2lnbmVkKSBzdGFy dDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UKKyAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBuZXdfcmFuZ2Ut PnN0YXJ0ID0gKHVuc2lnbmVkKSAtMTsKKyAgICAgICAgICAgICAgICAgIG5l d19yYW5nZS0+bGFzdCA9ICh1bnNpZ25lZCkgLTE7CisgICAgICAgICAgICAg ICAgICBuZXdfcmFuZ2UtPmFzc2VtX25hbWUgPSB4c3RyZHVwIChmdW5jX25h bWUpOworICAgICAgICAgICAgICAgIH0KIAkgICAgfQogCSAgZWxzZQogCSAg ICB7CkBAIC02NzYsMTUgKzcyMSwyOCBAQCBlbmFibGVfZGlzYWJsZV9wYXNz IChjb25zdCBjaGFyICphcmcsIGJvCiAgICAgICAgICAgbmV3X3JhbmdlLT5u ZXh0ID0gc2xvdDsKICAgICAgICAgICBWRUNfcmVwbGFjZSAodWlkX3Jhbmdl X3AsICp0YWIsIHBhc3MtPnN0YXRpY19wYXNzX251bWJlciwKICAgICAgICAg ICAgICAgICAgICAgICAgbmV3X3JhbmdlKTsKLQogICAgICAgICAgIGlmIChp c19lbmFibGUpCi0gICAgICAgICAgICBpbmZvcm0gKFVOS05PV05fTE9DQVRJ T04sCi0gICAgICAgICAgICAgICAgICAgICJlbmFibGUgcGFzcyAlcyBmb3Ig ZnVuY3Rpb25zIGluIHRoZSByYW5nZSBvZiBbJXUsICV1XSIsCi0gICAgICAg ICAgICAgICAgICAgIHBoYXNlX25hbWUsIG5ld19yYW5nZS0+c3RhcnQsIG5l d19yYW5nZS0+bGFzdCk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAg IGlmIChuZXdfcmFuZ2UtPmFzc2VtX25hbWUpCisgICAgICAgICAgICAgICAg aW5mb3JtIChVTktOT1dOX0xPQ0FUSU9OLAorICAgICAgICAgICAgICAgICAg ICAgICAgImVuYWJsZSBwYXNzICVzIGZvciBmdW5jdGlvbiAlcyIsCisgICAg ICAgICAgICAgICAgICAgICAgICBwaGFzZV9uYW1lLCBuZXdfcmFuZ2UtPmFz c2VtX25hbWUpOworICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg ICAgaW5mb3JtIChVTktOT1dOX0xPQ0FUSU9OLAorICAgICAgICAgICAgICAg ICAgICAgICAgImVuYWJsZSBwYXNzICVzIGZvciBmdW5jdGlvbnMgaW4gdGhl IHJhbmdlIG9mIFsldSwgJXVdIiwKKyAgICAgICAgICAgICAgICAgICAgICAg IHBoYXNlX25hbWUsIG5ld19yYW5nZS0+c3RhcnQsIG5ld19yYW5nZS0+bGFz dCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZQotICAgICAgICAg ICAgaW5mb3JtIChVTktOT1dOX0xPQ0FUSU9OLAotICAgICAgICAgICAgICAg ICAgICAiZGlzYWJsZSBwYXNzICVzIGZvciBmdW5jdGlvbnMgaW4gdGhlIHJh bmdlIG9mIFsldSwgJXVdIiwKLSAgICAgICAgICAgICAgICAgICAgcGhhc2Vf bmFtZSwgbmV3X3JhbmdlLT5zdGFydCwgbmV3X3JhbmdlLT5sYXN0KTsKKyAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKG5ld19yYW5nZS0+YXNz ZW1fbmFtZSkKKyAgICAgICAgICAgICAgICBpbmZvcm0gKFVOS05PV05fTE9D QVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAiZGlzYWJsZSBwYXNz ICVzIGZvciBmdW5jdGlvbiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAg ICBwaGFzZV9uYW1lLCBuZXdfcmFuZ2UtPmFzc2VtX25hbWUpOworICAgICAg ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5mb3JtIChVTktOT1dO X0xPQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgImRpc2FibGUg cGFzcyAlcyBmb3IgZnVuY3Rpb25zIGluIHRoZSByYW5nZSBvZiBbJXUsICV1 XSIsCisgICAgICAgICAgICAgICAgICAgICAgICBwaGFzZV9uYW1lLCBuZXdf cmFuZ2UtPnN0YXJ0LCBuZXdfcmFuZ2UtPmxhc3QpOworICAgICAgICAgICAg fQogCiAJICBvbmVfcmFuZ2UgPSBuZXh0X3JhbmdlOwogCX0gd2hpbGUgKG5l eHRfcmFuZ2UpOwpAQCAtNzE4LDYgKzc3Niw3IEBAIGlzX3Bhc3NfZXhwbGlj aXRseV9lbmFibGVkX29yX2Rpc2FibGVkICgKIHsKICAgdWlkX3JhbmdlX3Ag c2xvdCwgcmFuZ2U7CiAgIGludCBjZ3JhcGhfdWlkOworICBjb25zdCBjaGFy ICphbmFtZSA9IE5VTEw7CiAKICAgaWYgKCF0YWIKICAgICAgIHx8ICh1bnNp Z25lZCkgcGFzcy0+c3RhdGljX3Bhc3NfbnVtYmVyID49IFZFQ19sZW5ndGgg KHVpZF9yYW5nZV9wLCB0YWIpCkBAIC03MjksNiArNzg4LDggQEAgaXNfcGFz c19leHBsaWNpdGx5X2VuYWJsZWRfb3JfZGlzYWJsZWQgKAogICAgIHJldHVy biBmYWxzZTsKIAogICBjZ3JhcGhfdWlkID0gZnVuYyA/IGNncmFwaF9nZXRf bm9kZSAoZnVuYyktPnVpZCA6IDA7CisgIGlmIChmdW5jICYmIERFQ0xfQVNT RU1CTEVSX05BTUVfU0VUX1AgKGZ1bmMpKQorICAgIGFuYW1lID0gSURFTlRJ RklFUl9QT0lOVEVSIChERUNMX0FTU0VNQkxFUl9OQU1FIChmdW5jKSk7CiAK ICAgcmFuZ2UgPSBzbG90OwogICB3aGlsZSAocmFuZ2UpCkBAIC03MzYsNiAr Nzk3LDkgQEAgaXNfcGFzc19leHBsaWNpdGx5X2VuYWJsZWRfb3JfZGlzYWJs ZWQgKAogICAgICAgaWYgKCh1bnNpZ25lZCkgY2dyYXBoX3VpZCA+PSByYW5n ZS0+c3RhcnQKIAkgICYmICh1bnNpZ25lZCkgY2dyYXBoX3VpZCA8PSByYW5n ZS0+bGFzdCkKIAlyZXR1cm4gdHJ1ZTsKKyAgICAgIGlmIChyYW5nZS0+YXNz ZW1fbmFtZSAmJiBhbmFtZQorICAgICAgICAgICYmICFzdHJjbXAgKHJhbmdl LT5hc3NlbV9uYW1lLCBhbmFtZSkpCisgICAgICAgIHJldHVybiB0cnVlOwog ICAgICAgcmFuZ2UgPSByYW5nZS0+bmV4dDsKICAgICB9CiAK --000e0cd6e7c8022c3904a4a9cbb6--