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=-28.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL 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 43533C433B4 for ; Thu, 6 May 2021 01:03:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2180161168 for ; Thu, 6 May 2021 01:03:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230048AbhEFBEu (ORCPT ); Wed, 5 May 2021 21:04:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38310 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229973AbhEFBEm (ORCPT ); Wed, 5 May 2021 21:04:42 -0400 Received: from mail-yb1-xb30.google.com (mail-yb1-xb30.google.com [IPv6:2607:f8b0:4864:20::b30]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91CA1C061574 for ; Wed, 5 May 2021 18:03:44 -0700 (PDT) Received: by mail-yb1-xb30.google.com with SMTP id m9so5212095ybm.3 for ; Wed, 05 May 2021 18:03:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=FBkp32GshYrkb603e1Upi0wbWnkjpZZV/bjtxuylxJM=; b=FXD+G87mcAUITwzWc/x5fMK+Tepos5bdZcDaDQJkD6dCVwmHUV5yYlIneVveaGvu4O TvzlpzWDj0PWBp/8zE4KriQK5C3V9onh+Y/fQrE3qeaYCPxGZWeAsMOkAwNyPMW2uSpG c+c/sMyisBPTzklndRIEqsUFWYfhT1yMhsHqX073NM38HMAGsUEEnjaHcCuYnzsBMCZF ofPyhXJ1iVbQLwnKm5LvuIlZBvT4jR+wv02+Ale51AVfYR7zHQy/5IFeEBvypQiko+Qx RVfLxVOwWsSEt8CQ/ECvSZKkDTkm6l4y5KN7bYaaBevKXSBPnAFPPYaabi7zGZ+tv+c1 wEDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=FBkp32GshYrkb603e1Upi0wbWnkjpZZV/bjtxuylxJM=; b=BftlikhdOTHn8TnioAFhp3vO1gW7tRlIOr8tczXYq/A6qQBhGeY5ByPTK01lRzXEWF TRUJDtuptO7Hl3Ou3PVuD190BFguyNEUzCv04hxZDBoBAQK+rXngy+/LeiZWud/9fsXF JEHIm+kkZnVIUGhua95J6daCZXDZBuKDB27dcY6EB19Orj26ZyAJMgujDalTIvIol68O /n8Lnj0oFeOH6nzoc0H7noS3OoVAJDEiZmLGD+kjGWEqE7fnjM+EeFT+/3mvPD3Urx+w y4VOobjCuQeYpMmXLzBnMG2rVps4hFrfZrrR13vZkXRpOj2zEGhbIeHLnbjO7fFelDtp Wqkg== X-Gm-Message-State: AOAM530X2Uu9Tu7q+VUw3eRFEU0B9uPcExnUNT6Z9ct+x7sg/dNhS2eX rk7bDx/l7cI7kvcsRShEAPp00haLWjK5evjrahJZKw== X-Google-Smtp-Source: ABdhPJwjdKygNk0LDV699O9HlpKnDvAKBoL3zujK1SqTpzYP68cOzuvi/TvGfBcTziwe+Aw2FuHe6IcHj8kMYG9h7x0= X-Received: by 2002:a25:c591:: with SMTP id v139mr2136670ybe.511.1620263023577; Wed, 05 May 2021 18:03:43 -0700 (PDT) MIME-Version: 1.0 References: <20210416203522.2397801-1-jiancai@google.com> <20210416232341.2421342-1-jiancai@google.com> In-Reply-To: From: Jian Cai Date: Wed, 5 May 2021 18:03:32 -0700 Message-ID: Subject: Re: [PATCH v3] arm64: vdso: remove commas between macro name and arguments To: Nathan Chancellor Cc: "# 3.4.x" , Greg KH , Sasha Levin , Nick Desaulniers , Manoj Gupta , Luis Lozano , clang-built-linux , Catalin Marinas , Will Deacon , 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 Hi Nathan, Please find my comments inlined. Thanks, Jian On Wed, May 5, 2021 at 2:07 PM Nathan Chancellor wrote: > > Hi Jian, > > On Fri, Apr 16, 2021 at 04:23:41PM -0700, Jian Cai wrote: > > LLVM's integrated assembler does not support using commas separating > > the name and arguments in .macro. However, only spaces are used in the > > manual page. This replaces commas between macro names and the subsequen= t > > arguments with space in calls to clock_gettime_return to make it > > compatible with IAS. > > > > Link: > > https://sourceware.org/binutils/docs/as/Macro.html#Macro > > https://github.com/ClangBuiltLinux/linux/issues/1349 > > > > Signed-off-by: Jian Cai > > The actual patch itself looks fine to me but there should be some more > explanation in the commit message that this patch is for 4.19 only and > why it is not applicable upstream. Additionally, I would recommend using > the '--subject-prefix=3D' flag to 'git format-patch' to clarify that as > well, something like '--subject-prefix=3D"PATCH 4.19 ONLY"'? > > My explanation would be something like (take bits and pieces as you feel > necessary): > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > [PATCH 4.19 ONLY] arm64: vdso: remove commas between macro name and > arguments > > LLVM's integrated assembler does not support using a comma to separate > a macro name and its arguments when there is only one argument with a > default value: > > arch/arm64/kernel/vdso/gettimeofday.S:230:24: error: too many positional > arguments > clock_gettime_return, shift=3D1 > ^ > arch/arm64/kernel/vdso/gettimeofday.S:253:24: error: too many positional > arguments > clock_gettime_return, shift=3D1 > ^ > arch/arm64/kernel/vdso/gettimeofday.S:274:24: error: too many positional > arguments > clock_gettime_return, shift=3D1 > ^ > > This error is not in mainline because commit 28b1a824a4f4 ("arm64: vdso: > Substitute gettimeofday() with C implementation") rewrote this assembler > file in C as part of a 25 patch series that is unsuitable for stable. > Just remove the comma in the clock_gettime_return invocations in 4.19 so > that GNU as and LLVM's integrated assembler work the same. > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > I worded the first sentence the way that I did because correct me if I > am wrong but it seems that the integrated assembler has no issues with > the use of commas separating the arguments in a .macro definition as > that is done everywhere in arch/arm64, just not when there is a single > parameter with a default value because essentially what it is evaluating > it to is "clock_gettime_return ,shift=3D1", which according to the GAS > manual [1] means that "shift" is actually being set to 0 then there is an > other parameter, when it expects only one. > > [1]: After the definition is complete, you can call the macro either as > =E2=80=98reserve_str a,b=E2=80=99 (with =E2=80=98\p1=E2=80=99 evaluating = to a and =E2=80=98\p2=E2=80=99 evaluating to > b), or as =E2=80=98reserve_str ,b=E2=80=99 (with =E2=80=98\p1=E2=80=99 ev= aluating as the default, in > this case =E2=80=980=E2=80=99, and =E2=80=98\p2=E2=80=99 evaluating to b)= . Ah you are right! I played with IAS a little and it did not have problem parsing commas between the name and its arguments in a macro expansion. However, IAS appears to assume an argument with default value is passed whenever it sees a comma right after the macro name. It will be fine if the number of following arguments is one less than the number of parameters specified in the macro definition. Otherwise, it fails with the reporter error. This happens to macros with multiple parameters as well. For example, the following code works ``` $ cat foo.s .macro foo arg1=3D2, arg2=3D4 ldr r0, [r1, #\arg1] ldr r0, [r1, #\arg2] .endm foo, arg2=3D8 $ llvm-mc -triple=3Darmv7a -filetype=3Dobj foo.s -o ias.o arm-linux-gnueabihf-objdump -dr ias.o ias.o: file format elf32-littlearm Disassembly of section .text: 00000000 <.text>: 0: e5910001 ldr r0, [r1, #2] 4: e5910003 ldr r0, [r1, #8] ``` But the the following code fails, ``` $ cat foo.s .macro foo arg1=3D2, arg2=3D4 ldr r0, [r1, #\arg1] ldr r0, [r1, #\arg2] .endm foo, arg1=3D2, arg2=3D8 $ llvm-mc -triple=3Darmv7a -filetype=3Dobj foo.s -o ias.o foo.s:6:14: error: too many positional arguments foo, arg1=3D2, arg2=3D8 ``` I will update the commit message accordingly. > Lastly, Will or Catalin should ack this as an explicitly out of mainline > patch so that Greg or Sasha can take it. I would put them on the "To:" > line in addition to Greg and Sasha. > > Hopefully this is helpful! Thanks for the information! > > Cheers, > Nathan > > > --- > > > > Changes v1 -> v2: > > Keep the comma in the macro definition to be consistent with other > > definitions. > > > > Changes v2 -> v3: > > Edit tags. > > > > arch/arm64/kernel/vdso/gettimeofday.S | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/arch/arm64/kernel/vdso/gettimeofday.S b/arch/arm64/kernel/= vdso/gettimeofday.S > > index 856fee6d3512..b6faf8b5d1fe 100644 > > --- a/arch/arm64/kernel/vdso/gettimeofday.S > > +++ b/arch/arm64/kernel/vdso/gettimeofday.S > > @@ -227,7 +227,7 @@ realtime: > > seqcnt_check fail=3Drealtime > > get_ts_realtime res_sec=3Dx10, res_nsec=3Dx11, \ > > clock_nsec=3Dx15, xtime_sec=3Dx13, xtime_nsec=3Dx14, nsec= _to_sec=3Dx9 > > - clock_gettime_return, shift=3D1 > > + clock_gettime_return shift=3D1 > > > > ALIGN > > monotonic: > > @@ -250,7 +250,7 @@ monotonic: > > clock_nsec=3Dx15, xtime_sec=3Dx13, xtime_nsec=3Dx14, nsec= _to_sec=3Dx9 > > > > add_ts sec=3Dx10, nsec=3Dx11, ts_sec=3Dx3, ts_nsec=3Dx4, nsec_to_= sec=3Dx9 > > - clock_gettime_return, shift=3D1 > > + clock_gettime_return shift=3D1 > > > > ALIGN > > monotonic_raw: > > @@ -271,7 +271,7 @@ monotonic_raw: > > clock_nsec=3Dx15, nsec_to_sec=3Dx9 > > > > add_ts sec=3Dx10, nsec=3Dx11, ts_sec=3Dx13, ts_nsec=3Dx14, nsec_t= o_sec=3Dx9 > > - clock_gettime_return, shift=3D1 > > + clock_gettime_return shift=3D1 > > > > ALIGN > > realtime_coarse: > > -- > > 2.31.1.368.gbe11c130af-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=-19.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, 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 94595C433ED for ; Thu, 6 May 2021 01:06:43 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 0FC576112F for ; Thu, 6 May 2021 01:06:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0FC576112F Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com 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=desiato.20200630; 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=rZ6MCCuFExy3qTQf4WrDIlz0gBifb/x7eA6VtkU0Pao=; b=NXJBOQddL5KifcCxZQeZmXP/7 9aFNqylktg2kpJ21q1WnuAtIrQlVyG/uU2sTc6cJ0eVdiWkt9MYfwM8u/21v6cD2QfE/fKivCOfvE N1d//g9XazOG6f3LiWaSgjGDP+xJxL28G5Sl0afW2TRzv1jbj987Y5ayUJZlFi+wV1ksE51+388op Kd7dCL5iDvKJhbDi+Y+YGvY8aAVWTfATLhXxB9ABG0rYcMglgyfTZJURnYvqlfERL+++NHIoMZXew GEZP9mw+S+qp2BQUAfy5jxoL+wY0cjuKX0mS8DLf2Mr26Hx7iVgYJM0W71vjchvX22Y1IFDy/CYn2 MM8YAD25A==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1leSQm-002mr1-9v; Thu, 06 May 2021 01:03:56 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1leSQg-002mqd-HU for linux-arm-kernel@desiato.infradead.org; Thu, 06 May 2021 01:03:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References: MIME-Version:Sender:Reply-To:Content-ID:Content-Description; bh=FBkp32GshYrkb603e1Upi0wbWnkjpZZV/bjtxuylxJM=; b=qaM8KA+sI/BNPQDClsLaNwlmHx 0MIo6lNh6DStGeRvntTIWcoOlZh9QMcJ5UCytQ4e537SVtaKHgnwgBcfPa/9AwMjLrbChKvzu+046 E1ltdo4w2i24YvTf4Oqg0QnV2voollEO/vqq+ajQEzv1jVUcrWktwkRJkGEEFHXM+szV8upwWWiT4 Bt+PJHWcrBNP+tJKzutZYt7rIUx9NI1hnRXA7R+FdEAAqw7Dm9QN43tSf0mL/WD2v3Avqe8vnDCRs XMXw/ikoQ2rGXXjuqkv5z0RQIiMW+faXvvU5/l2qmZZFy6Ha15v+fpIUbDePTZ5k6j5yd20UOsXdq 0Aib5htA==; Received: from mail-yb1-xb2d.google.com ([2607:f8b0:4864:20::b2d]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1leSQd-005SSq-6h for linux-arm-kernel@lists.infradead.org; Thu, 06 May 2021 01:03:49 +0000 Received: by mail-yb1-xb2d.google.com with SMTP id 15so5245753ybc.0 for ; Wed, 05 May 2021 18:03:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=FBkp32GshYrkb603e1Upi0wbWnkjpZZV/bjtxuylxJM=; b=FXD+G87mcAUITwzWc/x5fMK+Tepos5bdZcDaDQJkD6dCVwmHUV5yYlIneVveaGvu4O TvzlpzWDj0PWBp/8zE4KriQK5C3V9onh+Y/fQrE3qeaYCPxGZWeAsMOkAwNyPMW2uSpG c+c/sMyisBPTzklndRIEqsUFWYfhT1yMhsHqX073NM38HMAGsUEEnjaHcCuYnzsBMCZF ofPyhXJ1iVbQLwnKm5LvuIlZBvT4jR+wv02+Ale51AVfYR7zHQy/5IFeEBvypQiko+Qx RVfLxVOwWsSEt8CQ/ECvSZKkDTkm6l4y5KN7bYaaBevKXSBPnAFPPYaabi7zGZ+tv+c1 wEDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=FBkp32GshYrkb603e1Upi0wbWnkjpZZV/bjtxuylxJM=; b=DUDWHa/C50H2oizYlz1Qre7ZLzU/RqH196HAeoOfv7OCa05FfyPRsZXtZZSTfUT3ys ZTg9JXdYmMFZo5jfbC2LdEDhSYEgTafNH9091htFnSIanTR2IQgyfjw3Pe03HsGkZwWO 0ScAjm7SdQniJq1xH71Auwd/9QBYVls7n6+6+UQEQ7OgEik8v4sOrQ1sHn4lpDCxaqjj iZxKKvFnNfpD28OyX9KZk9QF7WJtlzUzQyuJxXuHRhL9gQYwkyYw5VlGa8OOqI5FVuq1 tXGXplZ5ORu8NCEabGs4csvDI6aNxSu+kCkYWfMGrS8aGJaswHjuRrDnk2Ij0IdZjZsq p6Eg== X-Gm-Message-State: AOAM530eEfKJxIWJTnImfTWk0aM9xc7rhcgYOpy84ICIyFrxOSk1j5jT GrBW+m/JkGi0pxpxw8wDranGhd+j+xmZPr1WlVtM7Q== X-Google-Smtp-Source: ABdhPJwjdKygNk0LDV699O9HlpKnDvAKBoL3zujK1SqTpzYP68cOzuvi/TvGfBcTziwe+Aw2FuHe6IcHj8kMYG9h7x0= X-Received: by 2002:a25:c591:: with SMTP id v139mr2136670ybe.511.1620263023577; Wed, 05 May 2021 18:03:43 -0700 (PDT) MIME-Version: 1.0 References: <20210416203522.2397801-1-jiancai@google.com> <20210416232341.2421342-1-jiancai@google.com> In-Reply-To: From: Jian Cai Date: Wed, 5 May 2021 18:03:32 -0700 Message-ID: Subject: Re: [PATCH v3] arm64: vdso: remove commas between macro name and arguments To: Nathan Chancellor Cc: "# 3.4.x" , Greg KH , Sasha Levin , Nick Desaulniers , Manoj Gupta , Luis Lozano , clang-built-linux , Catalin Marinas , Will Deacon , Linux ARM , Linux Kernel Mailing List X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210505_180347_287708_DDB31927 X-CRM114-Status: GOOD ( 44.21 ) 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 SGkgTmF0aGFuLAoKUGxlYXNlIGZpbmQgbXkgY29tbWVudHMgaW5saW5lZC4KClRoYW5rcywKSmlh bgoKT24gV2VkLCBNYXkgNSwgMjAyMSBhdCAyOjA3IFBNIE5hdGhhbiBDaGFuY2VsbG9yIDxuYXRo YW5Aa2VybmVsLm9yZz4gd3JvdGU6Cj4KPiBIaSBKaWFuLAo+Cj4gT24gRnJpLCBBcHIgMTYsIDIw MjEgYXQgMDQ6MjM6NDFQTSAtMDcwMCwgSmlhbiBDYWkgd3JvdGU6Cj4gPiBMTFZNJ3MgaW50ZWdy YXRlZCBhc3NlbWJsZXIgZG9lcyBub3Qgc3VwcG9ydCB1c2luZyBjb21tYXMgc2VwYXJhdGluZwo+ ID4gdGhlIG5hbWUgYW5kIGFyZ3VtZW50cyBpbiAubWFjcm8uIEhvd2V2ZXIsIG9ubHkgc3BhY2Vz IGFyZSB1c2VkIGluIHRoZQo+ID4gbWFudWFsIHBhZ2UuIFRoaXMgcmVwbGFjZXMgY29tbWFzIGJl dHdlZW4gbWFjcm8gbmFtZXMgYW5kIHRoZSBzdWJzZXF1ZW50Cj4gPiBhcmd1bWVudHMgd2l0aCBz cGFjZSBpbiBjYWxscyB0byBjbG9ja19nZXR0aW1lX3JldHVybiB0byBtYWtlIGl0Cj4gPiBjb21w YXRpYmxlIHdpdGggSUFTLgo+ID4KPiA+IExpbms6Cj4gPiBodHRwczovL3NvdXJjZXdhcmUub3Jn L2JpbnV0aWxzL2RvY3MvYXMvTWFjcm8uaHRtbCNNYWNybwo+ID4gaHR0cHM6Ly9naXRodWIuY29t L0NsYW5nQnVpbHRMaW51eC9saW51eC9pc3N1ZXMvMTM0OQo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6 IEppYW4gQ2FpIDxqaWFuY2FpQGdvb2dsZS5jb20+Cj4KPiBUaGUgYWN0dWFsIHBhdGNoIGl0c2Vs ZiBsb29rcyBmaW5lIHRvIG1lIGJ1dCB0aGVyZSBzaG91bGQgYmUgc29tZSBtb3JlCj4gZXhwbGFu YXRpb24gaW4gdGhlIGNvbW1pdCBtZXNzYWdlIHRoYXQgdGhpcyBwYXRjaCBpcyBmb3IgNC4xOSBv bmx5IGFuZAo+IHdoeSBpdCBpcyBub3QgYXBwbGljYWJsZSB1cHN0cmVhbS4gQWRkaXRpb25hbGx5 LCBJIHdvdWxkIHJlY29tbWVuZCB1c2luZwo+IHRoZSAnLS1zdWJqZWN0LXByZWZpeD0nIGZsYWcg dG8gJ2dpdCBmb3JtYXQtcGF0Y2gnIHRvIGNsYXJpZnkgdGhhdCBhcwo+IHdlbGwsIHNvbWV0aGlu ZyBsaWtlICctLXN1YmplY3QtcHJlZml4PSJQQVRDSCA0LjE5IE9OTFkiJz8KPgo+IE15IGV4cGxh bmF0aW9uIHdvdWxkIGJlIHNvbWV0aGluZyBsaWtlICh0YWtlIGJpdHMgYW5kIHBpZWNlcyBhcyB5 b3UgZmVlbAo+IG5lY2Vzc2FyeSk6Cj4KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPgo+IFtQQVRDSCA0LjE5 IE9OTFldIGFybTY0OiB2ZHNvOiByZW1vdmUgY29tbWFzIGJldHdlZW4gbWFjcm8gbmFtZSBhbmQK PiBhcmd1bWVudHMKPgo+IExMVk0ncyBpbnRlZ3JhdGVkIGFzc2VtYmxlciBkb2VzIG5vdCBzdXBw b3J0IHVzaW5nIGEgY29tbWEgdG8gc2VwYXJhdGUKPiBhIG1hY3JvIG5hbWUgYW5kIGl0cyBhcmd1 bWVudHMgd2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCB3aXRoIGEKPiBkZWZhdWx0IHZh bHVlOgo+Cj4gYXJjaC9hcm02NC9rZXJuZWwvdmRzby9nZXR0aW1lb2ZkYXkuUzoyMzA6MjQ6IGVy cm9yOiB0b28gbWFueSBwb3NpdGlvbmFsCj4gYXJndW1lbnRzCj4gIGNsb2NrX2dldHRpbWVfcmV0 dXJuLCBzaGlmdD0xCj4gICAgICAgICAgICAgICAgICAgICAgICBeCj4gYXJjaC9hcm02NC9rZXJu ZWwvdmRzby9nZXR0aW1lb2ZkYXkuUzoyNTM6MjQ6IGVycm9yOiB0b28gbWFueSBwb3NpdGlvbmFs Cj4gYXJndW1lbnRzCj4gIGNsb2NrX2dldHRpbWVfcmV0dXJuLCBzaGlmdD0xCj4gICAgICAgICAg ICAgICAgICAgICAgICBeCj4gYXJjaC9hcm02NC9rZXJuZWwvdmRzby9nZXR0aW1lb2ZkYXkuUzoy NzQ6MjQ6IGVycm9yOiB0b28gbWFueSBwb3NpdGlvbmFsCj4gYXJndW1lbnRzCj4gIGNsb2NrX2dl dHRpbWVfcmV0dXJuLCBzaGlmdD0xCj4gICAgICAgICAgICAgICAgICAgICAgICBeCj4KPiBUaGlz IGVycm9yIGlzIG5vdCBpbiBtYWlubGluZSBiZWNhdXNlIGNvbW1pdCAyOGIxYTgyNGE0ZjQgKCJh cm02NDogdmRzbzoKPiBTdWJzdGl0dXRlIGdldHRpbWVvZmRheSgpIHdpdGggQyBpbXBsZW1lbnRh dGlvbiIpIHJld3JvdGUgdGhpcyBhc3NlbWJsZXIKPiBmaWxlIGluIEMgYXMgcGFydCBvZiBhIDI1 IHBhdGNoIHNlcmllcyB0aGF0IGlzIHVuc3VpdGFibGUgZm9yIHN0YWJsZS4KPiBKdXN0IHJlbW92 ZSB0aGUgY29tbWEgaW4gdGhlIGNsb2NrX2dldHRpbWVfcmV0dXJuIGludm9jYXRpb25zIGluIDQu MTkgc28KPiB0aGF0IEdOVSBhcyBhbmQgTExWTSdzIGludGVncmF0ZWQgYXNzZW1ibGVyIHdvcmsg dGhlIHNhbWUuCj4KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPgo+IEkgd29yZGVkIHRoZSBmaXJzdCBzZW50 ZW5jZSB0aGUgd2F5IHRoYXQgSSBkaWQgYmVjYXVzZSBjb3JyZWN0IG1lIGlmIEkKPiBhbSB3cm9u ZyBidXQgaXQgc2VlbXMgdGhhdCB0aGUgaW50ZWdyYXRlZCBhc3NlbWJsZXIgaGFzIG5vIGlzc3Vl cyB3aXRoCj4gdGhlIHVzZSBvZiBjb21tYXMgc2VwYXJhdGluZyB0aGUgYXJndW1lbnRzIGluIGEg Lm1hY3JvIGRlZmluaXRpb24gYXMKPiB0aGF0IGlzIGRvbmUgZXZlcnl3aGVyZSBpbiBhcmNoL2Fy bTY0LCBqdXN0IG5vdCB3aGVuIHRoZXJlIGlzIGEgc2luZ2xlCj4gcGFyYW1ldGVyIHdpdGggYSBk ZWZhdWx0IHZhbHVlIGJlY2F1c2UgZXNzZW50aWFsbHkgd2hhdCBpdCBpcyBldmFsdWF0aW5nCj4g aXQgdG8gaXMgImNsb2NrX2dldHRpbWVfcmV0dXJuICxzaGlmdD0xIiwgd2hpY2ggYWNjb3JkaW5n IHRvIHRoZSBHQVMKPiBtYW51YWwgWzFdIG1lYW5zIHRoYXQgInNoaWZ0IiBpcyBhY3R1YWxseSBi ZWluZyBzZXQgdG8gMCB0aGVuIHRoZXJlIGlzIGFuCj4gb3RoZXIgcGFyYW1ldGVyLCB3aGVuIGl0 IGV4cGVjdHMgb25seSBvbmUuCj4KPiBbMV06IEFmdGVyIHRoZSBkZWZpbml0aW9uIGlzIGNvbXBs ZXRlLCB5b3UgY2FuIGNhbGwgdGhlIG1hY3JvIGVpdGhlciBhcwo+IOKAmHJlc2VydmVfc3RyIGEs YuKAmSAod2l0aCDigJhccDHigJkgZXZhbHVhdGluZyB0byBhIGFuZCDigJhccDLigJkgZXZhbHVh dGluZyB0bwo+IGIpLCBvciBhcyDigJhyZXNlcnZlX3N0ciAsYuKAmSAod2l0aCDigJhccDHigJkg ZXZhbHVhdGluZyBhcyB0aGUgZGVmYXVsdCwgaW4KPiB0aGlzIGNhc2Ug4oCYMOKAmSwgYW5kIOKA mFxwMuKAmSBldmFsdWF0aW5nIHRvIGIpLgoKQWggeW91IGFyZSByaWdodCEgSSBwbGF5ZWQgd2l0 aCBJQVMgYSBsaXR0bGUgYW5kIGl0IGRpZCBub3QgaGF2ZQpwcm9ibGVtIHBhcnNpbmcgY29tbWFz IGJldHdlZW4gdGhlIG5hbWUgYW5kIGl0cyBhcmd1bWVudHMgaW4gYSBtYWNybwpleHBhbnNpb24u IEhvd2V2ZXIsIElBUyBhcHBlYXJzIHRvIGFzc3VtZSBhbiBhcmd1bWVudCB3aXRoIGRlZmF1bHQK dmFsdWUgaXMgcGFzc2VkIHdoZW5ldmVyIGl0IHNlZXMgYSBjb21tYSByaWdodCBhZnRlciB0aGUg bWFjcm8gbmFtZS4KSXQgd2lsbCBiZSBmaW5lIGlmIHRoZSBudW1iZXIgb2YgZm9sbG93aW5nIGFy Z3VtZW50cyBpcyBvbmUgbGVzcyB0aGFuCnRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyBzcGVjaWZp ZWQgaW4gdGhlIG1hY3JvIGRlZmluaXRpb24uIE90aGVyd2lzZSwKaXQgZmFpbHMgd2l0aCB0aGUg cmVwb3J0ZXIgZXJyb3IuIFRoaXMgaGFwcGVucyB0byBtYWNyb3Mgd2l0aCBtdWx0aXBsZQpwYXJh bWV0ZXJzIGFzIHdlbGwuIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgd29ya3MKCmBg YAokIGNhdCBmb28ucwoubWFjcm8gIGZvbyBhcmcxPTIsIGFyZzI9NAogICAgICAgIGxkciByMCwg W3IxLCAjXGFyZzFdCiAgICAgICAgbGRyIHIwLCBbcjEsICNcYXJnMl0KLmVuZG0KCmZvbywgYXJn Mj04CgokIGxsdm0tbWMgLXRyaXBsZT1hcm12N2EgLWZpbGV0eXBlPW9iaiBmb28ucyAtbyBpYXMu bwphcm0tbGludXgtZ251ZWFiaWhmLW9iamR1bXAgLWRyIGlhcy5vCgppYXMubzogICAgIGZpbGUg Zm9ybWF0IGVsZjMyLWxpdHRsZWFybQoKCkRpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gLnRleHQ6Cgow MDAwMDAwMCA8LnRleHQ+OgogICAwOiBlNTkxMDAwMSBsZHIgcjAsIFtyMSwgIzJdCiAgIDQ6IGU1 OTEwMDAzIGxkciByMCwgW3IxLCAjOF0KYGBgCgpCdXQgdGhlIHRoZSBmb2xsb3dpbmcgY29kZSBm YWlscywKCmBgYAokIGNhdCBmb28ucwoubWFjcm8gIGZvbyBhcmcxPTIsIGFyZzI9NAogICAgICAg IGxkciByMCwgW3IxLCAjXGFyZzFdCiAgICAgICAgbGRyIHIwLCBbcjEsICNcYXJnMl0KLmVuZG0K CmZvbywgYXJnMT0yLCBhcmcyPTgKCiQgbGx2bS1tYyAtdHJpcGxlPWFybXY3YSAtZmlsZXR5cGU9 b2JqIGZvby5zIC1vIGlhcy5vCmZvby5zOjY6MTQ6IGVycm9yOiB0b28gbWFueSBwb3NpdGlvbmFs IGFyZ3VtZW50cwpmb28sIGFyZzE9MiwgYXJnMj04CmBgYAoKSSB3aWxsIHVwZGF0ZSB0aGUgY29t bWl0IG1lc3NhZ2UgYWNjb3JkaW5nbHkuCgoKPiBMYXN0bHksIFdpbGwgb3IgQ2F0YWxpbiBzaG91 bGQgYWNrIHRoaXMgYXMgYW4gZXhwbGljaXRseSBvdXQgb2YgbWFpbmxpbmUKPiBwYXRjaCBzbyB0 aGF0IEdyZWcgb3IgU2FzaGEgY2FuIHRha2UgaXQuIEkgd291bGQgcHV0IHRoZW0gb24gdGhlICJU bzoiCj4gbGluZSBpbiBhZGRpdGlvbiB0byBHcmVnIGFuZCBTYXNoYS4KPgo+IEhvcGVmdWxseSB0 aGlzIGlzIGhlbHBmdWwhCgpUaGFua3MgZm9yIHRoZSBpbmZvcm1hdGlvbiEKCj4KPiBDaGVlcnMs Cj4gTmF0aGFuCj4KPiA+IC0tLQo+ID4KPiA+IENoYW5nZXMgdjEgLT4gdjI6Cj4gPiAgIEtlZXAg dGhlIGNvbW1hIGluIHRoZSBtYWNybyBkZWZpbml0aW9uIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBv dGhlcgo+ID4gICBkZWZpbml0aW9ucy4KPiA+Cj4gPiBDaGFuZ2VzIHYyIC0+IHYzOgo+ID4gICBF ZGl0IHRhZ3MuCj4gPgo+ID4gIGFyY2gvYXJtNjQva2VybmVsL3Zkc28vZ2V0dGltZW9mZGF5LlMg fCA2ICsrKy0tLQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Zkc28vZ2V0dGlt ZW9mZGF5LlMgYi9hcmNoL2FybTY0L2tlcm5lbC92ZHNvL2dldHRpbWVvZmRheS5TCj4gPiBpbmRl eCA4NTZmZWU2ZDM1MTIuLmI2ZmFmOGI1ZDFmZSAxMDA2NDQKPiA+IC0tLSBhL2FyY2gvYXJtNjQv a2VybmVsL3Zkc28vZ2V0dGltZW9mZGF5LlMKPiA+ICsrKyBiL2FyY2gvYXJtNjQva2VybmVsL3Zk c28vZ2V0dGltZW9mZGF5LlMKPiA+IEBAIC0yMjcsNyArMjI3LDcgQEAgcmVhbHRpbWU6Cj4gPiAg ICAgICBzZXFjbnRfY2hlY2sgZmFpbD1yZWFsdGltZQo+ID4gICAgICAgZ2V0X3RzX3JlYWx0aW1l IHJlc19zZWM9eDEwLCByZXNfbnNlYz14MTEsIFwKPiA+ICAgICAgICAgICAgICAgY2xvY2tfbnNl Yz14MTUsIHh0aW1lX3NlYz14MTMsIHh0aW1lX25zZWM9eDE0LCBuc2VjX3RvX3NlYz14OQo+ID4g LSAgICAgY2xvY2tfZ2V0dGltZV9yZXR1cm4sIHNoaWZ0PTEKPiA+ICsgICAgIGNsb2NrX2dldHRp bWVfcmV0dXJuIHNoaWZ0PTEKPiA+Cj4gPiAgICAgICBBTElHTgo+ID4gIG1vbm90b25pYzoKPiA+ IEBAIC0yNTAsNyArMjUwLDcgQEAgbW9ub3RvbmljOgo+ID4gICAgICAgICAgICAgICBjbG9ja19u c2VjPXgxNSwgeHRpbWVfc2VjPXgxMywgeHRpbWVfbnNlYz14MTQsIG5zZWNfdG9fc2VjPXg5Cj4g Pgo+ID4gICAgICAgYWRkX3RzIHNlYz14MTAsIG5zZWM9eDExLCB0c19zZWM9eDMsIHRzX25zZWM9 eDQsIG5zZWNfdG9fc2VjPXg5Cj4gPiAtICAgICBjbG9ja19nZXR0aW1lX3JldHVybiwgc2hpZnQ9 MQo+ID4gKyAgICAgY2xvY2tfZ2V0dGltZV9yZXR1cm4gc2hpZnQ9MQo+ID4KPiA+ICAgICAgIEFM SUdOCj4gPiAgbW9ub3RvbmljX3JhdzoKPiA+IEBAIC0yNzEsNyArMjcxLDcgQEAgbW9ub3Rvbmlj X3JhdzoKPiA+ICAgICAgICAgICAgICAgY2xvY2tfbnNlYz14MTUsIG5zZWNfdG9fc2VjPXg5Cj4g Pgo+ID4gICAgICAgYWRkX3RzIHNlYz14MTAsIG5zZWM9eDExLCB0c19zZWM9eDEzLCB0c19uc2Vj PXgxNCwgbnNlY190b19zZWM9eDkKPiA+IC0gICAgIGNsb2NrX2dldHRpbWVfcmV0dXJuLCBzaGlm dD0xCj4gPiArICAgICBjbG9ja19nZXR0aW1lX3JldHVybiBzaGlmdD0xCj4gPgo+ID4gICAgICAg QUxJR04KPiA+ICByZWFsdGltZV9jb2Fyc2U6Cj4gPiAtLQo+ID4gMi4zMS4xLjM2OC5nYmUxMWMx MzBhZi1nb29nCj4gPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtYXJtLWtlcm5lbAo=