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 85A37C18E7C for ; Wed, 26 Feb 2025 02:56:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References: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=8VbGh7PDuhiz6ITk0qrJ7mh9i2e0MKemWMGvyv5rIM8=; b=ok0COZrw84hqB2ziV/xrkL8Q6g LXRtcdI8ld2Zy5/3yczLuYY6M/PPwT2oQ1DhBpAY45sjbINdFXqMUqTue2rksV0RcVUXCbAGR7mE3 P0owavX9eS1X7uSXw10NQ/RlWzTeAw3aTXmlAhv6Qb7DRcnuAcGG+PByia5UXlwObZRQNYxlUhzfx HRys+YOHbXcFYJ9z4XxqbkWyQPfj/x37Ln8GZhZKAlj0uYkFd+fipdF2J4gNGIg+Czm+s0lbziJ69 dDWmLkXZmlibyJl7wvE7nyz987GDWyDWDYPKXCQ7YqZVAhqMSFakDlboPsoZ2huGicedJFTPQtuYR REdtj0qA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tn7ah-00000002EAy-1LuC; Wed, 26 Feb 2025 02:56:07 +0000 Received: from tor.source.kernel.org ([2600:3c04::f03c:95ff:fe5e:7468]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tn7Ss-00000002DKC-06nk; Wed, 26 Feb 2025 02:48:02 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 114E961210; Wed, 26 Feb 2025 02:47:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E317EC4CEDD; Wed, 26 Feb 2025 02:47:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740538081; bh=J4YodrPtFGJQTypoQfeFjZBSXm+MIeUL45ni49ZCBe8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=VtjEi/fRBnNN60i/JT7T7+OH3W/Ki+1FgriQzHu/E6Yj9MU5bf3r21DRa3//dVsjZ XbfpRCuevtGA34+CSsFbgfoslWujRat6+vCgdqv6lfa/kKqhxAKnM6iXK+Blofm3W5 6agLJp03xZE4Qj872VAjAOXRJKkIzFUz0RpniqmVSSQsgMXTCLvRigRKnoNGzUuvO/ DvXvGgrcOUARtUhSKq7Rx66iLCxmXlp67jAF5qmIBmgIuypRvQf5DrFF4G1q3JUrmM jNmFuPSL9iCE9ef2aDk87uEVCiDEZXGQ7CTfLzc42hGiepHQqCMXHFMHYq8OFWwZ+c Vz57haOSZaNKA== Date: Tue, 25 Feb 2025 18:47:58 -0800 From: Namhyung Kim To: Ian Rogers Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , guoren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Charlie Jenkins , Bibo Mao , Huacai Chen , Catalin Marinas , Jiri Slaby , =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , Howard Chu , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, "linux-csky@vger.kernel.org" , linux-riscv@lists.infradead.org, linux-mips@vger.kernel.org, Arnd Bergmann Subject: Re: [PATCH v3 0/8] perf: Support multiple system call tables in the build Message-ID: References: <20250219185657.280286-1-irogers@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Mon, Feb 24, 2025 at 09:40:55PM -0800, Namhyung Kim wrote: > On Mon, Feb 24, 2025 at 08:37:01PM -0800, Ian Rogers wrote: > > On Mon, Feb 24, 2025 at 7:05 PM Namhyung Kim wrote: > > > > > > On Wed, Feb 19, 2025 at 10:56:49AM -0800, Ian Rogers wrote: > > > > This work builds on the clean up of system call tables and removal of > > > > libaudit by Charlie Jenkins . > > > > > > > > The system call table in perf trace is used to map system call numbers > > > > to names and vice versa. Prior to these changes, a single table > > > > matching the perf binary's build was present. The table would be > > > > incorrect if tracing say a 32-bit binary from a 64-bit version of > > > > perf, the names and numbers wouldn't match. > > > > > > > > Change the build so that a single system call file is built and the > > > > potentially multiple tables are identifiable from the ELF machine type > > > > of the process being examined. To determine the ELF machine type, the > > > > executable's header is read from /proc/pid/exe with fallbacks to using > > > > the perf's binary type when unknown. > > > > > > > > Remove some runtime types used by the system call tables and make > > > > equivalents generated at build time. > > > > > > So I tested this with a test program. > > > > > > $ cat a.c > > > #include > > > int main(void) > > > { > > > char buf[4096]; > > > FILE *fp = fopen("a.c", "r"); > > > size_t len; > > > > > > len = fread(buf, sizeof(buf), 1, fp); > > > fwrite(buf, 1, len, stdout); > > > fflush(stdout); > > > fclose(fp); > > > return 0; > > > } > > > > > > $ gcc -o a64.out a.c > > > $ gcc -o a32.out -m32 a.c > > > > > > $ ./perf version > > > perf version 6.14.rc1.ge002a64f6188 > > > > > > $ git show > > > commit e002a64f61882626992dd6513c0db3711c06fea7 (HEAD -> perf-check) > > > Author: Ian Rogers > > > Date: Wed Feb 19 10:56:57 2025 -0800 > > > > > > perf syscalltbl: Mask off ABI type for MIPS system calls > > > > > > Arnd Bergmann described that MIPS system calls don't necessarily start > > > from 0 as an ABI prefix is applied: > > > https://lore.kernel.org/lkml/8ed7dfb2-1e4d-4aa4-a04b-0397a89365d1@app.fastmail.com/ > > > When decoding the "id" (aka system call number) for MIPS ignore values > > > greater-than 1000. > > > > > > Signed-off-by: Ian Rogers > > > > > > It works well with 64bit. > > > > > > $ sudo ./perf trace ./a64.out |& tail > > > 0.266 ( 0.007 ms): a64.out/858681 munmap(addr: 0x7f392723a000, len: 109058) = 0 > > > 0.286 ( 0.002 ms): a64.out/858681 getrandom(ubuf: 0x7f3927232178, len: 8, flags: NONBLOCK) = 8 > > > 0.289 ( 0.001 ms): a64.out/858681 brk() = 0x56419ecf7000 > > > 0.291 ( 0.002 ms): a64.out/858681 brk(brk: 0x56419ed18000) = 0x56419ed18000 > > > 0.299 ( 0.009 ms): a64.out/858681 openat(dfd: CWD, filename: "a.c") = 3 > > > 0.312 ( 0.001 ms): a64.out/858681 fstat(fd: 3, statbuf: 0x7ffdfadf1eb0) = 0 > > > 0.315 ( 0.002 ms): a64.out/858681 read(fd: 3, buf: 0x7ffdfadf2030, count: 4096) = 211 > > > 0.318 ( 0.009 ms): a64.out/858681 read(fd: 3, buf: 0x56419ecf7480, count: 4096) = 0 > > > 0.330 ( 0.001 ms): a64.out/858681 close(fd: 3) = 0 > > > 0.338 ( ): a64.out/858681 exit_group() = ? > > > > > > But 32bit is still broken and use 64bit syscall table wrongly. > > > > > > $ file a32.out > > > a32.out: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, > > > BuildID[sha1]=6eea873c939012e6c715e8f030261642bf61cb4e, for GNU/Linux 3.2.0, not stripped > > > > > > $ sudo ./perf trace ./a32.out |& tail > > > 0.296 ( 0.001 ms): a32.out/858699 getxattr(pathname: "", name: "������", value: 0xf7f6ce14, size: 1) = 0 > > > 0.305 ( 0.007 ms): a32.out/858699 fchmod(fd: -134774784, mode: IFLNK|ISUID|ISVTX|IWOTH|0x10000) = 0 > > > 0.333 ( 0.001 ms): a32.out/858699 recvfrom(size: 4160146964, flags: RST|0x20000, addr: 0xf7f6ce14, addr_len: 0xf7f71278) = 1481879552 > > > 0.335 ( 0.004 ms): a32.out/858699 recvfrom(fd: 1482014720, ubuf: 0xf7f71278, size: 4160146964, flags: NOSIGNAL|MORE|WAITFORONE|BATCH|SPLICE_PAGES|CMSG_CLOEXEC|0x10500000, addr: 0xf7f6ce14, addr_len: 0xf7f71278) = 1482014720 > > > 0.355 ( 0.002 ms): a32.out/858699 recvfrom(fd: 1482018816, ubuf: 0x5855d000, size: 4160146964, flags: RST|NOSIGNAL|MORE|WAITFORONE|BATCH|SPLICE_PAGES|CMSG_CLOEXEC|0x10500000, addr: 0xf7f6ce14, addr_len: 0xf7f71278) = 1482018816 > > > 0.362 ( 0.010 ms): a32.out/858699 preadv(fd: 4294967196, vec: (struct iovec){.iov_base = (void *)0x1b01000000632e62,.iov_len = (__kernel_size_t)1125899909479171,}, pos_h: 4160146964) = 3 > > > 0.385 ( 0.002 ms): a32.out/858699 close(fd: 3) = 211 > > > 0.388 ( 0.001 ms): a32.out/858699 close(fd: 3) = 0 > > > 0.393 ( 0.002 ms): a32.out/858699 lstat(filename: "") = 0 > > > 0.396 ( 0.004 ms): a32.out/858699 recvfrom(fd: 1482014720, size: 4160146964, flags: NOSIGNAL|MORE|WAITFORONE|BATCH|SPLICE_PAGES|CMSG_CLOEXEC|0x10500000, addr: 0xf7f6ce14, addr_len: 0xf7f71278) = 1482014720 > > > > > > The last 5 should be openat, read, read, close and brk(?). > > > > That's strange as nearly the same test works for me: > > ``` > > $ git show > > commit 7920020237af8138f7be1a21be9a2918a71ddc5e (HEAD -> ptn-syscalltbl) > > Author: Ian Rogers > > Date: Fri Jan 31 21:34:07 2025 -0800 > > > > perf syscalltbl: Mask off ABI type for MIPS system calls > > > > Arnd Bergmann described that MIPS system calls don't necessarily start > > from 0 as an ABI prefix is applied: > > https://lore.kernel.org/lkml/8ed7dfb2-1e4d-4aa4-a04b-0397a89365d1@app.fastmail.com/ > > When decoding the "id" (aka system call number) for MIPS ignore values > > greater-than 1000. > > > > Signed-off-by: Ian Rogers > > .. > > $ file a.out > > a.out: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), > > dynamically linked, interpreter /lib/ld-linux.so.2, > > BuildID[sha1]=3fcd28f85a27a3108941661a91dbc675c06868f9, for GNU/Linux > > 3.2.0, not stripped > > $ sudo /tmp/perf/perf trace ./a.out > > ... > > ? ( ): a.out/218604 ... [continued]: execve()) > > = 0 > > 0.067 ( 0.003 ms): a.out/218604 brk() > > = 0x5749e000 > > 0.154 ( 0.007 ms): a.out/218604 access(filename: 0xf7fc7f28, > > mode: R) = -1 ENOENT (No such file or > > directory) > > 0.168 ( 0.023 ms): a.out/218604 openat(dfd: CWD, filename: > > 0xf7fc44c3, flags: RDONLY|CLOEXEC|LARGEFILE) = 3 > > 0.193 ( 0.006 ms): a.out/218604 statx(dfd: > > 3, filename: 0xf7fc510a, flags: > > NO_AUTOMOUNT|EMPTY_PATH, mask: > > TYPE|MODE|NLINK|UID|GID|ATIME|MTIME|CTIME|INO|SIZE|BLOCKS, buffer: > > 0xffaa6b88) = 0 > > 0.212 ( 0.002 ms): a.out/218604 close(fd: 3) > > = 0 > > 0.233 ( 0.019 ms): a.out/218604 openat(dfd: CWD, filename: > > 0xf7f973e0, flags: RDONLY|CLOEXEC|LARGEFILE) = 3 > > 0.255 ( 0.004 ms): a.out/218604 read(fd: 3, > > buf: 0xffaa6df0, count: 512) = 512 > > 0.262 ( 0.003 ms): a.out/218604 statx(dfd: > > 3, filename: 0xf7fc510a, flags: > > NO_AUTOMOUNT|EMPTY_PATH, mask: > > TYPE|MODE|NLINK|UID|GID|ATIME|MTIME|CTIME|INO|SIZE|BLOCKS, buffer: > > 0xffaa6b38) = 0 > > 0.347 ( 0.002 ms): a.out/218604 close(fd: 3) > > = 0 > > 0.372 ( 0.002 ms): a.out/218604 set_tid_address(tidptr: > > 0xf7f98528) = 218604 (a.out) > > 0.376 ( 0.002 ms): a.out/218604 set_robust_list(head: 0xf7f9852c, > > len: 12) = > > 0.381 ( 0.002 ms): a.out/218604 rseq(rseq: 0xf7f98960, rseq_len: > > 32, sig: 1392848979) = > > 0.469 ( 0.010 ms): a.out/218604 mprotect(start: 0xf7f6e000, len: > > 8192, prot: READ) = 0 > > 0.489 ( 0.007 ms): a.out/218604 mprotect(start: 0x5661a000, len: > > 4096, prot: READ) = 0 > > 0.503 ( 0.007 ms): a.out/218604 mprotect(start: 0xf7fd0000, len: > > 8192, prot: READ) = 0 > > 0.550 ( 0.015 ms): a.out/218604 munmap(addr: 0xf7f7b000, len: > > 111198) = 0 > > 0.589 ( 0.035 ms): a.out/218604 openat(dfd: CWD, filename: > > 0x56619008) = 3 > > 0.627 ( 0.024 ms): a.out/218604 read(fd: 3, > > buf: 0xffaa68fc, count: 4096) = 1437 > > 0.654 ( 0.090 ms): a.out/218604 write(fd: 1, buf: , > > count: 1437) = 1437 > > 0.766 (1000.164 ms): a.out/218604 clock_nanosleep(rqtp: > > 0xffaa6824, rmtp: 0xffaa681c) = 0 > > 1000.942 ( ): a.out/218604 exit_group() > > $ file /tmp/perf/perf > > /tmp/perf/perf: ELF 64-bit LSB pie executable, x86-64, version 1 > > (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, > > BuildID[sha1]=60b07f65d2559a7193b2d1d36cfa00054dfbd076, for GNU/Linux > > 3.2.0, with debug_info, not stripped > > ``` > > Perhaps your a.out binary was built as an x32 one? > > Looking under the covers with gdb: > > ``` > > $ sudo gdb --args /tmp/perf/perf trace ./a.out > > GNU gdb (Debian 15.1-1) 15.1 > > ... > > Reading symbols from /tmp/perf/perf... > > (gdb) b syscalltbl__name > > Breakpoint 1 at 0x23a51b: file util/syscalltbl.c, line 47. > > (gdb) r > > ... > > [Detaching after vfork from child process 218826] > > > > Breakpoint 1, syscalltbl__name (e_machine=3, id=11) at util/syscalltbl.c:47 > > 47 const struct syscalltbl *table = find_table(e_machine); > > ``` > > So the e_machine is 3 which corresponds to EM_386. > > > > I've not fixed every use of syscalltbl but I believe this one is working. > > Strange. I'm seeing 62 (x86_64). > > $ sudo gdb -q --args ./perf trace ./a32.out > Reading symbols from ./perf... > (gdb) b syscalltbl__name > Breakpoint 1 at 0x27998b: file util/syscalltbl.c, line 46. > (gdb) r > Starting program: /home/namhyung/tmp/perf trace ./a32.out > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". > [Detaching after fork from child process 886888] > > Breakpoint 1, syscalltbl__name (e_machine=62, id=156) at util/syscalltbl.c:46 > 46 { > > But the binary is i386. > > $ file a32.out > a32.out: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, > BuildID[sha1]=6eea873c939012e6c715e8f030261642bf61cb4e, for GNU/Linux 3.2.0, not stripped > > $ readelf -h a32.out > ELF Header: > Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 > Class: ELF32 > Data: 2's complement, little endian > Version: 1 (current) > OS/ABI: UNIX - System V > ABI Version: 0 > Type: DYN (Position-Independent Executable file) > Machine: Intel 80386 > Version: 0x1 > Entry point address: 0x10a0 > Start of program headers: 52 (bytes into file) > Start of section headers: 13932 (bytes into file) > Flags: 0x0 > Size of this header: 52 (bytes) > Size of program headers: 32 (bytes) > Number of program headers: 11 > Size of section headers: 40 (bytes) > Number of section headers: 30 > Section header string table index: 29 > > $ hexdump -C -n 32 a32.out > 00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| > 00000010 03 00 03 00 01 00 00 00 a0 10 00 00 34 00 00 00 |............4...| > 00000020 ----- ----- > ^ ^ > | | > ET_DYN | > EM_386 > I found it failed to open /proc/PID/exe for some reason. It failed with ENOENT but I've confirmed there's /proc/PID directory. Strange... Thanks, Namhyung 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 E2BDDC021BE for ; Wed, 26 Feb 2025 02:56:14 +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:In-Reply-To:MIME-Version:References: 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=JOwlJKNjtHUs7tFvt/TF3YXa8k6cElc8jZzOhFX1hQk=; b=kmw/8H4PU7L7GS RJTUxZ/eA5/HF6Xbp13sJLJGn5BeEAPnBHyrIRqkZ2liEByxLl/MV9xr0IKz53mRvhYyUC2A2GWKp zqJlMCTyNWyUNCSI6G/csHTaFJfIsagaZD5lU6vGpdXuoQbOiQUmScMpEKIQ22H3qbj0QZ8zGRCXu Ceqd0rk4HaK4RyuHAp5UtC1q7+vRjoDeiKGHYs7ddy0g6Et9IB5TcVQouyCk47gnDFQilooQu6D1L b+t2oTBcRFDuIAgig14RmODZenJg3E3QcXz0B8X6HEFQoBkYqmh1xWO7rXbOGxsQ+hxvzzElgLcH3 Fv3gSr2sWEXGp09TS7Cw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tn7ah-00000002EBG-3aYQ; Wed, 26 Feb 2025 02:56:07 +0000 Received: from tor.source.kernel.org ([2600:3c04::f03c:95ff:fe5e:7468]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tn7Ss-00000002DKC-06nk; Wed, 26 Feb 2025 02:48:02 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 114E961210; Wed, 26 Feb 2025 02:47:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E317EC4CEDD; Wed, 26 Feb 2025 02:47:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740538081; bh=J4YodrPtFGJQTypoQfeFjZBSXm+MIeUL45ni49ZCBe8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=VtjEi/fRBnNN60i/JT7T7+OH3W/Ki+1FgriQzHu/E6Yj9MU5bf3r21DRa3//dVsjZ XbfpRCuevtGA34+CSsFbgfoslWujRat6+vCgdqv6lfa/kKqhxAKnM6iXK+Blofm3W5 6agLJp03xZE4Qj872VAjAOXRJKkIzFUz0RpniqmVSSQsgMXTCLvRigRKnoNGzUuvO/ DvXvGgrcOUARtUhSKq7Rx66iLCxmXlp67jAF5qmIBmgIuypRvQf5DrFF4G1q3JUrmM jNmFuPSL9iCE9ef2aDk87uEVCiDEZXGQ7CTfLzc42hGiepHQqCMXHFMHYq8OFWwZ+c Vz57haOSZaNKA== Date: Tue, 25 Feb 2025 18:47:58 -0800 From: Namhyung Kim To: Ian Rogers Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , guoren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Charlie Jenkins , Bibo Mao , Huacai Chen , Catalin Marinas , Jiri Slaby , =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , Howard Chu , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, "linux-csky@vger.kernel.org" , linux-riscv@lists.infradead.org, linux-mips@vger.kernel.org, Arnd Bergmann Subject: Re: [PATCH v3 0/8] perf: Support multiple system call tables in the build Message-ID: References: <20250219185657.280286-1-irogers@google.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: 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 T24gTW9uLCBGZWIgMjQsIDIwMjUgYXQgMDk6NDA6NTVQTSAtMDgwMCwgTmFtaHl1bmcgS2ltIHdy b3RlOgo+IE9uIE1vbiwgRmViIDI0LCAyMDI1IGF0IDA4OjM3OjAxUE0gLTA4MDAsIElhbiBSb2dl cnMgd3JvdGU6Cj4gPiBPbiBNb24sIEZlYiAyNCwgMjAyNSBhdCA3OjA14oCvUE0gTmFtaHl1bmcg S2ltIDxuYW1oeXVuZ0BrZXJuZWwub3JnPiB3cm90ZToKPiA+ID4KPiA+ID4gT24gV2VkLCBGZWIg MTksIDIwMjUgYXQgMTA6NTY6NDlBTSAtMDgwMCwgSWFuIFJvZ2VycyB3cm90ZToKPiA+ID4gPiBU aGlzIHdvcmsgYnVpbGRzIG9uIHRoZSBjbGVhbiB1cCBvZiBzeXN0ZW0gY2FsbCB0YWJsZXMgYW5k IHJlbW92YWwgb2YKPiA+ID4gPiBsaWJhdWRpdCBieSBDaGFybGllIEplbmtpbnMgPGNoYXJsaWVA cml2b3NpbmMuY29tPi4KPiA+ID4gPgo+ID4gPiA+IFRoZSBzeXN0ZW0gY2FsbCB0YWJsZSBpbiBw ZXJmIHRyYWNlIGlzIHVzZWQgdG8gbWFwIHN5c3RlbSBjYWxsIG51bWJlcnMKPiA+ID4gPiB0byBu YW1lcyBhbmQgdmljZSB2ZXJzYS4gUHJpb3IgdG8gdGhlc2UgY2hhbmdlcywgYSBzaW5nbGUgdGFi bGUKPiA+ID4gPiBtYXRjaGluZyB0aGUgcGVyZiBiaW5hcnkncyBidWlsZCB3YXMgcHJlc2VudC4g VGhlIHRhYmxlIHdvdWxkIGJlCj4gPiA+ID4gaW5jb3JyZWN0IGlmIHRyYWNpbmcgc2F5IGEgMzIt Yml0IGJpbmFyeSBmcm9tIGEgNjQtYml0IHZlcnNpb24gb2YKPiA+ID4gPiBwZXJmLCB0aGUgbmFt ZXMgYW5kIG51bWJlcnMgd291bGRuJ3QgbWF0Y2guCj4gPiA+ID4KPiA+ID4gPiBDaGFuZ2UgdGhl IGJ1aWxkIHNvIHRoYXQgYSBzaW5nbGUgc3lzdGVtIGNhbGwgZmlsZSBpcyBidWlsdCBhbmQgdGhl Cj4gPiA+ID4gcG90ZW50aWFsbHkgbXVsdGlwbGUgdGFibGVzIGFyZSBpZGVudGlmaWFibGUgZnJv bSB0aGUgRUxGIG1hY2hpbmUgdHlwZQo+ID4gPiA+IG9mIHRoZSBwcm9jZXNzIGJlaW5nIGV4YW1p bmVkLiBUbyBkZXRlcm1pbmUgdGhlIEVMRiBtYWNoaW5lIHR5cGUsIHRoZQo+ID4gPiA+IGV4ZWN1 dGFibGUncyBoZWFkZXIgaXMgcmVhZCBmcm9tIC9wcm9jL3BpZC9leGUgd2l0aCBmYWxsYmFja3Mg dG8gdXNpbmcKPiA+ID4gPiB0aGUgcGVyZidzIGJpbmFyeSB0eXBlIHdoZW4gdW5rbm93bi4KPiA+ ID4gPgo+ID4gPiA+IFJlbW92ZSBzb21lIHJ1bnRpbWUgdHlwZXMgdXNlZCBieSB0aGUgc3lzdGVt IGNhbGwgdGFibGVzIGFuZCBtYWtlCj4gPiA+ID4gZXF1aXZhbGVudHMgZ2VuZXJhdGVkIGF0IGJ1 aWxkIHRpbWUuCj4gPiA+Cj4gPiA+IFNvIEkgdGVzdGVkIHRoaXMgd2l0aCBhIHRlc3QgcHJvZ3Jh bS4KPiA+ID4KPiA+ID4gICAkIGNhdCBhLmMKPiA+ID4gICAjaW5jbHVkZSA8c3RkaW8uaD4KPiA+ ID4gICBpbnQgbWFpbih2b2lkKQo+ID4gPiAgIHsKPiA+ID4gICAgICAgICBjaGFyIGJ1Zls0MDk2 XTsKPiA+ID4gICAgICAgICBGSUxFICpmcCA9IGZvcGVuKCJhLmMiLCAiciIpOwo+ID4gPiAgICAg ICAgIHNpemVfdCBsZW47Cj4gPiA+Cj4gPiA+ICAgICAgICAgbGVuID0gZnJlYWQoYnVmLCBzaXpl b2YoYnVmKSwgMSwgZnApOwo+ID4gPiAgICAgICAgIGZ3cml0ZShidWYsIDEsIGxlbiwgc3Rkb3V0 KTsKPiA+ID4gICAgICAgICBmZmx1c2goc3Rkb3V0KTsKPiA+ID4gICAgICAgICBmY2xvc2UoZnAp Owo+ID4gPiAgICAgICAgIHJldHVybiAwOwo+ID4gPiAgIH0KPiA+ID4KPiA+ID4gICAkIGdjYyAt byBhNjQub3V0IGEuYwo+ID4gPiAgICQgZ2NjIC1vIGEzMi5vdXQgLW0zMiBhLmMKPiA+ID4KPiA+ ID4gICAkIC4vcGVyZiB2ZXJzaW9uCj4gPiA+ICAgcGVyZiB2ZXJzaW9uIDYuMTQucmMxLmdlMDAy YTY0ZjYxODgKPiA+ID4KPiA+ID4gICAkIGdpdCBzaG93Cj4gPiA+ICAgY29tbWl0IGUwMDJhNjRm NjE4ODI2MjY5OTJkZDY1MTNjMGRiMzcxMWMwNmZlYTcgKEhFQUQgLT4gcGVyZi1jaGVjaykKPiA+ ID4gICBBdXRob3I6IElhbiBSb2dlcnMgPGlyb2dlcnNAZ29vZ2xlLmNvbT4KPiA+ID4gICBEYXRl OiAgIFdlZCBGZWIgMTkgMTA6NTY6NTcgMjAyNSAtMDgwMAo+ID4gPgo+ID4gPiAgICAgICBwZXJm IHN5c2NhbGx0Ymw6IE1hc2sgb2ZmIEFCSSB0eXBlIGZvciBNSVBTIHN5c3RlbSBjYWxscwo+ID4g Pgo+ID4gPiAgICAgICBBcm5kIEJlcmdtYW5uIGRlc2NyaWJlZCB0aGF0IE1JUFMgc3lzdGVtIGNh bGxzIGRvbid0IG5lY2Vzc2FyaWx5IHN0YXJ0Cj4gPiA+ICAgICAgIGZyb20gMCBhcyBhbiBBQkkg cHJlZml4IGlzIGFwcGxpZWQ6Cj4gPiA+ICAgICAgIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xr bWwvOGVkN2RmYjItMWU0ZC00YWE0LWEwNGItMDM5N2E4OTM2NWQxQGFwcC5mYXN0bWFpbC5jb20v Cj4gPiA+ICAgICAgIFdoZW4gZGVjb2RpbmcgdGhlICJpZCIgKGFrYSBzeXN0ZW0gY2FsbCBudW1i ZXIpIGZvciBNSVBTIGlnbm9yZSB2YWx1ZXMKPiA+ID4gICAgICAgZ3JlYXRlci10aGFuIDEwMDAu Cj4gPiA+Cj4gPiA+ICAgICAgIFNpZ25lZC1vZmYtYnk6IElhbiBSb2dlcnMgPGlyb2dlcnNAZ29v Z2xlLmNvbT4KPiA+ID4KPiA+ID4gSXQgd29ya3Mgd2VsbCB3aXRoIDY0Yml0Lgo+ID4gPgo+ID4g PiAgICQgc3VkbyAuL3BlcmYgdHJhY2UgLi9hNjQub3V0IHwmIHRhaWwKPiA+ID4gICAgICAgIDAu MjY2ICggMC4wMDcgbXMpOiBhNjQub3V0Lzg1ODY4MSBtdW5tYXAoYWRkcjogMHg3ZjM5MjcyM2Ew MDAsIGxlbjogMTA5MDU4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwCj4gPiA+ICAg ICAgICAwLjI4NiAoIDAuMDAyIG1zKTogYTY0Lm91dC84NTg2ODEgZ2V0cmFuZG9tKHVidWY6IDB4 N2YzOTI3MjMyMTc4LCBsZW46IDgsIGZsYWdzOiBOT05CTE9DSykgICAgICAgICAgICAgID0gOAo+ ID4gPiAgICAgICAgMC4yODkgKCAwLjAwMSBtcyk6IGE2NC5vdXQvODU4NjgxIGJyaygpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA9IDB4NTY0MTllY2Y3MDAwCj4gPiA+ICAgICAgICAwLjI5MSAoIDAuMDAyIG1zKTogYTY0Lm91 dC84NTg2ODEgYnJrKGJyazogMHg1NjQxOWVkMTgwMDApICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgID0gMHg1NjQxOWVkMTgwMDAKPiA+ID4gICAgICAgIDAuMjk5 ICggMC4wMDkgbXMpOiBhNjQub3V0Lzg1ODY4MSBvcGVuYXQoZGZkOiBDV0QsIGZpbGVuYW1lOiAi YS5jIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAzCj4gPiA+ICAgICAg ICAwLjMxMiAoIDAuMDAxIG1zKTogYTY0Lm91dC84NTg2ODEgZnN0YXQoZmQ6IDMsIHN0YXRidWY6 IDB4N2ZmZGZhZGYxZWIwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMAo+ID4g PiAgICAgICAgMC4zMTUgKCAwLjAwMiBtcyk6IGE2NC5vdXQvODU4NjgxIHJlYWQoZmQ6IDMsIGJ1 ZjogMHg3ZmZkZmFkZjIwMzAsIGNvdW50OiA0MDk2KSAgICAgICAgICAgICAgICAgICAgICAgICA9 IDIxMQo+ID4gPiAgICAgICAgMC4zMTggKCAwLjAwOSBtcyk6IGE2NC5vdXQvODU4NjgxIHJlYWQo ZmQ6IDMsIGJ1ZjogMHg1NjQxOWVjZjc0ODAsIGNvdW50OiA0MDk2KSAgICAgICAgICAgICAgICAg ICAgICAgICA9IDAKPiA+ID4gICAgICAgIDAuMzMwICggMC4wMDEgbXMpOiBhNjQub3V0Lzg1ODY4 MSBjbG9zZShmZDogMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPSAwCj4gPiA+ICAgICAgICAwLjMzOCAoICAgICAgICAgKTogYTY0Lm91 dC84NTg2ODEgZXhpdF9ncm91cCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgID0gPwo+ID4gPgo+ID4gPiBCdXQgMzJiaXQgaXMgc3RpbGwg YnJva2VuIGFuZCB1c2UgNjRiaXQgc3lzY2FsbCB0YWJsZSB3cm9uZ2x5Lgo+ID4gPgo+ID4gPiAg ICQgZmlsZSBhMzIub3V0Cj4gPiA+ICAgYTMyLm91dDogRUxGIDMyLWJpdCBMU0IgcGllIGV4ZWN1 dGFibGUsIEludGVsIDgwMzg2LCB2ZXJzaW9uIDEgKFNZU1YpLCBkeW5hbWljYWxseSBsaW5rZWQs IGludGVycHJldGVyIC9saWIvbGQtbGludXguc28uMiwKPiA+ID4gICBCdWlsZElEW3NoYTFdPTZl ZWE4NzNjOTM5MDEyZTZjNzE1ZThmMDMwMjYxNjQyYmY2MWNiNGUsIGZvciBHTlUvTGludXggMy4y LjAsIG5vdCBzdHJpcHBlZAo+ID4gPgo+ID4gPiAgICQgc3VkbyAuL3BlcmYgdHJhY2UgLi9hMzIu b3V0IHwmIHRhaWwKPiA+ID4gICAgICAgIDAuMjk2ICggMC4wMDEgbXMpOiBhMzIub3V0Lzg1ODY5 OSBnZXR4YXR0cihwYXRobmFtZTogIiIsIG5hbWU6ICLvv73vv73vv73vv73vv73vv70iLCB2YWx1 ZTogMHhmN2Y2Y2UxNCwgc2l6ZTogMSkgID0gMAo+ID4gPiAgICAgICAgMC4zMDUgKCAwLjAwNyBt cyk6IGEzMi5vdXQvODU4Njk5IGZjaG1vZChmZDogLTEzNDc3NDc4NCwgbW9kZTogSUZMTkt8SVNV SUR8SVNWVFh8SVdPVEh8MHgxMDAwMCkgICAgICAgICA9IDAKPiA+ID4gICAgICAgIDAuMzMzICgg MC4wMDEgbXMpOiBhMzIub3V0Lzg1ODY5OSByZWN2ZnJvbShzaXplOiA0MTYwMTQ2OTY0LCBmbGFn czogUlNUfDB4MjAwMDAsIGFkZHI6IDB4ZjdmNmNlMTQsIGFkZHJfbGVuOiAweGY3ZjcxMjc4KSA9 IDE0ODE4Nzk1NTIKPiA+ID4gICAgICAgIDAuMzM1ICggMC4wMDQgbXMpOiBhMzIub3V0Lzg1ODY5 OSByZWN2ZnJvbShmZDogMTQ4MjAxNDcyMCwgdWJ1ZjogMHhmN2Y3MTI3OCwgc2l6ZTogNDE2MDE0 Njk2NCwgZmxhZ3M6IE5PU0lHTkFMfE1PUkV8V0FJVEZPUk9ORXxCQVRDSHxTUExJQ0VfUEFHRVN8 Q01TR19DTE9FWEVDfDB4MTA1MDAwMDAsIGFkZHI6IDB4ZjdmNmNlMTQsIGFkZHJfbGVuOiAweGY3 ZjcxMjc4KSA9IDE0ODIwMTQ3MjAKPiA+ID4gICAgICAgIDAuMzU1ICggMC4wMDIgbXMpOiBhMzIu b3V0Lzg1ODY5OSByZWN2ZnJvbShmZDogMTQ4MjAxODgxNiwgdWJ1ZjogMHg1ODU1ZDAwMCwgc2l6 ZTogNDE2MDE0Njk2NCwgZmxhZ3M6IFJTVHxOT1NJR05BTHxNT1JFfFdBSVRGT1JPTkV8QkFUQ0h8 U1BMSUNFX1BBR0VTfENNU0dfQ0xPRVhFQ3wweDEwNTAwMDAwLCBhZGRyOiAweGY3ZjZjZTE0LCBh ZGRyX2xlbjogMHhmN2Y3MTI3OCkgPSAxNDgyMDE4ODE2Cj4gPiA+ICAgICAgICAwLjM2MiAoIDAu MDEwIG1zKTogYTMyLm91dC84NTg2OTkgcHJlYWR2KGZkOiA0Mjk0OTY3MTk2LCB2ZWM6IChzdHJ1 Y3QgaW92ZWMpey5pb3ZfYmFzZSA9ICh2b2lkICopMHgxYjAxMDAwMDAwNjMyZTYyLC5pb3ZfbGVu ID0gKF9fa2VybmVsX3NpemVfdCkxMTI1ODk5OTA5NDc5MTcxLH0sIHBvc19oOiA0MTYwMTQ2OTY0 KSA9IDMKPiA+ID4gICAgICAgIDAuMzg1ICggMC4wMDIgbXMpOiBhMzIub3V0Lzg1ODY5OSBjbG9z ZShmZDogMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPSAyMTEKPiA+ID4gICAgICAgIDAuMzg4ICggMC4wMDEgbXMpOiBhMzIub3V0Lzg1 ODY5OSBjbG9zZShmZDogMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPSAwCj4gPiA+ICAgICAgICAwLjM5MyAoIDAuMDAyIG1zKTogYTMy Lm91dC84NTg2OTkgbHN0YXQoZmlsZW5hbWU6ICIiKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID0gMAo+ID4gPiAgICAgICAgMC4zOTYgKCAwLjAwNCBt cyk6IGEzMi5vdXQvODU4Njk5IHJlY3Zmcm9tKGZkOiAxNDgyMDE0NzIwLCBzaXplOiA0MTYwMTQ2 OTY0LCBmbGFnczogTk9TSUdOQUx8TU9SRXxXQUlURk9ST05FfEJBVENIfFNQTElDRV9QQUdFU3xD TVNHX0NMT0VYRUN8MHgxMDUwMDAwMCwgYWRkcjogMHhmN2Y2Y2UxNCwgYWRkcl9sZW46IDB4Zjdm NzEyNzgpID0gMTQ4MjAxNDcyMAo+ID4gPgo+ID4gPiBUaGUgbGFzdCA1IHNob3VsZCBiZSBvcGVu YXQsIHJlYWQsIHJlYWQsIGNsb3NlIGFuZCBicmsoPykuCj4gPiAKPiA+IFRoYXQncyBzdHJhbmdl IGFzIG5lYXJseSB0aGUgc2FtZSB0ZXN0IHdvcmtzIGZvciBtZToKPiA+IGBgYAo+ID4gJCBnaXQg c2hvdwo+ID4gY29tbWl0IDc5MjAwMjAyMzdhZjgxMzhmN2JlMWEyMWJlOWEyOTE4YTcxZGRjNWUg KEhFQUQgLT4gcHRuLXN5c2NhbGx0YmwpCj4gPiBBdXRob3I6IElhbiBSb2dlcnMgPGlyb2dlcnNA Z29vZ2xlLmNvbT4KPiA+IERhdGU6ICAgRnJpIEphbiAzMSAyMTozNDowNyAyMDI1IC0wODAwCj4g PiAKPiA+ICAgIHBlcmYgc3lzY2FsbHRibDogTWFzayBvZmYgQUJJIHR5cGUgZm9yIE1JUFMgc3lz dGVtIGNhbGxzCj4gPiAKPiA+ICAgIEFybmQgQmVyZ21hbm4gZGVzY3JpYmVkIHRoYXQgTUlQUyBz eXN0ZW0gY2FsbHMgZG9uJ3QgbmVjZXNzYXJpbHkgc3RhcnQKPiA+ICAgIGZyb20gMCBhcyBhbiBB QkkgcHJlZml4IGlzIGFwcGxpZWQ6Cj4gPiAgICBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21s LzhlZDdkZmIyLTFlNGQtNGFhNC1hMDRiLTAzOTdhODkzNjVkMUBhcHAuZmFzdG1haWwuY29tLwo+ ID4gICAgV2hlbiBkZWNvZGluZyB0aGUgImlkIiAoYWthIHN5c3RlbSBjYWxsIG51bWJlcikgZm9y IE1JUFMgaWdub3JlIHZhbHVlcwo+ID4gICAgZ3JlYXRlci10aGFuIDEwMDAuCj4gPiAKPiA+ICAg IFNpZ25lZC1vZmYtYnk6IElhbiBSb2dlcnMgPGlyb2dlcnNAZ29vZ2xlLmNvbT4KPiA+IC4uCj4g PiAkIGZpbGUgYS5vdXQKPiA+IGEub3V0OiBFTEYgMzItYml0IExTQiBwaWUgZXhlY3V0YWJsZSwg SW50ZWwgODAzODYsIHZlcnNpb24gMSAoU1lTViksCj4gPiBkeW5hbWljYWxseSBsaW5rZWQsIGlu dGVycHJldGVyIC9saWIvbGQtbGludXguc28uMiwKPiA+IEJ1aWxkSURbc2hhMV09M2ZjZDI4Zjg1 YTI3YTMxMDg5NDE2NjFhOTFkYmM2NzVjMDY4NjhmOSwgZm9yIEdOVS9MaW51eAo+ID4gMy4yLjAs IG5vdCBzdHJpcHBlZAo+ID4gJCBzdWRvIC90bXAvcGVyZi9wZXJmIHRyYWNlIC4vYS5vdXQKPiA+ IC4uLgo+ID4gICAgICAgICAgPyAoICAgICAgICAgKTogYS5vdXQvMjE4NjA0ICAuLi4gW2NvbnRp bnVlZF06IGV4ZWN2ZSgpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PSAwCj4gPiAgICAgIDAuMDY3ICggMC4wMDMgbXMpOiBhLm91dC8yMTg2MDQgYnJrKCkKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg1NzQ5ZTAwMAo+ID4gICAgICAw LjE1NCAoIDAuMDA3IG1zKTogYS5vdXQvMjE4NjA0IGFjY2VzcyhmaWxlbmFtZTogMHhmN2ZjN2Yy OCwKPiA+IG1vZGU6IFIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAtMSBFTk9F TlQgKE5vIHN1Y2ggZmlsZSBvcgo+ID4gZGlyZWN0b3J5KQo+ID4gICAgICAwLjE2OCAoIDAuMDIz IG1zKTogYS5vdXQvMjE4NjA0IG9wZW5hdChkZmQ6IENXRCwgZmlsZW5hbWU6Cj4gPiAweGY3ZmM0 NGMzLCBmbGFnczogUkRPTkxZfENMT0VYRUN8TEFSR0VGSUxFKSA9IDMKPiA+ICAgICAgMC4xOTMg KCAwLjAwNiBtcyk6IGEub3V0LzIxODYwNCBzdGF0eChkZmQ6Cj4gPiAzPC9wcm9jLzIxODYwNC9z dGF0dXM+LCBmaWxlbmFtZTogMHhmN2ZjNTEwYSwgZmxhZ3M6Cj4gPiBOT19BVVRPTU9VTlR8RU1Q VFlfUEFUSCwgbWFzazoKPiA+IFRZUEV8TU9ERXxOTElOS3xVSUR8R0lEfEFUSU1FfE1USU1FfENU SU1FfElOT3xTSVpFfEJMT0NLUywgYnVmZmVyOgo+ID4gMHhmZmFhNmI4OCkgPSAwCj4gPiAgICAg IDAuMjEyICggMC4wMDIgbXMpOiBhLm91dC8yMTg2MDQgY2xvc2UoZmQ6IDM8L3Byb2MvMjE4NjA0 L3N0YXR1cz4pCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKPiA+ ICAgICAgMC4yMzMgKCAwLjAxOSBtcyk6IGEub3V0LzIxODYwNCBvcGVuYXQoZGZkOiBDV0QsIGZp bGVuYW1lOgo+ID4gMHhmN2Y5NzNlMCwgZmxhZ3M6IFJET05MWXxDTE9FWEVDfExBUkdFRklMRSkg PSAzCj4gPiAgICAgIDAuMjU1ICggMC4wMDQgbXMpOiBhLm91dC8yMTg2MDQgcmVhZChmZDogMzwv cHJvYy8yMTg2MDQvc3RhdHVzPiwKPiA+IGJ1ZjogMHhmZmFhNmRmMCwgY291bnQ6IDUxMikgICAg ICAgICA9IDUxMgo+ID4gICAgICAwLjI2MiAoIDAuMDAzIG1zKTogYS5vdXQvMjE4NjA0IHN0YXR4 KGRmZDoKPiA+IDM8L3Byb2MvMjE4NjA0L3N0YXR1cz4sIGZpbGVuYW1lOiAweGY3ZmM1MTBhLCBm bGFnczoKPiA+IE5PX0FVVE9NT1VOVHxFTVBUWV9QQVRILCBtYXNrOgo+ID4gVFlQRXxNT0RFfE5M SU5LfFVJRHxHSUR8QVRJTUV8TVRJTUV8Q1RJTUV8SU5PfFNJWkV8QkxPQ0tTLCBidWZmZXI6Cj4g PiAweGZmYWE2YjM4KSA9IDAKPiA+ICAgICAgMC4zNDcgKCAwLjAwMiBtcyk6IGEub3V0LzIxODYw NCBjbG9zZShmZDogMzwvcHJvYy8yMTg2MDQvc3RhdHVzPikKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgID0gMAo+ID4gICAgICAwLjM3MiAoIDAuMDAyIG1zKTogYS5vdXQv MjE4NjA0IHNldF90aWRfYWRkcmVzcyh0aWRwdHI6Cj4gPiAweGY3Zjk4NTI4KSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPSAyMTg2MDQgKGEub3V0KQo+ID4gICAgICAwLjM3NiAo IDAuMDAyIG1zKTogYS5vdXQvMjE4NjA0IHNldF9yb2J1c3RfbGlzdChoZWFkOiAweGY3Zjk4NTJj LAo+ID4gbGVuOiAxMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQo+ID4gICAgICAwLjM4 MSAoIDAuMDAyIG1zKTogYS5vdXQvMjE4NjA0IHJzZXEocnNlcTogMHhmN2Y5ODk2MCwgcnNlcV9s ZW46Cj4gPiAzMiwgc2lnOiAxMzkyODQ4OTc5KSAgICAgICAgICAgICAgICAgPQo+ID4gICAgICAw LjQ2OSAoIDAuMDEwIG1zKTogYS5vdXQvMjE4NjA0IG1wcm90ZWN0KHN0YXJ0OiAweGY3ZjZlMDAw LCBsZW46Cj4gPiA4MTkyLCBwcm90OiBSRUFEKSAgICAgICAgICAgICAgICAgICAgPSAwCj4gPiAg ICAgIDAuNDg5ICggMC4wMDcgbXMpOiBhLm91dC8yMTg2MDQgbXByb3RlY3Qoc3RhcnQ6IDB4NTY2 MWEwMDAsIGxlbjoKPiA+IDQwOTYsIHByb3Q6IFJFQUQpICAgICAgICAgICAgICAgICAgICA9IDAK PiA+ICAgICAgMC41MDMgKCAwLjAwNyBtcyk6IGEub3V0LzIxODYwNCBtcHJvdGVjdChzdGFydDog MHhmN2ZkMDAwMCwgbGVuOgo+ID4gODE5MiwgcHJvdDogUkVBRCkgICAgICAgICAgICAgICAgICAg ID0gMAo+ID4gICAgICAwLjU1MCAoIDAuMDE1IG1zKTogYS5vdXQvMjE4NjA0IG11bm1hcChhZGRy OiAweGY3ZjdiMDAwLCBsZW46Cj4gPiAxMTExOTgpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPSAwCj4gPiAgICAgIDAuNTg5ICggMC4wMzUgbXMpOiBhLm91dC8yMTg2MDQgb3BlbmF0 KGRmZDogQ1dELCBmaWxlbmFtZToKPiA+IDB4NTY2MTkwMDgpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA9IDMKPiA+ICAgICAgMC42MjcgKCAwLjAyNCBtcyk6IGEub3V0LzIxODYwNCBy ZWFkKGZkOiAzPC9wcm9jLzIxODYwNC9zdGF0dXM+LAo+ID4gYnVmOiAweGZmYWE2OGZjLCBjb3Vu dDogNDA5NikgICAgICAgID0gMTQzNwo+ID4gICAgICAwLjY1NCAoIDAuMDkwIG1zKTogYS5vdXQv MjE4NjA0IHdyaXRlKGZkOiAxPC9kZXYvcHRzLzM+LCBidWY6ICwKPiA+IGNvdW50OiAxNDM3KSAg ICAgICAgICAgICAgICAgICAgICAgICAgPSAxNDM3Cj4gPiAgICAgIDAuNzY2ICgxMDAwLjE2NCBt cyk6IGEub3V0LzIxODYwNCBjbG9ja19uYW5vc2xlZXAocnF0cDoKPiA+IDB4ZmZhYTY4MjQsIHJt dHA6IDB4ZmZhYTY4MWMpICAgICAgICAgICAgICAgICAgID0gMAo+ID4gICAxMDAwLjk0MiAoICAg ICAgICAgKTogYS5vdXQvMjE4NjA0IGV4aXRfZ3JvdXAoKQo+ID4gJCBmaWxlIC90bXAvcGVyZi9w ZXJmCj4gPiAvdG1wL3BlcmYvcGVyZjogRUxGIDY0LWJpdCBMU0IgcGllIGV4ZWN1dGFibGUsIHg4 Ni02NCwgdmVyc2lvbiAxCj4gPiAoU1lTViksIGR5bmFtaWNhbGx5IGxpbmtlZCwgaW50ZXJwcmV0 ZXIgL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yLAo+ID4gQnVpbGRJRFtzaGExXT02MGIwN2Y2 NWQyNTU5YTcxOTNiMmQxZDM2Y2ZhMDAwNTRkZmJkMDc2LCBmb3IgR05VL0xpbnV4Cj4gPiAzLjIu MCwgd2l0aCBkZWJ1Z19pbmZvLCBub3Qgc3RyaXBwZWQKPiA+IGBgYAo+ID4gUGVyaGFwcyB5b3Vy IGEub3V0IGJpbmFyeSB3YXMgYnVpbHQgYXMgYW4geDMyIG9uZT8KPiA+IExvb2tpbmcgdW5kZXIg dGhlIGNvdmVycyB3aXRoIGdkYjoKPiA+IGBgYAo+ID4gJCBzdWRvIGdkYiAtLWFyZ3MgL3RtcC9w ZXJmL3BlcmYgdHJhY2UgLi9hLm91dAo+ID4gR05VIGdkYiAoRGViaWFuIDE1LjEtMSkgMTUuMQo+ ID4gLi4uCj4gPiBSZWFkaW5nIHN5bWJvbHMgZnJvbSAvdG1wL3BlcmYvcGVyZi4uLgo+ID4gKGdk YikgYiBzeXNjYWxsdGJsX19uYW1lCj4gPiBCcmVha3BvaW50IDEgYXQgMHgyM2E1MWI6IGZpbGUg dXRpbC9zeXNjYWxsdGJsLmMsIGxpbmUgNDcuCj4gPiAoZ2RiKSByCj4gPiAuLi4KPiA+IFtEZXRh Y2hpbmcgYWZ0ZXIgdmZvcmsgZnJvbSBjaGlsZCBwcm9jZXNzIDIxODgyNl0KPiA+IAo+ID4gQnJl YWtwb2ludCAxLCBzeXNjYWxsdGJsX19uYW1lIChlX21hY2hpbmU9MywgaWQ9MTEpIGF0IHV0aWwv c3lzY2FsbHRibC5jOjQ3Cj4gPiA0NyAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHN5c2NhbGx0 YmwgKnRhYmxlID0gZmluZF90YWJsZShlX21hY2hpbmUpOwo+ID4gYGBgCj4gPiBTbyB0aGUgZV9t YWNoaW5lIGlzIDMgd2hpY2ggY29ycmVzcG9uZHMgdG8gRU1fMzg2Lgo+ID4gCj4gPiBJJ3ZlIG5v dCBmaXhlZCBldmVyeSB1c2Ugb2Ygc3lzY2FsbHRibCBidXQgSSBiZWxpZXZlIHRoaXMgb25lIGlz IHdvcmtpbmcuCj4gCj4gU3RyYW5nZS4gIEknbSBzZWVpbmcgNjIgKHg4Nl82NCkuCj4gCj4gICAk IHN1ZG8gZ2RiIC1xIC0tYXJncyAuL3BlcmYgdHJhY2UgLi9hMzIub3V0Cj4gICBSZWFkaW5nIHN5 bWJvbHMgZnJvbSAuL3BlcmYuLi4KPiAgIChnZGIpIGIgc3lzY2FsbHRibF9fbmFtZQo+ICAgQnJl YWtwb2ludCAxIGF0IDB4Mjc5OThiOiBmaWxlIHV0aWwvc3lzY2FsbHRibC5jLCBsaW5lIDQ2Lgo+ ICAgKGdkYikgcgo+ICAgU3RhcnRpbmcgcHJvZ3JhbTogL2hvbWUvbmFtaHl1bmcvdG1wL3BlcmYg dHJhY2UgLi9hMzIub3V0Cj4gICBbVGhyZWFkIGRlYnVnZ2luZyB1c2luZyBsaWJ0aHJlYWRfZGIg ZW5hYmxlZF0KPiAgIFVzaW5nIGhvc3QgbGlidGhyZWFkX2RiIGxpYnJhcnkgIi9saWIveDg2XzY0 LWxpbnV4LWdudS9saWJ0aHJlYWRfZGIuc28uMSIuCj4gICBbRGV0YWNoaW5nIGFmdGVyIGZvcmsg ZnJvbSBjaGlsZCBwcm9jZXNzIDg4Njg4OF0KPiAgIAo+ICAgQnJlYWtwb2ludCAxLCBzeXNjYWxs dGJsX19uYW1lIChlX21hY2hpbmU9NjIsIGlkPTE1NikgYXQgdXRpbC9zeXNjYWxsdGJsLmM6NDYK PiAgIDQ2CXsKPiAKPiBCdXQgdGhlIGJpbmFyeSBpcyBpMzg2Lgo+IAo+ICAgJCBmaWxlIGEzMi5v dXQKPiAgIGEzMi5vdXQ6IEVMRiAzMi1iaXQgTFNCIHBpZSBleGVjdXRhYmxlLCBJbnRlbCA4MDM4 NiwgdmVyc2lvbiAxIChTWVNWKSwgZHluYW1pY2FsbHkgbGlua2VkLCBpbnRlcnByZXRlciAvbGli L2xkLWxpbnV4LnNvLjIsCj4gICBCdWlsZElEW3NoYTFdPTZlZWE4NzNjOTM5MDEyZTZjNzE1ZThm MDMwMjYxNjQyYmY2MWNiNGUsIGZvciBHTlUvTGludXggMy4yLjAsIG5vdCBzdHJpcHBlZAo+ICAg Cj4gICAkIHJlYWRlbGYgLWggYTMyLm91dAo+ICAgRUxGIEhlYWRlcjoKPiAgICAgTWFnaWM6ICAg N2YgNDUgNGMgNDYgMDEgMDEgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCj4gICAgIENs YXNzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUxGMzIKPiAgICAgRGF0YTogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAyJ3MgY29tcGxlbWVudCwgbGl0dGxlIGVuZGlhbgo+ICAg ICBWZXJzaW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgKGN1cnJlbnQpCj4gICAgIE9T L0FCSTogICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JWCAtIFN5c3RlbSBWCj4gICAgIEFC SSBWZXJzaW9uOiAgICAgICAgICAgICAgICAgICAgICAgMAo+ICAgICBUeXBlOiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIERZTiAoUG9zaXRpb24tSW5kZXBlbmRlbnQgRXhlY3V0YWJsZSBm aWxlKQo+ICAgICBNYWNoaW5lOiAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVsIDgwMzg2 Cj4gICAgIFZlcnNpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxCj4gICAgIEVudHJ5 IHBvaW50IGFkZHJlc3M6ICAgICAgICAgICAgICAgMHgxMGEwCj4gICAgIFN0YXJ0IG9mIHByb2dy YW0gaGVhZGVyczogICAgICAgICAgNTIgKGJ5dGVzIGludG8gZmlsZSkKPiAgICAgU3RhcnQgb2Yg c2VjdGlvbiBoZWFkZXJzOiAgICAgICAgICAxMzkzMiAoYnl0ZXMgaW50byBmaWxlKQo+ICAgICBG bGFnczogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MAo+ICAgICBTaXplIG9mIHRoaXMg aGVhZGVyOiAgICAgICAgICAgICAgIDUyIChieXRlcykKPiAgICAgU2l6ZSBvZiBwcm9ncmFtIGhl YWRlcnM6ICAgICAgICAgICAzMiAoYnl0ZXMpCj4gICAgIE51bWJlciBvZiBwcm9ncmFtIGhlYWRl cnM6ICAgICAgICAgMTEKPiAgICAgU2l6ZSBvZiBzZWN0aW9uIGhlYWRlcnM6ICAgICAgICAgICA0 MCAoYnl0ZXMpCj4gICAgIE51bWJlciBvZiBzZWN0aW9uIGhlYWRlcnM6ICAgICAgICAgMzAKPiAg ICAgU2VjdGlvbiBoZWFkZXIgc3RyaW5nIHRhYmxlIGluZGV4OiAyOQo+IAo+ICAgJCBoZXhkdW1w IC1DIC1uIDMyIGEzMi5vdXQKPiAgIDAwMDAwMDAwICA3ZiA0NSA0YyA0NiAwMSAwMSAwMSAwMCAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIHwuRUxGLi4uLi4uLi4uLi4ufAo+ICAgMDAwMDAwMTAg IDAzIDAwIDAzIDAwIDAxIDAwIDAwIDAwICBhMCAxMCAwMCAwMCAzNCAwMCAwMCAwMCAgfC4uLi4u Li4uLi4uLjQuLi58Cj4gICAwMDAwMDAyMCAgLS0tLS0gLS0tLS0KPiAgICAgICAgICAgICAgIF4g ICAgIF4KPiAJICAgICAgfCAgICAgfAo+IAkgICBFVF9EWU4gICB8Cj4gCSAgICAgICAgICBFTV8z ODYKPiAKCkkgZm91bmQgaXQgZmFpbGVkIHRvIG9wZW4gL3Byb2MvUElEL2V4ZSBmb3Igc29tZSBy ZWFzb24uICBJdCBmYWlsZWQgd2l0aApFTk9FTlQgYnV0IEkndmUgY29uZmlybWVkIHRoZXJlJ3Mg L3Byb2MvUElEIGRpcmVjdG9yeS4gIFN0cmFuZ2UuLi4KClRoYW5rcywKTmFtaHl1bmcKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBt YWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==