From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 203BBC2BB9A for ; Thu, 17 Dec 2020 19:30:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DB370239FC for ; Thu, 17 Dec 2020 19:30:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728194AbgLQTa3 (ORCPT ); Thu, 17 Dec 2020 14:30:29 -0500 Received: from mail.kernel.org ([198.145.29.99]:49418 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725468AbgLQTa2 (ORCPT ); Thu, 17 Dec 2020 14:30:28 -0500 X-Gm-Message-State: AOAM531jhmcd5QMKEaZnxNxiAcD2kX0u3SAYaHxgGm+buQuwC7p9mMgX cy7GwwHOhkBCsIX0MoYFY9FxgWBDvR4BiObGM9Y= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1608233387; bh=HRY8YeVLSHAvObD2gzi1HyscgTfOcaMV6u6OwjX/7Vo=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=tM3fpjtJciyI5a8jL4IU2Yi9/zPHcWryWiiJczOp7eL2q4Ygc3zJqn/a2+DUhntrJ BELyh8lz0GqKdx3emD/xgKVXlp/AQYf2KYJt/+74jcEk8kXHQ74S5G8MgabaLzYYYN zfTGYOmRAN45wSNaoTGJP1xOOyUI1yAg+gcMPsBV/vQVF190pPHUAb3Fv7EmXlLRSR Vfund6xxHGGiwurZ6MGcAWdOr4IGw/MBpiH36Tr7dlwKrxoMkylSOZjwc0DnbfxBDp ADmPcigMY+umWLN2ETAKhygS9rK8ezLQ/4zUysQzlFU+eLtIWfufHLPkR9DlIjYIHZ 9OsGggSdj1UbA== X-Google-Smtp-Source: ABdhPJw2VdBQyPZ697Di5+5hmP4B46nBT/YDOuvakmMna4r2mnr1HGQCYk9mcrj4BtUaYcvzpnxWhv9ew4Z4L6Yc41o= X-Received: by 2002:a05:6830:1c24:: with SMTP id f4mr362030ote.108.1608233386622; Thu, 17 Dec 2020 11:29:46 -0800 (PST) MIME-Version: 1.0 References: <20201217004051.1247544-1-ndesaulniers@google.com> In-Reply-To: <20201217004051.1247544-1-ndesaulniers@google.com> From: Ard Biesheuvel Date: Thu, 17 Dec 2020 20:29:35 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] arm64: link with -z norelro for LLD or aarch64-elf To: Nick Desaulniers Cc: Catalin Marinas , Will Deacon , kernel-team , Peter Smith , clang-built-linux , stable , =?UTF-8?B?RsSBbmctcnXDrCBTw7JuZw==?= , Quentin Perret , Alan Modra , "kernelci . org bot" , Linux ARM , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 17 Dec 2020 at 01:41, Nick Desaulniers wr= ote: > > With newer GNU binutils, linking with BFD produces warnings for vmlinux: > aarch64-linux-gnu-ld: warning: -z norelro ignored > > BFD can produce this warning when the target emulation mode does not > support RELRO relocation types, and -z relro or -z norelro is passed. > RELRO is not a relocation type, it is a type of program header which we might simply ignore, if it weren't for the fact that it can only be emitted if the layout of the sections adheres to certain rules (and ours doesn't), and we get an error otherwise. It amounts to implicit __ro_after_init annotations for statically initialized const pointers, but given that we don't compile with -fpie, those const pointers reside in .rodata already, so RELRO adds no value for us. > Alan Modra clarifies: > The default linker emulation for an aarch64-linux ld.bfd is > -maarch64linux, the default for an aarch64-elf linker is > -maarch64elf. They are not equivalent. If you choose -maarch64elf > you get an emulation that doesn't support -z relro. > > The ARCH=3Darm64 kernel prefers -maarch64elf, but may fall back to > -maarch64linux based on the toolchain configuration. > > LLD will always create RELRO relocation types regardless of target > emulation. > RELRO program header > To avoid the above warning when linking with BFD, pass -z norelro only > when linking with LLD or with -maarch64linux. > > Cc: Alan Modra > Cc: Ard Biesheuvel > Cc: F=C4=81ng-ru=C3=AC S=C3=B2ng > Fixes: 3b92fa7485eb ("arm64: link with -z norelro regardless of CONFIG_RE= LOCATABLE") > Reported-by: kernelci.org bot > Reported-by: Quentin Perret > Signed-off-by: Nick Desaulniers With mentions of 'RELRO relocation types' fixed: Acked-by: Ard Biesheuvel > --- > arch/arm64/Makefile | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile > index 6be9b3750250..90309208bb28 100644 > --- a/arch/arm64/Makefile > +++ b/arch/arm64/Makefile > @@ -10,7 +10,7 @@ > # > # Copyright (C) 1995-2001 by Russell King > > -LDFLAGS_vmlinux :=3D--no-undefined -X -z norelro > +LDFLAGS_vmlinux :=3D--no-undefined -X > > ifeq ($(CONFIG_RELOCATABLE), y) > # Pass --no-apply-dynamic-relocs to restore pre-binutils-2.27 behaviour > @@ -115,16 +115,20 @@ KBUILD_CPPFLAGS +=3D -mbig-endian > CHECKFLAGS +=3D -D__AARCH64EB__ > # Prefer the baremetal ELF build target, but not all toolchains include > # it so fall back to the standard linux version if needed. > -KBUILD_LDFLAGS +=3D -EB $(call ld-option, -maarch64elfb, -maarch64linuxb= ) > +KBUILD_LDFLAGS +=3D -EB $(call ld-option, -maarch64elfb, -maarch64linuxb= -z norelro) > UTS_MACHINE :=3D aarch64_be > else > KBUILD_CPPFLAGS +=3D -mlittle-endian > CHECKFLAGS +=3D -D__AARCH64EL__ > # Same as above, prefer ELF but fall back to linux target if needed. > -KBUILD_LDFLAGS +=3D -EL $(call ld-option, -maarch64elf, -maarch64linux) > +KBUILD_LDFLAGS +=3D -EL $(call ld-option, -maarch64elf, -maarch64linux -= z norelro) > UTS_MACHINE :=3D aarch64 > endif > > +ifeq ($(CONFIG_LD_IS_LLD), y) > +KBUILD_LDFLAGS +=3D -z norelro > +endif > + > CHECKFLAGS +=3D -D__aarch64__ > > ifeq ($(CONFIG_DYNAMIC_FTRACE_WITH_REGS),y) > -- > 2.29.2.684.gfbc64c5ab5-goog > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A17ADC4361B for ; Thu, 17 Dec 2020 19:31:17 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 531B7239EE for ; Thu, 17 Dec 2020 19:31:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 531B7239EE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=MSv/bkMCdnAe2R2s+9PylHPbzaH4v/YBkQZaJlTsUjs=; b=JT0pMWcAcPKMM3JLmyxdxMj0y 4oUSSeqL86CZQggvl4ueVTQGaqyvwOOPgek4w2cN0GxnxogyMp8G6987M12oZ146cYwOXJpkv+PbU D/uOc/AWp9EhVtgu8Fp9uDdclorig0gifNn1+HzKd7Re7F9Upu6WaDwiQS+dvI7PZLotYUDHtnb00 jc/B4CYAUB7/zPfcrQ/tF8WhTn1UkjdUGMxtpojb9C+Ra5IGsa1CmGUEqT0rP8YqxAjsvk9vf49kL x22LDyTccrkMZmBaP0rquOyoSn44W30fXC4NLYcy29OzUwNdiHm38XvzsgSkX3txdWgaFd2VNLd+i /V+v+uA0A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kpyyF-0005fL-Nd; Thu, 17 Dec 2020 19:29:51 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kpyyC-0005en-Rb for linux-arm-kernel@lists.infradead.org; Thu, 17 Dec 2020 19:29:49 +0000 X-Gm-Message-State: AOAM533eEK8qMJJx1xWrUTaEpZyDoRI1AEfsOkKtzhqF3Xc2k6lxdSff pmNj3zKHXmjwKzX5FU+ZDS8xNYoBrkFjd8Xvl4o= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1608233387; bh=HRY8YeVLSHAvObD2gzi1HyscgTfOcaMV6u6OwjX/7Vo=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=tM3fpjtJciyI5a8jL4IU2Yi9/zPHcWryWiiJczOp7eL2q4Ygc3zJqn/a2+DUhntrJ BELyh8lz0GqKdx3emD/xgKVXlp/AQYf2KYJt/+74jcEk8kXHQ74S5G8MgabaLzYYYN zfTGYOmRAN45wSNaoTGJP1xOOyUI1yAg+gcMPsBV/vQVF190pPHUAb3Fv7EmXlLRSR Vfund6xxHGGiwurZ6MGcAWdOr4IGw/MBpiH36Tr7dlwKrxoMkylSOZjwc0DnbfxBDp ADmPcigMY+umWLN2ETAKhygS9rK8ezLQ/4zUysQzlFU+eLtIWfufHLPkR9DlIjYIHZ 9OsGggSdj1UbA== X-Google-Smtp-Source: ABdhPJw2VdBQyPZ697Di5+5hmP4B46nBT/YDOuvakmMna4r2mnr1HGQCYk9mcrj4BtUaYcvzpnxWhv9ew4Z4L6Yc41o= X-Received: by 2002:a05:6830:1c24:: with SMTP id f4mr362030ote.108.1608233386622; Thu, 17 Dec 2020 11:29:46 -0800 (PST) MIME-Version: 1.0 References: <20201217004051.1247544-1-ndesaulniers@google.com> In-Reply-To: <20201217004051.1247544-1-ndesaulniers@google.com> From: Ard Biesheuvel Date: Thu, 17 Dec 2020 20:29:35 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] arm64: link with -z norelro for LLD or aarch64-elf To: Nick Desaulniers X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201217_142949_016315_5E78F819 X-CRM114-Status: GOOD ( 19.78 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "kernelci . org bot" , =?UTF-8?B?RsSBbmctcnXDrCBTw7JuZw==?= , Will Deacon , Quentin Perret , Catalin Marinas , Alan Modra , Peter Smith , stable , Linux Kernel Mailing List , clang-built-linux , kernel-team , Linux ARM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVGh1LCAxNyBEZWMgMjAyMCBhdCAwMTo0MSwgTmljayBEZXNhdWxuaWVycyA8bmRlc2F1bG5p ZXJzQGdvb2dsZS5jb20+IHdyb3RlOgo+Cj4gV2l0aCBuZXdlciBHTlUgYmludXRpbHMsIGxpbmtp bmcgd2l0aCBCRkQgcHJvZHVjZXMgd2FybmluZ3MgZm9yIHZtbGludXg6Cj4gYWFyY2g2NC1saW51 eC1nbnUtbGQ6IHdhcm5pbmc6IC16IG5vcmVscm8gaWdub3JlZAo+Cj4gQkZEIGNhbiBwcm9kdWNl IHRoaXMgd2FybmluZyB3aGVuIHRoZSB0YXJnZXQgZW11bGF0aW9uIG1vZGUgZG9lcyBub3QKPiBz dXBwb3J0IFJFTFJPIHJlbG9jYXRpb24gdHlwZXMsIGFuZCAteiByZWxybyBvciAteiBub3JlbHJv IGlzIHBhc3NlZC4KPgoKUkVMUk8gaXMgbm90IGEgcmVsb2NhdGlvbiB0eXBlLCBpdCBpcyBhIHR5 cGUgb2YgcHJvZ3JhbSBoZWFkZXIgd2hpY2gKd2UgbWlnaHQgc2ltcGx5IGlnbm9yZSwgaWYgaXQg d2VyZW4ndCBmb3IgdGhlIGZhY3QgdGhhdCBpdCBjYW4gb25seSBiZQplbWl0dGVkIGlmIHRoZSBs YXlvdXQgb2YgdGhlIHNlY3Rpb25zIGFkaGVyZXMgdG8gY2VydGFpbiBydWxlcyAoYW5kCm91cnMg ZG9lc24ndCksIGFuZCB3ZSBnZXQgYW4gZXJyb3Igb3RoZXJ3aXNlLgoKSXQgYW1vdW50cyB0byBp bXBsaWNpdCBfX3JvX2FmdGVyX2luaXQgYW5ub3RhdGlvbnMgZm9yIHN0YXRpY2FsbHkKaW5pdGlh bGl6ZWQgY29uc3QgcG9pbnRlcnMsIGJ1dCBnaXZlbiB0aGF0IHdlIGRvbid0IGNvbXBpbGUgd2l0 aAotZnBpZSwgdGhvc2UgY29uc3QgcG9pbnRlcnMgcmVzaWRlIGluIC5yb2RhdGEgYWxyZWFkeSwg c28gUkVMUk8gYWRkcwpubyB2YWx1ZSBmb3IgdXMuCgo+IEFsYW4gTW9kcmEgY2xhcmlmaWVzOgo+ ICAgVGhlIGRlZmF1bHQgbGlua2VyIGVtdWxhdGlvbiBmb3IgYW4gYWFyY2g2NC1saW51eCBsZC5i ZmQgaXMKPiAgIC1tYWFyY2g2NGxpbnV4LCB0aGUgZGVmYXVsdCBmb3IgYW4gYWFyY2g2NC1lbGYg bGlua2VyIGlzCj4gICAtbWFhcmNoNjRlbGYuICBUaGV5IGFyZSBub3QgZXF1aXZhbGVudC4gIElm IHlvdSBjaG9vc2UgLW1hYXJjaDY0ZWxmCj4gICB5b3UgZ2V0IGFuIGVtdWxhdGlvbiB0aGF0IGRv ZXNuJ3Qgc3VwcG9ydCAteiByZWxyby4KPgo+IFRoZSBBUkNIPWFybTY0IGtlcm5lbCBwcmVmZXJz IC1tYWFyY2g2NGVsZiwgYnV0IG1heSBmYWxsIGJhY2sgdG8KPiAtbWFhcmNoNjRsaW51eCBiYXNl ZCBvbiB0aGUgdG9vbGNoYWluIGNvbmZpZ3VyYXRpb24uCj4KPiBMTEQgd2lsbCBhbHdheXMgY3Jl YXRlIFJFTFJPIHJlbG9jYXRpb24gdHlwZXMgcmVnYXJkbGVzcyBvZiB0YXJnZXQKPiBlbXVsYXRp b24uCj4KClJFTFJPIHByb2dyYW0gaGVhZGVyCgo+IFRvIGF2b2lkIHRoZSBhYm92ZSB3YXJuaW5n IHdoZW4gbGlua2luZyB3aXRoIEJGRCwgcGFzcyAteiBub3JlbHJvIG9ubHkKPiB3aGVuIGxpbmtp bmcgd2l0aCBMTEQgb3Igd2l0aCAtbWFhcmNoNjRsaW51eC4KPgo+IENjOiBBbGFuIE1vZHJhIDxh bW9kcmFAZ21haWwuY29tPgo+IENjOiBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPgo+ IENjOiBGxIFuZy1ydcOsIFPDsm5nIDxtYXNrcmF5QGdvb2dsZS5jb20+Cj4gRml4ZXM6IDNiOTJm YTc0ODVlYiAoImFybTY0OiBsaW5rIHdpdGggLXogbm9yZWxybyByZWdhcmRsZXNzIG9mIENPTkZJ R19SRUxPQ0FUQUJMRSIpCj4gUmVwb3J0ZWQtYnk6IGtlcm5lbGNpLm9yZyBib3QgPGJvdEBrZXJu ZWxjaS5vcmc+Cj4gUmVwb3J0ZWQtYnk6IFF1ZW50aW4gUGVycmV0IDxxcGVycmV0QGdvb2dsZS5j b20+Cj4gU2lnbmVkLW9mZi1ieTogTmljayBEZXNhdWxuaWVycyA8bmRlc2F1bG5pZXJzQGdvb2ds ZS5jb20+CgpXaXRoIG1lbnRpb25zIG9mICdSRUxSTyByZWxvY2F0aW9uIHR5cGVzJyBmaXhlZDoK CkFja2VkLWJ5OiBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPgoKCgo+IC0tLQo+ICBh cmNoL2FybTY0L01ha2VmaWxlIHwgMTAgKysrKysrKy0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNyBp bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv TWFrZWZpbGUgYi9hcmNoL2FybTY0L01ha2VmaWxlCj4gaW5kZXggNmJlOWIzNzUwMjUwLi45MDMw OTIwOGJiMjggMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm02NC9NYWtlZmlsZQo+ICsrKyBiL2FyY2gv YXJtNjQvTWFrZWZpbGUKPiBAQCAtMTAsNyArMTAsNyBAQAo+ICAjCj4gICMgQ29weXJpZ2h0IChD KSAxOTk1LTIwMDEgYnkgUnVzc2VsbCBLaW5nCj4KPiAtTERGTEFHU192bWxpbnV4ICAgICAgICA6 PS0tbm8tdW5kZWZpbmVkIC1YIC16IG5vcmVscm8KPiArTERGTEFHU192bWxpbnV4ICAgICAgICA6 PS0tbm8tdW5kZWZpbmVkIC1YCj4KPiAgaWZlcSAoJChDT05GSUdfUkVMT0NBVEFCTEUpLCB5KQo+ ICAjIFBhc3MgLS1uby1hcHBseS1keW5hbWljLXJlbG9jcyB0byByZXN0b3JlIHByZS1iaW51dGls cy0yLjI3IGJlaGF2aW91cgo+IEBAIC0xMTUsMTYgKzExNSwyMCBAQCBLQlVJTERfQ1BQRkxBR1Mg ICArPSAtbWJpZy1lbmRpYW4KPiAgQ0hFQ0tGTEFHUyAgICAgKz0gLURfX0FBUkNINjRFQl9fCj4g ICMgUHJlZmVyIHRoZSBiYXJlbWV0YWwgRUxGIGJ1aWxkIHRhcmdldCwgYnV0IG5vdCBhbGwgdG9v bGNoYWlucyBpbmNsdWRlCj4gICMgaXQgc28gZmFsbCBiYWNrIHRvIHRoZSBzdGFuZGFyZCBsaW51 eCB2ZXJzaW9uIGlmIG5lZWRlZC4KPiAtS0JVSUxEX0xERkxBR1MgKz0gLUVCICQoY2FsbCBsZC1v cHRpb24sIC1tYWFyY2g2NGVsZmIsIC1tYWFyY2g2NGxpbnV4YikKPiArS0JVSUxEX0xERkxBR1Mg Kz0gLUVCICQoY2FsbCBsZC1vcHRpb24sIC1tYWFyY2g2NGVsZmIsIC1tYWFyY2g2NGxpbnV4YiAt eiBub3JlbHJvKQo+ICBVVFNfTUFDSElORSAgICA6PSBhYXJjaDY0X2JlCj4gIGVsc2UKPiAgS0JV SUxEX0NQUEZMQUdTICAgICAgICArPSAtbWxpdHRsZS1lbmRpYW4KPiAgQ0hFQ0tGTEFHUyAgICAg Kz0gLURfX0FBUkNINjRFTF9fCj4gICMgU2FtZSBhcyBhYm92ZSwgcHJlZmVyIEVMRiBidXQgZmFs bCBiYWNrIHRvIGxpbnV4IHRhcmdldCBpZiBuZWVkZWQuCj4gLUtCVUlMRF9MREZMQUdTICs9IC1F TCAkKGNhbGwgbGQtb3B0aW9uLCAtbWFhcmNoNjRlbGYsIC1tYWFyY2g2NGxpbnV4KQo+ICtLQlVJ TERfTERGTEFHUyArPSAtRUwgJChjYWxsIGxkLW9wdGlvbiwgLW1hYXJjaDY0ZWxmLCAtbWFhcmNo NjRsaW51eCAteiBub3JlbHJvKQo+ICBVVFNfTUFDSElORSAgICA6PSBhYXJjaDY0Cj4gIGVuZGlm Cj4KPiAraWZlcSAoJChDT05GSUdfTERfSVNfTExEKSwgeSkKPiArS0JVSUxEX0xERkxBR1MgKz0g LXogbm9yZWxybwo+ICtlbmRpZgo+ICsKPiAgQ0hFQ0tGTEFHUyAgICAgKz0gLURfX2FhcmNoNjRf Xwo+Cj4gIGlmZXEgKCQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHUykseSkKPiAtLQo+ IDIuMjkuMi42ODQuZ2ZiYzY0YzVhYjUtZ29vZwo+CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==