From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 86196 invoked by alias); 1 May 2017 17:16:32 -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 86185 invoked by uid 89); 1 May 2017 17:16:31 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.3 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=3829, gs1, restructuring, rcode X-HELO: NAM03-BY2-obe.outbound.protection.outlook.com Received: from mail-by2nam03on0050.outbound.protection.outlook.com (HELO NAM03-BY2-obe.outbound.protection.outlook.com) (104.47.42.50) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 01 May 2017 17:16:29 +0000 Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=cavium.com; Received: from sellcey-dt.caveonetworks.com (50.233.148.156) by CY4PR07MB3464.namprd07.prod.outlook.com (10.171.252.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1061.12; Mon, 1 May 2017 17:16:23 +0000 Message-ID: <1493658980.29498.5.camel@cavium.com> Subject: [PATCH/AARCH64] Improve aarch64 conditional compare usage From: Steve Ellcey Reply-To: sellcey@cavium.com To: gcc-patches Date: Mon, 01 May 2017 17:16:00 -0000 Content-Type: multipart/mixed; boundary="=-EbH5znnB1iHNbSNTn9sc" Mime-Version: 1.0 X-ClientProxiedBy: CY4PR1001CA0015.namprd10.prod.outlook.com (10.171.218.156) To CY4PR07MB3464.namprd07.prod.outlook.com (10.171.252.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 596d4f8c-cddf-4d60-3cde-08d490b5cac3 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:CY4PR07MB3464; X-Microsoft-Exchange-Diagnostics: 1;CY4PR07MB3464;3:CibNAi8EHN2Y9/rb4jILSHCbrHmt76b03CbDobtbztQeO5DZco7Fg10A4Zk6wsBe3WsWX3wRiZLN5Ic0W3LEAFMHKx4ybPT33KqIEVsejN4/eRZtmoK/NY/+/ZU+FYV71OOR+b+6JrGhV7x1P2MLOKh+WjXmCaqJ9vVeGWlkL7hLeswuxXHonlwN1wAgPX3D7pI8VMum5qdmWyLTgN3OOIPZWmMmeLEwQrOhPdUX/ZxSJWT4dedCKcd1oZSgUBPzv4/zm9J1sX2FPtjBbW0lcxyLVFpwtf3aoSEjOw+5ReEZrjRdEuIrvV3ixHQNmrP1nm/g7UPwxqQDj9o0ezBt7Q==;25:Z0jwA2jOiLKwFZkM+BX0/0ln0hnWAm5oGZwJxhjxiWNDAxI20Y4EFc0GxMZMC1q3otKckLUNTyrILTRfF2H/SZZad/2jG2+Rz1GvsCJpzVRhnuQ41gSyIXkSJPeS1k2EV8cibrRing2p40AXop3pkgqOnNgZoM6qCaqtGL+qWmXvtIIXS/0l3CpyKyyaqodp9zwVZLBt5+0+8AgA1C5q/kIIlRPQvlATZgF3PEofsQGn/QTqwxbnP7bzOcXPSK5oEZClJVqWjZFd6aA0G5yMzQs9BTc5d/2KPGttJ+y5YT183tvnOWg3OjA2A1tJPbP+f+ia8ATc5ERREzSoDK+Jz29b/sVheefZK2Td85FkWGHFuHhY0i2tBeD6LtvRkiVqiqVNt7qZk9tGJO1RMNjNxm6SL2gPtpPDeR3aIriq5I9Ov8M1XrN8GprViQO+MZMwPoIpfW7C5fcuXkF/H7l2k7iQH/cydsEXM4pSI8fGbIEUnwHh70IywDAHNxfu6mcV X-Microsoft-Exchange-Diagnostics: 1;CY4PR07MB3464;31:a708QFim8FZHs/ZO+o0jfjGu5wG3ii2D6Phs8vytRycp82sJa8dBjqfKMY29sPCD7ScQByzpBQODJpeewJi6OO4jBXZsOcJLTExrbg7W5IshPIom+TgxSM3M0rFT3geQb97OmWoj8nJpNrxrkhHj0FDAdam4g1Kny7WlDUJRfI3BF0nE9q6sv1cWD6ZttIopgyHbDO/vnLOkwJ/atxkuAawF7MSSNnOsFYA9dIfYg5Zqyti1gm2gzrrzgO9PGxALRIcWRI3bo4oxPBy3V4V4Xg7u2fJTBJI4qo0JkqjTkFyeIq6gawmaONXSJT7bX9l3;20:UTLVOfn6lVJ/cOFRMXzYDCJikF9hBAspIVTx27WEg5sNSRUoLIcrD2THCPVRIV8ivCZn9DCNCuThL9cPy4/Ao0jiHSsqJI19qNfveQd2g0xfz8TbO7nOBazPN6G9XxQnj2nltmYl5xtR+pnJVeMPiXXC5OlmtZV4b0+7/LJlzdyZVn3JFy887HtseAWoHcO4R/60ra9dM2KEtphhyyGRhaGL79+v4pAAYae1YjKsukr7EFB/Ifc1/svTVDVrBK/+A9dNjroOQmhXzTHz74dQMEOeSws9iQnTgCu9yM1UY/eF5FBi4vNt2u0RQvhfA6UqYiACThCkILRu3PWrCYoaHGFM1xzF3yXlZswu3eSsvVUtA4XPV7usP+kZVbjL0IZrBO5eP2iXZGfCITokfs+V/cbpntjFGCU39eC1LhJtiBhP4AT2yR5/Cz4HwQwC40X3VMV1OvqwqU9QC1wSk7XqmHjEqgKZEoTdC1cg7CJan8xZ/DBeJQ9+Aphow64n9nEZ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(22074186197030)(183786458502308); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(102415395)(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(6041248)(20161123562025)(20161123564025)(20161123555025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(6072148);SRVR:CY4PR07MB3464;BCL:0;PCL:0;RULEID:;SRVR:CY4PR07MB3464; X-Microsoft-Exchange-Diagnostics: 1;CY4PR07MB3464;4:oPadq1mq31ud4J4Rhr5Be8CaqotIseqkcsytoRq9XhEOOD6bNnEpZzjBP5NSy08GSduuoKliD1LQFkdrcnk052rUAmvSmVSeuz+F0RlDFEl51OpafczLxn40NQJK0UtaTkUAouvq30LQyre1F8HOs1z6hjHwU0EAUI2nGGg73fJWt4QSd+i4BS4BCKg/fFsidUbCO3DxlKsGXSSwK+FL96q75biXDGYKTkwwmxn1YWlvpfirrWM9juGQ6H4gTKi/Y/eAKCsAmUHLfIMfc14meTf5xn7wqFfmWBIvSAncprmUSm1Y50tT0shz+cuPEAd0NSMUTMCQBjQZ+vIwryYkRoK1LvlK/LItqD/9daPShH6iEsUtUJ9OejwMnE8IDez2O0nKqPTnLNdyBOJuI/lkaAsUakz3rhAx6g/7d073sjHQCLRgr3Hkcbzy5zFZLPdn7YVtUc9FDBQjxn7jKjIEGAN4OpwBKpetEyYNlv0AONsLZQLg/Jba8WnhT3TY33eYotvCGCmO/6t1jPNheu5hJEWqsuEew4ZtQgvfGkAk824exmo+mu6q375xVkGpMLnuCcTXYQmKbkfUGMmU2qoz88cE+TxeB+qtb7zc6P/ShQao2FeYU6K2MUtbUv2SKbSHI/bQuYz+8P5klqX+gNFIbHkJVVkumjuybLWqE1uMFolzkJ0m6Zbvh7mSFBqs2+l5zrZ9bPgSI2ZWdbFN6X5peHBn8GcwRUjgxtdqQ+L2otxjJ4RNnErpJyGT5fHPmzwycnuBlKtPmZnNfRbctzK2/rI/cTYA4lsBcKNPr8SjhXajw7poq2OR1Vk03PEg47LV7n1Rs2KEQLb5Ref9DU1Iwwn7o4EGDf9htppIi+THUWahb3WA2ep6fqvO14v4NxD/ X-Forefront-PRVS: 02945962BD X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39850400002)(39400400002)(39410400002)(39840400002)(39450400003)(377424004)(54534003)(6116002)(568964002)(3846002)(53416004)(478600001)(38730400002)(6306002)(103116003)(6512007)(110136004)(36756003)(42186005)(2476003)(50986999)(50226002)(6506006)(43066003)(5890100001)(6486002)(189998001)(4810100001)(305945005)(7736002)(5660300001)(53936002)(512874002)(81166006)(3450700001)(25786009)(8676002)(4610100001)(2906002)(33646002)(6916009)(84326002);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR07MB3464;H:sellcey-dt.caveonetworks.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR07MB3464;23:w5dFmbuPwvfwXWXFl+MDgd1dRTMIfPaa1k1OGdIR3?= =?us-ascii?Q?y8NtG68h4YZvxfQ0oGMx2IzVyXRHmFCgH3Av71cKG+RBSCBUlvpoFQuNa/p4?= =?us-ascii?Q?Qk17A1GzC8o00MYeZ6bkboABbS8uW1pv4aTJNGyRVBX0PLAgzvIbjShkp4m6?= =?us-ascii?Q?ovBqmbEVjQFrkP3UGcIAZ3IyORwOGdYbQZ7JIPCcS9ZcnBogc9vgxede+3/+?= =?us-ascii?Q?3YvUDnyX4QX/rcCPPrAMQ7jTd4rVAeDItWD9vxDAwllGh8BMcA/eWYCekqcp?= =?us-ascii?Q?ml1/dFTvACN1rjXcSa8RluTHu8hJTsjwXgiKymQt+f7Ry/dMONbAwmCpuIxU?= =?us-ascii?Q?FKe8i6tWcPE5j8ode5HSR1HgQrLdOYK/tqx2vddtEdbogrPPhjbqS8VdKrES?= =?us-ascii?Q?vgSm9AbghM9ullru98QoJ+vt20Uge7rNOUswHD9GMWwZxqDQCH+pIm9yldZj?= =?us-ascii?Q?uNaHy2m+A1a5DVVuCMHrEg9Fi98TW3WvzQcMLuASnbd1EUA2uwsVB4W+Zbbl?= =?us-ascii?Q?kPvMORjv+BuNQI9+/QT7bssjaqxwBaSS9+NTLgHOJ9983hFabj/lcSMzNMma?= =?us-ascii?Q?33FsLMByyvkgOoRLCTpTeF8frLLtwB1zchv8+4H5o4GHSZROUbtnA7y3qUW/?= =?us-ascii?Q?TDhSgycBjdEfIfAHj65mH2YTOyFfndnNDiU/KVwRk6te0mJuCSUxr24nIuE/?= =?us-ascii?Q?s3aQD6va9j8UQQux+ROBf5Vh5stCGcjVmeULiqXbKA3WkA51Cy8K+cjz8Pzx?= =?us-ascii?Q?Hnqr5snxinpnnYPKBt6B4DYI5ktAVCXZd0rYLGBSdgOLNgcbUEGW1EEXHQn0?= =?us-ascii?Q?3LGEE9GLPdXMs4BbiAnNkSrwFEUjyQqUn4yFvykuP6HXkzsam2+FJeLBC59i?= =?us-ascii?Q?f10wxwTzuFxFbX2NGNNf5E/0WmJVR05MyND3w4ATuLvf5+2ExINnYDPe9k+9?= =?us-ascii?Q?X6JwvMDgn4FnXMEOANySPbwfn+NUOqkmKHoG8SLUQNiH5k8czx5F57w+jEW+?= =?us-ascii?Q?iIAOGpe4j2O/gSlgT8tBlyHJGWhUWJtd8lAsyz5OV7E0RN7ncVS1yKcnYLqJ?= =?us-ascii?Q?ifkz1Us6M59YqR/pBva1PQtl4I5TLqN90/v1cx8ZKc2Ub3N1H75xYGXPtxrk?= =?us-ascii?Q?gl2Qf0qiSw=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR07MB3464;6:XWYsartDxLJ4oNcqoyIYaMlxZbcwY+sJN4kl+67U9N72/gbe6eoXGodImPK87zu7RNDpz1auz7uPAYJh7CkxQ5R2AXKM91Z1Nfre+iwlow2cOgbNJIGq3PqiflwtwGoxdJG9GZdfWPaE4uS4/uPY2J6R4HEnIIzsDXbwFJPHzJj2t7ww9oeAdD3AWJDL8wrc90SPU9AqUoPVXpJiut95XGv1M/xRFZGzmWzITet+YQKUzgMdVYgnm4WFaA5YWYD9PpUO7Uv8JbTNJEUU4KXH83qR/lF58pyQNmluLQjQtWeh1fDGbQzquwiTDKNvKcDOwrMomgWCDxCoIKN3xyFF9mQkTfA/CzJtrxwlCi1xEEFt+TnLw43erzTeClw+bWb+SAmWPXHWA+dLCiJ+Ckf5kBQfPSb+S/5iiIIWjuns2lDX8XwdVU9XHbZX1u77misdDtt4G+wOInl0NTl79pBCRPLF9bm2XfjggD6mGPP8yq6DZdAoYUFqDtEjhKl48z5lfvD9SrJ/tbRmFG/1Owifvw==;5:ovGn3xqoyyLc7EjQNsISzaNazrx1CioO0vCT1kq1A0S6ZMxftAIAqlOt/ev87PkZyIhTh8vJsdwnAtT1YgqxdFGUJ9jVXy/2MY4qI+9BgfLKiRXrNh/bbbOXzsVTLZmr2Fe9MSc7geOfx8RD9fBoSQ==;24:4UNgKrgdvqr6kSR1rbtjL60t8ZtDyNmGKvX5DP4wFClK5umgvXdUZocMDtF+GNhhELRQBYJ4DutTd422EbSYti363oEJqIMlXKCJdFDapfE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR07MB3464;7:J5tfpg7ZkghPm/QYO422yVt0C9JST+w2yOjIQltbk53t+ymTHSglVcPLJXzMgJA0XFKNs0UU8i5JQHAPmTCHwpjzpcmlTl9/AHA72pdPUijbGxOrfPxNjMznCrmUXWULKHAzqOcIdYulQzqIpr+LLeJ3d1JUk6G5i6t8w2nScQY9WL8T2iYibacEDWDLEJuwYC2CnzXVfWQm8JaOk9dBlG+ljEra0JG2K9sctBaEoJ+AKkOia2uFleZdanzckuSfDIfpFOj7jfaiUBOdOzk68pQs9BrfcfeifwT0tc6qhD8L5NRZO3RMh56KE2GMx4N73RS2t9AukbP+/m2hIzlt1w== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 May 2017 17:16:23.0094 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3464 X-SW-Source: 2017-05/txt/msg00021.txt.bz2 --=-EbH5znnB1iHNbSNTn9sc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Content-length: 1862 This is a resubmittal of an earlier patch (https://gcc.gnu.org/ml/gcc-patches/2017-02/msg00203.html) to improve the use of ccmp (conditional compare) on aarch64.  I made a couple of tweaks after the first submittal and retested now that we are back in stage 1. Most of the changes are restructuring the code to allow the change and do not affect the actual output.  The actual behavour change is in ccmp_tree_comparison_p where we recoginize a boolean variable as well as a compare expression as code that can be done with a conditionial compare and in get_compare_parts where we treat a boolean variable X as 'X != 0' and generate that comparision. Since the code in ccmp.c is ony used when TARGET_GEN_CCMP_FIRST is set and TARGET_GEN_CCMP_FIRST is only set for aarch64 this change will only affect aarch64. Tested with no regressions and a new test is added to verify that we generate a ccmp instruction with the change.  I ran the SPEC2006 int tests and got a .02 increase in the SPECmark on a ThunderX box. The biggest increases were in mcf and astar.  One test, xlancbmk, did slow down but the overall SPEC result was a speedup. OK for checkin? Steve Ellcey sellcey@cavium.com GCC ChangeLog: 2017-05-01  Steve Ellcey   * ccmp.c (ccmp_tree_comparison_p): New function. (ccmp_candidate_p): Update to use above function. (get_compare_parts): New function. (expand_ccmp_next): Update to use new functions. (expand_ccmp_expr_1): Take tree arg instead of gimple, update to use new functions. (expand_ccmp_expr): Pass tree instead of gimple to expand_ccmp_expr_1, take mode as argument. * ccmp.h (expand_ccmp_expr): Add mode as argument. * expr.c (expand_expr_real_1): Pass mode as argument. GCC Testsuite ChangeLog: 2017-05-01  Steve Ellcey   * gcc.target/aarch64/ccmp_2.c: New test. --=-EbH5znnB1iHNbSNTn9sc Content-Disposition: attachment; filename="gcc.ccmp.patch" Content-Type: text/x-patch; name="gcc.ccmp.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 Content-length: 14950 ZGlmZiAtLWdpdCBhL2djYy9jY21wLmMgYi9nY2MvY2NtcC5jCmluZGV4IDky Y2ExMzMuLjRmYTNlYmQgMTAwNjQ0Ci0tLSBhL2djYy9jY21wLmMKKysrIGIv Z2NjL2NjbXAuYwpAQCAtMzgsNiArMzgsMjkgQEAgYWxvbmcgd2l0aCBHQ0M7 IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRl ICJjY21wLmgiCiAjaW5jbHVkZSAicHJlZGljdC5oIgogCisvKiBDaGVjayB3 aGV0aGVyIFQgaXMgYSBzaW1wbGUgYm9vbGVhbiB2YXJpYWJsZSBvciBhIFNT QSBuYW1lCisgICBzZXQgYnkgYSBjb21wYXJpc29uIG9wZXJhdG9yIGluIHRo ZSBzYW1lIGJhc2ljIGJsb2NrLiAgKi8KK3N0YXRpYyBib29sCitjY21wX3Ry ZWVfY29tcGFyaXNvbl9wICh0cmVlIHQsIGJhc2ljX2Jsb2NrIGJiKQorewor ICBnaW1wbGUgKmcgPSBnZXRfZ2ltcGxlX2Zvcl9zc2FfbmFtZSAodCk7Cisg IHRyZWVfY29kZSB0Y29kZTsKKworICAvKiBJZiB3ZSBoYXZlIGEgYm9vbGVh biB2YXJpYWJsZSBhbGxvdyBpdCBhbmQgZ2VuZXJhdGUgYSBjb21wYXJlCisg ICAgIHRvIHplcm8gcmVnIHdoZW4gZXhwYW5kaW5nLiAgKi8KKyAgaWYgKCFn KQorICAgIHJldHVybiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKHQpKSA9PSBC T09MRUFOX1RZUEUpOworCisgIC8qIENoZWNrIHRvIHNlZSBpZiBTU0EgbmFt ZSBpcyBzZXQgYnkgYSBjb21wYXJpc29uIG9wZXJhdG9yIGluCisgICAgIHRo ZSBzYW1lIGJhc2ljIGJsb2NrLiAgKi8gCisgIGlmICghaXNfZ2ltcGxlX2Fz c2lnbiAoZykpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoYmIgIT0gZ2lt cGxlX2JiIChnKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHRjb2RlID0gZ2lt cGxlX2Fzc2lnbl9yaHNfY29kZSAoZyk7CisgIHJldHVybiBUUkVFX0NPREVf Q0xBU1MgKHRjb2RlKSA9PSB0Y2NfY29tcGFyaXNvbjsKK30KKwogLyogVGhl IGZvbGxvd2luZyBmdW5jdGlvbnMgZXhwYW5kIGNvbmRpdGlvbmFsIGNvbXBh cmUgKENDTVApIGluc3RydWN0aW9ucy4KICAgIEhlcmUgaXMgYSBzaG9ydCBk ZXNjcmlwdGlvbiBhYm91dCB0aGUgb3ZlciBhbGwgYWxnb3JpdGhtOgogICAg ICAqIGNjbXBfY2FuZGlkYXRlX3AgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUg Q0NNUCBjYW5kaWRhdGUKQEAgLTcxLDQ5ICs5NCw2OSBAQCBhbG9uZyB3aXRo IEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogc3Rh dGljIGJvb2wKIGNjbXBfY2FuZGlkYXRlX3AgKGdpbXBsZSAqZykKIHsKLSAg dHJlZSByaHMgPSBnaW1wbGVfYXNzaWduX3Joc190b190cmVlIChnKTsKKyAg dHJlZSByaHM7CiAgIHRyZWUgbGhzLCBvcDAsIG9wMTsKICAgZ2ltcGxlICpn czAsICpnczE7Ci0gIHRyZWVfY29kZSB0Y29kZSwgdGNvZGUwLCB0Y29kZTE7 Ci0gIHRjb2RlID0gVFJFRV9DT0RFIChyaHMpOworICB0cmVlX2NvZGUgdGNv ZGU7CisgIGJhc2ljX2Jsb2NrIGJiOworCisgIGlmICghZykKKyAgICByZXR1 cm4gZmFsc2U7CiAKKyAgcmhzID0gZ2ltcGxlX2Fzc2lnbl9yaHNfdG9fdHJl ZSAoZyk7CisgIHRjb2RlID0gVFJFRV9DT0RFIChyaHMpOwogICBpZiAodGNv ZGUgIT0gQklUX0FORF9FWFBSICYmIHRjb2RlICE9IEJJVF9JT1JfRVhQUikK ICAgICByZXR1cm4gZmFsc2U7CiAKICAgbGhzID0gZ2ltcGxlX2Fzc2lnbl9s aHMgKGcpOwogICBvcDAgPSBUUkVFX09QRVJBTkQgKHJocywgMCk7CiAgIG9w MSA9IFRSRUVfT1BFUkFORCAocmhzLCAxKTsKKyAgYmIgPSBnaW1wbGVfYmIg KGcpOwogCiAgIGlmICgoVFJFRV9DT0RFIChvcDApICE9IFNTQV9OQU1FKSB8 fCAoVFJFRV9DT0RFIChvcDEpICE9IFNTQV9OQU1FKQogICAgICAgfHwgIWhh c19zaW5nbGVfdXNlIChsaHMpKQogICAgIHJldHVybiBmYWxzZTsKIAotICBn czAgPSBnZXRfZ2ltcGxlX2Zvcl9zc2FfbmFtZSAob3AwKTsKLSAgZ3MxID0g Z2V0X2dpbXBsZV9mb3Jfc3NhX25hbWUgKG9wMSk7Ci0gIGlmICghZ3MwIHx8 ICFnczEgfHwgIWlzX2dpbXBsZV9hc3NpZ24gKGdzMCkgfHwgIWlzX2dpbXBs ZV9hc3NpZ24gKGdzMSkKLSAgICAgIC8qIGcsIGdzMCBhbmQgZ3MxIG11c3Qg YmUgaW4gdGhlIHNhbWUgYmFzaWMgYmxvY2ssIHNpbmNlIGN1cnJlbnQgc3Rh Z2UKLQkgaXMgb3V0LW9mLXNzYS4gIFdlIGNhbiBub3QgZ3VhcmFudGVlIHRo ZSBjb3JyZWN0bmVzcyB3aGVuIGZvcndvcmRpbmcKLQkgdGhlIGdzMCBhbmQg Z3MxIGludG8gZyB3aGl0aG91dCBEQVRBRkxPVyBhbmFseXNpcy4gICovCi0g ICAgICB8fCBnaW1wbGVfYmIgKGdzMCkgIT0gZ2ltcGxlX2JiIChnczEpCi0g ICAgICB8fCBnaW1wbGVfYmIgKGdzMCkgIT0gZ2ltcGxlX2JiIChnKSkKLSAg ICByZXR1cm4gZmFsc2U7CisgIGdzMCA9IGdldF9naW1wbGVfZm9yX3NzYV9u YW1lIChvcDApOyAvKiBnczAgbWF5IGJlIE5VTEwgKi8KKyAgZ3MxID0gZ2V0 X2dpbXBsZV9mb3Jfc3NhX25hbWUgKG9wMSk7IC8qIGdzMSBtYXkgYmUgTlVM TCAqLwogCi0gIHRjb2RlMCA9IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGdz MCk7Ci0gIHRjb2RlMSA9IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGdzMSk7 Ci0gIGlmIChUUkVFX0NPREVfQ0xBU1MgKHRjb2RlMCkgPT0gdGNjX2NvbXBh cmlzb24KLSAgICAgICYmIFRSRUVfQ09ERV9DTEFTUyAodGNvZGUxKSA9PSB0 Y2NfY29tcGFyaXNvbikKKyAgaWYgKGNjbXBfdHJlZV9jb21wYXJpc29uX3Ag KG9wMCwgYmIpICYmIGNjbXBfdHJlZV9jb21wYXJpc29uX3AgKG9wMSwgYmIp KQogICAgIHJldHVybiB0cnVlOwotICBpZiAoVFJFRV9DT0RFX0NMQVNTICh0 Y29kZTApID09IHRjY19jb21wYXJpc29uCi0gICAgICAmJiBjY21wX2NhbmRp ZGF0ZV9wIChnczEpKQorICBpZiAoY2NtcF90cmVlX2NvbXBhcmlzb25fcCAo b3AwLCBiYikgJiYgY2NtcF9jYW5kaWRhdGVfcCAoZ3MxKSkKICAgICByZXR1 cm4gdHJ1ZTsKLSAgZWxzZSBpZiAoVFJFRV9DT0RFX0NMQVNTICh0Y29kZTEp ID09IHRjY19jb21wYXJpc29uCi0JICAgJiYgY2NtcF9jYW5kaWRhdGVfcCAo Z3MwKSkKKyAgaWYgKGNjbXBfdHJlZV9jb21wYXJpc29uX3AgKG9wMSwgYmIp ICYmIGNjbXBfY2FuZGlkYXRlX3AgKGdzMCkpCiAgICAgcmV0dXJuIHRydWU7 CiAgIC8qIFdlIHNraXAgY2NtcF9jYW5kaWRhdGVfcCAoZ3MxKSAmJiBjY21w X2NhbmRpZGF0ZV9wIChnczApIHNpbmNlCi0gICAgIHRoZXJlIGlzIG5vIHdh eSB0byBzZXQgdGhlIENDIGZsYWcuICAqLworICAgICB0aGVyZSBpcyBubyB3 YXkgdG8gc2V0IGFuZCBtYWludGFpbiB0aGUgQ0MgZmxhZyBvbiBib3RoIHNp ZGVzIG9mCisgICAgIHRoZSBsb2dpY2FsIG9wZXJhdG9yIGF0IHRoZSBzYW1l IHRpbWUuICAqLwogICByZXR1cm4gZmFsc2U7CiB9CiAKKy8qIEV4dHJhY3Qg dGhlIGNvbXBhcmlzb24gd2Ugd2FudCB0byBkbyBmcm9tIHRoZSB0cmVlLiAg Ki8KK3ZvaWQKK2dldF9jb21wYXJlX3BhcnRzICh0cmVlIHQsIGludCAqdXAs IHJ0eF9jb2RlICpyY29kZSwKKwkJICAgdHJlZSAqcmhzMSwgdHJlZSAqcmhz MikKK3sKKyAgdHJlZV9jb2RlIGNvZGU7CisgIGdpbXBsZSAqZyA9IGdldF9n aW1wbGVfZm9yX3NzYV9uYW1lICh0KTsKKyAgaWYgKGcpCisgICAgeworICAg ICAgKnVwID0gVFlQRV9VTlNJR05FRCAoVFJFRV9UWVBFIChnaW1wbGVfYXNz aWduX3JoczEgKGcpKSk7CisgICAgICBjb2RlID0gZ2ltcGxlX2Fzc2lnbl9y aHNfY29kZSAoZyk7CisgICAgICAqcmNvZGUgPSBnZXRfcnR4X2NvZGUgKGNv ZGUsICp1cCk7CisgICAgICAqcmhzMSA9IGdpbXBsZV9hc3NpZ25fcmhzMSAo Zyk7CisgICAgICAqcmhzMiA9IGdpbXBsZV9hc3NpZ25fcmhzMiAoZyk7Cisg ICAgfQorICBlbHNlCisgICAgeworICAgICAgLyogSWYgZyBpcyBub3QgYSBj b21wYXJpc29uIG9wZXJhdG9yIGNyZWF0ZSBhIGNvbXBhcmUgdG8gemVyby4g ICovCisgICAgICAqdXAgPSAxOworICAgICAgKnJjb2RlID0gTkU7CisgICAg ICAqcmhzMSA9IHQ7CisgICAgICAqcmhzMiA9IGJ1aWxkX3plcm9fY3N0IChU UkVFX1RZUEUgKHQpKTsKKyAgICB9Cit9CisKIC8qIFBSRVYgaXMgYSBjb21w YXJpc29uIHdpdGggdGhlIENDIHJlZ2lzdGVyIHdoaWNoIHJlcHJlc2VudHMg dGhlCiAgICByZXN1bHQgb2YgdGhlIHByZXZpb3VzIENNUCBvciBDQ01QLiAg VGhlIGZ1bmN0aW9uIGV4cGFuZHMgdGhlCiAgICBuZXh0IGNvbXBhcmUgYmFz ZWQgb24gRyB3aGljaCBpcyBBTkRlZC9PUmVkIHdpdGggdGhlIHByZXZpb3Vz CkBAIC0xMjEsMjAgKzE2NCwxNiBAQCBjY21wX2NhbmRpZGF0ZV9wIChnaW1w bGUgKmcpCiAgICBQUkVQX1NFUSByZXR1cm5zIGFsbCBpbnNucyB0byBwcmVw YXJlIG9wZWFyYW5kcyBmb3IgY29tcGFyZS4KICAgIEdFTl9TRVEgcmV0dXJu cyBhbGwgY29tcGFyZSBpbnNucy4gICovCiBzdGF0aWMgcnR4Ci1leHBhbmRf Y2NtcF9uZXh0IChnaW1wbGUgKmcsIHRyZWVfY29kZSBjb2RlLCBydHggcHJl diwKK2V4cGFuZF9jY21wX25leHQgKHRyZWUgb3AsIHRyZWVfY29kZSBjb2Rl LCBydHggcHJldiwKIAkJICBydHhfaW5zbiAqKnByZXBfc2VxLCBydHhfaW5z biAqKmdlbl9zZXEpCiB7CiAgIHJ0eF9jb2RlIHJjb2RlOwotICBpbnQgdW5z aWduZWRwID0gVFlQRV9VTlNJR05FRCAoVFJFRV9UWVBFIChnaW1wbGVfYXNz aWduX3JoczEgKGcpKSk7Ci0KLSAgZ2NjX2Fzc2VydCAoY29kZSA9PSBCSVRf QU5EX0VYUFIgfHwgY29kZSA9PSBCSVRfSU9SX0VYUFIpOwotCi0gIHJjb2Rl ID0gZ2V0X3J0eF9jb2RlIChnaW1wbGVfYXNzaWduX3Joc19jb2RlIChnKSwg dW5zaWduZWRwKTsKKyAgaW50IHVuc2lnbmVkcDsKKyAgdHJlZSByaHMxLCBy aHMyOwogCisgIGdldF9jb21wYXJlX3BhcnRzKG9wLCAmdW5zaWduZWRwLCAm cmNvZGUsICZyaHMxLCAmcmhzMik7CiAgIHJldHVybiB0YXJnZXRtLmdlbl9j Y21wX25leHQgKHByZXBfc2VxLCBnZW5fc2VxLCBwcmV2LCByY29kZSwKLQkJ CQlnaW1wbGVfYXNzaWduX3JoczEgKGcpLAotCQkJCWdpbXBsZV9hc3NpZ25f cmhzMiAoZyksCi0JCQkJZ2V0X3J0eF9jb2RlIChjb2RlLCAwKSk7CisJCQkJ cmhzMSwgcmhzMiwgZ2V0X3J0eF9jb2RlIChjb2RlLCAwKSk7CiB9CiAKIC8q IEV4cGFuZCBjb25kaXRpb25hbCBjb21wYXJlIGdpbXBsZSBHLiAgQSB0eXBp Y2FsIENDTVAgc2VxdWVuY2UgaXMgbGlrZToKQEAgLTE1MywzOSArMTkyLDQy IEBAIGV4cGFuZF9jY21wX2V4cHJfMSAoZ2ltcGxlICpnLCBydHhfaW5zbiAq KnByZXBfc2VxLCBydHhfaW5zbiAqKmdlbl9zZXEpCiB7CiAgIHRyZWUgZXhw ID0gZ2ltcGxlX2Fzc2lnbl9yaHNfdG9fdHJlZSAoZyk7CiAgIHRyZWVfY29k ZSBjb2RlID0gVFJFRV9DT0RFIChleHApOwotICBnaW1wbGUgKmdzMCA9IGdl dF9naW1wbGVfZm9yX3NzYV9uYW1lIChUUkVFX09QRVJBTkQgKGV4cCwgMCkp OwotICBnaW1wbGUgKmdzMSA9IGdldF9naW1wbGVfZm9yX3NzYV9uYW1lIChU UkVFX09QRVJBTkQgKGV4cCwgMSkpOworICBiYXNpY19ibG9jayBiYiA9IGdp bXBsZV9iYiAoZyk7CisKKyAgdHJlZSBvcDAgPSBUUkVFX09QRVJBTkQgKGV4 cCwgMCk7CisgIHRyZWUgb3AxID0gVFJFRV9PUEVSQU5EIChleHAsIDEpOwor ICBnaW1wbGUgKmdzMCA9IGdldF9naW1wbGVfZm9yX3NzYV9uYW1lIChvcDAp OworICBnaW1wbGUgKmdzMSA9IGdldF9naW1wbGVfZm9yX3NzYV9uYW1lIChv cDEpOwogICBydHggdG1wOwotICB0cmVlX2NvZGUgY29kZTAgPSBnaW1wbGVf YXNzaWduX3Joc19jb2RlIChnczApOwotICB0cmVlX2NvZGUgY29kZTEgPSBn aW1wbGVfYXNzaWduX3Joc19jb2RlIChnczEpOwogCiAgIGdjY19hc3NlcnQg KGNvZGUgPT0gQklUX0FORF9FWFBSIHx8IGNvZGUgPT0gQklUX0lPUl9FWFBS KTsKLSAgZ2NjX2Fzc2VydCAoZ3MwICYmIGdzMSAmJiBpc19naW1wbGVfYXNz aWduIChnczApICYmIGlzX2dpbXBsZV9hc3NpZ24gKGdzMSkpOwogCi0gIGlm IChUUkVFX0NPREVfQ0xBU1MgKGNvZGUwKSA9PSB0Y2NfY29tcGFyaXNvbikK KyAgaWYgKGNjbXBfdHJlZV9jb21wYXJpc29uX3AgKG9wMCwgYmIpKQogICAg IHsKLSAgICAgIGlmIChUUkVFX0NPREVfQ0xBU1MgKGNvZGUxKSA9PSB0Y2Nf Y29tcGFyaXNvbikKKyAgICAgIGlmIChjY21wX3RyZWVfY29tcGFyaXNvbl9w IChvcDEsIGJiKSkKIAl7CiAJICBpbnQgdW5zaWduZWRwMCwgdW5zaWduZWRw MTsKIAkgIHJ0eF9jb2RlIHJjb2RlMCwgcmNvZGUxOworCSAgdHJlZSBsb2dp Y2FsX29wMF9yaHMxLCBsb2dpY2FsX29wMF9yaHMyOworCSAgdHJlZSBsb2dp Y2FsX29wMV9yaHMxLCBsb2dpY2FsX29wMV9yaHMyOwogCSAgaW50IHNwZWVk X3AgPSBvcHRpbWl6ZV9pbnNuX2Zvcl9zcGVlZF9wICgpOworCiAJICBydHgg dG1wMiA9IE5VTExfUlRYLCByZXQgPSBOVUxMX1JUWCwgcmV0MiA9IE5VTExf UlRYOwogCSAgdW5zaWduZWQgY29zdDEgPSBNQVhfQ09TVDsKIAkgIHVuc2ln bmVkIGNvc3QyID0gTUFYX0NPU1Q7CiAKLQkgIHVuc2lnbmVkcDAgPSBUWVBF X1VOU0lHTkVEIChUUkVFX1RZUEUgKGdpbXBsZV9hc3NpZ25fcmhzMSAoZ3Mw KSkpOwotCSAgdW5zaWduZWRwMSA9IFRZUEVfVU5TSUdORUQgKFRSRUVfVFlQ RSAoZ2ltcGxlX2Fzc2lnbl9yaHMxIChnczEpKSk7Ci0JICByY29kZTAgPSBn ZXRfcnR4X2NvZGUgKGNvZGUwLCB1bnNpZ25lZHAwKTsKLQkgIHJjb2RlMSA9 IGdldF9ydHhfY29kZSAoY29kZTEsIHVuc2lnbmVkcDEpOworCSAgZ2V0X2Nv bXBhcmVfcGFydHMgKG9wMCwgJnVuc2lnbmVkcDAsICZyY29kZTAsCisJCQkg ICAgICZsb2dpY2FsX29wMF9yaHMxLCAmbG9naWNhbF9vcDBfcmhzMik7CisK KwkgIGdldF9jb21wYXJlX3BhcnRzIChvcDEsICZ1bnNpZ25lZHAxLCAmcmNv ZGUxLAorCQkJICAgICAmbG9naWNhbF9vcDFfcmhzMSwgJmxvZ2ljYWxfb3Ax X3JoczIpOwogCiAJICBydHhfaW5zbiAqcHJlcF9zZXFfMSwgKmdlbl9zZXFf MTsKIAkgIHRtcCA9IHRhcmdldG0uZ2VuX2NjbXBfZmlyc3QgKCZwcmVwX3Nl cV8xLCAmZ2VuX3NlcV8xLCByY29kZTAsCi0JCQkJCWdpbXBsZV9hc3NpZ25f cmhzMSAoZ3MwKSwKLQkJCQkJZ2ltcGxlX2Fzc2lnbl9yaHMyIChnczApKTsK LQorCQkJCQlsb2dpY2FsX29wMF9yaHMxLCBsb2dpY2FsX29wMF9yaHMyKTsK IAkgIGlmICh0bXAgIT0gTlVMTCkKIAkgICAgewotCSAgICAgIHJldCA9IGV4 cGFuZF9jY21wX25leHQgKGdzMSwgY29kZSwgdG1wLCAmcHJlcF9zZXFfMSwg Jmdlbl9zZXFfMSk7CisJICAgICAgcmV0ID0gZXhwYW5kX2NjbXBfbmV4dCAo b3AxLCBjb2RlLCB0bXAsICZwcmVwX3NlcV8xLCAmZ2VuX3NlcV8xKTsKIAkg ICAgICBjb3N0MSA9IHNlcV9jb3N0IChwcmVwX3NlcV8xLCBzcGVlZF9wKTsK IAkgICAgICBjb3N0MSArPSBzZXFfY29zdCAoZ2VuX3NlcV8xLCBzcGVlZF9w KTsKIAkgICAgfQpAQCAtMTk3LDI3ICsyMzksMjIgQEAgZXhwYW5kX2NjbXBf ZXhwcl8xIChnaW1wbGUgKmcsIHJ0eF9pbnNuICoqcHJlcF9zZXEsIHJ0eF9p bnNuICoqZ2VuX3NlcSkKIAkgIHJ0eF9pbnNuICpwcmVwX3NlcV8yLCAqZ2Vu X3NlcV8yOwogCSAgaWYgKHRtcCA9PSBOVUxMIHx8IGNvc3QxIDwgQ09TVFNf Tl9JTlNOUyAoMjUpKQogCSAgICB0bXAyID0gdGFyZ2V0bS5nZW5fY2NtcF9m aXJzdCAoJnByZXBfc2VxXzIsICZnZW5fc2VxXzIsIHJjb2RlMSwKLQkJCQkJ ICAgZ2ltcGxlX2Fzc2lnbl9yaHMxIChnczEpLAotCQkJCQkgICBnaW1wbGVf YXNzaWduX3JoczIgKGdzMSkpOwotCisJCQkJCSAgIGxvZ2ljYWxfb3AxX3Jo czEsIGxvZ2ljYWxfb3AxX3JoczIpOwogCSAgaWYgKCF0bXAgJiYgIXRtcDIp CiAJICAgIHJldHVybiBOVUxMX1JUWDsKLQogCSAgaWYgKHRtcDIgIT0gTlVM TCkKIAkgICAgewotCSAgICAgIHJldDIgPSBleHBhbmRfY2NtcF9uZXh0IChn czAsIGNvZGUsIHRtcDIsICZwcmVwX3NlcV8yLAorCSAgICAgIHJldDIgPSBl eHBhbmRfY2NtcF9uZXh0IChvcDAsIGNvZGUsIHRtcDIsICZwcmVwX3NlcV8y LAogCQkJCSAgICAgICAmZ2VuX3NlcV8yKTsKIAkgICAgICBjb3N0MiA9IHNl cV9jb3N0IChwcmVwX3NlcV8yLCBzcGVlZF9wKTsKIAkgICAgICBjb3N0MiAr PSBzZXFfY29zdCAoZ2VuX3NlcV8yLCBzcGVlZF9wKTsKIAkgICAgfQotCiAJ ICBpZiAoY29zdDIgPCBjb3N0MSkKIAkgICAgewogCSAgICAgICpwcmVwX3Nl cSA9IHByZXBfc2VxXzI7CiAJICAgICAgKmdlbl9zZXEgPSBnZW5fc2VxXzI7 CiAJICAgICAgcmV0dXJuIHJldDI7CiAJICAgIH0KLQogCSAgKnByZXBfc2Vx ID0gcHJlcF9zZXFfMTsKIAkgICpnZW5fc2VxID0gZ2VuX3NlcV8xOwogCSAg cmV0dXJuIHJldDsKQEAgLTIyNywyOCArMjY0LDE4IEBAIGV4cGFuZF9jY21w X2V4cHJfMSAoZ2ltcGxlICpnLCBydHhfaW5zbiAqKnByZXBfc2VxLCBydHhf aW5zbiAqKmdlbl9zZXEpCiAJICB0bXAgPSBleHBhbmRfY2NtcF9leHByXzEg KGdzMSwgcHJlcF9zZXEsIGdlbl9zZXEpOwogCSAgaWYgKCF0bXApCiAJICAg IHJldHVybiBOVUxMX1JUWDsKLQotCSAgcmV0dXJuIGV4cGFuZF9jY21wX25l eHQgKGdzMCwgY29kZSwgdG1wLCBwcmVwX3NlcSwgZ2VuX3NlcSk7CisJICBy ZXR1cm4gZXhwYW5kX2NjbXBfbmV4dCAob3AwLCBjb2RlLCB0bXAsIHByZXBf c2VxLCBnZW5fc2VxKTsKIAl9CiAgICAgfQogICBlbHNlCiAgICAgewogICAg ICAgZ2NjX2Fzc2VydCAoZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoZ3MwKSA9 PSBCSVRfQU5EX0VYUFIKICAgICAgICAgICAgICAgICAgIHx8IGdpbXBsZV9h c3NpZ25fcmhzX2NvZGUgKGdzMCkgPT0gQklUX0lPUl9FWFBSKTsKLQotICAg ICAgaWYgKFRSRUVfQ09ERV9DTEFTUyAoZ2ltcGxlX2Fzc2lnbl9yaHNfY29k ZSAoZ3MxKSkgPT0gdGNjX2NvbXBhcmlzb24pCi0JewotCSAgdG1wID0gZXhw YW5kX2NjbXBfZXhwcl8xIChnczAsIHByZXBfc2VxLCBnZW5fc2VxKTsKLQkg IGlmICghdG1wKQotCSAgICByZXR1cm4gTlVMTF9SVFg7Ci0KLQkgIHJldHVy biBleHBhbmRfY2NtcF9uZXh0IChnczEsIGNvZGUsIHRtcCwgcHJlcF9zZXEs IGdlbl9zZXEpOwotCX0KLSAgICAgIGVsc2UKLQl7Ci0JICBnY2NfYXNzZXJ0 IChnaW1wbGVfYXNzaWduX3Joc19jb2RlIChnczEpID09IEJJVF9BTkRfRVhQ UgotCQkgICAgICB8fCBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChnczEpID09 IEJJVF9JT1JfRVhQUik7Ci0JfQorICAgICAgZ2NjX2Fzc2VydCAoY2NtcF90 cmVlX2NvbXBhcmlzb25fcCAob3AxLCBiYikpOworICAgICAgdG1wID0gZXhw YW5kX2NjbXBfZXhwcl8xIChnczAsIHByZXBfc2VxLCBnZW5fc2VxKTsKKyAg ICAgIGlmICghdG1wKQorCXJldHVybiBOVUxMX1JUWDsKKyAgICAgIHJldHVy biBleHBhbmRfY2NtcF9uZXh0IChvcDEsIGNvZGUsIHRtcCwgcHJlcF9zZXEs IGdlbl9zZXEpOwogICAgIH0KIAogICByZXR1cm4gTlVMTF9SVFg7CkBAIC0y NTgsNyArMjg1LDcgQEAgZXhwYW5kX2NjbXBfZXhwcl8xIChnaW1wbGUgKmcs IHJ0eF9pbnNuICoqcHJlcF9zZXEsIHJ0eF9pbnNuICoqZ2VuX3NlcSkKICAg IFJldHVybiBOVUxMX1JUWCBpZiBHIGlzIG5vdCBhIGxlZ2FsIGNhbmRpZGF0 ZSBvciBleHBhbmQgZmFpbC4KICAgIE90aGVyd2lzZSByZXR1cm4gdGhlIHRh cmdldC4gICovCiBydHgKLWV4cGFuZF9jY21wX2V4cHIgKGdpbXBsZSAqZykK K2V4cGFuZF9jY21wX2V4cHIgKGdpbXBsZSAqZywgbWFjaGluZV9tb2RlIG1v ZGUpCiB7CiAgIHJ0eF9pbnNuICpsYXN0OwogICBydHggdG1wOwpAQCAtMjc1 LDcgKzMwMiw2IEBAIGV4cGFuZF9jY21wX2V4cHIgKGdpbXBsZSAqZykKICAg ICB7CiAgICAgICBpbnNuX2NvZGUgaWNvZGU7CiAgICAgICBtYWNoaW5lX21v ZGUgY2NfbW9kZSA9IENDbW9kZTsKLSAgICAgIHRyZWUgbGhzID0gZ2ltcGxl X2Fzc2lnbl9saHMgKGcpOwogICAgICAgcnR4X2NvZGUgY21wX2NvZGUgPSBH RVRfQ09ERSAodG1wKTsKIAogI2lmZGVmIFNFTEVDVF9DQ19NT0RFCkBAIC0y ODQsNyArMzEwLDYgQEAgZXhwYW5kX2NjbXBfZXhwciAoZ2ltcGxlICpnKQog ICAgICAgaWNvZGUgPSBvcHRhYl9oYW5kbGVyIChjc3RvcmVfb3B0YWIsIGNj X21vZGUpOwogICAgICAgaWYgKGljb2RlICE9IENPREVfRk9SX25vdGhpbmcp CiAJewotCSAgbWFjaGluZV9tb2RlIG1vZGUgPSBUWVBFX01PREUgKFRSRUVf VFlQRSAobGhzKSk7CiAJICBydHggdGFyZ2V0ID0gZ2VuX3JlZ19ydHggKG1v ZGUpOwogCiAJICBlbWl0X2luc24gKHByZXBfc2VxKTsKQEAgLTMwMCw0ICsz MjUsMyBAQCBleHBhbmRfY2NtcF9leHByIChnaW1wbGUgKmcpCiAgIGRlbGV0 ZV9pbnNuc19zaW5jZSAobGFzdCk7CiAgIHJldHVybiBOVUxMX1JUWDsKIH0K LQpkaWZmIC0tZ2l0IGEvZ2NjL2NjbXAuaCBiL2djYy9jY21wLmgKaW5kZXgg YmMxYWFmYi4uOTNkMTA0OSAxMDA2NDQKLS0tIGEvZ2NjL2NjbXAuaAorKysg Yi9nY2MvY2NtcC5oCkBAIC0yMCw2ICsyMCw2IEBAIGFsb25nIHdpdGggR0ND OyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjaWZuZGVm IEdDQ19DQ01QX0gKICNkZWZpbmUgR0NDX0NDTVBfSAogCi1leHRlcm4gcnR4 IGV4cGFuZF9jY21wX2V4cHIgKGdpbXBsZSAqKTsKK2V4dGVybiBydHggZXhw YW5kX2NjbXBfZXhwciAoZ2ltcGxlICosIG1hY2hpbmVfbW9kZSk7CiAKICNl bmRpZiAgLyogR0NDX0NDTVBfSCAgKi8KZGlmZiAtLWdpdCBhL2djYy9leHBy LmMgYi9nY2MvZXhwci5jCmluZGV4IGM1YzUwZTAuLjY1OTRmMTIgMTAwNjQ0 Ci0tLSBhL2djYy9leHByLmMKKysrIGIvZ2NjL2V4cHIuYwpAQCAtOTc1Nyw3 ICs5NzU3LDcgQEAgZXhwYW5kX2V4cHJfcmVhbF8xICh0cmVlIGV4cCwgcnR4 IHRhcmdldCwgbWFjaGluZV9tb2RlIHRtb2RlLAogCSAgICAgIGlmICh0YXJn ZXRtLmdlbl9jY21wX2ZpcnN0KQogCQl7CiAJCSAgZ2NjX2NoZWNraW5nX2Fz c2VydCAodGFyZ2V0bS5nZW5fY2NtcF9uZXh0ICE9IE5VTEwpOwotCQkgIHIg PSBleHBhbmRfY2NtcF9leHByIChnKTsKKwkJICByID0gZXhwYW5kX2NjbXBf ZXhwciAoZywgbW9kZSk7CiAJCSAgaWYgKHIpCiAJCSAgICBicmVhazsKIAkJ fQo= --=-EbH5znnB1iHNbSNTn9sc Content-Disposition: attachment; filename="gcc.ccmp.test.patch" Content-Type: text/x-patch; name="gcc.ccmp.test.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 Content-length: 602 ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L2NjbXBfMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv Y2NtcF8yLmMKaW5kZXggZTY5ZGUyOS4uNzdhYjAyMCAxMDA2NDQKLS0tIGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvY2NtcF8yLmMKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvY2NtcF8yLmMK QEAgLTAsMCArMSwxMiBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLU8yIiB9ICovCisKK2ludCBnKHZvaWQpOworaW50 IGgoaW50IGEsIF9Cb29sIGMpCit7CisgIGlmIChhICE9IDAgJiYgYykKKyAg ICByZXR1cm4gZygpOworICByZXR1cm4gMTsKK30KKworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJcdGNjbXBcdCIgfSB9ICovCg== --=-EbH5znnB1iHNbSNTn9sc--