qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Richard Henderson <rth@twiddle.net>
Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org,
	dgilbert@redhat.com, crosthwaitepeter@gmail.com,
	pbonzini@redhat.com, aurelien@aurel32.net
Subject: Re: [Qemu-devel] [PATCH v5 6/9] qemu-log: new option -dfilter to limit output
Date: Wed, 10 Feb 2016 18:35:38 +0000	[thread overview]
Message-ID: <87vb5wv2f9.fsf@linaro.org> (raw)
In-Reply-To: <56BB7A57.6050502@twiddle.net>


Richard Henderson <rth@twiddle.net> writes:

> On 02/11/2016 04:40 AM, Alex Bennée wrote:
>> OK I think this version is a lot cleaner:
>>
>>    void qemu_set_dfilter_ranges(const char *filter_spec)
>>    {
>>        gchar **ranges = g_strsplit(filter_spec, ",", 0);
>>        if (ranges) {
>>            gchar **next = ranges;
>>            gchar *r = *next++;
>>            debug_regions = g_array_sized_new(FALSE, FALSE,
>>                                              sizeof(Range), g_strv_length(ranges));
>>            while (r) {
>>                gchar *range_op = g_strstr_len(r, -1, "-");
>>                gchar *r2 = range_op ? range_op + 1 : NULL;
>>                if (!range_op) {
>>                    range_op = g_strstr_len(r, -1, "+");
>>                    r2 = range_op ? range_op + 1 : NULL;
>>                }
>>                if (!range_op) {
>>                    range_op = g_strstr_len(r, -1, "..");
>>                    r2 = range_op ? range_op + 2 : NULL;
>>                }
>
> I guess I'll quit quibbling about silly glib functions.  But really, with the
> -1 argument, you gain nothing except obfuscation over using the
> standard C library.

No you are quite right to quibble. It's a hard habit to break because
I've gotten used to glib's arguably more predictable behaviour when
string munging.

>
>>                if (range_op) {
>>                    struct Range range;
>>                    int err;
>>                    const char *e = NULL;
>>
>>                    err = qemu_strtoull(r, &e, 0, &range.begin);
>>
>>                    g_assert(e == range_op);
>>
>>                    switch (*range_op) {
>>                    case '+':
>>                    {
>>                        unsigned long len;
>>                        err |= qemu_strtoull(r2, NULL, 0, &len);
>
> You can't or errno's together and then...
>
>>                        g_error("Failed to parse range in: %s, %d", r, err);
>
> ... expect to get anything meaningful out of them.

True, I'll drop the %d, I was just trying to avoid having multiple error
handling legs.

>
>>>> +                case '+':
>>>> +                {
>>>> +                    unsigned long len;
>>>> +                    err |= qemu_strtoul(range_val, NULL, 0, &len);
>>>> +                    range.end = range.begin + len;
>>>> +                    break;
>>>> +                }
>>>> +                case '-':
>>>> +                {
>>>> +                    unsigned long len;
>>>> +                    err |= qemu_strtoul(range_val, NULL, 0, &len);
>>>> +                    range.end = range.begin;
>>>> +                    range.begin = range.end - len;
>>>> +                    break;
>>>> +                }
>>>
>>> Both of these have off-by-one bugs, since end is inclusive.
>>
>> Sorry I don't quite follow, do you mean the position of range_val (now
>> r2) or the final value of range.end?
>
> Final value of range.end.  In that
>
>     0x1000..0x1000
> and
>     0x1000+1
>
> should both produce a range that covers a single byte at 0x1000.

Ahh OK. I suppose if I'm being good about this I should add some tests
to defend the ranges. I wonder how easy command line parsing unit tests
are in qtest?

>
>
> r~


--
Alex Bennée

  reply	other threads:[~2016-02-10 18:35 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-04 14:56 [Qemu-devel] [PATCH v5 0/9] qemu-log, -dfilter and other logging tweaks Alex Bennée
2016-02-04 14:56 ` [Qemu-devel] [PATCH v5 1/9] tcg: pass down TranslationBlock to tcg_code_gen Alex Bennée
2016-02-04 21:24   ` Richard Henderson
2016-02-10 15:23     ` Alex Bennée
2016-02-04 14:56 ` [Qemu-devel] [PATCH v5 2/9] qemu-log: correct help text for -d cpu Alex Bennée
2016-02-04 21:24   ` Richard Henderson
2016-02-04 14:56 ` [Qemu-devel] [PATCH v5 3/9] qemu-log: Avoid function call for disabled qemu_log_mask logging Alex Bennée
2016-02-04 14:56 ` [Qemu-devel] [PATCH v5 4/9] qemu-log: Improve the "exec" TB execution logging Alex Bennée
2016-02-04 22:17   ` Richard Henderson
2016-02-04 14:56 ` [Qemu-devel] [PATCH v5 5/9] qemu-log: support simple pid substitution in logfile Alex Bennée
2016-02-04 22:26   ` Richard Henderson
2016-02-04 23:32     ` Eric Blake
2016-02-05 13:34       ` Alex Bennée
2016-02-04 14:56 ` [Qemu-devel] [PATCH v5 6/9] qemu-log: new option -dfilter to limit output Alex Bennée
2016-02-04 23:08   ` Richard Henderson
2016-02-10 17:40     ` Alex Bennée
2016-02-10 17:58       ` Richard Henderson
2016-02-10 18:35         ` Alex Bennée [this message]
2016-02-04 14:56 ` [Qemu-devel] [PATCH v5 7/9] qemu-log: dfilter-ise exec, out_asm, op and opt_op Alex Bennée
2016-02-04 23:09   ` Richard Henderson
2016-02-04 14:56 ` [Qemu-devel] [PATCH v5 8/9] target-arm: dfilter support for in_asm Alex Bennée
2016-02-04 14:56 ` [Qemu-devel] [PATCH v5 9/9] cputlb: modernise the debug support Alex Bennée
2016-02-04 23:10   ` Richard Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87vb5wv2f9.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=aurelien@aurel32.net \
    --cc=crosthwaitepeter@gmail.com \
    --cc=dgilbert@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).