From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd43.google.com (mail-io1-xd43.google.com [IPv6:2607:f8b0:4864:20::d43]) by sourceware.org (Postfix) with ESMTPS id DE4B5385DC11 for ; Tue, 31 Mar 2020 14:32:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org DE4B5385DC11 Received: by mail-io1-xd43.google.com with SMTP id q128so21849506iof.9 for ; Tue, 31 Mar 2020 07:32:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=bAZzt1PUbEQCPdGVD+6EJZdgYFbFeBK5QMiLPErAJBs=; b=MzPGZomZjualvy+ExOKAKNyhyvAMub0VoZ+DmgjVA13BARM7RWCnyQKTpkHdXhWh9q zLRggB7x9xkFw54UY4+RQZmjSTk8iuwAmw/Fa4NmP4TY6SL8+Ulpd8aFBW7JFS5QPlXw m0ea2CGGJhiboy1XtexOF0cLYuFt97hxUk+zcAeoNOxbyEXeJMSnjcqwz9Lf0EOWblpG EQ7uJ+l3GltGkG0m15a5DH+EkKuOEfjql4DORYgw/4G6loct+aR9Bnf9IyK6vn1eC+xb 0F/DJ6yxKhzH7a22Rpb7QokmHAzgpAL7f3I08ufKbM1k3gGX6Zh9rqkDNi5kOsXXxN7D rRjw== X-Gm-Message-State: ANhLgQ3FqovCiFkPFhPmMckGRWpEmRMEnhWdekXQat9NtTHPoNNJ07Tj UI/WhR5FzHc9R4/nfKNaa3OlfewFW+Ax4zvMnmF6dijf X-Google-Smtp-Source: ADFU+vtsdDsSfx+FJDXsHZ/LYXS9dPYN1aB3f2OnXEuKTC74Oqs1jBUZb6Gd27ZMOv0gV5t6dbOfDLoDgnhvYdUL04o= X-Received: by 2002:a05:6602:2541:: with SMTP id j1mr15913120ioe.37.1585665128314; Tue, 31 Mar 2020 07:32:08 -0700 (PDT) MIME-Version: 1.0 References: <20200331044350.808132-1-hjl.tools@gmail.com> <20200331061751.qjcv7z5z4rbyu45l@gmail.com> In-Reply-To: <20200331061751.qjcv7z5z4rbyu45l@gmail.com> From: "H.J. Lu" Date: Tue, 31 Mar 2020 07:31:32 -0700 Message-ID: Subject: Re: [PATCH] x86: Only allow S - A relocations against absolute symbol To: Fangrui Song Cc: "H.J. Lu via Binutils" Content-Type: multipart/mixed; boundary="000000000000b4ebe205a2276e1c" X-Spam-Status: No, score=-21.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Mar 2020 14:32:11 -0000 --000000000000b4ebe205a2276e1c Content-Type: text/plain; charset="UTF-8" On Mon, Mar 30, 2020 at 11:18 PM Fangrui Song wrote: > > On 2020-03-30, H.J. Lu via Binutils wrote: > >Since value of non-preemptible absolute symbol (SHN_ABS) won't change, > >only S - A relocations against non-preemptible absolute symbol are > >allowed in PIE and shared library. > > Thanks for the patch. At some point we should define some generic > relocation categories (https://reviews.llvm.org/rL266158). For example, > > - R_ABS: R_X86_64_8, R_X86_64_16, R_X86_64_32, R_X86_64_64 > R_AARCH64_ABS16, R_AARCH64_ABS32, R_AARCH64_ABS64 > R_PPC64_ADDR16, R_PPC64_ADDR16_DS, R_PPC64_ADDR16_HA, ... > - R_PCREL: R_X86_64_PC8, R_X86_64_PC16, R_X86_64_PC32, R_X86_64_PC64 > R_AARCH64_PREL16, R_AARCH64_PREL32, R_AARCH64_PREL64 > - R_PLT_PCREL: R_X86_64_PLT32, R_AARCH64_CALL26 > - R_GOT_PCREL: R_X86_64_GOTPCREL, R_X86_64_GOTPCRELX > > Define a property is_preemptible as a more appropriate level of > abstraction for GENERATE_DYNAMIC_RELOCATION_P and some use cases of bfd_link_pic and bfd_link_executable... Current BFD linker delegates most, if not all, of relocation to each backend. There are many similar codes in backends. I am sharing as much codes between i386 and x86-64 backends as I can. This is the patch I am checking in. -- H.J. --000000000000b4ebe205a2276e1c Content-Type: text/x-patch; charset="US-ASCII"; name="0001-x86-Only-allow-S-A-relocations-against-absolute-symb.patch" Content-Disposition: attachment; filename="0001-x86-Only-allow-S-A-relocations-against-absolute-symb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k8fzx3x00 RnJvbSBjMzZlYTIwOTdjODc3ZTMxNmJkMjc4ZmRiMDc2YmMyYmE4ODNjYmE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMzAgTWFyIDIwMjAgMTg6MzY6MzkgLTA3MDAKU3ViamVjdDogW1BBVENIXSB4ODY6IE9u bHkgYWxsb3cgUyArIEEgcmVsb2NhdGlvbnMgYWdhaW5zdCBhYnNvbHV0ZSBzeW1ib2wKClNpbmNl IHZhbHVlIG9mIG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wgKFNITl9BQlMpIHdvbid0 IGNoYW5nZSwKb25seSByZWxvY2F0aW9ucyBhZ2FpbnN0IG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0 ZSBzeW1ib2wsIHdoaWNoIGNhbiBiZQpyZXNvbHZlZCBhcyBhYnNvbHV0ZSB2YWx1ZSArIGFkZGVu ZCwgYXJlIGFsbG93ZWQgaW4gUElFIGFuZCBzaGFyZWQKbGlicmFyeS4KCmJmZC8KCglQUiBsZC8y NTc0OQoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2NoZWNrX3JlbG9jcyk6IENhbGwKCV9iZmRf ZWxmX3g4Nl92YWxpZF9yZWxvY19wLiAgRG9uJ3QgYWxsb2NhdGUgZHluYW1pYyByZWxvY2F0aW9u Cglmb3Igbm9uLXByZWVtcHRpYmxlIGFic29sdXRlIHN5bWJvbC4KCShlbGZfaTM4Nl9yZWxvY2F0 ZV9zZWN0aW9uKTogUGFzcyBzZWMgdG8KCUdFTkVSQVRFX0RZTkFNSUNfUkVMT0NBVElPTl9QLgoJ KiBlbGY2NC14ODYtNjQuYyAoZWxmX3g4Nl82NF9jaGVja19yZWxvY3MpOiBDYWxsCglfYmZkX2Vs Zl94ODZfdmFsaWRfcmVsb2NfcC4gIERvbid0IGFsbG9jYXRlIGR5bmFtaWMgcmVsb2NhdGlvbgoJ Zm9yIG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wuCgkoZWxmX3g4Nl82NF9yZWxvY2F0 ZV9zZWN0aW9uKTogUGFzcyBzZWMgdG8KCUdFTkVSQVRFX0RZTkFNSUNfUkVMT0NBVElPTl9QLgoJ KiBlbGZ4eC14ODYuYyAoX2JmZF9lbGZfeDg2X3ZhbGlkX3JlbG9jX3ApOiBOZXcgZnVuY3Rpb24u CgkqIGVsZnh4LXg4Ni5oIChHRU5FUkFURV9EWU5BTUlDX1JFTE9DQVRJT05fUCk6IEFkZCBhbiBT RUMKCWFyZ3VtZW50LiAgRG9uJ3QgZ2VuZXJhdGUgZHluYW1pYyByZWxvY2F0aW9uIGFnYWluc3QK CW5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wuCgkoX2JmZF9lbGZfeDg2X3ZhbGlkX3Jl bG9jX3ApOiBOZXcuCgpsZC8KCglQUiBsZC8yNTc0OQoJKiB0ZXN0c3VpdGUvbGQtZWxmL2xpbnV4 LXg4Ni5leHA6IFJ1biBsZC8yNTc0OSB0ZXN0cy4KCSogdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5 LTEuYzogTmV3IGZpbGUuCgkqIHRlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYS5jOiBMaWtld2lz ZS4KCSogdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFiLmM6IExpa2V3aXNlLgoJKiB0ZXN0c3Vp dGUvbGQtZWxmL3ByMjU3NDktMWIuZXJyOiBMaWtld2lzZS4KCSogdGVzdHN1aXRlL2xkLWVsZi9w cjI1NzQ5LTFjLmM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMi5jOiBM aWtld2lzZS4KCSogdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTJhLnM6IExpa2V3aXNlLgoJKiB0 ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMmIuczogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS9sZC1l bGYvcHIyNTc0OS5yZDogTGlrZXdpc2UuCi0tLQogYmZkL2VsZjMyLWkzODYuYyAgICAgICAgICAg ICAgICAgICB8ICAxMiArKy0KIGJmZC9lbGY2NC14ODYtNjQuYyAgICAgICAgICAgICAgICAgfCAg MTIgKystCiBiZmQvZWxmeHgteDg2LmMgICAgICAgICAgICAgICAgICAgIHwgIDc3ICsrKysrKysr KysrKysrKysrCiBiZmQvZWxmeHgteDg2LmggICAgICAgICAgICAgICAgICAgIHwgIDEzICsrLQog bGQvdGVzdHN1aXRlL2xkLWVsZi9saW51eC14ODYuZXhwICB8IDEzMyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTEuYyAgICB8ICAxMiAr KysKIGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYS5jICAgfCAgMTEgKysrCiBsZC90ZXN0 c3VpdGUvbGQtZWxmL3ByMjU3NDktMWIuYyAgIHwgICA5ICsrCiBsZC90ZXN0c3VpdGUvbGQtZWxm L3ByMjU3NDktMWIuZXJyIHwgICAzICsKIGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYy5j ICAgfCAgIDkgKysKIGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yLmMgICAgfCAgMTIgKysr CiBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMmEucyAgIHwgICA2ICsrCiBsZC90ZXN0c3Vp dGUvbGQtZWxmL3ByMjU3NDktMmIucyAgIHwgICA3ICsrCiBsZC90ZXN0c3VpdGUvbGQtZWxmL3By MjU3NDkucmQgICAgIHwgICA0ICsKIDE0IGZpbGVzIGNoYW5nZWQsIDMxMiBpbnNlcnRpb25zKCsp LCA4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYv cHIyNTc0OS0xLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3 NDktMWEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0x Yi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFiLmVy cgogY3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xYy5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTIuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yYS5zCiBjcmVhdGUgbW9k ZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTJiLnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDkucmQKCmRpZmYgLS1naXQgYS9iZmQvZWxm MzItaTM4Ni5jIGIvYmZkL2VsZjMyLWkzODYuYwppbmRleCBlYjdlMWY4YjM0Li4wM2NjNDM3ZDM2 IDEwMDY0NAotLS0gYS9iZmQvZWxmMzItaTM4Ni5jCisrKyBiL2JmZC9lbGYzMi1pMzg2LmMKQEAg LTE1MTksNiArMTUxOSw3IEBAIGVsZl9pMzg2X2NoZWNrX3JlbG9jcyAoYmZkICphYmZkLAogICAg ICAgRWxmX0ludGVybmFsX1N5bSAqaXN5bTsKICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAg ICBiZmRfYm9vbGVhbiBzaXplX3JlbG9jOworICAgICAgYmZkX2Jvb2xlYW4gbm9fZHlucmVsb2M7 CiAKICAgICAgIHJfc3ltbmR4ID0gRUxGMzJfUl9TWU0gKHJlbC0+cl9pbmZvKTsKICAgICAgIHJf dHlwZSA9IEVMRjMyX1JfVFlQRSAocmVsLT5yX2luZm8pOwpAQCAtMTU2Nyw2ICsxNTY4LDEwIEBA IGVsZl9pMzg2X2NoZWNrX3JlbG9jcyAoYmZkICphYmZkLAogCSAgICBoID0gKHN0cnVjdCBlbGZf bGlua19oYXNoX2VudHJ5ICopIGgtPnJvb3QudS5pLmxpbms7CiAJfQogCisgICAgICBpZiAoIV9i ZmRfZWxmX3g4Nl92YWxpZF9yZWxvY19wIChzZWMsIGluZm8sIHJlbCwgaCwgaXN5bSwKKwkJCQkg ICAgICAgc3ltdGFiX2hkciwgJm5vX2R5bnJlbG9jKSkKKwlyZXR1cm4gRkFMU0U7CisKICAgICAg IGVoID0gKHN0cnVjdCBlbGZfeDg2X2xpbmtfaGFzaF9lbnRyeSAqKSBoOwogICAgICAgaWYgKGgg IT0gTlVMTCkKIAl7CkBAIC0xODI3LDggKzE4MzIsOSBAQCBlbGZfaTM4Nl9jaGVja19yZWxvY3Mg KGJmZCAqYWJmZCwKIAogCSAgc2l6ZV9yZWxvYyA9IEZBTFNFOwogCWRvX3NpemU6Ci0JICBpZiAo TkVFRF9EWU5BTUlDX1JFTE9DQVRJT05fUCAoaW5mbywgRkFMU0UsIGgsIHNlYywgcl90eXBlLAot CQkJCQkgUl8zODZfMzIpKQorCSAgaWYgKCFub19keW5yZWxvYworCSAgICAgICYmIE5FRURfRFlO QU1JQ19SRUxPQ0FUSU9OX1AgKGluZm8sIEZBTFNFLCBoLCBzZWMsIHJfdHlwZSwKKwkJCQkJICAg IFJfMzg2XzMyKSkKIAkgICAgewogCSAgICAgIHN0cnVjdCBlbGZfZHluX3JlbG9jcyAqcDsKIAkg ICAgICBzdHJ1Y3QgZWxmX2R5bl9yZWxvY3MgKipoZWFkOwpAQCAtMjcwNCw3ICsyNzEwLDcgQEAg ZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbiAoYmZkICpvdXRwdXRfYmZkLAogCSAgICAgIHx8IGlz X3Z4d29ya3NfdGxzKQogCSAgICBicmVhazsKIAotCSAgaWYgKEdFTkVSQVRFX0RZTkFNSUNfUkVM T0NBVElPTl9QIChpbmZvLCBlaCwgcl90eXBlLAorCSAgaWYgKEdFTkVSQVRFX0RZTkFNSUNfUkVM T0NBVElPTl9QIChpbmZvLCBlaCwgcl90eXBlLCBzZWMsCiAJCQkJCSAgICAgRkFMU0UsIHJlc29s dmVkX3RvX3plcm8sCiAJCQkJCSAgICAgKHJfdHlwZSA9PSBSXzM4Nl9QQzMyKSkpCiAJICAgIHsK ZGlmZiAtLWdpdCBhL2JmZC9lbGY2NC14ODYtNjQuYyBiL2JmZC9lbGY2NC14ODYtNjQuYwppbmRl eCA5MGUyNzAyMzM0Li45OTE3NDQ3NDQ5IDEwMDY0NAotLS0gYS9iZmQvZWxmNjQteDg2LTY0LmMK KysrIGIvYmZkL2VsZjY0LXg4Ni02NC5jCkBAIC0xODc5LDYgKzE4NzksNyBAQCBlbGZfeDg2XzY0 X2NoZWNrX3JlbG9jcyAoYmZkICphYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywKICAg ICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICBiZmRfYm9vbGVhbiBzaXplX3JlbG9jOwogICAg ICAgYmZkX2Jvb2xlYW4gY29udmVydGVkX3JlbG9jOworICAgICAgYmZkX2Jvb2xlYW4gbm9fZHlu cmVsb2M7CiAKICAgICAgIHJfc3ltbmR4ID0gaHRhYi0+cl9zeW0gKHJlbC0+cl9pbmZvKTsKICAg ICAgIHJfdHlwZSA9IEVMRjMyX1JfVFlQRSAocmVsLT5yX2luZm8pOwpAQCAtMTkyOCw2ICsxOTI5 LDEwIEBAIGVsZl94ODZfNjRfY2hlY2tfcmVsb2NzIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlu a19pbmZvICppbmZvLAogCSAgICBoID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGgt PnJvb3QudS5pLmxpbms7CiAJfQogCisgICAgICBpZiAoIV9iZmRfZWxmX3g4Nl92YWxpZF9yZWxv Y19wIChzZWMsIGluZm8sIHJlbCwgaCwgaXN5bSwKKwkJCQkgICAgICAgc3ltdGFiX2hkciwgJm5v X2R5bnJlbG9jKSkKKwlyZXR1cm4gRkFMU0U7CisKICAgICAgIC8qIENoZWNrIGludmFsaWQgeDMy IHJlbG9jYXRpb25zLiAgKi8KICAgICAgIGlmICghQUJJXzY0X1AgKGFiZmQpKQogCXN3aXRjaCAo cl90eXBlKQpAQCAtMjI0NSw4ICsyMjUwLDkgQEAgZWxmX3g4Nl82NF9jaGVja19yZWxvY3MgKGJm ZCAqYWJmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sCiAKIAkgIHNpemVfcmVsb2MgPSBG QUxTRTsKIAlkb19zaXplOgotCSAgaWYgKE5FRURfRFlOQU1JQ19SRUxPQ0FUSU9OX1AgKGluZm8s IFRSVUUsIGgsIHNlYywgcl90eXBlLAotCQkJCQkgaHRhYi0+cG9pbnRlcl9yX3R5cGUpKQorCSAg aWYgKCFub19keW5yZWxvYworCSAgICAgICYmIE5FRURfRFlOQU1JQ19SRUxPQ0FUSU9OX1AgKGlu Zm8sIFRSVUUsIGgsIHNlYywgcl90eXBlLAorCQkJCQkgICAgaHRhYi0+cG9pbnRlcl9yX3R5cGUp KQogCSAgICB7CiAJICAgICAgc3RydWN0IGVsZl9keW5fcmVsb2NzICpwOwogCSAgICAgIHN0cnVj dCBlbGZfZHluX3JlbG9jcyAqKmhlYWQ7CkBAIC0zMTc1LDcgKzMxODEsNyBAQCBlbGZfeDg2XzY0 X3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqb3V0cHV0X2JmZCwKIAkJCQkgICAgJiYgKFg4Nl9QQ1JF TF9UWVBFX1AgKHJfdHlwZSkKIAkJCQkJfHwgWDg2X1NJWkVfVFlQRV9QIChyX3R5cGUpKSk7CiAK LQkgIGlmIChHRU5FUkFURV9EWU5BTUlDX1JFTE9DQVRJT05fUCAoaW5mbywgZWgsIHJfdHlwZSwK KwkgIGlmIChHRU5FUkFURV9EWU5BTUlDX1JFTE9DQVRJT05fUCAoaW5mbywgZWgsIHJfdHlwZSwg c2VjLAogCQkJCQkgICAgIG5lZWRfY29weV9yZWxvY19pbl9waWUsCiAJCQkJCSAgICAgcmVzb2x2 ZWRfdG9femVybywgRkFMU0UpKQogCSAgICB7CmRpZmYgLS1naXQgYS9iZmQvZWxmeHgteDg2LmMg Yi9iZmQvZWxmeHgteDg2LmMKaW5kZXggMTA4ZTA0YTE1OC4uMWMwNWNiMjhhYSAxMDA2NDQKLS0t IGEvYmZkL2VsZnh4LXg4Ni5jCisrKyBiL2JmZC9lbGZ4eC14ODYuYwpAQCAtOTUyLDYgKzk1Miw4 MyBAQCBfYmZkX3g4Nl9lbGZfbGlua19jaGVja19yZWxvY3MgKGJmZCAqYWJmZCwgc3RydWN0IGJm ZF9saW5rX2luZm8gKmluZm8pCiAgIHJldHVybiBfYmZkX2VsZl9saW5rX2NoZWNrX3JlbG9jcyAo YWJmZCwgaW5mbyk7CiB9CiAKK2JmZF9ib29sZWFuCitfYmZkX2VsZl94ODZfdmFsaWRfcmVsb2Nf cCAoYXNlY3Rpb24gKmlucHV0X3NlY3Rpb24sCisJCQkgICAgc3RydWN0IGJmZF9saW5rX2luZm8g KmluZm8sCisJCQkgICAgY29uc3QgRWxmX0ludGVybmFsX1JlbGEgKnJlbCwKKwkJCSAgICBzdHJ1 Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCwKKwkJCSAgICBFbGZfSW50ZXJuYWxfU3ltICpzeW0s CisJCQkgICAgRWxmX0ludGVybmFsX1NoZHIgKnN5bXRhYl9oZHIsCisJCQkgICAgYmZkX2Jvb2xl YW4gKm5vX2R5bnJlbG9jX3ApCit7CisgIGJmZF9ib29sZWFuIHZhbGlkX3AgPSBUUlVFOworCisg ICpub19keW5yZWxvY19wID0gRkFMU0U7CisKKyAgLyogQ2hlY2sgSWYgcmVsb2NhdGlvbiBhZ2Fp bnN0IG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBzeW1ib2wgaXMKKyAgICAgdmFsaWQgaW4gUElD LiAgRklYTUU6IENhbid0IHVzZSBTWU1CT0xfUkVGRVJFTkNFU19MT0NBTF9QIHNpbmNlCisgICAg IGl0IG1heSBjYWxsIF9iZmRfZWxmX2xpbmtfaGlkZV9zeW1fYnlfdmVyc2lvbiBhbmQgcmVzdWx0 IGluCisgICAgIGxkLWVsZnZlcnMvIHZlcnMyMSB0ZXN0IGZhaWx1cmUuICAqLworICBpZiAoYmZk X2xpbmtfcGljIChpbmZvKQorICAgICAgJiYgKGggPT0gTlVMTCB8fCBTWU1CT0xfUkVGRVJFTkNF U19MT0NBTCAoaW5mbywgaCkpKQorICAgIHsKKyAgICAgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2Vu ZF9kYXRhICpiZWQ7CisgICAgICB1bnNpZ25lZCBpbnQgcl90eXBlOworCisgICAgICAvKiBTa2lw IG5vbi1hYnNvbHV0ZSBzeW1ib2wuICAqLworICAgICAgaWYgKGgpCisJeworCSAgaWYgKCFiZmRf aXNfYWJzX3N5bWJvbCAoJmgtPnJvb3QpKQorCSAgICByZXR1cm4gdmFsaWRfcDsKKwl9CisgICAg ICBlbHNlIGlmIChzeW0tPnN0X3NobmR4ICE9IFNITl9BQlMpCisJcmV0dXJuIHZhbGlkX3A7CisK KyAgICAgIGJlZCA9IGdldF9lbGZfYmFja2VuZF9kYXRhIChpbnB1dF9zZWN0aW9uLT5vd25lcik7 CisgICAgICByX3R5cGUgPSBFTEYzMl9SX1RZUEUgKHJlbC0+cl9pbmZvKTsKKworICAgICAgLyog T25seSBhbGxvdyBTIC0gQSByZWxvY2F0aW9ucyBhZ2FpbnN0IGFic29sdXRlIHN5bWJvbC4gICov CisgICAgICBpZiAoYmVkLT50YXJnZXRfaWQgPT0gWDg2XzY0X0VMRl9EQVRBKQorCXZhbGlkX3Ag PSAocl90eXBlID09IFJfWDg2XzY0XzY0CisJCSAgIHx8IHJfdHlwZSA9PSBSX1g4Nl82NF8zMgor CQkgICB8fCByX3R5cGUgPT0gUl9YODZfNjRfMTYKKwkJICAgfHwgcl90eXBlID09IFJfWDg2XzY0 XzgpOworICAgICAgZWxzZQorCXZhbGlkX3AgPSAocl90eXBlID09IFJfMzg2XzMyCisJCSAgIHx8 IHJfdHlwZSA9PSBSXzM4Nl8xNgorCQkgICB8fCByX3R5cGUgPT0gUl8zODZfOCk7CisKKyAgICAg IGlmICh2YWxpZF9wKQorCSpub19keW5yZWxvY19wID0gVFJVRTsKKyAgICAgIGVsc2UKKwl7CisJ ICBjb25zdCBjaGFyICpuYW1lOworCSAgYXJlbGVudCBpbnRlcm5hbF9yZWxvYzsKKworCSAgaWYg KCFiZWQtPmVsZl9pbmZvX3RvX2hvd3RvIChpbnB1dF9zZWN0aW9uLT5vd25lciwKKwkJCQkgICAg ICAgJmludGVybmFsX3JlbG9jLAorCQkJCSAgICAgICAoRWxmX0ludGVybmFsX1JlbGEgKikgcmVs KQorCSAgICAgIHx8IGludGVybmFsX3JlbG9jLmhvd3RvID09IE5VTEwpCisJICAgIGFib3J0ICgp OworCisJICBpZiAoaCkKKwkgICAgbmFtZSA9IGgtPnJvb3Qucm9vdC5zdHJpbmc7CisJICBlbHNl CisJICAgIG5hbWUgPSBiZmRfZWxmX3N5bV9uYW1lIChpbnB1dF9zZWN0aW9uLT5vd25lciwgc3lt dGFiX2hkciwKKwkJCQkgICAgIHN5bSwgTlVMTCk7CisJICBpbmZvLT5jYWxsYmFja3MtPmVpbmZv CisJICAgIC8qIHhnZXR0ZXh0OmMtZm9ybWF0ICovCisJICAgIChfKCIlWCVQOiAlcEI6IHJlbG9j YXRpb24gJXMgYWdhaW5zdCBhYnNvbHV0ZSBzeW1ib2wgIgorCSAgICAgICAiYCVzJyBpbiBzZWN0 aW9uIGAlcEEnIGlzIGRpc2FsbG93ZWRcbiIpLAorCSAgICAgaW5wdXRfc2VjdGlvbi0+b3duZXIs IGludGVybmFsX3JlbG9jLmhvd3RvLT5uYW1lLCBuYW1lLAorCSAgICAgaW5wdXRfc2VjdGlvbik7 CisJICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKKwl9CisgICAgfQorCisg IHJldHVybiB2YWxpZF9wOworfQorCiAvKiBTZXQgdGhlIHNpemVzIG9mIHRoZSBkeW5hbWljIHNl Y3Rpb25zLiAgKi8KIAogYmZkX2Jvb2xlYW4KZGlmZiAtLWdpdCBhL2JmZC9lbGZ4eC14ODYuaCBi L2JmZC9lbGZ4eC14ODYuaAppbmRleCBiZWYxN2RjMmJhLi41ZDQ0ZDQxM2VlIDEwMDY0NAotLS0g YS9iZmQvZWxmeHgteDg2LmgKKysrIGIvYmZkL2VsZnh4LXg4Ni5oCkBAIC0xMTksMTEgKzExOSwx NSBAQAogICAgQ29weSBkeW5hbWljIGZ1bmN0aW9uIHBvaW50ZXIgcmVsb2NhdGlvbnMuICBEb24n dCBnZW5lcmF0ZSBkeW5hbWljCiAgICByZWxvY2F0aW9ucyBhZ2FpbnN0IHJlc29sdmVkIHVuZGVm aW5lZCB3ZWFrIHN5bWJvbHMgaW4gUElFLCBleGNlcHQKICAgIHdoZW4gUEMzMl9SRUxPQyBpcyBU UlVFLiAgVW5kZWZpbmVkIHdlYWsgc3ltYm9sIGlzIGJvdW5kIGxvY2FsbHkKLSAgIHdoZW4gUElD IGlzIGZhbHNlLiAgKi8KLSNkZWZpbmUgR0VORVJBVEVfRFlOQU1JQ19SRUxPQ0FUSU9OX1AoSU5G TywgRUgsIFJfVFlQRSwgXAorICAgd2hlbiBQSUMgaXMgZmFsc2UuICBEb24ndCBnZW5lcmF0ZSBk eW5hbWljIHJlbG9jYXRpb25zIGFnYWluc3QKKyAgIG5vbi1wcmVlbXB0aWJsZSBhYnNvbHV0ZSBz eW1ib2wuICAqLworI2RlZmluZSBHRU5FUkFURV9EWU5BTUlDX1JFTE9DQVRJT05fUChJTkZPLCBF SCwgUl9UWVBFLCBTRUMsIFwKIAkJCQkgICAgICBORUVEX0NPUFlfUkVMT0NfSU5fUElFLCBcCiAJ CQkJICAgICAgUkVTT0xWRURfVE9fWkVSTywgUEMzMl9SRUxPQykgXAogICAoKGJmZF9saW5rX3Bp YyAoSU5GTykgXAorICAgICYmICEoYmZkX2lzX2Fic19zZWN0aW9uIChTRUMpIFwKKwkgJiYgKChF SCkgPT0gTlVMTCBcCisJICAgICB8fCBTWU1CT0xfUkVGRVJFTkNFU19MT0NBTCAoSU5GTywgJihF SCktPmVsZikpKSBcCiAgICAgJiYgIShORUVEX0NPUFlfUkVMT0NfSU5fUElFKSBcCiAgICAgJiYg KChFSCkgPT0gTlVMTCBcCiAJfHwgKChFTEZfU1RfVklTSUJJTElUWSAoKEVIKS0+ZWxmLm90aGVy KSA9PSBTVFZfREVGQVVMVCBcCkBAIC02NTIsNiArNjU2LDExIEBAIGV4dGVybiBpbnQgX2JmZF94 ODZfZWxmX2NvbXBhcmVfcmVsb2NzCiBleHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF94ODZfZWxmX2xp bmtfY2hlY2tfcmVsb2NzCiAgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CiAKK2V4 dGVybiBiZmRfYm9vbGVhbiBfYmZkX2VsZl94ODZfdmFsaWRfcmVsb2NfcAorICAoYXNlY3Rpb24g Kiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgY29uc3QgRWxmX0ludGVybmFsX1JlbGEgKiwKKyAg IHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICosIEVsZl9JbnRlcm5hbF9TeW0gKiwgRWxmX0lu dGVybmFsX1NoZHIgKiwKKyAgIGJmZF9ib29sZWFuICopOworCiBleHRlcm4gYmZkX2Jvb2xlYW4g X2JmZF94ODZfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucwogICAoYmZkICosIHN0cnVjdCBiZmRf bGlua19pbmZvICopOwogCmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL2xpbnV4LXg4 Ni5leHAgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL2xpbnV4LXg4Ni5leHAKaW5kZXggNjNhMzIxYjk2 Ni4uMzE2MmFjNmNhNSAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9saW51eC14ODYu ZXhwCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvbGludXgteDg2LmV4cApAQCAtMTE1LDMgKzEx NSwxMzYgQEAgZWxmZWRpdF90ZXN0ICItLWRpc2FibGUteDg2LWZlYXR1cmUgc2hzdGsiIHg4Ni1m ZWF0dXJlLTEgeDg2LWZlYXR1cmUtMWMKIGVsZmVkaXRfdGVzdCAiLS1kaXNhYmxlLXg4Ni1mZWF0 dXJlIGlidCIgeDg2LWZlYXR1cmUtMSB4ODYtZmVhdHVyZS0xZAogZWxmZWRpdF90ZXN0ICItLWVu YWJsZS14ODYtZmVhdHVyZSBpYnQgLS1lbmFibGUteDg2LWZlYXR1cmUgc2hzdGsiIFwKIAkJeDg2 LWZlYXR1cmUtMSB4ODYtZmVhdHVyZS0xZQorCitwcm9jIGNoZWNrX3ByMjU3NDlhIHt0ZXN0bmFt ZSBzcmNmaWxlYSBzcmNmaWxlYiBjZmxhZ3MgbGRmbGFncyBsZGVycm9yfSB7CisgICAgZ2xvYmFs IG9iamNvcHkKKyAgICBnbG9iYWwgc3JjZGlyCisgICAgZ2xvYmFsIHN1YmRpcgorCisgICAgaWYg eyBbaXN0YXJnZXQgImk/ODYtKi1saW51eCoiXSB9IHsKKwlzZXQgb3V0cHV0X2FyY2ggImkzODY6 aTM4NiIKKwlzZXQgb3V0cHV0X3RhcmdldCAiZWxmMzItaTM4NiIKKyAgICB9IGVsc2UgeworCXNl dCBvdXRwdXRfYXJjaCAiaTM4Njp4ODYtNjQiCisJaWYge1tpc3RhcmdldCAieDg2XzY0LSotbGlu dXgqLWdudXgzMiJdfSB7CisJICAgIHNldCBvdXRwdXRfdGFyZ2V0ICJlbGYzMi14ODYtNjQiCisJ fSBlbHNlIHsKKwkgICAgc2V0IG91dHB1dF90YXJnZXQgImVsZjY0LXg4Ni02NCIKKwl9CisgICAg fQorCisgICAgZXhlYyBjcCAkc3JjZGlyLyRzdWJkaXIvJHNyY2ZpbGVhICRzcmNmaWxlYQorICAg IHNldCBwcjI1NzQ5X2JpbiAiJG9iamNvcHkgLUIgJG91dHB1dF9hcmNoIC1JIGJpbmFyeSAtTyAk b3V0cHV0X3RhcmdldCAkc3JjZmlsZWEgdG1wZGlyL3ByMjU3NDktYmluLm8iCisgICAgc2VuZF9s b2cgIiRwcjI1NzQ5X2JpblxuIgorICAgIHNldCBnb3QgW3JlbW90ZV9leGVjIGhvc3QgIiRwcjI1 NzQ5X2JpbiJdCisgICAgaWYgeyBbbGluZGV4ICRnb3QgMF0gIT0gMCB8fCAhW3N0cmluZyBtYXRj aCAiIiBbbGluZGV4ICRnb3QgMV1dIH0gdGhlbiB7CisJc2VuZF9sb2cgIiRnb3RcbiIKKwlmYWls ICJDb252ZXJ0ICRzcmNmaWxlYSB0byAkb3V0cHV0X3RhcmdldCIKKwlyZXR1cm4KKyAgICB9CisK KyAgICBpZiB7IiRsZGVycm9yIiA9PSAiIn0geworCXJ1bl9jY19saW5rX3Rlc3RzIFtsaXN0IFwK KwkgICAgW2xpc3QgXAorCQkiQnVpbGQgJHRlc3RuYW1lICgkbGRmbGFncyAkY2ZsYWdzKSIgXAor CQkiJGxkZmxhZ3MgdG1wZGlyL3ByMjU3NDktYmluLm8iIFwKKwkJIiRjZmxhZ3MiIFwKKwkJW2xp c3QgJHNyY2ZpbGVhICRzcmNmaWxlYl1cCisJCXt7cmVhZGVsZiB7LVdyfSBwcjI1NzQ5LnJkfX0g IFwKKwkJIiR0ZXN0bmFtZSIgXAorCSAgICBdIFwKKwldCisJcnVuX2xkX2xpbmtfZXhlY190ZXN0 cyBbbGlzdCBcCisJICAgIFtsaXN0IFwKKwkJIlJ1biAke3Rlc3RuYW1lfWEgKCRsZGZsYWdzICRj ZmxhZ3MpIiBcCisJCSIkbGRmbGFncyB0bXBkaXIvcHIyNTc0OS1iaW4ubyIgXAorCQkiIiBcCisJ CVtsaXN0ICRzcmNmaWxlYSAkc3JjZmlsZWJdXAorCQkiJHt0ZXN0bmFtZX1hIiBcCisJCSJwYXNz Lm91dCIgXAorCQkiJGNmbGFncyIgXAorCSAgICBdIFwKKwldCisgICAgfSBlbHNlIHsKKwlydW5f Y2NfbGlua190ZXN0cyBbbGlzdCBcCisJICAgIFtsaXN0IFwKKwkJIkJ1aWxkICR0ZXN0bmFtZSAo JGxkZmxhZ3MgJGNmbGFncykiIFwKKwkJIiRsZGZsYWdzIHRtcGRpci9wcjI1NzQ5LWJpbi5vIiBc CisJCSIkY2ZsYWdzIiBcCisJCVtsaXN0ICRzcmNmaWxlYSAkc3JjZmlsZWJdXAorCQlbbGlzdCBb bGlzdCBlcnJvcl9vdXRwdXQgJGxkZXJyb3JdXSBcCisJCSIkdGVzdG5hbWUiIFwKKwkgICAgXSBc CisJXQorICAgIH0KK30KKworY2hlY2tfcHIyNTc0OWEgInByMjU3NDktMWEiICJwcjI1NzQ5LTEu YyIgInByMjU3NDktMWEuYyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVfTERGTEFHUyIgIiIKK2No ZWNrX3ByMjU3NDlhICJwcjI1NzQ5LTFhIiAicHIyNTc0OS0xLmMiICJwcjI1NzQ5LTFhLmMiICIt ZlBJRSIgIi1waWUiICIiCitjaGVja19wcjI1NzQ5YSAicHIyNTc0OS0xYiIgInByMjU3NDktMS5j IiAicHIyNTc0OS0xYi5jIiAiJE5PUElFX0NGTEFHUyIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hl Y2tfcHIyNTc0OWEgInByMjU3NDktMWIiICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWIuYyIgIi1m UElFIiAiLXBpZSIgInByMjU3NDktMWIuZXJyIgorY2hlY2tfcHIyNTc0OWEgInByMjU3NDktMWMi ICJwcjI1NzQ5LTEuYyIgInByMjU3NDktMWMuYyIgIi1mUElDIiAiLXNoYXJlZCIgInByMjU3NDkt MWIuZXJyIgorY2hlY2tfcHIyNTc0OWEgInByMjU3NDktMWQiICJwcjI1NzQ5LTEuYyIgInByMjU3 NDktMWIuYyIgIi1mUElDIiAiLXNoYXJlZCAtV2wsLUJzeW1ib2xpYyIgInByMjU3NDktMWIuZXJy IgorY2hlY2tfcHIyNTc0OWEgInByMjU3NDktMmEiICJwcjI1NzQ5LTIuYyIgInByMjU3NDktMmEu cyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVfTERGTEFHUyIgIiIKK2NoZWNrX3ByMjU3NDlhICJw cjI1NzQ5LTJhIiAicHIyNTc0OS0yLmMiICJwcjI1NzQ5LTJhLnMiICItZlBJRSIgIi1waWUiICIi CitjaGVja19wcjI1NzQ5YSAicHIyNTc0OS0yYiIgInByMjU3NDktMi5jIiAicHIyNTc0OS0yYi5z IiAiJE5PUElFX0NGTEFHUyIgIiROT1BJRV9MREZMQUdTIiAiIgorY2hlY2tfcHIyNTc0OWEgInBy MjU3NDktMmIiICJwcjI1NzQ5LTIuYyIgInByMjU3NDktMmIucyIgIi1mUElFIiAiLXBpZSIgIiIK KworcHJvYyBjaGVja19wcjI1NzQ5YiB7dGVzdG5hbWUgc3JjZmlsZWEgc3JjZmlsZWIgY2ZsYWdz IGxkZmxhZ3N9IHsKKyAgICBnbG9iYWwgb2JqY29weQorICAgIGdsb2JhbCBzcmNkaXIKKyAgICBn bG9iYWwgc3ViZGlyCisKKyAgICBpZiB7IFtpc3RhcmdldCAiaT84Ni0qLWxpbnV4KiJdIH0gewor CXNldCBvdXRwdXRfYXJjaCAiaTM4NjppMzg2IgorCXNldCBvdXRwdXRfdGFyZ2V0ICJlbGYzMi1p Mzg2IgorICAgIH0gZWxzZSB7CisJc2V0IG91dHB1dF9hcmNoICJpMzg2Ong4Ni02NCIKKwlpZiB7 W2lzdGFyZ2V0ICJ4ODZfNjQtKi1saW51eCotZ251eDMyIl19IHsKKwkgICAgc2V0IG91dHB1dF90 YXJnZXQgImVsZjMyLXg4Ni02NCIKKwl9IGVsc2UgeworCSAgICBzZXQgb3V0cHV0X3RhcmdldCAi ZWxmNjQteDg2LTY0IgorCX0KKyAgICB9CisKKyAgICBleGVjIGNwICRzcmNkaXIvJHN1YmRpci8k c3JjZmlsZWEgJHNyY2ZpbGVhCisgICAgc2V0IHByMjU3NDlfYmluICIkb2JqY29weSAtQiAkb3V0 cHV0X2FyY2ggLUkgYmluYXJ5IC1PICRvdXRwdXRfdGFyZ2V0ICRzcmNmaWxlYSB0bXBkaXIvcHIy NTc0OS1iaW4ubyIKKyAgICBzZW5kX2xvZyAiJHByMjU3NDlfYmluXG4iCisgICAgc2V0IGdvdCBb cmVtb3RlX2V4ZWMgaG9zdCAiJHByMjU3NDlfYmluIl0KKyAgICBpZiB7IFtsaW5kZXggJGdvdCAw XSAhPSAwIHx8ICFbc3RyaW5nIG1hdGNoICIiIFtsaW5kZXggJGdvdCAxXV0gfSB0aGVuIHsKKwlz ZW5kX2xvZyAiJGdvdFxuIgorCWZhaWwgIkNvbnZlcnQgJHNyY2ZpbGVhIHRvICRvdXRwdXRfdGFy Z2V0IgorCXJldHVybgorICAgIH0KKworICAgIHJ1bl9jY19saW5rX3Rlc3RzIFtsaXN0IFwKKwlb bGlzdCBcCisJICAgICJCdWlsZCBsaWIke3Rlc3RuYW1lfS5zbyIgXAorCSAgICAiLXNoYXJlZCB0 bXBkaXIvcHIyNTc0OS1iaW4ubyIgXAorCSAgICAiLWZQSUMiIFwKKwkgICAgW2xpc3QgJHNyY2Zp bGViXSBcCisJICAgIHt7cmVhZGVsZiB7LVdyfSBwcjI1NzQ5LnJkfX0gIFwKKwkgICAgImxpYiR7 dGVzdG5hbWV9LnNvIiBcCisJXSBcCisgICAgXQorICAgIHJ1bl9sZF9saW5rX2V4ZWNfdGVzdHMg W2xpc3QgXAorCVtsaXN0IFwKKwkgICAgIlJ1biAke3Rlc3RuYW1lfWIgKCRsZGZsYWdzICRjZmxh Z3MpIiBcCisJICAgICIkbGRmbGFncyAtV2wsLS1uby1hcy1uZWVkZWQgdG1wZGlyL2xpYiR7dGVz dG5hbWV9LnNvIiBcCisJICAgICIiIFwKKwkgICAgW2xpc3QgJHNyY2ZpbGVhXVwKKwkgICAgIiR7 dGVzdG5hbWV9YiIgXAorCSAgICAicGFzcy5vdXQiIFwKKwkgICAgIiRjZmxhZ3MiIFwKKwldIFwK KyAgICBdCit9CisKK2NoZWNrX3ByMjU3NDliICJwcjI1NzQ5LTFhIiAicHIyNTc0OS0xLmMiICJw cjI1NzQ5LTFhLmMiICIkTk9QSUVfQ0ZMQUdTIiAiJE5PUElFX0xERkxBR1MiCitjaGVja19wcjI1 NzQ5YiAicHIyNTc0OS0xYSIgInByMjU3NDktMS5jIiAicHIyNTc0OS0xYS5jIiAiLWZQSUUiICIt cGllIgorY2hlY2tfcHIyNTc0OWIgInByMjU3NDktMWIiICJwcjI1NzQ5LTEuYyIgInByMjU3NDkt MWIuYyIgIiROT1BJRV9DRkxBR1MiICIkTk9QSUVfTERGTEFHUyIKK2NoZWNrX3ByMjU3NDliICJw cjI1NzQ5LTFiIiAicHIyNTc0OS0xLmMiICJwcjI1NzQ5LTFiLmMiICItZlBJRSIgIi1waWUiCitj aGVja19wcjI1NzQ5YiAicHIyNTc0OS0yYSIgInByMjU3NDktMi5jIiAicHIyNTc0OS0yYS5zIiAi JE5PUElFX0NGTEFHUyIgIiROT1BJRV9MREZMQUdTIgorY2hlY2tfcHIyNTc0OWIgInByMjU3NDkt MmEiICJwcjI1NzQ5LTIuYyIgInByMjU3NDktMmEucyIgIi1mUElFIiAiLXBpZSIKK2NoZWNrX3By MjU3NDliICJwcjI1NzQ5LTJiIiAicHIyNTc0OS0yLmMiICJwcjI1NzQ5LTJiLnMiICIkTk9QSUVf Q0ZMQUdTIiAiJE5PUElFX0xERkxBR1MiCitjaGVja19wcjI1NzQ5YiAicHIyNTc0OS0yYiIgInBy MjU3NDktMi5jIiAicHIyNTc0OS0yYi5zIiAiLWZQSUUiICItcGllIgpkaWZmIC0tZ2l0IGEvbGQv dGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTEuYyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0 OS0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWIzN2FmMDhjNgot LS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0xLmMKQEAgLTAs MCArMSwxMiBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8YmZkX3N0ZGludC5oPgor CitleHRlcm4gaW50cHRyX3Qgc2l6ZSAodm9pZCk7CisKK2ludAorbWFpbiAoKQoreworICBpZiAo c2l6ZSAoKSA9PSAxNDcpCisgICAgcHJpbnRmICgiUEFTU1xuIik7CisgIHJldHVybiAwOworfQpk aWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFhLmMgYi9sZC90ZXN0c3Vp dGUvbGQtZWxmL3ByMjU3NDktMWEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi43NzU2MjNiOGM5Ci0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9w cjI1NzQ5LTFhLmMKQEAgLTAsMCArMSwxMSBAQAorI2luY2x1ZGUgPGJmZF9zdGRpbnQuaD4KKwor ZXh0ZXJuIHZvaWQgKl9iaW5hcnlfcHIyNTc0OV8xX2Nfc3RhcnQ7CitleHRlcm4gdm9pZCAqX2Jp bmFyeV9wcjI1NzQ5XzFfY19lbmQ7CisKK2ludHB0cl90CitzaXplICh2b2lkKQoreworICByZXR1 cm4gKChpbnRwdHJfdCkgJl9iaW5hcnlfcHIyNTc0OV8xX2NfZW5kCisJICAtIChpbnRwdHJfdCkg Jl9iaW5hcnlfcHIyNTc0OV8xX2Nfc3RhcnQpOworfQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRl L2xkLWVsZi9wcjI1NzQ5LTFiLmMgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWIuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mMDJhNDA4NzAwCi0tLSAvZGV2 L251bGwKKysrIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjI1NzQ5LTFiLmMKQEAgLTAsMCArMSw5 IEBACisjaW5jbHVkZSA8YmZkX3N0ZGludC5oPgorCitleHRlcm4gdm9pZCAqX2JpbmFyeV9wcjI1 NzQ5XzFfY19zaXplOworCitpbnRwdHJfdAorc2l6ZSAodm9pZCkKK3sKKyAgcmV0dXJuIChpbnRw dHJfdCkgJl9iaW5hcnlfcHIyNTc0OV8xX2Nfc2l6ZTsKK30KZGlmZiAtLWdpdCBhL2xkL3Rlc3Rz dWl0ZS9sZC1lbGYvcHIyNTc0OS0xYi5lcnIgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDkt MWIuZXJyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmJiMzg5MTcyZjEK LS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWIuZXJyCkBA IC0wLDAgKzEsMyBAQAorIy4uLgorLio6IC4qIGFnYWluc3QgYWJzb2x1dGUgc3ltYm9sIGBfYmlu YXJ5X3ByMjU3NDlfMV9jX3NpemUnIC4qIGlzIGRpc2FsbG93ZWQKKyNwYXNzCmRpZmYgLS1naXQg YS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWMuYyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYv cHIyNTc0OS0xYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYyODQ3 ZDdmNjIKLS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMWMu YwpAQCAtMCwwICsxLDkgQEAKKyNpbmNsdWRlIDxiZmRfc3RkaW50Lmg+CisKK2V4dGVybiB2b2lk ICpfYmluYXJ5X3ByMjU3NDlfMV9jX3NpemUgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkoImhp ZGRlbiIpKSk7CisKK2ludHB0cl90CitzaXplICh2b2lkKQoreworICByZXR1cm4gKGludHB0cl90 KSAmX2JpbmFyeV9wcjI1NzQ5XzFfY19zaXplOworfQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRl L2xkLWVsZi9wcjI1NzQ5LTIuYyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODIwYmViYzE2NwotLS0gL2Rldi9u dWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yLmMKQEAgLTAsMCArMSwxMiBA QAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8YmZkX3N0ZGludC5oPgorCitleHRlcm4g aW50cHRyX3Qgc2l6ZTsKKworaW50CittYWluICgpCit7CisgIGlmIChzaXplID09IDEzNykKKyAg ICBwcmludGYgKCJQQVNTXG4iKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9sZC90ZXN0 c3VpdGUvbGQtZWxmL3ByMjU3NDktMmEucyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0y YS5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmRmNDg2ZmUzMjkKLS0t IC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDktMmEucwpAQCAtMCww ICsxLDYgQEAKKwkuZGF0YQorCS5nbG9ibAlzaXplCisJLnR5cGUJc2l6ZSwgJW9iamVjdAorc2l6 ZToKKwkuZGMuYQlfYmluYXJ5X3ByMjU3NDlfMl9jX3NpemUKKwkuc2l6ZSBzaXplLCAuLXNpemUK ZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0OS0yYi5zIGIvbGQvdGVzdHN1 aXRlL2xkLWVsZi9wcjI1NzQ5LTJiLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uYmE4MmM0NTBiYwotLS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYv cHIyNTc0OS0yYi5zCkBAIC0wLDAgKzEsNyBAQAorCS5kYXRhCisJLmhpZGRlbiBfYmluYXJ5X3By MjU3NDlfMl9jX3NpemUKKwkuZ2xvYmwJc2l6ZQorCS50eXBlCXNpemUsICVvYmplY3QKK3NpemU6 CisJLmRjLmEJX2JpbmFyeV9wcjI1NzQ5XzJfY19zaXplCisJLnNpemUgc2l6ZSwgLi1zaXplCmRp ZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMjU3NDkucmQgYi9sZC90ZXN0c3VpdGUv bGQtZWxmL3ByMjU3NDkucmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u ZmJjNjhiZjI2OAotLS0gL2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIyNTc0 OS5yZApAQCAtMCwwICsxLDQgQEAKKyNmYWlsaWYKKyMuLi4KK1swLTlhLWYgXStSXy4qX05PTkUu KgorIy4uLgotLSAKMi4yNS4xCgo= --000000000000b4ebe205a2276e1c--