From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 101087 invoked by alias); 20 Oct 2019 10:26:20 -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 101079 invoked by uid 89); 20 Oct 2019 10:26:20 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-20.4 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.1 spammy=1993, 2006, sk:pypret, UD:py-prettyprint.exp X-HELO: mailsec103.isp.belgacom.be Received: from mailsec103.isp.belgacom.be (HELO mailsec103.isp.belgacom.be) (195.238.20.99) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 20 Oct 2019 10:26:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skynet.be; i=@skynet.be; q=dns/txt; s=securemail; t=1571567176; x=1603103176; h=message-id:subject:from:to:date:in-reply-to:references: mime-version; bh=ypkMafyWv4UtQxxpInXSinEJVNG9tvhCISY9/EXwECc=; b=v4B0W/LMDExLQzHJ+KwYsQ+c3OjEuZS/6DC4ScJLguVX8FgulFqk21Sp sVU8fyQhy9rqmOmzBboVB1o2LA/T4Q==; Received: from unknown (HELO md) ([109.131.135.220]) by relay.skynet.be with ESMTP/TLS/AES256-GCM-SHA384; 20 Oct 2019 12:26:14 +0200 Message-ID: Subject: Re: PING^3 Re: [RFA] Implement 'print -raw-values' and 'set print raw-values on|off' From: Philippe Waroquiers To: gdb-patches@sourceware.org Date: Sun, 20 Oct 2019 10:26:00 -0000 In-Reply-To: References: <20190807193924.32268-1-philippe.waroquiers@skynet.be> Content-Type: multipart/mixed; boundary="=-2HgwXEG8fP7UTpR4d1fI" User-Agent: Evolution 3.30.5-1.1 MIME-Version: 1.0 X-IsSubscribed: yes X-SW-Source: 2019-10/txt/msg00689.txt.bz2 --=-2HgwXEG8fP7UTpR4d1fI Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Content-length: 11288 Ping ? Attaching a patch rebased on recent master. Thanks Philipe On Sun, 2019-09-29 at 17:29 +0200, Philippe Waroquiers wrote: > Ping. > Thanks > Philippe > > On Wed, 2019-08-07 at 21:39 +0200, Philippe Waroquiers wrote: > > The option framework documentation was speaking about a 'print -raw' > > option, but this option does not exist. > > > > This patch implements -raw-values option that tells to ignore the > > active pretty printers when printing a value. > > As we already have -raw-frame-arguments, I thought -raw-values > > was more clear, in particular to differentiate > > set print raw-values and set print raw-frame-arguments. > > > > gdb/doc/ChangeLog > > 2019-08-07 Philippe Waroquiers > > > > * gdb.texinfo (Command Options): Use -p and -pretty in the example, > > as -r is ambiguous. Update the print - TAB TAB completion result. > > (Data): Document new option -raw-values. Use -p and -pretty in the > > example, as -r is ambiguous. > > (Print Settings): Document set print raw values. > > (Pretty-Printer Commands): Document interaction between enabled > > pretty printers and -raw-values/-raw-frame-arguments. > > > > gdb/ChangeLog > > 2019-08-07 Philippe Waroquiers > > > > * NEWS: Document -raw-values option and the related setting commands. > > * printcmd.c (print_command_parse_format): Do not set opts->raw off, > > only set it on when /r is given. > > * valprint.c (value_print_option_defs): New element raw-values. > > * Makefile.in: Add the new file. > > > > 2019-08-07 Philippe Waroquiers > > > > * gdb.base/options.exp: Add -raw-values in the print completion list. > > * gdb.python/py-prettyprint.exp: Add tests for -raw-values. > > --- > > gdb/NEWS | 11 ++++- > > gdb/doc/gdb.texinfo | 51 +++++++++++++++++---- > > gdb/printcmd.c | 6 ++- > > gdb/testsuite/gdb.base/options.exp | 1 + > > gdb/testsuite/gdb.python/py-prettyprint.exp | 10 ++++ > > gdb/valprint.c | 10 ++++ > > 6 files changed, 75 insertions(+), 14 deletions(-) > > > > diff --git a/gdb/NEWS b/gdb/NEWS > > index fa01adf6e8..8f27b102ea 100644 > > --- a/gdb/NEWS > > +++ b/gdb/NEWS > > @@ -101,6 +101,12 @@ show print max-depth > > The default max-depth is 20, but this can be set to unlimited to get > > the old behavior back. > > > > +set print raw-values [on|off] > > +show print raw-values > > + By default, GDB applies the enabled pretty printers when printing a > > + value. This allows to ignore the enabled pretty printers for a series > > + of commands. The default is 'off'. > > + > > set logging debugredirect [on|off] > > By default, GDB debug output will go to both the terminal and the logfile. > > Set if you want debug output to go only to the log file. > > @@ -200,6 +206,7 @@ maint show test-options-completion-result > > -null-stop [on|off] > > -object [on|off] > > -pretty [on|off] > > + -raw-values [on|off] > > -repeats NUMBER|unlimited > > -static-members [on|off] > > -symbol [on|off] > > @@ -244,11 +251,11 @@ maint show test-options-completion-result > > "on" if omitted. This allows writing compact command invocations, > > like for example: > > > > - (gdb) p -r -p -o 0 -- *myptr > > + (gdb) p -ra -p -o 0 -- *myptr > > > > The above is equivalent to: > > > > - (gdb) print -raw -pretty -object off -- *myptr > > + (gdb) print -raw-values -pretty -object off -- *myptr > > > > ** The "info types" command now supports the '-q' flag to disable > > printing of some header information in a similar fashion to "info > > diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo > > index 7f8c0aff1c..f65f8b1764 100644 > > --- a/gdb/doc/gdb.texinfo > > +++ b/gdb/doc/gdb.texinfo > > @@ -1936,8 +1936,8 @@ Some commands take raw input as argument. For example, the print > > command processes arbitrary expressions in any of the languages > > supported by @value{GDBN}. With such commands, because raw input may > > start with a leading dash that would be confused with an option or any > > -of its abbreviations, e.g.@: @code{print -r} (short for @code{print > > --raw} or printing negative @code{r}?), if you specify any command > > +of its abbreviations, e.g.@: @code{print -p} (short for @code{print > > +-pretty} or printing negative @code{p}?), if you specify any command > > option, then you must use a double-dash (@code{--}) delimiter to > > indicate the end of options. > > > > @@ -1963,10 +1963,10 @@ on @code{-} after the command name. For example: > > > > @smallexample > > (@value{GDBP}) print -@key{TAB}@key{TAB} > > --address -max-depth -repeats -vtbl > > --array -null-stop -static-members > > --array-indexes -object -symbol > > --elements -pretty -union > > +-address -max-depth -raw-values -union > > +-array -null-stop -repeats -vtbl > > +-array-indexes -object -static-members > > +-elements -pretty -symbol > > @end smallexample > > > > Completion will in some cases guide you with a suggestion of what kind > > @@ -9541,6 +9541,11 @@ Set printing C@t{++} virtual function tables. Related setting: > > Set pretty formatting of structures. Related setting: @ref{set print > > pretty}. > > > > +@item -raw-values [@code{on}|@code{off}] > > +Set whether to print values in raw form, bypassing any > > +pretty-printers for that value. Related setting: @ref{set print > > +raw-values}. > > + > > @item -repeats @var{number-of-repeats}|@code{unlimited} > > Set threshold for repeated print elements. @code{unlimited} causes > > all elements to be individually printed. Related setting: @ref{set > > @@ -9568,17 +9573,17 @@ may look like options (including abbreviations), if you specify any > > command option, then you must use a double dash (@code{--}) to mark > > the end of option processing. > > > > -For example, this prints the value of the @code{-r} expression: > > +For example, this prints the value of the @code{-p} expression: > > > > @smallexample > > -(@value{GDBP}) print -r > > +(@value{GDBP}) print -p > > @end smallexample > > > > While this repeats the last value in the value history (see below) > > -with the @code{-raw} option in effect: > > +with the @code{-pretty} option in effect: > > > > @smallexample > > -(@value{GDBP}) print -r -- > > +(@value{GDBP}) print -p -- > > @end smallexample > > > > Here is an example including both on option and an expression: > > @@ -11169,6 +11174,20 @@ This is the default format. > > @item show print pretty > > Show which format @value{GDBN} is using to print structures. > > > > +@anchor{set print raw-values} > > +@item set print raw-values on > > +Print values in raw form, without applying the pretty > > +printers for the value. > > + > > +@item set print raw-values off > > +Print values in pretty-printed form, if there is a pretty-printer > > +for the value (@pxref{Pretty Printing}), > > +otherwise print the value in raw form. > > +This is the default. > > + > > +@item show print raw-values > > +Show whether to print values in raw form. > > + > > @item set print sevenbit-strings on > > @cindex eight-bit characters in strings > > @cindex octal escapes in strings > > @@ -11508,6 +11527,18 @@ library2.so: > > Note that for @code{bar} the entire printer can be disabled, > > as can each individual subprinter. > > > > +Printing values and frame arguments is done by default using > > +the enabled pretty printers. > > + > > +The print option @code{-raw-values} and @value{GDBN} setting @xref{set > > +print raw-values} can be used to print values without applying the > > +enabled pretty printers. > > + > > +Similarly, the backtrace option @code{-raw-frame-arguments} and > > +@value{GDBN} setting @xref{set print raw-frame-arguments} can be used > > +to ignore the enabled pretty printers when printing frame argument > > +values > > + > > @node Value History > > @section Value History > > > > diff --git a/gdb/printcmd.c b/gdb/printcmd.c > > index 7529842e73..9c3982338a 100644 > > --- a/gdb/printcmd.c > > +++ b/gdb/printcmd.c > > @@ -1142,6 +1142,9 @@ print_command_parse_format (const char **expp, const char *cmdname, > > { > > const char *exp = *expp; > > > > + /* opts->raw value might already have been set by 'set print raw-values' > > + or by using 'print -raw-values'. > > + So, do not set opts->raw to 0, only set it to 1 if /r is given. */ > > if (exp && *exp == '/') > > { > > format_data fmt; > > @@ -1152,12 +1155,11 @@ print_command_parse_format (const char **expp, const char *cmdname, > > last_format = fmt.format; > > > > opts->format = fmt.format; > > - opts->raw = fmt.raw; > > + opts->raw = opts->raw || fmt.raw; > > } > > else > > { > > opts->format = 0; > > - opts->raw = 0; > > } > > > > *expp = exp; > > diff --git a/gdb/testsuite/gdb.base/options.exp b/gdb/testsuite/gdb.base/options.exp > > index 7a18fe936b..78ddc26577 100644 > > --- a/gdb/testsuite/gdb.base/options.exp > > +++ b/gdb/testsuite/gdb.base/options.exp > > @@ -168,6 +168,7 @@ proc_with_prefix test-print {{prefix ""}} { > > "-null-stop" > > "-object" > > "-pretty" > > + "-raw-values" > > "-repeats" > > "-static-members" > > "-symbol" > > diff --git a/gdb/testsuite/gdb.python/py-prettyprint.exp b/gdb/testsuite/gdb.python/py-prettyprint.exp > > index 82e7e65031..3d88f7e9f2 100644 > > --- a/gdb/testsuite/gdb.python/py-prettyprint.exp > > +++ b/gdb/testsuite/gdb.python/py-prettyprint.exp > > @@ -199,3 +199,13 @@ gdb_test_no_output "python enable_lookup_function ()" > > > > gdb_test "print ss" " = a=< a=<1> b=<$hex>> b=< a=<2> b=<$hex>>" \ > > "print ss enabled #2" > > + > > +gdb_test "print -raw-values -- ss" " = {a = {a = 1, b = $hex}, b = {a = 2, b = $hex}}" \ > > + "print -raw-values -- ss" > > + > > +gdb_test "print -raw-values on -- ss" " = {a = {a = 1, b = $hex}, b = {a = 2, b = $hex}}" \ > > + "print -raw-values on -- ss" > > + > > +gdb_test "with print raw-values -- print ss" " = {a = {a = 1, b = $hex}, b = {a = 2, b = $hex}}" \ > > + "with print raw-values -- print ss" > > + > > diff --git a/gdb/valprint.c b/gdb/valprint.c > > index e5b28f3ee9..96e8ff6dca 100644 > > --- a/gdb/valprint.c > > +++ b/gdb/valprint.c > > @@ -3192,6 +3192,16 @@ Use \"unlimited\" to print the complete structure.") > > NULL, /* help_doc */ > > }, > > > > + boolean_option_def { > > + "raw-values", > > + [] (value_print_options *opt) { return &opt->raw; }, > > + NULL, /* show_cmd_cb */ > > + N_("Set whether to print values in raw form."), > > + N_("Show whether to print values in raw form."), > > + N_("If set, values are printed in raw form, bypassing any\n\ > > +pretty-printers for that value.") > > + }, > > + > > uinteger_option_def { > > "repeats", > > [] (value_print_options *opt) { return &opt->repeat_count_threshold; }, --=-2HgwXEG8fP7UTpR4d1fI Content-Disposition: attachment; filename="patch_ping.txt" Content-Transfer-Encoding: base64 Content-Type: text/plain; name="patch_ping.txt"; charset="UTF-8" Content-length: 14002 RnJvbSBjNGJhMjc2NmRkYWI1ZTNmNDZkMjc4MWQ5ODc0MDIzMTM1MTZlMGI1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBXYXJv cXVpZXJzIDxwaGlsaXBwZS53YXJvcXVpZXJzQHNreW5ldC5iZT4KRGF0ZTog V2VkLCA3IEF1ZyAyMDE5IDIwOjUwOjU0ICswMjAwClN1YmplY3Q6IFtQQVRD SF0gSW1wbGVtZW50ICdwcmludCAtcmF3LXZhbHVlcycgYW5kICdzZXQgcHJp bnQgcmF3LXZhbHVlcwogb258b2ZmJwoKVGhlIG9wdGlvbiBmcmFtZXdvcmsg ZG9jdW1lbnRhdGlvbiB3YXMgc3BlYWtpbmcgYWJvdXQgYSAncHJpbnQgLXJh dycKb3B0aW9uLCBidXQgdGhpcyBvcHRpb24gZG9lcyBub3QgZXhpc3QuCgpU aGlzIHBhdGNoIGltcGxlbWVudHMgLXJhdy12YWx1ZXMgb3B0aW9uIHRoYXQg dGVsbHMgdG8gaWdub3JlIHRoZQphY3RpdmUgcHJldHR5IHByaW50ZXJzIHdo ZW4gcHJpbnRpbmcgYSB2YWx1ZS4KQXMgd2UgYWxyZWFkeSBoYXZlIC1yYXct ZnJhbWUtYXJndW1lbnRzLCBJIHRob3VnaHQgLXJhdy12YWx1ZXMKd2FzIG1v cmUgY2xlYXIsIGluIHBhcnRpY3VsYXIgdG8gZGlmZmVyZW50aWF0ZQogICBz ZXQgcHJpbnQgcmF3LXZhbHVlcyBhbmQgc2V0IHByaW50IHJhdy1mcmFtZS1h cmd1bWVudHMuCgpnZGIvZG9jL0NoYW5nZUxvZwoyMDE5LTA4LTA3ICBQaGls aXBwZSBXYXJvcXVpZXJzICA8cGhpbGlwcGUud2Fyb3F1aWVyc0Bza3luZXQu YmU+CgogICAgICAgICogZ2RiLnRleGluZm8gKENvbW1hbmQgT3B0aW9ucyk6 IFVzZSAtcCBhbmQgLXByZXR0eSBpbiB0aGUgZXhhbXBsZSwKCWFzIC1yIGlz IGFtYmlndW91cy4gIFVwZGF0ZSB0aGUgcHJpbnQgLSBUQUIgVEFCIGNvbXBs ZXRpb24gcmVzdWx0LgoJKERhdGEpOiBEb2N1bWVudCBuZXcgb3B0aW9uIC1y YXctdmFsdWVzLiAgVXNlIC1wIGFuZCAtcHJldHR5IGluIHRoZQoJIGV4YW1w bGUsIGFzIC1yIGlzIGFtYmlndW91cy4KCShQcmludCBTZXR0aW5ncyk6IERv Y3VtZW50IHNldCBwcmludCByYXcgdmFsdWVzLgoJKFByZXR0eS1QcmludGVy IENvbW1hbmRzKTogRG9jdW1lbnQgaW50ZXJhY3Rpb24gYmV0d2VlbiBlbmFi bGVkCglwcmV0dHkgcHJpbnRlcnMgYW5kIC1yYXctdmFsdWVzLy1yYXctZnJh bWUtYXJndW1lbnRzLgoKZ2RiL0NoYW5nZUxvZwoyMDE5LTA4LTA3ICBQaGls aXBwZSBXYXJvcXVpZXJzICA8cGhpbGlwcGUud2Fyb3F1aWVyc0Bza3luZXQu YmU+CgoJKiBORVdTOiBEb2N1bWVudCAtcmF3LXZhbHVlcyBvcHRpb24gYW5k IHRoZSByZWxhdGVkIHNldHRpbmcgY29tbWFuZHMuCgkqIHByaW50Y21kLmMg KHByaW50X2NvbW1hbmRfcGFyc2VfZm9ybWF0KTogRG8gbm90IHNldCBvcHRz LT5yYXcgb2ZmLAoJb25seSBzZXQgaXQgb24gd2hlbiAvciBpcyBnaXZlbi4K CSogdmFscHJpbnQuYyAodmFsdWVfcHJpbnRfb3B0aW9uX2RlZnMpOiBOZXcg ZWxlbWVudCByYXctdmFsdWVzLgoJKiBNYWtlZmlsZS5pbjogQWRkIHRoZSBu ZXcgZmlsZS4KCjIwMTktMDgtMDcgIFBoaWxpcHBlIFdhcm9xdWllcnMgIDxw aGlsaXBwZS53YXJvcXVpZXJzQHNreW5ldC5iZT4KCgkqIGdkYi5iYXNlL29w dGlvbnMuZXhwOiBBZGQgLXJhdy12YWx1ZXMgaW4gdGhlIHByaW50IGNvbXBs ZXRpb24gbGlzdC4KCSogZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHA6 IEFkZCB0ZXN0cyBmb3IgLXJhdy12YWx1ZXMuCi0tLQogZ2RiL05FV1MgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExICsrKystCiBn ZGIvZG9jL2dkYi50ZXhpbmZvICAgICAgICAgICAgICAgICAgICAgICAgIHwg NTIgKysrKysrKysrKysrKysrKystLS0tCiBnZGIvcHJpbnRjbWQuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKystCiBnZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL29wdGlvbnMuZXhwICAgICAgICAgIHwgIDEgKwogZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cCB8IDEw ICsrKysKIGdkYi92YWxwcmludC5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAxMCArKysrCiA2IGZpbGVzIGNoYW5nZWQsIDc2IGluc2VydGlv bnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dkYi9ORVdT IGIvZ2RiL05FV1MKaW5kZXggMjVlNjdlNDNjOC4uMWNlMTc0ZDFiOSAxMDA2 NDQKLS0tIGEvZ2RiL05FV1MKKysrIGIvZ2RiL05FV1MKQEAgLTEyMCw2ICsx MjAsMTIgQEAgc2hvdyBwcmludCBtYXgtZGVwdGgKICAgVGhlIGRlZmF1bHQg bWF4LWRlcHRoIGlzIDIwLCBidXQgdGhpcyBjYW4gYmUgc2V0IHRvIHVubGlt aXRlZCB0byBnZXQKICAgdGhlIG9sZCBiZWhhdmlvciBiYWNrLgogCitzZXQg cHJpbnQgcmF3LXZhbHVlcyBbb258b2ZmXQorc2hvdyBwcmludCByYXctdmFs dWVzCisgIEJ5IGRlZmF1bHQsIEdEQiBhcHBsaWVzIHRoZSBlbmFibGVkIHBy ZXR0eSBwcmludGVycyB3aGVuIHByaW50aW5nIGEKKyAgdmFsdWUuICBUaGlz IGFsbG93cyB0byBpZ25vcmUgdGhlIGVuYWJsZWQgcHJldHR5IHByaW50ZXJz IGZvciBhIHNlcmllcworICBvZiBjb21tYW5kcy4gIFRoZSBkZWZhdWx0IGlz ICdvZmYnLgorCiBzZXQgbG9nZ2luZyBkZWJ1Z3JlZGlyZWN0IFtvbnxvZmZd CiAgIEJ5IGRlZmF1bHQsIEdEQiBkZWJ1ZyBvdXRwdXQgd2lsbCBnbyB0byBi b3RoIHRoZSB0ZXJtaW5hbCBhbmQgdGhlIGxvZ2ZpbGUuCiAgIFNldCBpZiB5 b3Ugd2FudCBkZWJ1ZyBvdXRwdXQgdG8gZ28gb25seSB0byB0aGUgbG9nIGZp bGUuCkBAIC0yMjIsNiArMjI4LDcgQEAgZm9jdXMsIHdpbmhlaWdodCwgKywg LSwgPiwgPAogICAgICAgLW51bGwtc3RvcCBbb258b2ZmXQogICAgICAgLW9i amVjdCBbb258b2ZmXQogICAgICAgLXByZXR0eSBbb258b2ZmXQorICAgICAg LXJhdy12YWx1ZXMgW29ufG9mZl0KICAgICAgIC1yZXBlYXRzIE5VTUJFUnx1 bmxpbWl0ZWQKICAgICAgIC1zdGF0aWMtbWVtYmVycyBbb258b2ZmXQogICAg ICAgLXN5bWJvbCBbb258b2ZmXQpAQCAtMjY2LDExICsyNzMsMTEgQEAgZm9j dXMsIHdpbmhlaWdodCwgKywgLSwgPiwgPAogICAgIm9uIiBpZiBvbWl0dGVk LiAgVGhpcyBhbGxvd3Mgd3JpdGluZyBjb21wYWN0IGNvbW1hbmQgaW52b2Nh dGlvbnMsCiAgICBsaWtlIGZvciBleGFtcGxlOgogCi0gICAgKGdkYikgcCAt ciAtcCAtbyAwIC0tICpteXB0cgorICAgIChnZGIpIHAgLXJhIC1wIC1vIDAg LS0gKm15cHRyCiAKICAgIFRoZSBhYm92ZSBpcyBlcXVpdmFsZW50IHRvOgog Ci0gICAgKGdkYikgcHJpbnQgLXJhdyAtcHJldHR5IC1vYmplY3Qgb2ZmIC0t ICpteXB0cgorICAgIChnZGIpIHByaW50IC1yYXctdmFsdWVzIC1wcmV0dHkg LW9iamVjdCBvZmYgLS0gKm15cHRyCiAKICAgKiogVGhlICJpbmZvIHR5cGVz IiBjb21tYW5kIG5vdyBzdXBwb3J0cyB0aGUgJy1xJyBmbGFnIHRvIGRpc2Fi bGUKICAgICAgcHJpbnRpbmcgb2Ygc29tZSBoZWFkZXIgaW5mb3JtYXRpb24g aW4gYSBzaW1pbGFyIGZhc2hpb24gdG8gImluZm8KZGlmZiAtLWdpdCBhL2dk Yi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCmluZGV4 IDEyMDhlNGY2MTUuLjc3NDlmOTBkOTYgMTAwNjQ0Ci0tLSBhL2dkYi9kb2Mv Z2RiLnRleGluZm8KKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwpAQCAtMTkz Niw4ICsxOTM2LDggQEAgU29tZSBjb21tYW5kcyB0YWtlIHJhdyBpbnB1dCBh cyBhcmd1bWVudC4gIEZvciBleGFtcGxlLCB0aGUgcHJpbnQKIGNvbW1hbmQg cHJvY2Vzc2VzIGFyYml0cmFyeSBleHByZXNzaW9ucyBpbiBhbnkgb2YgdGhl IGxhbmd1YWdlcwogc3VwcG9ydGVkIGJ5IEB2YWx1ZXtHREJOfS4gIFdpdGgg c3VjaCBjb21tYW5kcywgYmVjYXVzZSByYXcgaW5wdXQgbWF5CiBzdGFydCB3 aXRoIGEgbGVhZGluZyBkYXNoIHRoYXQgd291bGQgYmUgY29uZnVzZWQgd2l0 aCBhbiBvcHRpb24gb3IgYW55Ci1vZiBpdHMgYWJicmV2aWF0aW9ucywgZS5n LkA6IEBjb2Rle3ByaW50IC1yfSAoc2hvcnQgZm9yIEBjb2Rle3ByaW50Ci0t cmF3fSBvciBwcmludGluZyBuZWdhdGl2ZSBAY29kZXtyfT8pLCBpZiB5b3Ug c3BlY2lmeSBhbnkgY29tbWFuZAorb2YgaXRzIGFiYnJldmlhdGlvbnMsIGUu Zy5AOiBAY29kZXtwcmludCAtcH0gKHNob3J0IGZvciBAY29kZXtwcmludAor LXByZXR0eX0gb3IgcHJpbnRpbmcgbmVnYXRpdmUgQGNvZGV7cH0/KSwgaWYg eW91IHNwZWNpZnkgYW55IGNvbW1hbmQKIG9wdGlvbiwgdGhlbiB5b3UgbXVz dCB1c2UgYSBkb3VibGUtZGFzaCAoQGNvZGV7LS19KSBkZWxpbWl0ZXIgdG8K IGluZGljYXRlIHRoZSBlbmQgb2Ygb3B0aW9ucy4KIApAQCAtMTk2MywxMCAr MTk2MywxMCBAQCBvbiBAY29kZXstfSBhZnRlciB0aGUgY29tbWFuZCBuYW1l LiAgRm9yIGV4YW1wbGU6CiAKIEBzbWFsbGV4YW1wbGUKIChAdmFsdWV7R0RC UH0pIHByaW50IC1Aa2V5e1RBQn1Aa2V5e1RBQn0KLS1hZGRyZXNzICAgICAg ICAgLW1heC1kZXB0aCAgICAgICAtcmVwZWF0cyAgICAgICAgIC12dGJsCi0t YXJyYXkgICAgICAgICAgIC1udWxsLXN0b3AgICAgICAgLXN0YXRpYy1tZW1i ZXJzCi0tYXJyYXktaW5kZXhlcyAgIC1vYmplY3QgICAgICAgICAgLXN5bWJv bAotLWVsZW1lbnRzICAgICAgICAtcHJldHR5ICAgICAgICAgIC11bmlvbgor LWFkZHJlc3MgICAgICAgICAtbWF4LWRlcHRoICAgICAgIC1yYXctdmFsdWVz ICAgICAgLXVuaW9uCistYXJyYXkgICAgICAgICAgIC1udWxsLXN0b3AgICAg ICAgLXJlcGVhdHMgICAgICAgICAtdnRibAorLWFycmF5LWluZGV4ZXMgICAt b2JqZWN0ICAgICAgICAgIC1zdGF0aWMtbWVtYmVycworLWVsZW1lbnRzICAg ICAgICAtcHJldHR5ICAgICAgICAgIC1zeW1ib2wKIEBlbmQgc21hbGxleGFt cGxlCiAKIENvbXBsZXRpb24gd2lsbCBpbiBzb21lIGNhc2VzIGd1aWRlIHlv dSB3aXRoIGEgc3VnZ2VzdGlvbiBvZiB3aGF0IGtpbmQKQEAgLTk2MzMsNiAr OTYzMywxMSBAQCBTZXQgcHJpbnRpbmcgQ0B0eysrfSB2aXJ0dWFsIGZ1bmN0 aW9uIHRhYmxlcy4gIFJlbGF0ZWQgc2V0dGluZzoKIFNldCBwcmV0dHkgZm9y bWF0dGluZyBvZiBzdHJ1Y3R1cmVzLiAgUmVsYXRlZCBzZXR0aW5nOiBAcmVm e3NldCBwcmludAogcHJldHR5fS4KIAorQGl0ZW0gLXJhdy12YWx1ZXMgW0Bj b2Rle29ufXxAY29kZXtvZmZ9XQorU2V0IHdoZXRoZXIgdG8gcHJpbnQgdmFs dWVzIGluIHJhdyBmb3JtLCBieXBhc3NpbmcgYW55CitwcmV0dHktcHJpbnRl cnMgZm9yIHRoYXQgdmFsdWUuICBSZWxhdGVkIHNldHRpbmc6IEByZWZ7c2V0 IHByaW50CityYXctdmFsdWVzfS4KKwogQGl0ZW0gLXJlcGVhdHMgQHZhcntu dW1iZXItb2YtcmVwZWF0c318QGNvZGV7dW5saW1pdGVkfQogU2V0IHRocmVz aG9sZCBmb3IgcmVwZWF0ZWQgcHJpbnQgZWxlbWVudHMuICBAY29kZXt1bmxp bWl0ZWR9IGNhdXNlcwogYWxsIGVsZW1lbnRzIHRvIGJlIGluZGl2aWR1YWxs eSBwcmludGVkLiAgUmVsYXRlZCBzZXR0aW5nOiBAcmVme3NldApAQCAtOTY2 MCwxNyArOTY2NSwxNyBAQCBtYXkgbG9vayBsaWtlIG9wdGlvbnMgKGluY2x1 ZGluZyBhYmJyZXZpYXRpb25zKSwgaWYgeW91IHNwZWNpZnkgYW55CiBjb21t YW5kIG9wdGlvbiwgdGhlbiB5b3UgbXVzdCB1c2UgYSBkb3VibGUgZGFzaCAo QGNvZGV7LS19KSB0byBtYXJrCiB0aGUgZW5kIG9mIG9wdGlvbiBwcm9jZXNz aW5nLgogCi1Gb3IgZXhhbXBsZSwgdGhpcyBwcmludHMgdGhlIHZhbHVlIG9m IHRoZSBAY29kZXstcn0gZXhwcmVzc2lvbjoKK0ZvciBleGFtcGxlLCB0aGlz IHByaW50cyB0aGUgdmFsdWUgb2YgdGhlIEBjb2Rley1wfSBleHByZXNzaW9u OgogCiBAc21hbGxleGFtcGxlCi0oQHZhbHVle0dEQlB9KSBwcmludCAtcgor KEB2YWx1ZXtHREJQfSkgcHJpbnQgLXAKIEBlbmQgc21hbGxleGFtcGxlCiAK IFdoaWxlIHRoaXMgcmVwZWF0cyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgdmFs dWUgaGlzdG9yeSAoc2VlIGJlbG93KQotd2l0aCB0aGUgQGNvZGV7LXJhd30g b3B0aW9uIGluIGVmZmVjdDoKK3dpdGggdGhlIEBjb2Rley1wcmV0dHl9IG9w dGlvbiBpbiBlZmZlY3Q6CiAKIEBzbWFsbGV4YW1wbGUKLShAdmFsdWV7R0RC UH0pIHByaW50IC1yIC0tCisoQHZhbHVle0dEQlB9KSBwcmludCAtcCAtLQog QGVuZCBzbWFsbGV4YW1wbGUKIAogSGVyZSBpcyBhbiBleGFtcGxlIGluY2x1 ZGluZyBib3RoIG9uIG9wdGlvbiBhbmQgYW4gZXhwcmVzc2lvbjoKQEAgLTEx MjYxLDYgKzExMjY2LDIxIEBAIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9ybWF0 LgogQGl0ZW0gc2hvdyBwcmludCBwcmV0dHkKIFNob3cgd2hpY2ggZm9ybWF0 IEB2YWx1ZXtHREJOfSBpcyB1c2luZyB0byBwcmludCBzdHJ1Y3R1cmVzLgog CitAYW5jaG9ye3NldCBwcmludCByYXctdmFsdWVzfQorQGl0ZW0gc2V0IHBy aW50IHJhdy12YWx1ZXMgb24KK1ByaW50IHZhbHVlcyBpbiByYXcgZm9ybSwg d2l0aG91dCBhcHBseWluZyB0aGUgcHJldHR5CitwcmludGVycyBmb3IgdGhl IHZhbHVlLgorCitAaXRlbSBzZXQgcHJpbnQgcmF3LXZhbHVlcyBvZmYKK1By aW50IHZhbHVlcyBpbiBwcmV0dHktcHJpbnRlZCBmb3JtLCBpZiB0aGVyZSBp cyBhIHByZXR0eS1wcmludGVyCitmb3IgdGhlIHZhbHVlIChAcHhyZWZ7UHJl dHR5IFByaW50aW5nfSksCitvdGhlcndpc2UgcHJpbnQgdGhlIHZhbHVlIGlu IHJhdyBmb3JtLgorCitUaGUgZGVmYXVsdCBzZXR0aW5nIGlzIGBgb2ZmJycu CisKK0BpdGVtIHNob3cgcHJpbnQgcmF3LXZhbHVlcworU2hvdyB3aGV0aGVy IHRvIHByaW50IHZhbHVlcyBpbiByYXcgZm9ybS4KKwogQGl0ZW0gc2V0IHBy aW50IHNldmVuYml0LXN0cmluZ3Mgb24KIEBjaW5kZXggZWlnaHQtYml0IGNo YXJhY3RlcnMgaW4gc3RyaW5ncwogQGNpbmRleCBvY3RhbCBlc2NhcGVzIGlu IHN0cmluZ3MKQEAgLTExNjAwLDYgKzExNjIwLDE4IEBAIGxpYnJhcnkyLnNv OgogTm90ZSB0aGF0IGZvciBAY29kZXtiYXJ9IHRoZSBlbnRpcmUgcHJpbnRl ciBjYW4gYmUgZGlzYWJsZWQsCiBhcyBjYW4gZWFjaCBpbmRpdmlkdWFsIHN1 YnByaW50ZXIuCiAKK1ByaW50aW5nIHZhbHVlcyBhbmQgZnJhbWUgYXJndW1l bnRzIGlzIGRvbmUgYnkgZGVmYXVsdCB1c2luZwordGhlIGVuYWJsZWQgcHJl dHR5IHByaW50ZXJzLgorCitUaGUgcHJpbnQgb3B0aW9uIEBjb2Rley1yYXct dmFsdWVzfSBhbmQgQHZhbHVle0dEQk59IHNldHRpbmcKK0Bjb2Rle3NldCBw cmludCByYXctdmFsdWVzfSAoQHB4cmVme3NldCBwcmludCByYXctdmFsdWVz fSkgY2FuIGJlCit1c2VkIHRvIHByaW50IHZhbHVlcyB3aXRob3V0IGFwcGx5 aW5nIHRoZSBlbmFibGVkIHByZXR0eSBwcmludGVycy4KKworU2ltaWxhcmx5 LCB0aGUgYmFja3RyYWNlIG9wdGlvbiBAY29kZXstcmF3LWZyYW1lLWFyZ3Vt ZW50c30gYW5kCitAdmFsdWV7R0RCTn0gc2V0dGluZyBAY29kZXtzZXQgcHJp bnQgcmF3LWZyYW1lLWFyZ3VtZW50c30KKyhAcHhyZWZ7c2V0IHByaW50IHJh dy1mcmFtZS1hcmd1bWVudHN9KSBjYW4gYmUgdXNlZCB0byBpZ25vcmUgdGhl CitlbmFibGVkIHByZXR0eSBwcmludGVycyB3aGVuIHByaW50aW5nIGZyYW1l IGFyZ3VtZW50IHZhbHVlcy4KKwogQG5vZGUgVmFsdWUgSGlzdG9yeQogQHNl Y3Rpb24gVmFsdWUgSGlzdG9yeQogCmRpZmYgLS1naXQgYS9nZGIvcHJpbnRj bWQuYyBiL2dkYi9wcmludGNtZC5jCmluZGV4IDI3YWFmN2EwNzYuLmJiNmRj YTI1OTQgMTAwNjQ0Ci0tLSBhL2dkYi9wcmludGNtZC5jCisrKyBiL2dkYi9w cmludGNtZC5jCkBAIC0xMTUyLDYgKzExNTIsOSBAQCBwcmludF9jb21tYW5k X3BhcnNlX2Zvcm1hdCAoY29uc3QgY2hhciAqKmV4cHAsIGNvbnN0IGNoYXIg KmNtZG5hbWUsCiB7CiAgIGNvbnN0IGNoYXIgKmV4cCA9ICpleHBwOwogCisg IC8qIG9wdHMtPnJhdyB2YWx1ZSBtaWdodCBhbHJlYWR5IGhhdmUgYmVlbiBz ZXQgYnkgJ3NldCBwcmludCByYXctdmFsdWVzJworICAgICBvciBieSB1c2lu ZyAncHJpbnQgLXJhdy12YWx1ZXMnLgorICAgICBTbywgZG8gbm90IHNldCBv cHRzLT5yYXcgdG8gMCwgb25seSBzZXQgaXQgdG8gMSBpZiAvciBpcyBnaXZl bi4gICovCiAgIGlmIChleHAgJiYgKmV4cCA9PSAnLycpCiAgICAgewogICAg ICAgZm9ybWF0X2RhdGEgZm10OwpAQCAtMTE2MiwxMiArMTE2NSwxMSBAQCBw cmludF9jb21tYW5kX3BhcnNlX2Zvcm1hdCAoY29uc3QgY2hhciAqKmV4cHAs IGNvbnN0IGNoYXIgKmNtZG5hbWUsCiAgICAgICBsYXN0X2Zvcm1hdCA9IGZt dC5mb3JtYXQ7CiAKICAgICAgIG9wdHMtPmZvcm1hdCA9IGZtdC5mb3JtYXQ7 Ci0gICAgICBvcHRzLT5yYXcgPSBmbXQucmF3OworICAgICAgb3B0cy0+cmF3 ID0gb3B0cy0+cmF3IHx8IGZtdC5yYXc7CiAgICAgfQogICBlbHNlCiAgICAg ewogICAgICAgb3B0cy0+Zm9ybWF0ID0gMDsKLSAgICAgIG9wdHMtPnJhdyA9 IDA7CiAgICAgfQogCiAgICpleHBwID0gZXhwOwpkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9vcHRpb25zLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2Uvb3B0aW9ucy5leHAKaW5kZXggN2ExOGZlOTM2Yi4uNzhk ZGMyNjU3NyAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9v cHRpb25zLmV4cAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL29wdGlv bnMuZXhwCkBAIC0xNjgsNiArMTY4LDcgQEAgcHJvY193aXRoX3ByZWZpeCB0 ZXN0LXByaW50IHt7cHJlZml4ICIifX0gewogCSItbnVsbC1zdG9wIgogCSIt b2JqZWN0IgogCSItcHJldHR5IgorCSItcmF3LXZhbHVlcyIKIAkiLXJlcGVh dHMiCiAJIi1zdGF0aWMtbWVtYmVycyIKIAkiLXN5bWJvbCIKZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQu ZXhwCmluZGV4IDgyZTdlNjUwMzEuLjNkODhmN2U5ZjIgMTAwNjQ0Ci0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAK KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50 LmV4cApAQCAtMTk5LDMgKzE5OSwxMyBAQCBnZGJfdGVzdF9ub19vdXRwdXQg InB5dGhvbiBlbmFibGVfbG9va3VwX2Z1bmN0aW9uICgpIgogCiBnZGJfdGVz dCAicHJpbnQgc3MiICIgPSBhPTwgYT08MT4gYj08JGhleD4+IGI9PCBhPTwy PiBiPTwkaGV4Pj4iIFwKICAgICAicHJpbnQgc3MgZW5hYmxlZCAjMiIKKwor Z2RiX3Rlc3QgInByaW50IC1yYXctdmFsdWVzIC0tIHNzIiAiID0ge2EgPSB7 YSA9IDEsIGIgPSAkaGV4fSwgYiA9IHthID0gMiwgYiA9ICRoZXh9fSIgXAor ICAgICJwcmludCAtcmF3LXZhbHVlcyAtLSBzcyIKKworZ2RiX3Rlc3QgInBy aW50IC1yYXctdmFsdWVzIG9uIC0tIHNzIiAiID0ge2EgPSB7YSA9IDEsIGIg PSAkaGV4fSwgYiA9IHthID0gMiwgYiA9ICRoZXh9fSIgXAorICAgICJwcmlu dCAtcmF3LXZhbHVlcyBvbiAtLSBzcyIKKworZ2RiX3Rlc3QgIndpdGggcHJp bnQgcmF3LXZhbHVlcyAtLSBwcmludCBzcyIgIiA9IHthID0ge2EgPSAxLCBi ID0gJGhleH0sIGIgPSB7YSA9IDIsIGIgPSAkaGV4fX0iIFwKKyAgICAid2l0 aCBwcmludCByYXctdmFsdWVzIC0tIHByaW50IHNzIgorCmRpZmYgLS1naXQg YS9nZGIvdmFscHJpbnQuYyBiL2dkYi92YWxwcmludC5jCmluZGV4IDU2MTZk YjEyZWYuLjc5NGZhZTg4ZTYgMTAwNjQ0Ci0tLSBhL2dkYi92YWxwcmludC5j CisrKyBiL2dkYi92YWxwcmludC5jCkBAIC0zMTk4LDYgKzMxOTgsMTYgQEAg VXNlIFwidW5saW1pdGVkXCIgdG8gcHJpbnQgdGhlIGNvbXBsZXRlIHN0cnVj dHVyZS4iKQogICAgIE5VTEwsIC8qIGhlbHBfZG9jICovCiAgIH0sCiAKKyAg Ym9vbGVhbl9vcHRpb25fZGVmIHsKKyAgICAicmF3LXZhbHVlcyIsCisgICAg W10gKHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdCkgeyByZXR1cm4gJm9wdC0+ cmF3OyB9LAorICAgIE5VTEwsIC8qIHNob3dfY21kX2NiICovCisgICAgTl8o IlNldCB3aGV0aGVyIHRvIHByaW50IHZhbHVlcyBpbiByYXcgZm9ybS4iKSwK KyAgICBOXygiU2hvdyB3aGV0aGVyIHRvIHByaW50IHZhbHVlcyBpbiByYXcg Zm9ybS4iKSwKKyAgICBOXygiSWYgc2V0LCB2YWx1ZXMgYXJlIHByaW50ZWQg aW4gcmF3IGZvcm0sIGJ5cGFzc2luZyBhbnlcblwKK3ByZXR0eS1wcmludGVy cyBmb3IgdGhhdCB2YWx1ZS4iKQorICB9LAorCiAgIHVpbnRlZ2VyX29wdGlv bl9kZWYgewogICAgICJyZXBlYXRzIiwKICAgICBbXSAodmFsdWVfcHJpbnRf b3B0aW9ucyAqb3B0KSB7IHJldHVybiAmb3B0LT5yZXBlYXRfY291bnRfdGhy ZXNob2xkOyB9LAotLSAKMi4yMC4xCgo= --=-2HgwXEG8fP7UTpR4d1fI--