[PATCH v6 7/8] gdb/testsuite: Add unit tests for qIsAddressTagged packet

Luis Machado luis.machado@arm.com
Fri Apr 19 14:31:39 GMT 2024


On 4/19/24 15:00, Gustavo Romero wrote:
> Hi Luis, Thiago, Eli, and Tom,
> 
> On 4/19/24 4:53 AM, Luis Machado wrote:
>> On 4/18/24 21:10, Gustavo Romero wrote:
>>> Add unit tests for testing qIsAddressTagged packet request creation and
>>> reply checks.
>>>
>>> Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
>>> ---
>>>   gdb/remote.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>   1 file changed, 67 insertions(+)
>>>
>>> diff --git a/gdb/remote.c b/gdb/remote.c
>>> index 3d034bb1ef8..cfb54de157d 100644
>>> --- a/gdb/remote.c
>>> +++ b/gdb/remote.c
>>> @@ -15682,6 +15682,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);
>>> @@ -15748,6 +15750,71 @@ 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 error reply on qIsAddressTagged request.  */
>>> +  reply = "E00";
>>> +  strcpy (packet.data (), reply.c_str ());
>>> +  /* is_tagged must not change, hence it's tested too.  */
>>> +  bool is_tagged = false;
>>> +  SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) ==
>>> +          false);
>>> +  SELF_CHECK (is_tagged == false);
>>> +
>>> +  /* Test 'tagged' as reply.  */
>>> +  reply = "01";
>>> +  strcpy (packet.data (), reply.c_str ());
>>> +  /* Because the byte is 01, is_tagged should be set to true.  */
>>> +  is_tagged = false;
>>> +  SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) ==
>>> +          true);
>>> +  SELF_CHECK (is_tagged == true);
>>> +
>>> +  /* Test 'not tagged' as reply.  */
>>> +  reply = "00";
>>> +  strcpy (packet.data (), reply.c_str ());
>>> +  /* Because the byte is 00, is_tagged should be set to false.  */
>>> +  is_tagged = true;
>>> +  SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) ==
>>> +          true);
>>> +  SELF_CHECK (is_tagged == false);
>>> +
>>> +  /* Test an invalid reply (neither 00 nor 01).  */
>>> +  reply = "04";
>>> +  strcpy (packet.data (), reply.c_str ());
>>> +  /* Because the byte is invalid is_tagged must not change.  */
>>> +  is_tagged = false;
>>> +  SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) ==
>>> +          false);
>>> +  SELF_CHECK (is_tagged == false);
>>> +
>>> +  /* Test malformed reply of incorrect length.  */
>>> +  reply = "0104A590001234006";
>>> +  strcpy (packet.data (), reply.c_str ());
>>> +  /* Because this is a malformed reply is_tagged must not change.  */
>>> +  is_tagged = false;
>>> +  SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) ==
>>> +          false);
>>> +  SELF_CHECK (is_tagged == false);
>>> +
>>> +  /* Test empty reply.  */
>>> +  reply = "";
>>> +  strcpy (packet.data (), reply.c_str ());
>>> +  /* is_tagged must not change, hence it's tested too.  */
>>> +  is_tagged = true;
>>> +  /* On the previous tests, qIsAddressTagged packet was auto detected and set
>>> +     as supported.  But an empty reply means the packet is unsupported, so for
>>> +     testing the empty reply the support is reset to unknown state, otherwise
>>> +     packet_ok will complain.   */
>>> +  remote.m_features.m_protocol_packets[PACKET_qIsAddressTagged].support =
>>> +    PACKET_SUPPORT_UNKNOWN;
>>> +  SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) ==
>>> +          false);
>>> +  SELF_CHECK (is_tagged == true);
>>>   }
>>>     static void
>>
>> This is OK. Thanks for the series.
>>
>> Let us know if you need us to push it for you.
>>
>> Approved-By: Luis Machado <luis.machado@arm.com>
>> Tested-By: Luis Machado <luis.machado@arm.com>
> 
> Thanks a lot for all the reviews!
> 
> Yip, I need somebody to push the patchset. :-)
> 
> 
> Cheers,
> Gustavo

Pushed now.


More information about the Gdb-patches mailing list