public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: paawan oza <paawan1982@yahoo.com>
To: "Petr Hluzín" <petr.hluzin@gmail.com>
Cc: gdb@sourceware.org, gdb-patches@sourceware.org
Subject: Re: [PATCH] arm reversible : <phase_2_complete>
Date: Fri, 22 Apr 2011 05:49:00 -0000	[thread overview]
Message-ID: <592215.58786.qm@web112508.mail.gq1.yahoo.com> (raw)
In-Reply-To: <BANLkTik+_-KcX+=vVOeqwX-FNxYkQuEzXA@mail.gmail.com>

Hi Petr,

Thanks for your comments.

1) This array is local to the function. If you mark it as static you
avoid its initialization in each invocation of the function.

Oza: I shall change it.

2) All the functions are called only from this module (only from this
function). If you make their arguments type-safe (not void*), you will
get less code. (And type-safety, obviously.)

Oza: this was leftover; as when I designed initially, I felt I would need any 
type of data.
but now it is uniform and I can certainly change to arm_record type.
thanks for pointing that out.

3) This field points to array of 2 or register_count (which itself
changes). It might be worth documenting it points to array. (Pointers
are usually not used for pointer-arithmetics at my job.)
It is quite difficult to prove that accesses to arm_mems[] are within
allocated bounds.
Also some array elements are initialized only partially.

oza: basically both arm_mems and arm_regs point to an array. could be documents 
in code.
what we do is:
first find out the registers and memories (where we require length also) in the 
beginning.
and at the end in process_record just go for recording.
in both arm_regs and arm_mems;  first array field provides only information 
about how many records are there.

4) (Usually I add a struct field like debug_arm_mems_count and add
assertions at appropriate places.)

Oza: can you please elaborate on that as I am not sure on what condition to 
assert ?

Regards,
Oza.




----- Original Message ----
From: Petr Hluzín <petr.hluzin@gmail.com>
To: paawan oza <paawan1982@yahoo.com>
Cc: gdb@sourceware.org; gdb-patches@sourceware.org
Sent: Fri, April 22, 2011 2:25:04 AM
Subject: Re: [PATCH] arm reversible : <phase_2_complete>

On 20 April 2011 21:16, paawan oza <paawan1982@yahoo.com> wrote:
> Hi,
>
> I am working on phase-3 now.
> if anybody could please start reviewing phase-2 patch (as this is
> independent of phase-3 and could be checked in independently too)
> I may start implementing review comments as and when I get.
> In Parallel, test cases are also being worked upon.
> following is the phase-2 patch.

I took a peak and noticed the first points which looked suspicious to me.
Note: I am just a causal mailing-list observer.

