Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi via Gdb-patches <gdb-patches@sourceware.org>
To: Luis Machado <luis.machado@linaro.org>, gdb-patches@sourceware.org
Cc: david.spickett@linaro.org
Subject: Re: [PATCH v3 24/24] Add memory tagging testcases
Date: Sat, 26 Dec 2020 23:36:04 -0500	[thread overview]
Message-ID: <2d0c52e2-8375-dfd2-8310-1443c4d8f454@polymtl.ca> (raw)
In-Reply-To: <20201109170435.15766-25-luis.machado@linaro.org>



On 2020-11-09 12:04 p.m., Luis Machado via Gdb-patches wrote:
> +# Targets that don't support memory tagging should not execute the
> +# runtime memory tagging tests.
> +if {![supports_memtag]} {
> +    untested "memory tagging unsupported"

Use unsupported?

https://www.gnu.org/software/dejagnu/manual/unsupported-procedure.html

> +    return -1
> +}
> +
> +gdb_breakpoint "access_memory"
> +
> +if [gdb_continue "access_memory"] {
> +    fail "could not run to tagged memory test function"

gdb_continue will already produce a FAIL, so no need to use another one here.

> +    return -1
> +}
> +
> +# Fetch a known pointer to an area mapped with PROT_MTE.
> +set tagged_ptr_symbol "tagged_ptr"
> +set tagged_ptr_addr [get_hexadecimal_valueof $tagged_ptr_symbol -1]
> +
> +if {$tagged_ptr_addr == -1} {
> +    untested "unexpected pointer or tag value"

If that happens, that would be an expected error in the test that should be
fixed, right?  If so, I'd suggest using "unresolved".  We should be able to
get that value, if we can't something is wrong (it's not just a matter of
something being unsupported).

