From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 87795 invoked by alias); 7 Nov 2017 20:38:49 -0000 Mailing-List: contact fortran-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: fortran-owner@gcc.gnu.org Received: (qmail 87773 invoked by uid 89); 7 Nov 2017 20:38:48 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.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=revealed X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-yw0-f178.google.com Received: from mail-yw0-f178.google.com (HELO mail-yw0-f178.google.com) (209.85.161.178) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 07 Nov 2017 20:38:46 +0000 Received: by mail-yw0-f178.google.com with SMTP id i198so472899ywe.7; Tue, 07 Nov 2017 12:38:46 -0800 (PST) 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=7eXEbBGOY+JMMRov40WcPUL7q0zGmIVTypqfuwuXotw=; b=tEubEbPWj/MK9e8DuV8ZT79VHnsx7yICVEwfJvQkFR7JfOMB6YFe45kHpNF/E4PGms 5cq3mNSkGsFEBkf9QvKhAwNvlscFBq7iFs3OmRa1LK1IUCrOtvNYtH/8WiWI4HG/tk4B DHDxnVeLWqLSc34QTIbRk7nRmhzRKXQftotoqO+03YEL9f8i8VjiMNXWf3GmPSYPYvOL HBkltr78wUvSi85/u7oxFfYY3TkfYgjQ2rgPstXVke9UpPz8VR6GFNpC9cvRxts0INrP DjwU2u4IOuYc0ajBnzeq8mPAOr/ws0tLSvQ666qSNfDhlJ8pcEfZBL+mqSj3lg6ROYGd wxYQ== X-Gm-Message-State: AJaThX6mv8hC2zf3b88GMlkEK+DObawXRGYk0E8mOaPDonIkfQHX1S/4 mIupDNHiGqnBfUhqspE8ypVKWMTluZhJA/Zp9D5Ulg== X-Google-Smtp-Source: ABhQp+S8PX+D0t4TtGb9R/4U7uBacbuI12PhOyTQnpUZss0ROvPZcIcTw87R58JJtUiTpyDvQUFW895/vSSIbaDTnwI= X-Received: by 10.37.61.129 with SMTP id k123mr15978yba.44.1510087124393; Tue, 07 Nov 2017 12:38:44 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.163.146 with HTTP; Tue, 7 Nov 2017 12:38:43 -0800 (PST) In-Reply-To: <20171107200641.GA47000@troutmask.apl.washington.edu> References: <1510079175-10927-1-git-send-email-blomqvist.janne@gmail.com> <20171107200641.GA47000@troutmask.apl.washington.edu> From: Janne Blomqvist Date: Tue, 07 Nov 2017 20:38:00 -0000 Message-ID: Subject: Re: [PATCH, fortran, PR 82869] Introduce default_logical_type_node and logical_type_node To: Steve Kargl Cc: Fortran List , GCC Patches Content-Type: multipart/mixed; boundary="001a114bb17aa1d4a2055d6a8e7a" X-IsSubscribed: yes X-SW-Source: 2017-11/txt/msg00042.txt.bz2 --001a114bb17aa1d4a2055d6a8e7a Content-Type: text/plain; charset="UTF-8" Content-length: 3712 On Tue, Nov 7, 2017 at 10:06 PM, Steve Kargl wrote: > On Tue, Nov 07, 2017 at 08:26:15PM +0200, Janne Blomqvist wrote: >> Earlier GFortran used to redefine boolean_type_node, which in the rest >> of the compiler means the C/C++ _Bool/bool type, to the Fortran >> default logical type. When this redefinition was removed, a few >> issues surfaced. Namely, >> >> 1) PR 82869, where we created a boolean tmp variable, and passed it to >> the runtime library as a Fortran logical variable of a different size. >> >> 2) Fortran specifies that logical operations should be done with the >> default logical kind, not in any other kind. >> >> 3) Using 8-bit variables have some issues, such as >> - on x86, partial register stalls and length prefix changes. >> - s390 has a compare with immediate and jump instruction which >> works with 32-bit but not 8-bit quantities. >> >> This patch addresses (2) by introducing a type >> default_logical_type_node which is used when evaluating Fortran >> logical expressions. (3) is addressed by introducing >> logical_type_node, a tree representing a logical(kind=4) type which >> can be used for compiler-generated temporary >> variables. logical_type_node is always 4 bytes. As a side effect, (1) >> is also fixed, though there might be some latent bug lurking there >> still. >> >> For x86-64, using the Polyhedron benchmark suite, no performance or >> code size difference worth mentioning was observed. >> >> Regtested on x86_64-pc-linux-gnu. Ok for trunk? > > I scanned the patch and it looks ok to me (most a > mechanical find/replace operation). One thing those, > >> diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c >> index 78477a9..602d369 100644 >> --- a/gcc/fortran/trans-types.c >> +++ b/gcc/fortran/trans-types.c >> @@ -62,6 +62,12 @@ tree ppvoid_type_node; >> tree pchar_type_node; >> tree pfunc_type_node; >> >> +tree default_logical_type_node; >> +tree default_logical_true_node; >> +tree default_logical_false_node; >> +tree logical_type_node; >> +tree logical_true_node; >> +tree logical_false_node; >> tree gfc_charlen_type_node; >> >> tree gfc_float128_type_node = NULL_TREE; >> @@ -1003,6 +1009,15 @@ gfc_init_types (void) >> wi::mask (n, UNSIGNED, >> TYPE_PRECISION (size_type_node))); >> >> + >> + default_logical_type_node = gfc_get_logical_type (gfc_default_logical_kind); >> + default_logical_true_node = build_int_cst (default_logical_type_node, 1); >> + default_logical_false_node = build_int_cst (default_logical_type_node, 0); >> + >> + logical_type_node = gfc_get_logical_type (4); > > Can you add a comment to note that the 4 is purposely chosen? > A year or so from now, someone might change this to gfc_default_logical_kind > without understand/recalling why 4 is used. The patch contains a comment explaining that in trans-types.h. However, a bit of further experimenting with my patch revealed that one can cause these latent bugs I feared to appear by playing with -fdefault-integer-8 / -finteger-4-integer-8 with the example from bugzilla (so we end up passing a pointer to a logical(kind=4) variable but we tell libgfortran it's kind=8). I did fix the most obvious ones in the attached patch (on top of the previous one), but I'm not convinced it's exhaustive. So I wonder, do we actually care enough about -fdefault-integer-8 / -finteger-4-integer-8 to do this kind of micro-optimization (i.e. use 4 byte logical temporary variables if we can even when we use -fdefault-integer-8 / -finteger-4-integer-8), or should we play it safe and just use default_logical_type_node everywhere? -- Janne Blomqvist --001a114bb17aa1d4a2055d6a8e7a Content-Type: text/plain; charset="US-ASCII"; name="logical_intrinsics.diff" Content-Disposition: attachment; filename="logical_intrinsics.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j9q2s7df0 Content-length: 11753 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWludHJpbnNpYy5jIGIv Z2NjL2ZvcnRyYW4vdHJhbnMtaW50cmluc2ljLmMKaW5kZXggZWQ0NDk2Yy4u OTVmYWEzMiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtaW50cmlu c2ljLmMKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtaW50cmluc2ljLmMKQEAg LTUzNzgsNyArNTM3OCw4IEBAIGdmY19jb252X2ludHJpbnNpY19idGVzdCAo Z2ZjX3NlICogc2UsIGdmY19leHByICogZXhwcikKICAgdG1wID0gZm9sZF9i dWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTFNISUZUX0VYUFIsIHR5cGUs CiAJCQkgYnVpbGRfaW50X2NzdCAodHlwZSwgMSksIGFyZ3NbMV0pOwogICB0 bXAgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBCSVRfQU5E X0VYUFIsIHR5cGUsIGFyZ3NbMF0sIHRtcCk7Ci0gIHRtcCA9IGZvbGRfYnVp bGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE5FX0VYUFIsIGxvZ2ljYWxfdHlw ZV9ub2RlLCB0bXAsCisgIHRtcCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRf bG9jYXRpb24sIE5FX0VYUFIsIGRlZmF1bHRfbG9naWNhbF90eXBlX25vZGUs CisJCQkgdG1wLAogCQkJIGJ1aWxkX2ludF9jc3QgKHR5cGUsIDApKTsKICAg dHlwZSA9IGdmY190eXBlbm9kZV9mb3Jfc3BlYyAoJmV4cHItPnRzKTsKICAg c2UtPmV4cHIgPSBjb252ZXJ0ICh0eXBlLCB0bXApOwpAQCAtNTQwNiw3ICs1 NDA3LDcgQEAgZ2ZjX2NvbnZfaW50cmluc2ljX2JpdGNvbXAgKGdmY19zZSAq IHNlLCBnZmNfZXhwciAqIGV4cHIsIGVudW0gdHJlZV9jb2RlIG9wKQogICAg IGFyZ3NbMF0gPSBmb2xkX2NvbnZlcnQgKFRSRUVfVFlQRSAoYXJnc1sxXSks IGFyZ3NbMF0pOwogCiAgIC8qIE5vdywgd2UgY29tcGFyZSB0aGVtLiAgKi8K LSAgc2UtPmV4cHIgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9u LCBvcCwgbG9naWNhbF90eXBlX25vZGUsCisgIHNlLT5leHByID0gZm9sZF9i dWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgb3AsIGRlZmF1bHRfbG9naWNh bF90eXBlX25vZGUsCiAJCQkgICAgICBhcmdzWzBdLCBhcmdzWzFdKTsKIH0K IApAQCAtNzQ2NCw3ICs3NDY1LDggQEAgZ2ZjX2NvbnZfYWxsb2NhdGVkIChn ZmNfc2UgKnNlLCBnZmNfZXhwciAqZXhwcikKIAkgIHRtcCA9IGdmY19jb252 X2Rlc2NyaXB0b3JfZGF0YV9nZXQgKGFyZzFzZS5leHByKTsKIAl9CiAKLSAg ICAgIHRtcCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE5F X0VYUFIsIGxvZ2ljYWxfdHlwZV9ub2RlLCB0bXAsCisgICAgICB0bXAgPSBm b2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBORV9FWFBSLAorCQkJ ICAgICBkZWZhdWx0X2xvZ2ljYWxfdHlwZV9ub2RlLCB0bXAsCiAJCQkgICAg IGZvbGRfY29udmVydCAoVFJFRV9UWVBFICh0bXApLCBudWxsX3BvaW50ZXJf bm9kZSkpOwogICAgIH0KICAgc2UtPmV4cHIgPSBjb252ZXJ0IChnZmNfdHlw ZW5vZGVfZm9yX3NwZWMgKCZleHByLT50cyksIHRtcCk7CkBAIC03NTMyLDcg Kzc1MzQsOCBAQCBnZmNfY29udl9hc3NvY2lhdGVkIChnZmNfc2UgKnNlLCBn ZmNfZXhwciAqZXhwcikKICAgICAgICAgfQogICAgICAgZ2ZjX2FkZF9ibG9j a190b19ibG9jayAoJnNlLT5wcmUsICZhcmcxc2UucHJlKTsKICAgICAgIGdm Y19hZGRfYmxvY2tfdG9fYmxvY2sgKCZzZS0+cG9zdCwgJmFyZzFzZS5wb3N0 KTsKLSAgICAgIHRtcCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRp b24sIE5FX0VYUFIsIGxvZ2ljYWxfdHlwZV9ub2RlLCB0bXAyLAorICAgICAg dG1wID0gZm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTkVfRVhQ UiwKKwkJCSAgICAgZGVmYXVsdF9sb2dpY2FsX3R5cGVfbm9kZSwgdG1wMiwK IAkJCSAgICAgZm9sZF9jb252ZXJ0IChUUkVFX1RZUEUgKHRtcDIpLCBudWxs X3BvaW50ZXJfbm9kZSkpOwogICAgICAgc2UtPmV4cHIgPSB0bXA7CiAgICAg fQpAQCAtNzU0NSw3ICs3NTQ4LDcgQEAgZ2ZjX2NvbnZfYXNzb2NpYXRlZCAo Z2ZjX3NlICpzZSwgZ2ZjX2V4cHIgKmV4cHIpCiAgICAgICBub256ZXJvX2No YXJsZW4gPSBOVUxMX1RSRUU7CiAgICAgICBpZiAoYXJnMS0+ZXhwci0+dHMu dHlwZSA9PSBCVF9DSEFSQUNURVIpCiAJbm9uemVyb19jaGFybGVuID0gZm9s ZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTkVfRVhQUiwKLQkJCQkJ ICAgbG9naWNhbF90eXBlX25vZGUsCisJCQkJCSAgIGRlZmF1bHRfbG9naWNh bF90eXBlX25vZGUsCiAJCQkJCSAgIGFyZzEtPmV4cHItPnRzLnUuY2wtPmJh Y2tlbmRfZGVjbCwKIAkJCQkJICAgaW50ZWdlcl96ZXJvX25vZGUpOwogICAg ICAgaWYgKHNjYWxhcikKQEAgLTc1NzAsMTIgKzc1NzMsMTQgQEAgZ2ZjX2Nv bnZfYXNzb2NpYXRlZCAoZ2ZjX3NlICpzZSwgZ2ZjX2V4cHIgKmV4cHIpCiAJ ICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrICgmc2UtPnBvc3QsICZhcmcxc2Uu cG9zdCk7CiAJICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrICgmc2UtPnByZSwg JmFyZzJzZS5wcmUpOwogCSAgZ2ZjX2FkZF9ibG9ja190b19ibG9jayAoJnNl LT5wb3N0LCAmYXJnMnNlLnBvc3QpOwotICAgICAgICAgIHRtcCA9IGZvbGRf YnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIEVRX0VYUFIsIGxvZ2ljYWxf dHlwZV9ub2RlLAorICAgICAgICAgIHRtcCA9IGZvbGRfYnVpbGQyX2xvYyAo aW5wdXRfbG9jYXRpb24sIEVRX0VYUFIsCisJCQkJIGRlZmF1bHRfbG9naWNh bF90eXBlX25vZGUsCiAJCQkJIGFyZzFzZS5leHByLCBhcmcyc2UuZXhwcik7 Ci0gICAgICAgICAgdG1wMiA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9j YXRpb24sIE5FX0VYUFIsIGxvZ2ljYWxfdHlwZV9ub2RlLAorICAgICAgICAg IHRtcDIgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBORV9F WFBSLAorCQkJCSAgZGVmYXVsdF9sb2dpY2FsX3R5cGVfbm9kZSwKIAkJCQkg IGFyZzFzZS5leHByLCBudWxsX3BvaW50ZXJfbm9kZSk7CiAgICAgICAgICAg c2UtPmV4cHIgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBU UlVUSF9BTkRfRVhQUiwKLQkJCQkgICAgICBsb2dpY2FsX3R5cGVfbm9kZSwg dG1wLCB0bXAyKTsKKwkJCQkgICAgICBkZWZhdWx0X2xvZ2ljYWxfdHlwZV9u b2RlLCB0bXAsIHRtcDIpOwogICAgICAgICB9CiAgICAgICBlbHNlCiAgICAg ICAgIHsKQEAgLTc1OTMsNyArNzU5OCw3IEBAIGdmY19jb252X2Fzc29jaWF0 ZWQgKGdmY19zZSAqc2UsIGdmY19leHByICpleHByKQogCSAgICB0bXAgPSBn ZmNfcmFua19jc3RbYXJnMS0+ZXhwci0+cmFuayAtIDFdOwogCSAgdG1wID0g Z2ZjX2NvbnZfZGVzY3JpcHRvcl9zdHJpZGVfZ2V0IChhcmcxc2UuZXhwciwg dG1wKTsKIAkgIG5vbnplcm9fYXJyYXlsZW4gPSBmb2xkX2J1aWxkMl9sb2Mg KGlucHV0X2xvY2F0aW9uLCBORV9FWFBSLAotCQkJCQkgICAgICBsb2dpY2Fs X3R5cGVfbm9kZSwgdG1wLAorCQkJCQkgICAgICBkZWZhdWx0X2xvZ2ljYWxf dHlwZV9ub2RlLCB0bXAsCiAJCQkJCSAgICAgIGJ1aWxkX2ludF9jc3QgKFRS RUVfVFlQRSAodG1wKSwgMCkpOwogCiAgICAgICAgICAgLyogQSBwb2ludGVy IHRvIGFuIGFycmF5LCBjYWxsIGxpYnJhcnkgZnVuY3Rpb24gX2dmb3JfYXNz b2NpYXRlZC4gICovCkBAIC03NjA3LDkgKzc2MTIsOSBAQCBnZmNfY29udl9h c3NvY2lhdGVkIChnZmNfc2UgKnNlLCBnZmNfZXhwciAqZXhwcikKICAgICAg ICAgICBzZS0+ZXhwciA9IGJ1aWxkX2NhbGxfZXhwcl9sb2MgKGlucHV0X2xv Y2F0aW9uLAogCQkJCSAgICAgIGdmb3JfZm5kZWNsX2Fzc29jaWF0ZWQsIDIs CiAJCQkJICAgICAgYXJnMXNlLmV4cHIsIGFyZzJzZS5leHByKTsKLQkgIHNl LT5leHByID0gY29udmVydCAobG9naWNhbF90eXBlX25vZGUsIHNlLT5leHBy KTsKKwkgIHNlLT5leHByID0gY29udmVydCAoZGVmYXVsdF9sb2dpY2FsX3R5 cGVfbm9kZSwgc2UtPmV4cHIpOwogCSAgc2UtPmV4cHIgPSBmb2xkX2J1aWxk Ml9sb2MgKGlucHV0X2xvY2F0aW9uLCBUUlVUSF9BTkRfRVhQUiwKLQkJCQkg ICAgICBsb2dpY2FsX3R5cGVfbm9kZSwgc2UtPmV4cHIsCisJCQkJICAgICAg ZGVmYXVsdF9sb2dpY2FsX3R5cGVfbm9kZSwgc2UtPmV4cHIsCiAJCQkJICAg ICAgbm9uemVyb19hcnJheWxlbik7CiAgICAgICAgIH0KIApAQCAtNzYxNyw3 ICs3NjIyLDcgQEAgZ2ZjX2NvbnZfYXNzb2NpYXRlZCAoZ2ZjX3NlICpzZSwg Z2ZjX2V4cHIgKmV4cHIpCiAJIGJlIGFzc29jaWF0ZWQuICAqLwogICAgICAg aWYgKG5vbnplcm9fY2hhcmxlbiAhPSBOVUxMX1RSRUUpCiAJc2UtPmV4cHIg PSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBUUlVUSF9BTkRf RVhQUiwKLQkJCQkgICAgbG9naWNhbF90eXBlX25vZGUsCisJCQkJICAgIGRl ZmF1bHRfbG9naWNhbF90eXBlX25vZGUsCiAJCQkJICAgIHNlLT5leHByLCBu b256ZXJvX2NoYXJsZW4pOwogICAgIH0KIApAQCAtNzY0NSwxNCArNzY1MCwx NiBAQCBnZmNfY29udl9zYW1lX3R5cGVfYXMgKGdmY19zZSAqc2UsIGdmY19l eHByICpleHByKQogICBpZiAoVU5MSU1JVEVEX1BPTFkgKGEpKQogICAgIHsK ICAgICAgIHRtcCA9IGdmY19jbGFzc192cHRyX2dldCAoYS0+c3ltdHJlZS0+ bi5zeW0tPmJhY2tlbmRfZGVjbCk7Ci0gICAgICBjb25kYSA9IGZvbGRfYnVp bGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE5FX0VYUFIsIGxvZ2ljYWxfdHlw ZV9ub2RlLAorICAgICAgY29uZGEgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0 X2xvY2F0aW9uLCBORV9FWFBSLAorCQkJICAgICAgIGRlZmF1bHRfbG9naWNh bF90eXBlX25vZGUsCiAJCQkgICAgICAgdG1wLCBidWlsZF9pbnRfY3N0IChU UkVFX1RZUEUgKHRtcCksIDApKTsKICAgICB9CiAKICAgaWYgKFVOTElNSVRF RF9QT0xZIChiKSkKICAgICB7CiAgICAgICB0bXAgPSBnZmNfY2xhc3NfdnB0 cl9nZXQgKGItPnN5bXRyZWUtPm4uc3ltLT5iYWNrZW5kX2RlY2wpOwotICAg ICAgY29uZGIgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBO RV9FWFBSLCBsb2dpY2FsX3R5cGVfbm9kZSwKKyAgICAgIGNvbmRiID0gZm9s ZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTkVfRVhQUiwKKwkJCSAg ICAgICBkZWZhdWx0X2xvZ2ljYWxfdHlwZV9ub2RlLAogCQkJICAgICAgIHRt cCwgYnVpbGRfaW50X2NzdCAoVFJFRV9UWVBFICh0bXApLCAwKSk7CiAgICAg fQogCkBAIC03Njc4LDE2ICs3Njg1LDE2IEBAIGdmY19jb252X3NhbWVfdHlw ZV9hcyAoZ2ZjX3NlICpzZSwgZ2ZjX2V4cHIgKmV4cHIpCiAgIGdmY19jb252 X2V4cHIgKCZzZTIsIGIpOwogCiAgIHRtcCA9IGZvbGRfYnVpbGQyX2xvYyAo aW5wdXRfbG9jYXRpb24sIEVRX0VYUFIsCi0JCQkgbG9naWNhbF90eXBlX25v ZGUsIHNlMS5leHByLAorCQkJIGRlZmF1bHRfbG9naWNhbF90eXBlX25vZGUs IHNlMS5leHByLAogCQkJIGZvbGRfY29udmVydCAoVFJFRV9UWVBFIChzZTEu ZXhwciksIHNlMi5leHByKSk7CiAKICAgaWYgKGNvbmRhKQogICAgIHRtcCA9 IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIFRSVVRIX0FORElG X0VYUFIsCi0JCQkgICBsb2dpY2FsX3R5cGVfbm9kZSwgY29uZGEsIHRtcCk7 CisJCQkgICBkZWZhdWx0X2xvZ2ljYWxfdHlwZV9ub2RlLCBjb25kYSwgdG1w KTsKIAogICBpZiAoY29uZGIpCiAgICAgdG1wID0gZm9sZF9idWlsZDJfbG9j IChpbnB1dF9sb2NhdGlvbiwgVFJVVEhfQU5ESUZfRVhQUiwKLQkJCSAgIGxv Z2ljYWxfdHlwZV9ub2RlLCBjb25kYiwgdG1wKTsKKwkJCSAgIGRlZmF1bHRf bG9naWNhbF90eXBlX25vZGUsIGNvbmRiLCB0bXApOwogCiAgIHNlLT5leHBy ID0gY29udmVydCAoZ2ZjX3R5cGVub2RlX2Zvcl9zcGVjICgmZXhwci0+dHMp LCB0bXApOwogfQpAQCAtODA1Miw3ICs4MDU5LDcgQEAgY29udl9pc29jYmlu ZGluZ19mdW5jdGlvbiAoZ2ZjX3NlICpzZSwgZ2ZjX2V4cHIgKmV4cHIpCiAg ICAgICBpZiAoYXJnLT5uZXh0LT5leHByID09IE5VTEwpCiAJLyogT25seSBn aXZlbiBvbmUgYXJnIHNvIGdlbmVyYXRlIGEgbnVsbCBhbmQgZG8gYQogCSAg IG5vdC1lcXVhbCBjb21wYXJpc29uIGFnYWluc3QgdGhlIGZpcnN0IGFyZy4g ICovCi0Jc2UtPmV4cHIgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0 aW9uLCBORV9FWFBSLCBsb2dpY2FsX3R5cGVfbm9kZSwKKwlzZS0+ZXhwciA9 IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE5FX0VYUFIsIGRl ZmF1bHRfbG9naWNhbF90eXBlX25vZGUsCiAJCQkJICAgIGFyZzFzZS5leHBy LAogCQkJCSAgICBmb2xkX2NvbnZlcnQgKFRSRUVfVFlQRSAoYXJnMXNlLmV4 cHIpLAogCQkJCQkJICBudWxsX3BvaW50ZXJfbm9kZSkpOwpAQCAtODA2OCwx NyArODA3NSwxNyBAQCBjb252X2lzb2NiaW5kaW5nX2Z1bmN0aW9uIChnZmNf c2UgKnNlLCBnZmNfZXhwciAqZXhwcikKIAkgIGdmY19hZGRfYmxvY2tfdG9f YmxvY2sgKCZzZS0+cG9zdCwgJmFyZzJzZS5wb3N0KTsKIAogCSAgLyogR2Vu ZXJhdGUgdGVzdCB0byBjb21wYXJlIHRoYXQgdGhlIHR3byBhcmdzIGFyZSBl cXVhbC4gICovCi0JICBlcV9leHByID0gZm9sZF9idWlsZDJfbG9jIChpbnB1 dF9sb2NhdGlvbiwgRVFfRVhQUiwgbG9naWNhbF90eXBlX25vZGUsCisJICBl cV9leHByID0gZm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgRVFf RVhQUiwgZGVmYXVsdF9sb2dpY2FsX3R5cGVfbm9kZSwKIAkJCQkgICAgIGFy ZzFzZS5leHByLCBhcmcyc2UuZXhwcik7CiAJICAvKiBHZW5lcmF0ZSB0ZXN0 IHRvIGVuc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmcgaXMgbm90IG51bGwuICAq LwogCSAgbm90X251bGxfZXhwciA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRf bG9jYXRpb24sIE5FX0VYUFIsCi0JCQkJCSAgIGxvZ2ljYWxfdHlwZV9ub2Rl LAorCQkJCQkgICBkZWZhdWx0X2xvZ2ljYWxfdHlwZV9ub2RlLAogCQkJCQkg ICBhcmcxc2UuZXhwciwgbnVsbF9wb2ludGVyX25vZGUpOwogCiAJICAvKiBG aW5hbGx5LCB0aGUgZ2VuZXJhdGVkIHRlc3QgbXVzdCBjaGVjayB0aGF0IGJv dGggYXJnMSBpcyBub3QKIAkgICAgIE5VTEwgYW5kIHRoYXQgaXQgaXMgZXF1 YWwgdG8gdGhlIHNlY29uZCBhcmcuICAqLwogCSAgc2UtPmV4cHIgPSBmb2xk X2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBUUlVUSF9BTkRfRVhQUiwK LQkJCQkgICAgICBsb2dpY2FsX3R5cGVfbm9kZSwKKwkJCQkgICAgICBkZWZh dWx0X2xvZ2ljYWxfdHlwZV9ub2RlLAogCQkJCSAgICAgIG5vdF9udWxsX2V4 cHIsIGVxX2V4cHIpOwogCX0KICAgICB9CkBAIC04MzA4LDExICs4MzE1LDEy IEBAIGNvbnZfaW50cmluc2ljX2llZWVfaXNfbm9ybWFsIChnZmNfc2UgKiBz ZSwgZ2ZjX2V4cHIgKiBleHByKQogICBpc25vcm1hbCA9IGJ1aWxkX2NhbGxf ZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLAogCQkJCSAgYnVpbHRpbl9kZWNs X2V4cGxpY2l0IChCVUlMVF9JTl9JU05PUk1BTCksCiAJCQkJICAxLCBhcmcp OwotICBpc3plcm8gPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9u LCBFUV9FWFBSLCBsb2dpY2FsX3R5cGVfbm9kZSwgYXJnLAorICBpc3plcm8g PSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBFUV9FWFBSLAor CQkJICAgIGRlZmF1bHRfbG9naWNhbF90eXBlX25vZGUsIGFyZywKIAkJCSAg ICBidWlsZF9yZWFsX2Zyb21faW50X2NzdCAoVFJFRV9UWVBFIChhcmcpLAog CQkJCQkJICAgICBpbnRlZ2VyX3plcm9fbm9kZSkpOwogICBzZS0+ZXhwciA9 IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIFRSVVRIX09SX0VY UFIsCi0JCQkgICAgICBsb2dpY2FsX3R5cGVfbm9kZSwgaXNub3JtYWwsIGlz emVybyk7CisJCQkgICAgICBkZWZhdWx0X2xvZ2ljYWxfdHlwZV9ub2RlLCBp c25vcm1hbCwgaXN6ZXJvKTsKICAgc2UtPmV4cHIgPSBmb2xkX2NvbnZlcnQg KGdmY190eXBlbm9kZV9mb3Jfc3BlYyAoJmV4cHItPnRzKSwgc2UtPmV4cHIp OwogfQogCkBAIC04MzM3LDExICs4MzQ1LDEyIEBAIGNvbnZfaW50cmluc2lj X2llZWVfaXNfbmVnYXRpdmUgKGdmY19zZSAqIHNlLCBnZmNfZXhwciAqIGV4 cHIpCiAgIHNpZ25iaXQgPSBidWlsZF9jYWxsX2V4cHJfbG9jIChpbnB1dF9s b2NhdGlvbiwKIAkJCQkgYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChCVUlMVF9J Tl9TSUdOQklUKSwKIAkJCQkgMSwgYXJnKTsKLSAgc2lnbmJpdCA9IGZvbGRf YnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE5FX0VYUFIsIGxvZ2ljYWxf dHlwZV9ub2RlLAorICBzaWduYml0ID0gZm9sZF9idWlsZDJfbG9jIChpbnB1 dF9sb2NhdGlvbiwgTkVfRVhQUiwKKwkJCSAgICAgZGVmYXVsdF9sb2dpY2Fs X3R5cGVfbm9kZSwKIAkJCSAgICAgc2lnbmJpdCwgaW50ZWdlcl96ZXJvX25v ZGUpOwogCiAgIHNlLT5leHByID0gZm9sZF9idWlsZDJfbG9jIChpbnB1dF9s b2NhdGlvbiwgVFJVVEhfQU5EX0VYUFIsCi0JCQkgICAgICBsb2dpY2FsX3R5 cGVfbm9kZSwgc2lnbmJpdCwKKwkJCSAgICAgIGRlZmF1bHRfbG9naWNhbF90 eXBlX25vZGUsIHNpZ25iaXQsCiAJCQkgICAgICBmb2xkX2J1aWxkMV9sb2Mg KGlucHV0X2xvY2F0aW9uLCBUUlVUSF9OT1RfRVhQUiwKIAkJCQkJICAgICAg IFRSRUVfVFlQRShpc25hbiksIGlzbmFuKSk7CiAK --001a114bb17aa1d4a2055d6a8e7a--