From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21168 invoked by alias); 3 Jan 2011 16:29:50 -0000 Received: (qmail 21158 invoked by uid 22791); 3 Jan 2011 16:29:48 -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,RFC_ABUSE_POST,TW_CP X-Spam-Check-By: sourceware.org Received: from mail-ww0-f43.google.com (HELO mail-ww0-f43.google.com) (74.125.82.43) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 03 Jan 2011 16:29:43 +0000 Received: by wwi17 with SMTP id 17so13281898wwi.12 for ; Mon, 03 Jan 2011 08:29:40 -0800 (PST) Received: by 10.216.156.196 with SMTP id m46mr3648633wek.75.1294072180099; Mon, 03 Jan 2011 08:29:40 -0800 (PST) MIME-Version: 1.0 Received: by 10.216.182.206 with HTTP; Mon, 3 Jan 2011 08:29:19 -0800 (PST) From: Hui Zhu Date: Mon, 03 Jan 2011 16:29:00 -0000 Message-ID: Subject: [PATCH] tracepoint: add new trace command "printf"[0] gdb To: gdb-patches Content-Type: multipart/mixed; boundary=0016e65b64e09bcb6e0498f3a869 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/msg00043.txt.bz2 --0016e65b64e09bcb6e0498f3a869 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2538 Hi, I add a new patch add new trace command "printf". This printf is same with the simple gdb command, it can do formatted output. But it will happen in gdbserver part when it break by a tracepoint. Then the user can get the format value that he want in tracepint. It will be more easy and clear to handle the bug sometimes. For example: (gdb) trace 16 During symbol reading, DW_AT_name missing from DW_TAG_base_type. Tracepoint 1 at 0x4004c3: file 1.c, line 16. (gdb) tvariable $c Trace state variable $c created, with initial value 0. (gdb) actions Enter actions for tracepoint 1, one per line. End with a line saying just "end". >printf "%d 0x%lx %d\n",$c=$c+1,$rax,argc >end (gdb) target remote localhost:1234 (gdb) tstart (gdb) c gdbserver/gdbserver localhost:1234 ./a.out Process ./a.out created; pid = 25804 Listening on port 1234 Remote debugging from host 127.0.0.1 1 0x7f2cb8711ec8 1 2 0x7f2cb8711ec8 2 3 0x7f2cb8711ec8 3 4 0x7f2cb8711ec8 4 5 0x7f2cb8711ec8 5 6 0x7f2cb8711ec8 6 7 0x7f2cb8711ec8 7 About the command part, I use the "printf" instead add a new commands because the behavior of this command is same with printf. They will use the same function string_printf(update from ui_printf) to parse the command arg. To support the printf command, I add a new agent expression 0x31 printf, the format for it is: 0x31(op_printf) + arg(1/0) + format string with end by 0x0. The arg is the number of argument of printf. It will only be 1 (one argument) or 0 (no argument). I make it cannot have more than one argument because I cannot found a good way to handle va_list that send arguments to vprintf. The format string with end by 0x0 is the simple format string. It end by 0x0 then the gdbserver can use it directly. I didn't make the patch for doc because I am still not sure about every part of this patch. When this patch is OK. I will make doc patch for it. Thanks, Hui 2011-01-04 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. --0016e65b64e09bcb6e0498f3a869 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_gihkx08r0 Content-length: 13896 LS0tCiBheC1nZGIuYyAgICAgfCAgIDU3ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogYXgtZ2Vu ZXJhbC5jIHwgICA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0KIGF4LmggICAgICAgICB8ICAgIDMg KysrCiBwcmludGNtZC5jICAgfCAgIDQxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tCiB0cmFjZXBvaW50LmMgfCAgIDQ3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiA1IGZpbGVzIGNoYW5nZWQsIDE4OSBpbnNlcnRpb25zKCspLCAxMyBkZWxl dGlvbnMoLSkKCi0tLSBhL2F4LWdkYi5jCisrKyBiL2F4LWdkYi5jCkBAIC0y NDM1LDYgKzI0MzUsNjMgQEAgZ2VuX2V2YWxfZm9yX2V4cHIgKENPUkVfQURE 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 bC5jCisrKyBiL2F4LWdlbmVyYWwuYwpAQCAtMzEzLDYgKzMxMywxNCBAQCBh eF90c3YgKHN0cnVjdCBhZ2VudF9leHByICp4LCBlbnVtIGFnZW50CiAgIHgt PmJ1Zlt4LT5sZW4gKyAyXSA9IChudW0pICYgMHhmZjsKICAgeC0+bGVuICs9 IDM7CiB9CisKK3ZvaWQKK2F4X21lbWNweSAoc3RydWN0IGFnZW50X2V4cHIg KngsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pCit7CisgIGdyb3dfZXhw ciAoeCwgbik7CisgIG1lbWNweSAoeC0+YnVmICsgeC0+bGVuLCBzcmMsIG4p OworICB4LT5sZW4gKz0gbjsKK30KIAwKIAogCkBAIC0zNzAsNiArMzc4LDcg QEAgc3RydWN0IGFvcF9tYXAgYW9wX21hcFtdID0KICAgeyJ0cmFjZXYiLCAy LCAwLCAwLCAxfSwJLyogMHgyZSAqLwogICB7MCwgMCwgMCwgMCwgMH0sCQkv KiAweDJmICovCiAgIHsidHJhY2UxNiIsIDIsIDAsIDEsIDF9LAkvKiAweDMw ICovCisgIHsicHJpbnRmIiwgMCwgMCwgMCwgMH0sCS8qIDB4MzEgKi8KIH07 CiAKIApAQCAtMzk1LDYgKzQwNCw3IEBAIGF4X3ByaW50IChzdHJ1Y3QgdWlf ZmlsZSAqZiwgc3RydWN0IGFnZW4KICAgZm9yIChpID0gMDsgaSA8IHgtPmxl bjspCiAgICAgewogICAgICAgZW51bSBhZ2VudF9vcCBvcCA9IHgtPmJ1Zltp XTsKKyAgICAgIGludCBvcF9zaXplOwogCiAgICAgICBpZiAob3AgPj0gKHNp emVvZiAoYW9wX21hcCkgLyBzaXplb2YgKGFvcF9tYXBbMF0pKQogCSAgfHwg IWFvcF9tYXBbb3BdLm5hbWUpCkBAIC00MDMsNyArNDEzLDE5IEBAIGF4X3By aW50IChzdHJ1Y3QgdWlfZmlsZSAqZiwgc3RydWN0IGFnZW4KIAkgIGkrKzsK IAkgIGNvbnRpbnVlOwogCX0KLSAgICAgIGlmIChpICsgMSArIGFvcF9tYXBb b3BdLm9wX3NpemUgPiB4LT5sZW4pCisgICAgICBpZiAob3AgPT0gYW9wX3By aW50ZikKKyAgICAgICAgeworCSAgaWYgKGkgKyAyID49IHgtPmxlbikKKwkg ICAgeworCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKGYsIF8oIiUzZCAgPGJh ZCBvcGNvZGUgJTAyeD5cbiIpLCBpLCBvcCk7CisJICAgICAgaSsrOworCSAg ICAgIGNvbnRpbnVlOworCSAgICB9CisJICBvcF9zaXplID0gMSArIHN0cmxl biAoeC0+YnVmICsgaSArIDIpICsgMTsKKwl9CisgICAgICBlbHNlCisJb3Bf c2l6ZSA9IGFvcF9tYXBbb3BdLm9wX3NpemU7CisgICAgICBpZiAoaSArIDEg KyBvcF9zaXplID4geC0+bGVuKQogCXsKIAkgIGZwcmludGZfZmlsdGVyZWQg KGYsIF8oIiUzZCAgPGluY29tcGxldGUgb3Bjb2RlICVzPlxuIiksCiAJCQkg ICAgaSwgYW9wX21hcFtvcF0ubmFtZSk7CkBAIC00MTEsMTUgKzQzMywxNSBA QCBheF9wcmludCAoc3RydWN0IHVpX2ZpbGUgKmYsIHN0cnVjdCBhZ2VuCiAJ fQogCiAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChmLCAiJTNkICAlcyIsIGks IGFvcF9tYXBbb3BdLm5hbWUpOwotICAgICAgaWYgKGFvcF9tYXBbb3BdLm9w X3NpemUgPiAwKQorICAgICAgaWYgKG9wX3NpemUgPiAwKQogCXsKIAkgIGZw dXRzX2ZpbHRlcmVkICgiICIsIGYpOwogCiAJICBwcmludF9sb25nZXN0IChm LCAnZCcsIDAsCi0JCQkgcmVhZF9jb25zdCAoeCwgaSArIDEsIGFvcF9tYXBb b3BdLm9wX3NpemUpKTsKKwkJCSByZWFkX2NvbnN0ICh4LCBpICsgMSwgb3Bf c2l6ZSkpOwogCX0KICAgICAgIGZwcmludGZfZmlsdGVyZWQgKGYsICJcbiIp OwotICAgICAgaSArPSAxICsgYW9wX21hcFtvcF0ub3Bfc2l6ZTsKKyAgICAg IGkgKz0gMSArIG9wX3NpemU7CiAKICAgICAgIGlzX2Zsb2F0ID0gKG9wID09 IGFvcF9mbG9hdCk7CiAgICAgfQpAQCAtNDg3LDYgKzUwOSw4IEBAIGF4X3Jl cXMgKHN0cnVjdCBhZ2VudF9leHByICpheCkKICAgLyogUG9pbnRlciB0byBh IGRlc2NyaXB0aW9uIG9mIHRoZSBwcmVzZW50IG9wLiAgKi8KICAgc3RydWN0 IGFvcF9tYXAgKm9wOwogCisgIGludCBvcF9zaXplID0gMCwgY29uc3VtZWQg PSAwOworCiAgIG1lbXNldCAodGFyZ2V0cywgMCwgYXgtPmxlbiAqIHNpemVv ZiAodGFyZ2V0c1swXSkpOwogICBtZW1zZXQgKGJvdW5kYXJ5LCAwLCBheC0+ bGVuICogc2l6ZW9mIChib3VuZGFyeVswXSkpOwogCkBAIC00OTQsNyArNTE4 LDcgQEAgYXhfcmVxcyAoc3RydWN0IGFnZW50X2V4cHIgKmF4KQogICBheC0+ ZmxhdyA9IGFnZW50X2ZsYXdfbm9uZTsKICAgYXgtPm1heF9kYXRhX3NpemUg PSAwOwogCi0gIGZvciAoaSA9IDA7IGkgPCBheC0+bGVuOyBpICs9IDEgKyBv cC0+b3Bfc2l6ZSkKKyAgZm9yIChpID0gMDsgaSA8IGF4LT5sZW47IGkgKz0g MSArIG9wX3NpemUpCiAgICAgewogICAgICAgaWYgKGF4LT5idWZbaV0gPiAo c2l6ZW9mIChhb3BfbWFwKSAvIHNpemVvZiAoYW9wX21hcFswXSkpKQogCXsK QEAgLTUxMCw3ICs1MzQsMjMgQEAgYXhfcmVxcyAoc3RydWN0IGFnZW50X2V4 cHIgKmF4KQogCSAgcmV0dXJuOwogCX0KIAotICAgICAgaWYgKGkgKyAxICsg b3AtPm9wX3NpemUgPiBheC0+bGVuKQorICAgICAgaWYgKGF4LT5idWZbaV0g PT0gYW9wX3ByaW50ZikKKyAgICAgICAgeworCSAgaWYgKGkgKyAyID49IGF4 LT5sZW4pCisJICAgIHsKKwkgICAgICBheC0+ZmxhdyA9IGFnZW50X2ZsYXdf aW5jb21wbGV0ZV9pbnN0cnVjdGlvbjsKKwkgICAgICByZXR1cm47CisJICAg IH0KKwkgIGNvbnN1bWVkID0gYXgtPmJ1ZltpICsgMV07CisJICBvcF9zaXpl ID0gMSArIHN0cmxlbiAoYXgtPmJ1ZiArIGkgKyAyKSArIDE7CisJfQorICAg ICAgZWxzZQorICAgICAgICB7CisJICBvcF9zaXplID0gb3AtPm9wX3NpemU7 CisJICBjb25zdW1lZCA9IG9wLT5jb25zdW1lZDsKKyAgICAgICAgfQorCisg ICAgICBpZiAoaSArIDEgKyBvcF9zaXplID4gYXgtPmxlbikKIAl7CiAJICBh eC0+ZmxhdyA9IGFnZW50X2ZsYXdfaW5jb21wbGV0ZV9pbnN0cnVjdGlvbjsK IAkgIHJldHVybjsKQEAgLTUyOCw3ICs1NjgsNyBAQCBheF9yZXFzIChzdHJ1 Y3QgYWdlbnRfZXhwciAqYXgpCiAgICAgICBib3VuZGFyeVtpXSA9IDE7CiAg ICAgICBoZWlnaHRzW2ldID0gaGVpZ2h0OwogCi0gICAgICBoZWlnaHQgLT0g b3AtPmNvbnN1bWVkOworICAgICAgaGVpZ2h0IC09IGNvbnN1bWVkOwogICAg ICAgaWYgKGhlaWdodCA8IGF4LT5taW5faGVpZ2h0KQogCWF4LT5taW5faGVp Z2h0ID0gaGVpZ2h0OwogICAgICAgaGVpZ2h0ICs9IG9wLT5wcm9kdWNlZDsK LS0tIGEvYXguaAorKysgYi9heC5oCkBAIC0yMDQsNiArMjA0LDcgQEAgZW51 bSBhZ2VudF9vcAogICAgIGFvcF9zZXR2ID0gMHgyZCwKICAgICBhb3BfdHJh Y2V2ID0gMHgyZSwKICAgICBhb3BfdHJhY2UxNiA9IDB4MzAsCisgICAgYW9w X3ByaW50ZiA9IDB4MzEsCiAgICAgYW9wX2xhc3QKICAgfTsKIAwKQEAgLTI2 MCw2ICsyNjEsOCBAQCBleHRlcm4gdm9pZCBheF9yZWdfbWFzayAoc3RydWN0 IGFnZW50X2V4CiAKIC8qIEFzc2VtYmxlIGNvZGUgdG8gb3BlcmF0ZSBvbiBh IHRyYWNlIHN0YXRlIHZhcmlhYmxlLiAgKi8KIGV4dGVybiB2b2lkIGF4X3Rz diAoc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsIGVudW0gYWdlbnRfb3Agb3As IGludCBudW0pOworCitleHRlcm4gdm9pZCBheF9tZW1jcHkgKHN0cnVjdCBh Z2VudF9leHByICp4LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKTsKIAwK IAogLyogRnVuY3Rpb25zIGZvciBwcmludGluZyBvdXQgZXhwcmVzc2lvbnMs IGFuZCBvdGhlcndpc2UgZGVidWdnaW5nCi0tLSBhL3ByaW50Y21kLmMKKysr IGIvcHJpbnRjbWQuYwpAQCAtMTk2MywxMCArMTk2MywxMyBAQCBwcmludF92 YXJpYWJsZV9hbmRfdmFsdWUgKGNvbnN0IGNoYXIgKm5hCiAgIGZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7CiB9CiAKLS8qIHByaW50ZiAicHJp bnRmIGZvcm1hdCBzdHJpbmciIEFSRyB0byBTVFJFQU0uICAqLwordHlwZWRl ZiB2b2lkIChwcmludGZfY2FsbGJhY2spIChjaGFyICpmYnVmLCBjaGFyICoq ZXhwcCwKKwkJCQlzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYywKKwkJCQlzdHJ1 Y3QgYWdlbnRfZXhwciAqYWV4cHIpOwogCi1zdGF0aWMgdm9pZAotdWlfcHJp bnRmIChjaGFyICphcmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCit2b2lk CitzdHJpbmdfcHJpbnRmIChjaGFyICphcmcsIHN0cnVjdCB1aV9maWxlICpz dHJlYW0sIHByaW50Zl9jYWxsYmFjayBjYWxsYmFjaywKKwkgICAgICAgc3Ry dWN0IGJwX2xvY2F0aW9uICpsb2MsIHN0cnVjdCBhZ2VudF9leHByICphZXhw cikKIHsKICAgY2hhciAqZiA9IE5VTEw7CiAgIGNoYXIgKnMgPSBhcmc7CkBA IC0yMjk4LDI2ICsyMzAxLDQyIEBAIHVpX3ByaW50ZiAoY2hhciAqYXJnLCBz 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 ICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQpAQCAtMjY3MiwxMiAr MjY5MSwyMiBAQCB1aV9wcmludGYgKGNoYXIgKmFyZywgc3RydWN0IHVpX2Zp 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 KTsKIApAQCAtNzE5LDYgKzcyOCwyOCBAQCB2YWxpZGF0ZV9hY3Rpb25saW5l IChjaGFyICoqbGluZSwgc3RydWN0CiAJZXJyb3IgKF8oIndoaWxlLXN0ZXBw aW5nIHN0ZXAgY291bnQgYCVzJyBpcyBtYWxmb3JtZWQuIiksICpsaW5lKTsK ICAgICB9CiAKKyAgZWxzZSBpZiAoY21kX2NmdW5jX2VxIChjLCBwcmludGZf Y29tbWFuZCkpCisgICAgeworICAgICAgY2hhciBmYnVmWzEwMV07CisKKyAg ICAgIGZvciAobG9jID0gdC0+bG9jOyBsb2M7IGxvYyA9IGxvYy0+bmV4dCkK Kwl7CisJICBpbnQgbmFyZ3M7CisJICBhZXhwciA9IG5ld19hZ2VudF9leHBy IChsb2MtPmdkYmFyY2gsIGxvYy0+YWRkcmVzcyk7CisJICBvbGRfY2hhaW4g PSBtYWtlX2NsZWFudXBfZnJlZV9hZ2VudF9leHByIChhZXhwcik7CisJICBz dHJpbmdfcHJpbnRmIChwLCBOVUxMLCBnZW5fcHJpbnRmX2V4cHJfY2FsbGJh Y2ssCisJCQkgbG9jLCBhZXhwcik7CisJICBheF9zaW1wbGUgKGFleHByLCBh b3BfZW5kKTsKKwkgIC8qIFRoZSBhZ2VudCBleHByIGluY2x1ZGUgZXhwciBm b3IgYXJndW1lbnRzLCBmb3JtYXQgc3RyaW5nLCAxIGJ5dGUKKwkgICAqIGZv ciBhb3BfcHJpbnRmLCAxIGJ5dGUgZm9yIHRoZSBudW1iZXIgb2YgYXJndW1l bnRzLCAxIGJ5dGUgZm9yCisJICAgKiBzaXplIG9mIGZvcm1hdCBzdHJpbmcs IDEgYnl0ZSBmb3IgYmxhbmsgYWZ0ZXIgZm9ybWF0IHN0cmluZworCSAgICog YW5kIDEgYnl0ZSBmb3IgYW9wX2VuZC4gICovCisJICBpZiAoYWV4cHItPmxl biA+IE1BWF9BR0VOVF9FWFBSX0xFTikKKwkgICAgZXJyb3IgKF8oIkV4cHJl c3Npb24gaXMgdG9vIGNvbXBsaWNhdGVkLiIpKTsKKwkgIGRvX2NsZWFudXBz IChvbGRfY2hhaW4pOworCX0KKyAgICB9CisKICAgZWxzZSBpZiAoY21kX2Nm dW5jX2VxIChjLCBlbmRfYWN0aW9uc19wc2V1ZG9jb21tYW5kKSkKICAgICA7 CiAKQEAgLTE0MzAsNiArMTQ2MSwyMiBAQCBlbmNvZGVfYWN0aW9uc18xIChz dHJ1Y3QgY29tbWFuZF9saW5lICphCiAJICBlbmNvZGVfYWN0aW9uc18xIChh Y3Rpb24tPmJvZHlfbGlzdFswXSwgdCwgdGxvYywgZnJhbWVfcmVnLAogCQkJ ICAgIGZyYW1lX29mZnNldCwgc3RlcHBpbmdfbGlzdCwgTlVMTCk7CiAJfQor ICAgICAgZWxzZSBpZiAoY21kX2NmdW5jX2VxIChjbWQsIHByaW50Zl9jb21t YW5kKSkKKwl7CisgICAgICAgICAgY2hhciBmYnVmWzEwMV07CisJICBzdHJ1 Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gTlVMTDsKKworCSAgYWV4cHIgPSBu ZXdfYWdlbnRfZXhwciAodGxvYy0+Z2RiYXJjaCwgdGxvYy0+YWRkcmVzcyk7 CisJICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9hZ2VudF9leHBy IChhZXhwcik7CisJICBzdHJpbmdfcHJpbnRmIChhY3Rpb25fZXhwLCBOVUxM LCBnZW5fcHJpbnRmX2V4cHJfY2FsbGJhY2ssCisJCQkgdGxvYywgYWV4cHIp OworCSAgYXhfc2ltcGxlIChhZXhwciwgYW9wX2VuZCk7CisKKwkgIGF4X3Jl cXMgKGFleHByKTsKKwkgIHJlcG9ydF9hZ2VudF9yZXFzX2Vycm9ycyAoYWV4 cHIpOworCSAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NoYWluKTsKKwkgIGFk ZF9hZXhwciAoY29sbGVjdCwgYWV4cHIpOworCX0KICAgICAgIGVsc2UKIAll cnJvciAoXygiSW52YWxpZCB0cmFjZXBvaW50IGNvbW1hbmQgJyVzJyIpLCBh Y3Rpb24tPmxpbmUpOwogICAgIH0JCQkJLyogZm9yICovCg== --0016e65b64e09bcb6e0498f3a869--