From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x531.google.com (mail-pg1-x531.google.com [IPv6:2607:f8b0:4864:20::531]) by sourceware.org (Postfix) with ESMTPS id 2B571385801D for ; Fri, 10 Dec 2021 18:57:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2B571385801D Received: by mail-pg1-x531.google.com with SMTP id r138so8778494pgr.13 for ; Fri, 10 Dec 2021 10:57:07 -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:cc; bh=yNvTSNzbnw1s2FF6onJ8d/eGrcFSeLaw/r62th9X+7g=; b=fUNUyHYfMEdMvxVkyM6iYGk9F5d1/afGwLCsA9CniNd+qgREsZZye/Z7UT4UEp7eVB JHfImL+lftQmjlPvhJQC4NG+zktiZhmFkKGxpO0qguabNbZ4n06tEatzectsICE44TyT nS5opR8/5IWxK95moJZ9QRPjdu4CnliMoLQt+qlZAtMERfWJYlcDcGq9X1hJkIzBuwhV NxfwjAOSuWarMzOaSbzkeDhKrsSQzIs8fO6uYTy5BM+EgsMRpeYvdQTNXawRYV5C6II+ WLA7fShUbik78EQwafSsWBxF+Rj24CdLYWr3vNAwCAUNzGBB8OO6xZoYAwQlImhF+bYn ICEg== X-Gm-Message-State: AOAM5305ZXeGjuV5by7Rf9anCE9VAd1eZCOAVg/USuiHCfxgkGXIRYve ikaWeuejxTPeA082J87uBXe8ZS/9RV0K3iQB6x9216kd X-Google-Smtp-Source: ABdhPJw8kN7rJYDC/3ERwqg13yOpEC2sEwTpv+GeamMsbopj+tY8bS7ufTvsR8H1xjmUoUQIjboQFx1xdv/b5usjScg= X-Received: by 2002:a63:4f42:: with SMTP id p2mr41274025pgl.381.1639162626061; Fri, 10 Dec 2021 10:57:06 -0800 (PST) MIME-Version: 1.0 References: <20211204045848.71105-1-rongwei.wang@linux.alibaba.com> <20211210123911.86568-1-rongwei.wang@linux.alibaba.com> <20211210123911.86568-3-rongwei.wang@linux.alibaba.com> In-Reply-To: From: "H.J. Lu" Date: Fri, 10 Dec 2021 10:56:30 -0800 Message-ID: Subject: Re: [PATCH v5 2/2] Add a testcase to check alignment of PT_LOAD segment To: Adhemerval Zanella Cc: Rongwei Wang , GNU C Library , Florian Weimer , xuyu@linux.alibaba.com, gavin.dg@linux.alibaba.com Content-Type: multipart/mixed; boundary="0000000000000e71bb05d2cf4aa5" X-Spam-Status: No, score=-3028.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org 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: , X-List-Received-Date: Fri, 10 Dec 2021 18:57:09 -0000 --0000000000000e71bb05d2cf4aa5 Content-Type: text/plain; charset="UTF-8" On Fri, Dec 10, 2021 at 7:41 AM H.J. Lu wrote: > > On Fri, Dec 10, 2021 at 5:48 AM Adhemerval Zanella > wrote: > > > > > > > > On 10/12/2021 09:39, Rongwei Wang via Libc-alpha wrote: > > > From: "H.J. Lu" > > > > > > This patch adds a testcase for PT_LOAD segment to check it is > > > properly aligned when the alignment > the page size. > > > > > > Signed-off-by: "H.J. Lu" > > > Signed-off-by: Rongwei Wang > > > --- > > > elf/Makefile | 14 ++++++++++++-- > > > elf/tst-align3.c | 37 +++++++++++++++++++++++++++++++++++++ > > > elf/tst-alignmod3.c | 31 +++++++++++++++++++++++++++++++ > > > 3 files changed, 80 insertions(+), 2 deletions(-) > > > create mode 100644 elf/tst-align3.c > > > create mode 100644 elf/tst-alignmod3.c > > > > > > diff --git a/elf/Makefile b/elf/Makefile > > > index ef36008673..b16128ac8b 100644 > > > --- a/elf/Makefile > > > +++ b/elf/Makefile > > > @@ -207,7 +207,7 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \ > > > tst-tls4 tst-tls5 \ > > > tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-tls15 \ > > > tst-tls16 tst-tls17 tst-tls18 tst-tls19 tst-tls-dlinfo \ > > > - tst-align tst-align2 \ > > > + tst-align tst-align2 tst-align3 \ > > > tst-dlmodcount tst-dlopenrpath tst-deep1 \ > > > tst-dlmopen1 tst-dlmopen3 tst-dlmopen4 \ > > > unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \ > > > @@ -241,6 +241,9 @@ tests-internal += loadtest unload unload2 circleload1 \ > > > tests-container += tst-pldd tst-dlopen-tlsmodid-container \ > > > tst-dlopen-self-container tst-preload-pthread-libc > > > test-srcs = tst-pathopt > > > +ifeq (yes,$(have-fpie)) > > > +tests-pie += tst-align3 > > > +endif > > > selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null) > > > ifneq ($(selinux-enabled),1) > > > tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog > > > @@ -302,7 +305,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ > > > circlemod3 circlemod3a \ > > > reldep8mod1 reldep8mod2 reldep8mod3 \ > > > reldep9mod1 reldep9mod2 reldep9mod3 \ > > > - tst-alignmod tst-alignmod2 \ > > > + tst-alignmod tst-alignmod2 tst-alignmod3 \ > > > $(modules-execstack-$(have-z-execstack)) \ > > > tst-dlopenrpathmod tst-deep1mod1 tst-deep1mod2 tst-deep1mod3 \ > > > tst-dlmopen1mod tst-auditmod1 \ > > > @@ -1088,6 +1091,13 @@ CFLAGS-tst-alignmod.c += $(stack-align-test-flags) > > > CFLAGS-tst-alignmod2.c += $(stack-align-test-flags) > > > $(objpfx)tst-align.out: $(objpfx)tst-alignmod.so > > > $(objpfx)tst-align2: $(objpfx)tst-alignmod2.so > > > +$(objpfx)tst-align3: $(objpfx)tst-alignmod3.so > > > +ifeq (yes,$(have-fpie)) > > > +CFLAGS-tst-align3.c += $(PIE-ccflag) > > > +endif > > > +LDFLAGS-tst-align3 += -Wl,-z,max-page-size=0x200000 > > > +LDFLAGS-tst-alignmod3.so += -Wl,-z,max-page-size=0x200000 > > > +$(objpfx)tst-alignmod3.so: $(libsupport) > > > > > > $(objpfx)unload3.out: $(objpfx)unload3mod1.so $(objpfx)unload3mod2.so \ > > > $(objpfx)unload3mod3.so $(objpfx)unload3mod4.so > > > diff --git a/elf/tst-align3.c b/elf/tst-align3.c > > > new file mode 100644 > > > index 0000000000..5697c0bbaf > > > --- /dev/null > > > +++ b/elf/tst-align3.c > > > @@ -0,0 +1,37 @@ > > > +/* Check alignment of PT_LOAD segment in a shared library. > > > + 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 > > > + . */ > > > + > > > +#include > > > +#include > > > + > > > +#define ALIGN 0x200000 > > > + > > > +int bar __attribute__ ((aligned (ALIGN))) = 1; > > > + > > > +extern int do_load_test (void); > > > + > > > +static int > > > +do_test (void) > > > +{ > > > + printf ("bar: %p\n", &bar); > > > + TEST_VERIFY (is_aligned (&bar, ALIGN) == 0); > > > + > > > + return do_load_test (); > > > +} > > > + > > > +#include > > > diff --git a/elf/tst-alignmod3.c b/elf/tst-alignmod3.c > > > new file mode 100644 > > > index 0000000000..50ec08462c > > > --- /dev/null > > > +++ b/elf/tst-alignmod3.c > > > @@ -0,0 +1,31 @@ > > > +/* Check alignment of PT_LOAD segment in a shared library. > > > + 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 > > > + . */ > > > + > > > +#include > > > +#include > > > + > > > +#define ALIGN 0x200000 > > > > I think it should cover all possible pagesize we current support. Maybe add > > a comment here or on Makefile about it. > > Here is the v2 patch I added > > /* This should cover all possible page sizes we currently support. */ > > > > + > > > +int foo __attribute__ ((aligned (ALIGN))) = 1; > > > + > > > +void > > > +do_load_test (void) > > > +{ > > > + printf ("foo: %p\n", &foo); > > > + TEST_VERIFY (is_aligned (&foo, ALIGN) == 0); > > > +} > > > > > > > -- > H.J. I am checking in this. -- H.J. --0000000000000e71bb05d2cf4aa5 Content-Type: text/x-patch; charset="US-ASCII"; name="v6-0002-Add-a-testcase-to-check-alignment-of-PT_LOAD-segm.patch" Content-Disposition: attachment; filename="v6-0002-Add-a-testcase-to-check-alignment-of-PT_LOAD-segm.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kx0r27mi0 RnJvbSA4MzFlYjRkMzI5ZTljN2YxNGE3MGFjZmZlMjU2Yjc5ZDA0YzZkMDA0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFRodSwgOSBEZWMgMjAyMSAwNzowMTozMyAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjYgMi8yXSBB ZGQgYSB0ZXN0Y2FzZSB0byBjaGVjayBhbGlnbm1lbnQgb2YgUFRfTE9BRCBzZWdtZW50CiBbQlog IzI4Njc2XQoKLS0tCiBlbGYvTWFrZWZpbGUgICAgICAgIHwgMTQgKysrKysrKysrKysrLS0KIGVs Zi90c3QtYWxpZ24zLmMgICAgfCAzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogZWxmL3RzdC1hbGlnbm1vZDMuYyB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgZWxmL3RzdC1hbGlnbjMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGVsZi90c3QtYWxpZ25tb2QzLmMKCmRpZmYgLS1naXQgYS9lbGYvTWFrZWZpbGUgYi9lbGYvTWFr ZWZpbGUKaW5kZXggZDBiYjBkYWE3ZS4uZmU0MmNhZWIwZSAxMDA2NDQKLS0tIGEvZWxmL01ha2Vm aWxlCisrKyBiL2VsZi9NYWtlZmlsZQpAQCAtMjA3LDcgKzIwNyw3IEBAIHRlc3RzICs9IHJlc3Rl c3QxIHByZWxvYWR0ZXN0IGxvYWRmYWlsIG11bHRpbG9hZCBvcmlndGVzdCByZXNvbHZmYWlsIFwK IAkgdHN0LXRsczQgdHN0LXRsczUgXAogCSB0c3QtdGxzMTAgdHN0LXRsczExIHRzdC10bHMxMiB0 c3QtdGxzMTMgdHN0LXRsczE0IHRzdC10bHMxNSBcCiAJIHRzdC10bHMxNiB0c3QtdGxzMTcgdHN0 LXRsczE4IHRzdC10bHMxOSB0c3QtdGxzLWRsaW5mbyBcCi0JIHRzdC1hbGlnbiB0c3QtYWxpZ24y IFwKKwkgdHN0LWFsaWduIHRzdC1hbGlnbjIgdHN0LWFsaWduMyBcCiAJIHRzdC1kbG1vZGNvdW50 IHRzdC1kbG9wZW5ycGF0aCB0c3QtZGVlcDEgXAogCSB0c3QtZGxtb3BlbjEgdHN0LWRsbW9wZW4z IHRzdC1kbG1vcGVuNCBcCiAJIHVubG9hZDMgdW5sb2FkNCB1bmxvYWQ1IHVubG9hZDYgdW5sb2Fk NyB1bmxvYWQ4IHRzdC1nbG9iYWwxIG9yZGVyMiBcCkBAIC0yNDEsNiArMjQxLDkgQEAgdGVzdHMt aW50ZXJuYWwgKz0gbG9hZHRlc3QgdW5sb2FkIHVubG9hZDIgY2lyY2xlbG9hZDEgXAogdGVzdHMt Y29udGFpbmVyICs9IHRzdC1wbGRkIHRzdC1kbG9wZW4tdGxzbW9kaWQtY29udGFpbmVyIFwKICAg dHN0LWRsb3Blbi1zZWxmLWNvbnRhaW5lciB0c3QtcHJlbG9hZC1wdGhyZWFkLWxpYmMKIHRlc3Qt c3JjcyA9IHRzdC1wYXRob3B0CitpZmVxICh5ZXMsJChoYXZlLWZwaWUpKQordGVzdHMtcGllICs9 IHRzdC1hbGlnbjMKK2VuZGlmCiBzZWxpbnV4LWVuYWJsZWQgOj0gJChzaGVsbCBjYXQgL3NlbGlu dXgvZW5mb3JjZSAyPiAvZGV2L251bGwpCiBpZm5lcSAoJChzZWxpbnV4LWVuYWJsZWQpLDEpCiB0 ZXN0cy1leGVjc3RhY2steWVzID0gdHN0LWV4ZWNzdGFjayB0c3QtZXhlY3N0YWNrLW5lZWRlZCB0 c3QtZXhlY3N0YWNrLXByb2cKQEAgLTMwMiw3ICszMDUsNyBAQCBtb2R1bGVzLW5hbWVzID0gdGVz dG9iajEgdGVzdG9iajIgdGVzdG9iajMgdGVzdG9iajQgdGVzdG9iajUgdGVzdG9iajYgXAogCQlj aXJjbGVtb2QzIGNpcmNsZW1vZDNhIFwKIAkJcmVsZGVwOG1vZDEgcmVsZGVwOG1vZDIgcmVsZGVw OG1vZDMgXAogCQlyZWxkZXA5bW9kMSByZWxkZXA5bW9kMiByZWxkZXA5bW9kMyBcCi0JCXRzdC1h bGlnbm1vZCB0c3QtYWxpZ25tb2QyIFwKKwkJdHN0LWFsaWdubW9kIHRzdC1hbGlnbm1vZDIgdHN0 LWFsaWdubW9kMyBcCiAJCSQobW9kdWxlcy1leGVjc3RhY2stJChoYXZlLXotZXhlY3N0YWNrKSkg XAogCQl0c3QtZGxvcGVucnBhdGhtb2QgdHN0LWRlZXAxbW9kMSB0c3QtZGVlcDFtb2QyIHRzdC1k ZWVwMW1vZDMgXAogCQl0c3QtZGxtb3BlbjFtb2QgdHN0LWF1ZGl0bW9kMSBcCkBAIC0xMDkzLDYg KzEwOTYsMTMgQEAgQ0ZMQUdTLXRzdC1hbGlnbm1vZC5jICs9ICQoc3RhY2stYWxpZ24tdGVzdC1m bGFncykKIENGTEFHUy10c3QtYWxpZ25tb2QyLmMgKz0gJChzdGFjay1hbGlnbi10ZXN0LWZsYWdz KQogJChvYmpwZngpdHN0LWFsaWduLm91dDogJChvYmpwZngpdHN0LWFsaWdubW9kLnNvCiAkKG9i anBmeCl0c3QtYWxpZ24yOiAkKG9ianBmeCl0c3QtYWxpZ25tb2QyLnNvCiskKG9ianBmeCl0c3Qt YWxpZ24zOiAkKG9ianBmeCl0c3QtYWxpZ25tb2QzLnNvCitpZmVxICh5ZXMsJChoYXZlLWZwaWUp KQorQ0ZMQUdTLXRzdC1hbGlnbjMuYyArPSAkKFBJRS1jY2ZsYWcpCitlbmRpZgorTERGTEFHUy10 c3QtYWxpZ24zICs9IC1XbCwteixtYXgtcGFnZS1zaXplPTB4MjAwMDAwCitMREZMQUdTLXRzdC1h bGlnbm1vZDMuc28gKz0gLVdsLC16LG1heC1wYWdlLXNpemU9MHgyMDAwMDAKKyQob2JqcGZ4KXRz dC1hbGlnbm1vZDMuc286ICQobGlic3VwcG9ydCkKIAogJChvYmpwZngpdW5sb2FkMy5vdXQ6ICQo b2JqcGZ4KXVubG9hZDNtb2QxLnNvICQob2JqcGZ4KXVubG9hZDNtb2QyLnNvIFwKIAkJICAgICAg JChvYmpwZngpdW5sb2FkM21vZDMuc28gJChvYmpwZngpdW5sb2FkM21vZDQuc28KZGlmZiAtLWdp dCBhL2VsZi90c3QtYWxpZ24zLmMgYi9lbGYvdHN0LWFsaWduMy5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLmFjODZkNjIzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9lbGYv dHN0LWFsaWduMy5jCkBAIC0wLDAgKzEsMzggQEAKKy8qIENoZWNrIGFsaWdubWVudCBvZiBQVF9M T0FEIHNlZ21lbnQgaW4gYSBzaGFyZWQgbGlicmFyeS4KKyAgIENvcHlyaWdodCAoQykgMjAyMSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgQyBMaWJyYXJ5LgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgdmVyc2lv biAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAg IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKKyAgIDxo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSA8c3VwcG9ydC9j aGVjay5oPgorI2luY2x1ZGUgPHRzdC1zdGFjay1hbGlnbi5oPgorCisvKiBUaGlzIHNob3VsZCBj b3ZlciBhbGwgcG9zc2libGUgcGFnZSBzaXplcyB3ZSBjdXJyZW50bHkgc3VwcG9ydC4gICovCisj ZGVmaW5lIEFMSUdOIDB4MjAwMDAwCisKK2ludCBiYXIgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQg KEFMSUdOKSkpID0gMTsKKworZXh0ZXJuIGludCBkb19sb2FkX3Rlc3QgKHZvaWQpOworCitzdGF0 aWMgaW50Citkb190ZXN0ICh2b2lkKQoreworICBwcmludGYgKCJiYXI6ICVwXG4iLCAmYmFyKTsK KyAgVEVTVF9WRVJJRlkgKGlzX2FsaWduZWQgKCZiYXIsIEFMSUdOKSA9PSAwKTsKKworICByZXR1 cm4gZG9fbG9hZF90ZXN0ICgpOworfQorCisjaW5jbHVkZSA8c3VwcG9ydC90ZXN0LWRyaXZlci5j PgpkaWZmIC0tZ2l0IGEvZWxmL3RzdC1hbGlnbm1vZDMuYyBiL2VsZi90c3QtYWxpZ25tb2QzLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMGQzM2YyMzc5ZAotLS0gL2Rl di9udWxsCisrKyBiL2VsZi90c3QtYWxpZ25tb2QzLmMKQEAgLTAsMCArMSwzMiBAQAorLyogQ2hl Y2sgYWxpZ25tZW50IG9mIFBUX0xPQUQgc2VnbWVudCBpbiBhIHNoYXJlZCBsaWJyYXJ5LgorICAg Q29weXJpZ2h0IChDKSAyMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisKKyAgIFRoZSBHTlUgQyBMaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YworICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyCisgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlIEdOVQorICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5 OyBpZiBub3QsIHNlZQorICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisK KyNpbmNsdWRlIDxzdXBwb3J0L2NoZWNrLmg+CisjaW5jbHVkZSA8dHN0LXN0YWNrLWFsaWduLmg+ CisKKy8qIFRoaXMgc2hvdWxkIGNvdmVyIGFsbCBwb3NzaWJsZSBwYWdlIHNpemVzIHdlIGN1cnJl bnRseSBzdXBwb3J0LiAgKi8KKyNkZWZpbmUgQUxJR04gMHgyMDAwMDAKKworaW50IGZvbyBfX2F0 dHJpYnV0ZV9fICgoYWxpZ25lZCAoQUxJR04pKSkgPSAxOworCit2b2lkCitkb19sb2FkX3Rlc3Qg KHZvaWQpCit7CisgIHByaW50ZiAoImZvbzogJXBcbiIsICZmb28pOworICBURVNUX1ZFUklGWSAo aXNfYWxpZ25lZCAoJmZvbywgQUxJR04pID09IDApOworfQotLSAKMi4zMy4xCgo= --0000000000000e71bb05d2cf4aa5--