From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id 1240C385840F for ; Fri, 24 Feb 2023 10:51:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1240C385840F 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-out1.suse.de (Postfix) with ESMTPS id 2F67538A58; Fri, 24 Feb 2023 10:51:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1677235914; 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=W1ZDgT9Y5y/efAZM0lW9fTa6QWhg2YlQNmNmtA8MqgU=; b=S5Y79+HzcU/u2zoVHS5TpgRiZDCNj23W/ZK/3HeydMYZ/rabwGXSJch8b1t9Vd2fH6Zvgd D9Cx3jj9TFUfQ5OTWJU0vC8x4Lgv/rDUpv9dnvbNKFH14wEsW4DHh87QO6D4Kk5QXFPbaR gD5Pd37W7aT2rM08KOO8g6JipZXD9bs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1677235914; 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=W1ZDgT9Y5y/efAZM0lW9fTa6QWhg2YlQNmNmtA8MqgU=; b=faFB7BlsWXdNkAWz2LHUz7TZdgTNi50VqvAj+k9h9lMPn6bqRNUTV1A/SG2bdhzDMInWLa dqqYx712a7bwMlCg== 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 0BCB213A3A; Fri, 24 Feb 2023 10:51:54 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id p3tfAcqW+GMNawAAMHmgww (envelope-from ); Fri, 24 Feb 2023 10:51:54 +0000 Content-Type: multipart/mixed; boundary="------------wTG50QParcZ3zWEHXtJOpHun" Message-ID: <14a2defc-5371-84bc-2d59-9980755b112a@suse.de> Date: Fri, 24 Feb 2023 11:52:14 +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 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> Content-Language: en-US From: Tom de Vries In-Reply-To: <819f729a-da9c-3b8a-3769-7995c009704b@suse.com> X-Spam-Status: No, score=-12.6 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. --------------wTG50QParcZ3zWEHXtJOpHun Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit 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. Thanks, - Tom --------------wTG50QParcZ3zWEHXtJOpHun 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 RnJvbSA3OTJmMzY0Yjg4NTEyNmI4M2FkNTA2MTkwODU0MjZhY2ExYmMzMDhiIE1vbiBTZXAg 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 L2FzLmMgICAgICAgIHwgMTU4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLQogZ2FzL2FzLmggICAgICAgIHwgICA0ICsrCiBnYXMvZG9jL2FzLnRl eGkgfCAgMTAgKystCiBnYXMvd3JpdGUuYyAgICAgfCAgIDQgKy0KIDQgZmlsZXMgY2hhbmdl ZCwgMTUzIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dh cy9hcy5jIGIvZ2FzL2FzLmMKaW5kZXggNTk4YmZkNTZjZjUuLjNjMzhiN2E0NWU5IDEwMDY0 NAotLS0gYS9nYXMvYXMuYworKysgYi9nYXMvYXMuYwpAQCAtMjMwLDYgKzIzMCwxOCBAQCBl bnVtIGNvbXByZXNzZWRfZGVidWdfc2VjdGlvbl90eXBlIGZsYWdfY29tcHJlc3NfZGVidWcK ICAgPSBERUZBVUxUX0NPTVBSRVNTRURfREVCVUdfQUxHT1JJVEhNOwogI2VuZGlmCiAKK2Vu dW0gY29tcHJlc3NfZGVidWdfYWN0aW9uCit7CisgIGNkYV9kZWZhdWx0LAorICBjZGFfbm9u ZSwKKyAgY2RhX2ZvcmNlLAorICBjZGFfeWVzLAorfTsKK3N0YXRpYyBlbnVtIGNvbXByZXNz X2RlYnVnX2FjdGlvbiBjb21wcmVzc19kZWJ1Z19hY3Rpb24KKyAgPSBjZGFfZGVmYXVsdDsK KworYm9vbCBmb3JjZV9jb21wcmVzc19kZWJ1ZyA9IGZhbHNlOworCiBzdGF0aWMgdm9pZAog c2hvd191c2FnZSAoRklMRSAqIHN0cmVhbSkKIHsKQEAgLTI1Miw3ICsyNjQsOCBAQCBPcHRp b25zOlxuXAogICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKICAgLS1hbHRlcm5hdGUgICAgICAg ICAgICAgaW5pdGlhbGx5IHR1cm4gb24gYWx0ZXJuYXRlIG1hY3JvIHN5bnRheFxuIikpOwog ICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKLSAgLS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9uc1s9 e25vbmV8emxpYnx6bGliLWdudXx6bGliLWdhYml8enN0ZH1dXG5cCisgIC0tY29tcHJlc3Mt ZGVidWctc2VjdGlvbnNbPXtub25lfDxmb3JtYXQ+fGZvcmNlfGZvcmNlKzxmb3JtYXQ+fV1c blwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgPGZvcm1hdD4gaXMge3psaWJ8 emxpYi1nbnV8emxpYi1nYWJpfHpzdGR9XG5cCiAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbXByZXNzIERXQVJGIGRlYnVnIHNlY3Rpb25zXG4iKSksCiAgIGZwcmludGYgKHN0cmVh bSwgXygiXAogCQkgICAgICAgICAgICBEZWZhdWx0OiAlc1xuIiksCkBAIC00MTgsNiArNDMx LDEyNiBAQCBPcHRpb25zOlxuXAogICAgIGZwcmludGYgKHN0cmVhbSwgXygiUmVwb3J0IGJ1 Z3MgdG8gJXNcbiIpLCBSRVBPUlRfQlVHU19UTyk7CiB9CiAKK3N0YXRpYyB2b2lkCitwYXJz ZV9jb21wcmVzc19kZWJ1Z19vcHRhcmdfMSAoY29uc3QgY2hhciAqb3B0YXJnLCB1bnNpZ25l ZCBpbnQgKm5vbmVfY250LAorCQkJICAgICAgIHVuc2lnbmVkIGludCAqZm9yY2VfY250LAor CQkJICAgICAgIHVuc2lnbmVkIGludCAqZm9ybWF0X2NudCwKKwkJCSAgICAgICBlbnVtIGNv bXByZXNzZWRfZGVidWdfc2VjdGlvbl90eXBlICpmb3JtYXQpCit7CisgIGdhc19hc3NlcnQg KG9wdGFyZyAhPSBOVUxMKTsKKworICBpZiAoc3RyY21wIChvcHRhcmcsICJmb3JjZSIpID09 IDApCisgICAgeworICAgICAgKysqZm9yY2VfY250OworICAgICAgcmV0dXJuOworICAgIH0K KworICBlbnVtIGNvbXByZXNzZWRfZGVidWdfc2VjdGlvbl90eXBlIHRtcAorICAgID0gYmZk X2dldF9jb21wcmVzc2lvbl9hbGdvcml0aG0gKG9wdGFyZyk7CisKKyNpZm5kZWYgSEFWRV9a U1RECisgIGlmICh0bXAgPT0gQ09NUFJFU1NfREVCVUdfWlNURCkKKyAgICBhc19mYXRhbCAo XyAoIi0tY29tcHJlc3MtZGVidWctc2VjdGlvbnM9enN0ZDogZ2FzIGlzIG5vdCAiCisJCSAi YnVpbHQgd2l0aCB6c3RkIHN1cHBvcnQiKSk7CisjZW5kaWYKKworICBpZiAodG1wID09IENP TVBSRVNTX1VOS05PV04pCisgICAgYXNfZmF0YWwgKF8oIkludmFsaWQgLS1jb21wcmVzcy1k ZWJ1Zy1zZWN0aW9ucyBvcHRpb246IGAlcyciKSwKKwkgICAgICBvcHRhcmcpOworCisgIGlm ICh0bXAgPT0gQ09NUFJFU1NfREVCVUdfTk9ORSkKKyAgICB7CisgICAgICArKypub25lX2Nu dDsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgKmZvcm1hdCA9IHRtcDsKKyAgKysqZm9y bWF0X2NudDsKK30KKworc3RhdGljIHZvaWQKK3BhcnNlX2NvbXByZXNzX2RlYnVnX29wdGFy ZyAoY29uc3QgY2hhciAqb3B0YXJnKQoreworICBjb25zdCBjaGFyICpvcmlnX29wdGFyZyA9 IG9wdGFyZzsKKworI2lmICFkZWZpbmVkIE9CSl9FTEYgJiYgIWRlZmluZWQgT0JKX01BWUJF X0VMRgorICBhc19mYXRhbCAoXygiLS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9ucz0lcyBpcyB1 bnN1cHBvcnRlZCIpLAorCSAgICBvcHRhcmcpOworI2VuZGlmCisKKyAgLyogVG9rZW5pemUg c3Vib3B0cyBzZXBlcmF0ZWQgYnkgJysnIGFuZCBwYXNzIHRvCisgICAgIHBhcnNlX2NvbXBy ZXNzX2RlYnVnX29wdGFyZ18xLiAgKi8KKyAgdW5zaWduZWQgaW50IG5vbmVfY250ID0gMDsK KyAgdW5zaWduZWQgaW50IGZvcmNlX2NudCA9IDA7CisgIHVuc2lnbmVkIGludCBmb3JtYXRf Y250ID0gMDsKKyAgZW51bSBjb21wcmVzc2VkX2RlYnVnX3NlY3Rpb25fdHlwZSBmb3JtYXQg PSBDT01QUkVTU19VTktOT1dOOworICB3aGlsZSAodHJ1ZSkKKyAgICB7CisgICAgICBjb25z dCBjaGFyICppZHggPSBvcHRhcmc7CisgICAgICB3aGlsZSAoKmlkeCAhPSAnXDAnICYmICpp ZHggIT0gJysnKQorCWlkeCsrOworCisgICAgICBzaXplX3QgbGVuID0gaWR4IC0gb3B0YXJn OworICAgICAgaWYgKGxlbiA9PSAwKQorCXsKKwkgIC8qIEdlbmVyYXRlIGVycm9yLiAgKi8K KwkgIHBhcnNlX2NvbXByZXNzX2RlYnVnX29wdGFyZ18xICgiIiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTCk7CisJICBicmVhazsKKwl9CisKKyAgICAgIGNoYXIgKnRtcCA9IHhzdHJuZHVw IChvcHRhcmcsIGxlbik7CisgICAgICBwYXJzZV9jb21wcmVzc19kZWJ1Z19vcHRhcmdfMSAo dG1wLCAmbm9uZV9jbnQsICZmb3JjZV9jbnQsICZmb3JtYXRfY250LAorCQkJCSAgICAgJmZv cm1hdCk7CisgICAgICBmcmVlICh0bXApOworCisgICAgICBpZiAoKmlkeCA9PSAnXDAnKQor CWJyZWFrOworCisgICAgICAvKiBTdGVwIG92ZXIgJysnIGFuZCBjb250aW51ZSB0b2tlbml6 aW5nLiAgKi8KKyAgICAgIGdhc19hc3NlcnQgKCppZHggPT0gJysnKTsKKyAgICAgIG9wdGFy ZyA9IGlkeCArIDE7CisgIH0KKworICBib29sIHZhbGlkX3AgPSB0cnVlOworICBpZiAoZm9y Y2VfY250ID49IDIgfHwgbm9uZV9jbnQgPj0gMiB8fCBmb3JtYXRfY250ID49IDIpCisgICAg LyogTm90IGFsbG93ZWQ6IGZvcmNlK2ZvcmNlLCBub25lK25vbmUsIHpzdGQrenN0ZCwgenN0 ZCt6bGliLiAgKi8KKyAgICB2YWxpZF9wID0gZmFsc2U7CisgIGVsc2UgaWYgKG5vbmVfY250 ID09IDEgJiYgKGZvcmNlX2NudCA+IDAgfHwgZm9ybWF0X2NudCA+IDApKQorICAgIC8qIE5v dCBhbGxvd2VkOiBub25lK2ZvcmNlLCBub25lK3pzdGQuICAqLworICAgIHZhbGlkX3AgPSBm YWxzZTsKKwkKKyAgaWYgKCF2YWxpZF9wKQorICAgIGFzX2ZhdGFsIChfKCJJbnZhbGlkIC0t Y29tcHJlc3MtZGVidWctc2VjdGlvbnMgb3B0aW9uIGNvbWJpbmF0aW9uOiBgJXMnIiksCisJ ICAgICAgb3JpZ19vcHRhcmcpOworCisgIGlmIChub25lX2NudCA9PSAxKQorICAgIC8qIExl dCAtLWNvbXByZXNzLWRlYnVnLXNlY3Rpb249bm9uZSBvdmVycmlkZQorICAgICAgIC0tY29t cHJlc3MtZGVidWctc2VjdGlvbiBhbmQgLS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9uPWZvcmNl LiAgKi8KKyAgICBjb21wcmVzc19kZWJ1Z19hY3Rpb24gPSBjZGFfbm9uZTsKKyAgZWxzZSBp ZiAoZm9yY2VfY250ID09IDEpCisgICAgLyogTGV0IC0tY29tcHJlc3MtZGVidWctc2VjdGlv bj1mb3JjZSBvdmVycmlkZQorICAgICAgIC0tY29tcHJlc3MtZGVidWctc2VjdGlvbiBhbmQg LS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9uPW5vbmUuICAqLworICAgIGNvbXByZXNzX2RlYnVn X2FjdGlvbiA9IGNkYV9mb3JjZTsKKyAgZWxzZQorICAgIC8qIExldCAtLWNvbXByZXNzLWRl YnVnLXNlY3Rpb24gb3ZlcnJpZGUKKyAgICAgICAtLWNvbXByZXNzLWRlYnVnLXNlY3Rpb249 bm9uZSBhbmQgLS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9uPWZvcmNlLiAgKi8KKyAgICBjb21w cmVzc19kZWJ1Z19hY3Rpb24gPSBjZGFfeWVzOworCisgIGlmIChmb3JtYXRfY250ID09IDEp CisgICAgLyogTGV0IC0tY29tcHJlc3MtZGVidWctc2VjdGlvbj16bGliIG92ZXJyaWRlCisg ICAgICAgLS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9uPXpzdGQuICAqLworICAgIGZsYWdfY29t cHJlc3NfZGVidWcgPSBmb3JtYXQ7Cit9CisKK3N0YXRpYyB2b2lkCitmaW5hbGl6ZV9wYXJz ZV9jb21wcmVzc19kZWJ1Z19vcHRhcmcgKHZvaWQpCit7CisgIGlmIChjb21wcmVzc19kZWJ1 Z19hY3Rpb24gPT0gY2RhX25vbmUpCisgICAgZmxhZ19jb21wcmVzc19kZWJ1ZyA9IENPTVBS RVNTX0RFQlVHX05PTkU7CisgIGVsc2UgaWYgKGNvbXByZXNzX2RlYnVnX2FjdGlvbiA9PSBj ZGFfZm9yY2UpCisgICAgZm9yY2VfY29tcHJlc3NfZGVidWcgPSB0cnVlOworfQorCiAvKiBT aW5jZSBpdCBpcyBlYXN5IHRvIGRvIGhlcmUgd2UgaW50ZXJwcmV0IHRoZSBzcGVjaWFsIGFy ZyAiLSIKICAgIHRvIG1lYW4gInVzZSBzdGRpbiIgYW5kIHdlIHNldCB0aGF0IGFyZ3ZbXSBw b2ludGluZyB0byAiIi4KICAgIEFmdGVyIHdlIGhhdmUgbXVuZ2VkIGFyZ3ZbXSwgdGhlIG9u bHkgdGhpbmdzIGxlZnQgYXJlIHNvdXJjZSBmaWxlCkBAIC03NDcsMjggKzg4MCwxMyBAQCBU aGlzIHByb2dyYW0gaGFzIGFic29sdXRlbHkgbm8gd2FycmFudHkuXG4iKSk7CiAKIAljYXNl IE9QVElPTl9DT01QUkVTU19ERUJVRzoKIAkgIGlmIChvcHRhcmcpCi0JICAgIHsKLSNpZiBk ZWZpbmVkIE9CSl9FTEYgfHwgZGVmaW5lZCBPQkpfTUFZQkVfRUxGCi0JICAgICAgZmxhZ19j b21wcmVzc19kZWJ1ZyA9IGJmZF9nZXRfY29tcHJlc3Npb25fYWxnb3JpdGhtIChvcHRhcmcp OwotI2lmbmRlZiBIQVZFX1pTVEQKLQkgICAgICBpZiAoZmxhZ19jb21wcmVzc19kZWJ1ZyA9 PSBDT01QUkVTU19ERUJVR19aU1REKQotCQkgIGFzX2ZhdGFsIChfICgiLS1jb21wcmVzcy1k ZWJ1Zy1zZWN0aW9ucz16c3RkOiBnYXMgaXMgbm90ICIKLQkJCSAgICAgICAiYnVpbHQgd2l0 aCB6c3RkIHN1cHBvcnQiKSk7Ci0jZW5kaWYKLQkgICAgICBpZiAoZmxhZ19jb21wcmVzc19k ZWJ1ZyA9PSBDT01QUkVTU19VTktOT1dOKQotCQlhc19mYXRhbCAoXygiSW52YWxpZCAtLWNv bXByZXNzLWRlYnVnLXNlY3Rpb25zIG9wdGlvbjogYCVzJyIpLAotCQkJICBvcHRhcmcpOwot I2Vsc2UKLQkgICAgICBhc19mYXRhbCAoXygiLS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9ucz0l cyBpcyB1bnN1cHBvcnRlZCIpLAotCQkJb3B0YXJnKTsKLSNlbmRpZgotCSAgICB9CisJICAg IHBhcnNlX2NvbXByZXNzX2RlYnVnX29wdGFyZyAob3B0YXJnKTsKIAkgIGVsc2UKLQkgICAg ZmxhZ19jb21wcmVzc19kZWJ1ZyA9IENPTVBSRVNTX0RFQlVHX0dBQklfWkxJQjsKKwkgICAg cGFyc2VfY29tcHJlc3NfZGVidWdfb3B0YXJnICgiemxpYi1nYWJpIik7CiAJICBicmVhazsK IAogCWNhc2UgT1BUSU9OX05PQ09NUFJFU1NfREVCVUc6Ci0JICBmbGFnX2NvbXByZXNzX2Rl YnVnID0gQ09NUFJFU1NfREVCVUdfTk9ORTsKKwkgIHBhcnNlX2NvbXByZXNzX2RlYnVnX29w dGFyZyAoIm5vbmUiKTsKIAkgIGJyZWFrOwogCiAJY2FzZSBPUFRJT05fREVCVUdfUFJFRklY X01BUDoKQEAgLTExMzYsNiArMTI1NCw4IEBAIFRoaXMgcHJvZ3JhbSBoYXMgYWJzb2x1dGVs eSBubyB3YXJyYW50eS5cbiIpKTsKICAgKnBhcmdjID0gbmV3X2FyZ2M7CiAgICpwYXJndiA9 IG5ld19hcmd2OwogCisgIGZpbmFsaXplX3BhcnNlX2NvbXByZXNzX2RlYnVnX29wdGFyZyAo KTsKKwogI2lmZGVmIG1kX2FmdGVyX3BhcnNlX2FyZ3MKICAgbWRfYWZ0ZXJfcGFyc2VfYXJn cyAoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZ2FzL2FzLmggYi9nYXMvYXMuaAppbmRleCA0 YzVmYTllY2Y3ZC4uMTE1YWYwMTk4MTUgMTAwNjQ0Ci0tLSBhL2dhcy9hcy5oCisrKyBiL2dh cy9hcy5oCkBAIC0zMzEsNiArMzMxLDEwIEBAIENPTU1PTiBpbnQgZmxhZ190cmFkaXRpb25h bF9mb3JtYXQ7CiAvKiBUeXBlIG9mIGNvbXByZXNzZWQgZGVidWcgc2VjdGlvbnMgd2Ugc2hv dWxkIGdlbmVyYXRlLiAgICovCiBDT01NT04gZW51bSBjb21wcmVzc2VkX2RlYnVnX3NlY3Rp b25fdHlwZSBmbGFnX2NvbXByZXNzX2RlYnVnOwogCisvKiBUcnVlIGlmIHdlIHdhbnQgdG8g Z2VuZXJhdGUgY29tcHJlc3NlZCBkZWJ1ZyBzZWN0aW9ucywgZXZlbiBpZiBpdAorICAgZG9l c24ndCBtYWtlIHRoZW0gc21hbGxlci4gICovCitDT01NT04gYm9vbCBmb3JjZV9jb21wcmVz c19kZWJ1ZzsKKwogLyogVFJVRSBpZiAubm90ZS5HTlUtc3RhY2sgc2VjdGlvbiB3aXRoIFNF Q19DT0RFIHNob3VsZCBiZSBjcmVhdGVkICovCiBDT01NT04gaW50IGZsYWdfZXhlY3N0YWNr OwogCmRpZmYgLS1naXQgYS9nYXMvZG9jL2FzLnRleGkgYi9nYXMvZG9jL2FzLnRleGkKaW5k ZXggYmJkZmE0YmZkY2EuLmQyNTU1OTE0MWM3IDEwMDY0NAotLS0gYS9nYXMvZG9jL2FzLnRl eGkKKysrIGIvZ2FzL2RvYy9hcy50ZXhpCkBAIC03MTgsNyArNzE4LDggQEAgQmVnaW4gaW4g YWx0ZXJuYXRlIG1hY3JvIG1vZGUuCiBDb21wcmVzcyBEV0FSRiBkZWJ1ZyBzZWN0aW9ucyB1 c2luZyB6bGliIHdpdGggU0hGX0NPTVBSRVNTRUQgZnJvbSB0aGUKIEVMRiBBQkkuICBUaGUg cmVzdWx0aW5nIG9iamVjdCBmaWxlIG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoIG9sZGVy CiBsaW5rZXJzIGFuZCBvYmplY3QgZmlsZSB1dGlsaXRpZXMuICBOb3RlIGlmIGNvbXByZXNz aW9uIHdvdWxkIG1ha2UgYQotZ2l2ZW4gc2VjdGlvbiBAZW1waHtsYXJnZXJ9IHRoZW4gaXQg aXMgbm90IGNvbXByZXNzZWQuCitnaXZlbiBzZWN0aW9uIEBlbXBoe2xhcmdlcn0gdGhlbiBp dCBpcyBub3QgY29tcHJlc3NlZCwgdW5sZXNzCitAb3B0aW9uey0tY29tcHJlc3MtZGVidWct c2VjdGlvbj1mb3JjZX0gaXMgdXNlZC4KIAogQGlmc2V0IEVMRgogQGNpbmRleCBAc2FtcHst LWNvbXByZXNzLWRlYnVnLXNlY3Rpb25zPX0gb3B0aW9uCkBAIC03MjcsNiArNzI4LDcgQEAg Z2l2ZW4gc2VjdGlvbiBAZW1waHtsYXJnZXJ9IHRoZW4gaXQgaXMgbm90IGNvbXByZXNzZWQu CiBAaXRlbXggLS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9ucz16bGliLWdudQogQGl0ZW14IC0t Y29tcHJlc3MtZGVidWctc2VjdGlvbnM9emxpYi1nYWJpCiBAaXRlbXggLS1jb21wcmVzcy1k ZWJ1Zy1zZWN0aW9ucz16c3RkCitAaXRlbXggLS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9ucz1m b3JjZQogVGhlc2Ugb3B0aW9ucyBjb250cm9sIGhvdyBEV0FSRiBkZWJ1ZyBzZWN0aW9ucyBh cmUgY29tcHJlc3NlZC4KIEBvcHRpb257LS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9ucz1ub25l fSBpcyBlcXVpdmFsZW50IHRvCiBAb3B0aW9uey0tbm9jb21wcmVzcy1kZWJ1Zy1zZWN0aW9u c30uCkBAIC03MzgsNyArNzQwLDExIEBAIHVzaW5nIHRoZSBvYnNvbGV0ZWQgemxpYi1nbnUg Zm9ybWF0LiAgVGhlIGRlYnVnIHNlY3Rpb25zIGFyZSByZW5hbWVkIHRvIGJlZ2luCiB3aXRo IEBzYW1wey56ZGVidWd9LgogQG9wdGlvbnstLWNvbXByZXNzLWRlYnVnLXNlY3Rpb25zPXpz dGR9IGNvbXByZXNzZXMgRFdBUkYgZGVidWcKIHNlY3Rpb25zIHVzaW5nIHpzdGQuICBOb3Rl IC0gaWYgY29tcHJlc3Npb24gd291bGQgYWN0dWFsbHkgbWFrZSBhIHNlY3Rpb24KLUBlbXBo e2xhcmdlcn0sIHRoZW4gaXQgaXMgbm90IGNvbXByZXNzZWQgbm9yIHJlbmFtZWQuCitAZW1w aHtsYXJnZXJ9LCB0aGVuIGl0IGlzIG5vdCBjb21wcmVzc2VkIG5vciByZW5hbWVkLCB1bmxl c3MKK0BvcHRpb257LS1jb21wcmVzcy1kZWJ1Zy1zZWN0aW9uPWZvcmNlfSBpcyB1c2VkLgor QG9wdGlvbnstLWNvbXByZXNzLWRlYnVnLXNlY3Rpb25zPWZvcmNlfSBjb21wcmVzc2VzIERX QVJGIGRlYnVnIHNlY3Rpb25zLAorZXZlbiBpZiB0aGlzIGRvZXMgbm90IHJlZHVjZSBzaXpl LiAgSXQgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhIGZvcm1hdAorc2VsZWN0 aW9uLCBmb3IgaW5zdGFuY2UgQG9wdGlvbnstLWNvbXByZXNzLWRlYnVnLXNlY3Rpb249enN0 ZCtmb3JjZX0uCiAKIEBlbmQgaWZzZXQKIApkaWZmIC0tZ2l0IGEvZ2FzL3dyaXRlLmMgYi9n YXMvd3JpdGUuYwppbmRleCA4MjczYjdhNDJmMS4uMzliY2VhMjNmYWMgMTAwNjQ0Ci0tLSBh L2dhcy93cml0ZS5jCisrKyBiL2dhcy93cml0ZS5jCkBAIC0xNDY1LDcgKzE0NjUsNyBAQCBj b21wcmVzc19kZWJ1ZyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjLCB2b2lkICp4eHggQVRU UklCVVRFX1VOVVNFRCkKICAgZmxhZ3dvcmQgZmxhZ3MgPSBiZmRfc2VjdGlvbl9mbGFncyAo c2VjKTsKIAogICBpZiAoc2VnaW5mbyA9PSBOVUxMCi0gICAgICB8fCB1bmNvbXByZXNzZWRf c2l6ZSA8IDMyCisgICAgICB8fCAoIWZvcmNlX2NvbXByZXNzX2RlYnVnICYmIHVuY29tcHJl c3NlZF9zaXplIDwgMzIpCiAgICAgICB8fCAoZmxhZ3MgJiBTRUNfSEFTX0NPTlRFTlRTKSA9 PSAwKQogICAgIHJldHVybjsKIApAQCAtMTU4Miw3ICsxNTgyLDcgQEAgY29tcHJlc3NfZGVi dWcgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlYywgdm9pZCAqeHh4IEFUVFJJQlVURV9VTlVT RUQpCiAKICAgLyogUFIgYmludXRpbHMvMTgwODc6IElmIGNvbXByZXNzaW9uIGRpZG4ndCBt YWtlIHRoZSBzZWN0aW9uIHNtYWxsZXIsCiAgICAgIGp1c3Qga2VlcCBpdCB1bmNvbXByZXNz ZWQuICAqLwotICBpZiAoY29tcHJlc3NlZF9zaXplID49IHVuY29tcHJlc3NlZF9zaXplKQor ICBpZiAoIWZvcmNlX2NvbXByZXNzX2RlYnVnICYmIGNvbXByZXNzZWRfc2l6ZSA+PSB1bmNv bXByZXNzZWRfc2l6ZSkKICAgICByZXR1cm47CiAKICAgLyogUmVwbGFjZSB0aGUgdW5jb21w cmVzc2VkIGZyYWcgbGlzdCB3aXRoIHRoZSBjb21wcmVzc2VkIGZyYWcgbGlzdC4gICovCi0t IAoyLjM1LjMKCg== --------------wTG50QParcZ3zWEHXtJOpHun--