From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16585 invoked by alias); 28 Jan 2011 05:52:53 -0000 Received: (qmail 16573 invoked by uid 22791); 28 Jan 2011 05:52:49 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_CP X-Spam-Check-By: sourceware.org Received: from mail-yi0-f41.google.com (HELO mail-yi0-f41.google.com) (209.85.218.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 28 Jan 2011 05:52:40 +0000 Received: by yia25 with SMTP id 25so1151092yia.0 for ; Thu, 27 Jan 2011 21:52:38 -0800 (PST) Received: by 10.150.197.5 with SMTP id u5mr3845162ybf.293.1296193958314; Thu, 27 Jan 2011 21:52:38 -0800 (PST) MIME-Version: 1.0 Received: by 10.147.168.6 with HTTP; Thu, 27 Jan 2011 21:52:18 -0800 (PST) In-Reply-To: References: <4D24D9DD.8090104@codesourcery.com> From: Hui Zhu Date: Fri, 28 Jan 2011 05:54:00 -0000 Message-ID: Subject: Re: [PATCH] tracepoint: add new trace command "printf"[0] gdb To: gdb-patches ml Cc: Stan Shebs Content-Type: multipart/mixed; boundary=000e0cd3076e720502049ae1ac80 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-01/txt/msg00528.txt.bz2 --000e0cd3076e720502049ae1ac80 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3191 On Thu, Jan 6, 2011 at 14:43, Hui Zhu wrote: > On Thu, Jan 6, 2011 at 04:51, Stan Shebs wrote: >> On 1/3/11 10:18 PM, Doug Evans wrote: >>> >>> [for reference sake] >>> To me this is a subset of a bigger feature set that is missing: >>> partitioning of the things that can be accomplished by gdbserver from >>> the setup that is needed (IOW separate the heavy lifting of parsing >>> debug info and translating a user query into, for example, an agent >>> expression (the gdb side) from the processing of that query when the >>> breakpoint(/tracepoint) is hit (the gdbserver side). >>> Plus it might be useful to not require a gdb/gdbserver connection to >>> get things started, e.g., convey the tracepoint info (and anything >>> else) to gdbserver from a local source. >>> [I'm using "query" loosely here. =A0I'm using "gdbserver" loosely too: >>> anything that looks like gdbserver to gdb will do.] >> >> I'm actually working on a contract proposal to do a bunch of work in this >> area. >> >> One of the specific ideas is to introduce a "dynamic printf" that works >> somewhat like what I think Hui Zhu was wanting; it stops the program at a >> location, runs the printf in gdbserver, and then continues. >> >> Another one of the ideas is to use agent expressions to do target-side >> conditional breakpoints. =A0This is especially compelling for many-core >> targets, where we don't want 100 threads on 100 cores to be trying to get >> GDB to do 100 conditional expression evaluations all at once. >> >> I didn't specifically propose to go beyond that, into general partitioni= ng >> of command lists between host and target, although it's a very interesti= ng >> direction. =A0The idea gets me to thinking about whether we should keep = the >> command list form, or raise it to the level of a real language, or maybe >> support several - Mentor's EDGE debugger for instance uses a C syntax for >> its "codelets" ( >> http://www.mentor.com/embedded-software/resources/overview/codelets-15b9= eaed-8e4b-43a2-aad5-c189cd7f2d68 >> ) even though they run on the host, and whether the language is C or Pyt= hon, >> it seems useful to be able to inject real code bits into the target syst= em. >> >> Anyway, if we get the contract (fingers crossed!) then I expect we'll be >> putting up some proposals for discussion within the next couple of month= s. >> >> I'll comment on the patch in a different message. >> >> Stan >> >> > > That will be great! =A0Thanks Stan. > > Hui > Update follow the trunk. Thanks, Hui 2011-01-28 Hui Zhu * 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. * tracepoint.c (printf_command, gen_printf_expr_callback, printf_callback, string_printf): Forward declares. (validate_actionline, encode_actions_1): handle printf_command. --000e0cd3076e720502049ae1ac80 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_gjgob6mh0 Content-length: 13896 LS0tCiBheC1nZGIuYyAgICAgfCAgIDU3ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogYXgtZ2Vu ZXJhbC5jIHwgICA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0KIGF4LmggICAgICAgICB8ICAgIDMg KysrCiBwcmludGNtZC5jICAgfCAgIDQxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tCiB0cmFjZXBvaW50LmMgfCAgIDQ3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiA1IGZpbGVzIGNoYW5nZWQsIDE4OSBpbnNlcnRpb25zKCspLCAxMyBkZWxl dGlvbnMoLSkKCi0tLSBhL2F4LWdkYi5jCisrKyBiL2F4LWdkYi5jCkBAIC0y NDQ2LDYgKzI0NDYsNjMgQEAgZ2VuX2V2YWxfZm9yX2V4cHIgKENPUkVfQURE UiBzY29wZSwgc3RydQogICByZXR1cm4gYXg7CiB9CiAKK3ZvaWQKK2dlbl9w cmludGZfZXhwcl9jYWxsYmFjayAoY2hhciAqZmJ1ZiwgY2hhciAqKmV4cHAs IHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jLAorCQkJICBzdHJ1Y3QgYWdlbnRf ZXhwciAqYWV4cHIpCit7CisgIGlmIChleHBwKQorICAgIHsKKyAgICAgIHN0 cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBOVUxMOworICAgICAgc3RydWN0 IGV4cHJlc3Npb24gKmV4cHIgPSBOVUxMOworICAgICAgdW5pb24gZXhwX2Vs ZW1lbnQgKnBjOworICAgICAgc3RydWN0IGF4c192YWx1ZSB2YWx1ZTsKKwor ICAgICAgZXhwciA9IHBhcnNlX2V4cF8xIChleHBwLCBibG9ja19mb3JfcGMg KGxvYy0+YWRkcmVzcyksIDEpOworICAgICAgb2xkX2NoYWluID0gbWFrZV9j bGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZleHByKTsKKworICAg ICAgcGMgPSBleHByLT5lbHRzOworICAgICAgdHJhY2Vfa2x1ZGdlID0gMDsK KyAgICAgIHZhbHVlLm9wdGltaXplZF9vdXQgPSAwOworICAgICAgZ2VuX2V4 cHIgKGV4cHIsICZwYywgYWV4cHIsICZ2YWx1ZSk7CisKKworICAgICAgaWYg KHZhbHVlLm9wdGltaXplZF9vdXQpCisgICAgICAgIGVycm9yIChfKCJ2YWx1 ZSBoYXMgYmVlbiBvcHRpbWl6ZWQgb3V0IikpOworICAgICAgc3dpdGNoICh2 YWx1ZS5raW5kKQorICAgICAgICB7CisJY2FzZSBheHNfbHZhbHVlX21lbW9y eToKKwkgIHsKKwkgICAgaW50IGxlbmd0aCA9IFRZUEVfTEVOR1RIIChjaGVj a190eXBlZGVmICh2YWx1ZS50eXBlKSk7CisJICAgIHN3aXRjaCAobGVuZ3Ro KQorCSAgICAgIHsKKwkgICAgICBjYXNlIDQ6CisJCWF4X3NpbXBsZSAoYWV4 cHIsIGFvcF9yZWYzMik7CisJCWJyZWFrOworCSAgICAgIGNhc2UgODoKKwkJ YXhfc2ltcGxlIChhZXhwciwgYW9wX3JlZjY0KTsKKwkJYnJlYWs7CisJICAg ICAgZGVmYXVsdDoKKwkJZXJyb3IgKF8oInNpemUgb2YgdmFsdWUgaXMgbm90 IE9LLiIpKTsKKwkJYnJlYWs7CisJICAgICAgfQorCSAgfQorCSAgYnJlYWs7 CisJY2FzZSBheHNfbHZhbHVlX3JlZ2lzdGVyOgorCSAgYXhfcmVnIChhZXhw ciwgdmFsdWUudS5yZWcpOworCSAgYnJlYWs7CisgICAgICAgIH0KKworICAg ICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisgICAgfQorCisgIGF4X3Np bXBsZSAoYWV4cHIsIGFvcF9wcmludGYpOworICBpZiAoZXhwcCkKKyAgICBh eF9zaW1wbGUgKGFleHByLCAxKTsKKyAgZWxzZQorICAgIGF4X3NpbXBsZSAo YWV4cHIsIDApOworICBheF9tZW1jcHkgKGFleHByLCBmYnVmLCBzdHJsZW4g KGZidWYpICsgMSk7Cit9CisKIHN0YXRpYyB2b2lkCiBhZ2VudF9jb21tYW5k IChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKIHsKLS0tIGEvYXgtZ2VuZXJh bC5jCisrKyBiL2F4LWdlbmVyYWwuYwpAQCAtMzE5LDYgKzMxOSwxNCBAQCBh eF90c3YgKHN0cnVjdCBhZ2VudF9leHByICp4LCBlbnVtIGFnZW50CiAgIHgt PmJ1Zlt4LT5sZW4gKyAyXSA9IChudW0pICYgMHhmZjsKICAgeC0+bGVuICs9 IDM7CiB9CisKK3ZvaWQKK2F4X21lbWNweSAoc3RydWN0IGFnZW50X2V4cHIg KngsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pCit7CisgIGdyb3dfZXhw ciAoeCwgbik7CisgIG1lbWNweSAoeC0+YnVmICsgeC0+bGVuLCBzcmMsIG4p OworICB4LT5sZW4gKz0gbjsKK30KIAwKIAogCkBAIC0zNzYsNiArMzg0LDcg QEAgc3RydWN0IGFvcF9tYXAgYW9wX21hcFtdID0KICAgeyJ0cmFjZXYiLCAy LCAwLCAwLCAxfSwJLyogMHgyZSAqLwogICB7MCwgMCwgMCwgMCwgMH0sCQkv KiAweDJmICovCiAgIHsidHJhY2UxNiIsIDIsIDAsIDEsIDF9LAkvKiAweDMw ICovCisgIHsicHJpbnRmIiwgMCwgMCwgMCwgMH0sCS8qIDB4MzEgKi8KIH07 CiAKIApAQCAtNDAxLDYgKzQxMCw3IEBAIGF4X3ByaW50IChzdHJ1Y3QgdWlf ZmlsZSAqZiwgc3RydWN0IGFnZW4KICAgZm9yIChpID0gMDsgaSA8IHgtPmxl bjspCiAgICAgewogICAgICAgZW51bSBhZ2VudF9vcCBvcCA9IHgtPmJ1Zltp XTsKKyAgICAgIGludCBvcF9zaXplOwogCiAgICAgICBpZiAob3AgPj0gKHNp emVvZiAoYW9wX21hcCkgLyBzaXplb2YgKGFvcF9tYXBbMF0pKQogCSAgfHwg IWFvcF9tYXBbb3BdLm5hbWUpCkBAIC00MDksNyArNDE5LDE5IEBAIGF4X3By aW50IChzdHJ1Y3QgdWlfZmlsZSAqZiwgc3RydWN0IGFnZW4KIAkgIGkrKzsK IAkgIGNvbnRpbnVlOwogCX0KLSAgICAgIGlmIChpICsgMSArIGFvcF9tYXBb b3BdLm9wX3NpemUgPiB4LT5sZW4pCisgICAgICBpZiAob3AgPT0gYW9wX3By aW50ZikKKyAgICAgICAgeworCSAgaWYgKGkgKyAyID49IHgtPmxlbikKKwkg ICAgeworCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKGYsIF8oIiUzZCAgPGJh ZCBvcGNvZGUgJTAyeD5cbiIpLCBpLCBvcCk7CisJICAgICAgaSsrOworCSAg ICAgIGNvbnRpbnVlOworCSAgICB9CisJICBvcF9zaXplID0gMSArIHN0cmxl biAoeC0+YnVmICsgaSArIDIpICsgMTsKKwl9CisgICAgICBlbHNlCisJb3Bf c2l6ZSA9IGFvcF9tYXBbb3BdLm9wX3NpemU7CisgICAgICBpZiAoaSArIDEg KyBvcF9zaXplID4geC0+bGVuKQogCXsKIAkgIGZwcmludGZfZmlsdGVyZWQg KGYsIF8oIiUzZCAgPGluY29tcGxldGUgb3Bjb2RlICVzPlxuIiksCiAJCQkg ICAgaSwgYW9wX21hcFtvcF0ubmFtZSk7CkBAIC00MTcsMTUgKzQzOSwxNSBA QCBheF9wcmludCAoc3RydWN0IHVpX2ZpbGUgKmYsIHN0cnVjdCBhZ2VuCiAJ fQogCiAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChmLCAiJTNkICAlcyIsIGks IGFvcF9tYXBbb3BdLm5hbWUpOwotICAgICAgaWYgKGFvcF9tYXBbb3BdLm9w X3NpemUgPiAwKQorICAgICAgaWYgKG9wX3NpemUgPiAwKQogCXsKIAkgIGZw dXRzX2ZpbHRlcmVkICgiICIsIGYpOwogCiAJICBwcmludF9sb25nZXN0IChm LCAnZCcsIDAsCi0JCQkgcmVhZF9jb25zdCAoeCwgaSArIDEsIGFvcF9tYXBb b3BdLm9wX3NpemUpKTsKKwkJCSByZWFkX2NvbnN0ICh4LCBpICsgMSwgb3Bf c2l6ZSkpOwogCX0KICAgICAgIGZwcmludGZfZmlsdGVyZWQgKGYsICJcbiIp OwotICAgICAgaSArPSAxICsgYW9wX21hcFtvcF0ub3Bfc2l6ZTsKKyAgICAg IGkgKz0gMSArIG9wX3NpemU7CiAKICAgICAgIGlzX2Zsb2F0ID0gKG9wID09 IGFvcF9mbG9hdCk7CiAgICAgfQpAQCAtNDkzLDYgKzUxNSw4IEBAIGF4X3Jl cXMgKHN0cnVjdCBhZ2VudF9leHByICpheCkKICAgLyogUG9pbnRlciB0byBh IGRlc2NyaXB0aW9uIG9mIHRoZSBwcmVzZW50IG9wLiAgKi8KICAgc3RydWN0 IGFvcF9tYXAgKm9wOwogCisgIGludCBvcF9zaXplID0gMCwgY29uc3VtZWQg PSAwOworCiAgIG1lbXNldCAodGFyZ2V0cywgMCwgYXgtPmxlbiAqIHNpemVv ZiAodGFyZ2V0c1swXSkpOwogICBtZW1zZXQgKGJvdW5kYXJ5LCAwLCBheC0+ bGVuICogc2l6ZW9mIChib3VuZGFyeVswXSkpOwogCkBAIC01MDAsNyArNTI0 LDcgQEAgYXhfcmVxcyAoc3RydWN0IGFnZW50X2V4cHIgKmF4KQogICBheC0+ ZmxhdyA9IGFnZW50X2ZsYXdfbm9uZTsKICAgYXgtPm1heF9kYXRhX3NpemUg PSAwOwogCi0gIGZvciAoaSA9IDA7IGkgPCBheC0+bGVuOyBpICs9IDEgKyBv cC0+b3Bfc2l6ZSkKKyAgZm9yIChpID0gMDsgaSA8IGF4LT5sZW47IGkgKz0g MSArIG9wX3NpemUpCiAgICAgewogICAgICAgaWYgKGF4LT5idWZbaV0gPiAo c2l6ZW9mIChhb3BfbWFwKSAvIHNpemVvZiAoYW9wX21hcFswXSkpKQogCXsK QEAgLTUxNiw3ICs1NDAsMjMgQEAgYXhfcmVxcyAoc3RydWN0IGFnZW50X2V4 cHIgKmF4KQogCSAgcmV0dXJuOwogCX0KIAotICAgICAgaWYgKGkgKyAxICsg b3AtPm9wX3NpemUgPiBheC0+bGVuKQorICAgICAgaWYgKGF4LT5idWZbaV0g PT0gYW9wX3ByaW50ZikKKyAgICAgICAgeworCSAgaWYgKGkgKyAyID49IGF4 LT5sZW4pCisJICAgIHsKKwkgICAgICBheC0+ZmxhdyA9IGFnZW50X2ZsYXdf aW5jb21wbGV0ZV9pbnN0cnVjdGlvbjsKKwkgICAgICByZXR1cm47CisJICAg IH0KKwkgIGNvbnN1bWVkID0gYXgtPmJ1ZltpICsgMV07CisJICBvcF9zaXpl ID0gMSArIHN0cmxlbiAoYXgtPmJ1ZiArIGkgKyAyKSArIDE7CisJfQorICAg ICAgZWxzZQorICAgICAgICB7CisJICBvcF9zaXplID0gb3AtPm9wX3NpemU7 CisJICBjb25zdW1lZCA9IG9wLT5jb25zdW1lZDsKKyAgICAgICAgfQorCisg ICAgICBpZiAoaSArIDEgKyBvcF9zaXplID4gYXgtPmxlbikKIAl7CiAJICBh eC0+ZmxhdyA9IGFnZW50X2ZsYXdfaW5jb21wbGV0ZV9pbnN0cnVjdGlvbjsK IAkgIHJldHVybjsKQEAgLTUzNCw3ICs1NzQsNyBAQCBheF9yZXFzIChzdHJ1 Y3QgYWdlbnRfZXhwciAqYXgpCiAgICAgICBib3VuZGFyeVtpXSA9IDE7CiAg ICAgICBoZWlnaHRzW2ldID0gaGVpZ2h0OwogCi0gICAgICBoZWlnaHQgLT0g b3AtPmNvbnN1bWVkOworICAgICAgaGVpZ2h0IC09IGNvbnN1bWVkOwogICAg ICAgaWYgKGhlaWdodCA8IGF4LT5taW5faGVpZ2h0KQogCWF4LT5taW5faGVp Z2h0ID0gaGVpZ2h0OwogICAgICAgaGVpZ2h0ICs9IG9wLT5wcm9kdWNlZDsK LS0tIGEvYXguaAorKysgYi9heC5oCkBAIC0yMDQsNiArMjA0LDcgQEAgZW51 bSBhZ2VudF9vcAogICAgIGFvcF9zZXR2ID0gMHgyZCwKICAgICBhb3BfdHJh Y2V2ID0gMHgyZSwKICAgICBhb3BfdHJhY2UxNiA9IDB4MzAsCisgICAgYW9w X3ByaW50ZiA9IDB4MzEsCiAgICAgYW9wX2xhc3QKICAgfTsKIAwKQEAgLTI2 MCw2ICsyNjEsOCBAQCBleHRlcm4gdm9pZCBheF9yZWdfbWFzayAoc3RydWN0 IGFnZW50X2V4CiAKIC8qIEFzc2VtYmxlIGNvZGUgdG8gb3BlcmF0ZSBvbiBh IHRyYWNlIHN0YXRlIHZhcmlhYmxlLiAgKi8KIGV4dGVybiB2b2lkIGF4X3Rz diAoc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsIGVudW0gYWdlbnRfb3Agb3As IGludCBudW0pOworCitleHRlcm4gdm9pZCBheF9tZW1jcHkgKHN0cnVjdCBh Z2VudF9leHByICp4LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKTsKIAwK IAogLyogRnVuY3Rpb25zIGZvciBwcmludGluZyBvdXQgZXhwcmVzc2lvbnMs IGFuZCBvdGhlcndpc2UgZGVidWdnaW5nCi0tLSBhL3ByaW50Y21kLmMKKysr IGIvcHJpbnRjbWQuYwpAQCAtMTk1OCwxMCArMTk1OCwxMyBAQCBwcmludF92 YXJpYWJsZV9hbmRfdmFsdWUgKGNvbnN0IGNoYXIgKm5hCiAgIGZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7CiB9CiAKLS8qIHByaW50ZiAicHJp bnRmIGZvcm1hdCBzdHJpbmciIEFSRyB0byBTVFJFQU0uICAqLwordHlwZWRl ZiB2b2lkIChwcmludGZfY2FsbGJhY2spIChjaGFyICpmYnVmLCBjaGFyICoq ZXhwcCwKKwkJCQlzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYywKKwkJCQlzdHJ1 Y3QgYWdlbnRfZXhwciAqYWV4cHIpOwogCi1zdGF0aWMgdm9pZAotdWlfcHJp bnRmIChjaGFyICphcmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCit2b2lk CitzdHJpbmdfcHJpbnRmIChjaGFyICphcmcsIHN0cnVjdCB1aV9maWxlICpz dHJlYW0sIHByaW50Zl9jYWxsYmFjayBjYWxsYmFjaywKKwkgICAgICAgc3Ry dWN0IGJwX2xvY2F0aW9uICpsb2MsIHN0cnVjdCBhZ2VudF9leHByICphZXhw cikKIHsKICAgY2hhciAqZiA9IE5VTEw7CiAgIGNoYXIgKnMgPSBhcmc7CkBA IC0yMjk0LDI2ICsyMjk3LDQyIEBAIHVpX3ByaW50ZiAoY2hhciAqYXJnLCBz dHJ1Y3QgdWlfZmlsZSAqc3QKICAgICAvKiBOb3csIHBhcnNlIGFsbCBhcmd1 bWVudHMgYW5kIGV2YWx1YXRlIHRoZW0uCiAgICAgICAgU3RvcmUgdGhlIFZB TFVFcyBpbiBWQUxfQVJHUy4gICovCiAKKyAgICBpZiAoY2FsbGJhY2spCisg ICAgICBjdXJyZW50X3N1YnN0cmluZyA9IHN1YnN0cmluZ3M7CiAgICAgd2hp bGUgKCpzICE9ICdcMCcpCiAgICAgICB7CiAJY2hhciAqczE7CiAKKwlzMSA9 IHM7CiAJaWYgKG5hcmdzID09IGFsbG9jYXRlZF9hcmdzKQogCSAgdmFsX2Fy Z3MgPSAoc3RydWN0IHZhbHVlICoqKSB4cmVhbGxvYyAoKGNoYXIgKikgdmFs X2FyZ3MsCiAJCQkJCQkgKGFsbG9jYXRlZF9hcmdzICo9IDIpCiAJCQkJCQkg KiBzaXplb2YgKHN0cnVjdCB2YWx1ZSAqKSk7Ci0JczEgPSBzOwotCXZhbF9h cmdzW25hcmdzXSA9IHBhcnNlX3RvX2NvbW1hX2FuZF9ldmFsICgmczEpOwor CWlmIChjYWxsYmFjaykKKwkgIHsKKwkgICAgaWYgKG5hcmdzID49IG5hcmdz X3dhbnRlZCkKKwkgICAgICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIGFy Z3VtZW50cyBmb3Igc3BlY2lmaWVkICIKKwkJICAgICAgICJmb3JtYXQtc3Ry aW5nIikpOworCSAgICBjYWxsYmFjayAoY3VycmVudF9zdWJzdHJpbmcsICZz MSwgbG9jLCBhZXhwcik7CisJICAgIGN1cnJlbnRfc3Vic3RyaW5nICs9IHN0 cmxlbiAoY3VycmVudF9zdWJzdHJpbmcpICsgMTsKKwkgIH0KKwllbHNlCisJ ICB2YWxfYXJnc1tuYXJnc10gPSBwYXJzZV90b19jb21tYV9hbmRfZXZhbCAo JnMxKTsKIAogCW5hcmdzKys7CiAJcyA9IHMxOwogCWlmICgqcyA9PSAnLCcp CiAJICBzKys7CiAgICAgICB9CisgICAgaWYgKGNhbGxiYWNrKQorICAgICAg Y2FsbGJhY2sgKGxhc3RfYXJnLCBOVUxMLCBsb2MsIGFleHByKTsKIAogICAg IGlmIChuYXJncyAhPSBuYXJnc193YW50ZWQpCiAgICAgICBlcnJvciAoXygi V3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3Igc3BlY2lmaWVkIGZvcm1h dC1zdHJpbmciKSk7CiAKKyAgICBpZiAoIXN0cmVhbSkKKyAgICAgIGdvdG8g YWZ0ZXJfcHJpbnQ7CisKICAgICAvKiBOb3cgYWN0dWFsbHkgcHJpbnQgdGhl bS4gICovCiAgICAgY3VycmVudF9zdWJzdHJpbmcgPSBzdWJzdHJpbmdzOwog ICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQpAQCAtMjY2OCwxMiAr MjY4NywyMiBAQCB1aV9wcmludGYgKGNoYXIgKmFyZywgc3RydWN0IHVpX2Zp bGUgKnN0CiAgICAgICAgYnkgZGVmYXVsdCwgd2hpY2ggd2lsbCB3YXJuIGhl cmUgaWYgdGhlcmUgaXMgbm8gYXJndW1lbnQuICAqLwogICAgIGZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgbGFzdF9hcmcsIDApOwogICB9CisKK2FmdGVy X3ByaW50OgogICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKIH0KIAot LyogSW1wbGVtZW50IHRoZSAicHJpbnRmIiBjb21tYW5kLiAgKi8KKy8qIHBy aW50ZiAicHJpbnRmIGZvcm1hdCBzdHJpbmciIEFSRyB0byBTVFJFQU0uICAq LwogCiBzdGF0aWMgdm9pZAordWlfcHJpbnRmIChjaGFyICphcmcsIHN0cnVj dCB1aV9maWxlICpzdHJlYW0pCit7CisgIHN0cmluZ19wcmludGYgKGFyZywg c3RyZWFtLCBOVUxMLCBOVUxMLCBOVUxMKTsKK30KKworLyogSW1wbGVtZW50 IHRoZSAicHJpbnRmIiBjb21tYW5kLiAgKi8KKwordm9pZAogcHJpbnRmX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogewogICB1aV9wcmlu dGYgKGFyZywgZ2RiX3N0ZG91dCk7Ci0tLSBhL3RyYWNlcG9pbnQuYworKysg Yi90cmFjZXBvaW50LmMKQEAgLTE4Nyw2ICsxODcsMTUgQEAgZXh0ZXJuIHZv aWQgc2VuZF9kaXNjb25uZWN0ZWRfdHJhY2luZ192YQogc3RhdGljIHZvaWQg ZnJlZV91cGxvYWRlZF90cHMgKHN0cnVjdCB1cGxvYWRlZF90cCAqKnV0cHAp Owogc3RhdGljIHZvaWQgZnJlZV91cGxvYWRlZF90c3ZzIChzdHJ1Y3QgdXBs b2FkZWRfdHN2ICoqdXRzdnApOwogCitleHRlcm4gdm9pZCBwcmludGZfY29t bWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpOworZXh0ZXJuIHZvaWQg Z2VuX3ByaW50Zl9leHByX2NhbGxiYWNrIChjaGFyICoqZXhwcCwgc3RydWN0 IGJwX2xvY2F0aW9uICpsb2MsCisJCQkJICAgICAgc3RydWN0IGFnZW50X2V4 cHIgKmFleHByKTsKK3R5cGVkZWYgdm9pZCAocHJpbnRmX2NhbGxiYWNrKSAo Y2hhciAqKmV4cHAsIHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jLAorCQkJCXN0 cnVjdCBhZ2VudF9leHByICphZXhwcik7CitleHRlcm4gdm9pZCBzdHJpbmdf cHJpbnRmIChjaGFyICphcmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisJ CQkgICBwcmludGZfY2FsbGJhY2sgY2FsbGJhY2ssIHN0cnVjdCBicF9sb2Nh dGlvbiAqbG9jLAorCQkJICAgc3RydWN0IGFnZW50X2V4cHIgKmFleHByKTsK KwogCiBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV90cmFjZXBvaW50ICh2b2lk KTsKIApAQCAtNzI1LDYgKzczNCwyOCBAQCB2YWxpZGF0ZV9hY3Rpb25saW5l IChjaGFyICoqbGluZSwgc3RydWN0CiAJZXJyb3IgKF8oIndoaWxlLXN0ZXBw aW5nIHN0ZXAgY291bnQgYCVzJyBpcyBtYWxmb3JtZWQuIiksICpsaW5lKTsK ICAgICB9CiAKKyAgZWxzZSBpZiAoY21kX2NmdW5jX2VxIChjLCBwcmludGZf Y29tbWFuZCkpCisgICAgeworICAgICAgY2hhciBmYnVmWzEwMV07CisKKyAg ICAgIGZvciAobG9jID0gdC0+bG9jOyBsb2M7IGxvYyA9IGxvYy0+bmV4dCkK Kwl7CisJICBpbnQgbmFyZ3M7CisJICBhZXhwciA9IG5ld19hZ2VudF9leHBy IChsb2MtPmdkYmFyY2gsIGxvYy0+YWRkcmVzcyk7CisJICBvbGRfY2hhaW4g PSBtYWtlX2NsZWFudXBfZnJlZV9hZ2VudF9leHByIChhZXhwcik7CisJICBz dHJpbmdfcHJpbnRmIChwLCBOVUxMLCBnZW5fcHJpbnRmX2V4cHJfY2FsbGJh Y2ssCisJCQkgbG9jLCBhZXhwcik7CisJICBheF9zaW1wbGUgKGFleHByLCBh b3BfZW5kKTsKKwkgIC8qIFRoZSBhZ2VudCBleHByIGluY2x1ZGUgZXhwciBm b3IgYXJndW1lbnRzLCBmb3JtYXQgc3RyaW5nLCAxIGJ5dGUKKwkgICAqIGZv ciBhb3BfcHJpbnRmLCAxIGJ5dGUgZm9yIHRoZSBudW1iZXIgb2YgYXJndW1l bnRzLCAxIGJ5dGUgZm9yCisJICAgKiBzaXplIG9mIGZvcm1hdCBzdHJpbmcs IDEgYnl0ZSBmb3IgYmxhbmsgYWZ0ZXIgZm9ybWF0IHN0cmluZworCSAgICog YW5kIDEgYnl0ZSBmb3IgYW9wX2VuZC4gICovCisJICBpZiAoYWV4cHItPmxl biA+IE1BWF9BR0VOVF9FWFBSX0xFTikKKwkgICAgZXJyb3IgKF8oIkV4cHJl c3Npb24gaXMgdG9vIGNvbXBsaWNhdGVkLiIpKTsKKwkgIGRvX2NsZWFudXBz IChvbGRfY2hhaW4pOworCX0KKyAgICB9CisKICAgZWxzZSBpZiAoY21kX2Nm dW5jX2VxIChjLCBlbmRfYWN0aW9uc19wc2V1ZG9jb21tYW5kKSkKICAgICA7 CiAKQEAgLTE0MzYsNiArMTQ2NywyMiBAQCBlbmNvZGVfYWN0aW9uc18xIChz dHJ1Y3QgY29tbWFuZF9saW5lICphCiAJICBlbmNvZGVfYWN0aW9uc18xIChh Y3Rpb24tPmJvZHlfbGlzdFswXSwgdCwgdGxvYywgZnJhbWVfcmVnLAogCQkJ ICAgIGZyYW1lX29mZnNldCwgc3RlcHBpbmdfbGlzdCwgTlVMTCk7CiAJfQor ICAgICAgZWxzZSBpZiAoY21kX2NmdW5jX2VxIChjbWQsIHByaW50Zl9jb21t YW5kKSkKKwl7CisgICAgICAgICAgY2hhciBmYnVmWzEwMV07CisJICBzdHJ1 Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gTlVMTDsKKworCSAgYWV4cHIgPSBu ZXdfYWdlbnRfZXhwciAodGxvYy0+Z2RiYXJjaCwgdGxvYy0+YWRkcmVzcyk7 CisJICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9hZ2VudF9leHBy IChhZXhwcik7CisJICBzdHJpbmdfcHJpbnRmIChhY3Rpb25fZXhwLCBOVUxM LCBnZW5fcHJpbnRmX2V4cHJfY2FsbGJhY2ssCisJCQkgdGxvYywgYWV4cHIp OworCSAgYXhfc2ltcGxlIChhZXhwciwgYW9wX2VuZCk7CisKKwkgIGF4X3Jl cXMgKGFleHByKTsKKwkgIHJlcG9ydF9hZ2VudF9yZXFzX2Vycm9ycyAoYWV4 cHIpOworCSAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NoYWluKTsKKwkgIGFk ZF9hZXhwciAoY29sbGVjdCwgYWV4cHIpOworCX0KICAgICAgIGVsc2UKIAll cnJvciAoXygiSW52YWxpZCB0cmFjZXBvaW50IGNvbW1hbmQgJyVzJyIpLCBh Y3Rpb24tPmxpbmUpOwogICAgIH0JCQkJLyogZm9yICovCg== --000e0cd3076e720502049ae1ac80--