From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30737 invoked by alias); 14 Jun 2011 23:15:02 -0000 Received: (qmail 30633 invoked by uid 22791); 14 Jun 2011 23:14:59 -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; Tue, 14 Jun 2011 23:13:28 +0000 Received: from kpbe17.cbf.corp.google.com (kpbe17.cbf.corp.google.com [172.25.105.81]) by smtp-out.google.com with ESMTP id p5ENDQEi019007 for ; Tue, 14 Jun 2011 16:13:26 -0700 Received: from yic15 (yic15.prod.google.com [10.243.65.143]) by kpbe17.cbf.corp.google.com with ESMTP id p5ENDDqH016166 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Tue, 14 Jun 2011 16:13:25 -0700 Received: by yic15 with SMTP id 15so3730984yic.26 for ; Tue, 14 Jun 2011 16:13:24 -0700 (PDT) MIME-Version: 1.0 Received: by 10.150.59.15 with SMTP id h15mr62721yba.73.1308093204666; Tue, 14 Jun 2011 16:13:24 -0700 (PDT) Received: by 10.151.26.21 with HTTP; Tue, 14 Jun 2011 16:13:24 -0700 (PDT) In-Reply-To: References: <20110601231202.224188ad.basile@starynkevitch.net> Date: Tue, 14 Jun 2011 23:22:00 -0000 Message-ID: Subject: Re: Dump before flag From: Xinliang David Li To: Richard Guenther Cc: GCC Patches , Diego Novillo Content-Type: multipart/mixed; boundary=000e0cd6e7c8cc1c7504a5b42e0a 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/msg01125.txt.bz2 --000e0cd6e7c8cc1c7504a5b42e0a Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 8835 Here is one the of follow up patches: support of -before_preparation, -before, -after, -after_cleanup dump flags. The default dumping behavior does not change at all, but if any one of the above flags is specified, the function IR will be dumped into a file with the corresponding suffix. The enhancement is to simplify IR diffing. Bootstrapped and regression tested on x86-64/linux. Ok for trunk? Thanks, David On Tue, Jun 14, 2011 at 12:40 PM, Xinliang David Li wr= ote: > Committed after Bootstrapping and regression testing on x86-64/linux. > The follow up patch will come soon. > > Thanks, > > David > > On Tue, Jun 14, 2011 at 8:57 AM, Xinliang David Li w= rote: >> On Tue, Jun 14, 2011 at 6:58 AM, Richard Guenther >> wrote: >>> On Fri, Jun 10, 2011 at 8:44 PM, Xinliang David Li = wrote: >>>> This is the revised patch as suggested. >>>> >>>> How does it look? >>> >>> =A0} >>> >>> +static void >>> +execute_function_dump (void *data ATTRIBUTE_UNUSED) >>> >>> function needs a comment. >>> >>> Ok with that change. >>> >>> Please always specify how you tested the patch - the past fallouts >>> suggest you didn't do the required testing carefully. >> >> I think I did -- the fallout was probably due to different >> '--enable-checking' setting. I have now turned it to 'yes' >> >> Thanks, >> >> David >> >>> >>> A changelog is missing as well. >>> >>> Thanks, >>> Richard. >>> >>>> Thanks, >>>> >>>> David >>>> >>>> On Fri, Jun 10, 2011 at 9:22 AM, Xinliang David Li wrote: >>>>> On Fri, Jun 10, 2011 at 1:52 AM, Richard Guenther >>>>> wrote: >>>>>> On Thu, Jun 9, 2011 at 5:47 PM, Xinliang David Li wrote: >>>>>>> See attached. >>>>>> >>>>>> Hmm. =A0I don't like how you still wire dumping in the TODO routines. >>>>>> Doesn't it work to just dump the body from pass_fini_dump_file ()? >>>>>> Or if that doesn't sound clean from (a subset of) places where it >>>>>> is called? (we might want to exclude the ipa read/write/summary >>>>>> stages) >>>>> >>>>> That may require another round of function traversal -- but probably >>>>> not a big deal -- it sounds cleaner. >>>>> >>>>> David >>>>> >>>>>> >>>>>> Richard. >>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> David >>>>>>> >>>>>>> On Thu, Jun 9, 2011 at 2:02 AM, Richard Guenther >>>>>>> wrote: >>>>>>>> On Thu, Jun 9, 2011 at 12:31 AM, Xinliang David Li wrote: >>>>>>>>> this is the patch that just removes the TODO_dump flag and forces= it >>>>>>>>> to dump. The original code cfun->last_verified =3D flags & >>>>>>>>> TODO_verify_all looks weird -- depending on TODO_dump is set or n= ot, >>>>>>>>> the behavior of the update is different (when no other todo flags= is >>>>>>>>> set). >>>>>>>>> >>>>>>>>> Ok for trunk? >>>>>>>> >>>>>>>> -ENOPATCH. >>>>>>>> >>>>>>>> Richard. >>>>>>>> >>>>>>>>> David >>>>>>>>> >>>>>>>>> On Wed, Jun 8, 2011 at 9:52 AM, Xinliang David Li wrote: >>>>>>>>>> On Wed, Jun 8, 2011 at 2:06 AM, Richard Guenther >>>>>>>>>> wrote: >>>>>>>>>>> On Wed, Jun 8, 2011 at 1:08 AM, Xinliang David Li wrote: >>>>>>>>>>>> The following is the patch that does the job. Most of the chan= ges are >>>>>>>>>>>> just =A0removing TODO_dump_func. The major change is in passes= .c and >>>>>>>>>>>> tree-pass.h. >>>>>>>>>>>> >>>>>>>>>>>> -fdump-xxx-yyy-start =A0 =A0 =A0 <-- dump before TODO_start >>>>>>>>>>>> -fdump-xxx-yyy-before =A0 =A0<-- dump before main pass after T= ODO_pass >>>>>>>>>>>> -fdump-xxx-yyy-after =A0 =A0 =A0 <-- dump after main pass befo= re TODO_finish >>>>>>>>>>>> -fdump-xxx-yyy-finish =A0 =A0 =A0<-- dump after TODO_finish >>>>>>>>>>> >>>>>>>>>>> Can we bikeshed a bit more about these names? >>>>>>>>>> >>>>>>>>>> These names may be less confusing: >>>>>>>>>> >>>>>>>>>> before_preparation >>>>>>>>>> before >>>>>>>>>> after >>>>>>>>>> after_cleanup >>>>>>>>>> >>>>>>>>>> David >>>>>>>>>> >>>>>>>>>>>=A0"start" and "before" >>>>>>>>>>> have no semantical difference to me ... as the dump before TODO= _start >>>>>>>>>>> of a pass and the dump after TODO_finish of the previous pass a= re >>>>>>>>>>> identical (hopefully ;)), maybe merge those into a -between fla= g? >>>>>>>>>>> If you'd specify it for a single pass then you'd get both -star= t and -finish >>>>>>>>>>> (using your naming scheme). =A0Splitting that dump(s) to differ= ent files >>>>>>>>>>> then might make sense (not sure about the name to use). >>>>>>>>>>> >>>>>>>>>>> Note that I find it extremely useful to have dumping done in >>>>>>>>>>> chronological order - splitting some of it to different files d= estroys >>>>>>>>>>> this, especially a dump after TODO_start or before TODO_finish >>>>>>>>>>> should appear in the same file (or we could also start splitting >>>>>>>>>>> individual TODO_ output into sub-dump-files). =A0I guess what w= ould >>>>>>>>>>> be nice instread would be a fancy dump-file viewer that could >>>>>>>>>>> show diffs, hide things like SCEV output, etc. >>>>>>>>>>> >>>>>>>>>>> I suppose a patch that removes the dump TODO and unconditionally >>>>>>>>>>> dumps at the current point would be a good preparation for this >>>>>>>>>>> enhancing patch. >>>>>>>>>>> >>>>>>>>>>> Richard. >>>>>>>>>>> >>>>>>>>>>>> The default is 'finish'. >>>>>>>>>>>> >>>>>>>>>>>> Does it look ok? >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> >>>>>>>>>>>> David >>>>>>>>>>>> >>>>>>>>>>>> On Tue, Jun 7, 2011 at 2:36 AM, Richard Guenther >>>>>>>>>>>> wrote: >>>>>>>>>>>>> On Mon, Jun 6, 2011 at 6:20 PM, Xinliang David Li wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Your patch doesn't really improve this but adds to the conf= usion. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> + =A0/* Override dump TODOs. =A0*/ >>>>>>>>>>>>>>> + =A0if (dump_file && (pass->todo_flags_finish & TODO_dump_= func) >>>>>>>>>>>>>>> + =A0 =A0 =A0&& (dump_flags & TDF_BEFORE)) >>>>>>>>>>>>>>> + =A0 =A0{ >>>>>>>>>>>>>>> + =A0 =A0 =A0pass->todo_flags_finish &=3D ~TODO_dump_func; >>>>>>>>>>>>>>> + =A0 =A0 =A0pass->todo_flags_start |=3D TODO_dump_func; >>>>>>>>>>>>>>> + =A0 =A0} >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> and certainly writing to pass is not ok. =A0And the TDF_BEF= ORE flag >>>>>>>>>>>>>>> looks misplaced as it controls TODOs, not dumping behavior. >>>>>>>>>>>>>>> Yes, it's a mess right now but the above looks like a hack = ontop >>>>>>>>>>>>>>> of that mess (maybe because of it, but well ...). >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> How about removing dumping TODO completely -- this can be do= ne easily >>>>>>>>>>>>>> -- I don't understand why pass wants extra control on the du= mping if >>>>>>>>>>>>>> user already asked for dumping -- it is annoying to see empt= y IR dump >>>>>>>>>>>>>> for a pass when I want to see it. >>>>>>>>>>>>>> >>>>>>>>>>>>>>> At least I would have expected to also get the dump after t= he >>>>>>>>>>>>>>> pass, not only the one before it with this dump flag. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Now, why can't you look at the previous pass output for the >>>>>>>>>>>>>>> before-dump (as I do usually)? >>>>>>>>>>>>>> >>>>>>>>>>>>>> For one thing, you need to either remember what is the previ= ous pass, >>>>>>>>>>>>>> or dump all passes which for large files can take very long = time. Even >>>>>>>>>>>>>> with all the dumps, you will need to eyeballing to find the = previous >>>>>>>>>>>>>> pass which may or may not have the IR dumped. >>>>>>>>>>>>>> >>>>>>>>>>>>>> How about removing dump TODO? >>>>>>>>>>>>> >>>>>>>>>>>>> Yeah, I think this would go in the right direction. =A0Curren= tly some passes >>>>>>>>>>>>> do not dump function bodies because they presumably do no IL >>>>>>>>>>>>> modification. =A0But this is certainly the minority (and some= passes do not >>>>>>>>>>>>> dump bodies even though they are modifying the IL ...). >>>>>>>>>>>>> >>>>>>>>>>>>> So I'd say we should by default dump function bodies. >>>>>>>>>>>>> >>>>>>>>>>>>> Note that there are three useful dumping positions (maybe fou= r), >>>>>>>>>>>>> before todo-start, after todo-start, before todo-finish and a= fter todo-finish. >>>>>>>>>>>>> By default we'd want after todo-finish. =A0When we no longer = dump via >>>>>>>>>>>>> a TODO then we could indeed use dump-flags to control this >>>>>>>>>>>>> (maybe -original for the body before todo-start). >>>>>>>>>>>>> >>>>>>>>>>>>> What to others think? >>>>>>>>>>>>> >>>>>>>>>>>>> Richard. >>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> >>>>>>>>>>>>>> David >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Richard. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > --000e0cd6e7c8cc1c7504a5b42e0a Content-Type: text/x-pascal; charset=US-ASCII; name="dump-where.p" Content-Disposition: attachment; filename="dump-where.p" Content-Transfer-Encoding: base64 X-Attachment-Id: f_goxgwx9q0 Content-length: 11135 MjAxMS0wNi0xNCAgRGF2aWQgTGkgIDxkYXZpZHhsQGdvb2dsZS5jb20+CgoJ KiBwYXNzZXMuYwoJKGRvX3Blcl9mdW5jdGlvbl90b3BvcmRlcik6ICBTdXBw b3J0IGZvciBkdW1wIHNwbGl0dGluZy4KCShleGVjdXRlX2Z1bmN0aW9uX2R1 bXApOiAgU3VwcG9ydCBmb3IgZHVtcCBzcGxpdHRpbmcuCgkocGFzc19pbml0 X2R1bXBfZmlsZSk6ICBTdXBwb3J0IGZvciBkdW1wIHNwbGl0dGluZy4KCShl eGVjdXRlX29uZV9pcGFfdHJhbnNmb3JtX3Bhc3MpOiBTdXBwb3J0IGZvciBk dW1wIHNwbGl0dGluZy4KCShleGVjdXRlX29uZV9wYXNzKTogU3VwcG9ydCBm b3IgZHVtcCBzcGxpdHRpbmcuCgpJbmRleDogdHJlZS1kdW1wLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gdHJlZS1kdW1wLmMJKHJldmlzaW9uIDE3 NTAzMikKKysrIHRyZWUtZHVtcC5jCSh3b3JraW5nIGNvcHkpCkBAIC04MjIs NiArODIyLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHVtcF9vcHRpb25f dmFsdWVfaW4KICAgeyJlaCIsIFRERl9FSH0sCiAgIHsiYWxpYXMiLCBUREZf QUxJQVN9LAogICB7Im5vdWlkIiwgVERGX05PVUlEfSwKKyAgeyJiZWZvcmVf cHJlcGFyYXRpb24iLCBUREZfU1RBUlR9LAorICB7ImJlZm9yZSIsIFRERl9C RUZPUkV9LAorICB7ImFmdGVyIiwgVERGX0FGVEVSfSwKKyAgeyJhZnRlcl9j bGVhbnVwIiwgVERGX0ZJTklTSH0sCiAgIHsiZW51bWVyYXRlX2xvY2FscyIs IFRERl9FTlVNRVJBVEVfTE9DQUxTfSwKICAgeyJhbGwiLCB+KFRERl9SQVcg fCBUREZfU0xJTSB8IFRERl9MSU5FTk8gfCBUREZfVFJFRSB8IFRERl9SVEwg fCBUREZfSVBBCiAJICAgIHwgVERGX1NUTVRBRERSIHwgVERGX0dSQVBIIHwg VERGX0RJQUdOT1NUSUMgfCBUREZfVkVSQk9TRQpJbmRleDogdHJlZS1wYXNz LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJlZS1wYXNzLmgJKHJl dmlzaW9uIDE3NTAzMikKKysrIHRyZWUtcGFzcy5oCSh3b3JraW5nIGNvcHkp CkBAIC04Myw2ICs4MywxMSBAQCBlbnVtIHRyZWVfZHVtcF9pbmRleAogI2Rl ZmluZSBUREZfQUxJQVMJKDEgPDwgMjEpCS8qIGRpc3BsYXkgYWxpYXMgaW5m b3JtYXRpb24gICovCiAjZGVmaW5lIFRERl9FTlVNRVJBVEVfTE9DQUxTICgx IDw8IDIyKQkvKiBFbnVtZXJhdGUgbG9jYWxzIGJ5IHVpZC4gICovCiAjZGVm aW5lIFRERl9DU0VMSUIJKDEgPDwgMjMpCS8qIER1bXAgY3NlbGliIGRldGFp bHMuICAqLworI2RlZmluZSBUREZfU1RBUlQgICAgICAgKDEgPDwgMjQpCS8q IER1bXAgYmVmb3JlIFRPRE9fc3RhcnQuICAqLworI2RlZmluZSBUREZfQkVG T1JFICAgICAgKDEgPDwgMjUpCS8qIER1bXAgYmVmb3JlIHBhc3MuICAqLwor I2RlZmluZSBUREZfQUZURVIgICAgICAgKDEgPDwgMjYpCS8qIER1bXAgYWZ0 ZXIgcGFzcy4gICovCisjZGVmaW5lIFRERl9GSU5JU0ggICAgICAoMSA8PCAy NykJLyogRHVtcCBhZnRlciBUT0RPX2ZpbmlzaC4gICovCisKIAogCiAvKiBJ biB0cmVlLWR1bXAuYyAqLwpJbmRleDogcGFzc2VzLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gcGFzc2VzLmMJKHJldmlzaW9uIDE3NTA1MSkKKysr IHBhc3Nlcy5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcgQEAg aW50IGR1bXBfZmxhZ3M7CiBib29sIGluX2dpbXBsZV9mb3JtOwogYm9vbCBm aXJzdF9wYXNzX2luc3RhbmNlOwogCitzdGF0aWMgRklMRSAqZHVtcF9maWxl X3N0YXJ0LCAqZHVtcF9maWxlX2JlZm9yZSwgKmR1bXBfZmlsZV9hZnRlciwg KmR1bXBfZmlsZV9maW5pc2g7CiAKIC8qIFRoaXMgaXMgY2FsbGVkIGZyb20g dmFyaW91cyBwbGFjZXMgZm9yIEZVTkNUSU9OX0RFQ0wsIFZBUl9ERUNMLAog ICAgYW5kIFRZUEVfREVDTCBub2Rlcy4KQEAgLTE2MDUsMjEgKzE2MDYsMjMg QEAgZG9fcGVyX2Z1bmN0aW9uX3RvcG9yZGVyICh2b2lkICgqY2FsbGJhYwog LyogSGVscGVyIGZ1bmN0aW9uIHRvIHBlcmZvcm0gZnVuY3Rpb24gYm9keSBk dW1wLiAgKi8KIAogc3RhdGljIHZvaWQKLWV4ZWN1dGVfZnVuY3Rpb25fZHVt cCAodm9pZCAqZGF0YSBBVFRSSUJVVEVfVU5VU0VEKQorZXhlY3V0ZV9mdW5j dGlvbl9kdW1wICh2b2lkICpkYXRhKQogewotICBpZiAoZHVtcF9maWxlICYm IGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkKKyAgRklMRSAqZGYgPSAoRklMRSAq KWRhdGE7CisKKyAgaWYgKGRmICYmIGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkK ICAgICB7CiAgICAgICBpZiAoY2Z1bi0+Y3Vycl9wcm9wZXJ0aWVzICYgUFJP UF90cmVlcykKLSAgICAgICAgZHVtcF9mdW5jdGlvbl90b19maWxlIChjdXJy ZW50X2Z1bmN0aW9uX2RlY2wsIGR1bXBfZmlsZSwgZHVtcF9mbGFncyk7Cisg ICAgICAgIGR1bXBfZnVuY3Rpb25fdG9fZmlsZSAoY3VycmVudF9mdW5jdGlv bl9kZWNsLCBkZiwgZHVtcF9mbGFncyk7CiAgICAgICBlbHNlCiAJewogCSAg aWYgKGR1bXBfZmxhZ3MgJiBUREZfU0xJTSkKLQkgICAgcHJpbnRfcnRsX3Ns aW1fd2l0aF9iYiAoZHVtcF9maWxlLCBnZXRfaW5zbnMgKCksIGR1bXBfZmxh Z3MpOworCSAgICBwcmludF9ydGxfc2xpbV93aXRoX2JiIChkZiwgZ2V0X2lu c25zICgpLCBkdW1wX2ZsYWdzKTsKIAkgIGVsc2UgaWYgKChjZnVuLT5jdXJy X3Byb3BlcnRpZXMgJiBQUk9QX2NmZykKIAkJICAgJiYgKGR1bXBfZmxhZ3Mg JiBUREZfQkxPQ0tTKSkKLQkgICAgcHJpbnRfcnRsX3dpdGhfYmIgKGR1bXBf ZmlsZSwgZ2V0X2luc25zICgpKTsKKwkgICAgcHJpbnRfcnRsX3dpdGhfYmIg KGRmLCBnZXRfaW5zbnMgKCkpOwogICAgICAgICAgIGVsc2UKLQkgICAgcHJp bnRfcnRsIChkdW1wX2ZpbGUsIGdldF9pbnNucyAoKSk7CisJICAgIHByaW50 X3J0bCAoZGYsIGdldF9pbnNucyAoKSk7CiAKIAkgIGlmICgoY2Z1bi0+Y3Vy cl9wcm9wZXJ0aWVzICYgUFJPUF9jZmcpCiAJICAgICAgJiYgZ3JhcGhfZHVt cF9mb3JtYXQgIT0gbm9fZ3JhcGgKQEAgLTE2MjksNyArMTYzMiw3IEBAIGV4 ZWN1dGVfZnVuY3Rpb25fZHVtcCAodm9pZCAqZGF0YSBBVFRSSUIKIAogICAg ICAgLyogRmx1c2ggdGhlIGZpbGUuICBJZiB2ZXJpZmljYXRpb24gZmFpbHMs IHdlIHdvbid0IGJlIGFibGUgdG8KIAkgY2xvc2UgdGhlIGZpbGUgYmVmb3Jl IGFib3J0aW5nLiAgKi8KLSAgICAgIGZmbHVzaCAoZHVtcF9maWxlKTsKKyAg ICAgIGZmbHVzaCAoZGYpOwogICAgIH0KIH0KIApAQCAtMTc4NCw2ICsxNzg3 LDUwIEBAIHZlcmlmeV9jdXJyX3Byb3BlcnRpZXMgKHZvaWQgKmRhdGEpCiB9 CiAjZW5kaWYKIAorCisvKiBIZWxwZXIgZnVuY3Rpb24gdG8gc2V0IHVwIGZp bGUgZGVzY3JpcHRvcnMgZm9yIElSIGR1bXBzLiBXSEVSRV9GTEFHCisgICBp cyB0aGUgZmxhZyBpbmRpY2F0aW5nIHdoZXJlIHRoZSBJUiBjb21lIGZyb207 IFNVRkZJWCBpcyB0aGUgZmlsZSBzdWZmaXgKKyAgIG9mIHRoZSBkdW1wIGZp bGUsIGFuZCBNT0RFIGlzIHRoZSBmaWxlIG9wZW4gbW9kZS4gICovCisKK3N0 YXRpYyBGSUxFICoKK2luaXRfaXJfZHVtcF9maWxlIChpbnQgd2hlcmVfZmxh ZywgY29uc3QgY2hhciAqc3VmZml4LCBjb25zdCBjaGFyICptb2RlKQorewor ICBpZiAoZHVtcF9mbGFncyAmIHdoZXJlX2ZsYWcpCisgICAgeworICAgICAg Y2hhciAqZHVtcF9uYW1lID0gY29uY2F0IChkdW1wX2ZpbGVfbmFtZSwgc3Vm Zml4LCBOVUxMKTsKKyAgICAgIEZJTEUgKnN0cmVhbSA9IGZvcGVuIChkdW1w X25hbWUsIG1vZGUpOworICAgICAgaWYgKCFzdHJlYW0pCisgICAgICAgIGVy cm9yICgiY291bGQgbm90IG9wZW4gZHVtcCBmaWxlICVxczogJW0iLCBkdW1w X25hbWUpOworICAgICAgZnJlZSAoZHVtcF9uYW1lKTsKKyAgICAgIGlmIChj dXJyZW50X2Z1bmN0aW9uX2RlY2wpCisgICAgICAgIGR1bXBfZnVuY3Rpb25f aGVhZGVyIChzdHJlYW0sIGN1cnJlbnRfZnVuY3Rpb25fZGVjbCwgZHVtcF9m bGFncyk7CisgICAgICByZXR1cm4gc3RyZWFtOworICAgIH0KKyAgZWxzZQor ICAgIHJldHVybiBkdW1wX2ZpbGU7Cit9CisKKy8qIEhlbHBlciBmdW5jdGlv biB0byBzZXQgdXAgZmlsZSBkZXNjcmlwdG9ycyBmb3IgSVIgZHVtcHMuICAq LworCitzdGF0aWMgdm9pZAorcGFzc19pbml0X2lyX2R1bXBfZmlsZXMgKHN0 cnVjdCBvcHRfcGFzcyAqcGFzcykKK3sKKyAgc3RydWN0IGR1bXBfZmlsZV9p bmZvICpkZmk7CisgIGNvbnN0IGNoYXIgKm1vZGU7CisKKyAgaWYgKCFkdW1w X2ZpbGUpCisgICAgcmV0dXJuOworCisgIGRmaSA9IGdldF9kdW1wX2ZpbGVf aW5mbyAocGFzcy0+c3RhdGljX3Bhc3NfbnVtYmVyKTsKKyAgbW9kZSA9IGRm aS0+c3RhdGUgPCAwID8gInciIDogImEiOworCisgIGR1bXBfZmlsZV9zdGFy dCA9IGluaXRfaXJfZHVtcF9maWxlIChUREZfU1RBUlQsICIuYmVmb3JlX3By ZXBhcmF0aW9uIiwgbW9kZSk7CisgIGR1bXBfZmlsZV9iZWZvcmUgPSBpbml0 X2lyX2R1bXBfZmlsZSAoVERGX0JFRk9SRSwgIi5iZWZvcmUiLCBtb2RlKTsK KyAgZHVtcF9maWxlX2FmdGVyID0gaW5pdF9pcl9kdW1wX2ZpbGUgKFRERl9B RlRFUiwgIi5hZnRlciIsIG1vZGUpOworICBkdW1wX2ZpbGVfZmluaXNoID0g aW5pdF9pcl9kdW1wX2ZpbGUgKFRERl9GSU5JU0gsICIuYWZ0ZXJfY2xlYW51 cCIsIG1vZGUpOworfQorCisKIC8qIEluaXRpYWxpemUgcGFzcyBkdW1wIGZp bGUuICAqLwogLyogVGhpcyBpcyBub24tc3RhdGljIHNvIHRoYXQgdGhlIHBs dWdpbnMgY2FuIHVzZSBpdC4gICovCiAKQEAgLTE3OTgsMTIgKzE4NDUsMzUg QEAgcGFzc19pbml0X2R1bXBfZmlsZSAoc3RydWN0IG9wdF9wYXNzICpwYQog ICAgICAgZHVtcF9maWxlID0gZHVtcF9iZWdpbiAocGFzcy0+c3RhdGljX3Bh c3NfbnVtYmVyLCAmZHVtcF9mbGFncyk7CiAgICAgICBpZiAoZHVtcF9maWxl ICYmIGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkKICAgICAgICAgZHVtcF9mdW5j dGlvbl9oZWFkZXIgKGR1bXBfZmlsZSwgY3VycmVudF9mdW5jdGlvbl9kZWNs LCBkdW1wX2ZsYWdzKTsKKworICAgICAgaWYgKGR1bXBfZmlsZSkKKyAgICAg ICAgcGFzc19pbml0X2lyX2R1bXBfZmlsZXMgKHBhc3MpOworCiAgICAgICBy ZXR1cm4gaW5pdGlhbGl6aW5nX2R1bXA7CiAgICAgfQogICBlbHNlCiAgICAg cmV0dXJuIGZhbHNlOwogfQogCisvKiBDbG9zZSBkdW1wIGZpbGVzLiAgKi8K Kworc3RhdGljIHZvaWQKK2Nsb3NlX2lyX2R1bXBfZmlsZSAodm9pZCkKK3sK KyAgaWYgKGR1bXBfZmlsZV9zdGFydCAhPSBkdW1wX2ZpbGUpCisgICAgZmNs b3NlIChkdW1wX2ZpbGVfc3RhcnQpOworICBkdW1wX2ZpbGVfc3RhcnQgPSBO VUxMOworICBpZiAoZHVtcF9maWxlX2JlZm9yZSAhPSBkdW1wX2ZpbGUpCisg ICAgZmNsb3NlIChkdW1wX2ZpbGVfYmVmb3JlKTsKKyAgZHVtcF9maWxlX2Jl Zm9yZSA9IE5VTEw7CisgIGlmIChkdW1wX2ZpbGVfYWZ0ZXIgIT0gZHVtcF9m aWxlKQorICAgIGZjbG9zZSAoZHVtcF9maWxlX2FmdGVyKTsKKyAgZHVtcF9m aWxlX2FmdGVyID0gTlVMTDsKKyAgaWYgKGR1bXBfZmlsZV9maW5pc2ggIT0g ZHVtcF9maWxlKQorICAgIGZjbG9zZSAoZHVtcF9maWxlX2ZpbmlzaCk7Cisg IGR1bXBfZmlsZV9maW5pc2ggPSBOVUxMOworfQorCiAvKiBGbHVzaCBQQVNT IGR1bXAgZmlsZS4gICovCiAvKiBUaGlzIGlzIG5vbi1zdGF0aWMgc28gdGhh dCBwbHVnaW5zIGNhbiB1c2UgaXQuICAqLwogCkBAIC0xODExLDYgKzE4ODEs NyBAQCB2b2lkCiBwYXNzX2ZpbmlfZHVtcF9maWxlIChzdHJ1Y3Qgb3B0X3Bh c3MgKnBhc3MpCiB7CiAgIC8qIEZsdXNoIGFuZCBjbG9zZSBkdW1wIGZpbGUu ICAqLworICBjbG9zZV9pcl9kdW1wX2ZpbGUgKCk7CiAgIGlmIChkdW1wX2Zp bGVfbmFtZSkKICAgICB7CiAgICAgICBmcmVlIChDT05TVF9DQVNUIChjaGFy ICosIGR1bXBfZmlsZV9uYW1lKSk7CkBAIC0xODg2LDkgKzE5NTcsMTUgQEAg ZXhlY3V0ZV9vbmVfaXBhX3RyYW5zZm9ybV9wYXNzIChzdHJ1Y3QgYwogCiAg IHBhc3NfaW5pdF9kdW1wX2ZpbGUgKHBhc3MpOwogCisgIGlmIChkdW1wX2Zp bGUgJiYgKGR1bXBfZmxhZ3MgJiBUREZfU1RBUlQpKQorICAgIGRvX3Blcl9m dW5jdGlvbiAoZXhlY3V0ZV9mdW5jdGlvbl9kdW1wLCBkdW1wX2ZpbGVfc3Rh cnQpOworCiAgIC8qIFJ1biBwcmUtcGFzcyB2ZXJpZmljYXRpb24uICAqLwog ICBleGVjdXRlX3RvZG8gKGlwYV9wYXNzLT5mdW5jdGlvbl90cmFuc2Zvcm1f dG9kb19mbGFnc19zdGFydCk7CiAKKyAgaWYgKGR1bXBfZmlsZSAmJiAoZHVt cF9mbGFncyAmIFRERl9CRUZPUkUpKQorICAgIGRvX3Blcl9mdW5jdGlvbiAo ZXhlY3V0ZV9mdW5jdGlvbl9kdW1wLCBkdW1wX2ZpbGVfYmVmb3JlKTsKKwog ICAvKiBJZiBhIHRpbWV2YXIgaXMgcHJlc2VudCwgc3RhcnQgaXQuICAqLwog ICBpZiAocGFzcy0+dHZfaWQgIT0gVFZfTk9ORSkKICAgICB0aW1ldmFyX3B1 c2ggKHBhc3MtPnR2X2lkKTsKQEAgLTE5MDAsMTEgKzE5NzcsMTUgQEAgZXhl Y3V0ZV9vbmVfaXBhX3RyYW5zZm9ybV9wYXNzIChzdHJ1Y3QgYwogICBpZiAo cGFzcy0+dHZfaWQgIT0gVFZfTk9ORSkKICAgICB0aW1ldmFyX3BvcCAocGFz cy0+dHZfaWQpOwogCisgIGlmIChkdW1wX2ZpbGUgJiYgKGR1bXBfZmxhZ3Mg JiBUREZfQUZURVIpKQorICAgIGRvX3Blcl9mdW5jdGlvbiAoZXhlY3V0ZV9m dW5jdGlvbl9kdW1wLCBkdW1wX2ZpbGVfYWZ0ZXIpOworCiAgIC8qIFJ1biBw b3N0LXBhc3MgY2xlYW51cCBhbmQgdmVyaWZpY2F0aW9uLiAgKi8KICAgZXhl Y3V0ZV90b2RvICh0b2RvX2FmdGVyKTsKICAgdmVyaWZ5X2ludGVycGFzc19p bnZhcmlhbnRzICgpOwogCi0gIGRvX3Blcl9mdW5jdGlvbiAoZXhlY3V0ZV9m dW5jdGlvbl9kdW1wLCBOVUxMKTsKKyAgaWYgKGR1bXBfZmlsZSkKKyAgICBk b19wZXJfZnVuY3Rpb24gKGV4ZWN1dGVfZnVuY3Rpb25fZHVtcCwgZHVtcF9m aWxlX2ZpbmlzaCk7CiAgIHBhc3NfZmluaV9kdW1wX2ZpbGUgKHBhc3MpOwog CiAgIGN1cnJlbnRfcGFzcyA9IE5VTEw7CkBAIC0yMDA1LDkgKzIwODYsMTUg QEAgZXhlY3V0ZV9vbmVfcGFzcyAoc3RydWN0IG9wdF9wYXNzICpwYXNzKQog CiAgIGluaXRpYWxpemluZ19kdW1wID0gcGFzc19pbml0X2R1bXBfZmlsZSAo cGFzcyk7CiAKKyAgaWYgKGR1bXBfZmlsZSAmJiAoZHVtcF9mbGFncyAmIFRE Rl9TVEFSVCkpCisgICAgZG9fcGVyX2Z1bmN0aW9uIChleGVjdXRlX2Z1bmN0 aW9uX2R1bXAsIGR1bXBfZmlsZV9zdGFydCk7CisKICAgLyogUnVuIHByZS1w YXNzIHZlcmlmaWNhdGlvbi4gICovCiAgIGV4ZWN1dGVfdG9kbyAocGFzcy0+ dG9kb19mbGFnc19zdGFydCk7CiAKKyAgaWYgKGR1bXBfZmlsZSAmJiAoZHVt cF9mbGFncyAmIFRERl9CRUZPUkUpKQorICAgIGRvX3Blcl9mdW5jdGlvbiAo ZXhlY3V0ZV9mdW5jdGlvbl9kdW1wLCBkdW1wX2ZpbGVfYmVmb3JlKTsKKwog I2lmZGVmIEVOQUJMRV9DSEVDS0lORwogICBkb19wZXJfZnVuY3Rpb24gKHZl cmlmeV9jdXJyX3Byb3BlcnRpZXMsCiAJCSAgICh2b2lkICopKHNpemVfdClw YXNzLT5wcm9wZXJ0aWVzX3JlcXVpcmVkKTsKQEAgLTIwNDIsMTAgKzIxMjks MTYgQEAgZXhlY3V0ZV9vbmVfcGFzcyAoc3RydWN0IG9wdF9wYXNzICpwYXNz KQogICAgICAgY2xlYW5fZ3JhcGhfZHVtcF9maWxlIChkdW1wX2ZpbGVfbmFt ZSk7CiAgICAgfQogCisgIGlmIChkdW1wX2ZpbGUgJiYgKGR1bXBfZmxhZ3Mg JiBUREZfQUZURVIpKQorICAgIGRvX3Blcl9mdW5jdGlvbiAoZXhlY3V0ZV9m dW5jdGlvbl9kdW1wLCBkdW1wX2ZpbGVfYWZ0ZXIpOworCiAgIC8qIFJ1biBw b3N0LXBhc3MgY2xlYW51cCBhbmQgdmVyaWZpY2F0aW9uLiAgKi8KICAgZXhl Y3V0ZV90b2RvICh0b2RvX2FmdGVyIHwgcGFzcy0+dG9kb19mbGFnc19maW5p c2gpOwogICB2ZXJpZnlfaW50ZXJwYXNzX2ludmFyaWFudHMgKCk7Ci0gIGRv X3Blcl9mdW5jdGlvbiAoZXhlY3V0ZV9mdW5jdGlvbl9kdW1wLCBOVUxMKTsK KworICBpZiAoZHVtcF9maWxlKQorICAgIGRvX3Blcl9mdW5jdGlvbiAoZXhl Y3V0ZV9mdW5jdGlvbl9kdW1wLCBkdW1wX2ZpbGVfZmluaXNoKTsKKwogICBp ZiAocGFzcy0+dHlwZSA9PSBJUEFfUEFTUykKICAgICB7CiAgICAgICBzdHJ1 Y3QgY2dyYXBoX25vZGUgKm5vZGU7Cg== --000e0cd6e7c8cc1c7504a5b42e0a--