> +    return -1
> +}
> +
> +# Fetch a known pointer to an area not mapped with PROT_MTE.
> +set untagged_ptr_symbol "untagged_ptr"
> +set untagged_ptr_addr [get_hexadecimal_valueof $untagged_ptr_symbol -1]
> +
> +if {$untagged_ptr_addr == -1} {
> +    untested "unexpected pointer or tag value"

Same here.

> +with_test_prefix "symbolic" {
> +    # Test inspecting an allocation tag from a pointer to a memory area that
> +    # is not mapped with PROT_MTE.
> +    set msg "Address ${untagged_ptr_addr} not in a region mapped with a memory tagging flag\."
> +    gdb_test "mtag showatag ${untagged_ptr_symbol}" $msg \
> +	     "mtag showatag with an untagged address"
> +
> +    gdb_test "mtag setatag ${untagged_ptr_symbol} 0 00" $msg \
> +	     "mtag setatag with an untagged address"
> +
> +    # Test setting and showing the logical tags for a literal address.
> +    for {set i 0} {$i < 32} {incr i} {
> +	set addr_tagged 0
> +
> +	with_test_prefix "tag ${i}" {
> +	    set addr_tagged [get_tagged_ptr $i ${tagged_ptr_addr}]
> +	    gdb_test_no_output "set variable ${tagged_ptr_symbol} = ${addr_tagged}" \
> +			       "update value of symbol ${tagged_ptr_symbol}"
> +	}
> +
> +	set tag_hexnz [get_hex_tag [expr $i % 16]]
> +	gdb_test "mtag showltag ${tagged_ptr_symbol}" \
> +		 " = 0x${tag_hexnz}" \
> +		 "showltag with tag ${i}"
> +
> +	set tag_hexnn [get_tag_nn $i]
> +	gdb_test "mtag withltag ${tagged_ptr_symbol} ${tag_hexnn}" \
> +		 " = \\(void \\*\\) ${addr_tagged}" \
> +		 "withltag with tag ${i}"
> +    }
> +
> +    # Reset the tagged ptr to its original value
> +    gdb_test_no_output "set variable ${tagged_ptr_symbol} = ${tagged_ptr_addr}" \
> +		       "reset ${tagged_ptr_symbol} to ${tagged_ptr_addr}"
> +
> +    set setatag_msg "Allocation tag\\(s\\) updated successfully\."
> +    # Test setting and showing the allocation tags.
> +    for {set i 0} {$i < 32} {incr i} {
> +
> +	set tag_hexnn [get_tag_nn $i]
> +	gdb_test "mtag setatag ${tagged_ptr_symbol} 0 ${tag_hexnn}" \
> +		 $setatag_msg \
> +		 "setatag with tag ${i}"
> +
> +	set tag_hexnz [get_hex_tag [expr $i % 16]]
> +	gdb_test "mtag showatag ${tagged_ptr_symbol}" " = 0x${tag_hexnz}" \
> +		 "showatag with tag ${i}"
> +    }
> +
> +    # Test tag mismatches.
> +    with_test_prefix "tag mismatches" {
> +	for {set i 0} {$i < 32} {incr i} {
> +
> +	    # Set the allocation tag to a known value (0).
> +	    set tag_hexnn [get_tag_nn $i]
> +	    gdb_test "mtag setatag ${tagged_ptr_symbol} 0 ${tag_hexnn}" \
> +		     $setatag_msg \
> +		     "setatag with tag ${i}"
> +
> +	    set atag_hexnz [get_hex_tag [expr $i % 16]]
> +
> +	    # Validate that the logical tag matches the allocation tag.
> +	    with_test_prefix "tag ${i}" {
> +		set addr_tagged [get_tagged_ptr $i ${tagged_ptr_addr}]
> +	    }
> +
> +	    with_test_prefix "tag ${i}" {
> +		gdb_test_no_output "set variable ${tagged_ptr_symbol} = ${addr_tagged}" \
> +				   "set ${tagged_ptr_symbol} to a matching logical tag"
> +	    }
> +
> +	    gdb_test "mtag check ${tagged_ptr_symbol}" \
> +		     "Memory tags for address $hex match \\(0x${atag_hexnz}\\)\." \
> +		     "check match with tag ${i}"
> +
> +	    # Get a pointer with the logical tag that does not match the
> +	    # allocation tag.
> +	    set ltag [expr $i + 1]
> +	    with_test_prefix "fetch mismatch tag ${i}" {
> +		set addr_tagged [get_tagged_ptr $ltag ${tagged_ptr_addr}]
> +	    }
> +
> +	    with_test_prefix "tag ${i}" {
> +		gdb_test_no_output "set variable ${tagged_ptr_symbol} = ${addr_tagged}" \
> +				   "set ${tagged_ptr_symbol} to a mismatching logical tag"
> +	    }
> +
> +	    # Validate that the logical tag does not match the allocation
> +	    # tag.
> +	    set ltag_hexnz [get_hex_tag [expr [expr $i + 1]% 16]]
> +	    gdb_test "mtag check ${tagged_ptr_symbol}" \
> +		     "Logical tag \\(0x${ltag_hexnz}\\) does not match the allocation tag \\(0x${atag_hexnz}\\) for address $hex\." \
> +		     "check mismatch with tag ${i}"
> +	}
> +    # Reset the tagged ptr to its original value
> +    gdb_test_no_output "set variable ${tagged_ptr_symbol} = ${tagged_ptr_addr}" \
> +		       "reset ${tagged_ptr_symbol} to ${tagged_ptr_addr}"

The indentation is off here.

> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
> index 55154db6a5..347704ce0a 100644
> --- a/gdb/testsuite/lib/gdb.exp
> +++ b/gdb/testsuite/lib/gdb.exp
> @@ -2679,6 +2679,22 @@ proc supports_get_siginfo_type {} {
>      }
>  }
>  
> +# Return 1 if memory tagging is supported at runtime, otherwise return 0.
> +
> +proc supports_memtag {} {

Should this use gdb_caching_proc?

Simon

  parent reply	other threads:[~2020-12-27  4:36 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-09 17:04 [PATCH v3 00/24] Memory Tagging Support + AArch64 Linux implementation Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 01/24] New target methods for memory tagging support Luis Machado via Gdb-patches
2020-12-25  4:26   ` Simon Marchi via Gdb-patches
2020-12-28 15:05     ` Luis Machado via Gdb-patches
2020-12-25  5:08   ` Simon Marchi via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 02/24] New gdbarch memory tagging hooks Luis Machado via Gdb-patches
2020-12-25  4:40   ` Simon Marchi via Gdb-patches
2020-12-28 15:44     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 03/24] Add GDB-side remote target support for memory tagging Luis Machado via Gdb-patches
2020-12-25  5:08   ` Simon Marchi via Gdb-patches
2020-12-28 16:28     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 04/24] Unit testing for GDB-side remote memory tagging handling Luis Machado via Gdb-patches
2020-12-25  5:34   ` Simon Marchi via Gdb-patches
2020-12-28 17:17     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 05/24] GDBserver remote packet support for memory tagging Luis Machado via Gdb-patches
2020-12-25  5:50   ` Simon Marchi via Gdb-patches
2020-12-28 17:46     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 06/24] Unit tests for gdbserver memory tagging remote packets Luis Machado via Gdb-patches
2020-12-25 20:13   ` Simon Marchi via Gdb-patches
2020-12-28 18:12     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 07/24] Documentation for " Luis Machado via Gdb-patches
2020-11-09 17:08   ` Eli Zaretskii via Gdb-patches
2020-11-16 15:44     ` David Spickett via Gdb-patches
2020-11-16 16:04       ` David Spickett via Gdb-patches
2020-11-16 17:22         ` Luis Machado via Gdb-patches
2020-11-17 10:05           ` David Spickett via Gdb-patches
2020-11-17 12:01             ` Luis Machado via Gdb-patches
2020-11-17 12:29               ` David Spickett via Gdb-patches
2020-11-17 14:44                 ` Luis Machado via Gdb-patches
2020-11-17 15:16                   ` David Spickett via Gdb-patches
2020-11-17 17:29                     ` Luis Machado via Gdb-patches
2020-11-18 10:39                       ` David Spickett via Gdb-patches
2020-11-18 10:56                         ` Luis Machado via Gdb-patches
2020-11-18 11:22                           ` David Spickett via Gdb-patches
2020-11-16 16:49       ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 08/24] AArch64: Add MTE CPU feature check support Luis Machado via Gdb-patches
2020-12-26  0:04   ` Simon Marchi via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 09/24] AArch64: Add target description/feature for MTE registers Luis Machado via Gdb-patches
2020-12-26  0:10   ` Simon Marchi via Gdb-patches
2020-12-28 18:28     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 10/24] AArch64: Add MTE register set support for GDB and gdbserver Luis Machado via Gdb-patches
2020-12-26  0:17   ` Simon Marchi via Gdb-patches
2020-12-28 18:41     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 11/24] AArch64: Add MTE ptrace requests Luis Machado via Gdb-patches
2020-12-26  0:19   ` Simon Marchi via Gdb-patches
2020-12-28 19:12     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 12/24] AArch64: Implement memory tagging target methods for AArch64 Luis Machado via Gdb-patches
2020-12-26  0:33   ` Simon Marchi via Gdb-patches
2020-12-28 19:50     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 13/24] Refactor parsing of /proc/<pid>/smaps Luis Machado via Gdb-patches
2020-12-26  6:36   ` Simon Marchi via Gdb-patches
2020-12-29 10:57     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 14/24] AArch64: Implement the memory tagging gdbarch hooks Luis Machado via Gdb-patches
2020-12-26  6:52   ` Simon Marchi via Gdb-patches
2020-12-29 12:16     ` Luis Machado via Gdb-patches
2021-01-18 16:29       ` Simon Marchi via Gdb-patches
2021-01-20 20:01         ` Tom Tromey
2020-11-09 17:04 ` [PATCH v3 15/24] AArch64: Add unit testing for logical tag set/get operations Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 16/24] AArch64: Report tag violation error information Luis Machado via Gdb-patches
2020-11-16 15:43   ` David Spickett via Gdb-patches
2020-11-16 16:45     ` Luis Machado via Gdb-patches
2020-11-17  9:36       ` David Spickett via Gdb-patches
2020-12-26 22:23   ` Simon Marchi via Gdb-patches
2020-12-30  0:50     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 17/24] AArch64: Add gdbserver MTE support Luis Machado via Gdb-patches
2020-12-26 22:30   ` Simon Marchi via Gdb-patches
2020-12-29 14:32     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 18/24] AArch64: Add MTE register set support for core files Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 19/24] New mtag commands Luis Machado via Gdb-patches
2020-12-27  3:32   ` Simon Marchi via Gdb-patches
2020-12-29 17:21     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 20/24] Documentation for the new " Luis Machado via Gdb-patches
2020-11-09 17:11   ` Eli Zaretskii via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 21/24] Extend "x" and "print" commands to support memory tagging Luis Machado via Gdb-patches
2020-11-09 17:14   ` Eli Zaretskii via Gdb-patches
2020-11-09 17:20     ` Luis Machado via Gdb-patches
2020-12-27  4:18   ` Simon Marchi via Gdb-patches
2020-12-29 18:50     ` Luis Machado via Gdb-patches
2021-01-18 17:56       ` Simon Marchi via Gdb-patches
2021-01-18 20:20         ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 22/24] Document new "x" and "print" memory tagging extensions Luis Machado via Gdb-patches
2020-11-09 17:16   ` Eli Zaretskii via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 23/24] Add NEWS entry Luis Machado via Gdb-patches
2020-11-09 17:19   ` Eli Zaretskii via Gdb-patches
2020-11-09 17:22     ` Luis Machado via Gdb-patches
2020-11-09 17:04 ` [PATCH v3 24/24] Add memory tagging testcases Luis Machado via Gdb-patches
2020-11-16 15:47   ` David Spickett via Gdb-patches
2020-11-16 16:51     ` Luis Machado via Gdb-patches
2020-12-27  4:36   ` Simon Marchi via Gdb-patches [this message]
2020-12-29 19:32     ` Luis Machado via Gdb-patches
2020-11-16 13:48 ` [PATCH v3 00/24] Memory Tagging Support + AArch64 Linux implementation Luis Machado via Gdb-patches
2020-11-16 14:37   ` Alan Hayward via Gdb-patches
2020-11-23 16:08   ` Luis Machado via Gdb-patches
2020-11-30 13:38     ` Luis Machado via Gdb-patches
2020-12-07 13:17       ` Luis Machado via Gdb-patches
2020-12-07 14:17         ` Alan Hayward via Gdb-patches

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=2d0c52e2-8375-dfd2-8310-1443c4d8f454@polymtl.ca \
    --to=gdb-patches@sourceware.org \
    --cc=david.spickett@linaro.org \
    --cc=luis.machado@linaro.org \
    --cc=simon.marchi@polymtl.ca \
    /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