From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 92892 invoked by alias); 9 Dec 2015 21:14:56 -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 92879 invoked by uid 89); 9 Dec 2015 21:14:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-ob0-f178.google.com Received: from mail-ob0-f178.google.com (HELO mail-ob0-f178.google.com) (209.85.214.178) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 09 Dec 2015 21:14:52 +0000 Received: by obcse5 with SMTP id se5so45298887obc.3 for ; Wed, 09 Dec 2015 13:14:51 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.182.79.200 with SMTP id l8mr6629848obx.18.1449695690926; Wed, 09 Dec 2015 13:14:50 -0800 (PST) Received: by 10.76.77.99 with HTTP; Wed, 9 Dec 2015 13:14:50 -0800 (PST) In-Reply-To: References: Date: Wed, 09 Dec 2015 21:14:00 -0000 Message-ID: Subject: Re: PING^1: [PATCH] Add TYPE_EMPTY_RECORD for C++ empty class From: "H.J. Lu" To: Richard Biener Cc: Jason Merrill , GCC Patches Content-Type: multipart/mixed; boundary=089e0122a882b0d5e005267d94d1 X-IsSubscribed: yes X-SW-Source: 2015-12/txt/msg01063.txt.bz2 --089e0122a882b0d5e005267d94d1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 6762 On Wed, Dec 9, 2015 at 10:53 AM, H.J. Lu wrote: > On Wed, Dec 9, 2015 at 6:05 AM, Richard Biener > wrote: >> On Tue, Dec 8, 2015 at 5:22 PM, H.J. Lu wrote: >>> On Mon, Nov 23, 2015 at 12:53 PM, H.J. Lu wrote: >>>> On Mon, Nov 23, 2015 at 1:57 AM, Richard Biener >>>> wrote: >>>>> On Sat, Nov 21, 2015 at 12:46 AM, H.J. Lu wrote: >>>>>> On Fri, Nov 20, 2015 at 2:17 PM, Jason Merrill wr= ote: >>>>>>> On 11/20/2015 01:52 PM, H.J. Lu wrote: >>>>>>>> >>>>>>>> On Tue, Nov 17, 2015 at 4:22 AM, Richard Biener >>>>>>>> wrote: >>>>>>>>> >>>>>>>>> On Tue, Nov 17, 2015 at 12:01 PM, H.J. Lu w= rote: >>>>>>>>>> >>>>>>>>>> Empty record should be returned and passed the same way in C and= C++. >>>>>>>>>> This patch adds LANG_HOOKS_EMPTY_RECORD_P for C++ empty class, w= hich >>>>>>>>>> defaults to return false. For C++, LANG_HOOKS_EMPTY_RECORD_P is= defined >>>>>>>>>> to is_really_empty_class, which returns true for C++ empty class= es. For >>>>>>>>>> LTO, we stream out a bit to indicate if a record is empty and we= store >>>>>>>>>> it in TYPE_LANG_FLAG_0 when streaming in. get_ref_base_and_exte= nt is >>>>>>>>>> changed to set bitsize to 0 for empty records. Middle-end and x= 86 >>>>>>>>>> backend are updated to ignore empty records for parameter passin= g and >>>>>>>>>> function value return. Other targets may need similar changes. >>>>>>>>> >>>>>>>>> >>>>>>>>> Please avoid a new langhook for this and instead claim a bit in >>>>>>>>> tree_type_common >>>>>>>>> like for example restrict_flag (double-check it is unused for >>>>>>>>> non-pointers). >>>>>>>> >>>>>>>> >>>>>>>> There is no bit in tree_type_common I can overload. restrict_flag= is >>>>>>>> checked for non-pointers to issue an error when it is used on >>>>>>>> non-pointers: >>>>>>>> >>>>>>>> >>>>>>>> /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/template/q= ualttp20.C:19:38: >>>>>>>> error: =E2=80=98__restrict__=E2=80=99 qualifiers cannot be applied= to =E2=80=98AS::L=E2=80=99 >>>>>>>> typedef typename T::L __restrict__ r;// { dg-error "'__restric= t__' >>>>>>>> qualifiers cannot" "" } >>>>>>> >>>>>>> >>>>>>> The C++ front end only needs to check TYPE_RESTRICT for this purpos= e on >>>>>>> front-end-specific type codes like TEMPLATE_TYPE_PARM; cp_type_qual= s could >>>>>>> handle that specifically if you change TYPE_RESTRICT to only apply = to >>>>>>> pointers. >>>>>>> >>>>>> >>>>>> restrict_flag is also checked in this case: >>>>>> >>>>>> [hjl@gnu-6 gcc]$ cat x.i >>>>>> struct dummy { }; >>>>>> >>>>>> struct dummy >>>>>> foo (struct dummy __restrict__ i) >>>>>> { >>>>>> return i; >>>>>> } >>>>>> [hjl@gnu-6 gcc]$ gcc -S x.i -Wall >>>>>> x.i:4:13: error: invalid use of =E2=80=98restrict=E2=80=99 >>>>>> foo (struct dummy __restrict__ i) >>>>>> ^ >>>>>> x.i:4:13: error: invalid use of =E2=80=98restrict=E2=80=99 >>>>>> [hjl@gnu-6 gcc]$ >>>>>> >>>>>> restrict_flag can't also be used to indicate `i' is an empty record. >>>>> >>>>> I'm sure this error can be done during parsing w/o relying on TYPE_RE= STRICT. >>>>> >>>>> But well, use any other free bit (but do not enlarge >>>>> tree_type_common). Eventually >>>>> you can free up a bit by putting sth into type_lang_specific currently >>>>> using bits >>>>> in tree_type_common. >>>> >>>> There are no bits in tree_type_common I can move. Instead, >>>> this patch overloads side_effects_flag in tree_base. Tested on >>>> Linux/x86-64. OK for trunk? >> >> I'm fine with using side_effects_flag for this. >> >> I miss an explanation of where this detail of the ABI is documented and = wonder >> if the term "empty record" is also used in that document and how it is >> documented. >> >> Thus >> >> +/* Nonzero in a type considered an empty record. */ >> +#define TYPE_EMPTY_RECORD(NODE) \ >> + (TYPE_CHECK (NODE)->base.side_effects_flag) >> >> should refer to the ABI where is defined what an "empty record" is and h= ow >> it is handled by the backend(s). > > Empty C++ class is a corner case which isn't covered in psABI nor C++ ABI. > There is no mention of "empty record" in GCC documentation. But there are > plenty of "empty class" in gcc/cp. This change affects all targets. C++= ABI > should specify how it should be passed. > >> +/* Return true if type T is an empty record. */ >> + >> +static inline bool >> +type_is_empty_record_p (const_tree t) >> +{ >> + return TYPE_EMPTY_RECORD (TYPE_MAIN_VARIANT (t)); >> >> the type checker should probably check the bit is consistent across >> variants so it can be tested on any of them. > > TYPE_EMPTY_RECORD is only relevant for parameter passing. For > > struct foo; > typedef foo bar; > > TYPE_EMPTY_RECORD has no impact. Since call only uses > the main variant type, checking TYPE_MAIN_VARIANT is sufficient. > >> You fail to adjust other targets gimplification hooks which suggests >> this is a detail of the x86 psABI and not the C++ ABI? If so I miss >> a -Wpsabi warning for this change. > > My change is generic. The only x86 specific change is > > diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c > index d30fbff..308d9a4e 100644 > --- a/gcc/config/i386/i386.c > +++ b/gcc/config/i386/i386.c > @@ -10292,7 +10292,8 @@ ix86_gimplify_va_arg (tree valist, tree type, gim= ple_seq > *pre_p, > indirect_p =3D pass_by_reference (NULL, TYPE_MODE (type), type, false); > if (indirect_p) > type =3D build_pointer_type (type); > - size =3D int_size_in_bytes (type); > + bool empty_record =3D type && type_is_empty_record_p (type); > + size =3D empty_record ? 0 : int_size_in_bytes (type); > rsize =3D CEIL (size, UNITS_PER_WORD); > > nat_mode =3D type_natural_mode (type, NULL, false); > > which is for 64-bit variadic functions. I added a testcase, > g++.dg/pr60336-2.C, for it. There are also other variadic tests > in g++.dg/compat. If a target doesn't use std_gimplify_va_arg_expr, > it needs similar change. I see that TARGET_GIMPLIFY_VA_ARG_EXPR > is also defined in > > aarch64/aarch64.c > alpha/alpha.c > arm/arm.c > epiphany/epiphany.c > ia64/ia64.c > mep/mep.c > mips/mips.c > msp430/msp430.c > pa/pa.c > rs6000/rs6000.c > s390/s390.c > sh/sh.c > sparc/sparc.c > spu/spu.c > stormy16/stormy16.c > tilegx/tilegx.c > tilepro/tilepro.c > visium/visium.c > xtensa/xtensa.c > > I will prepare a separate patch for those targets to try. > Here is a patch for other backends to properly pass C++ empty class. One can check out hjl/pr60336/master branch from https://github.com/hjl-tools/gcc to get both generic and target-dependent patches. --=20 H.J. --089e0122a882b0d5e005267d94d1 Content-Type: text/x-patch; charset=US-ASCII; name="0001-Properly-pass-C-empty-class.patch" Content-Disposition: attachment; filename="0001-Properly-pass-C-empty-class.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ihzbavyu1 Content-length: 21786 RnJvbSA3MzMyY2MyYWIxMmM0NjYzOWZhMDI5YmEyYWYwMjNjNjU0ZGI3YTkz IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgOSBEZWMgMjAxNSAxMjo0 ODowNyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFByb3Blcmx5IHBhc3MgQysr IGVtcHR5IGNsYXNzCgpVc2UgMCBmb3IgZW1wdHkgcmVjb3JkIHNpemUgaW4g VEFSR0VUX0dJTVBMSUZZX1ZBX0FSR19FWFBSLgoKCVBSIGMrKy82MDMzNgoJ UFIgbWlkZGxlLWVuZC82NzIzOQoJUFIgdGFyZ2V0LzY4MzU1CgkqIGNvbmZp Zy9hYXJjaDY0L2FhcmNoNjQuYyAoYWFyY2g2NF9naW1wbGlmeV92YV9hcmdf ZXhwcik6IFVzZSAwCglmb3IgZW1wdHkgcmVjb3JkIHNpemUuCgkqIGNvbmZp Zy9tZXAvbWVwLmMgKG1lcF9naW1wbGlmeV92YV9hcmdfZXhwcik6IExpa2V3 aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc3RkX2dpbXBsaWZ5 X3ZhX2FyZ19leHByKTogTGlrZXdpc2UuCgkobWlwc19naW1wbGlmeV92YV9h cmdfZXhwcik6IExpa2V3aXNlLgoJKiBjb25maWcvbXNwNDMwL21zcDQzMC5j IChtc3A0MzBfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBMaWtld2lzZS4KCSog Y29uZmlnL3BhL3BhLmMgKGhwcGFfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBM aWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2dp bXBsaWZ5X3ZhX2FyZyk6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkw LmMgKHMzOTBfZ2ltcGxpZnlfdmFfYXJnKTogTGlrZXdpc2UuCgkqIGNvbmZp Zy9zaC9zaC5jIChzaF9naW1wbGlmeV92YV9hcmdfZXhwcik6IExpa2V3aXNl LgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfZ2ltcGxpZnlfdmFf YXJnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcHUvc3B1LmMgKHNwdV9naW1w bGlmeV92YV9hcmdfZXhwcik6IExpa2V3aXNlLgoJKiBjb25maWcvc3Rvcm15 MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X2dpbXBsaWZ5X3ZhX2FyZ19leHBy KToKCUxpa2V3aXNlLgoJKiBjb25maWcvdmlzaXVtL3Zpc2l1bS5jICh2aXNp dW1fZ2ltcGxpZnlfdmFfYXJnKTogTGlrZXdpc2UuCgkqIGNvbmZpZy94dGVu c2EveHRlbnNhLmMgKHh0ZW5zYV9naW1wbGlmeV92YV9hcmdfZXhwcik6IExp a2V3aXNlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfc2V0dXBf aW5jb21pbmdfdmFyYXJncyk6IFJlcGxhY2UKCXRhcmdldG0uY2FsbHMuZnVu Y3Rpb25fYXJnX2FkdmFuY2Ugd2l0aCBmdW5jdGlvbl9hcmdfYWR2YW5jZS4K CShhbHBoYV9naW1wbGlmeV92YV9hcmdfMSk6IFVzZSAwIGZvciBlbXB0eSBy ZWNvcmQgc2l6ZS4KCSogY29uZmlnL21pY3JvYmxhemUvbWljcm9ibGF6ZS5j IChtaWNyb2JsYXplX2V4cGFuZF9wcm9sb2d1ZSk6CglSZXBsYWNlIHRhcmdl dG0uY2FsbHMuZnVuY3Rpb25fYXJnIHdpdGggZnVuY3Rpb25fYXJnLiAgUmVw bGFjZQoJdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9hcmdfYWR2YW5jZSB3aXRo IGZ1bmN0aW9uX2FyZ19hZHZhbmNlLgoJKiBjb25maWcvdGlsZWd4L3RpbGVn eC5jICh0aWxlZ3hfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IFJlcGxhY2UK CXRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnX2FkdmFuY2Ugd2l0aCBmdW5j dGlvbl9hcmdfYWR2YW5jZS4KCSh0aWxlZ3hfZ2ltcGxpZnlfdmFfYXJnX2V4 cHIpOiBVc2UgMCBmb3IgZW1wdHkgcmVjb3JkIHNpemUuCgkqIGNvbmZpZy90 aWxlcHJvL3RpbGVwcm8uYyAodGlsZXByb19zZXR1cF9pbmNvbWluZ192YXJh cmdzKToKCVJlcGxhY2UgdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9hcmdfYWR2 YW5jZSB3aXRoCglmdW5jdGlvbl9hcmdfYWR2YW5jZS4KCSh0aWxlcHJvX2dp bXBsaWZ5X3ZhX2FyZ19leHByKTogVXNlIDAgZm9yIGVtcHR5IHJlY29yZCBz aXplLgotLS0KIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmMgICAgICAg fCAgMyArKy0KIGdjYy9jb25maWcvYWxwaGEvYWxwaGEuYyAgICAgICAgICAg fCAgNiArKystLS0KIGdjYy9jb25maWcvbWVwL21lcC5jICAgICAgICAgICAg ICAgfCAgMyArKy0KIGdjYy9jb25maWcvbWljcm9ibGF6ZS9taWNyb2JsYXpl LmMgfCAxMSArKysrKy0tLS0tLQogZ2NjL2NvbmZpZy9taXBzL21pcHMuYyAg ICAgICAgICAgICB8ICA2ICsrKystLQogZ2NjL2NvbmZpZy9tc3A0MzAvbXNw NDMwLmMgICAgICAgICB8ICAzICsrLQogZ2NjL2NvbmZpZy9wYS9wYS5jICAg ICAgICAgICAgICAgICB8ICAzICsrLQogZ2NjL2NvbmZpZy9yczYwMDAvcnM2 MDAwLmMgICAgICAgICB8ICAzICsrLQogZ2NjL2NvbmZpZy9zMzkwL3MzOTAu YyAgICAgICAgICAgICB8ICAzICsrLQogZ2NjL2NvbmZpZy9zaC9zaC5jICAg ICAgICAgICAgICAgICB8ICAzICsrLQogZ2NjL2NvbmZpZy9zcGFyYy9zcGFy Yy5jICAgICAgICAgICB8ICAzICsrLQogZ2NjL2NvbmZpZy9zcHUvc3B1LmMg ICAgICAgICAgICAgICB8ICAzICsrLQogZ2NjL2NvbmZpZy9zdG9ybXkxNi9z dG9ybXkxNi5jICAgICB8ICA2ICsrKystLQogZ2NjL2NvbmZpZy90aWxlZ3gv dGlsZWd4LmMgICAgICAgICB8ICA3ICsrKystLS0KIGdjYy9jb25maWcvdGls ZXByby90aWxlcHJvLmMgICAgICAgfCAgNyArKysrLS0tCiBnY2MvY29uZmln L3Zpc2l1bS92aXNpdW0uYyAgICAgICAgIHwgIDMgKystCiBnY2MvY29uZmln L3h0ZW5zYS94dGVuc2EuYyAgICAgICAgIHwgIDMgKystCiAxNyBmaWxlcyBj aGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYwppbmRleCAxZTFiODY0Li5jZmI5 ZjY2IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5j CisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmMKQEAgLTk2MTgs NyArOTYxOCw4IEBAIGFhcmNoNjRfZ2ltcGxpZnlfdmFfYXJnX2V4cHIgKHRy ZWUgdmFsaXN0LCB0cmVlIHR5cGUsIGdpbXBsZV9zZXEgKnByZV9wLAogCiAg IHN0YWNrID0gYnVpbGQzIChDT01QT05FTlRfUkVGLCBUUkVFX1RZUEUgKGZf c3RhY2spLCB1bnNoYXJlX2V4cHIgKHZhbGlzdCksCiAJCSAgZl9zdGFjaywg TlVMTF9UUkVFKTsKLSAgc2l6ZSA9IGludF9zaXplX2luX2J5dGVzICh0eXBl KTsKKyAgYm9vbCBlbXB0eV9yZWNvcmQgPSB0eXBlICYmIHR5cGVfaXNfZW1w dHlfcmVjb3JkX3AgKHR5cGUpOworICBzaXplID0gZW1wdHlfcmVjb3JkID8g MCA6IGludF9zaXplX2luX2J5dGVzICh0eXBlKTsKICAgYWxpZ24gPSBhYXJj aDY0X2Z1bmN0aW9uX2FyZ19hbGlnbm1lbnQgKG1vZGUsIHR5cGUpIC8gQklU U19QRVJfVU5JVDsKIAogICBkd19hbGlnbiA9IGZhbHNlOwpkaWZmIC0tZ2l0 IGEvZ2NjL2NvbmZpZy9hbHBoYS9hbHBoYS5jIGIvZ2NjL2NvbmZpZy9hbHBo YS9hbHBoYS5jCmluZGV4IDRjZmFlODIuLmQ1ZDJmNjYgMTAwNjQ0Ci0tLSBh L2djYy9jb25maWcvYWxwaGEvYWxwaGEuYworKysgYi9nY2MvY29uZmlnL2Fs cGhhL2FscGhhLmMKQEAgLTYxMTcsOCArNjExNyw3IEBAIGFscGhhX3NldHVw X2luY29taW5nX3ZhcmFyZ3MgKGN1bXVsYXRpdmVfYXJnc190IHBjdW0sIG1h Y2hpbmVfbW9kZSBtb2RlLAogICBDVU1VTEFUSVZFX0FSR1MgY3VtID0gKmdl dF9jdW11bGF0aXZlX2FyZ3MgKHBjdW0pOwogCiAgIC8qIFNraXAgdGhlIGN1 cnJlbnQgYXJndW1lbnQuICAqLwotICB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9u X2FyZ19hZHZhbmNlIChwYWNrX2N1bXVsYXRpdmVfYXJncyAoJmN1bSksIG1v ZGUsIHR5cGUsCi0JCQkJICAgICAgdHJ1ZSk7CisgIGZ1bmN0aW9uX2FyZ19h ZHZhbmNlIChwYWNrX2N1bXVsYXRpdmVfYXJncyAoJmN1bSksIG1vZGUsIHR5 cGUsIHRydWUpOwogCiAjaWYgVEFSR0VUX0FCSV9PUEVOX1ZNUwogICAvKiBG b3IgVk1TLCB3ZSBhbGxvY2F0ZSBzcGFjZSBmb3IgYWxsIDYgYXJnIHJlZ2lz dGVycyBwbHVzIGEgY291bnQuCkBAIC02MzA0LDcgKzYzMDMsOCBAQCBhbHBo YV9naW1wbGlmeV92YV9hcmdfMSAodHJlZSB0eXBlLCB0cmVlIGJhc2UsIHRy ZWUgb2Zmc2V0LAogICBnaW1wbGVfc2VxX2FkZF9zZXEgKHByZV9wLCBpbnRl cm5hbF9wb3N0KTsKIAogICAvKiBVcGRhdGUgdGhlIG9mZnNldCBmaWVsZC4g ICovCi0gIHR5cGVfc2l6ZSA9IFRZUEVfU0laRV9VTklUIChUWVBFX01BSU5f VkFSSUFOVCAodHlwZSkpOworICBib29sIGVtcHR5X3JlY29yZCA9IHR5cGUg JiYgdHlwZV9pc19lbXB0eV9yZWNvcmRfcCAodHlwZSk7CisgIHR5cGVfc2l6 ZSA9IGVtcHR5X3JlY29yZCA/IDAgOiBUWVBFX1NJWkVfVU5JVCAoVFlQRV9N QUlOX1ZBUklBTlQgKHR5cGUpKTsKICAgaWYgKHR5cGVfc2l6ZSA9PSBOVUxM IHx8IFRSRUVfT1ZFUkZMT1cgKHR5cGVfc2l6ZSkpCiAgICAgdCA9IHNpemVf emVyb19ub2RlOwogICBlbHNlCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL21l cC9tZXAuYyBiL2djYy9jb25maWcvbWVwL21lcC5jCmluZGV4IDVhYjU2YmQu LjY1YWVjMjQgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvbWVwL21lcC5jCisr KyBiL2djYy9jb25maWcvbWVwL21lcC5jCkBAIC0zNTI1LDcgKzM1MjUsOCBA QCBtZXBfZ2ltcGxpZnlfdmFfYXJnX2V4cHIgKHRyZWUgdmFsaXN0LCB0cmVl IHR5cGUsCiAKICAgaXZjMl92ZWMgPSBUQVJHRVRfSVZDMiAmJiBWRUNUT1Jf VFlQRV9QICh0eXBlKTsKIAotICBzaXplID0gaW50X3NpemVfaW5fYnl0ZXMg KHR5cGUpOworICBib29sIGVtcHR5X3JlY29yZCA9IHR5cGUgJiYgdHlwZV9p c19lbXB0eV9yZWNvcmRfcCAodHlwZSk7CisgIHNpemUgPSBlbXB0eV9yZWNv cmQgPyAwIDogaW50X3NpemVfaW5fYnl0ZXMgKHR5cGUpOwogICBieV9yZWZl cmVuY2UgPSAoc2l6ZSA+IChpdmMyX3ZlYyA/IDggOiA0KSkgfHwgKHNpemUg PD0gMCk7CiAKICAgaWYgKGJ5X3JlZmVyZW5jZSkKZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvbWljcm9ibGF6ZS9taWNyb2JsYXplLmMgYi9nY2MvY29uZmln L21pY3JvYmxhemUvbWljcm9ibGF6ZS5jCmluZGV4IGFlYmJjM2IuLjdhN2Mz OTcgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvbWljcm9ibGF6ZS9taWNyb2Js YXplLmMKKysrIGIvZ2NjL2NvbmZpZy9taWNyb2JsYXplL21pY3JvYmxhemUu YwpAQCAtMjc5NSw4ICsyNzk1LDggQEAgbWljcm9ibGF6ZV9leHBhbmRfcHJv bG9ndWUgKHZvaWQpCiAJICBwYXNzZWRfbW9kZSA9IFBtb2RlOwogCX0KIAot ICAgICAgZW50cnlfcGFybSA9IHRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJn IChhcmdzX3NvX2ZhciwgcGFzc2VkX21vZGUsCi0JCQkJCSAgICAgICBwYXNz ZWRfdHlwZSwgdHJ1ZSk7CisgICAgICBlbnRyeV9wYXJtID0gZnVuY3Rpb25f YXJnIChhcmdzX3NvX2ZhciwgcGFzc2VkX21vZGUsIHBhc3NlZF90eXBlLAor CQkJCSB0cnVlKTsKIAogICAgICAgaWYgKGVudHJ5X3Bhcm0pCiAJewpAQCAt MjgxNiw4ICsyODE2LDcgQEAgbWljcm9ibGF6ZV9leHBhbmRfcHJvbG9ndWUg KHZvaWQpCiAJICBicmVhazsKIAl9CiAKLSAgICAgIHRhcmdldG0uY2FsbHMu ZnVuY3Rpb25fYXJnX2FkdmFuY2UgKGFyZ3Nfc29fZmFyLCBwYXNzZWRfbW9k ZSwKLQkJCQkJICBwYXNzZWRfdHlwZSwgdHJ1ZSk7CisgICAgICBmdW5jdGlv bl9hcmdfYWR2YW5jZSAoYXJnc19zb19mYXIsIHBhc3NlZF9tb2RlLCBwYXNz ZWRfdHlwZSwgdHJ1ZSk7CiAKICAgICAgIG5leHRfYXJnID0gVFJFRV9DSEFJ TiAoY3VyX2FyZyk7CiAgICAgICBpZiAobmV4dF9hcmcgPT0gMCkKQEAgLTI4 MzEsOCArMjgzMCw4IEBAIG1pY3JvYmxhemVfZXhwYW5kX3Byb2xvZ3VlICh2 b2lkKQogCiAgIC8qIFNwbGl0IHBhcmFsbGVsIGluc24gaW50byBhIHNlcXVl bmNlIG9mIGluc25zLiAgKi8KIAotICBuZXh0X2FyZ19yZWcgPSB0YXJnZXRt LmNhbGxzLmZ1bmN0aW9uX2FyZyAoYXJnc19zb19mYXIsIFZPSURtb2RlLAot CQkJCQkgICAgIHZvaWRfdHlwZV9ub2RlLCB0cnVlKTsKKyAgbmV4dF9hcmdf cmVnID0gZnVuY3Rpb25fYXJnIChhcmdzX3NvX2ZhciwgVk9JRG1vZGUsIHZv aWRfdHlwZV9ub2RlLAorCQkJICAgICAgIHRydWUpOwogICBpZiAobmV4dF9h cmdfcmVnICE9IDAgJiYgR0VUX0NPREUgKG5leHRfYXJnX3JlZykgPT0gUEFS QUxMRUwpCiAgICAgewogICAgICAgcnR2ZWMgYWRqdXN0ID0gWFZFQyAobmV4 dF9hcmdfcmVnLCAwKTsKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy9t aXBzLmMgYi9nY2MvY29uZmlnL21pcHMvbWlwcy5jCmluZGV4IDYxNDU5NDQu LjYxYzZkMGMgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvbWlwcy9taXBzLmMK KysrIGIvZ2NjL2NvbmZpZy9taXBzL21pcHMuYwpAQCAtNjMwOCw3ICs2MzA4 LDggQEAgbWlwc19zdGRfZ2ltcGxpZnlfdmFfYXJnX2V4cHIgKHRyZWUgdmFs aXN0LCB0cmVlIHR5cGUsIGdpbXBsZV9zZXEgKnByZV9wLAogICAgIH0KIAog ICAvKiBDb21wdXRlIHRoZSByb3VuZGVkIHNpemUgb2YgdGhlIHR5cGUuICAq LwotICB0eXBlX3NpemUgPSBzaXplX2luX2J5dGVzICh0eXBlKTsKKyAgYm9v bCBlbXB0eV9yZWNvcmQgPSB0eXBlICYmIHR5cGVfaXNfZW1wdHlfcmVjb3Jk X3AgKHR5cGUpOworICB0eXBlX3NpemUgPSBlbXB0eV9yZWNvcmQgPyAwIDog c2l6ZV9pbl9ieXRlcyAodHlwZSk7CiAgIHJvdW5kZWRfc2l6ZSA9IHJvdW5k X3VwICh0eXBlX3NpemUsIGFsaWduKTsKIAogICAvKiBSZWR1Y2Ugcm91bmRl ZF9zaXplIHNvIGl0J3Mgc2hhcmFibGUgd2l0aCB0aGUgcG9zdHF1ZXVlLiAg Ki8KQEAgLTYzOTcsNyArNjM5OCw4IEBAIG1pcHNfZ2ltcGxpZnlfdmFfYXJn X2V4cHIgKHRyZWUgdmFsaXN0LCB0cmVlIHR5cGUsIGdpbXBsZV9zZXEgKnBy ZV9wLAogCiAgICAgICBvdmZsID0gYnVpbGQzIChDT01QT05FTlRfUkVGLCBU UkVFX1RZUEUgKGZfb3ZmbCksIHZhbGlzdCwgZl9vdmZsLAogCQkgICAgIE5V TExfVFJFRSk7Ci0gICAgICBzaXplID0gaW50X3NpemVfaW5fYnl0ZXMgKHR5 cGUpOworICAgICAgYm9vbCBlbXB0eV9yZWNvcmQgPSB0eXBlICYmIHR5cGVf aXNfZW1wdHlfcmVjb3JkX3AgKHR5cGUpOworICAgICAgc2l6ZSA9IGVtcHR5 X3JlY29yZCA/IDAgOiBpbnRfc2l6ZV9pbl9ieXRlcyAodHlwZSk7CiAKICAg ICAgIGlmIChHRVRfTU9ERV9DTEFTUyAoVFlQRV9NT0RFICh0eXBlKSkgPT0g TU9ERV9GTE9BVAogCSAgJiYgR0VUX01PREVfU0laRSAoVFlQRV9NT0RFICh0 eXBlKSkgPD0gVU5JVFNfUEVSX0ZQVkFMVUUpCmRpZmYgLS1naXQgYS9nY2Mv Y29uZmlnL21zcDQzMC9tc3A0MzAuYyBiL2djYy9jb25maWcvbXNwNDMwL21z cDQzMC5jCmluZGV4IDg4MzAxYzguLjE3MjZmNWIgMTAwNjQ0Ci0tLSBhL2dj Yy9jb25maWcvbXNwNDMwL21zcDQzMC5jCisrKyBiL2djYy9jb25maWcvbXNw NDMwL21zcDQzMC5jCkBAIC0xNDUxLDcgKzE0NTEsOCBAQCBtc3A0MzBfZ2lt cGxpZnlfdmFfYXJnX2V4cHIgKHRyZWUgdmFsaXN0LCB0cmVlIHR5cGUsIGdp bXBsZV9zZXEgKnByZV9wLAogICAgIH0KIAogICAvKiBDb21wdXRlIHRoZSBy b3VuZGVkIHNpemUgb2YgdGhlIHR5cGUuICAqLwotICB0eXBlX3NpemUgPSBz aXplX2luX2J5dGVzICh0eXBlKTsKKyAgYm9vbCBlbXB0eV9yZWNvcmQgPSB0 eXBlICYmIHR5cGVfaXNfZW1wdHlfcmVjb3JkX3AgKHR5cGUpOworICB0eXBl X3NpemUgPSBlbXB0eV9yZWNvcmQgPyAwIDogc2l6ZV9pbl9ieXRlcyAodHlw ZSk7CiAgIHJvdW5kZWRfc2l6ZSA9IHJvdW5kX3VwICh0eXBlX3NpemUsIGFs aWduKTsKIAogICAvKiBSZWR1Y2Ugcm91bmRlZF9zaXplIHNvIGl0J3Mgc2hh cmFibGUgd2l0aCB0aGUgcG9zdHF1ZXVlLiAgKi8KZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvcGEvcGEuYyBiL2djYy9jb25maWcvcGEvcGEuYwppbmRleCBi OGNhYWI1Li5lZjk1NmNmIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3BhL3Bh LmMKKysrIGIvZ2NjL2NvbmZpZy9wYS9wYS5jCkBAIC02MzA1LDcgKzYzMDUs OCBAQCBocHBhX2dpbXBsaWZ5X3ZhX2FyZ19leHByICh0cmVlIHZhbGlzdCwg dHJlZSB0eXBlLCBnaW1wbGVfc2VxICpwcmVfcCwKIAkgIHR5cGUgPSBwdHI7 CiAJICBwdHIgPSBidWlsZF9wb2ludGVyX3R5cGUgKHR5cGUpOwogCX0KLSAg ICAgIHNpemUgPSBpbnRfc2l6ZV9pbl9ieXRlcyAodHlwZSk7CisgICAgICBi b29sIGVtcHR5X3JlY29yZCA9IHR5cGUgJiYgdHlwZV9pc19lbXB0eV9yZWNv cmRfcCAodHlwZSk7CisgICAgICBzaXplID0gZW1wdHlfcmVjb3JkID8gMCA6 IGludF9zaXplX2luX2J5dGVzICh0eXBlKTsKICAgICAgIHZhbGlzdF90eXBl ID0gVFJFRV9UWVBFICh2YWxpc3QpOwogCiAgICAgICAvKiBBcmdzIGdyb3cg ZG93bi4gIE5vdCBoYW5kbGVkIGJ5IGdlbmVyaWMgcm91dGluZXMuICAqLwpk aWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMgYi9nY2Mv Y29uZmlnL3JzNjAwMC9yczYwMDAuYwppbmRleCA2YjIyZjkzLi5lZjgyOWVk IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuYworKysg Yi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuYwpAQCAtMTE5ODMsNyArMTE5 ODMsOCBAQCByczYwMDBfZ2ltcGxpZnlfdmFfYXJnICh0cmVlIHZhbGlzdCwg dHJlZSB0eXBlLCBnaW1wbGVfc2VxICpwcmVfcCwKICAgc2F2ID0gYnVpbGQz IChDT01QT05FTlRfUkVGLCBUUkVFX1RZUEUgKGZfc2F2KSwgdW5zaGFyZV9l eHByICh2YWxpc3QpLAogCQlmX3NhdiwgTlVMTF9UUkVFKTsKIAotICBzaXpl ID0gaW50X3NpemVfaW5fYnl0ZXMgKHR5cGUpOworICBib29sIGVtcHR5X3Jl Y29yZCA9IHR5cGUgJiYgdHlwZV9pc19lbXB0eV9yZWNvcmRfcCAodHlwZSk7 CisgIHNpemUgPSBlbXB0eV9yZWNvcmQgPyAwIDogaW50X3NpemVfaW5fYnl0 ZXMgKHR5cGUpOwogICByc2l6ZSA9IChzaXplICsgMykgLyA0OwogICBhbGln biA9IDE7CiAKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvczM5MC9zMzkwLmMg Yi9nY2MvY29uZmlnL3MzOTAvczM5MC5jCmluZGV4IGY4OTI4YjkuLjZmNjYz OWYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvczM5MC9zMzkwLmMKKysrIGIv Z2NjL2NvbmZpZy9zMzkwL3MzOTAuYwpAQCAtMTE1NjksNyArMTE1NjksOCBA QCBzMzkwX2dpbXBsaWZ5X3ZhX2FyZyAodHJlZSB2YWxpc3QsIHRyZWUgdHlw ZSwgZ2ltcGxlX3NlcSAqcHJlX3AsCiAgIHZhbGlzdCA9IHVuc2hhcmVfZXhw ciAodmFsaXN0KTsKICAgb3ZmID0gYnVpbGQzIChDT01QT05FTlRfUkVGLCBU UkVFX1RZUEUgKGZfb3ZmKSwgdmFsaXN0LCBmX292ZiwgTlVMTF9UUkVFKTsK IAotICBzaXplID0gaW50X3NpemVfaW5fYnl0ZXMgKHR5cGUpOworICBib29s IGVtcHR5X3JlY29yZCA9IHR5cGUgJiYgdHlwZV9pc19lbXB0eV9yZWNvcmRf cCAodHlwZSk7CisgIHNpemUgPSBlbXB0eV9yZWNvcmQgPyAwIDogaW50X3Np emVfaW5fYnl0ZXMgKHR5cGUpOwogCiAgIHMzOTBfY2hlY2tfdHlwZV9mb3Jf dmVjdG9yX2FiaSAodHlwZSwgdHJ1ZSwgZmFsc2UpOwogCmRpZmYgLS1naXQg YS9nY2MvY29uZmlnL3NoL3NoLmMgYi9nY2MvY29uZmlnL3NoL3NoLmMKaW5k ZXggOTE5ZWExYy4uZjFmNjZmOSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9z aC9zaC5jCisrKyBiL2djYy9jb25maWcvc2gvc2guYwpAQCAtODc2NSw3ICs4 NzY1LDggQEAgc2hfZ2ltcGxpZnlfdmFfYXJnX2V4cHIgKHRyZWUgdmFsaXN0 LCB0cmVlIHR5cGUsIGdpbXBsZV9zZXEgKnByZV9wLAogICBpZiAocGFzc19i eV9yZWYpCiAgICAgdHlwZSA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAodHlwZSk7 CiAKLSAgc2l6ZSA9IGludF9zaXplX2luX2J5dGVzICh0eXBlKTsKKyAgYm9v bCBlbXB0eV9yZWNvcmQgPSB0eXBlICYmIHR5cGVfaXNfZW1wdHlfcmVjb3Jk X3AgKHR5cGUpOworICBzaXplID0gZW1wdHlfcmVjb3JkID8gMCA6IGludF9z aXplX2luX2J5dGVzICh0eXBlKTsKICAgcnNpemUgPSAoc2l6ZSArIFVOSVRT X1BFUl9XT1JEIC0gMSkgJiAtVU5JVFNfUEVSX1dPUkQ7CiAgIHBwdHJfdHlw ZV9ub2RlID0gYnVpbGRfcG9pbnRlcl90eXBlIChwdHJfdHlwZV9ub2RlKTsK IApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9zcGFyYy5jIGIvZ2Nj L2NvbmZpZy9zcGFyYy9zcGFyYy5jCmluZGV4IDU1ZGRhY2YuLjU1OWJjNjkg MTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvc3BhcmMvc3BhcmMuYworKysgYi9n Y2MvY29uZmlnL3NwYXJjL3NwYXJjLmMKQEAgLTc0MjUsNyArNzQyNSw4IEBA IHNwYXJjX2dpbXBsaWZ5X3ZhX2FyZyAodHJlZSB2YWxpc3QsIHRyZWUgdHlw ZSwgZ2ltcGxlX3NlcSAqcHJlX3AsCiAgIGVsc2UKICAgICB7CiAgICAgICBp bmRpcmVjdCA9IGZhbHNlOwotICAgICAgc2l6ZSA9IGludF9zaXplX2luX2J5 dGVzICh0eXBlKTsKKyAgICAgIGJvb2wgZW1wdHlfcmVjb3JkID0gdHlwZSAm JiB0eXBlX2lzX2VtcHR5X3JlY29yZF9wICh0eXBlKTsKKyAgICAgIHNpemUg PSBlbXB0eV9yZWNvcmQgPyAwIDogaW50X3NpemVfaW5fYnl0ZXMgKHR5cGUp OwogICAgICAgcnNpemUgPSBST1VORF9VUCAoc2l6ZSwgVU5JVFNfUEVSX1dP UkQpOwogICAgICAgYWxpZ24gPSAwOwogCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL3NwdS9zcHUuYyBiL2djYy9jb25maWcvc3B1L3NwdS5jCmluZGV4IDMx NTAyZmIuLjFiMjRiMTIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvc3B1L3Nw dS5jCisrKyBiL2djYy9jb25maWcvc3B1L3NwdS5jCkBAIC00MDI4LDcgKzQw MjgsOCBAQCBzcHVfZ2ltcGxpZnlfdmFfYXJnX2V4cHIgKHRyZWUgdmFsaXN0 LCB0cmVlIHR5cGUsIGdpbXBsZV9zZXEgKiBwcmVfcCwKIAkJCQkJICAgZmFs c2UpOwogICBpZiAocGFzc19ieV9yZWZlcmVuY2VfcCkKICAgICB0eXBlID0g YnVpbGRfcG9pbnRlcl90eXBlICh0eXBlKTsKLSAgc2l6ZSA9IGludF9zaXpl X2luX2J5dGVzICh0eXBlKTsKKyAgYm9vbCBlbXB0eV9yZWNvcmQgPSB0eXBl ICYmIHR5cGVfaXNfZW1wdHlfcmVjb3JkX3AgKHR5cGUpOworICBzaXplID0g ZW1wdHlfcmVjb3JkID8gMCA6IGludF9zaXplX2luX2J5dGVzICh0eXBlKTsK ICAgcnNpemUgPSAoKHNpemUgKyBVTklUU19QRVJfV09SRCAtIDEpIC8gVU5J VFNfUEVSX1dPUkQpICogVU5JVFNfUEVSX1dPUkQ7CiAKICAgLyogYnVpbGQg Y29uZGl0aW9uYWwgZXhwcmVzc2lvbiB0byBjYWxjdWxhdGUgYWRkci4gVGhl IGV4cHJlc3Npb24KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3Rvcm15MTYv c3Rvcm15MTYuYyBiL2djYy9jb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYwpp bmRleCBmNjI2ODUzLi5iZmYzZTI3IDEwMDY0NAotLS0gYS9nY2MvY29uZmln L3N0b3JteTE2L3N0b3JteTE2LmMKKysrIGIvZ2NjL2NvbmZpZy9zdG9ybXkx Ni9zdG9ybXkxNi5jCkBAIC0xMzM3LDggKzEzMzcsMTAgQEAgeHN0b3JteTE2 X2dpbXBsaWZ5X3ZhX2FyZ19leHByICh0cmVlIHZhbGlzdCwgdHJlZSB0eXBl LCBnaW1wbGVfc2VxICpwcmVfcCwKICAgY291bnQgPSBidWlsZDMgKENPTVBP TkVOVF9SRUYsIFRSRUVfVFlQRSAoZl9jb3VudCksIHZhbGlzdCwgZl9jb3Vu dCwKIAkJICBOVUxMX1RSRUUpOwogCisgIGJvb2wgZW1wdHlfcmVjb3JkID0g dHlwZSAmJiB0eXBlX2lzX2VtcHR5X3JlY29yZF9wICh0eXBlKTsKICAgbXVz dF9zdGFjayA9IHRhcmdldG0uY2FsbHMubXVzdF9wYXNzX2luX3N0YWNrIChU WVBFX01PREUgKHR5cGUpLCB0eXBlKTsKLSAgc2l6ZV90cmVlID0gcm91bmRf dXAgKHNpemVfaW5fYnl0ZXMgKHR5cGUpLCBVTklUU19QRVJfV09SRCk7Cisg IHNpemVfdHJlZSA9IHJvdW5kX3VwIChlbXB0eV9yZWNvcmQgPyBpbnRlZ2Vy X3plcm9fbm9kZSA6IHNpemVfaW5fYnl0ZXMgKHR5cGUpLAorCQkJVU5JVFNf UEVSX1dPUkQpOwogICBnaW1wbGlmeV9leHByICgmc2l6ZV90cmVlLCBwcmVf cCwgTlVMTCwgaXNfZ2ltcGxlX3ZhbCwgZmJfcnZhbHVlKTsKIAogICBzaXpl X29mX3JlZ19hcmdzID0gTlVNX0FSR1VNRU5UX1JFR0lTVEVSUyAqIFVOSVRT X1BFUl9XT1JEOwpAQCAtMTM3NCw3ICsxMzc2LDcgQEAgeHN0b3JteTE2X2dp bXBsaWZ5X3ZhX2FyZ19leHByICh0cmVlIHZhbGlzdCwgdHJlZSB0eXBlLCBn aW1wbGVfc2VxICpwcmVfcCwKICAgLyogQXJndW1lbnRzIGxhcmdlciB0aGFu IGEgd29yZCBtaWdodCBuZWVkIHRvIHNraXAgb3ZlciBzb21lCiAgICAgIHJl Z2lzdGVycywgc2luY2UgYXJndW1lbnRzIGFyZSBlaXRoZXIgcGFzc2VkIGVu dGlyZWx5IGluCiAgICAgIHJlZ2lzdGVycyBvciBlbnRpcmVseSBvbiB0aGUg c3RhY2suICAqLwotICBzaXplID0gUFVTSF9ST1VORElORyAoaW50X3NpemVf aW5fYnl0ZXMgKHR5cGUpKTsKKyAgc2l6ZSA9IFBVU0hfUk9VTkRJTkcgKGVt cHR5X3JlY29yZCA/IDAgOiBpbnRfc2l6ZV9pbl9ieXRlcyAodHlwZSkpOwog ICBpZiAoc2l6ZSA+IDIgfHwgc2l6ZSA8IDAgfHwgbXVzdF9zdGFjaykKICAg ICB7CiAgICAgICB0cmVlIHIsIHU7CmRpZmYgLS1naXQgYS9nY2MvY29uZmln L3RpbGVneC90aWxlZ3guYyBiL2djYy9jb25maWcvdGlsZWd4L3RpbGVneC5j CmluZGV4IGQyMjEwNjIuLmNkYWNkMzYgMTAwNjQ0Ci0tLSBhL2djYy9jb25m aWcvdGlsZWd4L3RpbGVneC5jCisrKyBiL2djYy9jb25maWcvdGlsZWd4L3Rp bGVneC5jCkBAIC0zOTYsOCArMzk2LDggQEAgdGlsZWd4X3NldHVwX2luY29t aW5nX3ZhcmFyZ3MgKGN1bXVsYXRpdmVfYXJnc190IGN1bSwKICAgLyogVGhl IGNhbGxlciBoYXMgYWR2YW5jZWQgQ1VNIHVwIHRvLCBidXQgbm90IGJleW9u ZCwgdGhlIGxhc3QgbmFtZWQKICAgICAgYXJndW1lbnQuICBBZHZhbmNlIGEg bG9jYWwgY29weSBvZiBDVU0gcGFzdCB0aGUgbGFzdCAicmVhbCIgbmFtZWQK ICAgICAgYXJndW1lbnQsIHRvIGZpbmQgb3V0IGhvdyBtYW55IHJlZ2lzdGVy cyBhcmUgbGVmdCBvdmVyLiAgKi8KLSAgdGFyZ2V0bS5jYWxscy5mdW5jdGlv bl9hcmdfYWR2YW5jZSAocGFja19jdW11bGF0aXZlX2FyZ3MgKCZsb2NhbF9j dW0pLAotCQkJCSAgICAgIG1vZGUsIHR5cGUsIHRydWUpOworICBmdW5jdGlv bl9hcmdfYWR2YW5jZSAocGFja19jdW11bGF0aXZlX2FyZ3MgKCZsb2NhbF9j dW0pLCBtb2RlLCB0eXBlLAorCQkJdHJ1ZSk7CiAgIGZpcnN0X3JlZyA9IGxv Y2FsX2N1bTsKIAogICBpZiAobG9jYWxfY3VtIDwgVElMRUdYX05VTV9BUkdf UkVHUykKQEAgLTQ3Myw3ICs0NzMsOCBAQCB0aWxlZ3hfZ2ltcGxpZnlfdmFf YXJnX2V4cHIgKHRyZWUgdmFsaXN0LCB0cmVlIHR5cGUsIGdpbXBsZV9zZXEg KnByZV9wLAogICBpZiAocGFzc19ieV9yZWZlcmVuY2VfcCkKICAgICB0eXBl ID0gYnVpbGRfcG9pbnRlcl90eXBlICh0eXBlKTsKIAotICBzaXplID0gaW50 X3NpemVfaW5fYnl0ZXMgKHR5cGUpOworICBib29sIGVtcHR5X3JlY29yZCA9 IHR5cGUgJiYgdHlwZV9pc19lbXB0eV9yZWNvcmRfcCAodHlwZSk7CisgIHNp emUgPSBlbXB0eV9yZWNvcmQgPyAwIDogaW50X3NpemVfaW5fYnl0ZXMgKHR5 cGUpOwogICByc2l6ZSA9ICgoc2l6ZSArIFVOSVRTX1BFUl9XT1JEIC0gMSkg LyBVTklUU19QRVJfV09SRCkgKiBVTklUU19QRVJfV09SRDsKIAogICAvKiBJ ZiB0aGUgYWxpZ25tZW50IG9mIHRoZSB0eXBlIGlzIGdyZWF0ZXIgdGhhbiB0 aGUgZGVmYXVsdCBmb3IgYQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy90aWxl cHJvL3RpbGVwcm8uYyBiL2djYy9jb25maWcvdGlsZXByby90aWxlcHJvLmMK aW5kZXggMjQ4YjI0ZS4uMTU0OWMzMiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy90aWxlcHJvL3RpbGVwcm8uYworKysgYi9nY2MvY29uZmlnL3RpbGVwcm8v dGlsZXByby5jCkBAIC0zNDgsOCArMzQ4LDggQEAgdGlsZXByb19zZXR1cF9p bmNvbWluZ192YXJhcmdzIChjdW11bGF0aXZlX2FyZ3NfdCBjdW0sCiAgIC8q IFRoZSBjYWxsZXIgaGFzIGFkdmFuY2VkIENVTSB1cCB0bywgYnV0IG5vdCBi ZXlvbmQsIHRoZSBsYXN0IG5hbWVkCiAgICAgIGFyZ3VtZW50LiAgQWR2YW5j ZSBhIGxvY2FsIGNvcHkgb2YgQ1VNIHBhc3QgdGhlIGxhc3QgInJlYWwiIG5h bWVkCiAgICAgIGFyZ3VtZW50LCB0byBmaW5kIG91dCBob3cgbWFueSByZWdp c3RlcnMgYXJlIGxlZnQgb3Zlci4gICovCi0gIHRhcmdldG0uY2FsbHMuZnVu Y3Rpb25fYXJnX2FkdmFuY2UgKHBhY2tfY3VtdWxhdGl2ZV9hcmdzICgmbG9j YWxfY3VtKSwKLQkJCQkgICAgICBtb2RlLCB0eXBlLCB0cnVlKTsKKyAgZnVu Y3Rpb25fYXJnX2FkdmFuY2UgKHBhY2tfY3VtdWxhdGl2ZV9hcmdzICgmbG9j YWxfY3VtKSwgbW9kZSwgdHlwZSwKKwkJCXRydWUpOwogICBmaXJzdF9yZWcg PSBsb2NhbF9jdW07CiAKICAgaWYgKGxvY2FsX2N1bSA8IFRJTEVQUk9fTlVN X0FSR19SRUdTKQpAQCAtNDIxLDcgKzQyMSw4IEBAIHRpbGVwcm9fZ2ltcGxp ZnlfdmFfYXJnX2V4cHIgKHRyZWUgdmFsaXN0LCB0cmVlIHR5cGUsIGdpbXBs ZV9zZXEgKiBwcmVfcCwKICAgaWYgKHBhc3NfYnlfcmVmZXJlbmNlX3ApCiAg ICAgdHlwZSA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAodHlwZSk7CiAKLSAgc2l6 ZSA9IGludF9zaXplX2luX2J5dGVzICh0eXBlKTsKKyAgYm9vbCBlbXB0eV9y ZWNvcmQgPSB0eXBlICYmIHR5cGVfaXNfZW1wdHlfcmVjb3JkX3AgKHR5cGUp OworICBzaXplID0gZW1wdHlfcmVjb3JkID8gMCA6IGludF9zaXplX2luX2J5 dGVzICh0eXBlKTsKICAgcnNpemUgPSAoKHNpemUgKyBVTklUU19QRVJfV09S RCAtIDEpIC8gVU5JVFNfUEVSX1dPUkQpICogVU5JVFNfUEVSX1dPUkQ7CiAK ICAgLyogSWYgdGhlIGFsaWdubWVudCBvZiB0aGUgdHlwZSBpcyBncmVhdGVy IHRoYW4gdGhlIGRlZmF1bHQgZm9yIGEKZGlmZiAtLWdpdCBhL2djYy9jb25m aWcvdmlzaXVtL3Zpc2l1bS5jIGIvZ2NjL2NvbmZpZy92aXNpdW0vdmlzaXVt LmMKaW5kZXggMGJmMjc1Yy4uNGYyNTJkMCAxMDA2NDQKLS0tIGEvZ2NjL2Nv bmZpZy92aXNpdW0vdmlzaXVtLmMKKysrIGIvZ2NjL2NvbmZpZy92aXNpdW0v dmlzaXVtLmMKQEAgLTE1MjksNyArMTUyOSw4IEBAIHZpc2l1bV9naW1wbGlm eV92YV9hcmcgKHRyZWUgdmFsaXN0LCB0cmVlIHR5cGUsIGdpbXBsZV9zZXEg KnByZV9wLAogICAgICAgcmV0dXJuIGJ1aWxkX3ZhX2FyZ19pbmRpcmVjdF9y ZWYgKHQpOwogICAgIH0KIAotICBzaXplID0gaW50X3NpemVfaW5fYnl0ZXMg KHR5cGUpOworICBib29sIGVtcHR5X3JlY29yZCA9IHR5cGUgJiYgdHlwZV9p c19lbXB0eV9yZWNvcmRfcCAodHlwZSk7CisgIHNpemUgPSBlbXB0eV9yZWNv cmQgPyAwIDogaW50X3NpemVfaW5fYnl0ZXMgKHR5cGUpOwogICByc2l6ZSA9 IChzaXplICsgVU5JVFNfUEVSX1dPUkQgLSAxKSAmIC1VTklUU19QRVJfV09S RDsKICAgZl9vdmZsID0gVFlQRV9GSUVMRFMgKHZhX2xpc3RfdHlwZV9ub2Rl KTsKICAgZl9nYmFzZSA9IFRSRUVfQ0hBSU4gKGZfb3ZmbCk7CmRpZmYgLS1n aXQgYS9nY2MvY29uZmlnL3h0ZW5zYS94dGVuc2EuYyBiL2djYy9jb25maWcv eHRlbnNhL3h0ZW5zYS5jCmluZGV4IDBmNTg2NTUuLjQzOTExYTEgMTAwNjQ0 Ci0tLSBhL2djYy9jb25maWcveHRlbnNhL3h0ZW5zYS5jCisrKyBiL2djYy9j b25maWcveHRlbnNhL3h0ZW5zYS5jCkBAIC0zMTYxLDcgKzMxNjEsOCBAQCB4 dGVuc2FfZ2ltcGxpZnlfdmFfYXJnX2V4cHIgKHRyZWUgdmFsaXN0LCB0cmVl IHR5cGUsIGdpbXBsZV9zZXEgKnByZV9wLAogICBuZHggPSBidWlsZDMgKENP TVBPTkVOVF9SRUYsIFRSRUVfVFlQRSAoZl9uZHgpLCB1bnNoYXJlX2V4cHIg KHZhbGlzdCksCiAJCWZfbmR4LCBOVUxMX1RSRUUpOwogCi0gIHR5cGVfc2l6 ZSA9IHNpemVfaW5fYnl0ZXMgKHR5cGUpOworICBib29sIGVtcHR5X3JlY29y ZCA9IHR5cGUgJiYgdHlwZV9pc19lbXB0eV9yZWNvcmRfcCAodHlwZSk7Cisg IHR5cGVfc2l6ZSA9IGVtcHR5X3JlY29yZCA/IDAgOiBzaXplX2luX2J5dGVz ICh0eXBlKTsKICAgdmFfc2l6ZSA9IHJvdW5kX3VwICh0eXBlX3NpemUsIFVO SVRTX1BFUl9XT1JEKTsKICAgZ2ltcGxpZnlfZXhwciAoJnZhX3NpemUsIHBy ZV9wLCBOVUxMLCBpc19naW1wbGVfdmFsLCBmYl9ydmFsdWUpOwogCi0tIAoy LjUuMAoK --089e0122a882b0d5e005267d94d1--