From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by sourceware.org (Postfix) with ESMTPS id 015F53858C39 for ; Tue, 12 Jul 2022 07:36:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 015F53858C39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.cz Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=suse.cz Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id AE77222481; Tue, 12 Jul 2022 07:36:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1657611402; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=iMPEXIk3Cgj6Z3c8an8eq/+IdYGHjbtU1ZAhlocQpe4=; b=1IU/9QE+wBo+hz+KNQNSgNtBpLnshyi/RC4DeHVa4ta1rYGS6Z9oUaHfmGrxctCjW50FhZ n0jB0bp3/5plaS5Wm0d6NDtn16YRzkeq50aJswZRqLYvjpqy9hm1Vwbjzl0xwHmuBakvh7 lwWC3yEKsWdJRfKaIWvWwr8tQXTvVXg= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1657611402; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=iMPEXIk3Cgj6Z3c8an8eq/+IdYGHjbtU1ZAhlocQpe4=; b=kHd/ir5sp/NwD1gpPdZ1C9RkbRr61dppgYidGJnJRrT0yicwcj46VP7w/lgFdpXhxqMM1x 4MmnVl7ekwY3ZqDw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 8C48E13638; Tue, 12 Jul 2022 07:36:42 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id jM0rIYokzWJoGgAAMHmgww (envelope-from ); Tue, 12 Jul 2022 07:36:42 +0000 Content-Type: multipart/mixed; boundary="------------75NvASCzTpdFTvuy7aWPJkac" Message-ID: <461c4c4f-57f1-e689-f41d-fb4f68d638c8@suse.cz> Date: Tue, 12 Jul 2022 09:36:42 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH 3/3] lto-plugin: implement LDPT_GET_API_VERSION Content-Language: en-US To: Richard Biener , Alexander Monakov Cc: Rui Ueyama , GCC Patches References: <803a0290-3909-b9c5-2461-b1740a00c63a@suse.cz> <37b52d36-d1dd-f291-0baa-0cf670493692@suse.cz> <4e3df681-9523-4781-d324-9a6e230f495a@suse.cz> <3dc13790-a22d-c4d6-6cfe-ab9b567968ff@suse.cz> <862b4381-c377-ac7a-476c-e7ced3c29c2c@ispras.ru> <3bde5aa4-f3d7-63e8-8b4f-29b29f00293f@suse.cz> <41751c29-5b9b-671d-de47-e1c13ea78b7@ispras.ru> From: =?UTF-8?Q?Martin_Li=c5=a1ka?= In-Reply-To: X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, SPF_HELO_NONE, SPF_SOFTFAIL, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2022 07:36:46 -0000 This is a multi-part message in MIME format. --------------75NvASCzTpdFTvuy7aWPJkac Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 7/12/22 08:28, Richard Biener wrote: > On Mon, Jul 11, 2022 at 6:35 PM Alexander Monakov wrote: >> >> On Mon, 11 Jul 2022, Martin Liška wrote: >> >>> I've clarified that linker should return a value that is in range >>> [minimal_api_supported, maximal_api_supported] and added an abort >>> if it's not the case. >> >> I noticed that we are placing a trap for C++ consumers such as mold >> by passing min/max_api_supported as enum values. Unlike C, C++ disallows >> out-of-range enum values, so when mold does >> >> enum PluginLinkerAPIVersion { >> LAPI_V0 = 0, >> LAPI_V1, >> }; >> >> get_api_version(const char *plugin_identifier, >> unsigned plugin_version, >> PluginLinkerAPIVersion minimal_api_supported, >> PluginLinkerAPIVersion maximal_api_supported, >> const char **linker_identifier, >> const char **linker_version) { >> >> checks such as 'min_api_supported > LAPI_V1' can be optimized out. Also, >> if a future tool passes LAPI_V2, it will trigger Clang's UBSan (GCC >> -fsanitize-undefined=enum instruments loads but not retrieval of function >> arguments). >> >> I'd suggest to fix this on both sides by changing the arguments to plain >> integer types. > > That's a good point - the enum itself is then also somewhat redundant > if it just specifies symbolic names for 0, 1, ... but we can keep it for > documentation purposes. All right, here we go with the integer types. May I install the version now? Thanks, Martin > >> >> Alexander --------------75NvASCzTpdFTvuy7aWPJkac Content-Type: text/x-patch; charset=UTF-8; name="0001-lto-plugin-implement-LDPT_GET_API_VERSION.patch" Content-Disposition: attachment; filename="0001-lto-plugin-implement-LDPT_GET_API_VERSION.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZjczNzJiZDJiM2Q3NmZlZWNhODRjZGJiMGQzOTJkOTM1NjliZDU3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gTGlza2EgPG1saXNrYUBzdXNlLmN6PgpE YXRlOiBNb24sIDE2IE1heSAyMDIyIDE0OjAxOjUyICswMjAwClN1YmplY3Q6IFtQQVRDSF0g bHRvLXBsdWdpbjogaW1wbGVtZW50IExEUFRfR0VUX0FQSV9WRVJTSU9OCgppbmNsdWRlL0No YW5nZUxvZzoKCgkqIHBsdWdpbi1hcGkuaCAoZW51bSBsaW5rZXJfYXBpX3ZlcnNpb24pOiBO ZXcgZW51bS4KCShsZF9wbHVnaW5fZ2V0X2FwaV92ZXJzaW9uKTogTmV3LgoJKGVudW0gbGRf cGx1Z2luX3RhZyk6IEFkZCBMRFBUX0dFVF9BUElfVkVSU0lPTi4KCShzdHJ1Y3QgbGRfcGx1 Z2luX3R2KTogQWRkIHR2X2dldF9hcGlfdmVyc2lvbi4KCmx0by1wbHVnaW4vQ2hhbmdlTG9n OgoKCSogbHRvLXBsdWdpbi5jIChuZWdvdGlhdGVfYXBpX3ZlcnNpb24pOiBOZXcuCgkob25s b2FkKTogTmVnb3RpYXRlIEFQSSB2ZXJzaW9uLgoJKiBNYWtlZmlsZS5hbTogQWRkIC1EQkFT RV9WRVJTSU9OLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KLS0tCiBpbmNsdWRlL3Bs dWdpbi1hcGkuaCAgICB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsdG8t cGx1Z2luL01ha2VmaWxlLmFtICB8ICAyICstCiBsdG8tcGx1Z2luL01ha2VmaWxlLmluICB8 ICAyICstCiBsdG8tcGx1Z2luL2x0by1wbHVnaW4uYyB8IDQ3ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDgyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wbHVnaW4tYXBp LmggYi9pbmNsdWRlL3BsdWdpbi1hcGkuaAppbmRleCA4YWViZTJmZjI2Ny4uMGI2MWNmYzA0 NDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvcGx1Z2luLWFwaS5oCisrKyBiL2luY2x1ZGUvcGx1 Z2luLWFwaS5oCkBAIC00ODMsNiArNDgzLDM3IEBAIGVudW0gbGRfcGx1Z2luX2xldmVsCiAg IExEUExfRkFUQUwKIH07CiAKKy8qIENvbnRyYWN0IGJldHdlZW4gYSBwbHVnLWluIGFuZCBh IGxpbmtlci4gICovCisKK2VudW0gbGlua2VyX2FwaV92ZXJzaW9uCit7CisgICAvKiBUaGUg bGlua2VyL3BsdWdpbiBkbyBub3QgaW1wbGVtZW50IGFueSBvZiB0aGUgQVBJIGxldmVscyBi ZWxvdywgdGhlIEFQSQorICAgICAgIGlzIGRldGVybWluZWQgc29sZWx5IHZpYSB0aGUgdHJh bnNmZXIgdmVjdG9yLiAgKi8KKyAgIExBUElfVjAsCisKKyAgIC8qIEFQSSBsZXZlbCB2MS4g IFRoZSBsaW5rZXIgcHJvdmlkZXMgZ2V0X3N5bWJvbHNfdjMsIGFkZF9zeW1ib2xzX3YyLAor ICAgICAgdGhlIHBsdWdpbiB3aWxsIHVzZSB0aGF0IGFuZCBub3QgYW55IGxvd2VyIHZlcnNp b25zLgorICAgICAgY2xhaW1fZmlsZSBpcyB0aHJlYWQtc2FmZSBvbiB0aGUgcGx1Z2luIHNp ZGUgYW5kCisgICAgICBhZGRfc3ltYm9scyBvbiB0aGUgbGlua2VyIHNpZGUuICAqLworICAg TEFQSV9WMQorfTsKKworLyogVGhlIGxpbmtlcidzIGludGVyZmFjZSBmb3IgQVBJIHZlcnNp b24gbmVnb3RpYXRpb24uICBBIHBsdWctaW4gY2FsbHMKKyAgdGhlIGZ1bmN0aW9uICh3aXRo IGl0cyBJREVOVElGSUVSIGFuZCBWRVJTSU9OKSwgcGx1cyBtaW5pbWFsIGFuZCBtYXhpbWFs CisgIHZlcnNpb24gb2YgbGlua2VyX2FwaV92ZXJzaW9uIGlzIHByb3ZpZGVkLiAgTGlua2Vy IHRoZW4gcmV0dXJucyBzZWxlY3RlZAorICBBUEkgdmVyc2lvbiBhbmQgcHJvdmlkZXMgaXRz IElERU5USUZJRVIgYW5kIFZFUlNJT04uICBUaGUgcmV0dXJuZWQgdmFsdWUKKyAgYnkgbGlu a2VyIG11c3QgYmUgaW4gcmFuZ2UgW01JTklNQUxfQVBJX1NVUFBPUlRFRCwgTUFYSU1BTF9B UElfU1VQUE9SVEVEXS4KKyAgSWRlbnRpZmllciBwb2ludGVycyByZW1haW4gdmFsaWQgYXMg bG9uZyBhcyB0aGUgcGx1Z2luIGlzIGxvYWRlZC4gICovCisKK3R5cGVkZWYKK2ludAorKCps ZF9wbHVnaW5fZ2V0X2FwaV92ZXJzaW9uKSAoY29uc3QgY2hhciAqcGx1Z2luX2lkZW50aWZp ZXIsCisJCQkgICAgICBjb25zdCBjaGFyICpwbHVnaW5fdmVyc2lvbiwKKwkJCSAgICAgIGlu dCBtaW5pbWFsX2FwaV9zdXBwb3J0ZWQsCisJCQkgICAgICBpbnQgbWF4aW1hbF9hcGlfc3Vw cG9ydGVkLAorCQkJICAgICAgY29uc3QgY2hhciAqKmxpbmtlcl9pZGVudGlmaWVyLAorCQkJ ICAgICAgY29uc3QgY2hhciAqKmxpbmtlcl92ZXJzaW9uKTsKKwogLyogVmFsdWVzIGZvciB0 aGUgdHZfdGFnIGZpZWxkIG9mIHRoZSB0cmFuc2ZlciB2ZWN0b3IuICAqLwogCiBlbnVtIGxk X3BsdWdpbl90YWcKQEAgLTUyMSw2ICs1NTIsNyBAQCBlbnVtIGxkX3BsdWdpbl90YWcKICAg TERQVF9SRUdJU1RFUl9ORVdfSU5QVVRfSE9PSywKICAgTERQVF9HRVRfV1JBUF9TWU1CT0xT LAogICBMRFBUX0FERF9TWU1CT0xTX1YyLAorICBMRFBUX0dFVF9BUElfVkVSU0lPTiwKIH07 CiAKIC8qIFRoZSBwbHVnaW4gdHJhbnNmZXIgdmVjdG9yLiAgKi8KQEAgLTU1Niw2ICs1ODgs NyBAQCBzdHJ1Y3QgbGRfcGx1Z2luX3R2CiAgICAgbGRfcGx1Z2luX2dldF9pbnB1dF9zZWN0 aW9uX3NpemUgdHZfZ2V0X2lucHV0X3NlY3Rpb25fc2l6ZTsKICAgICBsZF9wbHVnaW5fcmVn aXN0ZXJfbmV3X2lucHV0IHR2X3JlZ2lzdGVyX25ld19pbnB1dDsKICAgICBsZF9wbHVnaW5f Z2V0X3dyYXBfc3ltYm9scyB0dl9nZXRfd3JhcF9zeW1ib2xzOworICAgIGxkX3BsdWdpbl9n ZXRfYXBpX3ZlcnNpb24gdHZfZ2V0X2FwaV92ZXJzaW9uOwogICB9IHR2X3U7CiB9OwogCmRp ZmYgLS1naXQgYS9sdG8tcGx1Z2luL01ha2VmaWxlLmFtIGIvbHRvLXBsdWdpbi9NYWtlZmls ZS5hbQppbmRleCA4MTM2MmVhZmMzNi4uNDgyOTQ2ZTRkZDUgMTAwNjQ0Ci0tLSBhL2x0by1w bHVnaW4vTWFrZWZpbGUuYW0KKysrIGIvbHRvLXBsdWdpbi9NYWtlZmlsZS5hbQpAQCAtOCw3 ICs4LDcgQEAgdGFyZ2V0X25vbmNhbm9uaWNhbCA6PSBAdGFyZ2V0X25vbmNhbm9uaWNhbEAK IGxpYmV4ZWNzdWJkaXIgOj0gJChsaWJleGVjZGlyKS9nY2MvJChyZWFsX3RhcmdldF9ub25j YW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQogCiBBTV9DUFBG TEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS8uLi9pbmNsdWRlICQoREVGUykKLUFNX0NGTEFHUyA9 IEBhY19sdG9fcGx1Z2luX3dhcm5fY2ZsYWdzQCAkKENFVF9IT1NUX0ZMQUdTKQorQU1fQ0ZM QUdTID0gQGFjX2x0b19wbHVnaW5fd2Fybl9jZmxhZ3NAICQoQ0VUX0hPU1RfRkxBR1MpIC1E QkFTRV9WRVJTSU9OPSciJChnY2NfdmVyc2lvbikiJwogIyBUaGUgcGx1Zy1pbiBkZXBlbmRz IG9uIHB0aHJlYWRzLgogQU1fTERGTEFHUyA9IC1wdGhyZWFkIEBhY19sdG9fcGx1Z2luX2xk ZmxhZ3NACiBBTV9MSUJUT09MRkxBR1MgPSAtLXRhZz1kaXNhYmxlLXN0YXRpYwpkaWZmIC0t Z2l0IGEvbHRvLXBsdWdpbi9NYWtlZmlsZS5pbiBiL2x0by1wbHVnaW4vTWFrZWZpbGUuaW4K aW5kZXggMjAzM2RkOWI3YzIuLjk0NTNiYzdkNjA3IDEwMDY0NAotLS0gYS9sdG8tcGx1Z2lu L01ha2VmaWxlLmluCisrKyBiL2x0by1wbHVnaW4vTWFrZWZpbGUuaW4KQEAgLTM0Myw3ICsz NDMsNyBAQCBBVVRPTUFLRV9PUFRJT05TID0gbm8tZGVwZW5kZW5jaWVzCiBnY2NfdmVyc2lv biA6PSAkKHNoZWxsIEBnZXRfZ2NjX2Jhc2VfdmVyQCAkKHRvcF9zcmNkaXIpLy4uL2djYy9C QVNFLVZFUikKIGxpYmV4ZWNzdWJkaXIgOj0gJChsaWJleGVjZGlyKS9nY2MvJChyZWFsX3Rh cmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQog QU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvLi4vaW5jbHVkZSAkKERFRlMpCi1BTV9D RkxBR1MgPSBAYWNfbHRvX3BsdWdpbl93YXJuX2NmbGFnc0AgJChDRVRfSE9TVF9GTEFHUykK K0FNX0NGTEFHUyA9IEBhY19sdG9fcGx1Z2luX3dhcm5fY2ZsYWdzQCAkKENFVF9IT1NUX0ZM QUdTKSAtREJBU0VfVkVSU0lPTj0nIiQoZ2NjX3ZlcnNpb24pIicKICMgVGhlIHBsdWctaW4g ZGVwZW5kcyBvbiBwdGhyZWFkcy4KIEFNX0xERkxBR1MgPSAtcHRocmVhZCBAYWNfbHRvX3Bs dWdpbl9sZGZsYWdzQAogQU1fTElCVE9PTEZMQUdTID0gLS10YWc9ZGlzYWJsZS1zdGF0aWMK ZGlmZiAtLWdpdCBhL2x0by1wbHVnaW4vbHRvLXBsdWdpbi5jIGIvbHRvLXBsdWdpbi9sdG8t cGx1Z2luLmMKaW5kZXggNzkyN2RjYTYwYTQuLmU5YWZkMmZiNzZkIDEwMDY0NAotLS0gYS9s dG8tcGx1Z2luL2x0by1wbHVnaW4uYworKysgYi9sdG8tcGx1Z2luL2x0by1wbHVnaW4uYwpA QCAtMTgwLDYgKzE4MCwxMCBAQCBzdGF0aWMgbGRfcGx1Z2luX2FkZF9pbnB1dF9maWxlIGFk ZF9pbnB1dF9maWxlOwogc3RhdGljIGxkX3BsdWdpbl9hZGRfaW5wdXRfbGlicmFyeSBhZGRf aW5wdXRfbGlicmFyeTsKIHN0YXRpYyBsZF9wbHVnaW5fbWVzc2FnZSBtZXNzYWdlOwogc3Rh dGljIGxkX3BsdWdpbl9hZGRfc3ltYm9scyBhZGRfc3ltYm9scywgYWRkX3N5bWJvbHNfdjI7 CitzdGF0aWMgbGRfcGx1Z2luX2dldF9hcGlfdmVyc2lvbiBnZXRfYXBpX3ZlcnNpb247CisK Ky8qIEJ5IGRlZmF1bHQsIHVzZSB2ZXJzaW9uIExBUElfVjAgaWYgdGhlcmUgaXMgbm90IG5l Z290aWF0aW9uLiAgKi8KK3N0YXRpYyBlbnVtIGxpbmtlcl9hcGlfdmVyc2lvbiBhcGlfdmVy c2lvbiA9IExBUElfVjA7CiAKIHN0YXRpYyBzdHJ1Y3QgcGx1Z2luX2ZpbGVfaW5mbyAqY2xh aW1lZF9maWxlcyA9IE5VTEw7CiBzdGF0aWMgdW5zaWduZWQgaW50IG51bV9jbGFpbWVkX2Zp bGVzID0gMDsKQEAgLTE0MjgsNiArMTQzMiw0MyBAQCBwcm9jZXNzX29wdGlvbiAoY29uc3Qg Y2hhciAqb3B0aW9uKQogICB2ZXJib3NlID0gdmVyYm9zZSB8fCBkZWJ1ZzsKIH0KIAorLyog TmVnb3RpYXRlIGxpbmtlciBBUEkgdmVyc2lvbi4gICovCisKK3N0YXRpYyB2b2lkCituZWdv dGlhdGVfYXBpX3ZlcnNpb24gKHZvaWQpCit7CisgIGNvbnN0IGNoYXIgKmxpbmtlcl9pZGVu dGlmaWVyOworICBjb25zdCBjaGFyICpsaW5rZXJfdmVyc2lvbjsKKworICBlbnVtIGxpbmtl cl9hcGlfdmVyc2lvbiBzdXBwb3J0ZWRfYXBpID0gTEFQSV9WMDsKKyNpZiBIQVZFX1BUSFJF QURfTE9DS0lORworICBzdXBwb3J0ZWRfYXBpID0gTEFQSV9WMTsKKyNlbmRpZgorCisgIGFw aV92ZXJzaW9uID0gZ2V0X2FwaV92ZXJzaW9uICgiR0NDIiwgQkFTRV9WRVJTSU9OLCBMQVBJ X1YwLAorCQkJCSBzdXBwb3J0ZWRfYXBpLCAmbGlua2VyX2lkZW50aWZpZXIsICZsaW5rZXJf dmVyc2lvbik7CisgIGlmIChhcGlfdmVyc2lvbiA+IHN1cHBvcnRlZF9hcGkpCisgICAgewor ICAgICAgZnByaW50ZiAoc3RkZXJyLCAicmVxdWVzdGVkIGFuIHVuc3VwcG9ydGVkIEFQSSB2 ZXJzaW9uICglZClcbiIsIGFwaV92ZXJzaW9uKTsKKyAgICAgIGFib3J0ICgpOworICAgIH0K KworICBzd2l0Y2ggKGFwaV92ZXJzaW9uKQorICAgIHsKKyAgICBjYXNlIExBUElfVjA6Cisg ICAgICBicmVhazsKKyAgICBjYXNlIExBUElfVjE6CisgICAgICBjaGVjayAoZ2V0X3N5bWJv bHNfdjMsIExEUExfRkFUQUwsCisJICAgICAiZ2V0X3N5bWJvbHNfdjMgcmVxdWlyZWQgZm9y IEFQSSB2ZXJzaW9uIDEiKTsKKyAgICAgIGNoZWNrIChhZGRfc3ltYm9sc192MiwgTERQTF9G QVRBTCwKKwkgICAgICJhZGRfc3ltYm9sc192MiByZXF1aXJlZCBmb3IgQVBJIHZlcnNpb24g MSIpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGZwcmludGYgKHN0ZGVy ciwgInVuc3VwcG9ydGVkIEFQSSB2ZXJzaW9uICglZClcbiIsIGFwaV92ZXJzaW9uKTsKKyAg ICAgIGFib3J0ICgpOworICAgIH0KK30KKwogLyogQ2FsbGVkIGJ5IGEgbGlua2VyIGFmdGVy IGxvYWRpbmcgdGhlIHBsdWdpbi4gVFYgaXMgdGhlIHRyYW5zZmVyIHZlY3Rvci4gKi8KIAog ZW51bSBsZF9wbHVnaW5fc3RhdHVzCkBAIC0xNDk2LDEyICsxNTM3LDE4IEBAIG9ubG9hZCAo c3RydWN0IGxkX3BsdWdpbl90diAqdHYpCiAJICAvKiBXZSBvbmx5IHVzZSB0aGlzIHRvIG1h a2UgdXNlci1mcmllbmRseSB0ZW1wIGZpbGUgbmFtZXMuICAqLwogCSAgbGlua19vdXRwdXRf bmFtZSA9IHAtPnR2X3UudHZfc3RyaW5nOwogCSAgYnJlYWs7CisJY2FzZSBMRFBUX0dFVF9B UElfVkVSU0lPTjoKKwkgIGdldF9hcGlfdmVyc2lvbiA9IHAtPnR2X3UudHZfZ2V0X2FwaV92 ZXJzaW9uOworCSAgYnJlYWs7CiAJZGVmYXVsdDoKIAkgIGJyZWFrOwogCX0KICAgICAgIHAr KzsKICAgICB9CiAKKyAgaWYgKGdldF9hcGlfdmVyc2lvbikKKyAgICBuZWdvdGlhdGVfYXBp X3ZlcnNpb24gKCk7CisKICAgY2hlY2sgKHJlZ2lzdGVyX2NsYWltX2ZpbGUsIExEUExfRkFU QUwsICJyZWdpc3Rlcl9jbGFpbV9maWxlIG5vdCBmb3VuZCIpOwogICBjaGVjayAoYWRkX3N5 bWJvbHMsIExEUExfRkFUQUwsICJhZGRfc3ltYm9scyBub3QgZm91bmQiKTsKICAgc3RhdHVz ID0gcmVnaXN0ZXJfY2xhaW1fZmlsZSAoY2xhaW1fZmlsZV9oYW5kbGVyKTsKLS0gCjIuMzcu MAoK --------------75NvASCzTpdFTvuy7aWPJkac--