From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vk1-xa29.google.com (mail-vk1-xa29.google.com [IPv6:2607:f8b0:4864:20::a29]) by sourceware.org (Postfix) with ESMTPS id C6CE53856DDA; Thu, 12 May 2022 19:21:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C6CE53856DDA Received: by mail-vk1-xa29.google.com with SMTP id s68so3169991vke.6; Thu, 12 May 2022 12:21:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=oQNwI49qXPHwMlbDmUyqZFf6NPe/T7ieKPeYOGOhcD0=; b=KB+fHfX1D5qGF6oxm4Wp8cYM/eqJSnboN2PnYIuDGKxrW4+iTKWAG4sQQQqq8IrD11 USkLsogKtYF+y9E0CzwNeWFIblnHYTGgA9VncgqannEZFeTDRyE7E2a4M3yCM7zsOr1o /sacFwc8imwpmtLJaTOrVrDwM3Roe9YguqBvddKsIbsifld6v0AH5Te8VqFNfdq2Bx+T hems++gPQxWWetov7ObTe/+yFvxJq4I7L9sq5jvP4j6gsxAdksSRh7t9XWAYf2IP5cqU 0Lh/3s+DkWTEPJx1mjqLJlufdFMUZOWt8j3W55UWgaUuoZ9jlyITm5QHae9ZoSIrlJdo IFpA== X-Gm-Message-State: AOAM531Ne4CKdhig+hpnRCCKaB2dzvQxH7HqshfqDYV5UtecbqbO8SU5 aUGrF41BbNUfDFz+ndCQGpwsRyOT7jc/GKHjzpI8CjP9WcM= X-Google-Smtp-Source: ABdhPJxaFHkY8ivmOhcsv2sygcvQfXZztX5l8Y9yDt3x8vxyj3uBUQWKAPUkOKhYoc1Pwi/Pq9N3TxQgPIzSrJE8e50= X-Received: by 2002:a1f:2c0b:0:b0:345:e29e:cb24 with SMTP id s11-20020a1f2c0b000000b00345e29ecb24mr1019550vks.7.1652383295216; Thu, 12 May 2022 12:21:35 -0700 (PDT) MIME-Version: 1.0 References: <20220206002953.2897890-1-hjl.tools@gmail.com> In-Reply-To: From: Sunil Pandey Date: Thu, 12 May 2022 12:20:58 -0700 Message-ID: Subject: Re: [PATCH] x86_64/multiarch: Sort sysdep_routines and put one entry per line To: "H.J. Lu" , Libc-stable Mailing List Cc: GNU C Library Content-Type: multipart/mixed; boundary="0000000000005837dd05ded577b5" X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, HK_RANDOM_ENVFROM, HK_RANDOM_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-stable@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-stable mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 May 2022 19:21:38 -0000 --0000000000005837dd05ded577b5 Content-Type: text/plain; charset="UTF-8" On Sun, Feb 6, 2022 at 6:52 AM H.J. Lu via Libc-alpha wrote: > > On Sat, Feb 5, 2022 at 4:29 PM H.J. Lu wrote: > > > > --- > > sysdeps/x86_64/multiarch/Makefile | 290 ++++++++++++++++++------------ > > 1 file changed, 176 insertions(+), 114 deletions(-) > > > > diff --git a/sysdeps/x86_64/multiarch/Makefile b/sysdeps/x86_64/multiarch/Makefile > > index 044778585b..4274bfdd0d 100644 > > --- a/sysdeps/x86_64/multiarch/Makefile > > +++ b/sysdeps/x86_64/multiarch/Makefile > > @@ -1,89 +1,133 @@ > > ifeq ($(subdir),string) > > > > -sysdep_routines += strncat-c stpncpy-c strncpy-c \ > > - strcmp-sse2 strcmp-sse2-unaligned strcmp-ssse3 \ > > - strcmp-sse4_2 strcmp-avx2 \ > > - strncmp-sse2 strncmp-ssse3 strncmp-sse4_2 strncmp-avx2 \ > > - memchr-sse2 rawmemchr-sse2 memchr-avx2 rawmemchr-avx2 \ > > - memrchr-sse2 memrchr-avx2 \ > > - memcmp-sse2 \ > > - memcmpeq-sse2 \ > > - memcmp-avx2-movbe \ > > - memcmpeq-avx2 \ > > - memcmp-sse4 memcpy-ssse3 \ > > - memmove-ssse3 \ > > - memcpy-ssse3-back \ > > - memmove-ssse3-back \ > > - memmove-avx512-no-vzeroupper \ > > - strcasecmp_l-sse2 strcasecmp_l-ssse3 \ > > - strcasecmp_l-sse4_2 strcasecmp_l-avx \ > > - strncase_l-sse2 strncase_l-ssse3 \ > > - strncase_l-sse4_2 strncase_l-avx \ > > - strchr-sse2 strchrnul-sse2 strchr-avx2 strchrnul-avx2 \ > > - strrchr-sse2 strrchr-avx2 \ > > - strlen-sse2 strnlen-sse2 strlen-avx2 strnlen-avx2 \ > > - strcat-avx2 strncat-avx2 \ > > - strcat-ssse3 strncat-ssse3\ > > - strcpy-avx2 strncpy-avx2 \ > > - strcpy-sse2 stpcpy-sse2 \ > > - strcpy-ssse3 strncpy-ssse3 stpcpy-ssse3 stpncpy-ssse3 \ > > - strcpy-sse2-unaligned strncpy-sse2-unaligned \ > > - stpcpy-sse2-unaligned stpncpy-sse2-unaligned \ > > - stpcpy-avx2 stpncpy-avx2 \ > > - strcat-sse2 \ > > - strcat-sse2-unaligned strncat-sse2-unaligned \ > > - strchr-sse2-no-bsf memcmp-ssse3 strstr-sse2-unaligned \ > > - strcspn-sse2 strpbrk-sse2 strspn-sse2 \ > > - strcspn-c strpbrk-c strspn-c varshift \ > > - memset-avx512-no-vzeroupper \ > > - memmove-sse2-unaligned-erms \ > > - memmove-avx-unaligned-erms \ > > - memmove-avx512-unaligned-erms \ > > - memset-sse2-unaligned-erms \ > > - memset-avx2-unaligned-erms \ > > - memset-avx512-unaligned-erms \ > > - memchr-avx2-rtm \ > > - memcmp-avx2-movbe-rtm \ > > - memcmpeq-avx2-rtm \ > > - memmove-avx-unaligned-erms-rtm \ > > - memrchr-avx2-rtm \ > > - memset-avx2-unaligned-erms-rtm \ > > - rawmemchr-avx2-rtm \ > > - strchr-avx2-rtm \ > > - strcmp-avx2-rtm \ > > - strchrnul-avx2-rtm \ > > - stpcpy-avx2-rtm \ > > - stpncpy-avx2-rtm \ > > - strcat-avx2-rtm \ > > - strcpy-avx2-rtm \ > > - strlen-avx2-rtm \ > > - strncat-avx2-rtm \ > > - strncmp-avx2-rtm \ > > - strncpy-avx2-rtm \ > > - strnlen-avx2-rtm \ > > - strrchr-avx2-rtm \ > > - memchr-evex \ > > - memcmp-evex-movbe \ > > - memcmpeq-evex \ > > - memmove-evex-unaligned-erms \ > > - memrchr-evex \ > > - memset-evex-unaligned-erms \ > > - rawmemchr-evex \ > > - stpcpy-evex \ > > - stpncpy-evex \ > > - strcat-evex \ > > - strchr-evex \ > > - strchrnul-evex \ > > - strcmp-evex \ > > - strcpy-evex \ > > - strlen-evex \ > > - strncat-evex \ > > - strncmp-evex \ > > - strncpy-evex \ > > - strnlen-evex \ > > - strrchr-evex \ > > - memchr-evex-rtm \ > > - rawmemchr-evex-rtm > > +sysdep_routines += \ > > + memchr-avx2 \ > > + memchr-avx2-rtm \ > > + memchr-evex \ > > + memchr-evex-rtm \ > > + memchr-sse2 \ > > + memcmp-avx2-movbe \ > > + memcmp-avx2-movbe-rtm \ > > + memcmp-evex-movbe \ > > + memcmp-sse2 \ > > + memcmp-sse4 \ > > + memcmp-ssse3 \ > > + memcmpeq-avx2 \ > > + memcmpeq-avx2-rtm \ > > + memcmpeq-evex \ > > + memcmpeq-sse2 \ > > + memcpy-ssse3 \ > > + memcpy-ssse3-back \ > > + memmove-avx-unaligned-erms \ > > + memmove-avx-unaligned-erms-rtm \ > > + memmove-avx512-no-vzeroupper \ > > + memmove-avx512-unaligned-erms \ > > + memmove-evex-unaligned-erms \ > > + memmove-sse2-unaligned-erms \ > > + memmove-ssse3 \ > > + memmove-ssse3-back \ > > + memrchr-avx2 \ > > + memrchr-avx2-rtm \ > > + memrchr-evex \ > > + memrchr-sse2 \ > > + memset-avx2-unaligned-erms \ > > + memset-avx2-unaligned-erms-rtm \ > > + memset-avx512-no-vzeroupper \ > > + memset-avx512-unaligned-erms \ > > + memset-evex-unaligned-erms \ > > + memset-sse2-unaligned-erms \ > > + rawmemchr-avx2 \ > > + rawmemchr-avx2-rtm \ > > + rawmemchr-evex \ > > + rawmemchr-evex-rtm \ > > + rawmemchr-sse2 \ > > + stpcpy-avx2 \ > > + stpcpy-avx2-rtm \ > > + stpcpy-evex \ > > + stpcpy-sse2 \ > > + stpcpy-sse2-unaligned \ > > + stpcpy-ssse3 \ > > + stpncpy-avx2 \ > > + stpncpy-avx2-rtm \ > > + stpncpy-c \ > > + stpncpy-evex \ > > + stpncpy-sse2-unaligned \ > > + stpncpy-ssse3 \ > > + strcasecmp_l-avx \ > > + strcasecmp_l-sse2 \ > > + strcasecmp_l-sse4_2 \ > > + strcasecmp_l-ssse3 \ > > + strcat-avx2 \ > > + strcat-avx2-rtm \ > > + strcat-evex \ > > + strcat-sse2 \ > > + strcat-sse2-unaligned \ > > + strcat-ssse3 \ > > + strchr-avx2 \ > > + strchr-avx2-rtm \ > > + strchr-evex \ > > + strchr-sse2 \ > > + strchr-sse2-no-bsf \ > > + strchrnul-avx2 \ > > + strchrnul-avx2-rtm \ > > + strchrnul-evex \ > > + strchrnul-sse2 \ > > + strcmp-avx2 \ > > + strcmp-avx2-rtm \ > > + strcmp-evex \ > > + strcmp-sse2 \ > > + strcmp-sse2-unaligned \ > > + strcmp-sse4_2 \ > > + strcmp-ssse3 \ > > + strcpy-avx2 \ > > + strcpy-avx2-rtm \ > > + strcpy-evex \ > > + strcpy-sse2 \ > > + strcpy-sse2-unaligned \ > > + strcpy-ssse3 \ > > + strcspn-c \ > > + strcspn-sse2 \ > > + strlen-avx2 \ > > + strlen-avx2-rtm \ > > + strlen-evex \ > > + strlen-sse2 \ > > + strncase_l-avx \ > > + strncase_l-sse2 \ > > + strncase_l-sse4_2 \ > > + strncase_l-ssse3 \ > > + strncat-avx2 \ > > + strncat-avx2-rtm \ > > + strncat-c \ > > + strncat-evex \ > > + strncat-sse2-unaligned \ > > + strncat-ssse3 \ > > + strncmp-avx2 \ > > + strncmp-avx2-rtm \ > > + strncmp-evex \ > > + strncmp-sse2 \ > > + strncmp-sse4_2 \ > > + strncmp-ssse3 \ > > + strncpy-avx2 \ > > + strncpy-avx2-rtm \ > > + strncpy-c \ > > + strncpy-evex \ > > + strncpy-sse2-unaligned \ > > + strncpy-ssse3 \ > > + strnlen-avx2 \ > > + strnlen-avx2-rtm \ > > + strnlen-evex \ > > + strnlen-sse2 \ > > + strpbrk-c \ > > + strpbrk-sse2 \ > > + strrchr-avx2 \ > > + strrchr-avx2-rtm \ > > + strrchr-evex \ > > + strrchr-sse2 \ > > + strspn-c \ > > + strspn-sse2 \ > > + strstr-sse2-unaligned \ > > + varshift \ > > +# sysdep_routines > > CFLAGS-varshift.c += -msse4 > > CFLAGS-strcspn-c.c += -msse4 > > CFLAGS-strpbrk-c.c += -msse4 > > @@ -91,37 +135,55 @@ CFLAGS-strspn-c.c += -msse4 > > endif > > > > ifeq ($(subdir),wcsmbs) > > -sysdep_routines += wmemcmp-sse4 wmemcmp-ssse3 wmemcmp-c \ > > - wmemcmp-avx2-movbe \ > > - wmemchr-sse2 wmemchr-avx2 \ > > - wcscmp-sse2 wcscmp-avx2 \ > > - wcsncmp-sse2 wcsncmp-avx2 \ > > - wcscpy-ssse3 wcscpy-c \ > > - wcschr-sse2 wcschr-avx2 \ > > - wcsrchr-sse2 wcsrchr-avx2 \ > > - wcslen-sse2 wcslen-sse4_1 wcslen-avx2 \ > > - wcsnlen-c wcsnlen-sse4_1 wcsnlen-avx2 \ > > - wcschr-avx2-rtm \ > > - wcscmp-avx2-rtm \ > > - wcslen-avx2-rtm \ > > - wcsncmp-avx2-rtm \ > > - wcsnlen-avx2-rtm \ > > - wcsrchr-avx2-rtm \ > > - wmemchr-avx2-rtm \ > > - wmemcmp-avx2-movbe-rtm \ > > - wcschr-evex \ > > - wcscmp-evex \ > > - wcslen-evex \ > > - wcsncmp-evex \ > > - wcsnlen-evex \ > > - wcsrchr-evex \ > > - wmemchr-evex \ > > - wmemcmp-evex-movbe \ > > - wmemchr-evex-rtm > > +sysdep_routines += \ > > + wcschr-avx2 \ > > + wcschr-avx2-rtm \ > > + wcschr-evex \ > > + wcschr-sse2 \ > > + wcscmp-avx2 \ > > + wcscmp-avx2-rtm \ > > + wcscmp-evex \ > > + wcscmp-sse2 \ > > + wcscpy-c \ > > + wcscpy-ssse3 \ > > + wcslen-avx2 \ > > + wcslen-avx2-rtm \ > > + wcslen-evex \ > > + wcslen-sse2 \ > > + wcslen-sse4_1 \ > > + wcsncmp-avx2 \ > > + wcsncmp-avx2-rtm \ > > + wcsncmp-evex \ > > + wcsncmp-sse2 \ > > + wcsnlen-avx2 \ > > + wcsnlen-avx2-rtm \ > > + wcsnlen-c \ > > + wcsnlen-evex \ > > + wcsnlen-sse4_1 \ > > + wcsrchr-avx2 \ > > + wcsrchr-avx2-rtm \ > > + wcsrchr-evex \ > > + wcsrchr-sse2 \ > > + wmemchr-avx2 \ > > + wmemchr-avx2-rtm \ > > + wmemchr-evex \ > > + wmemchr-evex-rtm \ > > + wmemchr-sse2 \ > > + wmemcmp-avx2-movbe \ > > + wmemcmp-avx2-movbe-rtm \ > > + wmemcmp-c \ > > + wmemcmp-evex-movbe \ > > + wmemcmp-sse4 \ > > + wmemcmp-ssse3 \ > > +# sysdep_routines > > endif > > > > ifeq ($(subdir),debug) > > -sysdep_routines += memcpy_chk-nonshared mempcpy_chk-nonshared \ > > - memmove_chk-nonshared memset_chk-nonshared \ > > - wmemset_chk-nonshared > > +sysdep_routines += \ > > + memcpy_chk-nonshared \ > > + memmove_chk-nonshared \ > > + mempcpy_chk-nonshared \ > > + memset_chk-nonshared \ > > + wmemset_chk-nonshared \ > > +# sysdep_routines > > endif > > -- > > 2.34.1 > > > > I am checking this in. > > -- > H.J. I would like to backport this patch to release branches. Any comments or objections? Conflict resolution patch attached. --Sunil --0000000000005837dd05ded577b5 Content-Type: application/octet-stream; name="0002-x86_64-multiarch-Sort-sysdep_routines-and-put-one-en.patch" Content-Disposition: attachment; filename="0002-x86_64-multiarch-Sort-sysdep_routines-and-put-one-en.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l33ea9840 RnJvbSBiM2MwYTIzMDA1YjNjNWI0ODhjZDUwMjJlMWUxZGJmNTQzZTFlNzkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFNhdCwgNSBGZWIgMjAyMiAxMTo1MjozMyAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMDIvMjZdIHg4 Nl82NC9tdWx0aWFyY2g6IFNvcnQgc3lzZGVwX3JvdXRpbmVzIGFuZCBwdXQgb25lCiBlbnRyeSBw ZXIgbGluZQoKKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYzMyOGQwMTUyZDRiMTRjY2E1ODQw N2VjNjgxNDM4OTRjODg2MzAwNCkKLS0tCiBzeXNkZXBzL3g4Nl82NC9tdWx0aWFyY2gvTWFrZWZp bGUgfCA3OCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg NDggaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy94 ODZfNjQvbXVsdGlhcmNoL01ha2VmaWxlIGIvc3lzZGVwcy94ODZfNjQvbXVsdGlhcmNoL01ha2Vm aWxlCmluZGV4IDZlMzYzZTRmYTkuLmU3YjQxM2VkYWQgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMveDg2 XzY0L211bHRpYXJjaC9NYWtlZmlsZQorKysgYi9zeXNkZXBzL3g4Nl82NC9tdWx0aWFyY2gvTWFr ZWZpbGUKQEAgLTEzNiwzNyArMTM2LDU1IEBAIENGTEFHUy1zdHJzcG4tYy5jICs9IC1tc3NlNAog ZW5kaWYKIAogaWZlcSAoJChzdWJkaXIpLHdjc21icykKLXN5c2RlcF9yb3V0aW5lcyArPSB3bWVt Y21wLXNzZTQgd21lbWNtcC1zc3NlMyB3bWVtY21wLWMgXAotCQkgICB3bWVtY21wLWF2eDItbW92 YmUgXAotCQkgICB3bWVtY2hyLXNzZTIgd21lbWNoci1hdngyIFwKLQkJICAgd2NzY21wLXNzZTIg d2NzY21wLWF2eDIgXAotCQkgICB3Y3NuY21wLXNzZTIgd2NzbmNtcC1hdngyIFwKLQkJICAgd2Nz Y3B5LXNzc2UzIHdjc2NweS1jIFwKLQkJICAgd2NzY2hyLXNzZTIgd2NzY2hyLWF2eDIgXAotCQkg ICB3Y3NyY2hyLXNzZTIgd2NzcmNoci1hdngyIFwKLQkJICAgd2NzbGVuLXNzZTIgd2NzbGVuLXNz ZTRfMSB3Y3NsZW4tYXZ4MiBcCi0JCSAgIHdjc25sZW4tYyB3Y3NubGVuLXNzZTRfMSB3Y3NubGVu LWF2eDIgXAotCQkgICB3Y3NjaHItYXZ4Mi1ydG0gXAotCQkgICB3Y3NjbXAtYXZ4Mi1ydG0gXAot CQkgICB3Y3NsZW4tYXZ4Mi1ydG0gXAotCQkgICB3Y3NuY21wLWF2eDItcnRtIFwKLQkJICAgd2Nz bmxlbi1hdngyLXJ0bSBcCi0JCSAgIHdjc3JjaHItYXZ4Mi1ydG0gXAotCQkgICB3bWVtY2hyLWF2 eDItcnRtIFwKLQkJICAgd21lbWNtcC1hdngyLW1vdmJlLXJ0bSBcCi0JCSAgIHdjc2Noci1ldmV4 IFwKLQkJICAgd2NzY21wLWV2ZXggXAotCQkgICB3Y3NsZW4tZXZleCBcCi0JCSAgIHdjc25jbXAt ZXZleCBcCi0JCSAgIHdjc25sZW4tZXZleCBcCi0JCSAgIHdjc3JjaHItZXZleCBcCi0JCSAgIHdt ZW1jaHItZXZleCBcCi0JCSAgIHdtZW1jbXAtZXZleC1tb3ZiZSBcCi0JCSAgIHdtZW1jaHItZXZl eC1ydG0KK3N5c2RlcF9yb3V0aW5lcyArPSBcCisgIHdjc2Noci1hdngyIFwKKyAgd2NzY2hyLWF2 eDItcnRtIFwKKyAgd2NzY2hyLWV2ZXggXAorICB3Y3NjaHItc3NlMiBcCisgIHdjc2NtcC1hdngy IFwKKyAgd2NzY21wLWF2eDItcnRtIFwKKyAgd2NzY21wLWV2ZXggXAorICB3Y3NjbXAtc3NlMiBc CisgIHdjc2NweS1jIFwKKyAgd2NzY3B5LXNzc2UzIFwKKyAgd2NzbGVuLWF2eDIgXAorICB3Y3Ns ZW4tYXZ4Mi1ydG0gXAorICB3Y3NsZW4tZXZleCBcCisgIHdjc2xlbi1zc2UyIFwKKyAgd2NzbGVu LXNzZTRfMSBcCisgIHdjc25jbXAtYXZ4MiBcCisgIHdjc25jbXAtYXZ4Mi1ydG0gXAorICB3Y3Nu Y21wLWV2ZXggXAorICB3Y3NuY21wLXNzZTIgXAorICB3Y3NubGVuLWF2eDIgXAorICB3Y3NubGVu LWF2eDItcnRtIFwKKyAgd2Nzbmxlbi1jIFwKKyAgd2Nzbmxlbi1ldmV4IFwKKyAgd2Nzbmxlbi1z c2U0XzEgXAorICB3Y3NyY2hyLWF2eDIgXAorICB3Y3NyY2hyLWF2eDItcnRtIFwKKyAgd2NzcmNo ci1ldmV4IFwKKyAgd2NzcmNoci1zc2UyIFwKKyAgd21lbWNoci1hdngyIFwKKyAgd21lbWNoci1h dngyLXJ0bSBcCisgIHdtZW1jaHItZXZleCBcCisgIHdtZW1jaHItZXZleC1ydG0gXAorICB3bWVt Y2hyLXNzZTIgXAorICB3bWVtY21wLWF2eDItbW92YmUgXAorICB3bWVtY21wLWF2eDItbW92YmUt cnRtIFwKKyAgd21lbWNtcC1jIFwKKyAgd21lbWNtcC1ldmV4LW1vdmJlIFwKKyAgd21lbWNtcC1z c2U0IFwKKyAgd21lbWNtcC1zc3NlMyBcCisjIHN5c2RlcF9yb3V0aW5lcwogZW5kaWYKIAogaWZl cSAoJChzdWJkaXIpLGRlYnVnKQotc3lzZGVwX3JvdXRpbmVzICs9IG1lbWNweV9jaGstbm9uc2hh cmVkIG1lbXBjcHlfY2hrLW5vbnNoYXJlZCBcCi0JCSAgIG1lbW1vdmVfY2hrLW5vbnNoYXJlZCBt ZW1zZXRfY2hrLW5vbnNoYXJlZCBcCi0JCSAgIHdtZW1zZXRfY2hrLW5vbnNoYXJlZAorc3lzZGVw X3JvdXRpbmVzICs9IFwKKyAgbWVtY3B5X2Noay1ub25zaGFyZWQgXAorICBtZW1tb3ZlX2Noay1u b25zaGFyZWQgXAorICBtZW1wY3B5X2Noay1ub25zaGFyZWQgXAorICBtZW1zZXRfY2hrLW5vbnNo YXJlZCBcCisgIHdtZW1zZXRfY2hrLW5vbnNoYXJlZCBcCisjIHN5c2RlcF9yb3V0aW5lcwogZW5k aWYKLS0gCjIuMzUuMQoK --0000000000005837dd05ded577b5--