From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32575 invoked by alias); 21 Feb 2011 08:17:21 -0000 Received: (qmail 32565 invoked by uid 22791); 21 Feb 2011 08:17:18 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ,TW_CP X-Spam-Check-By: sourceware.org Received: from mail-yx0-f169.google.com (HELO mail-yx0-f169.google.com) (209.85.213.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 21 Feb 2011 08:17:06 +0000 Received: by yxt33 with SMTP id 33so578741yxt.0 for ; Mon, 21 Feb 2011 00:17:04 -0800 (PST) Received: by 10.151.42.1 with SMTP id u1mr1370668ybj.71.1298276224077; Mon, 21 Feb 2011 00:17:04 -0800 (PST) MIME-Version: 1.0 Received: by 10.147.125.2 with HTTP; Mon, 21 Feb 2011 00:16:44 -0800 (PST) In-Reply-To: References: <4D24D9DD.8090104@codesourcery.com> From: Hui Zhu Date: Mon, 21 Feb 2011 08:18:00 -0000 Message-ID: Subject: Re: [PATCH] tracepoint: add new trace command "printf"[0] gdb To: Tom Tromey , gdb-patches ml , Stan Shebs Content-Type: multipart/mixed; boundary=00151750ddae28132c049cc67d94 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-02/txt/msg00526.txt.bz2 --00151750ddae28132c049cc67d94 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 5000 On Thu, Feb 17, 2011 at 16:15, Hui Zhu wrote: > On Sat, Feb 12, 2011 at 02:45, Tom Tromey wrote: >>>>>>> ">" =3D=3D Hui Zhu writes: >> >>>> + =A0 =A0 =A0gen_expr (expr, &pc, aexpr, &value); >>>> + >>>> + >>>> + =A0 =A0 =A0if (value.optimized_out) >> >> There's no need to have 2 blank lines here. >> >> This function and some other new ones have no documentation. >> >>>> + =A0{"printf", 0, 0, 0, 0}, =A0 /* 0x31 */ >> [...] >>>> + =A0 =A0aop_printf =3D 0x31, >> >> If you add a new AX expression, you must update agentexpr.texi. >> >> I think any AX addition should also require a corresponding addition to >> gdbserver. >> >>>> +typedef void (printf_callback) (char *fbuf, char **expp, >>>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0struct bp_loc= ation *loc, >>>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0struct agent_= expr *aexpr); >> >> From what I can see, the `loc' and `aexpr' arguments are passed through >> string_printf without interpretation. >> >> In a case like this it is customary to just add a single `void *data' >> argument and have the caller and callback agree on the type. =A0Here, th= at >> type would be an instance of a struct wrapping the two values. >> >> This definition should not be here. >> >>>> =A0static void >>>> +ui_printf (char *arg, struct ui_file *stream) >>>> +{ >>>> + =A0string_printf (arg, stream, NULL, NULL, NULL); >>>> +} >> >> There's no reason to keep ui_printf around, just inline this into the 2 >> callers. >> >>>> +extern void printf_command (char *arg, int from_tty); >>>> +typedef void (printf_callback) (char **expp, struct bp_location *loc, >>>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0struct agent_= expr *aexpr); >>>> +extern void string_printf (char *arg, struct ui_file *stream, >>>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 printf_callback callback= , struct bp_location *loc, >>>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 struct agent_expr *aexpr= ); >> >> These should be in some appropriate header, not tracepoint.c. >> >>>> + =A0 =A0 =A0/* The agent expr include expr for arguments, format stri= ng, 1 byte >>>> + =A0 =A0 =A0 * for aop_printf, 1 byte for the number of arguments, 1 = byte for >>>> + =A0 =A0 =A0 * size of format string, 1 byte for blank after format s= tring >>>> + =A0 =A0 =A0 * and 1 byte for aop_end. =A0*/ >> >> Wrong comment format, no leading "*"s. >> >> >> This new feature needs a documentation patch and probably also a patch >> to NEWS. >> >> From what I can tell from the patch, the idea here is to add a printf to >> a tracepoint's actions, with the printf evaluated on the remote side. = =A0I >> guess that is an ok idea, though I don't use this stuff enough to really >> have an opinion. >> >> I think it would be good for other maintainers to speak up now. =A0If it >> is left to me, I will allow this if you fix up the problems and write >> the documentation. >> >> Tom >> > > Thanks for your help Tom. > > I make a new patch according to your comments. =A0And I have send the > patch for doc in prev mail. > > Best, > Hui > > 2011-02-17 =A0Hui Zhu =A0 > > =A0 =A0 =A0 =A0* Makefile.in (HFILES_NO_SRCDIR): Add printcmd.h. > =A0 =A0 =A0 =A0* ax-gdb.c (gen_printf_expr_callback): New function. > =A0 =A0 =A0 =A0* ax-general.c (ax_memcpy): New function. > =A0 =A0 =A0 =A0(aop_map): Add new entry for "printf". > =A0 =A0 =A0 =A0(ax_print): Handle "printf". > =A0 =A0 =A0 =A0(ax_reqs): Ditto. > =A0 =A0 =A0 =A0* ax.h (agent_op): Add aop_printf. > =A0 =A0 =A0 =A0(ax_memcpy): Forward declare. > =A0 =A0 =A0 =A0* printcmd.c (printf_callback): New typedef. > =A0 =A0 =A0 =A0(string_printf): New function from ui_printf. > =A0 =A0 =A0 =A0(ui_printf): Call string_printf. > =A0 =A0 =A0 =A0(printf_command): Remove static. > =A0 =A0 =A0 =A0* printcmd.h: New file. > =A0 =A0 =A0 =A0* tracepoint.c (printf_command, gen_printf_expr_callback, > =A0 =A0 =A0 =A0printf_callback, string_printf): Forward declares. > =A0 =A0 =A0 =A0(validate_actionline, encode_actions_1): handle printf_com= mand. > Hi guys, Patch in attachment checked in. Thanks, Hui 2011-02-17 Hui Zhu * Makefile.in (HFILES_NO_SRCDIR): Add printcmd.h. * ax-gdb.c (gen_printf_expr_callback): New function. * ax-gdb.h (gen_printf_expr_callback): Forward declare. * ax-general.c (ax_memcpy): New function. (aop_map): Add new entry for "printf". (ax_print): Handle "printf". (ax_reqs): Ditto. * ax.h (ax_memcpy): Forward declare. * common/ax.def (invalid2): Removed. (printf): New entry. * printcmd.c (printcmd.h): New include. (string_printf): New function. (ui_printf): Removed. (printf_command): Remove static. Call string_printf. (eval_command): Call string_printf. * printcmd.h: New file. * tracepoint.c (printf_command, gen_printf_expr_callback, printf_callback, string_printf): Forward declares. (validate_actionline, encode_actions_1): handle printf_command. --00151750ddae28132c049cc67d94 Content-Type: text/plain; charset=US-ASCII; name="tp_print.txt" Content-Disposition: attachment; filename="tp_print.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gkf441me0 Content-length: 17369 LS0tCiBNYWtlZmlsZS5pbiAgIHwgICAgMiAtCiBheC1nZGIuYyAgICAgIHwg ICA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBheC1nZGIuaCAgICAgIHwgICAgMiArCiBh eC1nZW5lcmFsLmMgIHwgICA1MyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tCiBheC5oICAgICAgICAgIHwg ICAgMiArCiBjb21tb24vYXguZGVmIHwgICAgNiAtLS0tLQogcHJpbnRjbWQu YyAgICB8ICAgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLQogcHJpbnRjbWQuaCAgICB8ICAgMzAgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHRyYWNlcG9pbnQuYyAgfCAgIDM5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQs IDIwOSBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKCi0tLSBhL01h a2VmaWxlLmluCisrKyBiL01ha2VmaWxlLmluCkBAIC04MTMsNyArODEzLDcg QEAgYW5ub3RhdGUuaCBzaW0tcmVnbm8uaCBkaWN0aW9uYXJ5LmggZGZwLgog cmVtb3RlLWZpbGVpby5oIGkzODYtbGludXgtdGRlcC5oIHZheC10ZGVwLmgg b2JqYy1sYW5nLmggXAogc2VudGluZWwtZnJhbWUuaCBiY2FjaGUuaCBzeW1m aWxlLmggd2luZG93cy10ZGVwLmggbGludXgtdGRlcC5oIFwKIGdkYl91c2xl ZXAuaCBqaXQuaCB4bWwtc3lzY2FsbC5oIG1pY3JvYmxhemUtdGRlcC5oIFwK LXBzeW10YWIuaCBwc3ltcHJpdi5oIHByb2dzcGFjZS5oIGJmaW4tdGRlcC5o IGlhNjQtaHB1eC10ZGVwLmgKK3BzeW10YWIuaCBwc3ltcHJpdi5oIHByb2dz cGFjZS5oIGJmaW4tdGRlcC5oIGlhNjQtaHB1eC10ZGVwLmggcHJpbnRjbWQu aAogCiAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNkaXIg aW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4KIAotLS0gYS9heC1n ZGIuYworKysgYi9heC1nZGIuYwpAQCAtMjQ0NSw2ICsyNDQ1LDY1IEBAIGdl bl9ldmFsX2Zvcl9leHByIChDT1JFX0FERFIgc2NvcGUsIHN0cnUKICAgcmV0 dXJuIGF4OwogfQogCit2b2lkCitnZW5fcHJpbnRmX2V4cHJfY2FsbGJhY2sg KGNoYXIgKmZidWYsIGNoYXIgKipleHBwLCB2b2lkICpsb2Nfdiwgdm9pZCAq YWV4cHJfdikKK3sKKyAgc3RydWN0IGJwX2xvY2F0aW9uCSpsb2MgPSBsb2Nf djsKKyAgc3RydWN0IGFnZW50X2V4cHIJKmFleHByID0gYWV4cHJfdjsKKwor ICBpZiAoZXhwcCkKKyAgICB7CisgICAgICBzdHJ1Y3QgY2xlYW51cCAqb2xk X2NoYWluID0gTlVMTDsKKyAgICAgIHN0cnVjdCBleHByZXNzaW9uICpleHBy ID0gTlVMTDsKKyAgICAgIHVuaW9uIGV4cF9lbGVtZW50ICpwYzsKKyAgICAg IHN0cnVjdCBheHNfdmFsdWUgdmFsdWU7CisKKyAgICAgIGV4cHIgPSBwYXJz ZV9leHBfMSAoZXhwcCwgYmxvY2tfZm9yX3BjIChsb2MtPmFkZHJlc3MpLCAx KTsKKyAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJy ZW50X2NvbnRlbnRzLCAmZXhwcik7CisKKyAgICAgIHBjID0gZXhwci0+ZWx0 czsKKyAgICAgIHRyYWNlX2tsdWRnZSA9IDA7CisgICAgICB2YWx1ZS5vcHRp bWl6ZWRfb3V0ID0gMDsKKyAgICAgIGdlbl9leHByIChleHByLCAmcGMsIGFl eHByLCAmdmFsdWUpOworCisgICAgICBpZiAodmFsdWUub3B0aW1pemVkX291 dCkKKyAgICAgICAgZXJyb3IgKF8oInZhbHVlIGhhcyBiZWVuIG9wdGltaXpl ZCBvdXQiKSk7CisgICAgICBzd2l0Y2ggKHZhbHVlLmtpbmQpCisgICAgICAg IHsKKwljYXNlIGF4c19sdmFsdWVfbWVtb3J5OgorCSAgaWYgKFRZUEVfQ09E RSAodmFsdWUudHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZKQorCSAgICB7CisJ ICAgICAgaW50IGxlbmd0aCA9IFRZUEVfTEVOR1RIIChjaGVja190eXBlZGVm ICh2YWx1ZS50eXBlKSk7CisJICAgICAgc3dpdGNoIChsZW5ndGgpCisJCXsK KwkJY2FzZSA0OgorCQkgIGF4X3NpbXBsZSAoYWV4cHIsIGFvcF9yZWYzMik7 CisJCSAgYnJlYWs7CisJCWNhc2UgODoKKwkJICBheF9zaW1wbGUgKGFleHBy LCBhb3BfcmVmNjQpOworCQkgIGJyZWFrOworCQlkZWZhdWx0OgorCQkgIGVy cm9yIChfKCJTaXplIG9mIHZhbHVlIGlzIG5vdCBPSy4iKSk7CisJCSAgYnJl YWs7CisJCX0KKwkgICAgfQorCSAgYnJlYWs7CisJY2FzZSBheHNfbHZhbHVl X3JlZ2lzdGVyOgorCSAgYXhfcmVnIChhZXhwciwgdmFsdWUudS5yZWcpOwor CSAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgZG9fY2xlYW51cHMgKG9s ZF9jaGFpbik7CisgICAgfQorCisgIGF4X3NpbXBsZSAoYWV4cHIsIGFvcF9w cmludGYpOworICBpZiAoZXhwcCkKKyAgICBheF9zaW1wbGUgKGFleHByLCAx KTsKKyAgZWxzZQorICAgIGF4X3NpbXBsZSAoYWV4cHIsIDApOworICBheF9t ZW1jcHkgKGFleHByLCBmYnVmLCBzdHJsZW4gKGZidWYpICsgMSk7Cit9CisK IHN0YXRpYyB2b2lkCiBhZ2VudF9jb21tYW5kIChjaGFyICpleHAsIGludCBm cm9tX3R0eSkKIHsKLS0tIGEvYXgtZ2RiLmgKKysrIGIvYXgtZ2RiLmgKQEAg LTEwOCw2ICsxMDgsOCBAQCBleHRlcm4gc3RydWN0IGFnZW50X2V4cHIgKmdl bl90cmFjZV9mb3JfCiAKIGV4dGVybiBzdHJ1Y3QgYWdlbnRfZXhwciAqZ2Vu X2V2YWxfZm9yX2V4cHIgKENPUkVfQUREUiwgc3RydWN0IGV4cHJlc3Npb24g Kik7CiAKK2V4dGVybiB2b2lkIGdlbl9wcmludGZfZXhwcl9jYWxsYmFjayAo Y2hhciAqLCBjaGFyICoqLCB2b2lkICosIHZvaWQgKik7CisKIGV4dGVybiBp bnQgdHJhY2Vfa2x1ZGdlOwogCiAjZW5kaWYgLyogQVhfR0RCX0ggKi8KLS0t IGEvYXgtZ2VuZXJhbC5jCisrKyBiL2F4LWdlbmVyYWwuYwpAQCAtMzMwLDYg KzMzMCwxNCBAQCBheF90c3YgKHN0cnVjdCBhZ2VudF9leHByICp4LCBlbnVt IGFnZW50CiAgIHgtPmJ1Zlt4LT5sZW4gKyAyXSA9IChudW0pICYgMHhmZjsK ICAgeC0+bGVuICs9IDM7CiB9CisKK3ZvaWQKK2F4X21lbWNweSAoc3RydWN0 IGFnZW50X2V4cHIgKngsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pCit7 CisgIGdyb3dfZXhwciAoeCwgbik7CisgIG1lbWNweSAoeC0+YnVmICsgeC0+ bGVuLCBzcmMsIG4pOworICB4LT5sZW4gKz0gbjsKK30KIAwKIAogCkBAIC0z NjgsNiArMzc2LDcgQEAgYXhfcHJpbnQgKHN0cnVjdCB1aV9maWxlICpmLCBz dHJ1Y3QgYWdlbgogICBmb3IgKGkgPSAwOyBpIDwgeC0+bGVuOykKICAgICB7 CiAgICAgICBlbnVtIGFnZW50X29wIG9wID0geC0+YnVmW2ldOworICAgICAg aW50IG9wX3NpemU7CiAKICAgICAgIGlmIChvcCA+PSAoc2l6ZW9mIChhb3Bf bWFwKSAvIHNpemVvZiAoYW9wX21hcFswXSkpCiAJICB8fCAhYW9wX21hcFtv cF0ubmFtZSkKQEAgLTM3Niw3ICszODUsMTkgQEAgYXhfcHJpbnQgKHN0cnVj dCB1aV9maWxlICpmLCBzdHJ1Y3QgYWdlbgogCSAgaSsrOwogCSAgY29udGlu dWU7CiAJfQotICAgICAgaWYgKGkgKyAxICsgYW9wX21hcFtvcF0ub3Bfc2l6 ZSA+IHgtPmxlbikKKyAgICAgIGlmIChvcCA9PSBhb3BfcHJpbnRmKQorICAg ICAgICB7CisJICBpZiAoaSArIDIgPj0geC0+bGVuKQorCSAgICB7CisJICAg ICAgZnByaW50Zl9maWx0ZXJlZCAoZiwgXygiJTNkICA8YmFkIG9wY29kZSAl MDJ4PlxuIiksIGksIG9wKTsKKwkgICAgICBpKys7CisJICAgICAgY29udGlu dWU7CisJICAgIH0KKwkgIG9wX3NpemUgPSAxICsgc3RybGVuICh4LT5idWYg KyBpICsgMikgKyAxOworCX0KKyAgICAgIGVsc2UKKwlvcF9zaXplID0gYW9w X21hcFtvcF0ub3Bfc2l6ZTsKKyAgICAgIGlmIChpICsgMSArIG9wX3NpemUg PiB4LT5sZW4pCiAJewogCSAgZnByaW50Zl9maWx0ZXJlZCAoZiwgXygiJTNk ICA8aW5jb21wbGV0ZSBvcGNvZGUgJXM+XG4iKSwKIAkJCSAgICBpLCBhb3Bf bWFwW29wXS5uYW1lKTsKQEAgLTM4NCwxNSArNDA1LDE1IEBAIGF4X3ByaW50 IChzdHJ1Y3QgdWlfZmlsZSAqZiwgc3RydWN0IGFnZW4KIAl9CiAKICAgICAg IGZwcmludGZfZmlsdGVyZWQgKGYsICIlM2QgICVzIiwgaSwgYW9wX21hcFtv cF0ubmFtZSk7Ci0gICAgICBpZiAoYW9wX21hcFtvcF0ub3Bfc2l6ZSA+IDAp CisgICAgICBpZiAob3Bfc2l6ZSA+IDApCiAJewogCSAgZnB1dHNfZmlsdGVy ZWQgKCIgIiwgZik7CiAKIAkgIHByaW50X2xvbmdlc3QgKGYsICdkJywgMCwK LQkJCSByZWFkX2NvbnN0ICh4LCBpICsgMSwgYW9wX21hcFtvcF0ub3Bfc2l6 ZSkpOworCQkJIHJlYWRfY29uc3QgKHgsIGkgKyAxLCBvcF9zaXplKSk7CiAJ fQogICAgICAgZnByaW50Zl9maWx0ZXJlZCAoZiwgIlxuIik7Ci0gICAgICBp ICs9IDEgKyBhb3BfbWFwW29wXS5vcF9zaXplOworICAgICAgaSArPSAxICsg b3Bfc2l6ZTsKIAogICAgICAgaXNfZmxvYXQgPSAob3AgPT0gYW9wX2Zsb2F0 KTsKICAgICB9CkBAIC00NjAsNiArNDgxLDggQEAgYXhfcmVxcyAoc3RydWN0 IGFnZW50X2V4cHIgKmF4KQogICAvKiBQb2ludGVyIHRvIGEgZGVzY3JpcHRp b24gb2YgdGhlIHByZXNlbnQgb3AuICAqLwogICBzdHJ1Y3QgYW9wX21hcCAq b3A7CiAKKyAgaW50IG9wX3NpemUgPSAwLCBjb25zdW1lZCA9IDA7CisKICAg bWVtc2V0ICh0YXJnZXRzLCAwLCBheC0+bGVuICogc2l6ZW9mICh0YXJnZXRz WzBdKSk7CiAgIG1lbXNldCAoYm91bmRhcnksIDAsIGF4LT5sZW4gKiBzaXpl b2YgKGJvdW5kYXJ5WzBdKSk7CiAKQEAgLTQ2Nyw3ICs0OTAsNyBAQCBheF9y ZXFzIChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgpCiAgIGF4LT5mbGF3ID0gYWdl bnRfZmxhd19ub25lOwogICBheC0+bWF4X2RhdGFfc2l6ZSA9IDA7CiAKLSAg Zm9yIChpID0gMDsgaSA8IGF4LT5sZW47IGkgKz0gMSArIG9wLT5vcF9zaXpl KQorICBmb3IgKGkgPSAwOyBpIDwgYXgtPmxlbjsgaSArPSAxICsgb3Bfc2l6 ZSkKICAgICB7CiAgICAgICBpZiAoYXgtPmJ1ZltpXSA+IChzaXplb2YgKGFv cF9tYXApIC8gc2l6ZW9mIChhb3BfbWFwWzBdKSkpCiAJewpAQCAtNDgzLDcg KzUwNiwyMyBAQCBheF9yZXFzIChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgpCiAJ ICByZXR1cm47CiAJfQogCi0gICAgICBpZiAoaSArIDEgKyBvcC0+b3Bfc2l6 ZSA+IGF4LT5sZW4pCisgICAgICBpZiAoYXgtPmJ1ZltpXSA9PSBhb3BfcHJp bnRmKQorICAgICAgICB7CisJICBpZiAoaSArIDIgPj0gYXgtPmxlbikKKwkg ICAgeworCSAgICAgIGF4LT5mbGF3ID0gYWdlbnRfZmxhd19pbmNvbXBsZXRl X2luc3RydWN0aW9uOworCSAgICAgIHJldHVybjsKKwkgICAgfQorCSAgY29u c3VtZWQgPSBheC0+YnVmW2kgKyAxXTsKKwkgIG9wX3NpemUgPSAxICsgc3Ry bGVuIChheC0+YnVmICsgaSArIDIpICsgMTsKKwl9CisgICAgICBlbHNlCisg ICAgICAgIHsKKwkgIG9wX3NpemUgPSBvcC0+b3Bfc2l6ZTsKKwkgIGNvbnN1 bWVkID0gb3AtPmNvbnN1bWVkOworICAgICAgICB9CisKKyAgICAgIGlmIChp ICsgMSArIG9wX3NpemUgPiBheC0+bGVuKQogCXsKIAkgIGF4LT5mbGF3ID0g YWdlbnRfZmxhd19pbmNvbXBsZXRlX2luc3RydWN0aW9uOwogCSAgcmV0dXJu OwpAQCAtNTAxLDcgKzU0MCw3IEBAIGF4X3JlcXMgKHN0cnVjdCBhZ2VudF9l eHByICpheCkKICAgICAgIGJvdW5kYXJ5W2ldID0gMTsKICAgICAgIGhlaWdo dHNbaV0gPSBoZWlnaHQ7CiAKLSAgICAgIGhlaWdodCAtPSBvcC0+Y29uc3Vt ZWQ7CisgICAgICBoZWlnaHQgLT0gY29uc3VtZWQ7CiAgICAgICBpZiAoaGVp Z2h0IDwgYXgtPm1pbl9oZWlnaHQpCiAJYXgtPm1pbl9oZWlnaHQgPSBoZWln aHQ7CiAgICAgICBoZWlnaHQgKz0gb3AtPnByb2R1Y2VkOwotLS0gYS9heC5o CisrKyBiL2F4LmgKQEAgLTIxMyw2ICsyMTMsOCBAQCBleHRlcm4gdm9pZCBh eF9yZWdfbWFzayAoc3RydWN0IGFnZW50X2V4CiAKIC8qIEFzc2VtYmxlIGNv ZGUgdG8gb3BlcmF0ZSBvbiBhIHRyYWNlIHN0YXRlIHZhcmlhYmxlLiAgKi8K IGV4dGVybiB2b2lkIGF4X3RzdiAoc3RydWN0IGFnZW50X2V4cHIgKmV4cHIs IGVudW0gYWdlbnRfb3Agb3AsIGludCBudW0pOworCitleHRlcm4gdm9pZCBh eF9tZW1jcHkgKHN0cnVjdCBhZ2VudF9leHByICp4LCBjb25zdCB2b2lkICpz cmMsIHNpemVfdCBuKTsKIAwKIAogLyogRnVuY3Rpb25zIGZvciBwcmludGlu ZyBvdXQgZXhwcmVzc2lvbnMsIGFuZCBvdGhlcndpc2UgZGVidWdnaW5nCi0t LSBhL2NvbW1vbi9heC5kZWYKKysrIGIvY29tbW9uL2F4LmRlZgpAQCAtODYs MTIgKzg2LDggQEAgREVGT1AgKHN3YXAsIDAsIDAsIDIsIDIsIDB4MmIpCiBE RUZPUCAoZ2V0diwgMiwgMCwgMCwgMSwgMHgyYykKIERFRk9QIChzZXR2LCAy LCAwLCAwLCAxLCAweDJkKQogREVGT1AgKHRyYWNldiwgMiwgMCwgMCwgMSwg MHgyZSkKLS8qIFdlIG5lZWQgc29tZXRoaW5nIGhlcmUganVzdCB0byBtYWtl IHRoZSB0YWJsZXMgY29tZSBvdXQgb2suICAqLwogREVGT1AgKGludmFsaWQs IDAsIDAsIDAsIDAsIDB4MmYpCiBERUZPUCAodHJhY2UxNiwgMiwgMCwgMSwg MSwgMHgzMCkKLS8qIFdlIG5lZWQgc29tZXRoaW5nIGhlcmUganVzdCB0byBt YWtlIHRoZSB0YWJsZXMgY29tZSBvdXQgb2suICAqLwotREVGT1AgKGludmFs aWQyLCAwLCAwLCAwLCAwLCAweDJmKQotLyogVGhlICJjb25zdW1lZCIgbnVt YmVyIGZvciBwaWNrIGlzIHdyb25nLCBidXQgdGhlcmUncyBubyB3YXkgdG8K LSAgIGV4cHJlc3MgdGhlIHJpZ2h0IHRoaW5nLiAgKi8KK0RFRk9QIChwcmlu dGYsIDAsIDAsIDAsIDAsIDB4MzEpCiBERUZPUCAocGljaywgMSwgMCwgMCwg MSwgMHgzMikKIERFRk9QIChyb3QsIDAsIDAsIDMsIDMsIDB4MzMpCi0tLSBh L3ByaW50Y21kLmMKKysrIGIvcHJpbnRjbWQuYwpAQCAtNDksNiArNDksNyBA QAogI2luY2x1ZGUgInBhcnNlci1kZWZzLmgiCiAjaW5jbHVkZSAiY2hhcnNl dC5oIgogI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKyNpbmNsdWRlICJwcmlu dGNtZC5oIgogCiAjaWZkZWYgVFVJCiAjaW5jbHVkZSAidHVpL3R1aS5oIgkJ LyogRm9yIHR1aV9hY3RpdmUgZXQgYWwuICAgKi8KQEAgLTE5NjAsMTAgKzE5 NjEsOSBAQCBwcmludF92YXJpYWJsZV9hbmRfdmFsdWUgKGNvbnN0IGNoYXIg Km5hCiAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7CiB9CiAK LS8qIHByaW50ZiAicHJpbnRmIGZvcm1hdCBzdHJpbmciIEFSRyB0byBTVFJF QU0uICAqLwotCi1zdGF0aWMgdm9pZAotdWlfcHJpbnRmIChjaGFyICphcmcs IHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCit2b2lkCitzdHJpbmdfcHJpbnRm IChjaGFyICphcmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHByaW50Zl9j YWxsYmFjayBjYWxsYmFjaywKKwkgICAgICAgdm9pZCAqbG9jX3YsIHZvaWQg KmFleHByX3YpCiB7CiAgIGNoYXIgKmYgPSBOVUxMOwogICBjaGFyICpzID0g YXJnOwpAQCAtMTk3NCw2ICsxOTc0LDggQEAgdWlfcHJpbnRmIChjaGFyICph cmcsIHN0cnVjdCB1aV9maWxlICpzdAogICBpbnQgbmFyZ3MgPSAwOwogICBp bnQgYWxsb2NhdGVkX2FyZ3MgPSAyMDsKICAgc3RydWN0IGNsZWFudXAgKm9s ZF9jbGVhbnVwczsKKyAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2MgPSBsb2Nf djsKKyAgc3RydWN0IGFnZW50X2V4cHIgKmFleHByID0gYWV4cHJfdjsKIAog ICB2YWxfYXJncyA9IHhtYWxsb2MgKGFsbG9jYXRlZF9hcmdzICogc2l6ZW9m IChzdHJ1Y3QgdmFsdWUgKikpOwogICBvbGRfY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJnZhbF9hcmdzKTsKQEAg LTIyOTYsMjYgKzIyOTgsNDIgQEAgdWlfcHJpbnRmIChjaGFyICphcmcsIHN0 cnVjdCB1aV9maWxlICpzdAogICAgIC8qIE5vdywgcGFyc2UgYWxsIGFyZ3Vt ZW50cyBhbmQgZXZhbHVhdGUgdGhlbS4KICAgICAgICBTdG9yZSB0aGUgVkFM VUVzIGluIFZBTF9BUkdTLiAgKi8KIAorICAgIGlmIChjYWxsYmFjaykKKyAg ICAgIGN1cnJlbnRfc3Vic3RyaW5nID0gc3Vic3RyaW5nczsKICAgICB3aGls ZSAoKnMgIT0gJ1wwJykKICAgICAgIHsKIAljaGFyICpzMTsKIAorCXMxID0g czsKIAlpZiAobmFyZ3MgPT0gYWxsb2NhdGVkX2FyZ3MpCiAJICB2YWxfYXJn cyA9IChzdHJ1Y3QgdmFsdWUgKiopIHhyZWFsbG9jICgoY2hhciAqKSB2YWxf YXJncywKIAkJCQkJCSAoYWxsb2NhdGVkX2FyZ3MgKj0gMikKIAkJCQkJCSAq IHNpemVvZiAoc3RydWN0IHZhbHVlICopKTsKLQlzMSA9IHM7Ci0JdmFsX2Fy Z3NbbmFyZ3NdID0gcGFyc2VfdG9fY29tbWFfYW5kX2V2YWwgKCZzMSk7CisJ aWYgKGNhbGxiYWNrKQorCSAgeworCSAgICBpZiAobmFyZ3MgPj0gbmFyZ3Nf d2FudGVkKQorCSAgICAgIGVycm9yIChfKCJXcm9uZyBudW1iZXIgb2YgYXJn dW1lbnRzIGZvciBzcGVjaWZpZWQgIgorCQkgICAgICAgImZvcm1hdC1zdHJp bmciKSk7CisJICAgIGNhbGxiYWNrIChjdXJyZW50X3N1YnN0cmluZywgJnMx LCBsb2MsIGFleHByKTsKKwkgICAgY3VycmVudF9zdWJzdHJpbmcgKz0gc3Ry bGVuIChjdXJyZW50X3N1YnN0cmluZykgKyAxOworCSAgfQorCWVsc2UKKwkg IHZhbF9hcmdzW25hcmdzXSA9IHBhcnNlX3RvX2NvbW1hX2FuZF9ldmFsICgm czEpOwogCiAJbmFyZ3MrKzsKIAlzID0gczE7CiAJaWYgKCpzID09ICcsJykK IAkgIHMrKzsKICAgICAgIH0KKyAgICBpZiAoY2FsbGJhY2spCisgICAgICBj YWxsYmFjayAobGFzdF9hcmcsIE5VTEwsIGxvYywgYWV4cHIpOwogCiAgICAg aWYgKG5hcmdzICE9IG5hcmdzX3dhbnRlZCkKICAgICAgIGVycm9yIChfKCJX cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzcGVjaWZpZWQgZm9ybWF0 LXN0cmluZyIpKTsKIAorICAgIGlmICghc3RyZWFtKQorICAgICAgZ290byBh ZnRlcl9wcmludDsKKwogICAgIC8qIE5vdyBhY3R1YWxseSBwcmludCB0aGVt LiAgKi8KICAgICBjdXJyZW50X3N1YnN0cmluZyA9IHN1YnN0cmluZ3M7CiAg ICAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspCkBAIC0yNjcwLDE1ICsy Njg4LDE3IEBAIHVpX3ByaW50ZiAoY2hhciAqYXJnLCBzdHJ1Y3QgdWlfZmls ZSAqc3QKICAgICAgICBieSBkZWZhdWx0LCB3aGljaCB3aWxsIHdhcm4gaGVy ZSBpZiB0aGVyZSBpcyBubyBhcmd1bWVudC4gICovCiAgICAgZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCBsYXN0X2FyZywgMCk7CiAgIH0KKworYWZ0ZXJf cHJpbnQ6CiAgIGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpOwogfQogCiAv KiBJbXBsZW1lbnQgdGhlICJwcmludGYiIGNvbW1hbmQuICAqLwogCi1zdGF0 aWMgdm9pZAordm9pZAogcHJpbnRmX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50 IGZyb21fdHR5KQogewotICB1aV9wcmludGYgKGFyZywgZ2RiX3N0ZG91dCk7 CisgIHN0cmluZ19wcmludGYgKGFyZywgZ2RiX3N0ZG91dCwgTlVMTCwgTlVM TCwgTlVMTCk7CiB9CiAKIC8qIEltcGxlbWVudCB0aGUgImV2YWwiIGNvbW1h bmQuICAqLwpAQCAtMjY5MCw3ICsyNzEwLDcgQEAgZXZhbF9jb21tYW5kIChj aGFyICphcmcsIGludCBmcm9tX3R0eSkKICAgc3RydWN0IGNsZWFudXAgKmNs ZWFudXBzID0gbWFrZV9jbGVhbnVwX3VpX2ZpbGVfZGVsZXRlICh1aV9vdXQp OwogICBjaGFyICpleHBhbmRlZDsKIAotICB1aV9wcmludGYgKGFyZywgdWlf b3V0KTsKKyAgc3RyaW5nX3ByaW50ZiAoYXJnLCB1aV9vdXQsIE5VTEwsIE5V TEwsIE5VTEwpOwogCiAgIGV4cGFuZGVkID0gdWlfZmlsZV94c3RyZHVwICh1 aV9vdXQsIE5VTEwpOwogICBtYWtlX2NsZWFudXAgKHhmcmVlLCBleHBhbmRl ZCk7Ci0tLSAvZGV2L251bGwKKysrIGIvcHJpbnRjbWQuaApAQCAtMCwwICsx LDMwIEBACisvKiBQcmludCB2YWx1ZXMgZm9yIEdOVSBkZWJ1Z2dlciBHREIu CisKKyAgIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgor CisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaWZuZGVmIF9QUklO VENNRF9IXworI2RlZmluZSBfUFJJTlRDTURfSF8KKworZXh0ZXJuIHZvaWQg cHJpbnRmX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KTsKK3R5 cGVkZWYgdm9pZCAocHJpbnRmX2NhbGxiYWNrKSAoY2hhciAqZmJ1ZiwgY2hh ciAqKmV4cHAsIHZvaWQgKmxvY192LAorCQkJCXZvaWQgKmFleHByX3YpOwor ZXh0ZXJuIHZvaWQgc3RyaW5nX3ByaW50ZiAoY2hhciAqYXJnLCBzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLAorCQkJICAgcHJpbnRmX2NhbGxiYWNrIGNhbGxi YWNrLCB2b2lkICpsb2NfdiwKKwkJCSAgIHZvaWQgKmFleHByX3YpOworCisj ZW5kaWYgLyogX1BSSU5UQ01EX0hfICovCi0tLSBhL3RyYWNlcG9pbnQuYwor KysgYi90cmFjZXBvaW50LmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRl ICJheC5oIgogI2luY2x1ZGUgImF4LWdkYi5oIgogI2luY2x1ZGUgIm1lbXJh bmdlLmgiCisjaW5jbHVkZSAicHJpbnRjbWQuaCIKIAogLyogcmVhZGxpbmUg aW5jbHVkZSBmaWxlcyAqLwogI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5l LmgiCkBAIC03NjMsNiArNzY0LDI4IEBAIHZhbGlkYXRlX2FjdGlvbmxpbmUg KGNoYXIgKipsaW5lLCBzdHJ1Y3QKIAllcnJvciAoXygid2hpbGUtc3RlcHBp bmcgc3RlcCBjb3VudCBgJXMnIGlzIG1hbGZvcm1lZC4iKSwgKmxpbmUpOwog ICAgIH0KIAorICBlbHNlIGlmIChjbWRfY2Z1bmNfZXEgKGMsIHByaW50Zl9j b21tYW5kKSkKKyAgICB7CisgICAgICBjaGFyIGZidWZbMTAxXTsKKworICAg ICAgZm9yIChsb2MgPSB0LT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQor CXsKKwkgIGludCBuYXJnczsKKwkgIGFleHByID0gbmV3X2FnZW50X2V4cHIg KGxvYy0+Z2RiYXJjaCwgbG9jLT5hZGRyZXNzKTsKKwkgIG9sZF9jaGFpbiA9 IG1ha2VfY2xlYW51cF9mcmVlX2FnZW50X2V4cHIgKGFleHByKTsKKwkgIHN0 cmluZ19wcmludGYgKHAsIE5VTEwsIGdlbl9wcmludGZfZXhwcl9jYWxsYmFj aywKKwkJCSBsb2MsIGFleHByKTsKKwkgIGF4X3NpbXBsZSAoYWV4cHIsIGFv cF9lbmQpOworCSAgLyogVGhlIGFnZW50IGV4cHIgaW5jbHVkZSBleHByIGZv ciBhcmd1bWVudHMsIGZvcm1hdCBzdHJpbmcsIDEgYnl0ZQorCSAgICAgZm9y IGFvcF9wcmludGYsIDEgYnl0ZSBmb3IgdGhlIG51bWJlciBvZiBhcmd1bWVu dHMsIDEgYnl0ZSBmb3IKKwkgICAgIHNpemUgb2YgZm9ybWF0IHN0cmluZywg MSBieXRlIGZvciBibGFuayBhZnRlciBmb3JtYXQgc3RyaW5nCisJICAgICBh bmQgMSBieXRlIGZvciBhb3BfZW5kLiAgKi8KKwkgIGlmIChhZXhwci0+bGVu ID4gTUFYX0FHRU5UX0VYUFJfTEVOKQorCSAgICBlcnJvciAoXygiRXhwcmVz c2lvbiBpcyB0b28gY29tcGxpY2F0ZWQuIikpOworCSAgZG9fY2xlYW51cHMg KG9sZF9jaGFpbik7CisJfQorICAgIH0KKwogICBlbHNlIGlmIChjbWRfY2Z1 bmNfZXEgKGMsIGVuZF9hY3Rpb25zX3BzZXVkb2NvbW1hbmQpKQogICAgIDsK IApAQCAtMTQ3NCw2ICsxNDk3LDIyIEBAIGVuY29kZV9hY3Rpb25zXzEgKHN0 cnVjdCBjb21tYW5kX2xpbmUgKmEKIAkgIGVuY29kZV9hY3Rpb25zXzEgKGFj dGlvbi0+Ym9keV9saXN0WzBdLCB0LCB0bG9jLCBmcmFtZV9yZWcsCiAJCQkg ICAgZnJhbWVfb2Zmc2V0LCBzdGVwcGluZ19saXN0LCBOVUxMKTsKIAl9Cisg ICAgICBlbHNlIGlmIChjbWRfY2Z1bmNfZXEgKGNtZCwgcHJpbnRmX2NvbW1h bmQpKQorCXsKKyAgICAgICAgICBjaGFyIGZidWZbMTAxXTsKKwkgIHN0cnVj dCBjbGVhbnVwICpvbGRfY2hhaW4gPSBOVUxMOworCisJICBhZXhwciA9IG5l d19hZ2VudF9leHByICh0bG9jLT5nZGJhcmNoLCB0bG9jLT5hZGRyZXNzKTsK KwkgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9mcmVlX2FnZW50X2V4cHIg KGFleHByKTsKKwkgIHN0cmluZ19wcmludGYgKGFjdGlvbl9leHAsIE5VTEws IGdlbl9wcmludGZfZXhwcl9jYWxsYmFjaywKKwkJCSB0bG9jLCBhZXhwcik7 CisJICBheF9zaW1wbGUgKGFleHByLCBhb3BfZW5kKTsKKworCSAgYXhfcmVx cyAoYWV4cHIpOworCSAgcmVwb3J0X2FnZW50X3JlcXNfZXJyb3JzIChhZXhw cik7CisJICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOworCSAgYWRk X2FleHByIChjb2xsZWN0LCBhZXhwcik7CisJfQogICAgICAgZWxzZQogCWVy cm9yIChfKCJJbnZhbGlkIHRyYWNlcG9pbnQgY29tbWFuZCAnJXMnIiksIGFj dGlvbi0+bGluZSk7CiAgICAgfQkJCQkvKiBmb3IgKi8K --00151750ddae28132c049cc67d94--