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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3C761C76196 for ; Tue, 28 Mar 2023 04:06:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232823AbjC1EGR (ORCPT ); Tue, 28 Mar 2023 00:06:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229459AbjC1EGO (ORCPT ); Tue, 28 Mar 2023 00:06:14 -0400 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D57A3DE; Mon, 27 Mar 2023 21:06:12 -0700 (PDT) Received: by mail-ed1-x530.google.com with SMTP id ek18so44364234edb.6; Mon, 27 Mar 2023 21:06:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679976371; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=oDI9x5S91I3YVFHLIUQDSl5pwYy7y0vI8J4VR3cNmtA=; b=aex3Yrg/Zgqv/q4oJydULrECV0VRQxmBcGBvlzqy7giPT0KNqCxtRIO9gLVQdcaF2q X6CCu1FGOM0ppzji2X73IpSzhzIjT57KrsnpQqOWlqoElQEO9GzvGA+3y7at5WzRDsKy pVccKI1j4sj9O1ovhdY3WH3YqH/Ii7MCVtaDLPKJRQ5h1MtjVi3xT9cvMKOAtQANoDzB +snrLTO9DKEaRJU8LfHfz71weUbf3RVfrT5DxiLR+GNTNndWffqva18u53e5GGv/w4Le cAN0QhYKiPKkOBzMYrncmiKYn/y66YTnelkiUP22OceslUGkRbLi8IC2k9ylwUPOxrgX jaqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679976371; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oDI9x5S91I3YVFHLIUQDSl5pwYy7y0vI8J4VR3cNmtA=; b=LkjZg4ZL9LR3L5uDJLi/mIRaWpmZaEca3Zr9bo5iV/rvXbBltown+kmpyrw39kG+mM iN286R42RVm4g4IJpegx8aTCMkTaUOplZEPWDUDAwB7Dbl1TEYQoSYCYs7jVTLP703qR /buGuK7ej7HWME5JPAVqtju/e8HRd6yZJZwslvHvQEECoaOdlw3RTkCvLQprOkF70oWK DUyhbmqfhnx1CNNxF5GfhVoSjSB/ELDjHrk2wkKsa34afb2aNohbzk2D4o5cmwiPTNf+ 2h0GZDceD7IFVoTxVLFsN1UUceLxARPY+GSdk6h6klDRNsVI2nqoyZbJA4LCRO56jKDg 0KTg== X-Gm-Message-State: AAQBX9eIKnqefxGpUB1QWPMux2dm/5V1G0A+98xjqAB5M1jR06aigVBz U8ZhmjVifwviuekkkR3VMN/IJQ000b//oMVwzgU= X-Google-Smtp-Source: AKy350Zy4YfNXBDnbEAXN4mrQxPhTDk1MN+1EaNG1aUo8NLjCHMUjH40vByu3GdYBYAfOENFwC/wqlz9D0zPmVLrcbw= X-Received: by 2002:a17:906:4746:b0:8ab:b606:9728 with SMTP id j6-20020a170906474600b008abb6069728mr7083779ejs.5.1679976371283; Mon, 27 Mar 2023 21:06:11 -0700 (PDT) MIME-Version: 1.0 References: <20221012233500.156764-1-masahiroy@kernel.org> In-Reply-To: From: Andrii Nakryiko Date: Mon, 27 Mar 2023 21:05:59 -0700 Message-ID: Subject: Re: [PATCH] arm64: remove special treatment for the link order of head.o To: Alexei Starovoitov , Eduard Zingerman Cc: Ard Biesheuvel , Jiri Olsa , Andrii Nakryiko , Alan Maguire , Masahiro Yamada , Catalin Marinas , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-arch@vger.kernel.org, Nicolas Schier , linux-kernel@vger.kernel.org, Martin KaFai Lau , "open list:BPF JIT for MIPS (32-BIT AND 64-BIT)" , Arnaldo Carvalho de Melo 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 Fri, Mar 24, 2023 at 4:34=E2=80=AFPM Alexei Starovoitov wrote: > > On Fri, Mar 24, 2023 at 4:39=E2=80=AFAM Ard Biesheuvel = wrote: > > > > (cc BTF list and maintainer) > > > > On Thu, 23 Mar 2023 at 22:12, Aurelien Jarno wro= te: > > > > > > Hi, > > > > > > On 2023-03-22 15:51, Ard Biesheuvel wrote: > > > > On Tue, 21 Mar 2023 at 23:26, Aurelien Jarno = wrote: > > > > > > > > > > Hi, > > > > > > > > > > On 2022-10-13 08:35, Masahiro Yamada wrote: > > > > > > In the previous discussion (see the Link tag), Ard pointed out = that > > > > > > arm/arm64/kernel/head.o does not need any special treatment - t= he only > > > > > > piece that must appear right at the start of the binary image i= s the > > > > > > image header which is emitted into .head.text. > > > > > > > > > > > > The linker script does the right thing to do. The build system = does > > > > > > not need to manipulate the link order of head.o. > > > > > > > > > > > > Link: https://lore.kernel.org/lkml/CAMj1kXH77Ja8bSsq2Qj8Ck9iSZK= w=3D1F8Uy-uAWGVDm4-CG=3DEuA@mail.gmail.com/ > > > > > > Suggested-by: Ard Biesheuvel > > > > > > Signed-off-by: Masahiro Yamada > > > > > > --- > > > > > > > > > > > > scripts/head-object-list.txt | 1 - > > > > > > 1 file changed, 1 deletion(-) > > > > > > > > > > > > diff --git a/scripts/head-object-list.txt b/scripts/head-object= -list.txt > > > > > > index b16326a92c45..f226e45e3b7b 100644 > > > > > > --- a/scripts/head-object-list.txt > > > > > > +++ b/scripts/head-object-list.txt > > > > > > @@ -15,7 +15,6 @@ arch/alpha/kernel/head.o > > > > > > arch/arc/kernel/head.o > > > > > > arch/arm/kernel/head-nommu.o > > > > > > arch/arm/kernel/head.o > > > > > > -arch/arm64/kernel/head.o > > > > > > arch/csky/kernel/head.o > > > > > > arch/hexagon/kernel/head.o > > > > > > arch/ia64/kernel/head.o > > > > > > > > > > This patch causes a significant increase of the arch/arm64/boot/I= mage > > > > > size. For instance the generic arm64 Debian kernel went from 31 t= o 39 MB > > > > > after this patch has been applied to the 6.1 stable tree. > > > > > > > > > > In turn this causes issues with some bootloaders, for instance U-= Boot on > > > > > a Raspberry Pi limits the kernel size to 36 MB. > > > > > > > > > > > > > I cannot reproduce this with mainline > > > > > > > > With the patch > > > > > > > > $ size vmlinux > > > > text data bss dec hex filename > > > > 24567309 14752630 621680 39941619 26175f3 vmlinux > > > > > > > > With the patch reverted > > > > > > > > $ size vmlinux > > > > text data bss dec hex filename > > > > 24567309 14752694 621680 39941683 2617633 vmlinux > > > > > > I have tried with the current mainline, this is what I get, using GCC= 12.2.0 > > > and binutils 2.40: > > > > > > text data bss dec hex filename > > > 32531655 8192996 621968 41346619 276e63b vmlinux.orig > > > 25170610 8192996 621968 33985574 2069426 vmlinux.rever= t > > > > > > > It would help to compare the resulting vmlinux ELF images from both > > > > builds to see where the extra space is being allocated > > > > > > At a first glance, it seems the extra space is allocated in the BTF > > > section. I have uploaded the resulting files as well as the config fi= le > > > I used there: > > > https://temp.aurel32.net/linux-arm64-size-head.o.tar.gz > > > > > > > Indeed. So we go from > > > > [15] .BTF PROGBITS ffff8000091d1ff4 011e1ff4 > > 00000000005093d6 0000000000000000 A 0 0 1 > > > > to > > > > [15] .BTF PROGBITS ffff8000091d1ff4 011e1ff4 > > 0000000000c0e5eb 0000000000000000 A 0 0 1 > > > > i.e, from 5 MiB to 12+ MiB of BTF metadata. > > > > To me, it is not clear at all how one would be related to the other, > > so it will leave it to the Kbuild and BTF experts to chew on this one. > > That's a huge increase. > It's not just that commit responsible, but the whole series ? > https://lore.kernel.org/lkml/20220906061313.1445810-1-masahiroy@kernel.or= g/ > I'm guessing "Link vmlinux and modules in parallel" is related. > I'm not sure what "parallel link" means. Running 'ar' in parallel? > I cannot read makefile syntax, so no idea. > > Jiri, Andrii, Alan, please take a look. So it seems to come from the difference in return type for mm_struct's get_unmapped_area callback: struct mm_struct { struct { struct maple_tree mm_mt; #ifdef CONFIG_MMU unsigned long (*get_unmapped_area) (struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags); #endif It seems that sometimes we have "unsigned long" as return type, but sometimes it's just "void". I haven't debugged why this is happening. But cc'ing Eduard, just in case it's related to the "unspecified type" tracking in pahole, which he recently fixed. There could be some other related bug lurking around. 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CD701C76196 for ; Tue, 28 Mar 2023 04:07:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc: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=2DADFr/EAP9oSgLJKC1kPZXFkEQs9blZmUPaohh6BVc=; b=Se6fFdphOLOw/6 NyWi97b8M08NtgiPaFmSvlJpM1zamq4t7tzTwpHrUV2yAOel2GW+GQBVP+rM/TRioot68i+FkCqI9 hrVAd/9oOSKoTK8//6sPDojo5vXxmwjghfmVz2S34eydkR3XjenbxovFtHYpk5ztQQoU/SEHvfkWD gb1go9Iavts9itO8/rI8aCaeBrfS+oO7mQFefcmIvwByXg3YpagCK528ghe+uwd9WcZMdK/rfeBjY lZP8M9CBKjOovcZg+9hzF7ZTt+0sjrtlHAK8T0pmEYctOzEgLoRu8XZpsfKFqiIkd3p6MhROIu92P gUozghf34iS2rhyZBnOg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1ph0bB-00D5VP-1q; Tue, 28 Mar 2023 04:06:17 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1ph0b8-00D5Ur-17 for linux-arm-kernel@lists.infradead.org; Tue, 28 Mar 2023 04:06:16 +0000 Received: by mail-ed1-x534.google.com with SMTP id r11so44365094edd.5 for ; Mon, 27 Mar 2023 21:06:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679976371; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=oDI9x5S91I3YVFHLIUQDSl5pwYy7y0vI8J4VR3cNmtA=; b=aex3Yrg/Zgqv/q4oJydULrECV0VRQxmBcGBvlzqy7giPT0KNqCxtRIO9gLVQdcaF2q X6CCu1FGOM0ppzji2X73IpSzhzIjT57KrsnpQqOWlqoElQEO9GzvGA+3y7at5WzRDsKy pVccKI1j4sj9O1ovhdY3WH3YqH/Ii7MCVtaDLPKJRQ5h1MtjVi3xT9cvMKOAtQANoDzB +snrLTO9DKEaRJU8LfHfz71weUbf3RVfrT5DxiLR+GNTNndWffqva18u53e5GGv/w4Le cAN0QhYKiPKkOBzMYrncmiKYn/y66YTnelkiUP22OceslUGkRbLi8IC2k9ylwUPOxrgX jaqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679976371; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oDI9x5S91I3YVFHLIUQDSl5pwYy7y0vI8J4VR3cNmtA=; b=Nyurm4M+KAELKpJB4elZb5Di5+kSz03OWuvN7YXTmUN8d2K1XgAFGLGpHDf18FY7Vx lZlL2xBr75QEOak/Kz1IWpwbA/kX7NLtwejfs3D10NBe+sEifF0Gm0I7gFdeFx2BUk3B 6ZxckXb/qr11/madMjA03NegXU1PIwfiYfDN65cCrckMIG8p0NqschwwZWwfG9BxKZ+A yaBGnCypiIxQmdsSrnKI3MLPL5wdAc+xtAymMkuinnXDTS+A+q28zVDngVFoJk3af247 egX5iibygBCGl+0Kb4Xy5GLE10G1Lsp/RzteKyyh0rgKBBSVNGbMBYq9d/Bc/3ZSbwwI hsNA== X-Gm-Message-State: AAQBX9cEmaBmGJgVVfgIJbLqgg3ADHzIt7kW30bNQwr0itwWpVvYQYpn 4X3XfOORG5GGVHGOn8PWH0epZbxH58BiAXwFI98= X-Google-Smtp-Source: AKy350Zy4YfNXBDnbEAXN4mrQxPhTDk1MN+1EaNG1aUo8NLjCHMUjH40vByu3GdYBYAfOENFwC/wqlz9D0zPmVLrcbw= X-Received: by 2002:a17:906:4746:b0:8ab:b606:9728 with SMTP id j6-20020a170906474600b008abb6069728mr7083779ejs.5.1679976371283; Mon, 27 Mar 2023 21:06:11 -0700 (PDT) MIME-Version: 1.0 References: <20221012233500.156764-1-masahiroy@kernel.org> In-Reply-To: From: Andrii Nakryiko Date: Mon, 27 Mar 2023 21:05:59 -0700 Message-ID: Subject: Re: [PATCH] arm64: remove special treatment for the link order of head.o To: Alexei Starovoitov , Eduard Zingerman Cc: Ard Biesheuvel , Jiri Olsa , Andrii Nakryiko , Alan Maguire , Masahiro Yamada , Catalin Marinas , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-arch@vger.kernel.org, Nicolas Schier , linux-kernel@vger.kernel.org, Martin KaFai Lau , "open list:BPF JIT for MIPS (32-BIT AND 64-BIT)" , Arnaldo Carvalho de Melo X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230327_210614_408569_C08F5F9B X-CRM114-Status: GOOD ( 48.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 T24gRnJpLCBNYXIgMjQsIDIwMjMgYXQgNDozNOKAr1BNIEFsZXhlaSBTdGFyb3ZvaXRvdgo8YWxl eGVpLnN0YXJvdm9pdG92QGdtYWlsLmNvbT4gd3JvdGU6Cj4KPiBPbiBGcmksIE1hciAyNCwgMjAy MyBhdCA0OjM54oCvQU0gQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4gd3JvdGU6Cj4g Pgo+ID4gKGNjIEJURiBsaXN0IGFuZCBtYWludGFpbmVyKQo+ID4KPiA+IE9uIFRodSwgMjMgTWFy IDIwMjMgYXQgMjI6MTIsIEF1cmVsaWVuIEphcm5vIDxhdXJlbGllbkBhdXJlbDMyLm5ldD4gd3Jv dGU6Cj4gPiA+Cj4gPiA+IEhpLAo+ID4gPgo+ID4gPiBPbiAyMDIzLTAzLTIyIDE1OjUxLCBBcmQg Qmllc2hldXZlbCB3cm90ZToKPiA+ID4gPiBPbiBUdWUsIDIxIE1hciAyMDIzIGF0IDIzOjI2LCBB dXJlbGllbiBKYXJubyA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+IHdyb3RlOgo+ID4gPiA+ID4KPiA+ ID4gPiA+IEhpLAo+ID4gPiA+ID4KPiA+ID4gPiA+IE9uIDIwMjItMTAtMTMgMDg6MzUsIE1hc2Fo aXJvIFlhbWFkYSB3cm90ZToKPiA+ID4gPiA+ID4gSW4gdGhlIHByZXZpb3VzIGRpc2N1c3Npb24g KHNlZSB0aGUgTGluayB0YWcpLCBBcmQgcG9pbnRlZCBvdXQgdGhhdAo+ID4gPiA+ID4gPiBhcm0v YXJtNjQva2VybmVsL2hlYWQubyBkb2VzIG5vdCBuZWVkIGFueSBzcGVjaWFsIHRyZWF0bWVudCAt IHRoZSBvbmx5Cj4gPiA+ID4gPiA+IHBpZWNlIHRoYXQgbXVzdCBhcHBlYXIgcmlnaHQgYXQgdGhl IHN0YXJ0IG9mIHRoZSBiaW5hcnkgaW1hZ2UgaXMgdGhlCj4gPiA+ID4gPiA+IGltYWdlIGhlYWRl ciB3aGljaCBpcyBlbWl0dGVkIGludG8gLmhlYWQudGV4dC4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gVGhlIGxpbmtlciBzY3JpcHQgZG9lcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uIFRoZSBidWls ZCBzeXN0ZW0gZG9lcwo+ID4gPiA+ID4gPiBub3QgbmVlZCB0byBtYW5pcHVsYXRlIHRoZSBsaW5r IG9yZGVyIG9mIGhlYWQuby4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gTGluazogaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvbGttbC9DQU1qMWtYSDc3SmE4YlNzcTJRajhDazlpU1pLdz0xRjhVeS11 QVdHVkRtNC1DRz1FdUFAbWFpbC5nbWFpbC5jb20vCj4gPiA+ID4gPiA+IFN1Z2dlc3RlZC1ieTog QXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4KPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1i eTogTWFzYWhpcm8gWWFtYWRhIDxtYXNhaGlyb3lAa2VybmVsLm9yZz4KPiA+ID4gPiA+ID4gLS0t Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICBzY3JpcHRzL2hlYWQtb2JqZWN0LWxpc3QudHh0IHwg MSAtCj4gPiA+ID4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQo+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvc2NyaXB0cy9oZWFkLW9iamVjdC1saXN0LnR4dCBi L3NjcmlwdHMvaGVhZC1vYmplY3QtbGlzdC50eHQKPiA+ID4gPiA+ID4gaW5kZXggYjE2MzI2YTky YzQ1Li5mMjI2ZTQ1ZTNiN2IgMTAwNjQ0Cj4gPiA+ID4gPiA+IC0tLSBhL3NjcmlwdHMvaGVhZC1v YmplY3QtbGlzdC50eHQKPiA+ID4gPiA+ID4gKysrIGIvc2NyaXB0cy9oZWFkLW9iamVjdC1saXN0 LnR4dAo+ID4gPiA+ID4gPiBAQCAtMTUsNyArMTUsNiBAQCBhcmNoL2FscGhhL2tlcm5lbC9oZWFk Lm8KPiA+ID4gPiA+ID4gIGFyY2gvYXJjL2tlcm5lbC9oZWFkLm8KPiA+ID4gPiA+ID4gIGFyY2gv YXJtL2tlcm5lbC9oZWFkLW5vbW11Lm8KPiA+ID4gPiA+ID4gIGFyY2gvYXJtL2tlcm5lbC9oZWFk Lm8KPiA+ID4gPiA+ID4gLWFyY2gvYXJtNjQva2VybmVsL2hlYWQubwo+ID4gPiA+ID4gPiAgYXJj aC9jc2t5L2tlcm5lbC9oZWFkLm8KPiA+ID4gPiA+ID4gIGFyY2gvaGV4YWdvbi9rZXJuZWwvaGVh ZC5vCj4gPiA+ID4gPiA+ICBhcmNoL2lhNjQva2VybmVsL2hlYWQubwo+ID4gPiA+ID4KPiA+ID4g PiA+IFRoaXMgcGF0Y2ggY2F1c2VzIGEgc2lnbmlmaWNhbnQgaW5jcmVhc2Ugb2YgdGhlIGFyY2gv YXJtNjQvYm9vdC9JbWFnZQo+ID4gPiA+ID4gc2l6ZS4gRm9yIGluc3RhbmNlIHRoZSBnZW5lcmlj IGFybTY0IERlYmlhbiBrZXJuZWwgd2VudCBmcm9tIDMxIHRvIDM5IE1CCj4gPiA+ID4gPiBhZnRl ciB0aGlzIHBhdGNoIGhhcyBiZWVuIGFwcGxpZWQgdG8gdGhlIDYuMSBzdGFibGUgdHJlZS4KPiA+ ID4gPiA+Cj4gPiA+ID4gPiBJbiB0dXJuIHRoaXMgY2F1c2VzIGlzc3VlcyB3aXRoIHNvbWUgYm9v dGxvYWRlcnMsIGZvciBpbnN0YW5jZSBVLUJvb3Qgb24KPiA+ID4gPiA+IGEgUmFzcGJlcnJ5IFBp IGxpbWl0cyB0aGUga2VybmVsIHNpemUgdG8gMzYgTUIuCj4gPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ ID4gSSBjYW5ub3QgcmVwcm9kdWNlIHRoaXMgd2l0aCBtYWlubGluZQo+ID4gPiA+Cj4gPiA+ID4g V2l0aCB0aGUgcGF0Y2gKPiA+ID4gPgo+ID4gPiA+ICQgc2l6ZSB2bWxpbnV4Cj4gPiA+ID4gICAg dGV4dCAgICBkYXRhICAgICBic3MgICAgIGRlYyAgICAgaGV4IGZpbGVuYW1lCj4gPiA+ID4gMjQ1 NjczMDkgMTQ3NTI2MzAgNjIxNjgwIDM5OTQxNjE5IDI2MTc1ZjMgdm1saW51eAo+ID4gPiA+Cj4g PiA+ID4gV2l0aCB0aGUgcGF0Y2ggcmV2ZXJ0ZWQKPiA+ID4gPgo+ID4gPiA+ICQgc2l6ZSB2bWxp bnV4Cj4gPiA+ID4gICAgdGV4dCAgICBkYXRhICAgICBic3MgICAgIGRlYyAgICAgaGV4IGZpbGVu YW1lCj4gPiA+ID4gMjQ1NjczMDkgMTQ3NTI2OTQgNjIxNjgwIDM5OTQxNjgzIDI2MTc2MzMgdm1s aW51eAo+ID4gPgo+ID4gPiBJIGhhdmUgdHJpZWQgd2l0aCB0aGUgY3VycmVudCBtYWlubGluZSwg dGhpcyBpcyB3aGF0IEkgZ2V0LCB1c2luZyBHQ0MgMTIuMi4wCj4gPiA+IGFuZCBiaW51dGlscyAy LjQwOgo+ID4gPgo+ID4gPiAgICB0ZXh0ICAgIGRhdGEgICAgIGJzcyAgICAgZGVjICAgICBoZXgg ZmlsZW5hbWUKPiA+ID4gMzI1MzE2NTUgICAgICAgIDgxOTI5OTYgIDYyMTk2OCA0MTM0NjYxOSAg ICAgICAgMjc2ZTYzYiB2bWxpbnV4Lm9yaWcKPiA+ID4gMjUxNzA2MTAgICAgICAgIDgxOTI5OTYg IDYyMTk2OCAzMzk4NTU3NCAgICAgICAgMjA2OTQyNiB2bWxpbnV4LnJldmVydAo+ID4gPgo+ID4g PiA+IEl0IHdvdWxkIGhlbHAgdG8gY29tcGFyZSB0aGUgcmVzdWx0aW5nIHZtbGludXggRUxGIGlt YWdlcyBmcm9tIGJvdGgKPiA+ID4gPiBidWlsZHMgdG8gc2VlIHdoZXJlIHRoZSBleHRyYSBzcGFj ZSBpcyBiZWluZyBhbGxvY2F0ZWQKPiA+ID4KPiA+ID4gQXQgYSBmaXJzdCBnbGFuY2UsIGl0IHNl ZW1zIHRoZSBleHRyYSBzcGFjZSBpcyBhbGxvY2F0ZWQgaW4gdGhlIEJURgo+ID4gPiBzZWN0aW9u LiBJIGhhdmUgdXBsb2FkZWQgdGhlIHJlc3VsdGluZyBmaWxlcyBhcyB3ZWxsIGFzIHRoZSBjb25m aWcgZmlsZQo+ID4gPiBJIHVzZWQgdGhlcmU6Cj4gPiA+IGh0dHBzOi8vdGVtcC5hdXJlbDMyLm5l dC9saW51eC1hcm02NC1zaXplLWhlYWQuby50YXIuZ3oKPiA+ID4KPiA+Cj4gPiBJbmRlZWQuIFNv IHdlIGdvIGZyb20KPiA+Cj4gPiAgIFsxNV0gLkJURiAgICAgICAgICAgICAgUFJPR0JJVFMgICAg ICAgICBmZmZmODAwMDA5MWQxZmY0ICAwMTFlMWZmNAo+ID4gICAgICAgIDAwMDAwMDAwMDA1MDkz ZDYgIDAwMDAwMDAwMDAwMDAwMDAgICBBICAgICAgIDAgICAgIDAgICAgIDEKPiA+Cj4gPiB0bwo+ ID4KPiA+ICAgWzE1XSAuQlRGICAgICAgICAgICAgICBQUk9HQklUUyAgICAgICAgIGZmZmY4MDAw MDkxZDFmZjQgIDAxMWUxZmY0Cj4gPiAgICAgICAgMDAwMDAwMDAwMGMwZTVlYiAgMDAwMDAwMDAw MDAwMDAwMCAgIEEgICAgICAgMCAgICAgMCAgICAgMQo+ID4KPiA+IGkuZSwgZnJvbSA1IE1pQiB0 byAxMisgTWlCIG9mIEJURiBtZXRhZGF0YS4KPiA+Cj4gPiBUbyBtZSwgaXQgaXMgbm90IGNsZWFy IGF0IGFsbCBob3cgb25lIHdvdWxkIGJlIHJlbGF0ZWQgdG8gdGhlIG90aGVyLAo+ID4gc28gaXQg d2lsbCBsZWF2ZSBpdCB0byB0aGUgS2J1aWxkIGFuZCBCVEYgZXhwZXJ0cyB0byBjaGV3IG9uIHRo aXMgb25lLgo+Cj4gVGhhdCdzIGEgaHVnZSBpbmNyZWFzZS4KPiBJdCdzIG5vdCBqdXN0IHRoYXQg Y29tbWl0IHJlc3BvbnNpYmxlLCBidXQgdGhlIHdob2xlIHNlcmllcyA/Cj4gaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvbGttbC8yMDIyMDkwNjA2MTMxMy4xNDQ1ODEwLTEtbWFzYWhpcm95QGtlcm5l bC5vcmcvCj4gSSdtIGd1ZXNzaW5nICJMaW5rIHZtbGludXggYW5kIG1vZHVsZXMgaW4gcGFyYWxs ZWwiIGlzIHJlbGF0ZWQuCj4gSSdtIG5vdCBzdXJlIHdoYXQgInBhcmFsbGVsIGxpbmsiIG1lYW5z LiBSdW5uaW5nICdhcicgaW4gcGFyYWxsZWw/Cj4gSSBjYW5ub3QgcmVhZCBtYWtlZmlsZSBzeW50 YXgsIHNvIG5vIGlkZWEuCj4KPiBKaXJpLCBBbmRyaWksIEFsYW4sIHBsZWFzZSB0YWtlIGEgbG9v ay4KClNvIGl0IHNlZW1zIHRvIGNvbWUgZnJvbSB0aGUgZGlmZmVyZW5jZSBpbiByZXR1cm4gdHlw ZSBmb3IgbW1fc3RydWN0J3MKZ2V0X3VubWFwcGVkX2FyZWEgY2FsbGJhY2s6CgoKc3RydWN0IG1t X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHN0cnVjdCBtYXBsZV90 cmVlIG1tX210OwojaWZkZWYgQ09ORklHX01NVQogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyAoKmdldF91bm1hcHBlZF9hcmVhKSAoc3RydWN0IGZpbGUgKmZpbHAsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGxlbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBnb2ZmLCB1bnNp Z25lZCBsb25nIGZsYWdzKTsKI2VuZGlmCgoKSXQgc2VlbXMgdGhhdCBzb21ldGltZXMgd2UgaGF2 ZSAidW5zaWduZWQgbG9uZyIgYXMgcmV0dXJuIHR5cGUsIGJ1dApzb21ldGltZXMgaXQncyBqdXN0 ICJ2b2lkIi4gSSBoYXZlbid0IGRlYnVnZ2VkIHdoeSB0aGlzIGlzIGhhcHBlbmluZy4KQnV0IGNj J2luZyBFZHVhcmQsIGp1c3QgaW4gY2FzZSBpdCdzIHJlbGF0ZWQgdG8gdGhlICJ1bnNwZWNpZmll ZCB0eXBlIgp0cmFja2luZyBpbiBwYWhvbGUsIHdoaWNoIGhlIHJlY2VudGx5IGZpeGVkLiBUaGVy ZSBjb3VsZCBiZSBzb21lIG90aGVyCnJlbGF0ZWQgYnVnIGx1cmtpbmcgYXJvdW5kLgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=