From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7599 invoked by alias); 19 Jul 2011 22:58:10 -0000 Received: (qmail 7591 invoked by uid 22791); 19 Jul 2011 22:58:08 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-gx0-f169.google.com (HELO mail-gx0-f169.google.com) (209.85.161.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 19 Jul 2011 22:57:54 +0000 Received: by gxk23 with SMTP id 23so2256321gxk.0 for ; Tue, 19 Jul 2011 15:57:53 -0700 (PDT) MIME-Version: 1.0 Received: by 10.236.200.131 with SMTP id z3mr10401575yhn.322.1311116273661; Tue, 19 Jul 2011 15:57:53 -0700 (PDT) Received: by 10.236.109.131 with HTTP; Tue, 19 Jul 2011 15:57:53 -0700 (PDT) In-Reply-To: References: Date: Wed, 20 Jul 2011 02:06:00 -0000 Message-ID: Subject: Re: [patch] PR 12999 info macros command. From: Matt Rice To: Tom Tromey Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=20cf305b09bcc0383304a8740bb5 X-IsSubscribed: yes 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-07/txt/msg00501.txt.bz2 --20cf305b09bcc0383304a8740bb5 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 4692 On Tue, Jul 19, 2011 at 10:16 AM, Tom Tromey wrote: >>>>>> "Matt" =3D=3D Matt Rice writes: > > Matt> this patch adds 2 commands, > Matt> info macros LINESPEC > Matt> info definitions MACRO > > Matt> the PR only asks for the former, but the latter seemed possibly use= ful. > > Thanks, this is very nice. Thanks for reviewing, updated. > Matt> +@kindex info definitions > Matt> +@cindex macro definition, showing > Matt> +@cindex definition, showing a macro's > Matt> +@item info definitions @var{macro} > Matt> +Show all definitions of the macro named @var{macro}, in the curren= t scope, > Matt> +and describe the source location or compiler command-line where th= ose > Matt> +definitions were established. > > I didn't understand what this did from this explanation. > I got confused because "in the current scope" would seem to restrict us > to a single definition. > > I would reword it to say something about "all definitions of MACRO at or > before the indicated line in the indicated source file", or something to > that effect. I used 'current' instead of 'indicated'. because the command does not have an argument use to indicate, but a 'current state'. > Matt> +print_macro_definition (const char *name, > Matt> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 const struct macro_definition *d, > Matt> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 struct macro_source_file *file, > Matt> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 int line) > > Add an introductory comment. Ahh, yes these also needed a 'falling rocks'. warning. > Matt> +static void > Matt> +print_macro_callback (const char *name, const struct macro_definit= ion *macro, > Matt> + =A0 =A0 =A0 =A0 =A0 =A0struct macro_source_file *source, int line, > Matt> + =A0 =A0 =A0 =A0 =A0 =A0void *user_data) > > Likewise. > > Matt> + =A0add_cmd ("macros", no_class, info_macros_command, > Matt> + =A0 =A0_("Show the names of all macros at LINESPEC, or the curren= t \ > Matt> +scope."), > Matt> + =A0 =A0&infolist); > Matt> + > Matt> + =A0add_cmd ("definitions", no_class, info_definitions_command, > Matt> + =A0 =A0_("Show all definitions of the macro named MACRO in the\n\ > Matt> +current scope."), > Matt> + =A0 =A0&infolist); > > I think the "definitions" one shouldn't have a \n in the help string. > The first sentence of the help is special, it should be on one line. > Also the text for "definitions" needs updating, following the docs. > > I'd like it if the help for all new commands included a usage line, > e.g.: > > Usage: info macros [LINESPEC] > > Matt> --- a/gdb/macrotab.h > Matt> +++ b/gdb/macrotab.h > Matt> @@ -311,6 +311,8 @@ struct macro_source_file *(macro_definition_loc= ation > Matt> =A0 =A0 or macro_for_each_in_scope. =A0*/ > Matt> =A0typedef void (*macro_callback_fn) (const char *name, > Matt> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0const st= ruct macro_definition *definition, > Matt> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0struct mac= ro_source_file *source, > Matt> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0int line, > Matt> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0void *us= er_data); > > The comment just above this typedef needs an update. > > Matt> +if [test_compiler_info gcc*] { > Matt> + =A0 =A0lappend options additional_flags=3D-g3 > Matt> +} else { > Matt> + =A0return -1 > Matt> +} > > I think this should probably call 'untested' first. > > Matt> +set test "info definitions FOO" > Matt> +gdb_test "$test" ".*#define FOO \"hello\".*" "info definitions FOO= 1" > Matt> +gdb_test "$test" ".*#define FOO \" \".*" "info definitions FOO 2" > Matt> +gdb_test "$test" ".*#define FOO \"world\".*" "info definitions FOO= 3" > Matt> +gdb_test "$test" ".*#define FOO\\(a\\) foo =3D a.*" "info definiti= ons FOO 4" > > As you mentioned on irc, this is weird. > > How about just a single test with one big regexp that matches all the > output? =A0You can easily construct the regexp in pieces if that makes it > simpler. K, I updated the whole test like that, and also fixed some issues with it. > Matt> +# info macros on the line where the #define or #include is > Matt> +# fails to find the macro defined (though it works on the next lin= e.) > Matt> +setup_kfail "gdb/NNNN" *-*-* > Matt> +gdb_test "$test" ".*define ONE.*" "$test.2" > > I suppose technically the macro is not actually defined until the next > line. =A0I don't think it matters much though, since the #define line will > never be executable anyhow. Yeah, and if you are going to explicitly give it as a linespec, you are probably staring right at the macro definition to get its line number. So its kind of an awkward corner case. --20cf305b09bcc0383304a8740bb5 Content-Type: application/octet-stream; name="foo.diff" Content-Disposition: attachment; filename="foo.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gqbgiqv50 Content-length: 22424 ZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dk Yi50ZXhpbmZvCmluZGV4IDNhM2E5ZmIuLjJkMTgyMWIgMTAwNjQ0Ci0tLSBh L2dkYi9kb2MvZ2RiLnRleGluZm8KKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5m bwpAQCAtOTU5MCw5ICs5NTkwLDI1IEBAIGNhbiBiZSBhbnkgc3RyaW5nIG9m IHRva2Vucy4KIEBjaW5kZXggbWFjcm8gZGVmaW5pdGlvbiwgc2hvd2luZwog QGNpbmRleCBkZWZpbml0aW9uLCBzaG93aW5nIGEgbWFjcm8ncwogQGl0ZW0g aW5mbyBtYWNybyBAdmFye21hY3JvfQotU2hvdyB0aGUgZGVmaW5pdGlvbiBv ZiB0aGUgbWFjcm8gbmFtZWQgQHZhcnttYWNyb30sIGFuZCBkZXNjcmliZSB0 aGUKK1Nob3cgdGhlIGN1cnJlbnQgZGVmaW5pdGlvbiBvZiB0aGUgbWFjcm8g bmFtZWQgQHZhcnttYWNyb30sIGFuZCBkZXNjcmliZSB0aGUKIHNvdXJjZSBs b2NhdGlvbiBvciBjb21waWxlciBjb21tYW5kLWxpbmUgd2hlcmUgdGhhdCBk ZWZpbml0aW9uIHdhcyBlc3RhYmxpc2hlZC4KIAorQGtpbmRleCBpbmZvIG1h Y3JvcworQGNpbmRleCBtYWNybyBkZWZpbml0aW9uLCBzaG93aW5nCitAY2lu ZGV4IGRlZmluaXRpb24sIHNob3dpbmcgYSBtYWNybydzCitAaXRlbSBpbmZv IG1hY3JvcyBAdmFye2xpbmVzcGVjfQorU2hvdyBhbGwgbWFjcm8gZGVmaW5p dGlvbnMgYXQgdGhlIGxvY2F0aW9uIG9mIEB2YXJ7bGluZXNwZWN9LCBhbmQg ZGVzY3JpYmUgdGhlCitzb3VyY2UgbG9jYXRpb24gb3IgY29tcGlsZXIgY29t bWFuZC1saW5lIHdoZXJlIHRob3NlIGRlZmluaXRpb25zIHdlcmUKK2VzdGFi bGlzaGVkLgorCitAa2luZGV4IGluZm8gZGVmaW5pdGlvbnMKK0BjaW5kZXgg bWFjcm8gZGVmaW5pdGlvbiwgc2hvd2luZworQGNpbmRleCBkZWZpbml0aW9u LCBzaG93aW5nIGEgbWFjcm8ncworQGl0ZW0gaW5mbyBkZWZpbml0aW9ucyBA dmFye21hY3JvfQorU2hvdyBhbGwgZGVmaW5pdGlvbnMgb2YgdGhlIG1hY3Jv IG5hbWVkIEB2YXJ7bWFjcm99IGF0IG9yIGJlZm9yZSB0aGUgY3VycmVudAor bGluZSBpbiB0aGUgY3VycmVudCBzb3VyY2UgZmlsZSwgYW5kIGRlc2NyaWJl IHRoZSBzb3VyY2UgbG9jYXRpb24gb3IKK2NvbXBpbGVyIGNvbW1hbmQtbGlu ZSB3aGVyZSB0aG9zZSBkZWZpbml0aW9ucyB3ZXJlIGVzdGFibGlzaGVkLgor CiBAa2luZGV4IG1hY3JvIGRlZmluZQogQGNpbmRleCB1c2VyLWRlZmluZWQg bWFjcm9zCiBAY2luZGV4IGRlZmluaW5nIG1hY3JvcyBpbnRlcmFjdGl2ZWx5 CmRpZmYgLS1naXQgYS9nZGIvbWFjcm9jbWQuYyBiL2dkYi9tYWNyb2NtZC5j CmluZGV4IGM3NzE1NmEuLjdmNjA1YmEgMTAwNjQ0Ci0tLSBhL2dkYi9tYWNy b2NtZC5jCisrKyBiL2dkYi9tYWNyb2NtZC5jCkBAIC0xMTcsNyArMTE3LDEw IEBAIG1hY3JvX2V4cGFuZF9vbmNlX2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50 IGZyb21fdHR5KQogICByZXR1cm47CiB9CiAKKy8qICBPdXRwdXRzIHRoZSBp bmNsdWRlIHBhdGggb2YgYSBtYWNybyBzdGFydGluZyBhdCBGSUxFIGFuZCBM SU5FIHRvIFNUUkVBTS4KIAorICAgIENhcmUgc2hvdWxkIGJlIHRha2VuIHRo YXQgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjYXVzZSBhbnkgbG9va3VwcyBp bnRvCisgICAgdGhlIHNwbGF5IHRyZWUgc28gdGhhdCBpdCBjYW4gYmUgc2Fm ZWx5IHVzZWQgd2hpbGUgaXRlcmF0aW5nLiAgKi8KIHN0YXRpYyB2b2lkCiBz aG93X3BwX3NvdXJjZV9wb3MgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYWNyb19zb3VyY2VfZmlsZSAq ZmlsZSwKQEAgLTEzNCwzNiArMTM3LDI3IEBAIHNob3dfcHBfc291cmNlX3Bv cyAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKICAgICB9CiB9CiAKKy8qIE91 dHB1dHMgYSBtYWNybyBmb3IgaHVtYW4gY29uc3VtcHRpb24sIGRldGFpbGlu ZyB0aGUgaW5jbHVkZSBwYXRoCisgICBhbmQgbWFjcm8gZGVmaW5pdGlvbi4g IE5BTUUgaXMgdGhlIG5hbWUgb2YgdGhlIG1hY3JvLgorICAgRCB0aGUgZGVm aW5pdGlvbi4gIEZJTEUgdGhlIHN0YXJ0IG9mIHRoZSBpbmNsdWRlIHBhdGgs IGFuZCBMSU5FIHRoZQorICAgbGluZSBudW1iZXIgaW4gRklMRS4KIAorICAg Q2FyZSBzaG91bGQgYmUgdGFrZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXMg bm90IGNhdXNlIGFueSBsb29rdXBzIGludG8KKyAgIHRoZSBzcGxheSB0cmVl IHNvIHRoYXQgaXQgY2FuIGJlIHNhZmVseSB1c2VkIHdoaWxlIGl0ZXJhdGlu Zy4gICovCiBzdGF0aWMgdm9pZAotaW5mb19tYWNyb19jb21tYW5kIChjaGFy ICpuYW1lLCBpbnQgZnJvbV90dHkpCitwcmludF9tYWNyb19kZWZpbml0aW9u IChjb25zdCBjaGFyICpuYW1lLAorCQkJY29uc3Qgc3RydWN0IG1hY3JvX2Rl ZmluaXRpb24gKmQsCisJCQlzdHJ1Y3QgbWFjcm9fc291cmNlX2ZpbGUgKmZp bGUsCisJCQlpbnQgbGluZSkKIHsKLSAgc3RydWN0IG1hY3JvX3Njb3BlICpt cyA9IE5VTEw7Ci0gIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwX2NoYWluID0g bWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZtcyk7Ci0g IHN0cnVjdCBtYWNyb19kZWZpbml0aW9uICpkOwotICAKLSAgaWYgKCEgbmFt ZSB8fCAhICpuYW1lKQotICAgIGVycm9yIChfKCJZb3UgbXVzdCBmb2xsb3cg dGhlIGBpbmZvIG1hY3JvJyBjb21tYW5kIHdpdGggdGhlIG5hbWUiCi0gICAg ICAgICAgICIgb2YgdGhlIG1hY3JvXG4iCi0gICAgICAgICAgICJ3aG9zZSBk ZWZpbml0aW9uIHlvdSB3YW50IHRvIHNlZS4iKSk7Ci0KLSAgbXMgPSBkZWZh dWx0X21hY3JvX3Njb3BlICgpOwotICBpZiAoISBtcykKLSAgICBlcnJvciAo XygiR0RCIGhhcyBubyBwcmVwcm9jZXNzb3IgbWFjcm8gaW5mb3JtYXRpb24g Zm9yIHRoYXQgY29kZS4iKSk7Ci0KLSAgZCA9IG1hY3JvX2xvb2t1cF9kZWZp bml0aW9uIChtcy0+ZmlsZSwgbXMtPmxpbmUsIG5hbWUpOwotICBpZiAoZCkK LSAgICB7Ci0gICAgICBpbnQgbGluZTsKLSAgICAgIHN0cnVjdCBtYWNyb19z b3VyY2VfZmlsZSAqZmlsZQotICAgICAgICA9IG1hY3JvX2RlZmluaXRpb25f bG9jYXRpb24gKG1zLT5maWxlLCBtcy0+bGluZSwgbmFtZSwgJmxpbmUpOwot CiAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChnZGJfc3Rkb3V0LCAiRGVmaW5l ZCBhdCAiKTsKICAgICAgIHNob3dfcHBfc291cmNlX3BvcyAoZ2RiX3N0ZG91 dCwgZmlsZSwgbGluZSk7CisKICAgICAgIGlmIChsaW5lICE9IDApCiAJZnBy aW50Zl9maWx0ZXJlZCAoZ2RiX3N0ZG91dCwgIiNkZWZpbmUgJXMiLCBuYW1l KTsKICAgICAgIGVsc2UKIAlmcHJpbnRmX2ZpbHRlcmVkIChnZGJfc3Rkb3V0 LCAiLUQlcyIsIG5hbWUpOworCiAgICAgICBpZiAoZC0+a2luZCA9PSBtYWNy b19mdW5jdGlvbl9saWtlKQogICAgICAgICB7CiAgICAgICAgICAgaW50IGk7 CkBAIC0xNzcsMTAgKzE3MSwzNyBAQCBpbmZvX21hY3JvX2NvbW1hbmQgKGNo YXIgKm5hbWUsIGludCBmcm9tX3R0eSkKICAgICAgICAgICAgIH0KICAgICAg ICAgICBmcHV0c19maWx0ZXJlZCAoIikiLCBnZGJfc3Rkb3V0KTsKICAgICAg ICAgfQorCiAgICAgICBpZiAobGluZSAhPSAwKQogCWZwcmludGZfZmlsdGVy ZWQgKGdkYl9zdGRvdXQsICIgJXNcbiIsIGQtPnJlcGxhY2VtZW50KTsKICAg ICAgIGVsc2UKIAlmcHJpbnRmX2ZpbHRlcmVkIChnZGJfc3Rkb3V0LCAiPSVz XG4iLCBkLT5yZXBsYWNlbWVudCk7Cit9CisKK3N0YXRpYyB2b2lkCitpbmZv X21hY3JvX2NvbW1hbmQgKGNoYXIgKm5hbWUsIGludCBmcm9tX3R0eSkKK3sK KyAgc3RydWN0IG1hY3JvX3Njb3BlICptcyA9IE5VTEw7CisgIHN0cnVjdCBj bGVhbnVwICpjbGVhbnVwX2NoYWluID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1 cnJlbnRfY29udGVudHMsICZtcyk7CisgIHN0cnVjdCBtYWNyb19kZWZpbml0 aW9uICpkOworCisgIGlmICghIG5hbWUgfHwgISAqbmFtZSkKKyAgICBlcnJv ciAoXygiWW91IG11c3QgZm9sbG93IHRoZSBgaW5mbyBtYWNybycgY29tbWFu ZCB3aXRoIHRoZSBuYW1lIgorICAgICAgICAgICAiIG9mIHRoZSBtYWNyb1xu IgorICAgICAgICAgICAid2hvc2UgZGVmaW5pdGlvbiB5b3Ugd2FudCB0byBz ZWUuIikpOworCisgIG1zID0gZGVmYXVsdF9tYWNyb19zY29wZSAoKTsKKyAg aWYgKCEgbXMpCisgICAgZXJyb3IgKF8oIkdEQiBoYXMgbm8gcHJlcHJvY2Vz c29yIG1hY3JvIGluZm9ybWF0aW9uIGZvciB0aGF0IGNvZGUuIikpOworCisg IGQgPSBtYWNyb19sb29rdXBfZGVmaW5pdGlvbiAobXMtPmZpbGUsIG1zLT5s aW5lLCBuYW1lKTsKKyAgaWYgKGQpCisgICAgeworICAgICAgaW50IGxpbmU7 CisgICAgICBzdHJ1Y3QgbWFjcm9fc291cmNlX2ZpbGUgKmZpbGUKKyAgICAg ICAgPSBtYWNyb19kZWZpbml0aW9uX2xvY2F0aW9uIChtcy0+ZmlsZSwgbXMt PmxpbmUsIG5hbWUsICZsaW5lKTsKKworICAgICAgcHJpbnRfbWFjcm9fZGVm aW5pdGlvbiAobmFtZSwgZCwgZmlsZSwgbGluZSk7CiAgICAgfQogICBlbHNl CiAgICAgewpAQCAtMTk0LDYgKzIxNSw2NCBAQCBpbmZvX21hY3JvX2NvbW1h bmQgKGNoYXIgKm5hbWUsIGludCBmcm9tX3R0eSkKICAgZG9fY2xlYW51cHMg KGNsZWFudXBfY2hhaW4pOwogfQogCisvKiBBIGNhbGxiYWNrIGZ1bmN0aW9u IGZvciB1c2FnZSB3aXRoIG1hY3JvX2Zvcl9lYWNoIGFuZCBmcmllbmRzLgor ICAgSWYgVVNFUl9EQVRBIGlzIG51bGwgYWxsIG1hY3JvcyB3aWxsIGJlIHBy aW50ZWQuCisgICBPdGhlcndpc2UgVVNFUl9EQVRBIGlzIGNvbnNpZGVyZWQg dG8gYmUgYSBzdHJpbmcsIHByaW50aW5nCisgICBvbmx5IG1hY3JvcyB3aG8n cyBOQU1FIG1hdGNoZXMgVVNFUl9EQVRBLiAgT3RoZXIgYXJndW1lbnRzIGFy ZQorICAgcm91dGVkIHRvIHByaW50X21hY3JvX2RlZmluaXRpb24uICAqLwor c3RhdGljIHZvaWQKK3ByaW50X21hY3JvX2NhbGxiYWNrIChjb25zdCBjaGFy ICpuYW1lLCBjb25zdCBzdHJ1Y3QgbWFjcm9fZGVmaW5pdGlvbiAqbWFjcm8s CisJCSAgIHN0cnVjdCBtYWNyb19zb3VyY2VfZmlsZSAqc291cmNlLCBpbnQg bGluZSwKKwkJICAgdm9pZCAqdXNlcl9kYXRhKQoreworICBpZiAoISB1c2Vy X2RhdGEgfHwgc3RyY21wICh1c2VyX2RhdGEsIG5hbWUpID09IDApCisgICAg cHJpbnRfbWFjcm9fZGVmaW5pdGlvbiAobmFtZSwgbWFjcm8sIHNvdXJjZSwg bGluZSk7Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSAiaW5mbyBk ZWZpbml0aW9ucyIgY29tbWFuZC4gKi8KK3N0YXRpYyB2b2lkCitpbmZvX2Rl ZmluaXRpb25zX2NvbW1hbmQgKGNoYXIgKm5hbWUsIGludCBmcm9tX3R0eSkK K3sKKyAgc3RydWN0IG1hY3JvX3Njb3BlICptcyA9IE5VTEw7CisgIHN0cnVj dCBjbGVhbnVwICpjbGVhbnVwX2NoYWluID0gbWFrZV9jbGVhbnVwIChmcmVl X2N1cnJlbnRfY29udGVudHMsICZtcyk7CisKKyAgaWYgKCEgbmFtZSB8fCAh ICpuYW1lKQorICAgIGVycm9yIChfKCJUaGUgYGluZm8gZGVmaW5pdGlvbnMn IGNvbW1hbmQgcmVxdWlyZXMgYSBtYWNybyBuYW1lIGFzIGFuIFwKK2FyZ3Vt ZW50LlxuIgorICAgICAgICAgICAiVXNhZ2U6IGluZm8gZGVmaW5pdGlvbnMg TUFDUk9cbiIpKTsKKworICBtcyA9IGRlZmF1bHRfbWFjcm9fc2NvcGUgKCk7 CisKKyAgaWYgKCEgbXMgfHwgISBtcy0+ZmlsZSB8fCAhIG1zLT5maWxlLT50 YWJsZSkKKyAgICBlcnJvciAoXygiR0RCIGhhcyBubyBwcmVwcm9jZXNzb3Ig bWFjcm8gaW5mb3JtYXRpb24gZm9yIHRoYXQgY29kZS4iKSk7CisKKyAgbWFj cm9fZm9yX2VhY2ggKG1zLT5maWxlLT50YWJsZSwgcHJpbnRfbWFjcm9fY2Fs bGJhY2ssIG5hbWUpOworICBkb19jbGVhbnVwcyAoY2xlYW51cF9jaGFpbik7 Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSAiaW5mbyBtYWNyb3Mi IGNvbW1hbmQuICovCitzdGF0aWMgdm9pZAoraW5mb19tYWNyb3NfY29tbWFu ZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQoreworICBzdHJ1Y3QgbWFj cm9fc2NvcGUgKm1zID0gTlVMTDsKKyAgc3RydWN0IGNsZWFudXAgKmNsZWFu dXBfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50 cywgJm1zKTsKKworICBpZiAoYXJncyA9PSBOVUxMKQorICAgIG1zID0gZGVm YXVsdF9tYWNyb19zY29wZSAoKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIHN0 cnVjdCBzeW10YWJzX2FuZF9saW5lcyBzYWxzID0gZGVjb2RlX2xpbmVfc3Bl YyAoYXJncywgMCk7CisKKyAgICAgIGlmIChzYWxzLm5lbHRzKQorICAgICAg ICBtcyA9IHNhbF9tYWNyb19zY29wZSAoc2Fscy5zYWxzWzBdKTsKKyAgICB9 CisKKyAgaWYgKCEgbXMgfHwgISBtcy0+ZmlsZSB8fCAhIG1zLT5maWxlLT50 YWJsZSkKKyAgICBlcnJvciAoXygiR0RCIGhhcyBubyBwcmVwcm9jZXNzb3Ig bWFjcm8gaW5mb3JtYXRpb24gZm9yIHRoYXQgY29kZS4iKSk7CisKKyAgbWFj cm9fZm9yX2VhY2hfaW5fc2NvcGUgKG1zLT5maWxlLCBtcy0+bGluZSwgcHJp bnRfbWFjcm9fY2FsbGJhY2ssIE5VTEwpOworICBkb19jbGVhbnVwcyAoY2xl YW51cF9jaGFpbik7Cit9CiAKIAwKIC8qIFVzZXItZGVmaW5lZCBtYWNyb3Mu ICAqLwpAQCAtMzU5LDYgKzQzOCw3IEBAIG1hY3JvX3VuZGVmX2NvbW1hbmQg KGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQogCiBzdGF0aWMgdm9pZAogcHJp bnRfb25lX21hY3JvIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3Qg bWFjcm9fZGVmaW5pdGlvbiAqbWFjcm8sCisJCSBzdHJ1Y3QgbWFjcm9fc291 cmNlX2ZpbGUgKnNvdXJjZSwgaW50IGxpbmUsCiAJCSB2b2lkICppZ25vcmUp CiB7CiAgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRvdXQsICJtYWNybyBk ZWZpbmUgJXMiLCBuYW1lKTsKQEAgLTM4Miw3ICs0NjIsNiBAQCBtYWNyb19s aXN0X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQogICBtYWNy b19mb3JfZWFjaCAobWFjcm9fdXNlcl9tYWNyb3MsIHByaW50X29uZV9tYWNy bywgTlVMTCk7CiB9CiAKLQogDAogLyogSW5pdGlhbGl6aW5nIHRoZSBgbWFj cm9jbWQnIG1vZHVsZS4gICovCiAKQEAgLTQyMCw2ICs0OTksMTggQEAgZXhw cmVzc2lvbiB3b3JrIHRvZ2V0aGVyIHRvIHlpZWxkIGEgcHJlLXByb2Nlc3Nl ZCBleHByZXNzaW9uLiIpLAogCSAgIF8oIlNob3cgdGhlIGRlZmluaXRpb24g b2YgTUFDUk8sIGFuZCBpdHMgc291cmNlIGxvY2F0aW9uLiIpLAogCSAgICZp bmZvbGlzdCk7CiAKKyAgYWRkX2NtZCAoIm1hY3JvcyIsIG5vX2NsYXNzLCBp bmZvX21hY3Jvc19jb21tYW5kLAorCSAgIF8oIlNob3cgdGhlIGRlZmluaXRp b25zIG9mIGFsbCBtYWNyb3MgYXQgTElORVNQRUMsIG9yIHRoZSBjdXJyZW50 IFwKK3NvdXJjZSBsb2NhdGlvbi5cblwKK1VzYWdlOiBpbmZvIHNvdXJjZSBb TElORVNQRUNdIiksCisJICAgJmluZm9saXN0KTsKKworICBhZGRfY21kICgi ZGVmaW5pdGlvbnMiLCBub19jbGFzcywgaW5mb19kZWZpbml0aW9uc19jb21t YW5kLAorCSAgIF8oIlNob3cgYWxsIGRlZmluaXRpb25zIG9mIE1BQ1JPIGRl ZmluZWQgYmVmb3JlIHRoZSBjdXJyZW50XAorIHNvdXJjZSBsb2NhdGlvbi5c blwKK1VzYWdlOiBpbmZvIGRlZmluaXRpb25zIE1BQ1JPIiksCisJICAgJmlu Zm9saXN0KTsKKwogICBhZGRfY21kICgiZGVmaW5lIiwgbm9fY2xhc3MsIG1h Y3JvX2RlZmluZV9jb21tYW5kLCBfKCJcCiBEZWZpbmUgYSBuZXcgQy9DKysg cHJlcHJvY2Vzc29yIG1hY3JvLlxuXAogVGhlIEdEQiBjb21tYW5kIGBtYWNy byBkZWZpbmUgREVGSU5JVElPTicgaXMgZXF1aXZhbGVudCB0byBwbGFjaW5n IGFcblwKZGlmZiAtLWdpdCBhL2dkYi9tYWNyb3RhYi5jIGIvZ2RiL21hY3Jv dGFiLmMKaW5kZXggY2JhMjg1ZC4uZWZjZjgzNSAxMDA2NDQKLS0tIGEvZ2Ri L21hY3JvdGFiLmMKKysrIGIvZ2RiL21hY3JvdGFiLmMKQEAgLTkxMyw3ICs5 MTMsOCBAQCBmb3JlYWNoX21hY3JvIChzcGxheV90cmVlX25vZGUgbm9kZSwg dm9pZCAqYXJnKQogICBzdHJ1Y3QgbWFjcm9fa2V5ICprZXkgPSAoc3RydWN0 IG1hY3JvX2tleSAqKSBub2RlLT5rZXk7CiAgIHN0cnVjdCBtYWNyb19kZWZp bml0aW9uICpkZWYgPSAoc3RydWN0IG1hY3JvX2RlZmluaXRpb24gKikgbm9k ZS0+dmFsdWU7CiAKLSAgKCpkYXR1bS0+Zm4pIChrZXktPm5hbWUsIGRlZiwg ZGF0dW0tPnVzZXJfZGF0YSk7CisgICgqZGF0dW0tPmZuKSAoa2V5LT5uYW1l LCBkZWYsIGtleS0+c3RhcnRfZmlsZSwga2V5LT5zdGFydF9saW5lLAorCQlk YXR1bS0+dXNlcl9kYXRhKTsKICAgcmV0dXJuIDA7CiB9CiAKQEAgLTk0NSw3 ICs5NDYsOCBAQCBmb3JlYWNoX21hY3JvX2luX3Njb3BlIChzcGxheV90cmVl X25vZGUgbm9kZSwgdm9pZCAqaW5mbykKICAgICAgICYmICgha2V5LT5lbmRf ZmlsZQogCSAgfHwgY29tcGFyZV9sb2NhdGlvbnMgKGtleS0+ZW5kX2ZpbGUs IGtleS0+ZW5kX2xpbmUsCiAJCQkJZGF0dW0tPmZpbGUsIGRhdHVtLT5saW5l KSA+PSAwKSkKLSAgICAoKmRhdHVtLT5mbikgKGtleS0+bmFtZSwgZGVmLCBk YXR1bS0+dXNlcl9kYXRhKTsKKyAgICAoKmRhdHVtLT5mbikgKGtleS0+bmFt ZSwgZGVmLCBrZXktPnN0YXJ0X2ZpbGUsIGtleS0+c3RhcnRfbGluZSwKKwkJ ICBkYXR1bS0+dXNlcl9kYXRhKTsKICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAt LWdpdCBhL2dkYi9tYWNyb3RhYi5oIGIvZ2RiL21hY3JvdGFiLmgKaW5kZXgg ZDJiMmI2My4uYTEwMzUxYSAxMDA2NDQKLS0tIGEvZ2RiL21hY3JvdGFiLmgK KysrIGIvZ2RiL21hY3JvdGFiLmgKQEAgLTMwNiwxMSArMzA2LDE0IEBAIHN0 cnVjdCBtYWNyb19zb3VyY2VfZmlsZSAqKG1hY3JvX2RlZmluaXRpb25fbG9j YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmRlZmlu aXRpb25fbGluZSkpOwogCiAvKiBDYWxsYmFjayBmdW5jdGlvbiB3aGVuIHdh bGtpbmcgYSBtYWNybyB0YWJsZS4gIE5BTUUgaXMgdGhlIG5hbWUgb2YKLSAg IHRoZSBtYWNybywgYW5kIERFRklOSVRJT04gaXMgdGhlIGRlZmluaXRpb24u ICBVU0VSX0RBVEEgaXMgYW4KLSAgIGFyYml0cmFyeSBwb2ludGVyIHdoaWNo IGlzIHBhc3NlZCBieSB0aGUgY2FsbGVyIHRvIG1hY3JvX2Zvcl9lYWNoCi0g ICBvciBtYWNyb19mb3JfZWFjaF9pbl9zY29wZS4gICovCisgICB0aGUgbWFj cm8sIGFuZCBERUZJTklUSU9OIGlzIHRoZSBkZWZpbml0aW9uLiAgU09VUkNF IGlzIHRoZSBmaWxlIGF0IHRoZQorICAgc3RhcnQgb2YgdGhlIGluY2x1ZGUg cGF0aCwgYW5kIExJTkUgaXMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBTT1VS Q0UgZmlsZQorICAgd2hlcmUgdGhlIG1hY3JvIHdhcyBkZWZpbmVkLiAgVVNF Ul9EQVRBIGlzIGFuIGFyYml0cmFyeSBwb2ludGVyIHdoaWNoIGlzCisgICBw YXNzZWQgYnkgdGhlIGNhbGxlciB0byBtYWNyb19mb3JfZWFjaCBvciBtYWNy b19mb3JfZWFjaF9pbl9zY29wZS4gICovCiB0eXBlZGVmIHZvaWQgKCptYWNy b19jYWxsYmFja19mbikgKGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkJICAgY29u c3Qgc3RydWN0IG1hY3JvX2RlZmluaXRpb24gKmRlZmluaXRpb24sCisJCQkJ ICAgc3RydWN0IG1hY3JvX3NvdXJjZV9maWxlICpzb3VyY2UsCisJCQkJICAg aW50IGxpbmUsCiAJCQkJICAgdm9pZCAqdXNlcl9kYXRhKTsKIAogLyogQ2Fs bCB0aGUgZnVuY3Rpb24gRk4gZm9yIGVhY2ggbWFjcm8gaW4gdGhlIG1hY3Jv IHRhYmxlIFRBQkxFLgpkaWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5jIGIvZ2Ri L3N5bXRhYi5jCmluZGV4IGI3OTIwODEuLjk0NDdiZDkgMTAwNjQ0Ci0tLSBh L2dkYi9zeW10YWIuYworKysgYi9nZGIvc3ltdGFiLmMKQEAgLTM3NzEsNiAr Mzc3MSw3IEBAIHN0cnVjdCBhZGRfbmFtZV9kYXRhCiAgICBUaGlzIGFkZHMg YSBtYWNybydzIG5hbWUgdG8gdGhlIGN1cnJlbnQgY29tcGxldGlvbiBsaXN0 LiAgKi8KIHN0YXRpYyB2b2lkCiBhZGRfbWFjcm9fbmFtZSAoY29uc3QgY2hh ciAqbmFtZSwgY29uc3Qgc3RydWN0IG1hY3JvX2RlZmluaXRpb24gKmlnbm9y ZSwKKwkJc3RydWN0IG1hY3JvX3NvdXJjZV9maWxlICppZ25vcmUyLCBpbnQg aWdub3JlMywKIAkJdm9pZCAqdXNlcl9kYXRhKQogewogICBzdHJ1Y3QgYWRk X25hbWVfZGF0YSAqZGF0dW0gPSAoc3RydWN0IGFkZF9uYW1lX2RhdGEgKikg dXNlcl9kYXRhOwpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9pbmZvLW1hY3Jvcy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZv LW1hY3Jvcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmY4NzQxNTYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2luZm8tbWFjcm9zLmMKQEAgLTAsMCArMSw3MyBAQAorI2lmZGVm IERFRl9NQUNST1MKKworICAjaWZkZWYgT05FCisgICAgI2lmZGVmIEZPTwor ICAgICN1bmRlZiBGT08KKyAgICAjZW5kaWYKKworICAjZGVmaW5lIEZPTyAi aGVsbG8iCisgICNlbHNlCisgICAgI3VuZGVmIEZPTworICAjZW5kaWYKKwor CisgICNpZmRlZiBUV08KKyAgICAjaWZkZWYgRk9PCisgICAgI3VuZGVmIEZP TworICAgICNlbmRpZgorICAjZGVmaW5lIEZPTyAiICIKKyAgI2VuZGlmCisK KyAgI2lmZGVmIFRIUkVFCisgICAgI2lmZGVmIEZPTworICAgICN1bmRlZiBG T08KKyAgICAjZW5kaWYKKworICAjZGVmaW5lIEZPTyAid29ybGQiCisgICNl bmRpZgorCisgICNpZmRlZiBGT1VSCisgICAgI2lmZGVmIEZPTworICAgICN1 bmRlZiBGT08KKyAgICAjZW5kaWYKKyAgICAjZGVmaW5lIEZPTyhhKSBmb28g PSBhCisgICNlbmRpZgorI2Vsc2UKKworaW50IG1haW4gKGludCBhcmdjLCBj b25zdCBjaGFyICoqYXJndikKK3sKKyAgY2hhciAqZm9vOworCisgICNkZWZp bmUgREVGX01BQ1JPUworICAjZGVmaW5lIE9ORQorICAjaW5jbHVkZSAiaW5m by1tYWNyb3MuYyIKKyAgZm9vID0gRk9POworCisgICNkZWZpbmUgVFdPCisg ICNpbmNsdWRlICJpbmZvLW1hY3Jvcy5jIgorICBmb28gPSBGT087CisKKyAg I2RlZmluZSBUSFJFRQorICAjaW5jbHVkZSAiaW5mby1tYWNyb3MuYyIKKyAg Zm9vID0gRk9POworCisgICN1bmRlZiBUSFJFRQorICAjaW5jbHVkZSAiaW5m by1tYWNyb3MuYyIKKyAgZm9vID0gRk9POworCisgICN1bmRlZiBUV08KKyAg I2luY2x1ZGUgImluZm8tbWFjcm9zLmMiCisgIGZvbyA9IEZPTzsKKworICAj dW5kZWYgT05FCisgICNpbmNsdWRlICJpbmZvLW1hY3Jvcy5jIgorICBmb28g PSAoY2hhciAqKTA7CisKKyAgI2RlZmluZSBGT1VSCisgICNpbmNsdWRlICJp bmZvLW1hY3Jvcy5jIgorICBGT08gKCJ0aGUgZW5kLiIpOworCisgIHJldHVy biAwOworfQorI2VuZGlmCisKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvaW5mby1tYWNyb3MuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9pbmZvLW1hY3Jvcy5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uYmQ1YTg3MAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1tYWNyb3MuZXhwCkBAIC0wLDAgKzEs MjAyIEBACisjIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCitzZXQgdGVzdGZpbGUg ImluZm8tbWFjcm9zIgorc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworc2V0 IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorZ2V0 X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfQoraWYgW3Rlc3RfY29tcGlsZXJf aW5mbyBnY2MqXSB7CisgICAgbGFwcGVuZCBvcHRpb25zIGFkZGl0aW9uYWxf ZmxhZ3M9LWczCit9IGVsc2UgeworICB1bnRlc3RlZCAke3Rlc3RmaWxlfS5l eHAKKyAgcmV0dXJuIC0xCit9CisKK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rp bmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gJG9w dGlvbnNdIH0geworICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAorICAg IHJldHVybiAtMQorfQorCitpZiAhW3J1bnRvX21haW5dIHsKKyAgICB1bnRl c3RlZCAke3Rlc3RmaWxlfS5leHAKKyAgICByZXR1cm4gLTEKK30KKworc2V0 IHRlc3QgImluZm8gZGVmaW5pdGlvbnMgRk9PIgorc2V0IHIxICIuKiNkZWZp bmUgRk9PIFwiaGVsbG9cIiIKK3NldCByMiAiLiojZGVmaW5lIEZPTyBcIiBc IiIKK3NldCByMyAiLiojZGVmaW5lIEZPTyBcIndvcmxkXCIiCitzZXQgcjQg Ii4qI2RlZmluZSBGT09cXChhXFwpIGZvbyA9IGEiCitzZXQgdGVzdG5hbWUg IiR0ZXN0IDEiCitnZGJfdGVzdCAiJHRlc3QiICIkcjEkcjIkcjMkcjQiICIk dGVzdG5hbWUiCisKKworc2V0IHRlc3QgImluZm8gbWFjcm9zIgorc2V0IHIx ICIuKiNkZWZpbmUgRk9PIFwiaGVsbG9cIiIKK3NldCByMiAiLiojZGVmaW5l IE9ORSIKK3NldCByMyAiLipcclxuJGdkYl9wcm9tcHQiCitzZXQgdGVzdG5h bWUgIiR0ZXN0IDIiCitnZGJfdGVzdF9tdWx0aXBsZSAiJHRlc3QiICR0ZXN0 bmFtZSB7CisgIC1yZSAiJHIxJHIyJHIzIiB7CisgICAgIHBhc3MgJHRlc3Ru YW1lCisgIH0KKyAgLXJlICIuKiNkZWZpbmUgVFdPLipcclxuJGdkYl9wcm9t cHQiIHsKKyAgICAgZmFpbCAkdGVzdG5hbWUKKyAgfQorICAtcmUgIi4qI2Rl ZmluZSBUSFJFRS4qXHJcbiRnZGJfcHJvbXB0IiB7CisgICAgIGZhaWwgJHRl c3RuYW1lCisgIH0KKyAgLXJlICIuKiNkZWZpbmUgRk9VUi4qXHJcbiRnZGJf cHJvbXB0IiB7CisgICAgIGZhaWwgJHRlc3RuYW1lCisgIH0KK30KK2dkYl90 ZXN0ICJuZXh0IiAiLioiICIiCisKK3NldCByMSAiLiojZGVmaW5lIEZPTyBc IiBcIiIKK3NldCByMiAiLiojZGVmaW5lIE9ORSIKK3NldCByMyAiLiojZGVm aW5lIFRXTyIKK3NldCByNCAiLipcclxuJGdkYl9wcm9tcHQiCitzZXQgdGVz dG5hbWUgIiR0ZXN0IDQiCitnZGJfdGVzdF9tdWx0aXBsZSAiJHRlc3QiICR0 ZXN0bmFtZSB7CisgIC1yZSAiLiojZGVmaW5lIFRIUkVFLipcclxuJGdkYl9w cm9tcHQiIHsKKyAgICAgZmFpbCAkdGVzdG5hbWUKKyAgfQorICAtcmUgIi4q I2RlZmluZSBGT1VSLipcclxuJGdkYl9wcm9tcHQiIHsKKyAgICAgZmFpbCAk dGVzdG5hbWUKKyAgfQorICAtcmUgIiRyMSRyMiRyMyRyNCIgeworICAgICBw YXNzICR0ZXN0bmFtZQorICB9Cit9CitnZGJfdGVzdCAibmV4dCIgIi4qIiAi IgorCisjIGluIGFscGFiZXRpY2FsIG9yZGVyLi4uCitzZXQgcjEgIi4qI2Rl ZmluZSBGT08gXCJ3b3JsZFwiIgorc2V0IHIyICIuKiNkZWZpbmUgT05FIgor c2V0IHIzICIuKiNkZWZpbmUgVEhSRUUiCitzZXQgcjQgIi4qI2RlZmluZSBU V08iCitzZXQgcjUgIi4qXHJcbiRnZGJfcHJvbXB0Igorc2V0IHRlc3RuYW1l ICIkdGVzdCA0IgorZ2RiX3Rlc3RfbXVsdGlwbGUgIiR0ZXN0IiAkdGVzdG5h bWUgeworICAtcmUgIi4qI2RlZmluZSBGT1VSLipcclxuJGdkYl9wcm9tcHQi IHsKKyAgICAgZmFpbCAkdGVzdG5hbWUKKyAgfQorICAtcmUgIiRyMSRyMiRy MyRyNCRyNSIgeworICAgICBwYXNzICR0ZXN0bmFtZQorICB9Cit9CisjIHNh bWUgYXMgYWJvdmUgd2l0aCBhIGxpbmVzcGVjLgorc2V0IHRlc3QgImluZm8g bWFjcm9zICpcJHBjIgorZ2RiX3Rlc3RfbXVsdGlwbGUgIiR0ZXN0IiAkdGVz dCB7CisgIC1yZSAiLiojZGVmaW5lIEZPVVIuKlxyXG4kZ2RiX3Byb21wdCIg eworICAgICBmYWlsICR0ZXN0CisgIH0KKyAgLXJlICIkcjEkcjIkcjMkcjQk cjUiIHsKKyAgICAgcGFzcyAkdGVzdAorICB9Cit9CitnZGJfdGVzdCAibmV4 dCIgIi4qIiAiIgorCitzZXQgcjEgIi4qI2RlZmluZSBGT08gXCIgXCIiCitz ZXQgcjIgIi4qI2RlZmluZSBPTkUiCitzZXQgcjMgIi4qI2RlZmluZSBUV08u Igorc2V0IHI0ICIuKlxyXG4kZ2RiX3Byb21wdCIKK3NldCB0ZXN0bmFtZSAi JHRlc3QgNSIKK3NldCB0ZXN0ICJpbmZvIG1hY3JvcyIKK2dkYl90ZXN0X211 bHRpcGxlICIkdGVzdCIgJHRlc3QgeworICAtcmUgIi4qI2RlZmluZSBUSFJF RS4qXHJcbiRnZGJfcHJvbXB0IiB7CisgICAgIGZhaWwgJHRlc3RuYW1lCisg IH0KKyAgLXJlICIuKiNkZWZpbmUgRk9VUi4qXHJcbiRnZGJfcHJvbXB0IiB7 CisgICAgIGZhaWwgJHRlc3RuYW1lCisgIH0KKyAgLXJlICIkcjEkcjIkcjMk cjQiIHsKKyAgICAgcGFzcyAkdGVzdG5hbWUKKyAgfQorfQorZ2RiX3Rlc3Qg Im5leHQiICIuKiIgIiIKK2dkYl90ZXN0ICJuZXh0IiAiLioiICIiCisKK3Nl dCByMSAiLiojZGVmaW5lIERFRl9NQUNST1MiCitzZXQgcjIgIi4qXHJcbiRn ZGJfcHJvbXB0Igorc2V0IHRlc3RuYW1lICIkdGVzdCA2IgorZ2RiX3Rlc3Rf bXVsdGlwbGUgIiR0ZXN0IiAkdGVzdG5hbWUgeworICAtcmUgIi4qI2RlZmlu ZSBGT08gXCIgXCIuKlxyXG4kZ2RiX3Byb21wdCIgeworICAgICBmYWlsICR0 ZXN0bmFtZQorICB9CisgIC1yZSAiLiojZGVmaW5lIEZPTyBcImhlbGxvXCIu KlxyXG4kZ2RiX3Byb21wdCIgeworICAgICBmYWlsICR0ZXN0bmFtZQorICB9 CisgIC1yZSAiLiojZGVmaW5lIEZPTyBcIndvcmxkXCIuKlxyXG4kZ2RiX3By b21wdCIgeworICAgICBmYWlsICR0ZXN0bmFtZQorICB9CisgIC1yZSAiLioj ZGVmaW5lIEZPT1xcKGFcXCkgZm9vID0gYS4qIiB7CisgICAgIGZhaWwgJHRl c3RuYW1lCisgIH0KKyAgLXJlICIuKiNkZWZpbmUgT05FLipcclxuJGdkYl9w cm9tcHQiIHsKKyAgICAgZmFpbCAkdGVzdG5hbWUKKyAgfQorICAtcmUgIi4q I2RlZmluZSBUV08uKlxyXG4kZ2RiX3Byb21wdCIgeworICAgICBmYWlsICR0 ZXN0bmFtZQorICB9CisgIC1yZSAiLiojZGVmaW5lIFRIUkVFLipcclxuJGdk Yl9wcm9tcHQiIHsKKyAgICAgZmFpbCAkdGVzdG5hbWUKKyAgfQorICAtcmUg Ii4qI2RlZmluZSBGT1VSLipcclxuJGdkYl9wcm9tcHQiIHsKKyAgICAgZmFp bCAkdGVzdG5hbWUKKyAgfQorICAtcmUgIiRyMSRyMiIgeworICAgICBwYXNz ICR0ZXN0bmFtZQorICB9Cit9CisKK2dkYl90ZXN0ICJuZXh0IiAiLioiICIi CitzZXQgcjEgIi4qI2RlZmluZSBERUZfTUFDUk9TIgorc2V0IHIyICIuKiNk ZWZpbmUgRk9PXFwoYVxcKSBmb28gPSBhIgorc2V0IHIzICIuKiNkZWZpbmUg Rk9VUiIKK3NldCByNCAiLipcclxuJGdkYl9wcm9tcHQiCitzZXQgdGVzdG5h bWUgIiR0ZXN0IDciCitnZGJfdGVzdF9tdWx0aXBsZSAiJHRlc3QiICR0ZXN0 bmFtZSB7CisgIC1yZSAiLiojZGVmaW5lIEZPTyBcIiBcIi4qXHJcbiRnZGJf cHJvbXB0IiB7CisgICAgIGZhaWwgJHRlc3RuYW1lCisgIH0KKyAgLXJlICIu KiNkZWZpbmUgRk9PIFwiaGVsbG9cIi4qXHJcbiRnZGJfcHJvbXB0IiB7Cisg ICAgIGZhaWwgJHRlc3RuYW1lCisgIH0KKyAgLXJlICIuKiNkZWZpbmUgRk9P IFwid29ybGRcIi4qXHJcbiRnZGJfcHJvbXB0IiB7CisgICAgIGZhaWwgJHRl c3RuYW1lCisgIH0KKyAgLXJlICIuKiNkZWZpbmUgT05FLipcclxuJGdkYl9w cm9tcHQiIHsKKyAgICAgZmFpbCAkdGVzdG5hbWUKKyAgfQorICAtcmUgIi4q I2RlZmluZSBUV08uKlxyXG4kZ2RiX3Byb21wdCIgeworICAgICBmYWlsICR0 ZXN0bmFtZQorICB9CisgIC1yZSAiLiojZGVmaW5lIFRIUkVFLipcclxuJGdk Yl9wcm9tcHQiIHsKKyAgICAgZmFpbCAkdGVzdG5hbWUKKyAgfQorICAtcmUg IiRyMSRyMiRyMyRyNCIgeworICAgICBwYXNzICR0ZXN0bmFtZQorICB9Cit9 CisKK3NldCB0ZXN0ICJpbmZvIG1hY3JvcyBpbmZvLW1hY3Jvcy5jOjQyIgor CitzZXQgcjEgIi4qZGVmaW5lIERFRl9NQUNST1MiCitzZXQgcjIgIi4qZGVm aW5lIE9ORSIKKyMgaW5mbyBtYWNyb3Mgb24gdGhlIGxpbmUgd2hlcmUgdGhl ICNkZWZpbmUgb3IgI2luY2x1ZGUgaXMKKyMgZmFpbHMgdG8gZmluZCB0aGUg bWFjcm8gZGVmaW5lZCAodGhvdWdoIGl0IHdvcmtzIG9uIHRoZSBuZXh0IGxp bmUuKQorc2V0dXBfa2ZhaWwgImdkYi9OTk5OIiAqLSotKgorZ2RiX3Rlc3Qg IiR0ZXN0IiAiJHIxJHIyIiAiJHRlc3QiCg== --20cf305b09bcc0383304a8740bb5--