From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 51748 invoked by alias); 4 Nov 2019 02:46:04 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 51533 invoked by uid 89); 4 Nov 2019 02:45:47 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-9.3 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=preference, H*f:sk:CAFiYyc, meantime, reviews X-HELO: mail-lf1-f51.google.com Received: from mail-lf1-f51.google.com (HELO mail-lf1-f51.google.com) (209.85.167.51) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 04 Nov 2019 02:45:19 +0000 Received: by mail-lf1-f51.google.com with SMTP id z12so11032929lfj.9 for ; Sun, 03 Nov 2019 18:45:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=qj+xtUKlg+goRQ3N8HJ6xk4fpu3zszqdrIei2iN67Q4=; b=kmA4hjFx2PP958S6R3agQc/wfHRptCYmMhYECXFLEt1AMAa3lV65mlnI/lzecLIInf MPoxi7TiyGyg4EehI75+JzNf5WT/cNuxgnVLzo4GRJMzZ9ThSBNmWyNvCLQggWXuxsGC 4PoDWvTHNbZBetWJ56cfDUCqDlikcAqdyZBQrTk5he89ARDEyv6D2RJXn4AWBK/tb/7S JKZ4jagWlgUDs60rdkQaZ7lJdrpmaNPVPYWsuaiscizXmTB7wLLV1P3pBtQxLOZx0o+o 1nEFhoRMTA2psyBEplukogHSdkwsnQ9C/VoaTtBVT1S3Nnh2KcjAFoDPaHP3pAifUrUy eAxA== MIME-Version: 1.0 References: In-Reply-To: From: Kugan Vivekanandarajah Date: Mon, 04 Nov 2019 02:46:00 -0000 Message-ID: Subject: Re: [PR47785] COLLECT_AS_OPTIONS To: "H.J. Lu" Cc: Richard Biener , GCC Patches Content-Type: multipart/mixed; boundary="00000000000000127505967c4ee5" X-IsSubscribed: yes X-SW-Source: 2019-11/txt/msg00079.txt.bz2 --00000000000000127505967c4ee5 Content-Type: text/plain; charset="UTF-8" Content-length: 7604 Thanks for the reviews. On Sat, 2 Nov 2019 at 02:49, H.J. Lu wrote: > > On Thu, Oct 31, 2019 at 6:33 PM Kugan Vivekanandarajah > wrote: > > > > On Wed, 30 Oct 2019 at 03:11, H.J. Lu wrote: > > > > > > On Sun, Oct 27, 2019 at 6:33 PM Kugan Vivekanandarajah > > > wrote: > > > > > > > > Hi Richard, > > > > > > > > Thanks for the review. > > > > > > > > On Wed, 23 Oct 2019 at 23:07, Richard Biener wrote: > > > > > > > > > > On Mon, Oct 21, 2019 at 10:04 AM Kugan Vivekanandarajah > > > > > wrote: > > > > > > > > > > > > Hi Richard, > > > > > > > > > > > > Thanks for the pointers. > > > > > > > > > > > > > > > > > > > > > > > > On Fri, 11 Oct 2019 at 22:33, Richard Biener wrote: > > > > > > > > > > > > > > On Fri, Oct 11, 2019 at 6:15 AM Kugan Vivekanandarajah > > > > > > > wrote: > > > > > > > > > > > > > > > > Hi Richard, > > > > > > > > Thanks for the review. > > > > > > > > > > > > > > > > On Wed, 2 Oct 2019 at 20:41, Richard Biener wrote: > > > > > > > > > > > > > > > > > > On Wed, Oct 2, 2019 at 10:39 AM Kugan Vivekanandarajah > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > > > > > > > As mentioned in the PR, attached patch adds COLLECT_AS_OPTIONS for > > > > > > > > > > passing assembler options specified with -Wa, to the link-time driver. > > > > > > > > > > > > > > > > > > > > The proposed solution only works for uniform -Wa options across all > > > > > > > > > > TUs. As mentioned by Richard Biener, supporting non-uniform -Wa flags > > > > > > > > > > would require either adjusting partitioning according to flags or > > > > > > > > > > emitting multiple object files from a single LTRANS CU. We could > > > > > > > > > > consider this as a follow up. > > > > > > > > > > > > > > > > > > > > Bootstrapped and regression tests on arm-linux-gcc. Is this OK for trunk? > > > > > > > > > > > > > > > > > > While it works for your simple cases it is unlikely to work in practice since > > > > > > > > > your implementation needs the assembler options be present at the link > > > > > > > > > command line. I agree that this might be the way for people to go when > > > > > > > > > they face the issue but then it needs to be documented somewhere > > > > > > > > > in the manual. > > > > > > > > > > > > > > > > > > That is, with COLLECT_AS_OPTION (why singular? I'd expected > > > > > > > > > COLLECT_AS_OPTIONS) available to cc1 we could stream this string > > > > > > > > > to lto_options and re-materialize it at link time (and diagnose mismatches > > > > > > > > > even if we like). > > > > > > > > OK. I will try to implement this. So the idea is if we provide > > > > > > > > -Wa,options as part of the lto compile, this should be available > > > > > > > > during link time. Like in: > > > > > > > > > > > > > > > > arm-linux-gnueabihf-gcc -march=armv7-a -mthumb -O2 -flto > > > > > > > > -Wa,-mimplicit-it=always,-mthumb -c test.c > > > > > > > > arm-linux-gnueabihf-gcc -flto test.o > > > > > > > > > > > > > > > > I am not sure where should we stream this. Currently, cl_optimization > > > > > > > > has all the optimization flag provided for compiler and it is > > > > > > > > autogenerated and all the flags are integer values. Do you have any > > > > > > > > preference or example where this should be done. > > > > > > > > > > > > > > In lto_write_options, I'd simply append the contents of COLLECT_AS_OPTIONS > > > > > > > (with -Wa, prepended to each of them), then recover them in lto-wrapper > > > > > > > for each TU and pass them down to the LTRANS compiles (if they agree > > > > > > > for all TUs, otherwise I'd warn and drop them). > > > > > > > > > > > > Attached patch streams it and also make sure that the options are the > > > > > > same for all the TUs. Maybe it is a bit restrictive. > > > > > > > > > > > > What is the best place to document COLLECT_AS_OPTIONS. We don't seem > > > > > > to document COLLECT_GCC_OPTIONS anywhere ? > > > > > > > > > > Nowhere, it's an implementation detail then. > > > > > > > > > > > Attached patch passes regression and also fixes the original ARM > > > > > > kernel build issue with tumb2. > > > > > > > > > > Did you try this with multiple assembler options? I see you stream > > > > > them as -Wa,-mfpu=xyz,-mthumb but then compare the whole > > > > > option strings so a mismatch with -Wa,-mthumb,-mfpu=xyz would be > > > > > diagnosed. If there's a spec induced -Wa option do we get to see > > > > > that as well? I can imagine -march=xyz enabling a -Wa option > > > > > for example. > > > > > > > > > > + *collect_as = XNEWVEC (char, strlen (args_text) + 1); > > > > > + strcpy (*collect_as, args_text); > > > > > > > > > > there's strdup. Btw, I'm not sure why you don't simply leave > > > > > the -Wa option in the merged options [individually] and match > > > > > them up but go the route of comparing strings and carrying that > > > > > along separately. I think that would be much better. > > > > > > > > Is attached patch which does this is OK? > > > > > > > > > > Don't you need to also handle -Xassembler? Since -Wa, doesn't work with comma in > > > assembler options, like -mfoo=foo1,foo2, one needs to use > > > > > > -Xassembler -mfoo=foo1,foo2 > > > > > > to pass -mfoo=foo1,foo2 to assembler. > > > > > > gcc -flto -O2 -Wa,-mcpu=zzz1 -mcpu=xxx1 -c foo.c > > gcc -flto -O2 -Wa,-mcpu=zzz2 -mcpu=xxx2 -c bar.c > > > > What should be the option we should provide for the final > > gcc -flto foo.o bar.o -o out > > > > I think our ultimate aim is to handle this in LTO partitioning. That > > is, we should create partitioning such that each partition has the > > same -Wa options. This could also handle -Xassembler -mfoo=foo1,foo2 > > which H.J. Lu wanted. We need to modify the heuristics and do some > > performance testing. > > > > In the meantime we could push a simpler solution which is to accept > > -Wa option if they are identical. This would fix at least some of the > > reported cases. Trying to work out what is compatible options, even if > > we ask the back-end to do this, is not a straightforward strategy and > > can be a maintenance nightmare. Unless we can query GNU AS somehow. If > > I am missing something please let me know. > > +/* Store switches specified for as with -Wa in COLLECT_AS_OPTIONS > + and place that in the environment. */ > +static void > +putenv_COLLECT_AS_OPTIONS (vec vec) > +{ > + unsigned ix; > + char *opt; > + int len = vec.length (); > + > + if (!len) > + return; > + > + obstack_init (&collect_obstack); > + obstack_grow (&collect_obstack, "COLLECT_AS_OPTIONS=", > + sizeof ("COLLECT_AS_OPTIONS=") - 1); > + obstack_grow (&collect_obstack, "-Wa,", strlen ("-Wa,")); > + > + FOR_EACH_VEC_ELT (vec, ix, opt) > + { > + obstack_grow (&collect_obstack, opt, strlen (opt)); > + --len; > + if (len) > + obstack_grow (&collect_obstack, ",", strlen (",")); > + } > + > + xputenv (XOBFINISH (&collect_obstack, char *)); > > This missed the null terminator. Attached patch addresses the review comments I got so far. Thanks, Kugan > > > I therefore propose that we take the simpler approach first and > > It works for me. > > > improve it by modifying the LTO partitioning. Any thoughts? > > > > Thanks. > > -- > H.J. --00000000000000127505967c4ee5 Content-Type: application/x-patch; name="0001-COLLECT_AS-support.patch" Content-Disposition: attachment; filename="0001-COLLECT_AS-support.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k2jtl1110 Content-length: 8382 RnJvbSAxZmY0OTA4MzRmNGE0MjhkYTYzMWQxN2IxNTUwNzRiZTE3YzRkZmQ3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLdWdhbiA8a3VnYW4u dml2ZWthbmFuZGFyYWphaEBsaW5hcm8ub3JnPgpEYXRlOiBTYXQsIDI4IFNl cCAyMDE5IDAyOjExOjQ5ICsxMDAwClN1YmplY3Q6IFtQQVRDSF0gQ09MTEVD VF9BUyBzdXBwb3J0CgpDaGFuZ2UtSWQ6IEk1YjE2M2Q5NjgxZDc0ZTJhMzQ4 YzA5ZmM3ZWQ2ZjBlZjM2YTRiNGE2Ci0tLQogZ2NjL2djYy5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysrKysrKysr KysrCiBnY2MvbHRvLW9wdHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMTYgKysrKysrKysrLS0KIGdjYy9sdG8td3JhcHBlci5jICAgICAgICAg ICAgICAgICAgICAgICAgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysK IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcHI3ODM1My0xLmMgfCAg OSArKysrKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcHI3ODM1 My0yLmMgfCAgOSArKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3ByNzgzNTMtMS5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9w cjc4MzUzLTIuYwoKZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2Mu YwppbmRleCAxMjE2Y2RkNTA1YS4uMzMzNjE2MGUzZTIgMTAwNjQ0Ci0tLSBh L2djYy9nY2MuYworKysgYi9nY2MvZ2NjLmMKQEAgLTUyMzksNiArNTIzOSwz NCBAQCBkb19zcGVjc192ZWMgKHZlYzxjaGFyX3A+IHZlYykKICAgICB9CiB9 CiAKKy8qIFN0b3JlIHN3aXRjaGVzIHNwZWNpZmllZCBmb3IgYXMgd2l0aCAt V2EgaW4gQ09MTEVDVF9BU19PUFRJT05TCisgICBhbmQgcGxhY2UgdGhhdCBp biB0aGUgZW52aXJvbm1lbnQuICAqLworc3RhdGljIHZvaWQKK3B1dGVudl9D T0xMRUNUX0FTX09QVElPTlMgKHZlYzxjaGFyX3A+IHZlYykKK3sKKyAgdW5z aWduZWQgaXg7CisgIGNoYXIgKm9wdDsKKyAgaW50IGxlbiA9IHZlYy5sZW5n dGggKCk7CisKKyAgaWYgKCFsZW4pCisgICAgIHJldHVybjsKKworICBvYnN0 YWNrX2luaXQgKCZjb2xsZWN0X29ic3RhY2spOworICBvYnN0YWNrX2dyb3cg KCZjb2xsZWN0X29ic3RhY2ssICJDT0xMRUNUX0FTX09QVElPTlM9LVdhLCIs CisJCXNpemVvZiAoIkNPTExFQ1RfQVNfT1BUSU9OUz0tV2EsIikgLSAxKTsK KworICBGT1JfRUFDSF9WRUNfRUxUICh2ZWMsIGl4LCBvcHQpCisgIHsKKyAg ICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgb3B0LCBzdHJs ZW4gKG9wdCkpOworICAgICAgLS1sZW47CisgICAgICBpZiAobGVuKQorCW9i c3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiwiLCBzdHJsZW4gKCIs IikpOworICB9CisKKyAgb2JzdGFja18xZ3JvdyAoJmNvbGxlY3Rfb2JzdGFj aywgJ1wwJyk7CisgIHhwdXRlbnYgKFhPQkZJTklTSCAoJmNvbGxlY3Rfb2Jz dGFjaywgY2hhciAqKSk7Cit9CisKIC8qIFByb2Nlc3MgdGhlIHN1Yi1zcGVj IFNQRUMgYXMgYSBwb3J0aW9uIG9mIGEgbGFyZ2VyIHNwZWMuCiAgICBUaGlz IGlzIGxpa2UgcHJvY2Vzc2luZyBhIHdob2xlIHNwZWMgZXhjZXB0IHRoYXQg d2UgZG8KICAgIG5vdCBpbml0aWFsaXplIGF0IHRoZSBiZWdpbm5pbmcgYW5k IHdlIGRvIG5vdCBzdXBwbHkgYQpAQCAtNzM2MCw2ICs3Mzg4LDcgQEAgZHJp dmVyOjptYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgIGdsb2JhbF9p bml0aWFsaXphdGlvbnMgKCk7CiAgIGJ1aWxkX211bHRpbGliX3N0cmluZ3Mg KCk7CiAgIHNldF91cF9zcGVjcyAoKTsKKyAgcHV0ZW52X0NPTExFQ1RfQVNf T1BUSU9OUyAoYXNzZW1ibGVyX29wdGlvbnMpOwogICBwdXRlbnZfQ09MTEVD VF9HQ0MgKGFyZ3ZbMF0pOwogICBtYXliZV9wdXRlbnZfQ09MTEVDVF9MVE9f V1JBUFBFUiAoKTsKICAgbWF5YmVfcHV0ZW52X09GRkxPQURfVEFSR0VUUyAo KTsKZGlmZiAtLWdpdCBhL2djYy9sdG8tb3B0cy5jIGIvZ2NjL2x0by1vcHRz LmMKaW5kZXggMGU5ZjI0ZTExODkuLmQ4OWZlNWNjNGY5IDEwMDY0NAotLS0g YS9nY2MvbHRvLW9wdHMuYworKysgYi9nY2MvbHRvLW9wdHMuYwpAQCAtMTY2 LDggKzE2NiwyMCBAQCBsdG9fd3JpdGVfb3B0aW9ucyAodm9pZCkKICAgb2Jz dGFja19ncm93ICgmdGVtcG9yYXJ5X29ic3RhY2ssICJcMCIsIDEpOwogICBh cmdzID0gWE9CRklOSVNIICgmdGVtcG9yYXJ5X29ic3RhY2ssIGNoYXIgKik7 CiAgIGx0b193cml0ZV9kYXRhIChhcmdzLCBzdHJsZW4gKGFyZ3MpICsgMSk7 Ci0gIGx0b19lbmRfc2VjdGlvbiAoKTsKLQogICBvYnN0YWNrX2ZyZWUgKCZ0 ZW1wb3Jhcnlfb2JzdGFjaywgTlVMTCk7CisgIGNvbnN0IGNoYXIgKmNvbGxl Y3RfYXNfb3B0aW9ucyA9IGdldGVudiAoIkNPTExFQ1RfQVNfT1BUSU9OUyIp OworCisgIGlmIChjb2xsZWN0X2FzX29wdGlvbnMpCisgICAgeworICAgICAg b2JzdGFja19pbml0ICgmdGVtcG9yYXJ5X29ic3RhY2spOworICAgICAgYXBw ZW5kX3RvX2NvbGxlY3RfZ2NjX29wdGlvbnMgKCZ0ZW1wb3Jhcnlfb2JzdGFj aywgJmZpcnN0X3AsCisJCQkJICAgICBjb2xsZWN0X2FzX29wdGlvbnMpOwor ICAgICAgb2JzdGFja19ncm93ICgmdGVtcG9yYXJ5X29ic3RhY2ssICJcMCIs IDEpOworICAgICAgYXJncyA9IFhPQkZJTklTSCAoJnRlbXBvcmFyeV9vYnN0 YWNrLCBjaGFyICopOworICAgICAgbHRvX3dyaXRlX2RhdGEgKGFyZ3MsIHN0 cmxlbiAoYXJncykgKyAxKTsKKyAgICAgIG9ic3RhY2tfZnJlZSAoJnRlbXBv cmFyeV9vYnN0YWNrLCBOVUxMKTsKKyAgICB9CisKKyAgbHRvX2VuZF9zZWN0 aW9uICgpOwogICBmcmVlIChzZWN0aW9uX25hbWUpOwogfQpkaWZmIC0tZ2l0 IGEvZ2NjL2x0by13cmFwcGVyLmMgYi9nY2MvbHRvLXdyYXBwZXIuYwppbmRl eCA5YTdiYmQwYzAyMi4uMTQ4YzUyOTA2ZDEgMTAwNjQ0Ci0tLSBhL2djYy9s dG8td3JhcHBlci5jCisrKyBiL2djYy9sdG8td3JhcHBlci5jCkBAIC0yNTMs NiArMjUzLDExIEBAIG1lcmdlX2FuZF9jb21wbGFpbiAoc3RydWN0IGNsX2Rl Y29kZWRfb3B0aW9uICoqZGVjb2RlZF9vcHRpb25zLAogCSAgYnJlYWs7CiAK IAlkZWZhdWx0OgorCSAgaWYgKGZvcHRpb24tPm9wdF9pbmRleCA9PSBPUFRf V2FfKQorCSAgICB7CisJICAgICAgYXBwZW5kX29wdGlvbiAoZGVjb2RlZF9v cHRpb25zLCBkZWNvZGVkX29wdGlvbnNfY291bnQsIGZvcHRpb24pOworCSAg ICAgIGJyZWFrOworCSAgICB9CiAJICBpZiAoIShjbF9vcHRpb25zW2ZvcHRp b24tPm9wdF9pbmRleF0uZmxhZ3MgJiBDTF9UQVJHRVQpKQogCSAgICBicmVh azsKIApAQCAtNTc0LDYgKzU3OSwzMiBAQCBwYXJzZV9lbnZfdmFyIChjb25z dCBjaGFyICpzdHIsIGNoYXIgKioqcHZhbHVlcywgY29uc3QgY2hhciAqYXBw ZW5kKQogICByZXR1cm4gbnVtOwogfQogCisvKiBBcHBlbmQgb3B0aW9ucyBP UFRTIGZyb20gLVdhLCBvcHRpb25zIHRvIEFSR1ZfT0JTVEFDSy4gICovCisK K3N0YXRpYyB2b2lkCithcHBlbmRfY29tcGlsZXJfd2Ffb3B0aW9ucyAob2Jz dGFjayAqYXJndl9vYnN0YWNrLAorCQkJICAgIHN0cnVjdCBjbF9kZWNvZGVk X29wdGlvbiAqb3B0cywKKwkJCSAgICB1bnNpZ25lZCBpbnQgY291bnQpCit7 CisgIHN0YXRpYyBjb25zdCBjaGFyICpjb2xsZWN0X2FzOworICBmb3IgKHVu c2lnbmVkIGludCBqID0gMTsgaiA8IGNvdW50OyArK2opCisgICAgeworICAg ICAgc3RydWN0IGNsX2RlY29kZWRfb3B0aW9uICpvcHRpb24gPSAmb3B0c1tq XTsKKyAgICAgIGlmIChqID09IDEpCisJY29sbGVjdF9hcyA9IE5VTEw7Cisg ICAgICBpZiAob3B0aW9uLT5vcHRfaW5kZXggIT0gT1BUX1dhXykKKwljb250 aW51ZTsKKyAgICAgIGNvbnN0IGNoYXIgKmFyZ3NfdGV4dCA9IG9wdGlvbi0+ b3JpZ19vcHRpb25fd2l0aF9hcmdzX3RleHQ7CisgICAgICAvKiBXZSBleHBl Y3QgYWxsIHRoZSAtV2EsIG9wdGlvbnMgdG8gYmUgc2FtZS4gICovCisgICAg ICBpZiAoY29sbGVjdF9hcyAmJiBzdHJjbXAgKGNvbGxlY3RfYXMsIGFyZ3Nf dGV4dCkgIT0gMCkKKwlmYXRhbF9lcnJvciAoaW5wdXRfbG9jYXRpb24sICIt V2EsIG9wdGlvbnMgZG9lcyBub3QgbWF0Y2giKTsKKyAgICAgIGlmICghY29s bGVjdF9hcykKKwl7CisJICBvYnN0YWNrX3B0cl9ncm93IChhcmd2X29ic3Rh Y2ssIGFyZ3NfdGV4dCk7CisJICBjb2xsZWN0X2FzID0gYXJnc190ZXh0Owor CX0KKyAgICB9Cit9CiAvKiBBcHBlbmQgb3B0aW9ucyBPUFRTIGZyb20gbHRv IG9yIG9mZmxvYWRfbHRvIHNlY3Rpb25zIHRvIEFSR1ZfT0JTVEFDSy4gICov CiAKIHN0YXRpYyB2b2lkCkBAIC04NDYsNiArODc3LDggQEAgY29tcGlsZV9v ZmZsb2FkX2ltYWdlIChjb25zdCBjaGFyICp0YXJnZXQsIGNvbnN0IGNoYXIg KmNvbXBpbGVyX3BhdGgsCiAgIC8qIEFwcGVuZCBvcHRpb25zIGZyb20gb2Zm bG9hZF9sdG8gc2VjdGlvbnMuICAqLwogICBhcHBlbmRfY29tcGlsZXJfb3B0 aW9ucyAoJmFyZ3Zfb2JzdGFjaywgY29tcGlsZXJfb3B0cywKIAkJCSAgIGNv bXBpbGVyX29wdF9jb3VudCk7CisgIGFwcGVuZF9jb21waWxlcl93YV9vcHRp b25zICgmYXJndl9vYnN0YWNrLCBjb21waWxlcl9vcHRzLAorCQkJICAgICAg Y29tcGlsZXJfb3B0X2NvdW50KTsKICAgYXBwZW5kX2RpYWdfb3B0aW9ucyAo JmFyZ3Zfb2JzdGFjaywgbGlua2VyX29wdHMsIGxpbmtlcl9vcHRfY291bnQp OwogCiAgIC8qIEFwcGVuZCBvcHRpb25zIHNwZWNpZmllZCBieSAtZm9mZmxv YWQgbGFzdC4gIEluIGNhc2Ugb2YgY29uZmxpY3RpbmcKQEAgLTEzNDksNiAr MTM4Miw4IEBAIHJ1bl9nY2MgKHVuc2lnbmVkIGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAogICBhcHBlbmRfY29tcGlsZXJfb3B0aW9ucyAoJmFyZ3Zfb2JzdGFj aywgZmRlY29kZWRfb3B0aW9ucywKIAkJCSAgIGZkZWNvZGVkX29wdGlvbnNf Y291bnQpOworICBhcHBlbmRfY29tcGlsZXJfd2Ffb3B0aW9ucyAoJmFyZ3Zf b2JzdGFjaywgZmRlY29kZWRfb3B0aW9ucywKKwkJCSAgICAgIGZkZWNvZGVk X29wdGlvbnNfY291bnQpOwogICBhcHBlbmRfbGlua2VyX29wdGlvbnMgKCZh cmd2X29ic3RhY2ssIGRlY29kZWRfb3B0aW9ucywgZGVjb2RlZF9vcHRpb25z X2NvdW50KTsKIAogICAvKiBTY2FuIGxpbmtlciBkcml2ZXIgYXJndW1lbnRz IGZvciB0aGluZ3MgdGhhdCBhcmUgb2YgcmVsZXZhbmNlIHRvIHVzLiAgKi8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcHI3 ODM1My0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3ByNzgz NTMtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5iYmE4MWVlNTBjMwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hcm0vcHI3ODM1My0xLmMKQEAgLTAsMCArMSw5IEBA CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAgKi8KKy8qIHsgZGctb3B0aW9ucyAi LW1hcmNoPWFybXY3LWEgLW10aHVtYiAtTzIgLWZsdG8gLVdhLC1taW1wbGlj aXQtaXQ9YWx3YXlzIiB9ICAqLworCitpbnQgbWFpbihpbnQgeCkKK3sKKyAg YXNtKCJ0ZXEgJTAsICMwOyBhZGRuZSAlMCwgJTAsICMxIiA6ICI9ciIgKHgp KTsKKyAgcmV0dXJuIHg7Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hcm0vcHI3ODM1My0yLmMgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvYXJtL3ByNzgzNTMtMi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NzZlYjY0YjhjNwotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcHI3ODM1 My0yLmMKQEAgLTAsMCArMSw5IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAg Ki8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPWFybXY3LWEgLW10aHVtYiAt TzIgLWZsdG8gLVdhLC1taW1wbGljaXQtaXQ9YWx3YXlzLC1tdGh1bWIiIH0g ICovCisKK2ludCBtYWluKGludCB4KQoreworICBhc20oInRlcSAlMCwgIzA7 IGFkZG5lICUwLCAlMCwgIzEiIDogIj1yIiAoeCkpOworICByZXR1cm4geDsK K30KKwotLSAKMi4xNy4xCgo= --00000000000000127505967c4ee5--