public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Luis Machado <luis.machado@arm.com>
To: Gustavo Romero <gustavo.romero@linaro.org>, gdb-patches@sourceware.org
Cc: thiago.bauermann@linaro.org, eliz@gnu.org, tom@tromey.com
Subject: Re: [PATCH v4 7/8] gdb/testsuite: Add unittest for qIsAddressTagged packet
Date: Wed, 17 Apr 2024 10:38:56 +0100	[thread overview]
Message-ID: <704f5b93-c0f8-4e50-8180-f57466833e35@arm.com> (raw)
In-Reply-To: <20240416140728.198163-8-gustavo.romero@linaro.org>

Hi,

A few comments, mostly dependent on the previous patch's (06/08) behavior.

On 4/16/24 15:07, Gustavo Romero wrote:
> Add unittests for testing qIsAddressTagged packet request creation and
> reply checks.
> 
> Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
> ---
>  gdb/remote.c | 42 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 42 insertions(+)
> 
> diff --git a/gdb/remote.c b/gdb/remote.c
> index 63799ac5e3f..42f34a03c95 100644
> --- a/gdb/remote.c
> +++ b/gdb/remote.c
> @@ -15658,6 +15658,8 @@ test_memory_tagging_functions ()
>    scoped_restore restore_memtag_support_
>      = make_scoped_restore (&config->support);
>  
> +  struct gdbarch *gdbarch = current_inferior ()->arch ();
> +
>    /* Test memory tagging packet support.  */
>    config->support = PACKET_SUPPORT_UNKNOWN;
>    SELF_CHECK (remote.supports_memory_tagging () == false);
> @@ -15724,6 +15726,46 @@ test_memory_tagging_functions ()
>    create_store_memtags_request (packet, 0xdeadbeef, 255, 1, tags);
>    SELF_CHECK (memcmp (packet.data (), expected.c_str (),
>  		      expected.length ()) == 0);
> +
> +  /* Test creating a qIsAddressTagged request.  */
> +  expected = "qIsAddressTagged:deadbeef";
> +  create_is_address_tagged_request (gdbarch, packet, 0xdeadbeef);
> +  SELF_CHECK (strcmp (packet.data (), expected.c_str ()) == 0);
> +
> +  /* Test empty reply on qIsAddressTagged request.  */
> +  reply = "E00";

The comment seems to be out of sync with what's being tested. Should we be
testing an empty reply instead of E00?

> +  /* is_tagged must not changed, hence it's tested too.  */

s/must not changed/must not change

> +  bool is_tagged = false;
> +  strcpy (packet.data (), reply.c_str ());
> +  SELF_CHECK (check_is_address_tagged_reply (packet, &is_tagged) == false);
> +  SELF_CHECK (is_tagged == false);
> +
> +  /* Test if only the first byte (01) is correctly extracted from a long
> +     numerical reply, with remaining garbage.  */
> +  reply = "0104A590001234006mC0fe";
> +  /* Because the first byte is 01, is_tagged should be set to true.  */
> +  is_tagged = false;
> +  strcpy (packet.data (), reply.c_str ());
> +  SELF_CHECK (check_is_address_tagged_reply (packet, &is_tagged) == true);

I think this particular reply (malformed) should make the packet check fail, as
we risk the remote returning garbage values and things working just because the
first byte was the expected number.

We should be more strict with the packet reply format and check its length.

> +  SELF_CHECK (is_tagged == true);
> +
> +  /* Test if only the first byte (00) is correctly extracted from a long
> +     numerical reply, with remaining garbage.  */
> +  reply = "0004A590001234006mC0fe";
> +  /* Because the first byte is 00, is_tagged should be set to false.  */
> +  is_tagged = true;
> +  strcpy (packet.data (), reply.c_str ());
> +  SELF_CHECK (check_is_address_tagged_reply (packet, &is_tagged) == true);
> +  SELF_CHECK (is_tagged == false);

Same case for the above test.

> +
> +  /* Test if only the first byte, 04, is correctly extracted and recognized
> +     as invalid (only 00 and 01 are valid replies).  */
> +  reply = "0404A590001234006mC0fe";
> +  /* Because the first byte is invalid is_tagged must not change.  */
> +  is_tagged = false;
> +  strcpy (packet.data (), reply.c_str ());
> +  SELF_CHECK (check_is_address_tagged_reply (packet, &is_tagged) == false);
> +  SELF_CHECK (is_tagged == false);
>  }
>  
>  static void

Also a similar situation.

We should exercise the following:

- Empty reply
- Not tagged - "00"
- Tagged - "01"
- Error - "E??"
- Malformed - packets of incorrect length and values.



  reply	other threads:[~2024-04-17  9:39 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-16 14:07 [PATCH v4 0/8] Add another way to check tagged addresses on remote targets Gustavo Romero
2024-04-16 14:07 ` [PATCH v4 1/8] gdb: aarch64: Remove MTE address checking from get_memtag Gustavo Romero
2024-04-16 14:07 ` [PATCH v4 2/8] gdb: aarch64: Move MTE address check out of set_memtag Gustavo Romero
2024-04-16 16:30   ` Luis Machado
2024-04-16 14:07 ` [PATCH v4 3/8] gdb: aarch64: Remove MTE address checking from memtag_matches_p Gustavo Romero
2024-04-16 14:07 ` [PATCH v4 4/8] gdb: Use passed gdbarch instead of calling current_inferior Gustavo Romero
2024-04-16 14:07 ` [PATCH v4 5/8] gdb: Introduce is_address_tagged target hook Gustavo Romero
2024-04-17  9:22   ` Luis Machado
2024-04-16 14:07 ` [PATCH v4 6/8] gdb: Add qIsAddressTagged packet Gustavo Romero
2024-04-16 18:04   ` Luis Machado
2024-04-17 20:57     ` Gustavo Romero
2024-04-16 14:07 ` [PATCH v4 7/8] gdb/testsuite: Add unittest for " Gustavo Romero
2024-04-17  9:38   ` Luis Machado [this message]
2024-04-17 19:03     ` Gustavo Romero
2024-04-17 19:11       ` Gustavo Romero
2024-04-16 14:07 ` [PATCH v4 8/8] gdb: Document " Gustavo Romero
2024-04-16 14:34   ` Eli Zaretskii
2024-04-16 23:10     ` Gustavo Romero
2024-04-17 12:09       ` Eli Zaretskii
2024-04-17 18:21         ` Gustavo Romero

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=704f5b93-c0f8-4e50-8180-f57466833e35@arm.com \
    --to=luis.machado@arm.com \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --cc=gustavo.romero@linaro.org \
    --cc=thiago.bauermann@linaro.org \
    --cc=tom@tromey.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).