Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Hui Zhu <teawater@gmail.com>
To: Joel Brobecker <brobecker@adacore.com>
Cc: Michael Snyder <msnyder@vmware.com>,
	gdb-patches ml <gdb-patches@sourceware.org>
Subject: Re: [RFA/i386] Prec x86 MMX 3DNow! SSE SSE2 SSE3 SSSE3 SSE4 support
Date: Mon, 11 Jan 2010 02:48:00 -0000	[thread overview]
Message-ID: <daef60381001101847w795c64eds8258cb4993f3c542@mail.gmail.com> (raw)
In-Reply-To: <20100109122833.GB2007@adacore.com>

Thanks Joel,

On Sat, Jan 9, 2010 at 20:28, Joel Brobecker <brobecker@adacore.com> wrote:
>> 2010-01-09  Hui Zhu  <teawater@gmail.com>
>>
>>       * i386-tdep.c (OT_DQUAD): New enum.
>>       (i386_process_record): Add code for MMX, 3DNow!, SSE, SSE2,
>>       SSE3, SSSE3 and SSE4.
>
> My two cents below. Although I have not seen anything incorrect with this
> patch, I am reluctant to approve it outright. MarkK has been maintaining
> the x86 target for a while, so it'd be nice if he could take a look
> (unless he doesn't want to).  Please ping me in a week if no one else
> has looked at this patch.
>
> Please also start adding testcases if you can. This is a lot of code,
> with lots of hard-coded numbers and very little comments. Perhaps
> the code is self-explanatory for an x86 specialist, but I'm not, so...

Now, the current testcases will use some sse insn.  I think they are
test for it.

For the sse insn special test, when I write the code for it, I just
read the spec and write the prec code.  I don't good at write sse asm.
 Sorry for it.  I need a people help me with it.

>
>> @@ -5122,7 +5123,7 @@ i386_process_record (struct gdbarch *gdb
>>        break;
>>
>>      case 0x62:    /* bound */
>> -      printf_unfiltered (_("Process record doesn't support "
>> +      printf_unfiltered (_("Process record does not support "
>>                          "instruction bound.\n"));
>>        ir.addr -= 1;
>>        goto no_support;
>
> Generally speaking, I find the error message phrased in a way that
> they can be confusing sometimes, such as in the example above.
> I suggest instead something such as:
>
>   Instruction 'bound' is not supported by Process Record.
>
> or:
>
>   Instruction not supported by Process Record: bound.
>   Instruction not supported by Process Record ("bound")
>
> etc...
>
> Also, the design you are using to bail out, is using labels and
> gotos unnecessarily.  This, in turn, leads to the following oddity
> in the case above:
>
>   (gdb) cont
>   Process record does not support instruction bound.
>   Process record does not support instruction 0x62 at address 0xdeadbeef.
>   error: Process record: failed to record execution log.
>
> The first two error messages are almost identical and the second one
> should simply go.  I also think that the reason for failing to record
> the execution log should be placed *after* the error message, but
> that may be a personal preference. For instance:
>
>    error: Process record: Failed to record execution log:
>    Process record does not support instruction bound at address 0xfeedface.
>
> Again, let's not address this issue as part of this patch, but once
> this patch is in, can you please start preparing another one which
> cleans this up by getting rid of these labels:
>
>    1. Define a new function:
>         i386_insn_record_not_supported (struct gdbarch *gdbarch,
>                                         const char *insn_name,
>                                         CORE_ADDR insn_addr);
>
>       Change the code above to:
>         i386_insn_record_not_supported (gdbarch, "bound", ir.addr);
>         return -1;
>
>    2. Define a new function:
>         i386_opcode_record_not_supported (strct gdbarch* gdbarch,
>                                           uint32_t opcode,
>                                           CORE_ADDR insn_addr);
>
>       Change the goto no_support into:
>         i386_opcode_record_not_supported (gdbarch, opcode, ir.addr);
>         return -1;
>
> I would even consider the idea of changing the semantics of your
> function, and raise an error whose message carries the reason for
> the error, instead of doing the printing yourself before returning -1.
>
>> +    case 0x0f0f:    /* 3DNow! data */
>> +      if (i386_record_modrm (&ir))
>> +     return -1;
>

I am not sure it better can be the part of this patch.  It doesn't
have relationship with sse insn support, right?

Looks you have a lot of idea on it.  I suggest you can work on it.  :)

> This is the type of code that could definitely use some comments.
> Why are you return -1 (error condition, right?) in this case? Because
> of this immediate return, there won't even been any feedback to the user
> as to why the recording failed.
>
>> +      switch (tmpu8)
>
> This is also for another followup patch, but if you could use more
> meaningful variable names, that would help improve the code quality
> (IMO).
>

+      if (target_read_memory (ir.addr, &tmpu8, 1))
+        {
+	  printf_unfiltered (_("Process record: error reading memory at "
+	                       "addr %s len = 1.\n"),
+	                     paddress (gdbarch, ir.addr));
+          return -1;
+        }
+      ir.addr++;
+      switch (tmpu8)

Im not sure it clear or not.  I think add more vals will make the code
not clear.


Best regards,
Hui


  reply	other threads:[~2010-01-11  2:48 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-07 15:00 [RFA] " Hui Zhu
2009-12-07 16:54 ` Michael Snyder
2009-12-07 17:16 ` Michael Snyder
2009-12-07 17:43   ` Joel Brobecker
2009-12-07 17:54     ` Michael Snyder
2009-12-07 18:00       ` Joel Brobecker
2009-12-07 18:05         ` Michael Snyder
2009-12-08  5:51           ` Hui Zhu
2009-12-08 19:56             ` Michael Snyder
2009-12-07 18:08         ` Doug Evans
2009-12-08 17:43         ` Tom Tromey
2009-12-10 19:52 ` Michael Snyder
2009-12-11 15:00   ` Hui Zhu
2009-12-13  4:28     ` Hui Zhu
2009-12-13 10:35       ` Hui Zhu
2009-12-14 18:24       ` Michael Snyder
2009-12-15  1:47         ` Hui Zhu
2009-12-18 19:44           ` Michael Snyder
2010-01-08 16:07             ` Hui Zhu
2010-01-08 18:45               ` Michael Snyder
2010-01-09 12:28               ` [RFA/i386] " Joel Brobecker
2010-01-11  2:48                 ` Hui Zhu [this message]
2010-01-11  4:05                   ` Joel Brobecker
2010-01-12  1:38                   ` Michael Snyder
2010-03-28 16:27                     ` Hui Zhu
2010-03-29  1:35                       ` Michael Snyder
2010-03-29  1:36                       ` Michael Snyder
2010-03-29  9:25                         ` Hui Zhu
2010-03-29  1:40                       ` Michael Snyder
2010-03-29  2:23                         ` Hui Zhu
2010-03-29 13:21                           ` Hui Zhu
2010-03-29 17:52                             ` Michael Snyder
2010-03-29 18:11                             ` Michael Snyder
2010-03-30  6:29                               ` Hui Zhu
2010-03-30 12:55                                 ` Hui Zhu
2010-04-01 15:36                                   ` Hui Zhu
2010-04-01 21:50                                     ` Michael Snyder
2010-04-02  5:14                                       ` Hui Zhu
2010-03-29  2:18                       ` Michael Snyder

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=daef60381001101847w795c64eds8258cb4993f3c542@mail.gmail.com \
    --to=teawater@gmail.com \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=msnyder@vmware.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