From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3185 invoked by alias); 11 Apr 2013 02:41:43 -0000 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 Received: (qmail 3134 invoked by uid 89); 11 Apr 2013 02:41:43 -0000 X-Spam-SWARE-Status: No, score=-4.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_EG autolearn=ham version=3.3.1 Received: from mail-ob0-f182.google.com (HELO mail-ob0-f182.google.com) (209.85.214.182) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Thu, 11 Apr 2013 02:41:40 +0000 Received: by mail-ob0-f182.google.com with SMTP id ef5so1017542obb.41 for ; Wed, 10 Apr 2013 19:41:39 -0700 (PDT) X-Received: by 10.182.118.42 with SMTP id kj10mr1642857obb.99.1365648098984; Wed, 10 Apr 2013 19:41:38 -0700 (PDT) MIME-Version: 1.0 Received: by 10.60.13.133 with HTTP; Wed, 10 Apr 2013 19:40:58 -0700 (PDT) In-Reply-To: <516454DA.9040109@redhat.com> References: <515451EA.1000200@mentor.com> <83y5d7wpvq.fsf@gnu.org> <516454DA.9040109@redhat.com> From: Hui Zhu Date: Thu, 11 Apr 2013 06:15:00 -0000 Message-ID: Subject: Re: [PATCH] add -s option to make -break-insert support dprintf To: Pedro Alves Cc: Eli Zaretskii , Hui Zhu , gdb-patches ml , Marc Khouzam Content-Type: multipart/mixed; boundary=f46d0447878dd40c6e04da0cb94f X-Virus-Found: No X-SW-Source: 2013-04/txt/msg00296.txt.bz2 --f46d0447878dd40c6e04da0cb94f Content-Type: text/plain; charset=ISO-8859-1 Content-length: 5354 Hi Pedro, Thanks for your review. On Wed, Apr 10, 2013 at 1:50 AM, Pedro Alves wrote: > Hi Hui, > > Thanks for the patch. > > New MI features need a NEWS entry. This is for NEWS: ** The -s of MI command -break-insert can set a dynamic printf. > > On 03/29/2013 08:01 AM, Hui Zhu wrote: > >> + if (hardware && dprintf) >> + error (_("-break-insert: -h and -s cannot be use together")); > > "cannot be used" Fixed. > >> @@ -180,11 +189,14 @@ mi_cmd_break_insert (char *command, char >> regular non-jump based tracepoints. */ >> type_wanted = (tracepoint >> ? (hardware ? bp_fast_tracepoint : bp_tracepoint) >> - : (hardware ? bp_hardware_breakpoint : bp_breakpoint)); >> - ops = tracepoint ? &tracepoint_breakpoint_ops : &bkpt_breakpoint_ops; >> + : (hardware ? bp_hardware_breakpoint >> + : (dprintf ? bp_dprintf : bp_breakpoint))); >> + ops = tracepoint ? &tracepoint_breakpoint_ops >> + : (dprintf ? &dprintf_breakpoint_ops >> + : &bkpt_breakpoint_ops); > > This is getting unnecessarily hard for humans to grok. Write > instead as (untested): > > if (tracepoint) > { > /* move existing comment on fast tracepoints here */ > type_wanted = hardware ? bp_fast_tracepoint : bp_tracepoint; > ops = &tracepoint_breakpoint_ops; > } > else if (dprintf) > { > type_wanted = bp_dprintf; > ops = &dprintf_breakpoint_ops; > } > else > { > type_wanted = hardware ? bp_hardware_breakpoint : bp_breakpoint; > ops = &bkpt_breakpoint_ops; > } > Fixed. > >> +@item -s "@var{template},@var{expression}[,@var{expression}@dots{}]" >> +Set a dynamic printf breakpoint, described in @ref{Dynamic Printf}. >> +The @var{location}, @var{template} and @var{expression} should be >> +within double quotations and be escaped by being preceded with a backslash. > > Please remove the "location" mention here. It's stale. > > I think you either say "double quotation marks" or "double quotes", > never "double quotation". Fixed. > >> >> 2013-03-29 Hui Zhu >> >> * breakpoint.c (dprintf_breakpoint_ops): Remove its static. >> * breakpoint.h (dprintf_breakpoint_ops): Add extern. >> * mi/mi-cmd-break.c (mi_cmd_break_insert): Describe the "-s" option. > > Not really describing... "Handle"? Fixed. > >> 2013-03-29 Hui Zhu >> >> * gdb.mi/Makefile.in (PROGS): Add "mi-dprintf". >> * gdb.mi/mi-dprintf.c, gdb.mi/mi-dprintf.h: New. > > Missing reference to mi-dprintf.exp. Fixed. > > >> + foo (loc++); >> + foo (loc++); >> + foo (loc++); >> + return g; >> +} >> + >> +#include > > Headers at the top, please. Fixed. > >> +/* Make sure function 'malloc' is linked into program. On some bare-metal >> + port, if we don't use 'malloc', it will not be linked in program. 'malloc' >> + is needed, otherwise we'll see such error message >> + > > >> +standard_testfile .c > > .c is the default. Fixed. > >> +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { >> + untested mi-dprintf.exp > > http://sourceware.org/gdb/wiki/GDBTestcaseCookbook#A.22untested.22_calls > Looks test doesn't need it now. So I removed it. > > > >> +set target_can_dprintf 1 > > This should start out as 0. More below. > >> +set msg "Set dprintf style to agent" >> +mi_gdb_test "1set dprintf-style agent" "\[^\n\]*\r\ndone" >> +gdb_expect { >> + -re "\\^done" { >> + pass "$msg - can do" > > and be set to 1 here. > > Should expect ${mi_gdb_prompt} too. > >> + } >> + -re ".*" { > > Should expect ${mi_gdb_prompt} too. > But what this actually expecting? Is it: > > "warning: Target cannot run dprintf commands, falling back to GDB printf" > > ? Please adjust the -re accordingly. > >> + set target_can_dprintf 0 >> + pass "$msg - cannot do" > >> + } >> + timeout { >> + fail "resume all, waiting for program exit (timeout)" > > Certainly "resume all" is a pasto here. pasto? > > Related to the comment to "set target_can_dprintf 1" above, > e.g., this failure path didn't set target_can_dprintf to 0. > >> + } >> +} >> + >> +if $target_can_dprintf { > > Why do I get: > > PASS: gdb.mi/mi-dprintf.exp: Set dprintf style to agent - cannot do > > with gdbserver? Set dprintf style to agent need test with gdbserver. I update this pass to unsupported. And also update this part to make it test OK with gdbserver. > > (The test tries the same thing with a few different options. I suspect > it could be simplified with loops and with_test_prefix.) I moved them to a proc and add with_test_prefix. I post a new version according to your comments. Please help me review it. Best, Hui > > -- > Pedro Alves 2013-04-11 Hui Zhu * breakpoint.c (dprintf_breakpoint_ops): Remove its static. * breakpoint.h (dprintf_breakpoint_ops): Add extern. * mi/mi-cmd-break.c (mi_cmd_break_insert): Handle the "-s" option. 2013-04-11 Hui Zhu * gdb.texinfo (GDB/MI Breakpoint Commands): Describe the "-s" option. 2013-04-11 Hui Zhu * gdb.mi/Makefile.in (PROGS): Add "mi-dprintf". * gdb.mi/mi-dprintf.exp, gdb.mi/mi-dprintf.c: New. --f46d0447878dd40c6e04da0cb94f Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf.txt" Content-Disposition: attachment; filename="mi-dprintf.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hfdbkjsg0 Content-length: 5185 LS0tIGEvYnJlYWtwb2ludC5jCisrKyBiL2JyZWFrcG9pbnQuYwpAQCAtMzA1 LDcgKzMwNSw3IEBAIHN0cnVjdCBicmVha3BvaW50X29wcyBia3B0X2JyZWFr cG9pbnRfb3AKIHN0YXRpYyBzdHJ1Y3QgYnJlYWtwb2ludF9vcHMgYmtwdF9w cm9iZV9icmVha3BvaW50X29wczsKIAogLyogRHluYW1pYyBwcmludGYgY2xh c3MgdHlwZS4gICovCi1zdGF0aWMgc3RydWN0IGJyZWFrcG9pbnRfb3BzIGRw cmludGZfYnJlYWtwb2ludF9vcHM7CitzdHJ1Y3QgYnJlYWtwb2ludF9vcHMg ZHByaW50Zl9icmVha3BvaW50X29wczsKIAogLyogVGhlIHN0eWxlIGluIHdo aWNoIHRvIHBlcmZvcm0gYSBkeW5hbWljIHByaW50Zi4gIFRoaXMgaXMgYSB1 c2VyCiAgICBvcHRpb24gYmVjYXVzZSBkaWZmZXJlbnQgb3V0cHV0IG9wdGlv bnMgaGF2ZSBkaWZmZXJlbnQgdHJhZGVvZmZzOwotLS0gYS9icmVha3BvaW50 LmgKKysrIGIvYnJlYWtwb2ludC5oCkBAIC0xMjEyLDYgKzEyMTIsNyBAQCBl eHRlcm4gdm9pZCB0YnJlYWtfY29tbWFuZCAoY2hhciAqLCBpbnQpCiBleHRl cm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIGJhc2VfYnJlYWtwb2ludF9vcHM7 CiBleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIGJrcHRfYnJlYWtwb2lu dF9vcHM7CiBleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIHRyYWNlcG9p bnRfYnJlYWtwb2ludF9vcHM7CitleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRf b3BzIGRwcmludGZfYnJlYWtwb2ludF9vcHM7CiAKIGV4dGVybiB2b2lkIGlu aXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpOwogCi0tLSBhL21pL21p LWNtZC1icmVhay5jCisrKyBiL21pL21pLWNtZC1icmVhay5jCkBAIC05OSwx NSArOTksMTcgQEAgbWlfY21kX2JyZWFrX2luc2VydCAoY2hhciAqY29tbWFu ZCwgY2hhcgogICBpbnQgcGVuZGluZyA9IDA7CiAgIGludCBlbmFibGVkID0g MTsKICAgaW50IHRyYWNlcG9pbnQgPSAwOworICBpbnQgZHByaW50ZiA9IDA7 CiAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwogICBlbnVtIGJwdHlwZSB0 eXBlX3dhbnRlZDsKICAgc3RydWN0IGJyZWFrcG9pbnRfb3BzICpvcHM7Cisg IGNoYXIgKmV4dHJhX3N0cmluZyA9IE5VTEw7CiAKICAgZW51bSBvcHQKICAg ICB7CiAgICAgICBIQVJEV0FSRV9PUFQsIFRFTVBfT1BULCBDT05ESVRJT05f T1BULAogICAgICAgSUdOT1JFX0NPVU5UX09QVCwgVEhSRUFEX09QVCwgUEVO RElOR19PUFQsIERJU0FCTEVfT1BULAotICAgICAgVFJBQ0VQT0lOVF9PUFQs CisgICAgICBUUkFDRVBPSU5UX09QVCwgRFBSSU5URl9PUFQsCiAgICAgfTsK ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaV9vcHQgb3B0c1tdID0KICAgewpA QCAtMTE5LDYgKzEyMSw3IEBAIG1pX2NtZF9icmVha19pbnNlcnQgKGNoYXIg KmNvbW1hbmQsIGNoYXIKICAgICB7ImYiLCBQRU5ESU5HX09QVCwgMH0sCiAg ICAgeyJkIiwgRElTQUJMRV9PUFQsIDB9LAogICAgIHsiYSIsIFRSQUNFUE9J TlRfT1BULCAwfSwKKyAgICB7InMiLCBEUFJJTlRGX09QVCwgMX0sCiAgICAg eyAwLCAwLCAwIH0KICAgfTsKIApAQCAtMTU5LDkgKzE2MiwxNSBAQCBtaV9j bWRfYnJlYWtfaW5zZXJ0IChjaGFyICpjb21tYW5kLCBjaGFyCiAJY2FzZSBU UkFDRVBPSU5UX09QVDoKIAkgIHRyYWNlcG9pbnQgPSAxOwogCSAgYnJlYWs7 CisJY2FzZSBEUFJJTlRGX09QVDoKKwkgIGV4dHJhX3N0cmluZyA9IG9hcmc7 CisJICBkcHJpbnRmID0gMTsKKwkgIGJyZWFrOwogCX0KICAgICB9CiAKKyAg aWYgKGhhcmR3YXJlICYmIGRwcmludGYpCisgICAgZXJyb3IgKF8oIi1icmVh ay1pbnNlcnQ6IC1oIGFuZCAtcyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIp KTsKICAgaWYgKG9pbmQgPj0gYXJnYykKICAgICBlcnJvciAoXygiLWJyZWFr LWluc2VydDogTWlzc2luZyA8bG9jYXRpb24+IikpOwogICBpZiAob2luZCA8 IGFyZ2MgLSAxKQpAQCAtMTcxLDIwICsxODAsMzEgQEAgbWlfY21kX2JyZWFr X2luc2VydCAoY2hhciAqY29tbWFuZCwgY2hhcgogICAvKiBOb3cgd2UgaGF2 ZSB3aGF0IHdlIG5lZWQsIGxldCdzIGluc2VydCB0aGUgYnJlYWtwb2ludCEg ICovCiAgIGJhY2tfdG8gPSBzZXR1cF9icmVha3BvaW50X3JlcG9ydGluZyAo KTsKIAotICAvKiBOb3RlIHRoYXQgdG8gcmVxdWVzdCBhIGZhc3QgdHJhY2Vw b2ludCwgdGhlIGNsaWVudCB1c2VzIHRoZQotICAgICAiaGFyZHdhcmUiIGZs YWcsIGFsdGhvdWdoIHRoZXJlJ3Mgbm90aGluZyBvZiBoYXJkd2FyZSByZWxh dGVkIHRvCi0gICAgIGZhc3QgdHJhY2Vwb2ludHMgLS0gb25lIGNhbiBpbXBs ZW1lbnQgc2xvdyB0cmFjZXBvaW50cyB3aXRoCi0gICAgIGhhcmR3YXJlIGJy ZWFrcG9pbnRzLCBidXQgZmFzdCB0cmFjZXBvaW50cyBhcmUgYWx3YXlzIHNv ZnR3YXJlLgotICAgICAiZmFzdCIgaXMgYSBtaXNub21lciwgYWN0dWFsbHks ICJqdW1wIiB3b3VsZCBiZSBtb3JlIGFwcHJvcHJpYXRlLgotICAgICBBIHNp bXVsYXRvciBvciBhbiBlbXVsYXRvciBjb3VsZCBjb25jZWl2YWJseSBpbXBs ZW1lbnQgZmFzdAotICAgICByZWd1bGFyIG5vbi1qdW1wIGJhc2VkIHRyYWNl cG9pbnRzLiAgKi8KLSAgdHlwZV93YW50ZWQgPSAodHJhY2Vwb2ludAotCQkg PyAoaGFyZHdhcmUgPyBicF9mYXN0X3RyYWNlcG9pbnQgOiBicF90cmFjZXBv aW50KQotCQkgOiAoaGFyZHdhcmUgPyBicF9oYXJkd2FyZV9icmVha3BvaW50 IDogYnBfYnJlYWtwb2ludCkpOwotICBvcHMgPSB0cmFjZXBvaW50ID8gJnRy YWNlcG9pbnRfYnJlYWtwb2ludF9vcHMgOiAmYmtwdF9icmVha3BvaW50X29w czsKKyAgaWYgKHRyYWNlcG9pbnQpCisgICAgeworICAgICAgLyogTm90ZSB0 aGF0IHRvIHJlcXVlc3QgYSBmYXN0IHRyYWNlcG9pbnQsIHRoZSBjbGllbnQg dXNlcyB0aGUKKwkgImhhcmR3YXJlIiBmbGFnLCBhbHRob3VnaCB0aGVyZSdz IG5vdGhpbmcgb2YgaGFyZHdhcmUgcmVsYXRlZCB0bworCSBmYXN0IHRyYWNl cG9pbnRzIC0tIG9uZSBjYW4gaW1wbGVtZW50IHNsb3cgdHJhY2Vwb2ludHMg d2l0aAorCSBoYXJkd2FyZSBicmVha3BvaW50cywgYnV0IGZhc3QgdHJhY2Vw b2ludHMgYXJlIGFsd2F5cyBzb2Z0d2FyZS4KKwkgImZhc3QiIGlzIGEgbWlz bm9tZXIsIGFjdHVhbGx5LCAianVtcCIgd291bGQgYmUgbW9yZSBhcHByb3By aWF0ZS4KKwkgQSBzaW11bGF0b3Igb3IgYW4gZW11bGF0b3IgY291bGQgY29u Y2VpdmFibHkgaW1wbGVtZW50IGZhc3QKKwkgcmVndWxhciBub24tanVtcCBi YXNlZCB0cmFjZXBvaW50cy4gICovCisgICAgICB0eXBlX3dhbnRlZCA9IGhh cmR3YXJlID8gYnBfZmFzdF90cmFjZXBvaW50IDogYnBfdHJhY2Vwb2ludDsK KyAgICAgIG9wcyA9ICZ0cmFjZXBvaW50X2JyZWFrcG9pbnRfb3BzOworICAg IH0KKyAgZWxzZSBpZiAoZHByaW50ZikKKyAgICB7CisgICAgICB0eXBlX3dh bnRlZCA9IGJwX2RwcmludGY7CisgICAgICBvcHMgPSAmZHByaW50Zl9icmVh a3BvaW50X29wczsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICB0eXBl X3dhbnRlZCA9IGhhcmR3YXJlID8gYnBfaGFyZHdhcmVfYnJlYWtwb2ludCA6 IGJwX2JyZWFrcG9pbnQ7CisgICAgICBvcHMgPSAmYmtwdF9icmVha3BvaW50 X29wczsKKyAgICB9CiAKICAgY3JlYXRlX2JyZWFrcG9pbnQgKGdldF9jdXJy ZW50X2FyY2ggKCksIGFkZHJlc3MsIGNvbmRpdGlvbiwgdGhyZWFkLAotCQkg ICAgIE5VTEwsCisJCSAgICAgZXh0cmFfc3RyaW5nLAogCQkgICAgIDAgLyog Y29uZGl0aW9uIGFuZCB0aHJlYWQgYXJlIHZhbGlkLiAgKi8sCiAJCSAgICAg dGVtcF9wLCB0eXBlX3dhbnRlZCwKIAkJICAgICBpZ25vcmVfY291bnQsCg== --f46d0447878dd40c6e04da0cb94f Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf-doc.txt" Content-Disposition: attachment; filename="mi-dprintf-doc.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hfdbkjta1 Content-length: 2176 LS0tIGEvZG9jL2dkYi50ZXhpbmZvCisrKyBiL2RvYy9nZGIudGV4aW5mbwpA QCAtMjg3MDIsNyArMjg3MDIsOSBAQCBOLkEuCiBAc21hbGxleGFtcGxlCiAg LWJyZWFrLWluc2VydCBbIC10IF0gWyAtaCBdIFsgLWYgXSBbIC1kIF0gWyAt YSBdCiAgICAgWyAtYyBAdmFye2NvbmRpdGlvbn0gXSBbIC1pIEB2YXJ7aWdu b3JlLWNvdW50fSBdCi0gICAgWyAtcCBAdmFye3RocmVhZC1pZH0gXSBbIEB2 YXJ7bG9jYXRpb259IF0KKyAgICBbIC1wIEB2YXJ7dGhyZWFkLWlkfSBdCisg ICAgWyAtcyAiQHZhcnt0ZW1wbGF0ZX0sQHZhcntleHByZXNzaW9ufVssQHZh cntleHByZXNzaW9ufUBkb3Rze31dIiBdCisgICAgWyBAdmFye2xvY2F0aW9u fSBdCiBAZW5kIHNtYWxsZXhhbXBsZQogCiBAbm9pbmRlbnQKQEAgLTI4NzQy LDYgKzI4NzQ0LDI5IEBAIE1ha2UgdGhlIGJyZWFrcG9pbnQgY29uZGl0aW9u YWwgb24gQHZhcnsKIEluaXRpYWxpemUgdGhlIEB2YXJ7aWdub3JlLWNvdW50 fS4KIEBpdGVtIC1wIEB2YXJ7dGhyZWFkLWlkfQogUmVzdHJpY3QgdGhlIGJy ZWFrcG9pbnQgdG8gdGhlIHNwZWNpZmllZCBAdmFye3RocmVhZC1pZH0uCitA aXRlbSAtcyAiQHZhcnt0ZW1wbGF0ZX0sQHZhcntleHByZXNzaW9ufVssQHZh cntleHByZXNzaW9ufUBkb3Rze31dIgorU2V0IGEgZHluYW1pYyBwcmludGYg YnJlYWtwb2ludCwgZGVzY3JpYmVkIGluIEByZWZ7RHluYW1pYyBQcmludGZ9 LgorVGhlIEB2YXJ7dGVtcGxhdGV9IGFuZCBAdmFye2V4cHJlc3Npb259IHNo b3VsZCBiZSB3aXRoaW4gZG91YmxlCitxdW90ZXMgYW5kIGJlIGVzY2FwZWQg YnkgYmVpbmcgcHJlY2VkZWQgd2l0aCBhIGJhY2tzbGFzaC4KKworQHNtYWxs ZXhhbXBsZQorKGdkYikKKzQtYnJlYWstaW5zZXJ0IC1zICJcIkF0IGZvbyBl bnRyeVxcblwiIiBmb28KKzReZG9uZSxia3B0PUB7bnVtYmVyPSIxIix0eXBl PSJkcHJpbnRmIixkaXNwPSJrZWVwIixlbmFibGVkPSJ5IiwKK2FkZHI9IjB4 MDAwMDAwMDAwMDQwMDYxYiIsZnVuYz0iZm9vIixmaWxlPSJtaS1kcHJpbnRm LmMiLAorZnVsbG5hbWU9Im1pLWRwcmludGYuYyIsbGluZT0iMjUiLHRocmVh ZC1ncm91cHM9WyJpMSJdLAordGltZXM9IjAiLHNjcmlwdD1AeyJwcmludGYg XCJBdCBmb28gZW50cnlcXG5cIiIsImNvbnRpbnVlIkB9LAorb3JpZ2luYWwt bG9jYXRpb249ImZvbyJAfQorKGdkYikKKzUtYnJlYWstaW5zZXJ0IC1zICJc ImFyZz0lZCwgZz0lZFxcblwiLCBhcmcsIGciIDI2Cis1XmRvbmUsYmtwdD1A e251bWJlcj0iMiIsdHlwZT0iZHByaW50ZiIsZGlzcD0ia2VlcCIsZW5hYmxl ZD0ieSIsCithZGRyPSIweDAwMDAwMDAwMDA0MDA2MmEiLGZ1bmM9ImZvbyIs ZmlsZT0ibWktZHByaW50Zi5jIiwKK2Z1bGxuYW1lPSJtaS1kcHJpbnRmLmMi LGxpbmU9IjI2Iix0aHJlYWQtZ3JvdXBzPVsiaTEiXSwKK3RpbWVzPSIwIixz Y3JpcHQ9QHsicHJpbnRmIFwiYXJnPSVkLCBnPSVkXFxuXCIsIGFyZywgZyIs ImNvbnRpbnVlIkB9LAorb3JpZ2luYWwtbG9jYXRpb249Im1pLWRwcmludGYu YzoyNiJAfQorKGdkYikKK0BlbmQgc21hbGxleGFtcGxlCisKIEBlbmQgdGFi bGUKIAogQHN1YnN1YmhlYWRpbmcgUmVzdWx0Cg== --f46d0447878dd40c6e04da0cb94f Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf-test.txt" Content-Disposition: attachment; filename="mi-dprintf-test.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hfdbkjtd2 Content-length: 9732 LS0tIGEvdGVzdHN1aXRlL2dkYi5taS9NYWtlZmlsZS5pbgorKysgYi90ZXN0 c3VpdGUvZ2RiLm1pL01ha2VmaWxlLmluCkBAIC0zLDcgKzMsNyBAQCBzcmNk aXIgPSBAc3JjZGlyQAogCiBQUk9HUyA9IGJhc2ljcyBjX3ZhcmlhYmxlIGNw cF92YXJpYWJsZSB2YXItY21kIGR3Mi1yZWYtbWlzc2luZy1mcmFtZQlcCiAJ Z2RiNjY5LXB0aHJlYWRzIGdkYjcwMSBnZGI3OTIgbWktYXN5bmMgbWktYmFz aWNzIG1pLWJyZWFrCVwKLQltaS1jbGkgbWktY29uc29sZSBtaS1kaXNhc3Nl bWJsZSBtaS1ldmFsIG1pLWZpbGUJCVwKKwltaS1jbGkgbWktY29uc29sZSBt aS1kaXNhc3NlbWJsZSBtaS1kcHJpbnRmIG1pLWV2YWwgbWktZmlsZQlcCiAJ bWktZmlsZS10cmFuc2ZlciBtaS1ub24tc3RvcCBtaS1ub24tc3RvcC1leGl0 CQkJXAogCW1pLW5zLXN0YWxlLXJlZ2NhY2hlIG1pLW5zaW50cmFsbCBtaS1u c21vcmlidW5kIG1pLW5zdGhyZXhlYwlcCiAJbWktcGVuZGluZyBtaS1wdGhy ZWFkcyBtaS1yZWFkLW1lbW9yeSBtaS1yZWdzIG1pLXJldHVybgkJXAotLS0g L2Rldi9udWxsCisrKyBiL3Rlc3RzdWl0ZS9nZGIubWkvbWktZHByaW50Zi5j CkBAIC0wLDAgKzEsNTkgQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBv ZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAoQykg MjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRy aWJ1dGVkIGJ5IEh1aSBaaHUgIDxodWlAY29kZXNvdXJjZXJ5LmNvbT4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPHN0ZGlv Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKK3N0YXRpYyBpbnQgZzsKKwor dm9pZAorZm9vIChpbnQgYXJnKQoreworICBnICs9IGFyZzsKKyAgZyAqPSAy OyAvKiBzZXQgZHByaW50ZiAxIGhlcmUgKi8KKyAgZyAvPSAyLjU7IC8qIHNl dCBicmVha3BvaW50IDEgaGVyZSAqLworfQorCitpbnQKK21haW4gKGludCBh cmdjLCBjaGFyICphcmd2W10pCit7CisgIGludCBsb2MgPSAxMjM0OworCisg IC8qIEVuc3VyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZS4gICov CisgIHByaW50ZiAoImtpY2tvZmYgJWRcbiIsIGxvYyk7CisgIGZwcmludGYg KHN0ZGVyciwgImFsc28gdG8gc3RkZXJyICVkXG4iLCBsb2MpOworCisgIGZv byAobG9jKyspOworICBmb28gKGxvYysrKTsKKyAgZm9vIChsb2MrKyk7Cisg IHJldHVybiBnOworfQorCisvKiBNYWtlIHN1cmUgZnVuY3Rpb24gJ21hbGxv YycgaXMgbGlua2VkIGludG8gcHJvZ3JhbS4gIE9uIHNvbWUgYmFyZS1tZXRh bAorICAgcG9ydCwgaWYgd2UgZG9uJ3QgdXNlICdtYWxsb2MnLCBpdCB3aWxs IG5vdCBiZSBsaW5rZWQgaW4gcHJvZ3JhbS4gICdtYWxsb2MnCisgICBpcyBu ZWVkZWQsIG90aGVyd2lzZSB3ZSdsbCBzZWUgc3VjaCBlcnJvciBtZXNzYWdl CisgICBldmFsdWF0aW9uIG9mIHRoaXMgZXhwcmVzc2lvbiByZXF1aXJlcyB0 aGUgcHJvZ3JhbSB0byBoYXZlIGEgZnVuY3Rpb24KKyAgICJtYWxsb2MiLiAg Ki8KKwordm9pZAorYmFyICh2b2lkKQoreworICB2b2lkICpwID0gbWFsbG9j ICgxNik7CisKKyAgZnJlZSAocCk7Cit9Ci0tLSAvZGV2L251bGwKKysrIGIv dGVzdHN1aXRlL2dkYi5taS9taS1kcHJpbnRmLmV4cApAQCAtMCwwICsxLDEy MCBAQAorIyAgIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKyMgICBDb250cmlidXRlZCBieSBIdWkgWmh1ICA8 aHVpQGNvZGVzb3VyY2VyeS5jb20+CisKKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK2xv YWRfbGliIG1pLXN1cHBvcnQuZXhwCitzZXQgTUlGTEFHUyAiLWk9bWkiCisK K2dkYl9leGl0CitpZiBbbWlfZ2RiX3N0YXJ0XSB7CisgICAgY29udGludWUK K30KKworc3RhbmRhcmRfdGVzdGZpbGUKKworaWYgIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9 IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0geworICAgICB1bnRlc3Rl ZCBtaS1kcHJpbnRmLmV4cAorICAgICByZXR1cm4gLTEKK30KKworbWlfZGVs ZXRlX2JyZWFrcG9pbnRzCisKK3NldCBicF9sb2NhdGlvbjEgW2dkYl9nZXRf bGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDEgaGVyZSJdCitzZXQgZHBf bG9jYXRpb24xIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgZHByaW50ZiAx IGhlcmUiXQorCittaV9ydW5fdG9fbWFpbgorCittaV9nZGJfdGVzdCAiMS1i cmVhay1pbnNlcnQgLXMiIFwKKyAgICAiMVxcXmVycm9yLG1zZz1cIi1icmVh ay1pbnNlcnQ6IE9wdGlvbiAtcyByZXF1aXJlcyBhbiBhcmd1bWVudFwiIiAi bWkgaW5zZXJ0IHdpdGhvdXQgbG9jYXRpb24iCisKK21pX2dkYl90ZXN0ICIy LWJyZWFrLWluc2VydCAtcyBmb28iIFwKKyAgICAiMlxcXmVycm9yLG1zZz1c Ii1icmVhay1pbnNlcnQ6IE1pc3NpbmcgPGxvY2F0aW9uPlwiIiAibWkgaW5z ZXJ0IGJyZWFrcG9pbnQgd2l0aG91dCBmb3JtYXQgc3RyaW5nIgorCittaV9n ZGJfdGVzdCAiMy1icmVhay1pbnNlcnQgLXMgMjkiIFwKKyAgICAiM1xcXmVy cm9yLG1zZz1cIi1icmVhay1pbnNlcnQ6IE1pc3NpbmcgPGxvY2F0aW9uPlwi IiAibWkgaW5zZXJ0IHNlY29uZCBicmVha3BvaW50IHdpdGhvdXQgZm9ybWF0 IHN0cmluZyIKKworbWlfZ2RiX3Rlc3QgIi1icmVhay1pbnNlcnQgbWFpbiIg Ii4qIiAibWkgaW5zZXJ0IGJyZWFrcG9pbnQgbWFpbiIKK21pX2RlbGV0ZV9i cmVha3BvaW50cworCittaV9nZGJfdGVzdCAiNC1icmVhay1pbnNlcnQgLXMg XCJcXFwiQXQgZm9vIGVudHJ5XFxcXG5cXFwiXCIgZm9vIiBcCisgICAgIjRc XF5kb25lLGJrcHQ9XHtudW1iZXI9XCIuKlwiLHR5cGU9XCJkcHJpbnRmXCIu KmZ1bmM9XCJmb29cIixmaWxlPVwiLiptaS1kcHJpbnRmLmNcIixmdWxsbmFt ZT1cIi4qbWktZHByaW50Zi5jXCIsbGluZT1cIi4qXCIuKiIgIm1pIGluc2Vy dCBkcHJpbnRmIGZvbyIKKworbWlfZ2RiX3Rlc3QgIjUtYnJlYWstaW5zZXJ0 IC1zIFwiXFxcImFyZz0lZCwgZz0lZFxcXFxuXFxcIiwgYXJnLCBnXCIgJGRw X2xvY2F0aW9uMSIgXAorICAgICI1XFxeZG9uZSxia3B0PVx7bnVtYmVyPVwi LipcIix0eXBlPVwiZHByaW50ZlwiLipmdW5jPVwiZm9vXCIsZmlsZT1cIi4q bWktZHByaW50Zi5jXCIsZnVsbG5hbWU9XCIuKm1pLWRwcmludGYuY1wiLGxp bmU9XCIkZHBfbG9jYXRpb24xXCIuKiIgXAorICAgICJtaSBpbnNlcnQgZHBy aW50ZiBkcF9sb2NhdGlvbjEiCisKK21pX2dkYl90ZXN0ICI2LWJyZWFrLWlu Zm8iIFwKKyAgICAiNlxcXmRvbmUsQnJlYWtwb2ludFRhYmxlPVx7bnJfcm93 cz1cIi5cIixucl9jb2xzPVwiLlwiLGhkcj1cXFxbXHt3aWR0aD1cIi4qXCIs YWxpZ25tZW50PVwiLipcIixjb2xfbmFtZT1cIm51bWJlclwiLGNvbGhkcj1c Ik51bVwiXH0sXHt3aWR0aD1cIi4qXCIsYWxpZ25tZW50PVwiLipcIixjb2xf bmFtZT1cInR5cGVcIixjb2xoZHI9XCJUeXBlXCJcfSxce3dpZHRoPVwiLipc IixhbGlnbm1lbnQ9XCIuKlwiLGNvbF9uYW1lPVwiZGlzcFwiLGNvbGhkcj1c IkRpc3BcIlx9LFx7d2lkdGg9XCIuKlwiLGFsaWdubWVudD1cIi4qXCIsY29s X25hbWU9XCJlbmFibGVkXCIsY29saGRyPVwiRW5iXCJcfSxce3dpZHRoPVwi LipcIixhbGlnbm1lbnQ9XCIuKlwiLGNvbF9uYW1lPVwiYWRkclwiLGNvbGhk cj1cIkFkZHJlc3NcIlx9LFx7d2lkdGg9XCIuKlwiLGFsaWdubWVudD1cIi4q XCIsY29sX25hbWU9XCJ3aGF0XCIsY29saGRyPVwiV2hhdFwiXH1cXFxdLGJv ZHk9XFxcW2JrcHQ9XHtudW1iZXI9XCIzXCIsdHlwZT1cImRwcmludGZcIi4q ZnVuYz1cImZvb1wiLGZpbGU9XCIuKm1pLWRwcmludGYuY1wiLGZ1bGxuYW1l PVwiLiptaS1kcHJpbnRmLmNcIixsaW5lPVwiLipcIi4qLGJrcHQ9XHtudW1i ZXI9XCIuKlwiLHR5cGU9XCJkcHJpbnRmXCIuKmZ1bmM9XCJmb29cIixmaWxl PVwiLiptaS1kcHJpbnRmLmNcIixmdWxsbmFtZT1cIi4qbWktZHByaW50Zi5j XCIsbGluZT1cIiRkcF9sb2NhdGlvbjFcIi4qIiBcCisgICAgIm1pIGluZm8g ZHByaW50ZiIKKworbWlfZ2RiX3Rlc3QgIi1icmVhay1pbnNlcnQgJGJwX2xv Y2F0aW9uMSIgIi4qIiAibWkgaW5zZXJ0IGJyZWFrcG9pbnQgYnBfbG9jYXRp b24xIgorCitwcm9jIG1pX2NvbnRpbnVlX2RwcmludGYge2FyZ3N9IHsKKyAg ICB3aXRoX3Rlc3RfcHJlZml4ICRhcmdzIHsKKwltaV9ydW5fY21kCisJbWlf Z2RiX3Rlc3QgImNvbnRpbnVlIiAiLipBdCBmb28gZW50cnkuKmFyZz0xMjM0 LCBnPTEyMzQuKiIgIm1pIDFzdCBkcHJpbnRmIgorCW1pX2dkYl90ZXN0ICJj b250aW51ZSIgIi4qQXQgZm9vIGVudHJ5Liphcmc9MTIzNSwgZz0yMjIyLioi ICJtaSAybmQgZHByaW50ZiIKKyAgICB9Cit9CisKK21pX2NvbnRpbnVlX2Rw cmludGYgImdkYiIKKworIyBUaGUgImNhbGwiIHN0eWxlIGRlcGVuZHMgb24g aGF2aW5nIEkvTyBmdW5jdGlvbnMgYXZhaWxhYmxlLCBzbyB0ZXN0LgorCitp ZiAhW3RhcmdldF9pbmZvIGV4aXN0cyBnZGIsbm9pbmZlcmlvcmlvXSB7CisK KyAgICAjIE5vdyBzd2l0Y2ggc3R5bGVzIGFuZCByZXJ1bjsgaW4gdGhlIGFi c2VuY2Ugb2YgcmVkaXJlY3Rpb24gdGhlCisgICAgIyBvdXRwdXQgc2hvdWxk IGJlIHRoZSBzYW1lLgorCisgICAgbWlfZ2RiX3Rlc3QgInNldCBkcHJpbnRm LXN0eWxlIGNhbGwiICIuKiIgIm1pIHNldCBkcHJpbnRmIHN0eWxlIHRvIGNh bGwiCisgICAgbWlfY29udGludWVfZHByaW50ZiAiY2FsbCIKKworICAgIG1p X2dkYl90ZXN0ICJzZXQgZHByaW50Zi1mdW5jdGlvbiBmcHJpbnRmIiAiLioi ICJtaSBzZXQgZHByaW50Zi1jaGFubmVsIHN0ZGVyciIKKyAgICBtaV9nZGJf dGVzdCAic2V0IGRwcmludGYtY2hhbm5lbCBzdGRlcnIiICIuKiIgIm1pIHNl dCBkcHJpbnRmIGNoYW5uZWwiCisgICAgbWlfY29udGludWVfZHByaW50ZiAi ZnByaW50ZiIKK30KKworIyBTbGVlcCAxIHNlY29uZCB0byBtYWtlIHN1cmUg c2V0IGRwcmludGYtc3R5bGUgYWdlbnQgZ2V0IHJpZ2h0IG91dG91dC4KK3Ns ZWVwIDEKK3NldCB0YXJnZXRfY2FuX2RwcmludGYgMAorc2V0IG1zZyAic2V0 IGRwcmludGYgc3R5bGUgdG8gYWdlbnQiCitzZW5kX2dkYiAic2V0IGRwcmlu dGYtc3R5bGUgYWdlbnRcbiIKK2dkYl9leHBlY3QgeworICAgIC1yZSAid2Fy bmluZzogVGFyZ2V0IGNhbm5vdCBydW4gZHByaW50ZiBjb21tYW5kcywgZmFs bGluZyBiYWNrIHRvIEdEQiBwcmludGYuKiRtaV9nZGJfcHJvbXB0JCIgewor CXVuc3VwcG9ydGVkICIkbXNnIgorICAgIH0KKyAgICAtcmUgImRvbmUuKiRt aV9nZGJfcHJvbXB0JCIgeworCXNldCB0YXJnZXRfY2FuX2RwcmludGYgMQor CXBhc3MgIiRtc2ciCisgICAgfQorICAgIC1yZSAiLiokbWlfZ2RiX3Byb21w dCQiIHsKKwlmYWlsICIkbXNnIgorICAgIH0KKyAgICB0aW1lb3V0IHsKKyAg ICAgICBmYWlsICJyZXN1bWUgYWxsLCB3YWl0aW5nIGZvciBwcm9ncmFtIGV4 aXQgKHRpbWVvdXQpIgorICAgIH0KK30KKworaWYgJHRhcmdldF9jYW5fZHBy aW50ZiB7CisgICAgbWlfcnVuX2NtZAorCisgICAgbWlfZ2RiX3Rlc3QgImNv bnRpbnVlIiAiLipicmVha3BvaW50LWhpdC4qZnVuYz1cImZvb1wiLioiICJt aSAxc3QgZHByaW50ZiwgYWdlbnQiCisKKyAgICBtaV9nZGJfdGVzdCAiY29u dGludWUiICIuKmJyZWFrcG9pbnQtaGl0LipmdW5jPVwiZm9vXCIuKiIgIm1p IDJuZCBkcHJpbnRmLCBhZ2VudCIKKworICAgIG1pX2dkYl90ZXN0ICI2LWJy ZWFrLWluZm8iICIuKm1vZGlmaWVkLioiICJtaSBpbmZvIGRwcmludGYgc2Vj b25kIHRpbWUiCit9CisKK21pX2dkYl90ZXN0ICJzZXQgZHByaW50Zi1zdHls ZSBmb29iYXIiICIuKmVycm9yLioiICJtaSBzZXQgZHByaW50ZiBzdHlsZSB0 byBhbiB1bnJlY29nbml6ZWQgdHlwZSIK --f46d0447878dd40c6e04da0cb94f--