From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by sourceware.org (Postfix) with ESMTPS id 06537385840F for ; Fri, 24 Feb 2023 12:20:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 06537385840F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de 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-out2.suse.de (Postfix) with ESMTPS id 3CA28203D7; Fri, 24 Feb 2023 12:20:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1677241246; 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=6kKbuVyuCrEiWgbEVdbiAYp29JGmFoyhLfd5Qn6Awlk=; b=QRY4ilp4rjBjx7fQbqA5Y5L22BAviKZSqguaBHJA5CN0g3iLjcUJCiR+PGqRJvE8oxHc1w t7E4KYYhn2w8RwmLObjpRIkrDdAS3VxcBbSL/hfWq6eIAlmwSmcWeR4EUUiE51CbPHJj15 gCqgf6kuYdaUDNtPiqfAdQlkvQNNi8A= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1677241246; 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=6kKbuVyuCrEiWgbEVdbiAYp29JGmFoyhLfd5Qn6Awlk=; b=oSaeNwbYt7gXGffhteXjq4j8uA7EBvkGGa3JA+PnK66ctsgh2groRBoeNc2RURm0KsS0xu 7sGCC5sXKwE0p1Bg== 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 1A5B513246; Fri, 24 Feb 2023 12:20:46 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id tZnkBJ6r+GP/HwAAMHmgww (envelope-from ); Fri, 24 Feb 2023 12:20:46 +0000 Content-Type: multipart/mixed; boundary="------------m9rHm2QgrKXN66WoCtj0woix" Message-ID: <7cb226d0-1a91-9bad-181c-46f79c4d6eaf@suse.de> Date: Fri, 24 Feb 2023 13:21:06 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH] gas: Add --force-compress-debug-sections Content-Language: en-US To: Jan Beulich Cc: binutils@sourceware.org, Michael Matz References: <20230223124519.4228-1-tdevries@suse.de> <7dcb7bfb-f65d-aed8-78d4-944211ef5127@suse.de> <819f729a-da9c-3b8a-3769-7995c009704b@suse.com> <14a2defc-5371-84bc-2d59-9980755b112a@suse.de> <02dcf47c-4256-c5e5-de9e-814b60da8ce8@suse.com> From: Tom de Vries In-Reply-To: <02dcf47c-4256-c5e5-de9e-814b60da8ce8@suse.com> X-Spam-Status: No, score=-12.5 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_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------m9rHm2QgrKXN66WoCtj0woix Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2/24/23 12:28, Jan Beulich wrote: > On 24.02.2023 11:52, Tom de Vries wrote: >> On 2/23/23 14:44, Jan Beulich wrote: >>> On 23.02.2023 14:27, Tom de Vries wrote: >>>> On 2/23/23 14:08, Jan Beulich wrote: >>>>> On 23.02.2023 13:45, Tom de Vries via Binutils wrote: >>>>>> Gas has an option --compress-debug-sections that allows it to generate >>>>>> compressed debug sections. >>>>>> >>>>>> That does not guarantee that the debug sections are in fact compressed: >>>>>> ... >>>>>> $ gcc ~/hello.c -Wa,-gdwarf-5 -c -Wa,--compress-debug-sections=zstd >>>>>> $ readelf -S -W hello.o | grep " .debug" >>>>>> [ 9] .debug_line PROGBITS 0000a8 000053 00 0 0 1 >>>>>> [11] .debug_line_str PROGBITS 0000fb 000025 01 MS 0 0 1 >>>>>> [12] .debug_info PROGBITS 000120 000039 00 0 0 1 >>>>>> [14] .debug_abbrev PROGBITS 000159 000028 00 0 0 1 >>>>>> [15] .debug_aranges PROGBITS 000190 000030 00 0 0 16 >>>>>> [17] .debug_str PROGBITS 0001c0 000039 01 MS 0 0 1 >>>>>> ... >>>>>> >>>>>> Sensibly so, they're only compressed if that provides a size benefit. >>>>>> >>>>>> However, for the purposes of testing components consuming dwarf >>>>>> we may want the sections to be compressed regardless. >>>>>> >>>>>> Add a new option --force-compress-debug-sections that ignores the size >>>>>> heuristic, such that we have instead: >>>>>> ... >>>>>> $ gcc ~/hello.c -Wa,-gdwarf-5 -c -Wa,--compress-debug-sections=zstd \ >>>>>> -Wa,--force-compress-debug-sections >>>>>> $ readelf -S -W hello.o | grep " .debug" >>>>>> [ 9] .debug_line PROGBITS 0000a8 000064 00 C 0 0 8 >>>>>> [11] .debug_line_str PROGBITS 000110 000046 01 MSC 0 0 8 >>>>>> [12] .debug_info PROGBITS 000158 000046 00 C 0 0 8 >>>>>> [14] .debug_abbrev PROGBITS 0001a0 000049 00 C 0 0 8 >>>>>> [15] .debug_aranges PROGBITS 0001f0 000034 00 C 0 0 8 >>>>>> [17] .debug_str PROGBITS 000228 00005a 01 MSC 0 0 8 >>>>>> ... >>>>>> >>>>>> Advertised as: >>>>>> ... >>>>>> $ as --help 2>&1 | grep compress >>>>>> --compress-debug-sections[={none|zlib|zlib-gnu|zlib-gabi|zstd}] >>>>>> compress DWARF debug sections >>>>>> --nocompress-debug-sections >>>>>> don't compress DWARF debug sections >>>>>> --force-compress-debug-sections >>>>>> force compression of DWARF debug sections >>>>> >>>>> No objection in principle, but have you considered making this a new >>>>> sub-option to --compress-debug-sections, i.e. compress-debug-sections=force? >>>> >>>> I did consider adding a "force-" prefix variant for all the non-none >>>> sub-options, but decided to go with the simplest solution first. >>>> >>>> Your suggestion, --compress-debug-sections=force is more orthogonal, >>>> though it breaks the pattern that all the sub-options are mutually >>>> exclusive. >>>> >>>> We could have it be standalone, so you'd do: >>>> --compress-debug-sections=zstd --compress-debug-sections=force. >>>> >>>> Or instead combined: --compress-debug-sections=force,zstd. Harder to >>>> parse though, I suppose. >>> >>> I think both should be allowed. In a complex build system it may be >>> different entities setting "how" and "whether". (To me "none" falls in >>> the "whether" category together with "force", and it also can be seen >>> as falling in the "how" category together with "zlib" etc. In Linux >>> Kconfig, for example, I'd see this being expressed as first a "whether" >>> choice [yes/maybe/forced] and then a "how" choice dependent upon >>> "whether != none".) >>> >> >> I gave this approach a try. > > Any specific reason you chose + as the separator instead of the more > conventional , ? Yes, I initially went for ',', but ran into: ... $ gcc ~/hello.c -Wa,-gdwarf-5 \ -Wa,--compress-debug-sections=zstd,force -c -v ... as -v --64 -gdwarf-5 --compress-debug-sections=zstd force -o hello.o \ /tmp/ccOUMqHL.s ... Assembler messages: Error: can't open force for reading: No such file or directory ... > I also wouldn't see anything wrong with something > like "...=force,zstd,none" - the last one(s) win. That's no different > from specifying a second instance of the option. And without that it > looks as if the parsing would end up simpler. OK, gave that a try. Thanks, - Tom --------------m9rHm2QgrKXN66WoCtj0woix Content-Type: text/x-patch; charset=UTF-8; name="0001-gas-Add-compress-debug-sections-force.patch" Content-Disposition: attachment; filename="0001-gas-Add-compress-debug-sections-force.patch" Content-Transfer-Encoding: base64 RnJvbSBmMjNjNDEzNzJjYjdkNDgxMTZjZTUxZjk5YjlmMjY1MjQ4YjJkN2Q0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+ CkRhdGU6IFRodSwgMjMgRmViIDIwMjMgMTI6NTM6NDAgKzAxMDAKU3ViamVjdDogW1BBVENI XSBnYXM6IEFkZCAtLWNvbXByZXNzLWRlYnVnLXNlY3Rpb25zPWZvcmNlCgpHYXMgaGFzIGFu IG9wdGlvbiAtLWNvbXByZXNzLWRlYnVnLXNlY3Rpb25zIHRoYXQgYWxsb3dzIGl0IHRvIGdl bmVyYXRlCmNvbXByZXNzZWQgZGVidWcgc2VjdGlvbnMuCgpUaGF0IGRvZXMgbm90IGd1YXJh bnRlZSB0aGF0IHRoZSBkZWJ1ZyBzZWN0aW9ucyBhcmUgaW4gZmFjdCBjb21wcmVzc2VkOgou Li4KJCBnY2MgaGVsbG8uYyAtV2EsLWdkd2FyZi01IC1jIC1XYSwtLWNvbXByZXNzLWRlYnVn LXNlY3Rpb25zPXpzdGQKJCByZWFkZWxmIC1TIC1XIGhlbGxvLm8gfCBncmVwICIgLmRlYnVn IgogIFsgOV0gLmRlYnVnX2xpbmUgICAgICAgUFJPR0JJVFMgICAgICAgICAwMDAwYTggMDAw MDUzIDAwICAgICAgMCAgIDAgIDEKICBbMTFdIC5kZWJ1Z19saW5lX3N0ciAgIFBST0dCSVRT ICAgICAgICAgMDAwMGZiIDAwMDAyNSAwMSAgTVMgIDAgICAwICAxCiAgWzEyXSAuZGVidWdf aW5mbyAgICAgICBQUk9HQklUUyAgICAgICAgIDAwMDEyMCAwMDAwMzkgMDAgICAgICAwICAg MCAgMQogIFsxNF0gLmRlYnVnX2FiYnJldiAgICAgUFJPR0JJVFMgICAgICAgICAwMDAxNTkg MDAwMDI4IDAwICAgICAgMCAgIDAgIDEKICBbMTVdIC5kZWJ1Z19hcmFuZ2VzICAgIFBST0dC SVRTICAgICAgICAgMDAwMTkwIDAwMDAzMCAwMCAgICAgIDAgICAwIDE2CiAgWzE3XSAuZGVi dWdfc3RyICAgICAgICBQUk9HQklUUyAgICAgICAgIDAwMDFjMCAwMDAwMzkgMDEgIE1TICAw ICAgMCAgMQouLi4KClNlbnNpYmx5IHNvLCB0aGV5J3JlIG9ubHkgY29tcHJlc3NlZCBpZiB0 aGF0IHByb3ZpZGVzIGEgc2l6ZSBiZW5lZml0LgoKSG93ZXZlciwgZm9yIHRoZSBwdXJwb3Nl IG9mIHRlc3RpbmcgY29tcG9uZW50cyBjb25zdW1pbmcgZHdhcmYKd2UgbWF5IHdhbnQgdGhl IHNlY3Rpb25zIHRvIGJlIGNvbXByZXNzZWQgcmVnYXJkbGVzcy4KCkFkZCBhIG5ldyBzdWJv cHRpb24gLS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9ucz1mb3JjZSB0aGF0IGlnbm9yZXMgdGhl IHNpemUKaGV1cmlzdGljLCBzdWNoIHRoYXQgd2UgaGF2ZSBpbnN0ZWFkOgouLi4KJCBnY2Mg aGVsbG8uYyAtV2EsLWdkd2FyZi01IC1jIC1XYSwtLWNvbXByZXNzLWRlYnVnLXNlY3Rpb25z PXpzdGQrZm9yY2UKJCByZWFkZWxmIC1TIC1XIGhlbGxvLm8gfCBncmVwICIgLmRlYnVnIgog IFsgOV0gLmRlYnVnX2xpbmUgICAgICAgUFJPR0JJVFMgICAgICAgICAwMDAwYTggMDAwMDY0 IDAwICAgQyAgMCAgIDAgIDgKICBbMTFdIC5kZWJ1Z19saW5lX3N0ciAgIFBST0dCSVRTICAg ICAgICAgMDAwMTEwIDAwMDA0NiAwMSBNU0MgIDAgICAwICA4CiAgWzEyXSAuZGVidWdfaW5m byAgICAgICBQUk9HQklUUyAgICAgICAgIDAwMDE1OCAwMDAwNDYgMDAgICBDICAwICAgMCAg OAogIFsxNF0gLmRlYnVnX2FiYnJldiAgICAgUFJPR0JJVFMgICAgICAgICAwMDAxYTAgMDAw MDQ5IDAwICAgQyAgMCAgIDAgIDgKICBbMTVdIC5kZWJ1Z19hcmFuZ2VzICAgIFBST0dCSVRT ICAgICAgICAgMDAwMWYwIDAwMDAzNCAwMCAgIEMgIDAgICAwICA4CiAgWzE3XSAuZGVidWdf c3RyICAgICAgICBQUk9HQklUUyAgICAgICAgIDAwMDIyOCAwMDAwNWEgMDEgTVNDICAwICAg MCAgOAouLi4KCkFkdmVydGlzZWQgYXM6Ci4uLgokIGFzIC0taGVscAogIC4uLgogIC0tY29t cHJlc3MtZGVidWctc2VjdGlvbnNbPXtub25lfDxmb3JtYXQ+fGZvcmNlfGZvcmNlKzxmb3Jt YXQ+fV0KICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSA8Zm9ybWF0PiBpcyB7emxp Ynx6bGliLWdudXx6bGliLWdhYml8enN0ZH0KICAgICAgICAgICAgICAgICAgICAgICAgICBj b21wcmVzcyBEV0FSRiBkZWJ1ZyBzZWN0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgRGVmYXVsdDogenN0ZAouLi4KClRlc3RlZCBvbiB4ODZfNjQtbGludXguCi0tLQogZ2Fz L2FzLmMgICAgICAgIHwgMTMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLQogZ2FzL2FzLmggICAgICAgIHwgICA0ICsrCiBnYXMvZG9jL2FzLnRl eGkgfCAgMTAgKysrLQogZ2FzL3dyaXRlLmMgICAgIHwgICA0ICstCiA0IGZpbGVzIGNoYW5n ZWQsIDEyOCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9n YXMvYXMuYyBiL2dhcy9hcy5jCmluZGV4IDU5OGJmZDU2Y2Y1Li4wZjRkNDNmMjU2ZCAxMDA2 NDQKLS0tIGEvZ2FzL2FzLmMKKysrIGIvZ2FzL2FzLmMKQEAgLTIzMCw2ICsyMzAsMTggQEAg ZW51bSBjb21wcmVzc2VkX2RlYnVnX3NlY3Rpb25fdHlwZSBmbGFnX2NvbXByZXNzX2RlYnVn CiAgID0gREVGQVVMVF9DT01QUkVTU0VEX0RFQlVHX0FMR09SSVRITTsKICNlbmRpZgogCitl bnVtIGNvbXByZXNzX2RlYnVnX2FjdGlvbgoreworICBjZGFfZGVmYXVsdCwKKyAgY2RhX25v bmUsCisgIGNkYV9mb3JjZSwKKyAgY2RhX3llcywKK307CitzdGF0aWMgZW51bSBjb21wcmVz c19kZWJ1Z19hY3Rpb24gY29tcHJlc3NfZGVidWdfYWN0aW9uCisgID0gY2RhX2RlZmF1bHQ7 CisKK2Jvb2wgZm9yY2VfY29tcHJlc3NfZGVidWcgPSBmYWxzZTsKKwogc3RhdGljIHZvaWQK IHNob3dfdXNhZ2UgKEZJTEUgKiBzdHJlYW0pCiB7CkBAIC0yNTIsNyArMjY0LDggQEAgT3B0 aW9uczpcblwKICAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCiAgIC0tYWx0ZXJuYXRlICAgICAg ICAgICAgIGluaXRpYWxseSB0dXJuIG9uIGFsdGVybmF0ZSBtYWNybyBzeW50YXhcbiIpKTsK ICAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCi0gIC0tY29tcHJlc3MtZGVidWctc2VjdGlvbnNb PXtub25lfHpsaWJ8emxpYi1nbnV8emxpYi1nYWJpfHpzdGR9XVxuXAorICAtLWNvbXByZXNz LWRlYnVnLXNlY3Rpb25zWz17bm9uZXw8Zm9ybWF0Pnxmb3JjZXxmb3JjZSs8Zm9ybWF0Pn1d XG5cCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIDxmb3JtYXQ+IGlzIHt6bGli fHpsaWItZ251fHpsaWItZ2FiaXx6c3RkfVxuXAogICAgICAgICAgICAgICAgICAgICAgICAg ICBjb21wcmVzcyBEV0FSRiBkZWJ1ZyBzZWN0aW9uc1xuIikpLAogICBmcHJpbnRmIChzdHJl YW0sIF8oIlwKIAkJICAgICAgICAgICAgRGVmYXVsdDogJXNcbiIpLApAQCAtNDE4LDYgKzQz MSwxMDEgQEAgT3B0aW9uczpcblwKICAgICBmcHJpbnRmIChzdHJlYW0sIF8oIlJlcG9ydCBi dWdzIHRvICVzXG4iKSwgUkVQT1JUX0JVR1NfVE8pOwogfQogCitzdGF0aWMgdm9pZAorcGFy c2VfY29tcHJlc3NfZGVidWdfb3B0YXJnXzEgKGNvbnN0IGNoYXIgKm9wdGFyZywgYm9vbCAq bm9uZSwgYm9vbCAqZm9yY2UsCisJCQkgICAgICAgZW51bSBjb21wcmVzc2VkX2RlYnVnX3Nl Y3Rpb25fdHlwZSAqZm9ybWF0KQoreworICBnYXNfYXNzZXJ0IChvcHRhcmcgIT0gTlVMTCk7 CisKKyAgaWYgKHN0cmNtcCAob3B0YXJnLCAiZm9yY2UiKSA9PSAwKQorICAgIHsKKyAgICAg ICpmb3JjZSA9IHRydWU7CisgICAgICAqbm9uZSA9IGZhbHNlOworICAgICAgcmV0dXJuOwor ICAgIH0KKworICBlbnVtIGNvbXByZXNzZWRfZGVidWdfc2VjdGlvbl90eXBlIHRtcAorICAg ID0gYmZkX2dldF9jb21wcmVzc2lvbl9hbGdvcml0aG0gKG9wdGFyZyk7CisKKyNpZm5kZWYg SEFWRV9aU1RECisgIGlmICh0bXAgPT0gQ09NUFJFU1NfREVCVUdfWlNURCkKKyAgICBhc19m YXRhbCAoXyAoIi0tY29tcHJlc3MtZGVidWctc2VjdGlvbnM9enN0ZDogZ2FzIGlzIG5vdCAi CisJCSAiYnVpbHQgd2l0aCB6c3RkIHN1cHBvcnQiKSk7CisjZW5kaWYKKworICBpZiAodG1w ID09IENPTVBSRVNTX1VOS05PV04pCisgICAgYXNfZmF0YWwgKF8oIkludmFsaWQgLS1jb21w cmVzcy1kZWJ1Zy1zZWN0aW9ucyBvcHRpb246IGAlcyciKSwKKwkgICAgICBvcHRhcmcpOwor CisgIGlmICh0bXAgPT0gQ09NUFJFU1NfREVCVUdfTk9ORSkKKyAgICB7CisgICAgICAqbm9u ZSA9IHRydWU7CisgICAgICAqZm9yY2UgPSBmYWxzZTsKKyAgICAgIHJldHVybjsKKyAgICB9 CisKKyAgKmZvcm1hdCA9IHRtcDsKK30KKworc3RhdGljIHZvaWQKK3BhcnNlX2NvbXByZXNz X2RlYnVnX29wdGFyZyAoY29uc3QgY2hhciAqb3B0YXJnKQoreworI2lmICFkZWZpbmVkIE9C Sl9FTEYgJiYgIWRlZmluZWQgT0JKX01BWUJFX0VMRgorICBhc19mYXRhbCAoXygiLS1jb21w cmVzcy1kZWJ1Zy1zZWN0aW9ucz0lcyBpcyB1bnN1cHBvcnRlZCIpLAorCSAgICBvcHRhcmcp OworI2VuZGlmCisKKyAgLyogVG9rZW5pemUgc3Vib3B0cyBzZXBlcmF0ZWQgYnkgJysnIGFu ZCBwYXNzIHRvCisgICAgIHBhcnNlX2NvbXByZXNzX2RlYnVnX29wdGFyZ18xLiAgKi8KKyAg Ym9vbCBub25lID0gZmFsc2U7CisgIGJvb2wgZm9yY2UgPSBmYWxzZTsKKyAgZW51bSBjb21w cmVzc2VkX2RlYnVnX3NlY3Rpb25fdHlwZSBmb3JtYXQgPSBDT01QUkVTU19VTktOT1dOOwor ICB3aGlsZSAodHJ1ZSkKKyAgICB7CisgICAgICBjb25zdCBjaGFyICppZHggPSBvcHRhcmc7 CisgICAgICB3aGlsZSAoKmlkeCAhPSAnXDAnICYmICppZHggIT0gJysnKQorCWlkeCsrOwor CisgICAgICBzaXplX3QgbGVuID0gaWR4IC0gb3B0YXJnOworICAgICAgaWYgKGxlbiA9PSAw KQorCXsKKwkgIC8qIEdlbmVyYXRlIGVycm9yLiAgKi8KKwkgIHBhcnNlX2NvbXByZXNzX2Rl YnVnX29wdGFyZ18xICgiIiwgTlVMTCwgTlVMTCwgTlVMTCk7CisJICBicmVhazsKKwl9CisK KyAgICAgIGNoYXIgKnRtcCA9IHhzdHJuZHVwIChvcHRhcmcsIGxlbik7CisgICAgICBwYXJz ZV9jb21wcmVzc19kZWJ1Z19vcHRhcmdfMSAodG1wLCAmbm9uZSwgJmZvcmNlLCAmZm9ybWF0 KTsKKyAgICAgIGZyZWUgKHRtcCk7CisKKyAgICAgIGlmICgqaWR4ID09ICdcMCcpCisJYnJl YWs7CisKKyAgICAgIC8qIFN0ZXAgb3ZlciAnKycgYW5kIGNvbnRpbnVlIHRva2VuaXppbmcu ICAqLworICAgICAgZ2FzX2Fzc2VydCAoKmlkeCA9PSAnKycpOworICAgICAgb3B0YXJnID0g aWR4ICsgMTsKKyAgfQorCisgIGlmIChub25lKQorICAgIGNvbXByZXNzX2RlYnVnX2FjdGlv biA9IGNkYV9ub25lOworICBlbHNlIGlmIChmb3JjZSkKKyAgICBjb21wcmVzc19kZWJ1Z19h Y3Rpb24gPSBjZGFfZm9yY2U7CisgIGVsc2UKKyAgICBjb21wcmVzc19kZWJ1Z19hY3Rpb24g PSBjZGFfeWVzOworCisgIGlmIChmb3JtYXQgIT0gQ09NUFJFU1NfVU5LTk9XTikKKyAgICBm bGFnX2NvbXByZXNzX2RlYnVnID0gZm9ybWF0OworfQorCitzdGF0aWMgdm9pZAorZmluYWxp emVfcGFyc2VfY29tcHJlc3NfZGVidWdfb3B0YXJnICh2b2lkKQoreworICBpZiAoY29tcHJl c3NfZGVidWdfYWN0aW9uID09IGNkYV9ub25lKQorICAgIGZsYWdfY29tcHJlc3NfZGVidWcg PSBDT01QUkVTU19ERUJVR19OT05FOworICBlbHNlIGlmIChjb21wcmVzc19kZWJ1Z19hY3Rp b24gPT0gY2RhX2ZvcmNlKQorICAgIGZvcmNlX2NvbXByZXNzX2RlYnVnID0gdHJ1ZTsKK30K KwogLyogU2luY2UgaXQgaXMgZWFzeSB0byBkbyBoZXJlIHdlIGludGVycHJldCB0aGUgc3Bl Y2lhbCBhcmcgIi0iCiAgICB0byBtZWFuICJ1c2Ugc3RkaW4iIGFuZCB3ZSBzZXQgdGhhdCBh cmd2W10gcG9pbnRpbmcgdG8gIiIuCiAgICBBZnRlciB3ZSBoYXZlIG11bmdlZCBhcmd2W10s IHRoZSBvbmx5IHRoaW5ncyBsZWZ0IGFyZSBzb3VyY2UgZmlsZQpAQCAtNzQ3LDI4ICs4NTUs MTMgQEAgVGhpcyBwcm9ncmFtIGhhcyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5LlxuIikpOwog CiAJY2FzZSBPUFRJT05fQ09NUFJFU1NfREVCVUc6CiAJICBpZiAob3B0YXJnKQotCSAgICB7 Ci0jaWYgZGVmaW5lZCBPQkpfRUxGIHx8IGRlZmluZWQgT0JKX01BWUJFX0VMRgotCSAgICAg IGZsYWdfY29tcHJlc3NfZGVidWcgPSBiZmRfZ2V0X2NvbXByZXNzaW9uX2FsZ29yaXRobSAo b3B0YXJnKTsKLSNpZm5kZWYgSEFWRV9aU1RECi0JICAgICAgaWYgKGZsYWdfY29tcHJlc3Nf ZGVidWcgPT0gQ09NUFJFU1NfREVCVUdfWlNURCkKLQkJICBhc19mYXRhbCAoXyAoIi0tY29t cHJlc3MtZGVidWctc2VjdGlvbnM9enN0ZDogZ2FzIGlzIG5vdCAiCi0JCQkgICAgICAgImJ1 aWx0IHdpdGggenN0ZCBzdXBwb3J0IikpOwotI2VuZGlmCi0JICAgICAgaWYgKGZsYWdfY29t cHJlc3NfZGVidWcgPT0gQ09NUFJFU1NfVU5LTk9XTikKLQkJYXNfZmF0YWwgKF8oIkludmFs aWQgLS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9ucyBvcHRpb246IGAlcyciKSwKLQkJCSAgb3B0 YXJnKTsKLSNlbHNlCi0JICAgICAgYXNfZmF0YWwgKF8oIi0tY29tcHJlc3MtZGVidWctc2Vj dGlvbnM9JXMgaXMgdW5zdXBwb3J0ZWQiKSwKLQkJCW9wdGFyZyk7Ci0jZW5kaWYKLQkgICAg fQorCSAgICBwYXJzZV9jb21wcmVzc19kZWJ1Z19vcHRhcmcgKG9wdGFyZyk7CiAJICBlbHNl Ci0JICAgIGZsYWdfY29tcHJlc3NfZGVidWcgPSBDT01QUkVTU19ERUJVR19HQUJJX1pMSUI7 CisJICAgIHBhcnNlX2NvbXByZXNzX2RlYnVnX29wdGFyZyAoInpsaWItZ2FiaSIpOwogCSAg YnJlYWs7CiAKIAljYXNlIE9QVElPTl9OT0NPTVBSRVNTX0RFQlVHOgotCSAgZmxhZ19jb21w cmVzc19kZWJ1ZyA9IENPTVBSRVNTX0RFQlVHX05PTkU7CisJICBwYXJzZV9jb21wcmVzc19k ZWJ1Z19vcHRhcmcgKCJub25lIik7CiAJICBicmVhazsKIAogCWNhc2UgT1BUSU9OX0RFQlVH X1BSRUZJWF9NQVA6CkBAIC0xMTM2LDYgKzEyMjksOCBAQCBUaGlzIHByb2dyYW0gaGFzIGFi c29sdXRlbHkgbm8gd2FycmFudHkuXG4iKSk7CiAgICpwYXJnYyA9IG5ld19hcmdjOwogICAq cGFyZ3YgPSBuZXdfYXJndjsKIAorICBmaW5hbGl6ZV9wYXJzZV9jb21wcmVzc19kZWJ1Z19v cHRhcmcgKCk7CisKICNpZmRlZiBtZF9hZnRlcl9wYXJzZV9hcmdzCiAgIG1kX2FmdGVyX3Bh cnNlX2FyZ3MgKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2dhcy9hcy5oIGIvZ2FzL2FzLmgK aW5kZXggNGM1ZmE5ZWNmN2QuLjExNWFmMDE5ODE1IDEwMDY0NAotLS0gYS9nYXMvYXMuaAor KysgYi9nYXMvYXMuaApAQCAtMzMxLDYgKzMzMSwxMCBAQCBDT01NT04gaW50IGZsYWdfdHJh ZGl0aW9uYWxfZm9ybWF0OwogLyogVHlwZSBvZiBjb21wcmVzc2VkIGRlYnVnIHNlY3Rpb25z IHdlIHNob3VsZCBnZW5lcmF0ZS4gICAqLwogQ09NTU9OIGVudW0gY29tcHJlc3NlZF9kZWJ1 Z19zZWN0aW9uX3R5cGUgZmxhZ19jb21wcmVzc19kZWJ1ZzsKIAorLyogVHJ1ZSBpZiB3ZSB3 YW50IHRvIGdlbmVyYXRlIGNvbXByZXNzZWQgZGVidWcgc2VjdGlvbnMsIGV2ZW4gaWYgaXQK KyAgIGRvZXNuJ3QgbWFrZSB0aGVtIHNtYWxsZXIuICAqLworQ09NTU9OIGJvb2wgZm9yY2Vf Y29tcHJlc3NfZGVidWc7CisKIC8qIFRSVUUgaWYgLm5vdGUuR05VLXN0YWNrIHNlY3Rpb24g d2l0aCBTRUNfQ09ERSBzaG91bGQgYmUgY3JlYXRlZCAqLwogQ09NTU9OIGludCBmbGFnX2V4 ZWNzdGFjazsKIApkaWZmIC0tZ2l0IGEvZ2FzL2RvYy9hcy50ZXhpIGIvZ2FzL2RvYy9hcy50 ZXhpCmluZGV4IGJiZGZhNGJmZGNhLi5kMjU1NTkxNDFjNyAxMDA2NDQKLS0tIGEvZ2FzL2Rv Yy9hcy50ZXhpCisrKyBiL2dhcy9kb2MvYXMudGV4aQpAQCAtNzE4LDcgKzcxOCw4IEBAIEJl Z2luIGluIGFsdGVybmF0ZSBtYWNybyBtb2RlLgogQ29tcHJlc3MgRFdBUkYgZGVidWcgc2Vj dGlvbnMgdXNpbmcgemxpYiB3aXRoIFNIRl9DT01QUkVTU0VEIGZyb20gdGhlCiBFTEYgQUJJ LiAgVGhlIHJlc3VsdGluZyBvYmplY3QgZmlsZSBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0 aCBvbGRlcgogbGlua2VycyBhbmQgb2JqZWN0IGZpbGUgdXRpbGl0aWVzLiAgTm90ZSBpZiBj b21wcmVzc2lvbiB3b3VsZCBtYWtlIGEKLWdpdmVuIHNlY3Rpb24gQGVtcGh7bGFyZ2VyfSB0 aGVuIGl0IGlzIG5vdCBjb21wcmVzc2VkLgorZ2l2ZW4gc2VjdGlvbiBAZW1waHtsYXJnZXJ9 IHRoZW4gaXQgaXMgbm90IGNvbXByZXNzZWQsIHVubGVzcworQG9wdGlvbnstLWNvbXByZXNz LWRlYnVnLXNlY3Rpb249Zm9yY2V9IGlzIHVzZWQuCiAKIEBpZnNldCBFTEYKIEBjaW5kZXgg QHNhbXB7LS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9ucz19IG9wdGlvbgpAQCAtNzI3LDYgKzcy OCw3IEBAIGdpdmVuIHNlY3Rpb24gQGVtcGh7bGFyZ2VyfSB0aGVuIGl0IGlzIG5vdCBjb21w cmVzc2VkLgogQGl0ZW14IC0tY29tcHJlc3MtZGVidWctc2VjdGlvbnM9emxpYi1nbnUKIEBp dGVteCAtLWNvbXByZXNzLWRlYnVnLXNlY3Rpb25zPXpsaWItZ2FiaQogQGl0ZW14IC0tY29t cHJlc3MtZGVidWctc2VjdGlvbnM9enN0ZAorQGl0ZW14IC0tY29tcHJlc3MtZGVidWctc2Vj dGlvbnM9Zm9yY2UKIFRoZXNlIG9wdGlvbnMgY29udHJvbCBob3cgRFdBUkYgZGVidWcgc2Vj dGlvbnMgYXJlIGNvbXByZXNzZWQuCiBAb3B0aW9uey0tY29tcHJlc3MtZGVidWctc2VjdGlv bnM9bm9uZX0gaXMgZXF1aXZhbGVudCB0bwogQG9wdGlvbnstLW5vY29tcHJlc3MtZGVidWct c2VjdGlvbnN9LgpAQCAtNzM4LDcgKzc0MCwxMSBAQCB1c2luZyB0aGUgb2Jzb2xldGVkIHps aWItZ251IGZvcm1hdC4gIFRoZSBkZWJ1ZyBzZWN0aW9ucyBhcmUgcmVuYW1lZCB0byBiZWdp bgogd2l0aCBAc2FtcHsuemRlYnVnfS4KIEBvcHRpb257LS1jb21wcmVzcy1kZWJ1Zy1zZWN0 aW9ucz16c3RkfSBjb21wcmVzc2VzIERXQVJGIGRlYnVnCiBzZWN0aW9ucyB1c2luZyB6c3Rk LiAgTm90ZSAtIGlmIGNvbXByZXNzaW9uIHdvdWxkIGFjdHVhbGx5IG1ha2UgYSBzZWN0aW9u Ci1AZW1waHtsYXJnZXJ9LCB0aGVuIGl0IGlzIG5vdCBjb21wcmVzc2VkIG5vciByZW5hbWVk LgorQGVtcGh7bGFyZ2VyfSwgdGhlbiBpdCBpcyBub3QgY29tcHJlc3NlZCBub3IgcmVuYW1l ZCwgdW5sZXNzCitAb3B0aW9uey0tY29tcHJlc3MtZGVidWctc2VjdGlvbj1mb3JjZX0gaXMg dXNlZC4KK0BvcHRpb257LS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9ucz1mb3JjZX0gY29tcHJl c3NlcyBEV0FSRiBkZWJ1ZyBzZWN0aW9ucywKK2V2ZW4gaWYgdGhpcyBkb2VzIG5vdCByZWR1 Y2Ugc2l6ZS4gIEl0IGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYSBmb3JtYXQK K3NlbGVjdGlvbiwgZm9yIGluc3RhbmNlIEBvcHRpb257LS1jb21wcmVzcy1kZWJ1Zy1zZWN0 aW9uPXpzdGQrZm9yY2V9LgogCiBAZW5kIGlmc2V0CiAKZGlmZiAtLWdpdCBhL2dhcy93cml0 ZS5jIGIvZ2FzL3dyaXRlLmMKaW5kZXggODI3M2I3YTQyZjEuLjM5YmNlYTIzZmFjIDEwMDY0 NAotLS0gYS9nYXMvd3JpdGUuYworKysgYi9nYXMvd3JpdGUuYwpAQCAtMTQ2NSw3ICsxNDY1 LDcgQEAgY29tcHJlc3NfZGVidWcgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlYywgdm9pZCAq eHh4IEFUVFJJQlVURV9VTlVTRUQpCiAgIGZsYWd3b3JkIGZsYWdzID0gYmZkX3NlY3Rpb25f ZmxhZ3MgKHNlYyk7CiAKICAgaWYgKHNlZ2luZm8gPT0gTlVMTAotICAgICAgfHwgdW5jb21w cmVzc2VkX3NpemUgPCAzMgorICAgICAgfHwgKCFmb3JjZV9jb21wcmVzc19kZWJ1ZyAmJiB1 bmNvbXByZXNzZWRfc2l6ZSA8IDMyKQogICAgICAgfHwgKGZsYWdzICYgU0VDX0hBU19DT05U RU5UUykgPT0gMCkKICAgICByZXR1cm47CiAKQEAgLTE1ODIsNyArMTU4Miw3IEBAIGNvbXBy ZXNzX2RlYnVnIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWMsIHZvaWQgKnh4eCBBVFRSSUJV VEVfVU5VU0VEKQogCiAgIC8qIFBSIGJpbnV0aWxzLzE4MDg3OiBJZiBjb21wcmVzc2lvbiBk aWRuJ3QgbWFrZSB0aGUgc2VjdGlvbiBzbWFsbGVyLAogICAgICBqdXN0IGtlZXAgaXQgdW5j b21wcmVzc2VkLiAgKi8KLSAgaWYgKGNvbXByZXNzZWRfc2l6ZSA+PSB1bmNvbXByZXNzZWRf c2l6ZSkKKyAgaWYgKCFmb3JjZV9jb21wcmVzc19kZWJ1ZyAmJiBjb21wcmVzc2VkX3NpemUg Pj0gdW5jb21wcmVzc2VkX3NpemUpCiAgICAgcmV0dXJuOwogCiAgIC8qIFJlcGxhY2UgdGhl IHVuY29tcHJlc3NlZCBmcmFnIGxpc3Qgd2l0aCB0aGUgY29tcHJlc3NlZCBmcmFnIGxpc3Qu ICAqLwotLSAKMi4zNS4zCgo= --------------m9rHm2QgrKXN66WoCtj0woix--