qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: Matheus Ferst <matheus.ferst@eldorado.org.br>,
	berrange@redhat.com, qemu-devel@nongnu.org
Subject: Re: [RFC PATCH] scripts/tracetool: don't barf validating TCG types
Date: Tue, 04 May 2021 16:02:25 +0100	[thread overview]
Message-ID: <87r1imo82d.fsf@linaro.org> (raw)
In-Reply-To: <YIbIS/qDUwuLvNco@stefanha-x1.localdomain>


Stefan Hajnoczi <stefanha@redhat.com> writes:

> [[PGP Signed Part:Undecided]]
> On Tue, Apr 06, 2021 at 05:53:07PM +0100, Alex Bennée wrote:
>> TCG types will be transformed into the appropriate host types later on
>> in the tool. Try and work around this by detecting those cases and
>> pressing on.
>> 
>> [AJB: this seems a bit too hacky - but the problem is validate_type is
>> buried a few layers deep. Maybe we should just drop TCGv from
>> ALLOWED_TYPES and manually do if bit.startswith("TCGv_") in validate_type?]
>
> Please include a line from a trace-events file that triggers the issue.
> It's unclear to me what the problem is although I guess it's related to
> TCGv_* types being rejected by validate_type. The
> bit.startswith("TCGv_") change you mentioned sounds fine or a slightly
> more general ALLOWED_TYPE_PREFIXES = ['TCGv_'].

I tried:

modified   tcg/tcg-op.c
@@ -2715,6 +2715,9 @@ void tcg_gen_lookup_and_goto_ptr(void)
         plugin_gen_disable_mem_helpers();
         ptr = tcg_temp_new_ptr();
         gen_helper_lookup_tb_ptr(ptr, cpu_env);
+
+        trace_goto_tb_tcg(0, ptr);
+
         tcg_gen_op1i(INDEX_op_goto_ptr, tcgv_ptr_arg(ptr));
         tcg_temp_free_ptr(ptr);
     } else {
modified   trace-events
@@ -136,6 +136,10 @@ vcpu guest_cpu_reset(void)
 # Targets: TCG(all)
 vcpu tcg guest_mem_before(TCGv vaddr, uint16_t info) "info=%d", "vaddr=0x%016"PRIx64" info=%d"
 
+# Mode: user, softmmu
+# Targets: TCG(all)
+tcg goto_ptr(int ignore, TCGv_ptr ptr) "goto_ptr_trans=%d", "goto_ptr=%p (%d)"
+

Which fails with:

FAILED: trace/trace-root.c 
/usr/bin/python3 ../../scripts/tracetool.py --backend=log --group=root --format=c /home/alex/lsrc/qemu.git/./trace-events trace/trace-root.c
Traceback (most recent call last):
  File "../../scripts/tracetool.py", line 154, in <module>
    main(sys.argv)
  File "../../scripts/tracetool.py", line 143, in main
    events.extend(tracetool.read_events(fh, arg))
  File "/home/alex/lsrc/qemu.git/scripts/tracetool/__init__.py", line 406, in read_events
    event = Event.build(line, lineno, fname)
  File "/home/alex/lsrc/qemu.git/scripts/tracetool/__init__.py", line 322, in build
    args = Arguments.build(groups["args"])
  File "/home/alex/lsrc/qemu.git/scripts/tracetool/__init__.py", line 154, in build
    validate_type(arg_type)
  File "/home/alex/lsrc/qemu.git/scripts/tracetool/__init__.py", line 107, in validate_type
    "declared as 'void *'" % name)
ValueError: Error at /home/alex/lsrc/qemu.git/./trace-events:141: Argument type 'TCGv_ptr' is not allowed. Only standard C types and fixed size integer types should be used. struct, union, and other complex pointer types should be declared as 'void *'

>
>> Fixes: 73ff061032 ("trace: only permit standard C types and fixed size integer types")
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> Cc: Matheus Ferst <matheus.ferst@eldorado.org.br>
>> ---
>>  scripts/tracetool/__init__.py | 13 +++++++++----
>>  1 file changed, 9 insertions(+), 4 deletions(-)
>> 
>> diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
>> index 5bc94d95cf..ea078e34b4 100644
>> --- a/scripts/tracetool/__init__.py
>> +++ b/scripts/tracetool/__init__.py
>> @@ -87,10 +87,11 @@ def out(*lines, **kwargs):
>>      "ssize_t",
>>      "uintptr_t",
>>      "ptrdiff_t",
>> -    # Magic substitution is done by tracetool
>> +    # Magic substitution is done by tracetool TCG_2_HOST
>
> This makes it clearer that "TCG_2_HOST" is a code reference:
>
>   # Magic substitution is done using tracetool.transform.TCG_2_HOST
>
> [[End of PGP Signed Part]]


-- 
Alex Bennée


      reply	other threads:[~2021-05-04 15:04 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-06 16:53 [RFC PATCH] scripts/tracetool: don't barf validating TCG types Alex Bennée
2021-04-26 14:03 ` Stefan Hajnoczi
2021-05-04 15:02   ` Alex Bennée [this message]

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=87r1imo82d.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=berrange@redhat.com \
    --cc=matheus.ferst@eldorado.org.br \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /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).