Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jiong Wang <jiwang@tilera.com>
To: Joel Brobecker <brobecker@adacore.com>
Cc: <gdb-patches@sourceware.org>, Walter Lee <walt@tilera.com>
Subject: Re: [RFC/TileGX 5/6]show registers in columns
Date: Fri, 18 Jan 2013 16:07:00 -0000	[thread overview]
Message-ID: <50F97326.3040709@tilera.com> (raw)
In-Reply-To: <20130118135039.GI3564@adacore.com>

[-- Attachment #1: Type: text/plain, Size: 4866 bytes --]

于 2013/1/18 21:50, Joel Brobecker 写道:
>> tilegx has 64 registers, to show them in row will be not very
>> convinent to explore,
>> so we improve this by showing them in columns.
>>
>> (gdb) info registers
>> r0   0x0000000000000001    r19  0x0000000000000000    r38 0x0000000000000040
>> r1   0x000001ffffc7f458         r20  0x000001ffffc7f278         r39
>> 0x0000000000000000
>> r2   0x000001ffffc7f468         r21  0x000001ffffc7f298         r40
>> 0x000000000015b3e8
>> r3   0x0000000000010720    r22  0x000001ffffc7f280         r41
>> 0x000000000015882c
> Forgive me, but the above doesn't look easier to read... Was it
> because of wrap-around by your mailer or your MTA?

yes, I think it's caused by my mailer. please see attachment for the 
comparision

>
>> gdb/ChangeLog:
>>
>>         * tilegx-tdep.c (tilegx_print_registers_info): New function.
>>         show registers in columns.
> I am not a big specialist of formatting this type of information.
> To me the first 2 obvious remarks is that:
>
>    - The number of columns should be dynamic, depending on the width
>      of the terminal; and if the width is unset, then default to
>      80 characters. We may also have to make a decision if the width
>      is unlimited.
>
>    - This will need confirmation from the other Global Maintainers
>      but I think it would be better if you used the ui-out routines
>      to print the registers.
>
> One additional remark is that, with 64 registers, it might be good
> enough to print them in two columns always, and not deal with
> complexity of the terminal width. It even looks like you might be
> able to fit in 3 columns within 80 chars, if you prefer...

thanks for your good suggestion.
yes, 3 columns still be within 80 chars. and by display in 3 columns, it 
is with larger probability that the user do not need to scroll down and 
up his mouse to view the results. by 2 columns, the list is still a bit 
long, and the information is not that centered.

So, is this patch OK?
>
>
>> please review.
>>
>> ---
>> Regards,
>> Jiong
>> Tilera Corporation.
>>
>> ---
>>   gdb/tilegx-tdep.c |   63 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>>   1 files changed, 63 insertions(+)
>>
>> diff --git a/gdb/tilegx-tdep.c b/gdb/tilegx-tdep.c
>> index 7f36bed..c19bdf9 100644
>> --- a/gdb/tilegx-tdep.c
>> +++ b/gdb/tilegx-tdep.c
>> @@ -940,6 +940,66 @@ tilegx_cannot_reference_register (struct gdbarch *gdbarch, int regno)
>>       return 1;
>>   }
>>   
>> +
>> +/* Tilera private register printer.  */
>> +#define MAX_COLUMNS 3
>> +static void
>> +tilegx_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
>> +                             struct frame_info *frame,
>> +                             int regnum, int print_all)
>> +{
>> +  int i;
>> +  int j;
>> +  int k;
>> +  gdb_byte buffer[MAX_REGISTER_SIZE];
>> +
>> +  if (regnum != -1)
>> +    {
>> +      default_print_registers_info (gdbarch, file, frame, regnum, print_all);
>> +      return;
>> +    }
>> +
>> +  for (i = 0; i < TILEGX_NUM_EASY_REGS / MAX_COLUMNS + 1; ++i)
>> +    {
>> +      for (j = i;
>> +           j < TILEGX_NUM_EASY_REGS + 1;
>> +           j += TILEGX_NUM_EASY_REGS / MAX_COLUMNS + 1)
>> +        {
>> +	  /* Some registers are never available. Skip them and print PC.  */
>> +	  if (j > TILEGX_LR_REGNUM)
>> +	    j = TILEGX_PC_REGNUM;
>> +
>> +	  if (j > i)
>> +	    fprintf_filtered (file, "    ");
>> +
>> +	  fputs_filtered (gdbarch_register_name (gdbarch, j), file);
>> +	  print_spaces_filtered (5 - strlen (gdbarch_register_name
>> +					     (gdbarch, j)), file);
>> +
>> +	  /* Get the data in raw format.  */
>> +	  if (! deprecated_frame_register_read (frame, j, buffer))
>> +	    {
>> +	      fprintf_filtered (file, " *** no value *** ");
>> +	    }
>> +	  else
>> +	    {
>> +	      fprintf_filtered (file, "0x");
>> +	      for (k = 0; k < tilegx_reg_size; k++)
>> +		{
>> +		  int idx;
>> +		  if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
>> +		    idx = k;
>> +		  else
>> +		    idx = tilegx_reg_size - 1 - k;
>> +		  fprintf_filtered (file, "%02x", (unsigned char) buffer[idx]);
>> +		}
>> +	    }
>> +        }
>> +
>> +      fprintf_filtered (file, "\n");
>> +    }
>> +}
>> +
>>   static struct gdbarch *
>>   tilegx_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
>>   {
>> @@ -1000,6 +1060,9 @@ tilegx_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
>>     /* Stack grows down.  */
>>     set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
>>   
>> +  /* Tilera private register printer */
>> +  set_gdbarch_print_registers_info (gdbarch, tilegx_print_registers_info);
>> +
>>     /* Frame Info.  */
>>     set_gdbarch_unwind_sp (gdbarch, tilegx_unwind_sp);
>>     set_gdbarch_unwind_pc (gdbarch, tilegx_unwind_pc);
>> -- 
>> 1.7.10.3
>>
>>
>


[-- Attachment #2: display-compare.tar.bz2 --]
[-- Type: application/octet-stream, Size: 1260 bytes --]

  reply	other threads:[~2013-01-18 16:07 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-18  9:30 Jiong Wang
2013-01-18 13:50 ` Joel Brobecker
2013-01-18 16:07   ` Jiong Wang [this message]
2013-02-08 19:09     ` Joel Brobecker
2013-02-08 21:09       ` Pedro Alves
2013-02-13 14:42         ` Jiong Wang
2013-02-11 19:20       ` Tom Tromey

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=50F97326.3040709@tilera.com \
    --to=jiwang@tilera.com \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=walt@tilera.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