From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS17314 8.43.84.0/22 X-Spam-Status: No, score=-4.2 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 8E73A1F852 for ; Sat, 22 Jan 2022 15:37:03 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 45D34385841A for ; Sat, 22 Jan 2022 15:37:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 45D34385841A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1642865822; bh=wEfeCjY3lf8LTiN4UE4YBnIMRviD4htGMZuKCaMNAZs=; h=References:In-Reply-To:Date:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=RoqTbrnOeVPYu3EeJ366xWOhxUI8iWSsGqkOaxspfM2RzYZfGhiIxBT+t+CGGOEjn fw1K5OBaALfptNnaDiA3OwLvzyBwfMn2UGpufx+hXcswJHV0+1i57LC1bt1bPxavhR E2pCfAPfy6Z8dAuIC7M6LeqyyeBsyX3FKgpklego= Received: from mail-pg1-x534.google.com (mail-pg1-x534.google.com [IPv6:2607:f8b0:4864:20::534]) by sourceware.org (Postfix) with ESMTPS id 970DC3858D37 for ; Sat, 22 Jan 2022 15:36:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 970DC3858D37 Received: by mail-pg1-x534.google.com with SMTP id r11so10819558pgr.6 for ; Sat, 22 Jan 2022 07:36:40 -0800 (PST) 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; bh=wEfeCjY3lf8LTiN4UE4YBnIMRviD4htGMZuKCaMNAZs=; b=k2HAF6wlofJNDGApUHxiHeUQd1PgjFkc+7sZNqcBt4T4td1pWtr7CEEbjIac1HaIzS 0dqHex6bvo21GwyTAPto+qIa8xdNG+EBcQwKHRT4T7rFTZX62AU8H2HCae21HL69YOpH mt74psL9I/k3ZbPHy7mthKUd6CzMlk2acah3TJJ6Qo5JhPfYggul2bcRmkZsZtAxmnjc B7RzTA3zWYBm62pGmxj/yYvpLpTGczg7fMUV6JvzSVf/cGL7DpG1MWmcgB/HC6nwRE87 9DBE3/Ya67ZAXuBxpKBRZyviXLCOum3cGF/H9fOhCFITnKnZENDF8CBXSpxoR4IK1AaC WNlw== X-Gm-Message-State: AOAM532rDZ3zwXW+6MXpLm8S/FatIxpCN7ostHKIhq05vZ+jE9KoTBkj qL/nzQmrfaTZNoyWi8RI5tJTtdSrFk0M5JBXHnpLThbO9S8= X-Google-Smtp-Source: ABdhPJzbHaLYkqXJdNzlpuYuDGOje1eqikk8PjAa/8CAZyk3A1IoAKdYjRtqGboNym+cONBg37aWhBnUoYBny70QvM8= X-Received: by 2002:a05:6a00:124c:b0:4ba:1288:67dc with SMTP id u12-20020a056a00124c00b004ba128867dcmr7923759pfi.43.1642865799003; Sat, 22 Jan 2022 07:36:39 -0800 (PST) MIME-Version: 1.0 References: <20220104140009.1578867-1-hjl.tools@gmail.com> In-Reply-To: Date: Sat, 22 Jan 2022 07:36:02 -0800 Message-ID: Subject: Re: PING^1 [PATCH] Add and use link-test-modules-rpath-link [BZ #28455] To: GNU C Library Content-Type: multipart/mixed; boundary="0000000000005d1d6b05d62d804d" X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: "H.J. Lu via Libc-alpha" Reply-To: "H.J. Lu" Errors-To: libc-alpha-bounces+e=80x24.org@sourceware.org Sender: "Libc-alpha" --0000000000005d1d6b05d62d804d Content-Type: text/plain; charset="UTF-8" On Fri, Jan 21, 2022 at 4:25 AM H.J. Lu wrote: > > On Tue, Jan 4, 2022 at 6:00 AM H.J. Lu wrote: > > > > DT_RUNPATH is only used to find the immediate dependencies of the > > executable or shared object containing the DT_RUNPATH entry: > > > > 1. Define link-test-modules-rpath-link if $(build-hardcoded-path-in-tests) > > is yes. > > 2. Use $(link-test-modules-rpath-link) in build-module-helper so that > > test modules can dlopen modules with DT_RUNPATH. > > 3. Add a test to show why link-test-modules-rpath-link is needed. > > > > This partially fixes BZ #28455. > > --- > > Makeconfig | 2 ++ > > Makerules | 1 + > > elf/Makefile | 7 +++++++ > > elf/tst-global2.c | 32 ++++++++++++++++++++++++++++++++ > > elf/tst-globalmod2.c | 41 +++++++++++++++++++++++++++++++++++++++++ > > 5 files changed, 83 insertions(+) > > create mode 100644 elf/tst-global2.c > > create mode 100644 elf/tst-globalmod2.c > > > > diff --git a/Makeconfig b/Makeconfig > > index 06f1cca320..02a0afb9c2 100644 > > --- a/Makeconfig > > +++ b/Makeconfig > > @@ -575,8 +575,10 @@ link-libc-rpath-link = -Wl,-rpath-link=$(rpath-link) > > # build-hardcoded-path-in-tests. > > ifeq (yes,$(build-hardcoded-path-in-tests)) > > link-libc-tests-rpath-link = $(link-libc-rpath) > > +link-test-modules-rpath-link = $(link-libc-rpath) > > else > > link-libc-tests-rpath-link = $(link-libc-rpath-link) > > +link-test-modules-rpath-link = > > endif # build-hardcoded-path-in-tests > > > > link-libc-between-gnulib = $(common-objpfx)libc.so$(libc.so-version) \ > > diff --git a/Makerules b/Makerules > > index 9a56cbdead..37c29758ee 100644 > > --- a/Makerules > > +++ b/Makerules > > @@ -591,6 +591,7 @@ $(LINK.o) -shared -static-libgcc $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \ > > $(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) \ > > -B$(csu-objpfx) $(load-map-file) \ > > $(LDFLAGS.so) $(LDFLAGS-$(@F:%.so=%).so) \ > > + $(link-test-modules-rpath-link) \ > > -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) > > endef > > > > diff --git a/elf/Makefile b/elf/Makefile > > index 8eb7e6e5d9..bbca0b21bc 100644 > > --- a/elf/Makefile > > +++ b/elf/Makefile > > @@ -279,6 +279,7 @@ tests += \ > > tst-glibc-hwcaps-mask \ > > tst-glibc-hwcaps-prepend \ > > tst-global1 \ > > + tst-global2 \ > > tst-initfinilazyfail \ > > tst-initorder \ > > tst-initorder2 \ > > @@ -535,6 +536,7 @@ modules-names = \ > > tst-filterobj-filtee \ > > tst-filterobj-flt \ > > tst-finilazyfailmod \ > > + tst-globalmod2 \ > > tst-initlazyfailmod \ > > tst-initorder2a \ > > tst-initorder2b \ > > @@ -1624,6 +1626,11 @@ tst-audit8-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so > > > > $(objpfx)tst-global1.out: $(objpfx)testobj6.so $(objpfx)testobj2.so > > > > +$(objpfx)tst-global2: $(objpfx)tst-globalmod2.so > > +$(objpfx)tst-global2.out: $(objpfx)reldepmod1.so $(objpfx)reldepmod4.so > > +LDFLAGS-tst-global2 = -Wl,--enable-new-dtags > > +LDFLAGS-tst-globalmod2.so = -Wl,--enable-new-dtags > > + > > $(objpfx)order2.out: $(objpfx)order2mod1.so $(objpfx)order2mod2.so > > $(objpfx)order2-cmp.out: $(objpfx)order2.out > > (echo "12345" | cmp $< -) > $@; \ > > diff --git a/elf/tst-global2.c b/elf/tst-global2.c > > new file mode 100644 > > index 0000000000..e929f526f4 > > --- /dev/null > > +++ b/elf/tst-global2.c > > @@ -0,0 +1,32 @@ > > +/* Test BZ #28455. > > + Copyright (C) 2021 Free Software Foundation, Inc. > > + This file is part of the GNU C Library. > > + > > + The GNU C Library is free software; you can redistribute it and/or > > + modify it under the terms of the GNU Lesser General Public > > + License as published by the Free Software Foundation; either > > + version 2.1 of the License, or (at your option) any later version. > > + > > + The GNU C Library is distributed in the hope that it will be useful, > > + but WITHOUT ANY WARRANTY; without even the implied warranty of > > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > > + Lesser General Public License for more details. > > + > > + You should have received a copy of the GNU Lesser General Public > > + License along with the GNU C Library; if not, see > > + . */ > > + > > +/* In glibc configured with --enable-hardcoded-path-in-tests, a test > > + program built with -Wl,--enable-new-dtags, which adds DT_RUNPATH, > > + instead of DT_RPATH, can call a function in a shared library, which > > + dlopens another shared library. */ > > + > > +extern int test (void); > > + > > +static int > > +do_test (void) > > +{ > > + return test (); > > +} > > + > > +#include > > diff --git a/elf/tst-globalmod2.c b/elf/tst-globalmod2.c > > new file mode 100644 > > index 0000000000..6fd70a72a8 > > --- /dev/null > > +++ b/elf/tst-globalmod2.c > > @@ -0,0 +1,41 @@ > > +/* Test BZ #28455. > > + Copyright (C) 2021 Free Software Foundation, Inc. > > + This file is part of the GNU C Library. > > + > > + The GNU C Library is free software; you can redistribute it and/or > > + modify it under the terms of the GNU Lesser General Public > > + License as published by the Free Software Foundation; either > > + version 2.1 of the License, or (at your option) any later version. > > + > > + The GNU C Library is distributed in the hope that it will be useful, > > + but WITHOUT ANY WARRANTY; without even the implied warranty of > > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > > + Lesser General Public License for more details. > > + > > + You should have received a copy of the GNU Lesser General Public > > + License along with the GNU C Library; if not, see > > + . */ > > + > > +/* In glibc configured with --enable-hardcoded-path-in-tests, a test > > + program built with -Wl,--enable-new-dtags, which adds DT_RUNPATH, > > + instead of DT_RPATH, can call a function in a shared library, which > > + dlopens another shared library. */ > > + > > +#include > > +#include > > +#include > > + > > +extern int test (void); > > + > > +int > > +test (void) > > +{ > > + (void) dlopen ("reldepmod4.so", RTLD_LAZY | RTLD_GLOBAL); > > + if (dlsym (RTLD_DEFAULT, "call_me") != NULL) > > + { > > + puts ("found \"call_me\""); > > + return EXIT_SUCCESS; > > + } > > + puts ("didn't find \"call_me\""); > > + return EXIT_FAILURE; > > +} > > -- > > 2.33.1 > > > > PING > > https://patchwork.sourceware.org/project/glibc/patch/20220104140009.1578867-1-hjl.tools@gmail.com/ > I am checking in this patch next Monday to get a clean build on Fedora 35 with --enable-hardcoded-path-in-tests, -- H.J. --0000000000005d1d6b05d62d804d Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-and-use-link-test-modules-rpath-link-BZ-28455.patch" Content-Disposition: attachment; filename="0001-Add-and-use-link-test-modules-rpath-link-BZ-28455.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kypzukll0 RnJvbSA1OGVmZjMxNDc4NGMyMDc0MTE4OTBmNGJhYjFmODQyNTYzY2Y1MjU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IEZyaSwgMTUgT2N0IDIwMjEgMDY6MzM6MDUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBBZGQgYW5k IHVzZSBsaW5rLXRlc3QtbW9kdWxlcy1ycGF0aC1saW5rIFtCWiAjMjg0NTVdCgpEVF9SVU5QQVRI IGlzIG9ubHkgdXNlZCB0byBmaW5kIHRoZSBpbW1lZGlhdGUgZGVwZW5kZW5jaWVzIG9mIHRoZQpl eGVjdXRhYmxlIG9yIHNoYXJlZCBvYmplY3QgY29udGFpbmluZyB0aGUgRFRfUlVOUEFUSCBlbnRy eToKCjEuIERlZmluZSBsaW5rLXRlc3QtbW9kdWxlcy1ycGF0aC1saW5rIGlmICQoYnVpbGQtaGFy ZGNvZGVkLXBhdGgtaW4tdGVzdHMpCmlzIHllcy4KMi4gVXNlICQobGluay10ZXN0LW1vZHVsZXMt cnBhdGgtbGluaykgaW4gYnVpbGQtbW9kdWxlLWhlbHBlciBzbyB0aGF0CnRlc3QgbW9kdWxlcyBj YW4gZGxvcGVuIG1vZHVsZXMgd2l0aCBEVF9SVU5QQVRILgozLiBBZGQgYSB0ZXN0IHRvIHNob3cg d2h5IGxpbmstdGVzdC1tb2R1bGVzLXJwYXRoLWxpbmsgaXMgbmVlZGVkLgoKVGhpcyBwYXJ0aWFs bHkgZml4ZXMgQlogIzI4NDU1LgotLS0KIE1ha2Vjb25maWcgICAgICAgICAgIHwgIDIgKysKIE1h a2VydWxlcyAgICAgICAgICAgIHwgIDEgKwogZWxmL01ha2VmaWxlICAgICAgICAgfCAgNyArKysr KysrCiBlbGYvdHN0LWdsb2JhbDIuYyAgICB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBlbGYvdHN0LWdsb2JhbG1vZDIuYyB8IDQxICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDgzIGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBlbGYvdHN0LWdsb2JhbDIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGVs Zi90c3QtZ2xvYmFsbW9kMi5jCgpkaWZmIC0tZ2l0IGEvTWFrZWNvbmZpZyBiL01ha2Vjb25maWcK aW5kZXggMmU3OTA3NzM0My4uNDdkYjA4ZDZhZSAxMDA2NDQKLS0tIGEvTWFrZWNvbmZpZworKysg Yi9NYWtlY29uZmlnCkBAIC01NzUsOCArNTc1LDEwIEBAIGxpbmstbGliYy1ycGF0aC1saW5rID0g LVdsLC1ycGF0aC1saW5rPSQocnBhdGgtbGluaykKICMgYnVpbGQtaGFyZGNvZGVkLXBhdGgtaW4t dGVzdHMuCiBpZmVxICh5ZXMsJChidWlsZC1oYXJkY29kZWQtcGF0aC1pbi10ZXN0cykpCiBsaW5r LWxpYmMtdGVzdHMtcnBhdGgtbGluayA9ICQobGluay1saWJjLXJwYXRoKQorbGluay10ZXN0LW1v ZHVsZXMtcnBhdGgtbGluayA9ICQobGluay1saWJjLXJwYXRoKQogZWxzZQogbGluay1saWJjLXRl c3RzLXJwYXRoLWxpbmsgPSAkKGxpbmstbGliYy1ycGF0aC1saW5rKQorbGluay10ZXN0LW1vZHVs ZXMtcnBhdGgtbGluayA9CiBlbmRpZiAgIyBidWlsZC1oYXJkY29kZWQtcGF0aC1pbi10ZXN0cwog CiBsaW5rLWxpYmMtYmV0d2Vlbi1nbnVsaWIgPSAkKGNvbW1vbi1vYmpwZngpbGliYy5zbyQobGli Yy5zby12ZXJzaW9uKSBcCmRpZmYgLS1naXQgYS9NYWtlcnVsZXMgYi9NYWtlcnVsZXMKaW5kZXgg ODEzMDdiNjcwZS4uNWRlMmNlYzZiZSAxMDA2NDQKLS0tIGEvTWFrZXJ1bGVzCisrKyBiL01ha2Vy dWxlcwpAQCAtNTk3LDYgKzU5Nyw3IEBAICQoTElOSy5vKSAtc2hhcmVkIC1zdGF0aWMtbGliZ2Nj ICQoc3lzZGVwLUxERkxBR1MpICQocnRsZC1MREZMQUdTKSBcCiAJICAkKGlmICQoJChARiktbm8t ei1kZWZzKSQobm8tei1kZWZzKSwsLVdsLC16LGRlZnMpIFwKIAkgIC1CJChjc3Utb2JqcGZ4KSAk KGxvYWQtbWFwLWZpbGUpIFwKIAkgICQoTERGTEFHUy5zbykgJChMREZMQUdTLSQoQEY6JS5zbz0l KS5zbykgXAorCSAgJChsaW5rLXRlc3QtbW9kdWxlcy1ycGF0aC1saW5rKSBcCiAJICAtTCQoc3Vi c3QgOiwgLUwsJChycGF0aC1saW5rKSkgLVdsLC1ycGF0aC1saW5rPSQocnBhdGgtbGluaykKIGVu ZGVmCiAKZGlmZiAtLWdpdCBhL2VsZi9NYWtlZmlsZSBiL2VsZi9NYWtlZmlsZQppbmRleCA2OTJh NjViMDYxLi4xY2M5ZjU0MzM3IDEwMDY0NAotLS0gYS9lbGYvTWFrZWZpbGUKKysrIGIvZWxmL01h a2VmaWxlCkBAIC00MDIsNiArNDAyLDcgQEAgdGVzdHMgKz0gXAogICB0c3QtZ2xpYmMtaHdjYXBz LW1hc2sgXAogICB0c3QtZ2xpYmMtaHdjYXBzLXByZXBlbmQgXAogICB0c3QtZ2xvYmFsMSBcCisg IHRzdC1nbG9iYWwyIFwKICAgdHN0LWluaXRmaW5pbGF6eWZhaWwgXAogICB0c3QtaW5pdG9yZGVy IFwKICAgdHN0LWluaXRvcmRlcjIgXApAQCAtNzA5LDYgKzcxMCw3IEBAIG1vZHVsZXMtbmFtZXMg PSBcCiAgIHRzdC1maWx0ZXJvYmotZmlsdGVlIFwKICAgdHN0LWZpbHRlcm9iai1mbHQgXAogICB0 c3QtZmluaWxhenlmYWlsbW9kIFwKKyAgdHN0LWdsb2JhbG1vZDIgXAogICB0c3QtaW5pdGxhenlm YWlsbW9kIFwKICAgdHN0LWluaXRvcmRlcjJhIFwKICAgdHN0LWluaXRvcmRlcjJiIFwKQEAgLTE4 NTYsNiArMTg1OCwxMSBAQCB0c3QtYXVkaXQ4LUVOViA9IExEX0FVRElUPSQob2JqcGZ4KXRzdC1h dWRpdG1vZDEuc28KIAogJChvYmpwZngpdHN0LWdsb2JhbDEub3V0OiAkKG9ianBmeCl0ZXN0b2Jq Ni5zbyAkKG9ianBmeCl0ZXN0b2JqMi5zbwogCiskKG9ianBmeCl0c3QtZ2xvYmFsMjogJChvYmpw ZngpdHN0LWdsb2JhbG1vZDIuc28KKyQob2JqcGZ4KXRzdC1nbG9iYWwyLm91dDogJChvYmpwZngp cmVsZGVwbW9kMS5zbyAkKG9ianBmeClyZWxkZXBtb2Q0LnNvCitMREZMQUdTLXRzdC1nbG9iYWwy ID0gLVdsLC0tZW5hYmxlLW5ldy1kdGFncworTERGTEFHUy10c3QtZ2xvYmFsbW9kMi5zbyA9IC1X bCwtLWVuYWJsZS1uZXctZHRhZ3MKKwogJChvYmpwZngpb3JkZXIyLm91dDogJChvYmpwZngpb3Jk ZXIybW9kMS5zbyAkKG9ianBmeClvcmRlcjJtb2QyLnNvCiAkKG9ianBmeClvcmRlcjItY21wLm91 dDogJChvYmpwZngpb3JkZXIyLm91dAogCShlY2hvICIxMjM0NSIgfCBjbXAgJDwgLSkgPiAkQDsg XApkaWZmIC0tZ2l0IGEvZWxmL3RzdC1nbG9iYWwyLmMgYi9lbGYvdHN0LWdsb2JhbDIuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45Y2JmYWUwOTYxCi0tLSAvZGV2L251 bGwKKysrIGIvZWxmL3RzdC1nbG9iYWwyLmMKQEAgLTAsMCArMSwzMiBAQAorLyogVGVzdCBCWiAj Mjg0NTUuCisgICBDb3B5cmlnaHQgKEMpIDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKworICAgVGhl IEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCisgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGUgR05VIEMgTGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VCisgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdO VSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCisgICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KKworLyogSW4gZ2xpYmMgY29uZmlndXJlZCB3aXRoIC0tZW5hYmxlLWhhcmRjb2Rl ZC1wYXRoLWluLXRlc3RzLCBhIHRlc3QKKyAgIHByb2dyYW0gYnVpbHQgd2l0aCAtV2wsLS1lbmFi bGUtbmV3LWR0YWdzLCB3aGljaCBhZGRzIERUX1JVTlBBVEgsCisgICBpbnN0ZWFkIG9mIERUX1JQ QVRILCBjYW4gY2FsbCBhIGZ1bmN0aW9uIGluIGEgc2hhcmVkIGxpYnJhcnksIHdoaWNoCisgICBk bG9wZW5zIGFub3RoZXIgc2hhcmVkIGxpYnJhcnkuICAqLworCitleHRlcm4gaW50IHRlc3QgKHZv aWQpOworCitzdGF0aWMgaW50Citkb190ZXN0ICh2b2lkKQoreworICByZXR1cm4gdGVzdCAoKTsK K30KKworI2luY2x1ZGUgPHN1cHBvcnQvdGVzdC1kcml2ZXIuYz4KZGlmZiAtLWdpdCBhL2VsZi90 c3QtZ2xvYmFsbW9kMi5jIGIvZWxmL3RzdC1nbG9iYWxtb2QyLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uNGRlODQwNTBjYQotLS0gL2Rldi9udWxsCisrKyBiL2VsZi90 c3QtZ2xvYmFsbW9kMi5jCkBAIC0wLDAgKzEsNDEgQEAKKy8qIFRlc3QgQlogIzI4NDU1LgorICAg Q29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisKKyAgIFRoZSBHTlUgQyBMaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YworICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyCisgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlIEdOVQorICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5 OyBpZiBub3QsIHNlZQorICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisK Ky8qIEluIGdsaWJjIGNvbmZpZ3VyZWQgd2l0aCAtLWVuYWJsZS1oYXJkY29kZWQtcGF0aC1pbi10 ZXN0cywgYSB0ZXN0CisgICBwcm9ncmFtIGJ1aWx0IHdpdGggLVdsLC0tZW5hYmxlLW5ldy1kdGFn cywgd2hpY2ggYWRkcyBEVF9SVU5QQVRILAorICAgaW5zdGVhZCBvZiBEVF9SUEFUSCwgY2FuIGNh bGwgYSBmdW5jdGlvbiBpbiBhIHNoYXJlZCBsaWJyYXJ5LCB3aGljaAorICAgZGxvcGVucyBhbm90 aGVyIHNoYXJlZCBsaWJyYXJ5LiAgKi8KKworI2luY2x1ZGUgPGRsZmNuLmg+CisjaW5jbHVkZSA8 c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworZXh0ZXJuIGludCB0ZXN0ICh2b2lkKTsK KworaW50Cit0ZXN0ICh2b2lkKQoreworICAodm9pZCkgZGxvcGVuICgicmVsZGVwbW9kNC5zbyIs IFJUTERfTEFaWSB8IFJUTERfR0xPQkFMKTsKKyAgaWYgKGRsc3ltIChSVExEX0RFRkFVTFQsICJj YWxsX21lIikgIT0gTlVMTCkKKyAgICB7CisgICAgICBwdXRzICgiZm91bmQgXCJjYWxsX21lXCIi KTsKKyAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7CisgICAgfQorICBwdXRzICgiZGlkbid0IGZp bmQgXCJjYWxsX21lXCIiKTsKKyAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKK30KLS0gCjIuMzQuMQoK --0000000000005d1d6b05d62d804d--