From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 77F971EBFE3 for ; Fri, 21 Mar 2025 07:22:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742541782; cv=none; b=ILUBYpumX6ooxe7dQc/p7+h7BUEvHU5jBP4ldbS+CO6XLUy9rb5LcYoh4XFHsJ0u9fjzIrsuKV9m8TiUjnuuuSR1FnCxJWfBpMQGwgI1kJPvRhCAZm8pv3/KZX4eMhuqiz3/XxMav7yZuKkG6XlhoWkvSsxB9/dweZiUbwBgZt0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742541782; c=relaxed/simple; bh=32rEkeUdXgVpnkRY7KM86vuJasEtKRbGSmPjSbYp8Xc=; h=Mime-Version:Content-Type:Date:Message-Id:Subject:Cc:To:From: References:In-Reply-To; b=sKUaiPckbXeLbxA4xdXXQq0D88KROpOs3UFqgGYw55NS5AB38bqO2rPiCIPFoJs8RuKBkBKjmcaRyPBqCy7gO3JyZyf+LO+62Zc9TIQSpn/7CzUqZTA42hwZsJBOYs8n+aRlxx/sgOw5Nl21RU5kLxnRbjZy4/f3yu652i2Ta/8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=M9kWwXLX; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="M9kWwXLX" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-43cf89f81c5so1848025e9.2 for ; Fri, 21 Mar 2025 00:22:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1742541778; x=1743146578; darn=vger.kernel.org; h=in-reply-to:references:from:to:cc:subject:message-id:date :content-transfer-encoding:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=/25ortMfNWyDWu+kRgDZEazYd+Unr6LrL65OHsKgfr8=; b=M9kWwXLX6vNoAi2egfFyP3urmOVzPh2gTSjUbT72iHXiNzrPTGdaiwTA6SWExaetV0 h23nOJ4XsjY8STmohFNDSfpJT+X8skskbsXRi6r5kOp2cZh6dQU4XUoutwRzVd6O4HYs jlT6gI4Pbsts9ivYw2nitRVFD1IlseJtLgJGMmNJ2izFY55MVEgEQ4e+RdbqD8ocdSO9 YWyq1DT0hsD0tVcf0aLVYVcFZb1Iwc+fw8achxREO8J9a1VAgcahpdvTc3RGosgj5v3/ Y1LWNbvwpFyQjGj5bOcihJYA5dmMVFR+3dMmGn1puPHO4i0VWnptb+Fr9VxMt9u2oCC4 h5fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742541778; x=1743146578; h=in-reply-to:references:from:to:cc:subject:message-id:date :content-transfer-encoding:mime-version:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=/25ortMfNWyDWu+kRgDZEazYd+Unr6LrL65OHsKgfr8=; b=Ww7uQGBFEbEcRNzaFBUCbhq6nk2hLm1VTGMxc8RR5JFmEis6Xiw8YHkjrB3wHQGuvS J79/VrykmnRah6pTrYIsdpKmZaABvCNFCMZymUlSfj2B0VnX0zpdRkLptQJJXq1bkexB 4tQR3Derva7sttzUWm+CBVN89PbvI+OtdQovHUVQaS8Rc2nWyuN+49CwaBoqrr2MBBc1 EfV7g2xi7UcmkUZieu8iHFv9HgXyYuHqdFSKUPPNfRId2wqjttVHhDqlwr3yHLbVMDdm xPcVr/I3DyoQbPoMf+e8orISweXz1wJs0lyDl1x04RPaUSOZOe/lE7wGj1y5ynFjbnZI 4mMw== X-Forwarded-Encrypted: i=1; AJvYcCWQaYrL3qGXOh7hWs81HJ8W3In2aRihof74cJU/VOy5u7BrFdE+zgoBqa6Lus3Ugb6x5tV6iwp8csIR@vger.kernel.org X-Gm-Message-State: AOJu0YxGJcAXntyhLfq1b+8v8fPrW9C4jyKhudD8pFCR3cQaESRlmZbb xo9vJQ7S1s39qnTkzHx3JMMzDhlYVB/SeEB9j1xqdgb6RKjEcdMllK1hS60N8UE= X-Gm-Gg: ASbGncv34HpAq5kQbr7/pgPid5jNZq+MP3jsOYneDt1M4kN8I2EJX212x60kdgFvPWq wsbU6Ynhs6Sjw2fJ/KtpLDnpd5XHMmq1dLYLQiU4i/6cLLI5O4ksQwRRgChcCI1faMIah5t/v+6 OPLVXvmtuvqj+lAFmQ9Y2KTc0Z8VprV3+70uk5nzvm10YdRlOTSJkvF855bCzZHvbTMIP/XJKWq mJPL5sG+QEd+I7R27ci8ghBUuOsT4rwopaVgidKIpFiJcVIh2PwN8rrzzaVblVnZKtPG58dUVCP JsPQ1drl6dkE3AwjmRIB8KkpgrlEPHHGsOj6b+vw3PJHmp2lPIDXPp6gqPFTW9eoBX67O2abEOc he6Wt X-Google-Smtp-Source: AGHT+IFU7wrxqVXUGlM5v1RoJxyo0mt50QhSrJ/ZcnqbElE1lD78gF7+vCkNQEgx0IT1Onq7RRwDeQ== X-Received: by 2002:a05:600c:1c1c:b0:439:9c0e:36e6 with SMTP id 5b1f17b1804b1-43d50a3b5ccmr5385925e9.3.1742541777651; Fri, 21 Mar 2025 00:22:57 -0700 (PDT) Received: from localhost (ip-89-103-73-235.bb.vodafone.cz. [89.103.73.235]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d43f43cbasm68963045e9.9.2025.03.21.00.22.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Mar 2025 00:22:57 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-arch@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Fri, 21 Mar 2025 08:22:56 +0100 Message-Id: Subject: Re: [PATCH v12 19/28] riscv/ptrace: riscv cfi status and state via ptrace and in core files Cc: "Thomas Gleixner" , "Ingo Molnar" , "Borislav Petkov" , "Dave Hansen" , , "H. Peter Anvin" , "Andrew Morton" , "Liam R. Howlett" , "Vlastimil Babka" , "Lorenzo Stoakes" , "Paul Walmsley" , "Palmer Dabbelt" , "Albert Ou" , "Conor Dooley" , "Rob Herring" , "Krzysztof Kozlowski" , "Arnd Bergmann" , "Christian Brauner" , "Peter Zijlstra" , "Oleg Nesterov" , "Eric Biederman" , "Kees Cook" , "Jonathan Corbet" , "Shuah Khan" , "Jann Horn" , "Conor Dooley" , , , , , , , , , , , , , , , , , , , , , , "linux-riscv" To: "Deepak Gupta" From: =?utf-8?q?Radim_Kr=C4=8Dm=C3=A1=C5=99?= References: <20250314-v5_user_cfi_series-v12-0-e51202b53138@rivosinc.com> <20250314-v5_user_cfi_series-v12-19-e51202b53138@rivosinc.com> In-Reply-To: 2025-03-20T16:09:12-07:00, Deepak Gupta : > On Thu, Mar 20, 2025 at 3:24=E2=80=AFPM Radim Kr=C4=8Dm=C3=A1=C5=99 wrote: >> 2025-03-14T14:39:38-07:00, Deepak Gupta : >> > Expose a new register type NT_RISCV_USER_CFI for risc-v cfi status and >> > state. Intentionally both landing pad and shadow stack status and stat= e >> > are rolled into cfi state. Creating two different NT_RISCV_USER_XXX wo= uld >> > not be useful and wastage of a note type. Enabling or disabling of fea= ture >> > is not allowed via ptrace set interface. However setting `elp` state o= r >> > setting shadow stack pointer are allowed via ptrace set interface. It = is >> > expected `gdb` might have use to fixup `elp` state or `shadow stack` >> > pointer. >> > >> > Signed-off-by: Deepak Gupta >> > --- >> > diff --git a/arch/riscv/include/uapi/asm/ptrace.h b/arch/riscv/include= /uapi/asm/ptrace.h >> > index 659ea3af5680..e6571fba8a8a 100644 >> > @@ -131,6 +131,24 @@ struct __sc_riscv_cfi_state { >> > unsigned long ss_ptr; /* shadow stack pointer */ >> > }; >> > >> > +struct __cfi_status { >> > + /* indirect branch tracking state */ >> > + __u64 lp_en : 1; >> > + __u64 lp_lock : 1; >> > + __u64 elp_state : 1; >> > + >> > + /* shadow stack status */ >> > + __u64 shstk_en : 1; >> > + __u64 shstk_lock : 1; >> >> I remember there was deep hatred towards bitfields in the Linux >> community, have things changes? > > hmm. I didn't know about the strong hatred. There is a good reason for it. :) The C standard left important behavior as implementation-specific (by mistake, I hope). I do like bitfields, but you have to be extra careful when working with them. > Although I can see lots of examples of this pattern in existing kernel co= de. > No strong feelings on my side, I can change this and have it single 64bit= field > and accessed via bitmasks. This is uapi and bitfields do not specify the internal representation. A program compiled at a different time can see completely different order of the bitfields, so the uapi would break. We cannot use bitfields here. 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 13DCCC35FF3 for ; Fri, 21 Mar 2025 07:23:07 +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:References:From:To:Cc: Subject:Message-Id:Date:Mime-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=6DnWKS8LDEbwJ1yAxuKBi8KJcWYjzzApqTmJ6fk+Eo0=; b=GDqfF7DuTGAnTA Ox0J6L8sUkrpAJBL6mpa9puHOJ1lQqFn3QOPfDNScpUPZacu3uCOFx2LJa05y6u9jbsBt3HCl9NlL dcIpZdaeQyo4VhDcRMzEXJnn4kYxsLpTanaFMl2Nj6cuT1UgEydu61fNkXPPeuZXcct/MlUZO3whk m6zmXE6H7bTKCNr9jAJJZ71MLk+FfFVBujzHBVEuhrCk1l6YsRq1P18FDrcWU7OS2Q9jKXeXQeiW4 KQYiSdWDh4Vth1Sgt4NayY7MD69ZDzZgmf/BUhTWEI/xKo1Egbjo7Be3/H6MKDgfvsqAt8S8ASRRR 2KFJJZmH8cSmjYh4wDZQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tvWib-0000000E5XY-3fQa; Fri, 21 Mar 2025 07:23:01 +0000 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tvWiZ-0000000E5WD-1bzl for linux-riscv@lists.infradead.org; Fri, 21 Mar 2025 07:23:00 +0000 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-4394944f161so1865325e9.3 for ; Fri, 21 Mar 2025 00:22:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1742541778; x=1743146578; darn=lists.infradead.org; h=in-reply-to:references:from:to:cc:subject:message-id:date :content-transfer-encoding:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=/25ortMfNWyDWu+kRgDZEazYd+Unr6LrL65OHsKgfr8=; b=Q1giE76I32YSJSwe11+Tb5CX5xfjqsjyq6mLcKxNHye1hR3EEpnjxlQJB6Fu0tP1Jz jldtvpJe/VKc0OXH2T8pcPxl/mwECcNdVM5l1iYnyNw5tnWFSoaW6lZ8we9Jg8cpobCo jy2RHGH8MdSHKo9lqC3w04bQ5vv9TlwSA2mbolOnpzFYIooBmYs/qKEzmEQi+hkT0h3n 52RrUBSbXMqN9C0qhlhy7QFU9oZPTkAS7ot+5ymEWd+UqtwbEwjcHVplZ7T2eGu4GHC5 uP+Bypoy2Xaac4rkerpZAFekjlm00waxh++ybgfPbXUOjO/qNIfkK1gQtGU3wKVd82il BPMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742541778; x=1743146578; h=in-reply-to:references:from:to:cc:subject:message-id:date :content-transfer-encoding:mime-version:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=/25ortMfNWyDWu+kRgDZEazYd+Unr6LrL65OHsKgfr8=; b=tbMBjVDfo9nLe3KtvZIqxzkCnJj5B1prRIvStf+loP3s8GkmOi8iKmYsh7imk0uSRg L4u6A0wPHfYLQL0JF7TRtaM9+17vOqWs6v+gNAaILYSgPJQDifi44q5O/WDS9aAnl+1g 3HeCSGmq13h27rpQ3v3cwGaSyrAw9iJSAKeVQwczUizcnqkoCw+8Q6x0gGwZQWn3/pQ4 vhBWN5YAAsT6qRlw4OwbSq5H5pbo+9IXsgLJYzQpUziCpUxJif3/npa5vAUdb7HkzHED GR3WoR7xlbz4uz54f29hLFNsCITrAcwgEei8CkOVKC+cEEzGNJVzLs+0Kr2DRWGvT2Cv Mw5A== X-Forwarded-Encrypted: i=1; AJvYcCXrvmlk59ZA1A4j4c7uf6gqbBuUpFrCYDjIVU//vp+LOxv4D85l1AE8qMS+G2jSi3Fvco5NrASPcrxZdA==@lists.infradead.org X-Gm-Message-State: AOJu0Ywb8go/DDme8/dpkrikdSaZt2GAmDbip4ycxx2PjxobqF5ujtZB Cx6w/8yjjHtJM9guwpnjXmZPH3qW7D0f+Sy+Gr5c1wUYKGZBSMNeMkBvry8e4Ig= X-Gm-Gg: ASbGncuSJNP8McoQGTZ5xTCYCOpVzcZqXRbZ0RdUzXQEJhCTfW+j278TxAtEzJyJI9i 0JItiil/XBVqVku/io2ZKDlEVXeaDmnrFwgvtedKblT5UXCG7qNygV35wqyUzGp4Yl6ySV/qNrA jM+kUJQvXQXvWW0OQApPSh07X0jP+DL+cZsTC2/b8192U+D2RVzaJ8NtkOgRsVIFnexzWUV+U/X 83muK4BrK1uE8ri+feZDeZjhA0Rc+79JbTAbRMaNDHcLt9oDtlf8NSGIEBJW2JqmTXCYE0FnPKN SRz5hcDKd0GSC4N9X7c+uqZz94xA8xk/Ye6YsUbK8K19Ar3LYTIlcyGLPULYDrqnbiovbe09aQR 40olK X-Google-Smtp-Source: AGHT+IFU7wrxqVXUGlM5v1RoJxyo0mt50QhSrJ/ZcnqbElE1lD78gF7+vCkNQEgx0IT1Onq7RRwDeQ== X-Received: by 2002:a05:600c:1c1c:b0:439:9c0e:36e6 with SMTP id 5b1f17b1804b1-43d50a3b5ccmr5385925e9.3.1742541777651; Fri, 21 Mar 2025 00:22:57 -0700 (PDT) Received: from localhost (ip-89-103-73-235.bb.vodafone.cz. [89.103.73.235]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d43f43cbasm68963045e9.9.2025.03.21.00.22.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Mar 2025 00:22:57 -0700 (PDT) Mime-Version: 1.0 Date: Fri, 21 Mar 2025 08:22:56 +0100 Message-Id: Subject: Re: [PATCH v12 19/28] riscv/ptrace: riscv cfi status and state via ptrace and in core files Cc: "Thomas Gleixner" , "Ingo Molnar" , "Borislav Petkov" , "Dave Hansen" , , "H. Peter Anvin" , "Andrew Morton" , "Liam R. Howlett" , "Vlastimil Babka" , "Lorenzo Stoakes" , "Paul Walmsley" , "Palmer Dabbelt" , "Albert Ou" , "Conor Dooley" , "Rob Herring" , "Krzysztof Kozlowski" , "Arnd Bergmann" , "Christian Brauner" , "Peter Zijlstra" , "Oleg Nesterov" , "Eric Biederman" , "Kees Cook" , "Jonathan Corbet" , "Shuah Khan" , "Jann Horn" , "Conor Dooley" , , , , , , , , , , , , , , , , , , , , , , "linux-riscv" To: "Deepak Gupta" From: =?utf-8?q?Radim_Kr=C4=8Dm=C3=A1=C5=99?= References: <20250314-v5_user_cfi_series-v12-0-e51202b53138@rivosinc.com> <20250314-v5_user_cfi_series-v12-19-e51202b53138@rivosinc.com> In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250321_002259_423246_4854BD67 X-CRM114-Status: GOOD ( 15.65 ) 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 MjAyNS0wMy0yMFQxNjowOToxMi0wNzowMCwgRGVlcGFrIEd1cHRhIDxkZWJ1Z0ByaXZvc2luYy5j b20+Ogo+IE9uIFRodSwgTWFyIDIwLCAyMDI1IGF0IDM6MjTigK9QTSBSYWRpbSBLcsSNbcOhxZkg PHJrcmNtYXJAdmVudGFuYW1pY3JvLmNvbT4gd3JvdGU6Cj4+IDIwMjUtMDMtMTRUMTQ6Mzk6Mzgt MDc6MDAsIERlZXBhayBHdXB0YSA8ZGVidWdAcml2b3NpbmMuY29tPjoKPj4gPiBFeHBvc2UgYSBu ZXcgcmVnaXN0ZXIgdHlwZSBOVF9SSVNDVl9VU0VSX0NGSSBmb3IgcmlzYy12IGNmaSBzdGF0dXMg YW5kCj4+ID4gc3RhdGUuIEludGVudGlvbmFsbHkgYm90aCBsYW5kaW5nIHBhZCBhbmQgc2hhZG93 IHN0YWNrIHN0YXR1cyBhbmQgc3RhdGUKPj4gPiBhcmUgcm9sbGVkIGludG8gY2ZpIHN0YXRlLiBD cmVhdGluZyB0d28gZGlmZmVyZW50IE5UX1JJU0NWX1VTRVJfWFhYIHdvdWxkCj4+ID4gbm90IGJl IHVzZWZ1bCBhbmQgd2FzdGFnZSBvZiBhIG5vdGUgdHlwZS4gRW5hYmxpbmcgb3IgZGlzYWJsaW5n IG9mIGZlYXR1cmUKPj4gPiBpcyBub3QgYWxsb3dlZCB2aWEgcHRyYWNlIHNldCBpbnRlcmZhY2Uu IEhvd2V2ZXIgc2V0dGluZyBgZWxwYCBzdGF0ZSBvcgo+PiA+IHNldHRpbmcgc2hhZG93IHN0YWNr IHBvaW50ZXIgYXJlIGFsbG93ZWQgdmlhIHB0cmFjZSBzZXQgaW50ZXJmYWNlLiBJdCBpcwo+PiA+ IGV4cGVjdGVkIGBnZGJgIG1pZ2h0IGhhdmUgdXNlIHRvIGZpeHVwIGBlbHBgIHN0YXRlIG9yIGBz aGFkb3cgc3RhY2tgCj4+ID4gcG9pbnRlci4KPj4gPgo+PiA+IFNpZ25lZC1vZmYtYnk6IERlZXBh ayBHdXB0YSA8ZGVidWdAcml2b3NpbmMuY29tPgo+PiA+IC0tLQo+PiA+IGRpZmYgLS1naXQgYS9h cmNoL3Jpc2N2L2luY2x1ZGUvdWFwaS9hc20vcHRyYWNlLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUv dWFwaS9hc20vcHRyYWNlLmgKPj4gPiBpbmRleCA2NTllYTNhZjU2ODAuLmU2NTcxZmJhOGE4YSAx MDA2NDQKPj4gPiBAQCAtMTMxLDYgKzEzMSwyNCBAQCBzdHJ1Y3QgX19zY19yaXNjdl9jZmlfc3Rh dGUgewo+PiA+ICAgICAgIHVuc2lnbmVkIGxvbmcgc3NfcHRyOyAgIC8qIHNoYWRvdyBzdGFjayBw b2ludGVyICovCj4+ID4gIH07Cj4+ID4KPj4gPiArc3RydWN0IF9fY2ZpX3N0YXR1cyB7Cj4+ID4g KyAgICAgLyogaW5kaXJlY3QgYnJhbmNoIHRyYWNraW5nIHN0YXRlICovCj4+ID4gKyAgICAgX191 NjQgbHBfZW4gOiAxOwo+PiA+ICsgICAgIF9fdTY0IGxwX2xvY2sgOiAxOwo+PiA+ICsgICAgIF9f dTY0IGVscF9zdGF0ZSA6IDE7Cj4+ID4gKwo+PiA+ICsgICAgIC8qIHNoYWRvdyBzdGFjayBzdGF0 dXMgKi8KPj4gPiArICAgICBfX3U2NCBzaHN0a19lbiA6IDE7Cj4+ID4gKyAgICAgX191NjQgc2hz dGtfbG9jayA6IDE7Cj4+Cj4+IEkgcmVtZW1iZXIgdGhlcmUgd2FzIGRlZXAgaGF0cmVkIHRvd2Fy ZHMgYml0ZmllbGRzIGluIHRoZSBMaW51eAo+PiBjb21tdW5pdHksIGhhdmUgdGhpbmdzIGNoYW5n ZXM/Cj4KPiBobW0uIEkgZGlkbid0IGtub3cgYWJvdXQgdGhlIHN0cm9uZyBoYXRyZWQuCgpUaGVy ZSBpcyBhIGdvb2QgcmVhc29uIGZvciBpdC4gOikKClRoZSBDIHN0YW5kYXJkIGxlZnQgaW1wb3J0 YW50IGJlaGF2aW9yIGFzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIChieQptaXN0YWtlLCBJIGhv cGUpLiAgSSBkbyBsaWtlIGJpdGZpZWxkcywgYnV0IHlvdSBoYXZlIHRvIGJlIGV4dHJhIGNhcmVm dWwKd2hlbiB3b3JraW5nIHdpdGggdGhlbS4KCj4gQWx0aG91Z2ggSSBjYW4gc2VlIGxvdHMgb2Yg ZXhhbXBsZXMgb2YgdGhpcyBwYXR0ZXJuIGluIGV4aXN0aW5nIGtlcm5lbCBjb2RlLgo+IE5vIHN0 cm9uZyBmZWVsaW5ncyBvbiBteSBzaWRlLCBJIGNhbiBjaGFuZ2UgdGhpcyBhbmQgaGF2ZSBpdCBz aW5nbGUgNjRiaXQgZmllbGQKPiBhbmQgYWNjZXNzZWQgdmlhIGJpdG1hc2tzLgoKVGhpcyBpcyB1 YXBpIGFuZCBiaXRmaWVsZHMgZG8gbm90IHNwZWNpZnkgdGhlIGludGVybmFsIHJlcHJlc2VudGF0 aW9uLgpBIHByb2dyYW0gY29tcGlsZWQgYXQgYSBkaWZmZXJlbnQgdGltZSBjYW4gc2VlIGNvbXBs ZXRlbHkgZGlmZmVyZW50Cm9yZGVyIG9mIHRoZSBiaXRmaWVsZHMsIHNvIHRoZSB1YXBpIHdvdWxk IGJyZWFrLgoKV2UgY2Fubm90IHVzZSBiaXRmaWVsZHMgaGVyZS4KCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdAps aW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK