From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14453 invoked by alias); 3 Jan 2013 01:16:00 -0000 Received: (qmail 14442 invoked by uid 22791); 3 Jan 2013 01:16:00 -0000 X-SWARE-Spam-Status: No, hits=-5.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-qa0-f45.google.com (HELO mail-qa0-f45.google.com) (209.85.216.45) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 03 Jan 2013 01:15:53 +0000 Received: by mail-qa0-f45.google.com with SMTP id j15so12098977qaq.11 for ; Wed, 02 Jan 2013 17:15:52 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-gm-message-state; bh=Sud+97xHIQdxQmaVP1vNWJkibh5kzZaTntqBuxSbyfI=; b=A0Pn74TGo3qzPpiIdSIMd53guryKG0EQKuQOqr/4U1PRqNou7M+kiiuRtzFhW/rGHn MNenudDH+KsNUjRWNfVNdKVQqPfzAb4ZNEB3xoulY3CsLCbs1siAtZQkToRi3IMUMVEE upRTEAe9AvwzJYnbolHyMz3xmSDGAM/6nPgqNNopoKwxl2G3cgIZUUu+0bqe5Hhk3mDR mXNnaopCnQA1ZgRmzZzLlBWfvjc/eRp23Dj+vgl/gLL27l5VUoFZMUa890UtTerBFgun 5VEwPIPiwapj2k7TJehet3+wnqYmJpmoJNVtUj0xKeE1zQy7FF8NxQXMdMgNRHo+uzNs xiEg== MIME-Version: 1.0 Received: by 10.224.179.211 with SMTP id br19mr24577611qab.43.1357175752422; Wed, 02 Jan 2013 17:15:52 -0800 (PST) Received: by 10.229.146.13 with HTTP; Wed, 2 Jan 2013 17:15:52 -0800 (PST) In-Reply-To: References: <20121221064539.0E1A7100704@rong.mtv.corp.google.com> <20121221092532.GA7055@kam.mff.cuni.cz> Date: Thu, 03 Jan 2013 01:16:00 -0000 Message-ID: Subject: Re: atomic update of profile counters (issue7000044) From: Rong Xu To: Xinliang David Li Cc: Jan Hubicka , GCC Patches , Andrew Pinski , reply@codereview.appspotmail.com Content-Type: multipart/mixed; boundary=485b397dcfdd9ef34f04d2581a39 X-Gm-Message-State: ALoCoQnlm5IQibDWAtNJh92ugC56c4JCwiUtgmZVLk0nERv6r0NF3W/hJjmFNZnv1mNVN+HYB0F63/VFXVQ8fA43s8gEZ3uSNTEkdQz+hxTpQuRgmPMpfpXpe9RfHwirvN3BvI2uhTQjUtUdt6TlM2ZDEmXk8ZkvoaFs1DHeh9hNqJ0odb+ou5tmZM1rgKpLNkGQAdF4NZjT 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: 2013-01/txt/msg00072.txt.bz2 --485b397dcfdd9ef34f04d2581a39 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 3377 Hi, Here is a new patch. The only difference is to declare __atomic_fetch_add as weak. This is needed for targets without sync/atomic builtin support. The patch contains a call to the builtin regardless of the new options -fprofile-gen-atomic. This results in a unsat in these targets even for regular profile-gen built. With this new patch, if the user uses -fprofile-gen-atomic in these target, the generated code will seg fault. We think a better solution is to emit the builtin call only in these targets with the support, and give warning for non-supported target. But I did not find any target hook for this. Does anyone know how to do this? Thanks, -Rong On Fri, Dec 28, 2012 at 11:35 AM, Xinliang David Li wrote: > It would be great if this can make into gcc4.8. The patch has close to > 0 impact on code stability. > > David > > On Fri, Dec 28, 2012 at 11:32 AM, Rong Xu wrote: >> Hi Honza, >> >> In the other thread of discussion (similar patch in google-4_7 >> branch), you said you were thinking if to let this patch into trunk in >> stage 3. Can you give some update? >> >> Thanks, >> >> -Rong >> >> On Fri, Dec 21, 2012 at 10:37 AM, Rong Xu wrote: >>> On Fri, Dec 21, 2012 at 1:25 AM, Jan Hubicka wrote: >>>>> Hi, >>>>> >>>>> This patch adds support of atomic update of profiles counters. The goal is to improve >>>>> the poor counter values for highly thread programs. >>>>> >>>>> The atomic update is under a new option -fprofile-gen-atomic= >>>>> N=0: default, no atomic update >>>>> N=1: atomic update edge counters. >>>>> N=2: atomic update some of value profile counters (currently indirect-call and one value profile). >>>>> N=3: both edge counter and the above value profile counters. >>>>> Other value: fall back to the default. >>>>> >>>>> This patch is a simple porting of the version in google-4_7 branch. It uses __atomic_fetch_add >>>>> based on Andrew Pinski's suggestion. Note I did not apply to all the value profiles as >>>>> the indirect-call profile is the most relevant one here. >>>>> >>>>> Test with bootstrap. >>>>> >>>>> Comments and suggestions are welcomed. >>>>> >>>>> Thanks, >>>>> >>>>> -Rong >>>>> >>>>> >>>>> 2012-12-20 Rong Xu >>>>> >>>>> * libgcc/libgcov.c (__gcov_one_value_profiler_body_atomic): New >>>>> function. Atomic update profile counters. >>>>> (__gcov_one_value_profiler_atomic): Ditto. >>>>> (__gcov_indirect_call_profiler_atomic): Ditto. >>>>> * gcc/gcov-io.h: Macros for atomic update. >>>>> * gcc/common.opt: New option. >>>>> * gcc/tree-profile.c (gimple_init_edge_profiler): Atomic >>>>> update profile counters. >>>>> (gimple_gen_edge_profiler): Ditto. >>>> >>>> The patch looks resonable. Eventually we probably should provide rest of the value counters >>>> in thread safe manner. What happens on targets not having atomic operations? >>> >>> From http://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html#_005f_005fsync-Builtins, >>> it says: >>> "If a particular operation cannot be implemented on the target >>> processor, a warning is generated and a call an external function is >>> generated. " >>> >>> So I think there will be a warning and eventually a link error of unsat. >>> >>> Thanks, >>> >>> -Rong >>> >>> >>>> >>>> Honza --485b397dcfdd9ef34f04d2581a39 Content-Type: application/octet-stream; name="patch2.diff" Content-Disposition: attachment; filename="patch2.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hbh7dr450 Content-length: 9903 MjAxMy0wMS0wMiAgUm9uZyBYdSAgPHh1ckBnb29nbGUuY29tPgogICAgICAg ICogbGliZ2NjL2xpYmdjb3YuYyAoX19nY292X29uZV92YWx1ZV9wcm9maWxl cl9ib2R5X2F0b21pYyk6IE5ldyAKICAgICAgICBmdW5jdGlvbi4gQXRvbWlj IHVwZGF0ZSBwcm9maWxlIGNvdW50ZXJzLgogICAgICAgIChfX2djb3Zfb25l X3ZhbHVlX3Byb2ZpbGVyX2F0b21pYyk6IERpdHRvLgogICAgICAgIChfX2dj b3ZfaW5kaXJlY3RfY2FsbF9wcm9maWxlcl9hdG9taWMpOiBEaXR0by4KICAg ICAgICAqIGdjYy9nY292LWlvLmg6IE1hY3JvcyBmb3IgYXRvbWljIHVwZGF0 ZQogICAgICAgICogZ2NjL2NvbW1vbi5vcHQ6IE5ldyBvcHRpb24uCiAgICAg ICAgKiBnY2MvdHJlZS1wcm9maWxlLmMgKGdpbXBsZV9pbml0X2VkZ2VfcHJv ZmlsZXIpOiBBdG9taWMKICAgICAgICB1cGRhdGUgcHJvZmlsZSBjb3VudGVy cy4KICAgICAgICAoZ2ltcGxlX2dlbl9lZGdlX3Byb2ZpbGVyKTogRGl0dG8u CgpJbmRleDogbGliZ2NjL2xpYmdjb3YuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBsaWJnY2MvbGliZ2Nvdi5jCShyZXZpc2lvbiAxOTQ2NTIpCisr KyBsaWJnY2MvbGliZ2Nvdi5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEzLDEy ICsxMTEzLDM1IEBAIF9fZ2Nvdl9vbmVfdmFsdWVfcHJvZmlsZXJfYm9keSAo Z2Nvdl90eXBlICpjb3VudGVyCiAgIGNvdW50ZXJzWzJdKys7CiB9CiAKKy8q IEF0b21pYyB1cGRhdGUgdmVyc2lvbiBvZiBfX2djb3Zfb25lX3ZhbHVlX3By b2ZpbGVfYm9keSgpLiAgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCAKK19fZ2Nv dl9vbmVfdmFsdWVfcHJvZmlsZXJfYm9keV9hdG9taWMgKGdjb3ZfdHlwZSAq Y291bnRlcnMsIGdjb3ZfdHlwZSB2YWx1ZSkKK3sKKyAgaWYgKHZhbHVlID09 IGNvdW50ZXJzWzBdKQorICAgIEdDT1ZfVFlQRV9BVE9NSUNfRkVUQ0hfQURE X0ZOICgmY291bnRlcnNbMV0sIDEsIE1FTU1PREVMX1JFTEFYRUQpOworICBl bHNlIGlmIChjb3VudGVyc1sxXSA9PSAwKQorICAgIHsgICAgCisgICAgICBj b3VudGVyc1sxXSA9IDE7IAorICAgICAgY291bnRlcnNbMF0gPSB2YWx1ZTsK KyAgICB9ICAgIAorICBlbHNlIAorICAgIEdDT1ZfVFlQRV9BVE9NSUNfRkVU Q0hfQUREX0ZOICgmY291bnRlcnNbMV0sIC0xLCBNRU1NT0RFTF9SRUxBWEVE KTsKKyAgR0NPVl9UWVBFX0FUT01JQ19GRVRDSF9BRERfRk4gKCZjb3VudGVy c1syXSwgMSwgTUVNTU9ERUxfUkVMQVhFRCk7Cit9CisKICNpZmRlZiBMX2dj b3Zfb25lX3ZhbHVlX3Byb2ZpbGVyCiB2b2lkCiBfX2djb3Zfb25lX3ZhbHVl X3Byb2ZpbGVyIChnY292X3R5cGUgKmNvdW50ZXJzLCBnY292X3R5cGUgdmFs dWUpCiB7CiAgIF9fZ2Nvdl9vbmVfdmFsdWVfcHJvZmlsZXJfYm9keSAoY291 bnRlcnMsIHZhbHVlKTsKIH0KKwordm9pZAorX19nY292X29uZV92YWx1ZV9w cm9maWxlcl9hdG9taWMgKGdjb3ZfdHlwZSAqY291bnRlcnMsIGdjb3ZfdHlw ZSB2YWx1ZSkKK3sKKyAgX19nY292X29uZV92YWx1ZV9wcm9maWxlcl9ib2R5 X2F0b21pYyAoY291bnRlcnMsIHZhbHVlKTsKK30KKwogI2VuZGlmCiAKICNp ZmRlZiBMX2djb3ZfaW5kaXJlY3RfY2FsbF9wcm9maWxlcgpAQCAtMTE1Myw2 ICsxMTc2LDE3IEBAIF9fZ2Nvdl9pbmRpcmVjdF9jYWxsX3Byb2ZpbGVyIChn Y292X3R5cGUqIGNvdW50ZXIsCiAJICAmJiAqKHZvaWQgKiopIGN1cl9mdW5j ID09ICoodm9pZCAqKikgY2FsbGVlX2Z1bmMpKQogICAgIF9fZ2Nvdl9vbmVf dmFsdWVfcHJvZmlsZXJfYm9keSAoY291bnRlciwgdmFsdWUpOwogfQorCisv KiBBdG9taWMgdXBkYXRlIHZlcnNpb24gb2YgX19nY292X2luZGlyZWN0X2Nh bGxfcHJvZmlsZXIoKS4gICovCit2b2lkCitfX2djb3ZfaW5kaXJlY3RfY2Fs bF9wcm9maWxlcl9hdG9taWMgKGdjb3ZfdHlwZSogY291bnRlciwgZ2Nvdl90 eXBlIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2b2lkKiBjdXJfZnVuYywgdm9pZCogY2FsbGVlX2Z1bmMpCit7Cisg IGlmIChjdXJfZnVuYyA9PSBjYWxsZWVfZnVuYworICAgICAgfHwgKFZUQUJM RV9VU0VTX0RFU0NSSVBUT1JTICYmIGNhbGxlZV9mdW5jCisgICAgICAgICAg JiYgKih2b2lkICoqKSBjdXJfZnVuYyA9PSAqKHZvaWQgKiopIGNhbGxlZV9m dW5jKSkKKyAgICBfX2djb3Zfb25lX3ZhbHVlX3Byb2ZpbGVyX2JvZHlfYXRv bWljIChjb3VudGVyLCB2YWx1ZSk7Cit9CiAjZW5kaWYKIAogCkluZGV4OiBn Y2MvY29tbW9uLm9wdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv Y29tbW9uLm9wdAkocmV2aXNpb24gMTk0NjUyKQorKysgZ2NjL2NvbW1vbi5v cHQJKHdvcmtpbmcgY29weSkKQEAgLTE2MzUsNiArMTYzNSwxNSBAQCBmcHJv ZmlsZS1jb3JyZWN0aW9uCiBDb21tb24gUmVwb3J0IFZhcihmbGFnX3Byb2Zp bGVfY29ycmVjdGlvbikKIEVuYWJsZSBjb3JyZWN0aW9uIG9mIGZsb3cgaW5j b25zaXN0ZW50IHByb2ZpbGUgZGF0YSBpbnB1dAogCis7IGZwcm9maWxlLWdl bi1hdG9taWM9MDogZGlzYWJsZSBhb3RpbWljYWxseSB1cGRhdGUuCis7IGZw cm9maWxlLWdlbi1hdG9taWM9MTogYW90aW1pY2FsbHkgdXBkYXRlIGVkZ2Ug cHJvZmlsZSBjb3VudGVycy4KKzsgZnByb2ZpbGUtZ2VuLWF0b21pYz0yOiBh b3RpbWljYWxseSB1cGRhdGUgdmFsdWUgcHJvZmlsZSBjb3VudGVycy4KKzsg ZnByb2ZpbGUtZ2VuLWF0b21pYz0zOiBhb3RpbWljYWxseSB1cGRhdGUgZWRn ZSBhbmQgdmFsdWUgcHJvZmlsZSBjb3VudGVycy4KKzsgb3RoZXIgdmFsdWVz IHdpbGwgYmUgaWdub3JlZCAoZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IG9m IDApLgorZnByb2ZpbGUtZ2VuLWF0b21pYz0KK0NvbW1vbiBKb2luZWQgVUlu dGVnZXIgUmVwb3J0IFZhcihmbGFnX3Byb2ZpbGVfZ2VuX2F0b21pYykgSW5p dCgwKSBPcHRpbWl6YXRpb24KK2Zwcm9maWxlLWdlbi1hdG9taWM9WzAuLjNd IEF0b21pY2FsbHkgaW5jcmVtZW50cyBmb3IgcHJvZmlsZSBjb3VudGVycy4K KwogZnByb2ZpbGUtZ2VuZXJhdGUKIENvbW1vbgogRW5hYmxlIGNvbW1vbiBv cHRpb25zIGZvciBnZW5lcmF0aW5nIHByb2ZpbGUgaW5mbyBmb3IgcHJvZmls ZSBmZWVkYmFjayBkaXJlY3RlZCBvcHRpbWl6YXRpb25zCkluZGV4OiBnY2Mv Z2Nvdi1pby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9nY292 LWlvLmgJKHJldmlzaW9uIDE5NDY1MikKKysrIGdjYy9nY292LWlvLmgJKHdv cmtpbmcgY29weSkKQEAgLTIwMiw3ICsyMDIsMTkgQEAgdHlwZWRlZiB1bnNp Z25lZCBnY292X3R5cGVfdW5zaWduZWQgX19hdHRyaWJ1dGVfXwogI2VuZGlm CiAjZW5kaWYKIAorI2lmIExPTkdfTE9OR19UWVBFX1NJWkUgPiAzMgorI2Rl ZmluZSBHQ09WX1RZUEVfQVRPTUlDX0ZFVENIX0FERF9GTiBfX2F0b21pY19m ZXRjaF9hZGRfOAorI2RlZmluZSBHQ09WX1RZUEVfQVRPTUlDX0ZFVENIX0FE RCBCVUlMVF9JTl9BVE9NSUNfRkVUQ0hfQUREXzgKKyNlbHNlCisjZGVmaW5l IEdDT1ZfVFlQRV9BVE9NSUNfRkVUQ0hfQUREX0ZOIF9fYXRvbWljX2ZldGNo X2FkZF80CisjZGVmaW5lIEdDT1ZfVFlQRV9BVE9NSUNfRkVUQ0hfQUREIEJV SUxUX0lOX0FUT01JQ19GRVRDSF9BRERfNAorI2VuZGlmCisvKiBNYWtlIHRo ZSBhdG9taWMgYnVpbHRpbiB3ZWFrLiBPdGhlcndpc2Ugd2UgZ2V0IGxpbmsg dW5zYXQgCisgICBpZiB0aGUgYnVpbHRpbiBpcyBub3QgYXZhaWxhYmxlLiAg Ki8KK2V4dGVybiBnY292X3R5cGUgR0NPVl9UWVBFX0FUT01JQ19GRVRDSF9B RERfRk4KKyAgKGdjb3ZfdHlwZSosIGdjb3ZfdHlwZSwgaW50KSBfX2F0dHJp YnV0ZV9fICgod2VhaykpOwogCisKICNpZiBkZWZpbmVkIChUQVJHRVRfUE9T SVhfSU8pCiAjZGVmaW5lIEdDT1ZfTE9DS0VEIDEKICNlbHNlCkBAIC0yMTIs NiArMjI0LDE4IEBAIHR5cGVkZWYgdW5zaWduZWQgZ2Nvdl90eXBlX3Vuc2ln bmVkIF9fYXR0cmlidXRlX18KICNlbHNlIC8qICFJTl9MSUJHQ09WICovCiAv KiBBYm91dCB0aGUgaG9zdCAqLwogCisjaWYgTE9OR19MT05HX1RZUEVfU0la RSA+IDMyCisjZGVmaW5lIEdDT1ZfVFlQRV9BVE9NSUNfRkVUQ0hfQUREX0ZO IF9fYXRvbWljX2ZldGNoX2FkZF84CisjZGVmaW5lIEdDT1ZfVFlQRV9BVE9N SUNfRkVUQ0hfQUREIEJVSUxUX0lOX0FUT01JQ19GRVRDSF9BRERfOAorI2Vs c2UKKyNkZWZpbmUgR0NPVl9UWVBFX0FUT01JQ19GRVRDSF9BRERfRk4gX19h dG9taWNfZmV0Y2hfYWRkXzQKKyNkZWZpbmUgR0NPVl9UWVBFX0FUT01JQ19G RVRDSF9BREQgQlVJTFRfSU5fQVRPTUlDX0ZFVENIX0FERF80CisjZW5kaWYK KyNkZWZpbmUgUFJPRklMRV9HRU5fRURHRV9BVE9NSUMgKGZsYWdfcHJvZmls ZV9nZW5fYXRvbWljID09IDEgfHwgXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmxhZ19wcm9maWxlX2dlbl9hdG9taWMgPT0gMykKKyNk ZWZpbmUgUFJPRklMRV9HRU5fVkFMVUVfQVRPTUlDIChmbGFnX3Byb2ZpbGVf Z2VuX2F0b21pYyA9PSAyIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmbGFnX3Byb2ZpbGVfZ2VuX2F0b21pYyA9PSAzKQorCiB0 eXBlZGVmIHVuc2lnbmVkIGdjb3ZfdW5zaWduZWRfdDsKIHR5cGVkZWYgdW5z aWduZWQgZ2Nvdl9wb3NpdGlvbl90OwogLyogZ2Nvdl90eXBlIGlzIHR5cGVk ZWYnZCBlbHNld2hlcmUgZm9yIHRoZSBjb21waWxlciAqLwpJbmRleDogZ2Nj L3RyZWUtcHJvZmlsZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdj Yy90cmVlLXByb2ZpbGUuYwkocmV2aXNpb24gMTk0NjUyKQorKysgZ2NjL3Ry ZWUtcHJvZmlsZS5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDEy IEBAIGdpbXBsZV9pbml0X2VkZ2VfcHJvZmlsZXIgKHZvaWQpCiAJICAgICAg PSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKHZvaWRfdHlwZV9ub2RlLAog CQkJCQkgIGdjb3ZfdHlwZV9wdHIsIGdjb3ZfdHlwZV9ub2RlLAogCQkJCQkg IE5VTExfVFJFRSk7Ci0gICAgICB0cmVlX29uZV92YWx1ZV9wcm9maWxlcl9m bgorICAgICAgaWYgKFBST0ZJTEVfR0VOX1ZBTFVFX0FUT01JQykKKyAgICAg ICAgdHJlZV9vbmVfdmFsdWVfcHJvZmlsZXJfZm4KKwkgICAgICA9IGJ1aWxk X2ZuX2RlY2wgKCJfX2djb3Zfb25lX3ZhbHVlX3Byb2ZpbGVyX2F0b21pYyIs CisJCQkJICAgICBvbmVfdmFsdWVfcHJvZmlsZXJfZm5fdHlwZSk7CisgICAg ICBlbHNlCisgICAgICAgIHRyZWVfb25lX3ZhbHVlX3Byb2ZpbGVyX2ZuCiAJ ICAgICAgPSBidWlsZF9mbl9kZWNsICgiX19nY292X29uZV92YWx1ZV9wcm9m aWxlciIsCiAJCQkJICAgICBvbmVfdmFsdWVfcHJvZmlsZXJfZm5fdHlwZSk7 CiAgICAgICBUUkVFX05PVEhST1cgKHRyZWVfb25lX3ZhbHVlX3Byb2ZpbGVy X2ZuKSA9IDE7CkBAIC0xNjMsOSArMTY4LDE0IEBAIGdpbXBsZV9pbml0X2Vk Z2VfcHJvZmlsZXIgKHZvaWQpCiAJCQkJCSAgZ2Nvdl90eXBlX3B0ciwgZ2Nv dl90eXBlX25vZGUsCiAJCQkJCSAgcHRyX3ZvaWQsCiAJCQkJCSAgcHRyX3Zv aWQsIE5VTExfVFJFRSk7Ci0gICAgICB0cmVlX2luZGlyZWN0X2NhbGxfcHJv ZmlsZXJfZm4KLQkgICAgICA9IGJ1aWxkX2ZuX2RlY2wgKCJfX2djb3ZfaW5k aXJlY3RfY2FsbF9wcm9maWxlciIsCi0JCQkJICAgICBpY19wcm9maWxlcl9m bl90eXBlKTsKKyAgICAgIGlmIChQUk9GSUxFX0dFTl9WQUxVRV9BVE9NSUMp CisgICAgICAgIHRyZWVfaW5kaXJlY3RfY2FsbF9wcm9maWxlcl9mbgorICAg ICAgICAgID0gYnVpbGRfZm5fZGVjbCAoIl9fZ2Nvdl9pbmRpcmVjdF9jYWxs X3Byb2ZpbGVyX2F0b21pYyIsCisJCQkgICBpY19wcm9maWxlcl9mbl90eXBl KTsKKyAgICAgIGVsc2UKKyAgICAgICAgdHJlZV9pbmRpcmVjdF9jYWxsX3By b2ZpbGVyX2ZuCisgICAgICAgICAgPSBidWlsZF9mbl9kZWNsICgiX19nY292 X2luZGlyZWN0X2NhbGxfcHJvZmlsZXIiLAorCQkJICAgaWNfcHJvZmlsZXJf Zm5fdHlwZSk7CiAgICAgICBUUkVFX05PVEhST1cgKHRyZWVfaW5kaXJlY3Rf Y2FsbF9wcm9maWxlcl9mbikgPSAxOwogICAgICAgREVDTF9BVFRSSUJVVEVT ICh0cmVlX2luZGlyZWN0X2NhbGxfcHJvZmlsZXJfZm4pCiAJPSB0cmVlX2Nv bnMgKGdldF9pZGVudGlmaWVyICgibGVhZiIpLCBOVUxMLApAQCAtMjExLDgg KzIyMSwyMSBAQCBnaW1wbGVfZ2VuX2VkZ2VfcHJvZmlsZXIgKGludCBlZGdl bm8sIGVkZ2UgZSkKICAgdHJlZSByZWYsIG9uZSwgZ2Nvdl90eXBlX3RtcF92 YXI7CiAgIGdpbXBsZSBzdG10MSwgc3RtdDIsIHN0bXQzOwogCisgIG9uZSA9 IGJ1aWxkX2ludF9jc3QgKGdjb3ZfdHlwZV9ub2RlLCAxKTsKKyAgaWYgKFBS T0ZJTEVfR0VOX0VER0VfQVRPTUlDKQorICAgIHsKKyAgICAgIHJlZiA9IHRy ZWVfY292ZXJhZ2VfY291bnRlcl9hZGRyIChHQ09WX0NPVU5URVJfQVJDUywg ZWRnZW5vKTsKKyAgICAgIC8qIF9fYXRvbWljX2ZldGNoX2FkZCAoJmNvdW50 ZXIsIDEsIE1FTU1PREVMX1JFTEFYRUQpOyAqLworICAgICAgc3RtdDEgPSBn aW1wbGVfYnVpbGRfY2FsbCAoYnVpbHRpbl9kZWNsX2V4cGxpY2l0ICgKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NPVl9UWVBFX0FU T01JQ19GRVRDSF9BREQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMywgcmVmLCBvbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVNTU9ERUxfUkVM QVhFRCkpOworICAgICBnc2lfaW5zZXJ0X29uX2VkZ2UgKGUsIHN0bXQxKTsK KyAgICAgcmV0dXJuOworICAgIH0KKwogICByZWYgPSB0cmVlX2NvdmVyYWdl X2NvdW50ZXJfcmVmIChHQ09WX0NPVU5URVJfQVJDUywgZWRnZW5vKTsKLSAg b25lID0gYnVpbGRfaW50X2NzdCAoZ2Nvdl90eXBlX25vZGUsIDEpOwogICBn Y292X3R5cGVfdG1wX3ZhciA9IG1ha2VfdGVtcF9zc2FfbmFtZSAoZ2Nvdl90 eXBlX25vZGUsCiAJCQkJCSAgTlVMTCwgIlBST0ZfZWRnZV9jb3VudGVyIik7 CiAgIHN0bXQxID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoZ2Nvdl90eXBlX3Rt cF92YXIsIHJlZik7Cg== --485b397dcfdd9ef34f04d2581a39--