From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24936 invoked by alias); 30 Oct 2011 18:16:52 -0000 Received: (qmail 24921 invoked by uid 22791); 30 Oct 2011 18:16:49 -0000 X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-yw0-f41.google.com (HELO mail-yw0-f41.google.com) (209.85.213.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 30 Oct 2011 18:16:32 +0000 Received: by ywa17 with SMTP id 17so6029342ywa.0 for ; Sun, 30 Oct 2011 11:16:31 -0700 (PDT) MIME-Version: 1.0 Received: by 10.182.41.4 with SMTP id b4mr2237851obl.76.1319998591207; Sun, 30 Oct 2011 11:16:31 -0700 (PDT) Received: by 10.182.154.68 with HTTP; Sun, 30 Oct 2011 11:16:31 -0700 (PDT) In-Reply-To: References: <20110627160029.GF20676@adacore.com> <834o33qlm9.fsf@gnu.org> <83bowq6x7f.fsf@gnu.org> Date: Sun, 30 Oct 2011 19:52:00 -0000 Message-ID: Subject: Re: [patch] GDB 7.2: new feature for "backtrace" that cuts path to file (remain filename) From: iam ahal To: Tom Tromey Cc: gdb-patches@sourceware.org, eliz@gnu.org, pmuldoon@redhat.com, brobecker@adacore.com, pedro@codesourcery.com, drow@false.org, jan.kratochvil@redhat.com Content-Type: multipart/mixed; boundary=f46d0445177f22083104b0881fe0 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-10/txt/msg00809.txt.bz2 --f46d0445177f22083104b0881fe0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3008 Copyright assignment by [gnu.org #703515] is completed. I've corrected some pieces of the patch by your notes. Also, I've attached the change log. Please, check it. Thank you. ~Eldar. On Wed, Aug 3, 2011 at 9:44 PM, Tom Tromey wrote: >>>>>> "Eldar" =3D=3D iam ahal writes: > > Tom> I forget (I never keep records of this, I think perhaps I should) --= did > Tom> we get you started on the copyright assignment paperwork? > > Eldar> Not yet, because my previous patches is very different. I mean the > Eldar> different files was changed and I don't know which files I need to > Eldar> change in the next patch. > Eldar> I hope some people here can accept implementation in this last pat= ch. > Eldar> After I can start the copyright assignment. > > It is best to start early. =A0Sometimes it can take quite a while, and in > the meantime your patch will not go in. > > The list of files does not really matter, since the assignment is for > past and future changes. =A0You can ask the copyright clerk for > clarification on this point if you need it. > > I think the patch is basically fine, just a few nits. > > Eldar> +static int backtrace_skip_compile; > Eldar> +static void > > Tom> Newline between these two lines. > > Eldar> I'm not sure that's right because I see that there's no newline in > Eldar> this case (if you look at other places related 'set backtrace ...'= ). > > Yeah, I think a newline is better, though. > > Eldar> +char * > Eldar> +get_display_filename_from_sal (struct symtab_and_line *sal) > Tom> > Tom> Should have an introductory comment before this function. > > Eldar> Comment was added in 'frame.h' > > Ok, thanks. > Add a comment saying to see the documentation in frame.h. > > Eldar> +static const char filename_display_without_comp_dir[] =3D "withou= t-compile-dir"; > > I think spelling out "directory" would be better. > > Eldar> + =A0const char *filename =3D sal->symtab->filename; > Eldar> + =A0const char *dirname =3D sal->symtab->dirname; > Eldar> + =A0size_t flen =3D strlen (filename); > Eldar> + =A0size_t dlen =3D strlen (dirname); > > This will crash if filename=3D=3DNULL or dirname=3D=3DNULL. > > Eldar> + =A0if (filename_display_string =3D=3D filename_display_without_c= omp_dir > Eldar> + =A0 =A0 =A0&& filename && dirname && dlen <=3D flen > Eldar> + =A0 =A0 =A0&& !FILENAME_NCMP (filename, dirname, dlen)) > > This test is not correct, in that it will match "/tmp/x" with "/tmp/xaaa". > I think it needs an additional check for a separator. > > Eldar> diff -rup gdb-7.2-orig/include/filenames.h gdb-7.2/include/filenam= es.h > > Changes to libiberty have to go to gcc-patches. > I don't think you actually need this change, though, so it would be > simpler and quicker if you left it out. > > Eldar> +extern int filename_ncmp (const char *s1, const char *s2, size_t = n); > > This is already declared in the trunk filenames.h. > Be sure to always write patches against the trunk, not something older. > > Tom > --f46d0445177f22083104b0881fe0 Content-Type: text/x-patch; charset=US-ASCII; name="gdb-7.3.1-filename-display-v1.patch" Content-Disposition: attachment; filename="gdb-7.3.1-filename-display-v1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_guecvvjv0 Content-length: 8150 ZGlmZiAtcnVwIGdkYi03LjMuMS1vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8g Z2RiLTcuMy4xL2dkYi9kb2MvZ2RiLnRleGluZm8KLS0tIGdkYi03LjMuMS1v cmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wOS0wNCAyMToxMDozNy4w MDAwMDAwMDAgKzA0MDAKKysrIGdkYi03LjMuMS9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTEtMTAtMzAgMjE6MjY6MzQuNDUwMjc0OTYyICswNDAwCkBAIC02 MDUyLDYgKzYwNTIsMTkgQEAgdW5saW1pdGVkLgogCiBAaXRlbSBzaG93IGJh Y2t0cmFjZSBsaW1pdAogRGlzcGxheSB0aGUgY3VycmVudCBsaW1pdCBvbiBi YWNrdHJhY2UgbGV2ZWxzLgorCitAaXRlbSBzZXQgYmFja3RyYWNlIGZpbGVu YW1lLWRpc3BsYXkKK0BpdGVteCBzZXQgYmFja3RyYWNlIGZpbGVuYW1lLWRp c3BsYXkgZnVsbAorRGlzcGxheSBhIGZ1bGwgZmlsZW5hbWUuICBUaGlzIGlz IHRoZSBkZWZhdWx0LgorCitAaXRlbSBzZXQgYmFja3RyYWNlIGZpbGVuYW1l LWRpc3BsYXkgYmFzZW5hbWUKK0Rpc3BsYXkgb25seSBiYXNlbmFtZSBvZiBh IGZpbGVuYW1lLgorCitAaXRlbSBzZXQgYmFja3RyYWNlIGZpbGVuYW1lLWRp c3BsYXkgYmFzZW5hbWUKK0Rpc3BsYXkgYSBmaWxlbmFtZSB3aXRob3V0IHRo ZSBjb21waWxlIGRpcmVjdG9yeSBwYXJ0LgorCitAaXRlbSBzaG93IGJhY2t0 cmFjZSBmaWxlbmFtZS1kaXNwbGF5CitEaXNwbGF5IHRoZSBjdXJyZW50IHdh eSB0byBkaXNwbGF5IGEgZmlsZW5hbWUuCiBAZW5kIHRhYmxlCiAKIEBub2Rl IFNlbGVjdGlvbgpkaWZmIC1ydXAgZ2RiLTcuMy4xLW9yaWcvZ2RiL2ZyYW1l LmMgZ2RiLTcuMy4xL2dkYi9mcmFtZS5jCi0tLSBnZGItNy4zLjEtb3JpZy9n ZGIvZnJhbWUuYwkyMDExLTAzLTE4IDIxOjUyOjMwLjAwMDAwMDAwMCArMDMw MAorKysgZ2RiLTcuMy4xL2dkYi9mcmFtZS5jCTIwMTEtMTAtMzAgMjE6Mjg6 NDUuMTcwMjcxMTQwICswNDAwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVk ZSAiYmxvY2suaCIKICNpbmNsdWRlICJpbmxpbmUtZnJhbWUuaCIKICNpbmNs dWRlICAidHJhY2Vwb2ludC5oIgorI2luY2x1ZGUgImZpbGVuYW1lcy5oIgog CiBzdGF0aWMgc3RydWN0IGZyYW1lX2luZm8gKmdldF9wcmV2X2ZyYW1lXzEg KHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKTsKIHN0YXRpYyBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZ2V0X3ByZXZfZnJhbWVfcmF3IChzdHJ1Y3QgZnJh bWVfaW5mbyAqdGhpc19mcmFtZSk7CkBAIC0xMzYsNiArMTM3LDE4IEBAIHN0 cnVjdCBmcmFtZV9pbmZvCiAgICBzdWZmaWNpZW50IGZvciBub3cuICAqLwog c3RhdGljIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZV9zdGFzaCA9IE5VTEw7 CiAKKy8qIFBvc3NpYmxlIHZhbHVlcyBvZiAnc2V0IGJhY2t0cmFjZSBmaWxl bmFtZS1kaXNwbGF5Jy4gICovCitzdGF0aWMgY29uc3QgY2hhciBmaWxlbmFt ZV9kaXNwbGF5X2Z1bGxbXSA9ICJmdWxsIjsKK3N0YXRpYyBjb25zdCBjaGFy IGZpbGVuYW1lX2Rpc3BsYXlfYmFzZW5hbWVbXSA9ICJiYXNlbmFtZSI7Citz dGF0aWMgY29uc3QgY2hhciBmaWxlbmFtZV9kaXNwbGF5X3dpdGhvdXRfY29t cF9kaXJlY3RvcnlbXSA9ICJ3aXRob3V0LWNvbXBpbGUtZGlyZWN0b3J5IjsK Kworc3RhdGljIGNvbnN0IGNoYXIgKmZpbGVuYW1lX2Rpc3BsYXlfa2luZF9u YW1lc1tdID0geworICBmaWxlbmFtZV9kaXNwbGF5X2Z1bGwsCisgIGZpbGVu YW1lX2Rpc3BsYXlfYmFzZW5hbWUsCisgIGZpbGVuYW1lX2Rpc3BsYXlfd2l0 aG91dF9jb21wX2RpcmVjdG9yeSwKKyAgTlVMTAorfTsKKwogLyogQWRkIHRo ZSBmb2xsb3dpbmcgRlJBTUUgdG8gdGhlIGZyYW1lIHN0YXNoLiAgKi8KIAog c3RhdGljIHZvaWQKQEAgLTIwOCw2ICsyMjEsMTYgQEAgc2hvd19iYWNrdHJh Y2VfbGltaXQgKHN0cnVjdCB1aV9maWxlICpmaQogCQkgICAgdmFsdWUpOwog fQogCitzdGF0aWMgY29uc3QgY2hhciAqZmlsZW5hbWVfZGlzcGxheV9zdHJp bmcgPSBmaWxlbmFtZV9kaXNwbGF5X2Z1bGw7CisKK3N0YXRpYyB2b2lkCitz aG93X2ZpbGVuYW1lX2Rpc3BsYXlfc3RyaW5nIChzdHJ1Y3QgdWlfZmlsZSAq ZmlsZSwgaW50IGZyb21fdHR5LAorCQkJICAgICAgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQoreworICBmcHJpbnRm X2ZpbHRlcmVkIChmaWxlLAorCQkgICAgXygiQSBmaWxlbmFtZSBpcyBkaXNw bGF5ZWQgaW4gYmFja3RyYWNlIGFzIFwiJXNcIi5cbiIpLAorCQkgICAgdmFs dWUpOworfQogCiBzdGF0aWMgdm9pZAogZnByaW50X2ZpZWxkIChzdHJ1Y3Qg dWlfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqbmFtZSwgaW50IHAsIENPUkVf QUREUiBhZGRyKQpAQCAtMjExMyw2ICsyMTM2LDM5IEBAIGZpbmRfZnJhbWVf c2FsIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUKICAgKCpzYWwpID0gZmlu ZF9wY19saW5lIChwYywgbm90Y3VycmVudCk7CiB9CiAKKy8qIFNlZSBjb21t ZW50YXJ5IGluIGZyYW1lLmguICAqLworCitjb25zdCBjaGFyICoKK2dldF9m aWxlbmFtZV9kaXNwbGF5X2Zyb21fc2FsIChzdHJ1Y3Qgc3ltdGFiX2FuZF9s aW5lICpzYWwpCit7CisgIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gc2FsLT5z eW10YWItPmZpbGVuYW1lOworICBjb25zdCBjaGFyICpkaXJuYW1lID0gc2Fs LT5zeW10YWItPmRpcm5hbWU7CisgIHNpemVfdCBkbGVuID0gZGlybmFtZSA/ IHN0cmxlbiAoZGlybmFtZSkgOiAwOworCisgIGlmIChmaWxlbmFtZV9kaXNw bGF5X3N0cmluZyA9PSBmaWxlbmFtZV9kaXNwbGF5X2Jhc2VuYW1lCisgICAg ICAmJiBmaWxlbmFtZSkKKyAgICB7CisgICAgICByZXR1cm4gbGJhc2VuYW1l IChmaWxlbmFtZSk7CisgICAgfQorICBlbHNlCisgIGlmIChmaWxlbmFtZV9k aXNwbGF5X3N0cmluZyA9PSBmaWxlbmFtZV9kaXNwbGF5X3dpdGhvdXRfY29t cF9kaXJlY3RvcnkKKyAgICAgICYmIGZpbGVuYW1lICYmIGRpcm5hbWUgJiYg ZGxlbiAmJiBkbGVuIDw9IHN0cmxlbiAoZmlsZW5hbWUpCisgICAgICAmJiAh ZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIGRpcm5hbWUsIGRsZW4pKQorICAg IHsKKyAgICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gZmlsZW5hbWUgKyBkbGVu OworICAgICAgY29uc3QgY2hhciAqcmVzdWx0ID0gc3RhcnQ7CisgICAgICB3 aGlsZSAoSVNfRElSX1NFUEFSQVRPUiAoKnJlc3VsdCkpCisJcmVzdWx0Kys7 CisKKyAgICAgIGlmIChJU19ESVJfU0VQQVJBVE9SIChkaXJuYW1lW2RsZW4g LSAxXSkpCisJcmV0dXJuIHJlc3VsdDsKKyAgICAgIGVsc2UKKwlyZXR1cm4g cmVzdWx0ID09IHN0YXJ0ID8gZmlsZW5hbWUgOiByZXN1bHQ7CisgICAgfQor CisgIHJldHVybiBmaWxlbmFtZTsKK30KKwogLyogUGVyICJmcmFtZS5oIiwg cmV0dXJuIHRoZSBgYGFkZHJlc3MnJyBvZiB0aGUgZnJhbWUuICBDb2RlIHNo b3VsZAogICAgcmVhbGx5IGJlIHVzaW5nIGdldF9mcmFtZV9pZCgpLiAgKi8K IENPUkVfQUREUgpAQCAtMjQ4NCw2ICsyNTQwLDIxIEBAIFplcm8gaXMgdW5s aW1pdGVkLiIpLAogCQkJICAgJnNldF9iYWNrdHJhY2VfY21kbGlzdCwKIAkJ CSAgICZzaG93X2JhY2t0cmFjZV9jbWRsaXN0KTsKIAorICBhZGRfc2V0c2hv d19lbnVtX2NtZCAoImZpbGVuYW1lLWRpc3BsYXkiLCBjbGFzc19vYnNjdXJl LAorCQkJZmlsZW5hbWVfZGlzcGxheV9raW5kX25hbWVzLAorCQkJJmZpbGVu YW1lX2Rpc3BsYXlfc3RyaW5nLCBfKCJcCitTZXQgYSB3YXkgaG93IHRvIGRp c3BsYXkgZmlsZW5hbWUuIiksIF8oIlwKK1Nob3cgYSB3YXkgaG93IHRvIGRp c3BsYXkgZmlsZW5hbWUuIiksIF8oIlwKK2ZpbGVuYW1lLWRpc3BsYXkgY2Fu IGJlOlxuXAorICBmdWxsICAgICAgICAgICAgICAgICAgICAgICAtIGRpc3Bs YXkgYSBmdWxsIGZpbGVuYW1lLCB0aGlzIGlzIHRoZSBkZWZhdWx0XG5cCisg IGJhc2VuYW1lICAgICAgICAgICAgICAgICAgIC0gZGlzcGxheSBvbmx5IGJh c2VuYW1lIG9mIGEgZmlsZW5hbWVcblwKKyAgd2l0aG91dC1jb21waWxlLWRp cmVjdG9yeSAgLSBkaXNwbGF5IGEgZmlsZW5hbWUgd2l0aG91dCB0aGUgY29t cGlsZSBkaXJlY3RvcnkgcGFydFxuXAorQnkgZGVmYXVsdCwgZnVsbCBmaWxl bmFtZSBpcyBkaXNwbGF5ZWQuIiksCisJCQlOVUxMLAorCQkJc2hvd19maWxl bmFtZV9kaXNwbGF5X3N0cmluZywKKwkJCSZzZXRfYmFja3RyYWNlX2NtZGxp c3QsCisJCQkmc2hvd19iYWNrdHJhY2VfY21kbGlzdCk7CisKICAgLyogRGVi dWcgdGhpcyBmaWxlcyBpbnRlcm5hbHMuICAqLwogICBhZGRfc2V0c2hvd196 aW50ZWdlcl9jbWQgKCJmcmFtZSIsIGNsYXNzX21haW50ZW5hbmNlLCAmZnJh bWVfZGVidWcsICBfKCJcCiBTZXQgZnJhbWUgZGVidWdnaW5nLiIpLCBfKCJc CmRpZmYgLXJ1cCBnZGItNy4zLjEtb3JpZy9nZGIvZnJhbWUuaCBnZGItNy4z LjEvZ2RiL2ZyYW1lLmgKLS0tIGdkYi03LjMuMS1vcmlnL2dkYi9mcmFtZS5o CTIwMTEtMDMtMTggMjE6NTI6MzAuMDAwMDAwMDAwICswMzAwCisrKyBnZGIt Ny4zLjEvZ2RiL2ZyYW1lLmgJMjAxMS0xMC0zMCAyMDo1MzoyMy4xNzgzMzMx ODUgKzA0MDAKQEAgLTM1Miw2ICszNTIsMTIgQEAgZXh0ZXJuIGludCBnZXRf ZnJhbWVfZnVuY19pZl9hdmFpbGFibGUgKAogZXh0ZXJuIHZvaWQgZmluZF9m cmFtZV9zYWwgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKIAkJCSAgICBz dHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICpzYWwpOwogCisvKiBSZXR1cm5zIGVp dGhlciBmdWxsIGZpbGVuYW1lIG9yIGJhc2VuYW1lIG9yIGZpbGVuYW1lCisg ICB3aXRob3V0IGNvbXBpbGUgZGlyZWN0b3J5IHBhcnQuCisgICBJdCBkZXBl bmRzIG9uICdzZXQgYmFja3RyYWNlIGZpbGVuYW1lLWRpc3BsYXknIHZhbHVl LiAgKi8KKworZXh0ZXJuIGNvbnN0IGNoYXIgKmdldF9maWxlbmFtZV9kaXNw bGF5X2Zyb21fc2FsIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICpzYWwpOwor CiAvKiBTZXQgdGhlIGN1cnJlbnQgc291cmNlIGFuZCBsaW5lIHRvIHRoZSBs b2NhdGlvbiBnaXZlbiBieSBmcmFtZQogICAgRlJBTUUsIGlmIHBvc3NpYmxl LiAgV2hlbiBDRU5URVIgaXMgdHJ1ZSwgYWRqdXN0IHNvIHRoZSByZWxldmFu dAogICAgbGluZSBpcyBpbiB0aGUgY2VudGVyIG9mIHRoZSBuZXh0ICdsaXN0 Jy4gICovCmRpZmYgLXJ1cCBnZGItNy4zLjEtb3JpZy9nZGIvc3RhY2suYyBn ZGItNy4zLjEvZ2RiL3N0YWNrLmMKLS0tIGdkYi03LjMuMS1vcmlnL2dkYi9z dGFjay5jCTIwMTEtMDMtMTggMjE6NDg6NTYuMDAwMDAwMDAwICswMzAwCisr KyBnZGItNy4zLjEvZ2RiL3N0YWNrLmMJMjAxMS0xMC0zMCAyMDo1MzoyMy4x ODIzMzMxODUgKzA0MDAKQEAgLTgzNSwxMSArODM1LDE1IEBAIHByaW50X2Zy YW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGkKICAgdWlfb3V0X3Rl eHQgKHVpb3V0LCAiKSIpOwogICBpZiAoc2FsLnN5bXRhYiAmJiBzYWwuc3lt dGFiLT5maWxlbmFtZSkKICAgICB7CisgICAgICBjb25zdCBjaGFyICpmaWxl bmFtZV9kaXNwbGF5ID0gZ2V0X2ZpbGVuYW1lX2Rpc3BsYXlfZnJvbV9zYWwg KCZzYWwpOworICAgICAgaWYgKGZpbGVuYW1lX2Rpc3BsYXkgPT0gTlVMTCkK KwkgIGZpbGVuYW1lX2Rpc3BsYXkgPSBzYWwuc3ltdGFiLT5maWxlbmFtZTsK KwogICAgICAgYW5ub3RhdGVfZnJhbWVfc291cmNlX2JlZ2luICgpOwogICAg ICAgdWlfb3V0X3dyYXBfaGludCAodWlvdXQsICIgICAiKTsKICAgICAgIHVp X291dF90ZXh0ICh1aW91dCwgIiBhdCAiKTsKICAgICAgIGFubm90YXRlX2Zy YW1lX3NvdXJjZV9maWxlICgpOwotICAgICAgdWlfb3V0X2ZpZWxkX3N0cmlu ZyAodWlvdXQsICJmaWxlIiwgc2FsLnN5bXRhYi0+ZmlsZW5hbWUpOworICAg ICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJmaWxlIiwgZmlsZW5h bWVfZGlzcGxheSk7CiAgICAgICBpZiAodWlfb3V0X2lzX21pX2xpa2VfcCAo dWlvdXQpKQogCXsKIAkgIGNvbnN0IGNoYXIgKmZ1bGxuYW1lID0gc3ltdGFi X3RvX2Z1bGxuYW1lIChzYWwuc3ltdGFiKTsK --f46d0445177f22083104b0881fe0 Content-Type: application/octet-stream; name=ChangeLog Content-Disposition: attachment; filename=ChangeLog Content-Transfer-Encoding: base64 X-Attachment-Id: f_guecw6ue1 Content-length: 1139 MjAxMS0xMC0zMCAgRWxkYXIgR2F5bmV0ZGlub3YgPGhhbDkwMDBlZDJrQGdt YWlsLmNvbT4KCglBZGQgYSBuZXcgdmFyaWFibGUgdGhhdCBjb250cm9scyBh IHdheSBpbiB3aGljaCBmaWxlbmFtZXMgaW4KCWJhY2t0cmFjZXMgaXMgZGlz cGxheWVkLgoJKiBnZGIudGV4aW5mbzogQWRkZWQgZGVzY3JpcHRpb24gb2Yg J2ZpbGVuYW1lLWRpc3BsYXknIHZhcmlhYmxlIGluCgknc2V0L3Nob3cgYmFj a3RyYWNlJyBzZWN0aW9uLgoJKiBmcmFtZS5jOiBBZGRlZCBpbmNsdWRpbmcg b2YgYSBoZWFkZXIgZmlsZS4gIEFkZGVkIGRlZmluaXRpb24gb2YKCXRocmVl IGdsb2JhbCBzdHJpbmcgdmFyaWFibGVzIGFuZCBnbG9iYWwgYXJyYXkgb2Yg c3RyaW5nIHZhcmlhYmxlcy4KCUFkZGVkIGRlZmluaXRpb24gb2Ygb25lIGds b2JhbCBzdHJpbmcgdmFyaWFibGUuCgkoc2hvd19maWxlbmFtZV9kaXNwbGF5 X3N0cmluZyk6IE5ldyBmdW5jdGlvbi4KCShnZXRfZmlsZW5hbWVfZGlzcGxh eV9mcm9tX3NhbCk6IE5ldyBmdW5jdGlvbiB3aXRoIGNvbW1lbnRhcnkuCgko X2luaXRpYWxpemVfZnJhbWUpOiBBZGRlZCBpbml0aWFsaXphdGlvbiBvZiAn ZmlsZW5hbWUtZGlzcGxheScKCXZhcmlhYmxlLgoJKiBmcmFtZS5oOiBBZGRl ZCBkZWNsYXJhdGlvbiBvZiBhIG5ldyBmdW5jdGlvbiB3aXRoIGNvbW1lbnRh cnkuCgkqIHN0YWNrLmMgKHByaW50X2ZyYW1lKTogQWRkZWQgbmV3IHZhcmlh YmxlIGFuZCBjYWxsaW5nIG9mIGEgbmV3CglmdW5jdGlvbiBhbmQgY29uZGl0 aW9uIHdpdGggdGhpcyB2YXJpYWJsZS4gQ2hhbmdlZCB0aGlyZCBhcmd1bWVu dCBvZgoJY2FsbGluZyBvZiBhIGZ1bmN0aW9uLgo= --f46d0445177f22083104b0881fe0--