From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 122245 invoked by alias); 9 Aug 2017 12:27:05 -0000 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 Received: (qmail 122222 invoked by uid 89); 9 Aug 2017 12:27:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.0 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-oi0-f66.google.com Received: from mail-oi0-f66.google.com (HELO mail-oi0-f66.google.com) (209.85.218.66) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 09 Aug 2017 12:27:01 +0000 Received: by mail-oi0-f66.google.com with SMTP id e124so5525846oig.0 for ; Wed, 09 Aug 2017 05:27:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=SXZRwHcqxy0Gtqw/MwRAOujigDg7s6DkmpyYvvoeFG4=; b=iSRzfDdIOwJ78vdO4fqCKavECDQnItzqM5krENYNrW8jQatgF6zIoF7nhrxu//Dzc2 xtxFmg6nyMaKleB+luGSr84cBCR5TThdMAp/N+y9RmZeAGJEpGqRIWSwNxm/lSl7D/oO Lm06bvewYuV2puf3qX18lCsrINmxKFkYZIi21f0y+2ZyuRheAnsv3KZDGCaYJ1MuVtfs QU8lNsShtZOOwbp56K+bAam4F+dIMphzK4ePT4VJ3ffo29bJEUuEGQj9jZaa8qi69Pzv +kt1gGS2r913srhElOG2Jg1ZesMk4X0hy58M1E2oigARq41WbwiLzxsiTpXuml0mdwjX NPVQ== X-Gm-Message-State: AHYfb5g1zBeuLXYD2wOesjow2X6m/AlTZKDacqNeCo4SnCc5OWOPjx2g Y7cVgFSNe2tZWkm1ZeOf6gxR91U7uw== X-Received: by 10.202.192.84 with SMTP id q81mr8572993oif.88.1502281619376; Wed, 09 Aug 2017 05:26:59 -0700 (PDT) MIME-Version: 1.0 Received: by 10.74.136.75 with HTTP; Wed, 9 Aug 2017 05:26:58 -0700 (PDT) In-Reply-To: References: <20170806194037.GA25845@gmail.com> <20170807154311.GN2123@tucnak> <9c734d2b-7ba2-057b-7505-a7b300cde472@linux.intel.com> <878tivdtz9.fsf@linaro.org> <87wp6e7ykz.fsf@linaro.org> <87shh27yho.fsf@linaro.org> <87d18589em.fsf@linaro.org> From: "H.J. Lu" Date: Wed, 09 Aug 2017 12:27:00 -0000 Message-ID: Subject: Re: [PATCH] i386: Don't use frame pointer without stack access To: Michael Matz Cc: Richard Biener , Richard Sandiford , GCC Patches , Arjan van de Ven , Jakub Jelinek , Alexander Monakov , Uros Bizjak Content-Type: multipart/mixed; boundary="001a113ddc6c473ce905565132a6" X-IsSubscribed: yes X-SW-Source: 2017-08/txt/msg00661.txt.bz2 --001a113ddc6c473ce905565132a6 Content-Type: text/plain; charset="UTF-8" Content-length: 1361 On Wed, Aug 9, 2017 at 4:59 AM, Michael Matz wrote: > Hi, > > On Wed, 9 Aug 2017, H.J. Lu wrote: > >> > OK, but then both -f[no-]omit-frame-pointer do not have clearly defined semantics and thus shouldn't be exposed to the user? >> >> -f[no-]omit-frame-pointer apply to cases where a new stack frame >> is needed. -fno-omit-frame-pointer allows you to unwind each >> stack frame, not necessarily each function, via frame pointer. >> -fno-omit-frame-pointer may not create a new stack frame for >> each function, similar to LTO or function inlining. But you can still >> unwind via frame pointer. We never guarantee that we will create >> a new stack frame for each function. Some functions are inlined >> completely. Some just use the caller's stack frame. > > Maybe something along these lines should be added to the docu of > fno-omit-frame-pointer then. At least "Note that -fno-omit-frame-pointer > doesn't force a frame for all functions if it isn't otherwise needed, and > hence doesn't guarantee a frame pointer for all functions." . > Like this? Note that @option{-fno-omit-frame-pointer} doesn't force a new stack frame for all functions if it isn't otherwise needed, and hence doesn't guarantee a new frame pointer for all functions. Here is the updated patch with a note for -fno-omit-frame-pointer. OK for trunk? -- H.J. --001a113ddc6c473ce905565132a6 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-i386-Don-t-use-frame-pointer-without-stack-access.patch" Content-Disposition: attachment; filename="0001-i386-Don-t-use-frame-pointer-without-stack-access.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j64zmlxy0 Content-length: 12196 RnJvbSA0ZjYxOTc2OTlhYjA5MDQ2NzE5MTkxODdjNzFkNGE1NDU5NGMxNDMx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFN1biwgNiBBdWcgMjAxNyAwNjoy NDozNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGkzODY6IERvbid0IHVzZSBm cmFtZSBwb2ludGVyIHdpdGhvdXQgc3RhY2sgYWNjZXNzCgpXaGVuIHRoZXJl IGlzIG5vIHN0YWNrIGFjY2VzcywgdGhlcmUgaXMgbm8gbmVlZCB0byB1c2Ug ZnJhbWUgcG9pbnRlcgpldmVuIGlmIC1mbm8tb21pdC1mcmFtZS1wb2ludGVy IGlzIHVzZWQgYW5kIGNhbGxlcidzIGZyYW1lIHBvaW50ZXIgaXMKdW5jaGFu Z2VkLgoKZ2NjLwoKCVBSIHRhcmdldC84MTczNgoJKiBjb25maWcvaTM4Ni9p Mzg2LmMgKGl4ODZfZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncyk6IFJl bmFtZWQKCXRvIC4uLgoJKGl4ODZfZmluYWxpemVfc3RhY2tfZnJhbWVfZmxh Z3MpOiBUaGlzLiAgQWxzbyBjbGVhcgoJZnJhbWVfcG9pbnRlcl9uZWVkZWQg aWYgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgaXMgdXNlZCB3aXRob3V0Cglz dGFjayBhY2Nlc3MuCgkoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiBSZXBsYWNl IGl4ODZfZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncwoJd2l0aCBpeDg2 X2ZpbmFsaXplX3N0YWNrX2ZyYW1lX2ZsYWdzLgoJKGl4ODZfZXhwYW5kX2Vw aWxvZ3VlKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfc3BsaXRfc3RhY2tf cHJvbG9ndWUpOiBMaWtld2lzZS4KCSogZG9jL2ludm9rZS50ZXhpOiBBZGQg YSBub3RlIGZvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlci4KCmdjYy90ZXN0 c3VpdGUvCgoJUFIgdGFyZ2V0LzgxNzM2CgkqIGdjYy50YXJnZXQvaTM4Ni9w cjgxNzM2LTEuYzogTmV3IHRlc3QuCgkqIGdjYy50YXJnZXQvaTM4Ni9wcjgx NzM2LTIuYzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvaTM4Ni9wcjgxNzM2 LTMuYzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvaTM4Ni9wcjgxNzM2LTQu YzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvaTM4Ni9wcjgxNzM2LTUuYzog TGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvaTM4Ni9wcjgxNzM2LTYuYzogTGlr ZXdpc2UuCgkqIGdjYy50YXJnZXQvaTM4Ni9wcjgxNzM2LTcuYzogTGlrZXdp c2UuCi0tLQogZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyAgICAgICAgICAgICAg ICAgICAgfCAyMyArKysrKysrKysrKystLS0tLS0tLS0tLQogZ2NjL2RvYy9p bnZva2UudGV4aSAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKysrCiBn Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjgxNzM2LTEuYyB8IDEz ICsrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L3ByODE3MzYtMi5jIHwgMTQgKysrKysrKysrKysrKysKIGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3ByODE3MzYtMy5jIHwgMTEgKysrKysrKysr KysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODE3MzYtNC5j IHwgMTEgKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L3ByODE3MzYtNS5jIHwgMjAgKysrKysrKysrKysrKysrKysrKysKIGdj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODE3MzYtNi5jIHwgMTYg KysrKysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvcHI4MTczNi03LmMgfCAxMyArKysrKysrKysrKysrCiA5IGZpbGVzIGNo YW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9wcjgxNzM2LTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3ByODE3MzYtMi5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4MTczNi0z LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9wcjgxNzM2LTQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODE3MzYtNS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4 MTczNi02LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9wcjgxNzM2LTcuYwoKZGlmZiAtLWdpdCBhL2djYy9j b25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCmlu ZGV4IDNmODUxOTc3N2Y3Li44NWFhNGQ0ZmJmNSAxMDA2NDQKLS0tIGEvZ2Nj L2NvbmZpZy9pMzg2L2kzODYuYworKysgYi9nY2MvY29uZmlnL2kzODYvaTM4 Ni5jCkBAIC0xNDE3OSwxMCArMTQxNzksMTEgQEAgb3V0cHV0X3Byb2JlX3N0 YWNrX3JhbmdlIChydHggcmVnLCBydHggZW5kKQogICByZXR1cm4gIiI7CiB9 CiAKLS8qIEZpbmFsaXplIHN0YWNrX3JlYWxpZ25fbmVlZGVkIGZsYWcsIHdo aWNoIHdpbGwgZ3VpZGUgcHJvbG9ndWUvZXBpbG9ndWUKLSAgIHRvIGJlIGdl bmVyYXRlZCBpbiBjb3JyZWN0IGZvcm0uICAqLworLyogRmluYWxpemUgc3Rh Y2tfcmVhbGlnbl9uZWVkZWQgYW5kIGZyYW1lX3BvaW50ZXJfbmVlZGVkIGZs YWdzLCB3aGljaAorICAgd2lsbCBndWlkZSBwcm9sb2d1ZS9lcGlsb2d1ZSB0 byBiZSBnZW5lcmF0ZWQgaW4gY29ycmVjdCBmb3JtLiAgKi8KKwogc3RhdGlj IHZvaWQKLWl4ODZfZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncyAodm9p ZCkKK2l4ODZfZmluYWxpemVfc3RhY2tfZnJhbWVfZmxhZ3MgKHZvaWQpCiB7 CiAgIC8qIENoZWNrIGlmIHN0YWNrIHJlYWxpZ24gaXMgcmVhbGx5IG5lZWRl ZCBhZnRlciByZWxvYWQsIGFuZAogICAgICBzdG9yZXMgcmVzdWx0IGluIGNm dW4gKi8KQEAgLTE0MjA1LDEzICsxNDIwNiwxMyBAQCBpeDg2X2ZpbmFsaXpl X3N0YWNrX3JlYWxpZ25fZmxhZ3MgKHZvaWQpCiAgICAgfQogCiAgIC8qIElm IHRoZSBvbmx5IHJlYXNvbiBmb3IgZnJhbWVfcG9pbnRlcl9uZWVkZWQgaXMg dGhhdCB3ZSBjb25zZXJ2YXRpdmVseQotICAgICBhc3N1bWVkIHN0YWNrIHJl YWxpZ25tZW50IG1pZ2h0IGJlIG5lZWRlZCwgYnV0IGluIHRoZSBlbmQgbm90 aGluZyB0aGF0Ci0gICAgIG5lZWRlZCB0aGUgc3RhY2sgYWxpZ25tZW50IGhh ZCBiZWVuIHNwaWxsZWQsIGNsZWFyIGZyYW1lX3BvaW50ZXJfbmVlZGVkCi0g ICAgIGFuZCBzYXkgd2UgZG9uJ3QgbmVlZCBzdGFjayByZWFsaWdubWVudC4g ICovCi0gIGlmIChzdGFja19yZWFsaWduCisgICAgIGFzc3VtZWQgc3RhY2sg cmVhbGlnbm1lbnQgbWlnaHQgYmUgbmVlZGVkIG9yIC1mbm8tb21pdC1mcmFt ZS1wb2ludGVyCisgICAgIGlzIHVzZWQsIGJ1dCBpbiB0aGUgZW5kIG5vdGhp bmcgdGhhdCBuZWVkZWQgdGhlIHN0YWNrIGFsaWdubWVudCBoYWQKKyAgICAg YmVlbiBzcGlsbGVkIG5vciBzdGFjayBhY2Nlc3MsIGNsZWFyIGZyYW1lX3Bv aW50ZXJfbmVlZGVkIGFuZCBzYXkgd2UKKyAgICAgZG9uJ3QgbmVlZCBzdGFj ayByZWFsaWdubWVudC4gICovCisgIGlmICgoc3RhY2tfcmVhbGlnbiB8fCAh ZmxhZ19vbWl0X2ZyYW1lX3BvaW50ZXIpCiAgICAgICAmJiBmcmFtZV9wb2lu dGVyX25lZWRlZAogICAgICAgJiYgY3J0bC0+aXNfbGVhZgotICAgICAgJiYg ZmxhZ19vbWl0X2ZyYW1lX3BvaW50ZXIKICAgICAgICYmIGNydGwtPnNwX2lz X3VuY2hhbmdpbmcKICAgICAgICYmICFpeDg2X2N1cnJlbnRfZnVuY3Rpb25f Y2FsbHNfdGxzX2Rlc2NyaXB0b3IKICAgICAgICYmICFjcnRsLT5hY2Nlc3Nl c19wcmlvcl9mcmFtZXMKQEAgLTE0NDAyLDcgKzE0NDAzLDcgQEAgaXg4Nl9l eHBhbmRfcHJvbG9ndWUgKHZvaWQpCiAgIGlmIChpeDg2X2Z1bmN0aW9uX25h a2VkIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKQogICAgIHJldHVybjsKIAot ICBpeDg2X2ZpbmFsaXplX3N0YWNrX3JlYWxpZ25fZmxhZ3MgKCk7CisgIGl4 ODZfZmluYWxpemVfc3RhY2tfZnJhbWVfZmxhZ3MgKCk7CiAKICAgLyogRFJB UCBzaG91bGQgbm90IGNvZXhpc3Qgd2l0aCBzdGFja19yZWFsaWduX2ZwICov CiAgIGdjY19hc3NlcnQgKCEoY3J0bC0+ZHJhcF9yZWcgJiYgc3RhY2tfcmVh bGlnbl9mcCkpOwpAQCAtMTUyNjYsNyArMTUyNjcsNyBAQCBpeDg2X2V4cGFu ZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQogICAgICAgcmV0dXJuOwogICAgIH0K IAotICBpeDg2X2ZpbmFsaXplX3N0YWNrX3JlYWxpZ25fZmxhZ3MgKCk7Cisg IGl4ODZfZmluYWxpemVfc3RhY2tfZnJhbWVfZmxhZ3MgKCk7CiAgIGZyYW1l ID0gbS0+ZnJhbWU7CiAKICAgbS0+ZnMuc3BfcmVhbGlnbmVkID0gc3RhY2tf cmVhbGlnbl9mcDsKQEAgLTE1ODAxLDcgKzE1ODAyLDcgQEAgaXg4Nl9leHBh bmRfc3BsaXRfc3RhY2tfcHJvbG9ndWUgKHZvaWQpCiAKICAgZ2NjX2Fzc2Vy dCAoZmxhZ19zcGxpdF9zdGFjayAmJiByZWxvYWRfY29tcGxldGVkKTsKIAot ICBpeDg2X2ZpbmFsaXplX3N0YWNrX3JlYWxpZ25fZmxhZ3MgKCk7CisgIGl4 ODZfZmluYWxpemVfc3RhY2tfZnJhbWVfZmxhZ3MgKCk7CiAgIGZyYW1lID0g Y2Z1bi0+bWFjaGluZS0+ZnJhbWU7CiAgIGFsbG9jYXRlID0gZnJhbWUuc3Rh Y2tfcG9pbnRlcl9vZmZzZXQgLSBJTkNPTUlOR19GUkFNRV9TUF9PRkZTRVQ7 CiAKZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9j L2ludm9rZS50ZXhpCmluZGV4IGNjMGY1YTAwYTRmLi4zNzUzZDhhOTkyYiAx MDA2NDQKLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysgYi9nY2MvZG9j L2ludm9rZS50ZXhpCkBAIC03MzY2LDYgKzczNjYsMTAgQEAgc2l6ZSkgZm9y IDMyLWJpdCBHTlUvTGludXggeDg2IGFuZCAzMi1iaXQgRGFyd2luIHg4NiB0 YXJnZXRzIGlzCiBAb3B0aW9uey1mb21pdC1mcmFtZS1wb2ludGVyfS4gIFlv dSBjYW4gY29uZmlndXJlIEdDQyB3aXRoIHRoZQogQG9wdGlvbnstLWVuYWJs ZS1mcmFtZS1wb2ludGVyfSBjb25maWd1cmUgb3B0aW9uIHRvIGNoYW5nZSB0 aGUgZGVmYXVsdC4KIAorTm90ZSB0aGF0IEBvcHRpb257LWZuby1vbWl0LWZy YW1lLXBvaW50ZXJ9IGRvZXNuJ3QgZm9yY2UgYSBuZXcgc3RhY2sKK2ZyYW1l IGZvciBhbGwgZnVuY3Rpb25zIGlmIGl0IGlzbid0IG90aGVyd2lzZSBuZWVk ZWQsIGFuZCBoZW5jZSBkb2Vzbid0CitndWFyYW50ZWUgYSBuZXcgZnJhbWUg cG9pbnRlciBmb3IgYWxsIGZ1bmN0aW9ucy4KKwogRW5hYmxlZCBhdCBsZXZl bHMgQG9wdGlvbnstT30sIEBvcHRpb257LU8yfSwgQG9wdGlvbnstTzN9LCBA b3B0aW9uey1Pc30uCiAKIEBpdGVtIC1mb3B0aW1pemUtc2libGluZy1jYWxs cwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv cHI4MTczNi0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9w cjgxNzM2LTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uOTJjN2JjOTdhMGQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjgxNzM2LTEuYwpAQCAtMCwwICsx LDEzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItTzIgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIiIH0gKi8KKworZXh0 ZXJuIGludCBpOworCitpbnQKK2ZvbyAodm9pZCkKK3sKKyAgcmV0dXJuIGk7 Cit9CisKKy8qIE5vIG5lZWQgdG8gdXNlIGEgZnJhbWUgcG9pbnRlci4gICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICIlXFtyZVxd YnAiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvcHI4MTczNi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9wcjgxNzM2LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYTM3MjA4Nzk5MzcKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjgxNzM2LTIuYwpA QCAtMCwwICsxLDE0IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItTzIgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIiIH0g Ki8KKworaW50CisjaWZuZGVmIF9feDg2XzY0X18KK19fYXR0cmlidXRlX18o KHJlZ3Bhcm0oMykpKQorI2VuZGlmCitmb28gKGludCBpKQoreworICByZXR1 cm4gaTsKK30KKworLyogTm8gbmVlZCB0byB1c2UgYSBmcmFtZSBwb2ludGVy LiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIiVc W3JlXF1icCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9wcjgxNzM2LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L3ByODE3MzYtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5jM2JkZTdkZDkzMwotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODE3MzYt My5jCkBAIC0wLDAgKzEsMTEgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLW9taXQtZnJhbWUtcG9pbnRl ciIgfSAqLworCit2b2lkCitmb28gKHZvaWQpCit7CisgIGFzbSAoIiMgIiA6 IDogOiAiZWJ4Iik7Cit9CisKKy8qIE5lZWQgdG8gdXNlIGEgZnJhbWUgcG9p bnRlci4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIiVc W3JlXF1icCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9wcjgxNzM2LTQuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L3ByODE3MzYtNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi4yNWY1MDAxNmE2NAotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODE3MzYt NC5jCkBAIC0wLDAgKzEsMTEgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLW9taXQtZnJhbWUtcG9pbnRl ciIgfSAqLworCitpbnQKK2ZvbyAoaW50IGkxLCBpbnQgaTIsIGludCBpMywg aW50IGk0LCBpbnQgaTUsIGludCBpNiwgaW50IGk3KQoreworICByZXR1cm4g aTc7Cit9CisKKy8qIE5lZWQgdG8gdXNlIGEgZnJhbWUgcG9pbnRlci4gICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIiVcW3JlXF1icCIg fSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9wcjgxNzM2LTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L3ByODE3MzYtNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5lMTYwMmNmMjViYQotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODE3MzYtNS5jCkBAIC0w LDAgKzEsMjAgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PMiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtbWF2eCIg fSAqLworCit0eXBlZGVmIGludCB2OHNpIF9fYXR0cmlidXRlX18gKCh2ZWN0 b3Jfc2l6ZSAoMzIpKSk7CisKK3ZvaWQKKyNpZm5kZWYgX194ODZfNjRfXwor X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpCisjZW5kaWYKK2ZvbyAodjhz aSAqb3V0X3N0YXJ0LCB2OHNpICpvdXRfZW5kLCB2OHNpICpyZWdpb25zKQor eworICB2OHNpIGJhc2UgPSByZWdpb25zWzNdOworICAqb3V0X3N0YXJ0ID0g YmFzZTsKKyAgKm91dF9lbmQgPSBiYXNlOworfQorCisvKiBObyBuZWVkIHRv IHVzZSBhIGZyYW1lIHBvaW50ZXIuICAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLW5vdCAiJVxbcmVcXWJwIiB9IH0gKi8KKy8qIFZlcmlm eSBubyBkeW5hbWljIHJlYWxpZ25tZW50IGlzIHBlcmZvcm1lZC4gICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJhbmRcW15cblxy XSpzcCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9wcjgxNzM2LTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L3ByODE3MzYtNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi42MTk4NTc0YzhjYwotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODE3MzYtNi5j CkBAIC0wLDAgKzEsMTYgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciIg fSAqLworCitzdHJ1Y3QgZm9vCit7CisgIGludCBoZWFkOworfSBhOworCitp bnQKK2JhciAodm9pZCkKK3sKKyAgcmV0dXJuIGEuaGVhZCAhPSAwOworfQor CisvKiBObyBuZWVkIHRvIHVzZSBhIGZyYW1lIHBvaW50ZXIuICAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiJVxbcmVcXWJwIiB9 IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L3ByODE3MzYtNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvcHI4MTczNi03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmY5NDc4ODZlNjQyCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4MTczNi03LmMKQEAgLTAs MCArMSwxMyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLU8yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIiB9ICovCisK K2V4dGVybiBpbnQgZm9vICh2b2lkKTsKKworaW50CitiYXIgKHZvaWQpCit7 CisgIHJldHVybiBmb28gKCk7Cit9CisKKy8qIE5vIG5lZWQgdG8gdXNlIGEg ZnJhbWUgcG9pbnRlci4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90ICIlXFtyZVxdYnAiIH0gfSAqLwotLSAKMi4xMy40Cgo= --001a113ddc6c473ce905565132a6--