From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 54B2A2C6AD; Thu, 28 Mar 2024 15:10:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711638651; cv=none; b=RTF9NSHXD+5MhH16WmzEsgBTAMHv5ymC3bHdaNYbwEbeBwYZmuhtjESbIG32YEAU/3A9o9B9sRqpH813TbJ1VJlV9ScMQoC5me7S318cwAXy0IDCcrc/rueWivK4dn2euhCnfWdvrVO79K6rnoW+CmrqWHIywX9Mu3knaQYMK1A= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711638651; c=relaxed/simple; bh=r2D0EqkpCrFqFode/ZlZv88Dg4Xknt6j7iyrIgxbYTU=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ZrLs/p/darscR+NvP4+RVCZY73NhOQzeshRJ3qXd6r1FWuvJGfJv0F4JqW6gZYetnh3TH61LJ9Zc1Ch7Kb0z0CYuRI+BHxvs9E5PKPZqVeFXneU3UMXcNHyTC7QUddAc6/+WXNB0fbW87TAnaNWrSnH93X9jJXa8kxH/O/lhXDU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95D2BC433C7; Thu, 28 Mar 2024 15:10:47 +0000 (UTC) Date: Thu, 28 Mar 2024 11:13:30 -0400 From: Steven Rostedt To: =?UTF-8?B?5qKm6b6Z6JGj?= Cc: Alexei Starovoitov , Jiri Olsa , Andrii Nakryiko , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Eddy Z , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S. Miller" , David Ahern , Dave Hansen , X86 ML , Mathieu Desnoyers , Quentin Monnet , bpf , linux-arm-kernel , LKML , linux-riscv , linux-s390 , Network Development , linux-trace-kernel@vger.kernel.org, "open list:KERNEL SELFTEST FRAMEWORK" , linux-stm32@st-md-mailman.stormreply.com Subject: Re: [External] Re: [PATCH bpf-next v2 1/9] bpf: tracing: add support to record and check the accessed args Message-ID: <20240328111330.194dcbe5@gandalf.local.home> In-Reply-To: References: <20240311093526.1010158-1-dongmenglong.8@bytedance.com> <20240311093526.1010158-2-dongmenglong.8@bytedance.com> X-Mailer: Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Thu, 28 Mar 2024 22:43:46 +0800 =E6=A2=A6=E9=BE=99=E8=91=A3 wrote: > I have done a simple benchmark on creating 1000 > trampolines. It is slow, quite slow, which consume up to > 60s. We can't do it this way. >=20 > Now, I have a bad idea. How about we introduce > a "dynamic trampoline"? The basic logic of it can be: >=20 > """ > save regs > bpfs =3D trampoline_lookup_ip(ip) > fentry =3D bpfs->fentries > while fentry: > fentry(ctx) > fentry =3D fentry->next >=20 > call origin > save return value >=20 > fexit =3D bpfs->fexits > while fexit: > fexit(ctx) > fexit =3D fexit->next >=20 > xxxxxx > """ >=20 > And we lookup the "bpfs" by the function ip in a hash map > in trampoline_lookup_ip. The type of "bpfs" is: >=20 > struct bpf_array { > struct bpf_prog *fentries; > struct bpf_prog *fexits; > struct bpf_prog *modify_returns; > } >=20 > When we need to attach the bpf progA to function A/B/C, > we only need to create the bpf_arrayA, bpf_arrayB, bpf_arrayC > and add the progA to them, and insert them to the hash map > "direct_call_bpfs", and attach the "dynamic trampoline" to > A/B/C. If bpf_arrayA exist, just add progA to the tail of > bpf_arrayA->fentries. When we need to attach progB to > B/C, just add progB to bpf_arrayB->fentries and > bpf_arrayB->fentries. >=20 > Compared to the trampoline, extra overhead is introduced > by the hash lookuping. >=20 > I have not begun to code yet, and I am not sure the overhead is > acceptable. Considering that we also need to do hash lookup > by the function in kprobe_multi, maybe the overhead is > acceptable? Sounds like you are just recreating the function management that ftrace has. It also can add thousands of trampolines very quickly, because it does it in batches. It takes special synchronization steps to attach to fentry. ftrace (and I believe multi-kprobes) updates all the attachments for each step, so the synchronization needed is only done once. If you really want to have thousands of functions, why not just register it with ftrace itself. It will give you the arguments via the ftrace_regs structure. Can't you just register a program as the callback? It will probably make your accounting much easier, and just let ftrace handle the fentry logic. That's what it was made to do. -- Steve 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 C7F39C54E67 for ; Thu, 28 Mar 2024 15:11:02 +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:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+ikFGfjkDYfA07xA8ZRxfWw5xSdGEFpB8/zmDZ1XTzU=; b=tlmGnF9zt13EVf 2gZRauWhi+lw2+JUOAlGSxrGCWf/xjKf7m8dF0pab7EDKYKdJb0t3DtGYuoX2FWh42Vg0mZ8pKNd0 Pu4k40G+ZA1GuSRwEAFM8YUOjVgOSmIk8eJSq13+2l0yiSD740OTGMDFl7ELYxT75pTm5ePsoxlOF BV0TBY8n7wN0rXdOygUy4AS5+6/T23XV2PvfSFs9FNt7++zSsbQ1LtuqUqeIbIfs1NvZ+X6hmu/Gm lp+xOjI8Sy5yFz74ztrP1NQLdHreW+bfQTyA65nwsJgVxdlgOJpP4ZFB4XwiQGzR6+BB1yopPPp8w qSVgKUSrJQhy7DuslWyQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rprP6-0000000ETIS-1Gb7; Thu, 28 Mar 2024 15:10:56 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rprP3-0000000ETGn-041V; Thu, 28 Mar 2024 15:10:54 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 3EB2D60DD7; Thu, 28 Mar 2024 15:10:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95D2BC433C7; Thu, 28 Mar 2024 15:10:47 +0000 (UTC) Date: Thu, 28 Mar 2024 11:13:30 -0400 From: Steven Rostedt To: =?UTF-8?B?5qKm6b6Z6JGj?= Cc: Alexei Starovoitov , Jiri Olsa , Andrii Nakryiko , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Eddy Z , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S. Miller" , David Ahern , Dave Hansen , X86 ML , Mathieu Desnoyers , Quentin Monnet , bpf , linux-arm-kernel , LKML , linux-riscv , linux-s390 , Network Development , linux-trace-kernel@vger.kernel.org, "open list:KERNEL SELFTEST FRAMEWORK" , linux-stm32@st-md-mailman.stormreply.com Subject: Re: [External] Re: [PATCH bpf-next v2 1/9] bpf: tracing: add support to record and check the accessed args Message-ID: <20240328111330.194dcbe5@gandalf.local.home> In-Reply-To: References: <20240311093526.1010158-1-dongmenglong.8@bytedance.com> <20240311093526.1010158-2-dongmenglong.8@bytedance.com> X-Mailer: Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240328_081053_155392_1734C484 X-CRM114-Status: GOOD ( 20.94 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gVGh1LCAyOCBNYXIgMjAyNCAyMjo0Mzo0NiArMDgwMArmoqbpvpnokaMgPGRvbmdtZW5nbG9u Zy44QGJ5dGVkYW5jZS5jb20+IHdyb3RlOgoKPiBJIGhhdmUgZG9uZSBhIHNpbXBsZSBiZW5jaG1h cmsgb24gY3JlYXRpbmcgMTAwMAo+IHRyYW1wb2xpbmVzLiBJdCBpcyBzbG93LCBxdWl0ZSBzbG93 LCB3aGljaCBjb25zdW1lIHVwIHRvCj4gNjBzLiBXZSBjYW4ndCBkbyBpdCB0aGlzIHdheS4KPiAK PiBOb3csIEkgaGF2ZSBhIGJhZCBpZGVhLiBIb3cgYWJvdXQgd2UgaW50cm9kdWNlCj4gYSAiZHlu YW1pYyB0cmFtcG9saW5lIj8gVGhlIGJhc2ljIGxvZ2ljIG9mIGl0IGNhbiBiZToKPiAKPiAiIiIK PiBzYXZlIHJlZ3MKPiBicGZzID0gdHJhbXBvbGluZV9sb29rdXBfaXAoaXApCj4gZmVudHJ5ID0g YnBmcy0+ZmVudHJpZXMKPiB3aGlsZSBmZW50cnk6Cj4gICBmZW50cnkoY3R4KQo+ICAgZmVudHJ5 ID0gZmVudHJ5LT5uZXh0Cj4gCj4gY2FsbCBvcmlnaW4KPiBzYXZlIHJldHVybiB2YWx1ZQo+IAo+ IGZleGl0ID0gYnBmcy0+ZmV4aXRzCj4gd2hpbGUgZmV4aXQ6Cj4gICBmZXhpdChjdHgpCj4gICBm ZXhpdCA9IGZleGl0LT5uZXh0Cj4gCj4geHh4eHh4Cj4gIiIiCj4gCj4gQW5kIHdlIGxvb2t1cCB0 aGUgImJwZnMiIGJ5IHRoZSBmdW5jdGlvbiBpcCBpbiBhIGhhc2ggbWFwCj4gaW4gdHJhbXBvbGlu ZV9sb29rdXBfaXAuIFRoZSB0eXBlIG9mICJicGZzIiBpczoKPiAKPiBzdHJ1Y3QgYnBmX2FycmF5 IHsKPiAgIHN0cnVjdCBicGZfcHJvZyAqZmVudHJpZXM7Cj4gIHN0cnVjdCBicGZfcHJvZyAqZmV4 aXRzOwo+ICAgc3RydWN0IGJwZl9wcm9nICptb2RpZnlfcmV0dXJuczsKPiB9Cj4gCj4gV2hlbiB3 ZSBuZWVkIHRvIGF0dGFjaCB0aGUgYnBmIHByb2dBIHRvIGZ1bmN0aW9uIEEvQi9DLAo+IHdlIG9u bHkgbmVlZCB0byBjcmVhdGUgdGhlIGJwZl9hcnJheUEsIGJwZl9hcnJheUIsIGJwZl9hcnJheUMK PiBhbmQgYWRkIHRoZSBwcm9nQSB0byB0aGVtLCBhbmQgaW5zZXJ0IHRoZW0gdG8gdGhlIGhhc2gg bWFwCj4gImRpcmVjdF9jYWxsX2JwZnMiLCBhbmQgYXR0YWNoIHRoZSAiZHluYW1pYyB0cmFtcG9s aW5lIiB0bwo+IEEvQi9DLiBJZiBicGZfYXJyYXlBIGV4aXN0LCBqdXN0IGFkZCBwcm9nQSB0byB0 aGUgdGFpbCBvZgo+IGJwZl9hcnJheUEtPmZlbnRyaWVzLiBXaGVuIHdlIG5lZWQgdG8gYXR0YWNo IHByb2dCIHRvCj4gQi9DLCBqdXN0IGFkZCBwcm9nQiB0byBicGZfYXJyYXlCLT5mZW50cmllcyBh bmQKPiBicGZfYXJyYXlCLT5mZW50cmllcy4KPiAKPiBDb21wYXJlZCB0byB0aGUgdHJhbXBvbGlu ZSwgZXh0cmEgb3ZlcmhlYWQgaXMgaW50cm9kdWNlZAo+IGJ5IHRoZSBoYXNoIGxvb2t1cGluZy4K PiAKPiBJIGhhdmUgbm90IGJlZ3VuIHRvIGNvZGUgeWV0LCBhbmQgSSBhbSBub3Qgc3VyZSB0aGUg b3ZlcmhlYWQgaXMKPiBhY2NlcHRhYmxlLiBDb25zaWRlcmluZyB0aGF0IHdlIGFsc28gbmVlZCB0 byBkbyBoYXNoIGxvb2t1cAo+IGJ5IHRoZSBmdW5jdGlvbiBpbiBrcHJvYmVfbXVsdGksIG1heWJl IHRoZSBvdmVyaGVhZCBpcwo+IGFjY2VwdGFibGU/CgpTb3VuZHMgbGlrZSB5b3UgYXJlIGp1c3Qg cmVjcmVhdGluZyB0aGUgZnVuY3Rpb24gbWFuYWdlbWVudCB0aGF0IGZ0cmFjZQpoYXMuIEl0IGFs c28gY2FuIGFkZCB0aG91c2FuZHMgb2YgdHJhbXBvbGluZXMgdmVyeSBxdWlja2x5LCBiZWNhdXNl IGl0IGRvZXMKaXQgaW4gYmF0Y2hlcy4gSXQgdGFrZXMgc3BlY2lhbCBzeW5jaHJvbml6YXRpb24g c3RlcHMgdG8gYXR0YWNoIHRvIGZlbnRyeS4KZnRyYWNlIChhbmQgSSBiZWxpZXZlIG11bHRpLWtw cm9iZXMpIHVwZGF0ZXMgYWxsIHRoZSBhdHRhY2htZW50cyBmb3IgZWFjaApzdGVwLCBzbyB0aGUg c3luY2hyb25pemF0aW9uIG5lZWRlZCBpcyBvbmx5IGRvbmUgb25jZS4KCklmIHlvdSByZWFsbHkg d2FudCB0byBoYXZlIHRob3VzYW5kcyBvZiBmdW5jdGlvbnMsIHdoeSBub3QganVzdCByZWdpc3Rl ciBpdAp3aXRoIGZ0cmFjZSBpdHNlbGYuIEl0IHdpbGwgZ2l2ZSB5b3UgdGhlIGFyZ3VtZW50cyB2 aWEgdGhlIGZ0cmFjZV9yZWdzCnN0cnVjdHVyZS4gQ2FuJ3QgeW91IGp1c3QgcmVnaXN0ZXIgYSBw cm9ncmFtIGFzIHRoZSBjYWxsYmFjaz8KCkl0IHdpbGwgcHJvYmFibHkgbWFrZSB5b3VyIGFjY291 bnRpbmcgbXVjaCBlYXNpZXIsIGFuZCBqdXN0IGxldCBmdHJhY2UKaGFuZGxlIHRoZSBmZW50cnkg bG9naWMuIFRoYXQncyB3aGF0IGl0IHdhcyBtYWRlIHRvIGRvLgoKLS0gU3RldmUKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxp bmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK 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 DD5F7C54E67 for ; Thu, 28 Mar 2024 15:11:09 +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:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=j/fGum7p3WTNOvJh+S34LiXUkCnk30azI4bKuLv5+ME=; b=nm80CkCbb79ENz cnvo3LxJUZfQtxNn3KKqO2x1Qv+q6Lsf9UXLIwbgGKbuPK9l8UL+mblhUjiRKNOum56sWQKhi9kmv e7TGAsVJxwdo2xiM8YkYglCQyktJhAFUNnF11muzaIgWkSVxgx/01hy6ZJURIsNAx9fAtK4XWjpY2 Of8qro9/UFLMjgs18JbFnesopWCrTUhJU98EiE+T4RP8G2Byk1K+cqG18Y3B+uL4wAdt7E0kieXSs JNGMYC+poLZvl90tgxo+GUxYdlhW+jEem0rMae2KCRjIYukjxcAQVyIJeFuFa2zSHpG5lHNSNAEBl BQun2Hfhj+7uoQBZbhlQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rprP5-0000000ETIA-2k2f; Thu, 28 Mar 2024 15:10:55 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rprP3-0000000ETGn-041V; Thu, 28 Mar 2024 15:10:54 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 3EB2D60DD7; Thu, 28 Mar 2024 15:10:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95D2BC433C7; Thu, 28 Mar 2024 15:10:47 +0000 (UTC) Date: Thu, 28 Mar 2024 11:13:30 -0400 From: Steven Rostedt To: =?UTF-8?B?5qKm6b6Z6JGj?= Cc: Alexei Starovoitov , Jiri Olsa , Andrii Nakryiko , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Eddy Z , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S. Miller" , David Ahern , Dave Hansen , X86 ML , Mathieu Desnoyers , Quentin Monnet , bpf , linux-arm-kernel , LKML , linux-riscv , linux-s390 , Network Development , linux-trace-kernel@vger.kernel.org, "open list:KERNEL SELFTEST FRAMEWORK" , linux-stm32@st-md-mailman.stormreply.com Subject: Re: [External] Re: [PATCH bpf-next v2 1/9] bpf: tracing: add support to record and check the accessed args Message-ID: <20240328111330.194dcbe5@gandalf.local.home> In-Reply-To: References: <20240311093526.1010158-1-dongmenglong.8@bytedance.com> <20240311093526.1010158-2-dongmenglong.8@bytedance.com> X-Mailer: Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240328_081053_155392_1734C484 X-CRM114-Status: GOOD ( 20.94 ) 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 T24gVGh1LCAyOCBNYXIgMjAyNCAyMjo0Mzo0NiArMDgwMArmoqbpvpnokaMgPGRvbmdtZW5nbG9u Zy44QGJ5dGVkYW5jZS5jb20+IHdyb3RlOgoKPiBJIGhhdmUgZG9uZSBhIHNpbXBsZSBiZW5jaG1h cmsgb24gY3JlYXRpbmcgMTAwMAo+IHRyYW1wb2xpbmVzLiBJdCBpcyBzbG93LCBxdWl0ZSBzbG93 LCB3aGljaCBjb25zdW1lIHVwIHRvCj4gNjBzLiBXZSBjYW4ndCBkbyBpdCB0aGlzIHdheS4KPiAK PiBOb3csIEkgaGF2ZSBhIGJhZCBpZGVhLiBIb3cgYWJvdXQgd2UgaW50cm9kdWNlCj4gYSAiZHlu YW1pYyB0cmFtcG9saW5lIj8gVGhlIGJhc2ljIGxvZ2ljIG9mIGl0IGNhbiBiZToKPiAKPiAiIiIK PiBzYXZlIHJlZ3MKPiBicGZzID0gdHJhbXBvbGluZV9sb29rdXBfaXAoaXApCj4gZmVudHJ5ID0g YnBmcy0+ZmVudHJpZXMKPiB3aGlsZSBmZW50cnk6Cj4gICBmZW50cnkoY3R4KQo+ICAgZmVudHJ5 ID0gZmVudHJ5LT5uZXh0Cj4gCj4gY2FsbCBvcmlnaW4KPiBzYXZlIHJldHVybiB2YWx1ZQo+IAo+ IGZleGl0ID0gYnBmcy0+ZmV4aXRzCj4gd2hpbGUgZmV4aXQ6Cj4gICBmZXhpdChjdHgpCj4gICBm ZXhpdCA9IGZleGl0LT5uZXh0Cj4gCj4geHh4eHh4Cj4gIiIiCj4gCj4gQW5kIHdlIGxvb2t1cCB0 aGUgImJwZnMiIGJ5IHRoZSBmdW5jdGlvbiBpcCBpbiBhIGhhc2ggbWFwCj4gaW4gdHJhbXBvbGlu ZV9sb29rdXBfaXAuIFRoZSB0eXBlIG9mICJicGZzIiBpczoKPiAKPiBzdHJ1Y3QgYnBmX2FycmF5 IHsKPiAgIHN0cnVjdCBicGZfcHJvZyAqZmVudHJpZXM7Cj4gIHN0cnVjdCBicGZfcHJvZyAqZmV4 aXRzOwo+ICAgc3RydWN0IGJwZl9wcm9nICptb2RpZnlfcmV0dXJuczsKPiB9Cj4gCj4gV2hlbiB3 ZSBuZWVkIHRvIGF0dGFjaCB0aGUgYnBmIHByb2dBIHRvIGZ1bmN0aW9uIEEvQi9DLAo+IHdlIG9u bHkgbmVlZCB0byBjcmVhdGUgdGhlIGJwZl9hcnJheUEsIGJwZl9hcnJheUIsIGJwZl9hcnJheUMK PiBhbmQgYWRkIHRoZSBwcm9nQSB0byB0aGVtLCBhbmQgaW5zZXJ0IHRoZW0gdG8gdGhlIGhhc2gg bWFwCj4gImRpcmVjdF9jYWxsX2JwZnMiLCBhbmQgYXR0YWNoIHRoZSAiZHluYW1pYyB0cmFtcG9s aW5lIiB0bwo+IEEvQi9DLiBJZiBicGZfYXJyYXlBIGV4aXN0LCBqdXN0IGFkZCBwcm9nQSB0byB0 aGUgdGFpbCBvZgo+IGJwZl9hcnJheUEtPmZlbnRyaWVzLiBXaGVuIHdlIG5lZWQgdG8gYXR0YWNo IHByb2dCIHRvCj4gQi9DLCBqdXN0IGFkZCBwcm9nQiB0byBicGZfYXJyYXlCLT5mZW50cmllcyBh bmQKPiBicGZfYXJyYXlCLT5mZW50cmllcy4KPiAKPiBDb21wYXJlZCB0byB0aGUgdHJhbXBvbGlu ZSwgZXh0cmEgb3ZlcmhlYWQgaXMgaW50cm9kdWNlZAo+IGJ5IHRoZSBoYXNoIGxvb2t1cGluZy4K PiAKPiBJIGhhdmUgbm90IGJlZ3VuIHRvIGNvZGUgeWV0LCBhbmQgSSBhbSBub3Qgc3VyZSB0aGUg b3ZlcmhlYWQgaXMKPiBhY2NlcHRhYmxlLiBDb25zaWRlcmluZyB0aGF0IHdlIGFsc28gbmVlZCB0 byBkbyBoYXNoIGxvb2t1cAo+IGJ5IHRoZSBmdW5jdGlvbiBpbiBrcHJvYmVfbXVsdGksIG1heWJl IHRoZSBvdmVyaGVhZCBpcwo+IGFjY2VwdGFibGU/CgpTb3VuZHMgbGlrZSB5b3UgYXJlIGp1c3Qg cmVjcmVhdGluZyB0aGUgZnVuY3Rpb24gbWFuYWdlbWVudCB0aGF0IGZ0cmFjZQpoYXMuIEl0IGFs c28gY2FuIGFkZCB0aG91c2FuZHMgb2YgdHJhbXBvbGluZXMgdmVyeSBxdWlja2x5LCBiZWNhdXNl IGl0IGRvZXMKaXQgaW4gYmF0Y2hlcy4gSXQgdGFrZXMgc3BlY2lhbCBzeW5jaHJvbml6YXRpb24g c3RlcHMgdG8gYXR0YWNoIHRvIGZlbnRyeS4KZnRyYWNlIChhbmQgSSBiZWxpZXZlIG11bHRpLWtw cm9iZXMpIHVwZGF0ZXMgYWxsIHRoZSBhdHRhY2htZW50cyBmb3IgZWFjaApzdGVwLCBzbyB0aGUg c3luY2hyb25pemF0aW9uIG5lZWRlZCBpcyBvbmx5IGRvbmUgb25jZS4KCklmIHlvdSByZWFsbHkg d2FudCB0byBoYXZlIHRob3VzYW5kcyBvZiBmdW5jdGlvbnMsIHdoeSBub3QganVzdCByZWdpc3Rl ciBpdAp3aXRoIGZ0cmFjZSBpdHNlbGYuIEl0IHdpbGwgZ2l2ZSB5b3UgdGhlIGFyZ3VtZW50cyB2 aWEgdGhlIGZ0cmFjZV9yZWdzCnN0cnVjdHVyZS4gQ2FuJ3QgeW91IGp1c3QgcmVnaXN0ZXIgYSBw cm9ncmFtIGFzIHRoZSBjYWxsYmFjaz8KCkl0IHdpbGwgcHJvYmFibHkgbWFrZSB5b3VyIGFjY291 bnRpbmcgbXVjaCBlYXNpZXIsIGFuZCBqdXN0IGxldCBmdHJhY2UKaGFuZGxlIHRoZSBmZW50cnkg bG9naWMuIFRoYXQncyB3aGF0IGl0IHdhcyBtYWRlIHRvIGRvLgoKLS0gU3RldmUKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwg bWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK