From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9880 invoked by alias); 17 Feb 2011 08:15:58 -0000 Received: (qmail 9869 invoked by uid 22791); 17 Feb 2011 08:15:56 -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; Thu, 17 Feb 2011 08:15:49 +0000 Received: by yxl31 with SMTP id 31so1097148yxl.0 for ; Thu, 17 Feb 2011 00:15:47 -0800 (PST) Received: by 10.146.86.12 with SMTP id j12mr2364651yab.27.1297930546036; Thu, 17 Feb 2011 00:15:46 -0800 (PST) MIME-Version: 1.0 Received: by 10.147.114.12 with HTTP; Thu, 17 Feb 2011 00:15:25 -0800 (PST) In-Reply-To: References: <4D24D9DD.8090104@codesourcery.com> From: Hui Zhu Date: Thu, 17 Feb 2011 08:16:00 -0000 Message-ID: Subject: Re: [PATCH] tracepoint: add new trace command "printf"[0] gdb To: Tom Tromey Cc: gdb-patches ml , Stan Shebs Content-Type: multipart/mixed; boundary=20cf3054a67923c302049c760118 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/msg00414.txt.bz2 --20cf3054a67923c302049c760118 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3688 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_loca= tion *loc, >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0struct agent_e= xpr *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, that > 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_e= xpr *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 strin= g, 1 byte >>> + =A0 =A0 =A0 * for aop_printf, 1 byte for the number of arguments, 1 b= yte for >>> + =A0 =A0 =A0 * size of format string, 1 byte for blank after format st= ring >>> + =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. And I have send the patch for doc in prev mail. Best, Hui 2011-02-17 Hui Zhu * Makefile.in (HFILES_NO_SRCDIR): Add printcmd.h. * ax-gdb.c (gen_printf_expr_callback): New function. * ax-general.c (ax_memcpy): New function. (aop_map): Add new entry for "printf". (ax_print): Handle "printf". (ax_reqs): Ditto. * ax.h (agent_op): Add aop_printf. (ax_memcpy): Forward declare. * printcmd.c (printf_callback): New typedef. (string_printf): New function from ui_printf. (ui_printf): Call string_printf. (printf_command): Remove static. * 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. --20cf3054a67923c302049c760118 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_gk9eay2r0 Content-length: 16910 LS0tCiBNYWtlZmlsZS5pbiAgfCAgICAyICstCiBheC1nZGIuYyAgICAgfCAg IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBheC1nZGIuaCAgICAgfCAgICAyICsrCiBh eC1nZW5lcmFsLmMgfCAgIDU0ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQogYXguaCAgICAgICAgIHwg ICAgMyArKysKIHByaW50Y21kLmMgICB8ICAgMzkgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tCiBwcmludGNtZC5oICAgfCAgIDMw ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdHJhY2Vwb2ludC5j IHwgICAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIDggZmlsZXMgY2hhbmdlZCwgMjEyIGluc2VydGlvbnMoKyksIDE2IGRl bGV0aW9ucygtKQoKLS0tIGEvTWFrZWZpbGUuaW4KKysrIGIvTWFrZWZpbGUu aW4KQEAgLTgxMyw3ICs4MTMsNyBAQCBhbm5vdGF0ZS5oIHNpbS1yZWduby5o IGRpY3Rpb25hcnkuaCBkZnAuCiByZW1vdGUtZmlsZWlvLmggaTM4Ni1saW51 eC10ZGVwLmggdmF4LXRkZXAuaCBvYmpjLWxhbmcuaCBcCiBzZW50aW5lbC1m cmFtZS5oIGJjYWNoZS5oIHN5bWZpbGUuaCB3aW5kb3dzLXRkZXAuaCBsaW51 eC10ZGVwLmggXAogZ2RiX3VzbGVlcC5oIGppdC5oIHhtbC1zeXNjYWxsLmgg YWRhLW9wZXJhdG9yLmluYyBtaWNyb2JsYXplLXRkZXAuaCBcCi1wc3ltdGFi LmggcHN5bXByaXYuaCBwcm9nc3BhY2UuaCBiZmluLXRkZXAuaCBpYTY0LWhw dXgtdGRlcC5oCitwc3ltdGFiLmggcHN5bXByaXYuaCBwcm9nc3BhY2UuaCBi ZmluLXRkZXAuaCBpYTY0LWhwdXgtdGRlcC5oIHByaW50Y21kLmgKIAogIyBI ZWFkZXIgZmlsZXMgdGhhdCBhbHJlYWR5IGhhdmUgc3JjZGlyIGluIHRoZW0s IG9yIHdoaWNoIGFyZSBpbiBvYmpkaXIuCiAKLS0tIGEvYXgtZ2RiLmMKKysr IGIvYXgtZ2RiLmMKQEAgLTI0NDUsNiArMjQ0NSw2NSBAQCBnZW5fZXZhbF9m b3JfZXhwciAoQ09SRV9BRERSIHNjb3BlLCBzdHJ1CiAgIHJldHVybiBheDsK IH0KIAordm9pZAorZ2VuX3ByaW50Zl9leHByX2NhbGxiYWNrIChjaGFyICpm YnVmLCBjaGFyICoqZXhwcCwgdm9pZCAqbG9jX3YsIHZvaWQgKmFleHByX3Yp Cit7CisgIHN0cnVjdCBicF9sb2NhdGlvbgkqbG9jID0gbG9jX3Y7CisgIHN0 cnVjdCBhZ2VudF9leHByCSphZXhwciA9IGFleHByX3Y7CisKKyAgaWYgKGV4 cHApCisgICAgeworICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9 IE5VTEw7CisgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwciA9IE5VTEw7 CisgICAgICB1bmlvbiBleHBfZWxlbWVudCAqcGM7CisgICAgICBzdHJ1Y3Qg YXhzX3ZhbHVlIHZhbHVlOworCisgICAgICBleHByID0gcGFyc2VfZXhwXzEg KGV4cHAsIGJsb2NrX2Zvcl9wYyAobG9jLT5hZGRyZXNzKSwgMSk7CisgICAg ICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250 ZW50cywgJmV4cHIpOworCisgICAgICBwYyA9IGV4cHItPmVsdHM7CisgICAg ICB0cmFjZV9rbHVkZ2UgPSAwOworICAgICAgdmFsdWUub3B0aW1pemVkX291 dCA9IDA7CisgICAgICBnZW5fZXhwciAoZXhwciwgJnBjLCBhZXhwciwgJnZh bHVlKTsKKworICAgICAgaWYgKHZhbHVlLm9wdGltaXplZF9vdXQpCisgICAg ICAgIGVycm9yIChfKCJ2YWx1ZSBoYXMgYmVlbiBvcHRpbWl6ZWQgb3V0Iikp OworICAgICAgc3dpdGNoICh2YWx1ZS5raW5kKQorICAgICAgICB7CisJY2Fz ZSBheHNfbHZhbHVlX21lbW9yeToKKwkgIGlmIChUWVBFX0NPREUgKHZhbHVl LnR5cGUpICE9IFRZUEVfQ09ERV9BUlJBWSkKKwkgICAgeworCSAgICAgIGlu dCBsZW5ndGggPSBUWVBFX0xFTkdUSCAoY2hlY2tfdHlwZWRlZiAodmFsdWUu dHlwZSkpOworCSAgICAgIHN3aXRjaCAobGVuZ3RoKQorCQl7CisJCWNhc2Ug NDoKKwkJICBheF9zaW1wbGUgKGFleHByLCBhb3BfcmVmMzIpOworCQkgIGJy ZWFrOworCQljYXNlIDg6CisJCSAgYXhfc2ltcGxlIChhZXhwciwgYW9wX3Jl ZjY0KTsKKwkJICBicmVhazsKKwkJZGVmYXVsdDoKKwkJICBlcnJvciAoXygi U2l6ZSBvZiB2YWx1ZSBpcyBub3QgT0suIikpOworCQkgIGJyZWFrOworCQl9 CisJICAgIH0KKwkgIGJyZWFrOworCWNhc2UgYXhzX2x2YWx1ZV9yZWdpc3Rl cjoKKwkgIGF4X3JlZyAoYWV4cHIsIHZhbHVlLnUucmVnKTsKKwkgIGJyZWFr OworICAgICAgICB9CisKKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4p OworICAgIH0KKworICBheF9zaW1wbGUgKGFleHByLCBhb3BfcHJpbnRmKTsK KyAgaWYgKGV4cHApCisgICAgYXhfc2ltcGxlIChhZXhwciwgMSk7CisgIGVs c2UKKyAgICBheF9zaW1wbGUgKGFleHByLCAwKTsKKyAgYXhfbWVtY3B5IChh ZXhwciwgZmJ1Ziwgc3RybGVuIChmYnVmKSArIDEpOworfQorCiBzdGF0aWMg dm9pZAogYWdlbnRfY29tbWFuZCAoY2hhciAqZXhwLCBpbnQgZnJvbV90dHkp CiB7Ci0tLSBhL2F4LWdkYi5oCisrKyBiL2F4LWdkYi5oCkBAIC0xMDgsNiAr MTA4LDggQEAgZXh0ZXJuIHN0cnVjdCBhZ2VudF9leHByICpnZW5fdHJhY2Vf Zm9yXwogCiBleHRlcm4gc3RydWN0IGFnZW50X2V4cHIgKmdlbl9ldmFsX2Zv cl9leHByIChDT1JFX0FERFIsIHN0cnVjdCBleHByZXNzaW9uICopOwogCitl eHRlcm4gdm9pZCBnZW5fcHJpbnRmX2V4cHJfY2FsbGJhY2sgKGNoYXIgKiwg Y2hhciAqKiwgdm9pZCAqLCB2b2lkICopOworCiBleHRlcm4gaW50IHRyYWNl X2tsdWRnZTsKIAogI2VuZGlmIC8qIEFYX0dEQl9IICovCi0tLSBhL2F4LWdl bmVyYWwuYworKysgYi9heC1nZW5lcmFsLmMKQEAgLTMxOSw2ICszMTksMTQg QEAgYXhfdHN2IChzdHJ1Y3QgYWdlbnRfZXhwciAqeCwgZW51bSBhZ2VudAog ICB4LT5idWZbeC0+bGVuICsgMl0gPSAobnVtKSAmIDB4ZmY7CiAgIHgtPmxl biArPSAzOwogfQorCit2b2lkCitheF9tZW1jcHkgKHN0cnVjdCBhZ2VudF9l eHByICp4LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKQoreworICBncm93 X2V4cHIgKHgsIG4pOworICBtZW1jcHkgKHgtPmJ1ZiArIHgtPmxlbiwgc3Jj LCBuKTsKKyAgeC0+bGVuICs9IG47Cit9CiAMCiAKIApAQCAtMzc2LDYgKzM4 NCw3IEBAIHN0cnVjdCBhb3BfbWFwIGFvcF9tYXBbXSA9CiAgIHsidHJhY2V2 IiwgMiwgMCwgMCwgMX0sCS8qIDB4MmUgKi8KICAgezAsIDAsIDAsIDAsIDB9 LAkJLyogMHgyZiAqLwogICB7InRyYWNlMTYiLCAyLCAwLCAxLCAxfSwJLyog MHgzMCAqLworICB7InByaW50ZiIsIDAsIDAsIDAsIDB9LAkvKiAweDMxICov CiB9OwogCiAKQEAgLTQwMSw2ICs0MTAsNyBAQCBheF9wcmludCAoc3RydWN0 IHVpX2ZpbGUgKmYsIHN0cnVjdCBhZ2VuCiAgIGZvciAoaSA9IDA7IGkgPCB4 LT5sZW47KQogICAgIHsKICAgICAgIGVudW0gYWdlbnRfb3Agb3AgPSB4LT5i dWZbaV07CisgICAgICBpbnQgb3Bfc2l6ZTsKIAogICAgICAgaWYgKG9wID49 IChzaXplb2YgKGFvcF9tYXApIC8gc2l6ZW9mIChhb3BfbWFwWzBdKSkKIAkg IHx8ICFhb3BfbWFwW29wXS5uYW1lKQpAQCAtNDA5LDcgKzQxOSwxOSBAQCBh eF9wcmludCAoc3RydWN0IHVpX2ZpbGUgKmYsIHN0cnVjdCBhZ2VuCiAJICBp Kys7CiAJICBjb250aW51ZTsKIAl9Ci0gICAgICBpZiAoaSArIDEgKyBhb3Bf bWFwW29wXS5vcF9zaXplID4geC0+bGVuKQorICAgICAgaWYgKG9wID09IGFv cF9wcmludGYpCisgICAgICAgIHsKKwkgIGlmIChpICsgMiA+PSB4LT5sZW4p CisJICAgIHsKKwkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChmLCBfKCIlM2Qg IDxiYWQgb3Bjb2RlICUwMng+XG4iKSwgaSwgb3ApOworCSAgICAgIGkrKzsK KwkgICAgICBjb250aW51ZTsKKwkgICAgfQorCSAgb3Bfc2l6ZSA9IDEgKyBz dHJsZW4gKHgtPmJ1ZiArIGkgKyAyKSArIDE7CisJfQorICAgICAgZWxzZQor CW9wX3NpemUgPSBhb3BfbWFwW29wXS5vcF9zaXplOworICAgICAgaWYgKGkg KyAxICsgb3Bfc2l6ZSA+IHgtPmxlbikKIAl7CiAJICBmcHJpbnRmX2ZpbHRl cmVkIChmLCBfKCIlM2QgIDxpbmNvbXBsZXRlIG9wY29kZSAlcz5cbiIpLAog CQkJICAgIGksIGFvcF9tYXBbb3BdLm5hbWUpOwpAQCAtNDE3LDE1ICs0Mzks MTUgQEAgYXhfcHJpbnQgKHN0cnVjdCB1aV9maWxlICpmLCBzdHJ1Y3QgYWdl bgogCX0KIAogICAgICAgZnByaW50Zl9maWx0ZXJlZCAoZiwgIiUzZCAgJXMi LCBpLCBhb3BfbWFwW29wXS5uYW1lKTsKLSAgICAgIGlmIChhb3BfbWFwW29w XS5vcF9zaXplID4gMCkKKyAgICAgIGlmIChvcF9zaXplID4gMCkKIAl7CiAJ ICBmcHV0c19maWx0ZXJlZCAoIiAiLCBmKTsKIAogCSAgcHJpbnRfbG9uZ2Vz dCAoZiwgJ2QnLCAwLAotCQkJIHJlYWRfY29uc3QgKHgsIGkgKyAxLCBhb3Bf bWFwW29wXS5vcF9zaXplKSk7CisJCQkgcmVhZF9jb25zdCAoeCwgaSArIDEs IG9wX3NpemUpKTsKIAl9CiAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChmLCAi XG4iKTsKLSAgICAgIGkgKz0gMSArIGFvcF9tYXBbb3BdLm9wX3NpemU7Cisg ICAgICBpICs9IDEgKyBvcF9zaXplOwogCiAgICAgICBpc19mbG9hdCA9IChv cCA9PSBhb3BfZmxvYXQpOwogICAgIH0KQEAgLTQ5Myw2ICs1MTUsOCBAQCBh eF9yZXFzIChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgpCiAgIC8qIFBvaW50ZXIg dG8gYSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJlc2VudCBvcC4gICovCiAgIHN0 cnVjdCBhb3BfbWFwICpvcDsKIAorICBpbnQgb3Bfc2l6ZSA9IDAsIGNvbnN1 bWVkID0gMDsKKwogICBtZW1zZXQgKHRhcmdldHMsIDAsIGF4LT5sZW4gKiBz aXplb2YgKHRhcmdldHNbMF0pKTsKICAgbWVtc2V0IChib3VuZGFyeSwgMCwg YXgtPmxlbiAqIHNpemVvZiAoYm91bmRhcnlbMF0pKTsKIApAQCAtNTAwLDcg KzUyNCw3IEBAIGF4X3JlcXMgKHN0cnVjdCBhZ2VudF9leHByICpheCkKICAg YXgtPmZsYXcgPSBhZ2VudF9mbGF3X25vbmU7CiAgIGF4LT5tYXhfZGF0YV9z aXplID0gMDsKIAotICBmb3IgKGkgPSAwOyBpIDwgYXgtPmxlbjsgaSArPSAx ICsgb3AtPm9wX3NpemUpCisgIGZvciAoaSA9IDA7IGkgPCBheC0+bGVuOyBp ICs9IDEgKyBvcF9zaXplKQogICAgIHsKICAgICAgIGlmIChheC0+YnVmW2ld ID4gKHNpemVvZiAoYW9wX21hcCkgLyBzaXplb2YgKGFvcF9tYXBbMF0pKSkK IAl7CkBAIC01MTYsNyArNTQwLDIzIEBAIGF4X3JlcXMgKHN0cnVjdCBhZ2Vu dF9leHByICpheCkKIAkgIHJldHVybjsKIAl9CiAKLSAgICAgIGlmIChpICsg MSArIG9wLT5vcF9zaXplID4gYXgtPmxlbikKKyAgICAgIGlmIChheC0+YnVm W2ldID09IGFvcF9wcmludGYpCisgICAgICAgIHsKKwkgIGlmIChpICsgMiA+ PSBheC0+bGVuKQorCSAgICB7CisJICAgICAgYXgtPmZsYXcgPSBhZ2VudF9m bGF3X2luY29tcGxldGVfaW5zdHJ1Y3Rpb247CisJICAgICAgcmV0dXJuOwor CSAgICB9CisJICBjb25zdW1lZCA9IGF4LT5idWZbaSArIDFdOworCSAgb3Bf c2l6ZSA9IDEgKyBzdHJsZW4gKGF4LT5idWYgKyBpICsgMikgKyAxOworCX0K KyAgICAgIGVsc2UKKyAgICAgICAgeworCSAgb3Bfc2l6ZSA9IG9wLT5vcF9z aXplOworCSAgY29uc3VtZWQgPSBvcC0+Y29uc3VtZWQ7CisgICAgICAgIH0K KworICAgICAgaWYgKGkgKyAxICsgb3Bfc2l6ZSA+IGF4LT5sZW4pCiAJewog CSAgYXgtPmZsYXcgPSBhZ2VudF9mbGF3X2luY29tcGxldGVfaW5zdHJ1Y3Rp b247CiAJICByZXR1cm47CkBAIC01MzQsNyArNTc0LDcgQEAgYXhfcmVxcyAo c3RydWN0IGFnZW50X2V4cHIgKmF4KQogICAgICAgYm91bmRhcnlbaV0gPSAx OwogICAgICAgaGVpZ2h0c1tpXSA9IGhlaWdodDsKIAotICAgICAgaGVpZ2h0 IC09IG9wLT5jb25zdW1lZDsKKyAgICAgIGhlaWdodCAtPSBjb25zdW1lZDsK ICAgICAgIGlmIChoZWlnaHQgPCBheC0+bWluX2hlaWdodCkKIAlheC0+bWlu X2hlaWdodCA9IGhlaWdodDsKICAgICAgIGhlaWdodCArPSBvcC0+cHJvZHVj ZWQ7Ci0tLSBhL2F4LmgKKysrIGIvYXguaApAQCAtMjA0LDYgKzIwNCw3IEBA IGVudW0gYWdlbnRfb3AKICAgICBhb3Bfc2V0diA9IDB4MmQsCiAgICAgYW9w X3RyYWNldiA9IDB4MmUsCiAgICAgYW9wX3RyYWNlMTYgPSAweDMwLAorICAg IGFvcF9wcmludGYgPSAweDMxLAogICAgIGFvcF9sYXN0CiAgIH07CiAMCkBA IC0yNjAsNiArMjYxLDggQEAgZXh0ZXJuIHZvaWQgYXhfcmVnX21hc2sgKHN0 cnVjdCBhZ2VudF9leAogCiAvKiBBc3NlbWJsZSBjb2RlIHRvIG9wZXJhdGUg b24gYSB0cmFjZSBzdGF0ZSB2YXJpYWJsZS4gICovCiBleHRlcm4gdm9pZCBh eF90c3YgKHN0cnVjdCBhZ2VudF9leHByICpleHByLCBlbnVtIGFnZW50X29w IG9wLCBpbnQgbnVtKTsKKworZXh0ZXJuIHZvaWQgYXhfbWVtY3B5IChzdHJ1 Y3QgYWdlbnRfZXhwciAqeCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbik7 CiAMCiAKIC8qIEZ1bmN0aW9ucyBmb3IgcHJpbnRpbmcgb3V0IGV4cHJlc3Np b25zLCBhbmQgb3RoZXJ3aXNlIGRlYnVnZ2luZwotLS0gYS9wcmludGNtZC5j CisrKyBiL3ByaW50Y21kLmMKQEAgLTE5NTgsMTAgKzE5NTgsMTMgQEAgcHJp bnRfdmFyaWFibGVfYW5kX3ZhbHVlIChjb25zdCBjaGFyICpuYQogICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICJcbiIpOwogfQogCi0vKiBwcmludGYg InByaW50ZiBmb3JtYXQgc3RyaW5nIiBBUkcgdG8gU1RSRUFNLiAgKi8KK3R5 cGVkZWYgdm9pZCAocHJpbnRmX2NhbGxiYWNrKSAoY2hhciAqZmJ1ZiwgY2hh ciAqKmV4cHAsCisJCQkJc3RydWN0IGJwX2xvY2F0aW9uICpsb2MsCisJCQkJ c3RydWN0IGFnZW50X2V4cHIgKmFleHByKTsKIAotc3RhdGljIHZvaWQKLXVp X3ByaW50ZiAoY2hhciAqYXJnLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQor dm9pZAorc3RyaW5nX3ByaW50ZiAoY2hhciAqYXJnLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBwcmludGZfY2FsbGJhY2sgY2FsbGJhY2ssCisJICAgICAg IHZvaWQgKmxvY192LCB2b2lkICphZXhwcl92KQogewogICBjaGFyICpmID0g TlVMTDsKICAgY2hhciAqcyA9IGFyZzsKQEAgLTE5NzIsNiArMTk3NSw4IEBA IHVpX3ByaW50ZiAoY2hhciAqYXJnLCBzdHJ1Y3QgdWlfZmlsZSAqc3QKICAg aW50IG5hcmdzID0gMDsKICAgaW50IGFsbG9jYXRlZF9hcmdzID0gMjA7CiAg IHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHM7CisgIHN0cnVjdCBicF9s b2NhdGlvbiAqbG9jID0gbG9jX3Y7CisgIHN0cnVjdCBhZ2VudF9leHByICph ZXhwciA9IGFleHByX3Y7CiAKICAgdmFsX2FyZ3MgPSB4bWFsbG9jIChhbGxv Y2F0ZWRfYXJncyAqIHNpemVvZiAoc3RydWN0IHZhbHVlICopKTsKICAgb2xk X2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVu dHMsICZ2YWxfYXJncyk7CkBAIC0yMjk0LDI2ICsyMjk5LDQyIEBAIHVpX3By aW50ZiAoY2hhciAqYXJnLCBzdHJ1Y3QgdWlfZmlsZSAqc3QKICAgICAvKiBO b3csIHBhcnNlIGFsbCBhcmd1bWVudHMgYW5kIGV2YWx1YXRlIHRoZW0uCiAg ICAgICAgU3RvcmUgdGhlIFZBTFVFcyBpbiBWQUxfQVJHUy4gICovCiAKKyAg ICBpZiAoY2FsbGJhY2spCisgICAgICBjdXJyZW50X3N1YnN0cmluZyA9IHN1 YnN0cmluZ3M7CiAgICAgd2hpbGUgKCpzICE9ICdcMCcpCiAgICAgICB7CiAJ Y2hhciAqczE7CiAKKwlzMSA9IHM7CiAJaWYgKG5hcmdzID09IGFsbG9jYXRl ZF9hcmdzKQogCSAgdmFsX2FyZ3MgPSAoc3RydWN0IHZhbHVlICoqKSB4cmVh bGxvYyAoKGNoYXIgKikgdmFsX2FyZ3MsCiAJCQkJCQkgKGFsbG9jYXRlZF9h cmdzICo9IDIpCiAJCQkJCQkgKiBzaXplb2YgKHN0cnVjdCB2YWx1ZSAqKSk7 Ci0JczEgPSBzOwotCXZhbF9hcmdzW25hcmdzXSA9IHBhcnNlX3RvX2NvbW1h X2FuZF9ldmFsICgmczEpOworCWlmIChjYWxsYmFjaykKKwkgIHsKKwkgICAg aWYgKG5hcmdzID49IG5hcmdzX3dhbnRlZCkKKwkgICAgICBlcnJvciAoXygi V3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3Igc3BlY2lmaWVkICIKKwkJ ICAgICAgICJmb3JtYXQtc3RyaW5nIikpOworCSAgICBjYWxsYmFjayAoY3Vy cmVudF9zdWJzdHJpbmcsICZzMSwgbG9jLCBhZXhwcik7CisJICAgIGN1cnJl bnRfc3Vic3RyaW5nICs9IHN0cmxlbiAoY3VycmVudF9zdWJzdHJpbmcpICsg MTsKKwkgIH0KKwllbHNlCisJICB2YWxfYXJnc1tuYXJnc10gPSBwYXJzZV90 b19jb21tYV9hbmRfZXZhbCAoJnMxKTsKIAogCW5hcmdzKys7CiAJcyA9IHMx OwogCWlmICgqcyA9PSAnLCcpCiAJICBzKys7CiAgICAgICB9CisgICAgaWYg KGNhbGxiYWNrKQorICAgICAgY2FsbGJhY2sgKGxhc3RfYXJnLCBOVUxMLCBs b2MsIGFleHByKTsKIAogICAgIGlmIChuYXJncyAhPSBuYXJnc193YW50ZWQp CiAgICAgICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBm b3Igc3BlY2lmaWVkIGZvcm1hdC1zdHJpbmciKSk7CiAKKyAgICBpZiAoIXN0 cmVhbSkKKyAgICAgIGdvdG8gYWZ0ZXJfcHJpbnQ7CisKICAgICAvKiBOb3cg YWN0dWFsbHkgcHJpbnQgdGhlbS4gICovCiAgICAgY3VycmVudF9zdWJzdHJp bmcgPSBzdWJzdHJpbmdzOwogICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsg aSsrKQpAQCAtMjY2OCwxNSArMjY4OSwxNyBAQCB1aV9wcmludGYgKGNoYXIg KmFyZywgc3RydWN0IHVpX2ZpbGUgKnN0CiAgICAgICAgYnkgZGVmYXVsdCwg d2hpY2ggd2lsbCB3YXJuIGhlcmUgaWYgdGhlcmUgaXMgbm8gYXJndW1lbnQu ICAqLwogICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgbGFzdF9hcmcs IDApOwogICB9CisKK2FmdGVyX3ByaW50OgogICBkb19jbGVhbnVwcyAob2xk X2NsZWFudXBzKTsKIH0KIAogLyogSW1wbGVtZW50IHRoZSAicHJpbnRmIiBj b21tYW5kLiAgKi8KIAotc3RhdGljIHZvaWQKK3ZvaWQKIHByaW50Zl9jb21t YW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKIHsKLSAgdWlfcHJpbnRm IChhcmcsIGdkYl9zdGRvdXQpOworICBzdHJpbmdfcHJpbnRmIChhcmcsIGdk Yl9zdGRvdXQsIE5VTEwsIE5VTEwsIE5VTEwpOwogfQogCiAvKiBJbXBsZW1l bnQgdGhlICJldmFsIiBjb21tYW5kLiAgKi8KQEAgLTI2ODgsNyArMjcxMSw3 IEBAIGV2YWxfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCiAg IHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwcyA9IG1ha2VfY2xlYW51cF91aV9m aWxlX2RlbGV0ZSAodWlfb3V0KTsKICAgY2hhciAqZXhwYW5kZWQ7CiAKLSAg dWlfcHJpbnRmIChhcmcsIHVpX291dCk7CisgIHN0cmluZ19wcmludGYgKGFy ZywgdWlfb3V0LCBOVUxMLCBOVUxMLCBOVUxMKTsKIAogICBleHBhbmRlZCA9 IHVpX2ZpbGVfeHN0cmR1cCAodWlfb3V0LCBOVUxMKTsKICAgbWFrZV9jbGVh bnVwICh4ZnJlZSwgZXhwYW5kZWQpOwotLS0gL2Rldi9udWxsCisrKyBiL3By aW50Y21kLmgKQEAgLTAsMCArMSwzMCBAQAorLyogUHJpbnQgdmFsdWVzIGZv ciBHTlUgZGVidWdnZXIgR0RCLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKworI2lmbmRlZiBfUFJJTlRDTURfSF8KKyNkZWZpbmUgX1BSSU5UQ01E X0hfCisKK2V4dGVybiB2b2lkIHByaW50Zl9jb21tYW5kIChjaGFyICphcmcs IGludCBmcm9tX3R0eSk7Cit0eXBlZGVmIHZvaWQgKHByaW50Zl9jYWxsYmFj aykgKGNoYXIgKmZidWYsIGNoYXIgKipleHBwLCB2b2lkICpsb2NfdiwKKwkJ CQl2b2lkICphZXhwcl92KTsKK2V4dGVybiB2b2lkIHN0cmluZ19wcmludGYg KGNoYXIgKmFyZywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKKwkJCSAgIHBy aW50Zl9jYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqbG9jX3YsCisJCQkgICB2 b2lkICphZXhwcl92KTsKKworI2VuZGlmIC8qIF9QUklOVENNRF9IXyAqLwot LS0gYS90cmFjZXBvaW50LmMKKysrIGIvdHJhY2Vwb2ludC5jCkBAIC01MSw2 ICs1MSw3IEBACiAjaW5jbHVkZSAiYXguaCIKICNpbmNsdWRlICJheC1nZGIu aCIKICNpbmNsdWRlICJtZW1yYW5nZS5oIgorI2luY2x1ZGUgInByaW50Y21k LmgiCiAKIC8qIHJlYWRsaW5lIGluY2x1ZGUgZmlsZXMgKi8KICNpbmNsdWRl ICJyZWFkbGluZS9yZWFkbGluZS5oIgpAQCAtNzYzLDYgKzc2NCwyOCBAQCB2 YWxpZGF0ZV9hY3Rpb25saW5lIChjaGFyICoqbGluZSwgc3RydWN0CiAJZXJy b3IgKF8oIndoaWxlLXN0ZXBwaW5nIHN0ZXAgY291bnQgYCVzJyBpcyBtYWxm b3JtZWQuIiksICpsaW5lKTsKICAgICB9CiAKKyAgZWxzZSBpZiAoY21kX2Nm dW5jX2VxIChjLCBwcmludGZfY29tbWFuZCkpCisgICAgeworICAgICAgY2hh ciBmYnVmWzEwMV07CisKKyAgICAgIGZvciAobG9jID0gdC0+bG9jOyBsb2M7 IGxvYyA9IGxvYy0+bmV4dCkKKwl7CisJICBpbnQgbmFyZ3M7CisJICBhZXhw ciA9IG5ld19hZ2VudF9leHByIChsb2MtPmdkYmFyY2gsIGxvYy0+YWRkcmVz cyk7CisJICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9hZ2VudF9l eHByIChhZXhwcik7CisJICBzdHJpbmdfcHJpbnRmIChwLCBOVUxMLCBnZW5f cHJpbnRmX2V4cHJfY2FsbGJhY2ssCisJCQkgbG9jLCBhZXhwcik7CisJICBh eF9zaW1wbGUgKGFleHByLCBhb3BfZW5kKTsKKwkgIC8qIFRoZSBhZ2VudCBl eHByIGluY2x1ZGUgZXhwciBmb3IgYXJndW1lbnRzLCBmb3JtYXQgc3RyaW5n LCAxIGJ5dGUKKwkgICAgIGZvciBhb3BfcHJpbnRmLCAxIGJ5dGUgZm9yIHRo ZSBudW1iZXIgb2YgYXJndW1lbnRzLCAxIGJ5dGUgZm9yCisJICAgICBzaXpl IG9mIGZvcm1hdCBzdHJpbmcsIDEgYnl0ZSBmb3IgYmxhbmsgYWZ0ZXIgZm9y bWF0IHN0cmluZworCSAgICAgYW5kIDEgYnl0ZSBmb3IgYW9wX2VuZC4gICov CisJICBpZiAoYWV4cHItPmxlbiA+IE1BWF9BR0VOVF9FWFBSX0xFTikKKwkg ICAgZXJyb3IgKF8oIkV4cHJlc3Npb24gaXMgdG9vIGNvbXBsaWNhdGVkLiIp KTsKKwkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworCX0KKyAgICB9CisK ICAgZWxzZSBpZiAoY21kX2NmdW5jX2VxIChjLCBlbmRfYWN0aW9uc19wc2V1 ZG9jb21tYW5kKSkKICAgICA7CiAKQEAgLTE0NzQsNiArMTQ5NywyMiBAQCBl bmNvZGVfYWN0aW9uc18xIChzdHJ1Y3QgY29tbWFuZF9saW5lICphCiAJICBl bmNvZGVfYWN0aW9uc18xIChhY3Rpb24tPmJvZHlfbGlzdFswXSwgdCwgdGxv YywgZnJhbWVfcmVnLAogCQkJICAgIGZyYW1lX29mZnNldCwgc3RlcHBpbmdf bGlzdCwgTlVMTCk7CiAJfQorICAgICAgZWxzZSBpZiAoY21kX2NmdW5jX2Vx IChjbWQsIHByaW50Zl9jb21tYW5kKSkKKwl7CisgICAgICAgICAgY2hhciBm YnVmWzEwMV07CisJICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gTlVM TDsKKworCSAgYWV4cHIgPSBuZXdfYWdlbnRfZXhwciAodGxvYy0+Z2RiYXJj aCwgdGxvYy0+YWRkcmVzcyk7CisJICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFu dXBfZnJlZV9hZ2VudF9leHByIChhZXhwcik7CisJICBzdHJpbmdfcHJpbnRm IChhY3Rpb25fZXhwLCBOVUxMLCBnZW5fcHJpbnRmX2V4cHJfY2FsbGJhY2ss CisJCQkgdGxvYywgYWV4cHIpOworCSAgYXhfc2ltcGxlIChhZXhwciwgYW9w X2VuZCk7CisKKwkgIGF4X3JlcXMgKGFleHByKTsKKwkgIHJlcG9ydF9hZ2Vu dF9yZXFzX2Vycm9ycyAoYWV4cHIpOworCSAgZGlzY2FyZF9jbGVhbnVwcyAo b2xkX2NoYWluKTsKKwkgIGFkZF9hZXhwciAoY29sbGVjdCwgYWV4cHIpOwor CX0KICAgICAgIGVsc2UKIAllcnJvciAoXygiSW52YWxpZCB0cmFjZXBvaW50 IGNvbW1hbmQgJyVzJyIpLCBhY3Rpb24tPmxpbmUpOwogICAgIH0JCQkJLyog Zm9yICovCg== --20cf3054a67923c302049c760118--