> +
> +struct arm_mem_r
> +{
> +    uint32_t len;
> +    CORE_ADDR addr;
> +};
> +
> +typedef struct insn_decode_record_t
> +{
> +  struct gdbarch *gdbarch;
> +  struct regcache *regcache;
> +  CORE_ADDR this_addr;          /* address of the insn being decoded.  */
> +  uint32_t arm_insn;            /* should accomodate thumb.  */
> +  uint32_t cond;                /* condition code.  */
> +  uint32_t id;                  /* type of insn.  */
> +  uint32_t opcode;              /* insn opcode.  */
> +  uint32_t decode;              /* insn decode bits.  */
> +  uint32_t *arm_regs;           /* registers to be saved for this record.  */
> +  struct arm_mem_r *arm_mems;   /* memory to be saved for this record.  */

This field points to array of 2 or register_count (which itself
changes). It might be worth documenting it points to array. (Pointers
are usually not used for pointer-arithmetics at my job.)
It is quite difficult to prove that accesses to arm_mems[] are within
allocated bounds.
Also some array elements are initialized only partially.

(Usually I add a struct field like debug_arm_mems_count and add
assertions at appropriate places.)

> +static int
> +decode_insn (insn_decode_record *arm_record, uint32_t insn_size)
> +{
> +
> +  /* (starting from numerical 0); bits 25, 26, 27 decodes type of arm
> instruction.  */
> +  int (*const arm_handle_insn[NO_OF_TYPE_OF_ARM_INSNS]) (void*) =
> +  {
> +      arm_handle_data_proc_misc_load_str_insn,  /* 000.  */
> +      arm_handle_data_proc_imm_insn,            /* 001.  */
> +      arm_handle_ld_st_imm_offset_insn,         /* 010.  */
> +      arm_handle_ld_st_reg_offset_insn,         /* 011.  */
> +      arm_hamdle_ld_st_multiple_insn,           /* 100.  */
> +      arm_handle_brn_insn,                      /* 101.  */
> +      arm_handle_coproc_insn,                   /* 110.  */
> +      arm_handle_coproc_data_proc_insn          /* 111.  */
> +  };
> +
> +  /* (starting from numerical 0); bits 13,14,15 decodes type of thumb
> instruction.  */
> +  int (*const thumb_handle_insn[NO_OF_TYPE_OF_THUMB_INSNS]) (void*) =

This array is local to the function. If you mark it as static you
avoid its initialization in each invocation of the function.

> +  {
> +      thumb_handle_shift_add_sub_insn,         /* 000.  */
> +      thumb_handle_add_sub_cmp_mov_insn,       /* 001.  */
> +      thumb_handle_ld_st_reg_offset_insn,      /* 010.  */
> +      thumb_handle_ld_st_imm_offset_insn,      /* 011.  */
> +      thumb_hamdle_ld_st_stack_insn,           /* 100.  */

Typo, hamdle

> +      thumb_handle_misc_insn,                  /* 101.  */
> +      thumb_handle_swi_insn,                   /* 110.  */
> +      thumb_handle_branch_insn                 /* 111.  */
> +  };

All the functions are called only from this module (only from this
function). If you make their arguments type-safe (not void*), you will
get less code. (And type-safety, obviously.)

There might be more, I just picked the first thing. I am not familiar
with the code base.

-- 
Petr Hluzin

  reply	other threads:[~2011-04-22  5:49 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <341905.10459.qm@web112513.mail.gq1.yahoo.com>
     [not found] ` <m3d3m8xdf7.fsf@fleche.redhat.com>
     [not found]   ` <208397.95006.qm@web112517.mail.gq1.yahoo.com>
     [not found]     ` <4DA27006.1080607@codesourcery.com>
2011-04-16 21:03       ` [PATCH] arm reversible : progress <phase_2_complete> paawan oza
2011-04-20 19:16         ` [PATCH] arm reversible : <phase_2_complete> paawan oza
2011-04-21 20:55           ` Petr Hluzín
2011-04-22  5:49             ` paawan oza [this message]
2011-04-22  5:55               ` oza Pawandeep
2011-04-25 14:03               ` paawan oza
2011-05-01  1:20                 ` Petr Hluzín
2011-05-02 14:47                   ` Tom Tromey
2011-05-04 21:33                     ` Petr Hluzín
2011-05-05 15:29                       ` Tom Tromey
2011-05-07 13:50                   ` paawan oza
2011-05-09 14:57                     ` Tom Tromey
2011-05-10  5:42                       ` paawan oza
2011-05-10 15:37                         ` Tom Tromey
2011-05-12  5:06                           ` paawan oza
2011-05-10  5:50                       ` paawan oza
2011-05-12 21:21                     ` Petr Hluzín
2011-05-24  6:44                       ` paawan oza
2011-05-07 13:56                   ` paawan oza
     [not found]               ` <172713.29831.qm__351.089161313389$1303740245$gmane$org@web112503.mail.gq1.yahoo.com>
2011-04-25 19:57                 ` Tom Tromey
2011-04-28 18:26                   ` paawan oza
2011-04-28 19:00                     ` Tom Tromey
2011-04-28 19:22                       ` paawan oza
     [not found]                       ` <727567.12089.qm__13056.408687453$1304018591$gmane$org@web112511.mail.gq1.yahoo.com>
2011-04-28 19:36                         ` Tom Tromey
2011-04-30 16:16                           ` paawan oza
2011-05-02 13:28                             ` Tom Tromey
2011-04-20 19:10 [PATCH] arm reversible <phase_2_complete> oza Pawandeep
2011-05-24  7:19 [PATCH] arm reversible : <phase_2_complete> paawan oza
2011-05-29 15:38 paawan oza
2011-05-31 18:05 ` Tom Tromey
2011-06-03  7:44   ` paawan oza
2011-06-03  7:51   ` paawan oza
2011-07-12 21:10     ` Tom Tromey
2011-07-13  3:17       ` chandra krishnappa
2011-07-13  5:36         ` paawan oza
2011-07-13 15:20         ` Tom Tromey
2011-07-14  4:49           ` chandra krishnappa
2011-07-14 15:01             ` Yao Qi
2011-07-13  6:57       ` paawan oza
     [not found]       ` <1316327455.23344.YahooMailNeo@web112509.mail.gq1.yahoo.com>
2011-09-19  7:37         ` paawan oza
2011-09-22 17:12           ` oza Pawandeep
2011-09-27  6:52             ` oza Pawandeep
2011-10-06 18:01               ` oza Pawandeep
2011-10-14 20:13           ` Tom Tromey
2011-10-15  3:46             ` paawan oza
2011-10-15  7:01               ` chandra krishnappa
2011-10-15  9:32               ` Yao Qi
2011-10-15 13:33                 ` Yao Qi
2011-10-15 16:34                   ` oza Pawandeep
2011-10-15 17:38                     ` oza Pawandeep
2011-10-16  8:00                       ` oza Pawandeep
2011-10-16  8:44                         ` oza Pawandeep
2011-10-17  4:25                         ` Yao Qi
2011-10-17  3:18                     ` Yao Qi
2011-10-17  4:28                       ` oza Pawandeep
2011-10-17 15:42                         ` chandra krishnappa
2011-11-03 17:10                 ` Tom Tromey
2011-11-04 16:27                   ` Yao Qi
2011-10-16 23:32               ` Petr Hluzín
2011-10-22 15:42                 ` oza Pawandeep
2011-10-23 10:17                   ` oza Pawandeep
2011-10-24  7:43                     ` Petr Hluzín
2011-10-25  7:20                     ` Yao Qi
2011-11-03 17:41                     ` Tom Tromey
2011-11-05 17:36                       ` Petr Hluzín
2011-11-03 17:38                 ` Tom Tromey
2011-11-05 17:35                   ` Petr Hluzín
2011-11-07 15:39                     ` Tom Tromey
2011-11-08  6:02                       ` oza Pawandeep
2011-11-08 10:17                         ` Yao Qi
2011-11-08 10:45                           ` oza Pawandeep
2011-11-09  5:28                         ` oza Pawandeep
2011-11-09  6:08                           ` oza Pawandeep
2011-11-17  9:24                             ` oza Pawandeep
2011-11-17  9:52                               ` Yao Qi
2011-11-17 20:40                             ` Tom Tromey
2011-11-18  3:18                               ` oza Pawandeep
2011-11-18 17:22                                 ` Tom Tromey
2011-11-19  9:43                               ` oza Pawandeep
2011-11-19 11:39                                 ` oza Pawandeep
2011-12-02 18:36                                   ` Tom Tromey
2011-12-03  8:20                                     ` oza Pawandeep
2011-12-03 14:18                                       ` oza Pawandeep
2011-12-03 16:32                                         ` Petr Hluzín
2011-12-03 18:46                                           ` oza Pawandeep
2011-12-03 19:02                                             ` oza Pawandeep
2011-12-03 20:30                                               ` Petr Hluzín
     [not found]                                                 ` <1322975560.12415.YahooMailNeo@web112518.mail.gq1.yahoo.com>
2011-12-04  7:09                                                   ` paawan oza
2011-12-04  1:47                                               ` Yao Qi
2011-12-04  8:26                                                 ` oza Pawandeep
2011-12-04 11:33                                                   ` oza Pawandeep
2011-12-04 13:29                                                     ` Petr Hluzín
2011-12-04 14:46                                                     ` Yao Qi
2011-12-04 17:00                                                       ` oza Pawandeep
2011-12-04 23:46                                                         ` Yao Qi
2011-12-05  5:35                                                           ` oza Pawandeep
2011-12-05  8:12                                                             ` Yao Qi
2011-12-05 16:02                                                               ` oza Pawandeep
2011-12-19  6:26                                                                 ` oza Pawandeep
2011-12-20 19:11                                                                 ` Tom Tromey
2011-12-28 12:43                                                                   ` oza Pawandeep
2012-01-05 11:01                                                                     ` oza Pawandeep
2012-01-05 12:03                                                                       ` Eli Zaretskii
2012-01-05 16:17                                                                       ` Tom Tromey
2012-01-05 18:17                                                                         ` oza Pawandeep
2012-01-06  8:06                                                                           ` oza Pawandeep
2012-01-06 19:13                                                                             ` Tom Tromey
2012-01-07  6:31                                                                               ` oza Pawandeep
2012-01-09 16:25                                                                                 ` Tom Tromey
2012-02-02  6:29                                                                                   ` oza Pawandeep
     [not found]                                                                                     ` <m38vkfoiut.fsf@fleche.redhat.com>
     [not found]                                                                                       ` <CAK1A=4xrUBzcG1i7NHyEtmAjwx0nbYmkePFS9_kQcS3E1gaduA@mail.gmail.com>
     [not found]                                                                                         ` <m3haz19ezl.fsf@fleche.redhat.com>
     [not found]                                                                                           ` <CAK1A=4w+yq9AvRMukPcKpZnGjrVnPbE3zdScwRd1Skubt0KHWA@mail.gmail.com>
2012-03-07  5:35                                                                                             ` oza Pawandeep
2012-03-08 16:32                                                                                               ` Tom Tromey
2012-03-09  9:30                                                                                                 ` oza Pawandeep
2012-03-09 16:47                                                                                                   ` Tom Tromey
2012-03-12  6:23                                                                                                     ` oza Pawandeep
2012-03-12  6:55                                                                                                       ` Yao Qi
2012-03-12  9:14                                                                                                         ` oza Pawandeep
2012-03-12 15:32                                                                                                           ` oza Pawandeep
2012-03-12 19:43                                                                                                             ` Tom Tromey
2012-03-13  5:41                                                                                                               ` oza Pawandeep
2011-12-03 15:06                                       ` oza Pawandeep
2011-12-20 19:05                                       ` Tom Tromey
     [not found] <BANLkTins056mmtd_9U_4iYXEeC2jRZSRsA@mail.gmail.com>
2011-06-06 17:42 ` chandra krishnappa
2011-07-05  8:47   ` oza Pawandeep
2011-08-10 17:09 chandra krishnappa
2011-08-11  1:34 ` Yao Qi

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=592215.58786.qm@web112508.mail.gq1.yahoo.com \
    --to=paawan1982@yahoo.com \
    --cc=gdb-patches@sourceware.org \
    --cc=gdb@sourceware.org \
    --cc=petr.hluzin@gmail.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 read-only IMAP folder(s) and NNTP newsgroup(s).