[lldb] Fix memory tag unsupported test
authorDavid Spickett <david.spickett@linaro.org>
Fri, 25 Jun 2021 08:52:36 +0000 (08:52 +0000)
committerDavid Spickett <david.spickett@linaro.org>
Fri, 25 Jun 2021 08:57:05 +0000 (08:57 +0000)
This corrects the test added in
31f9960c38529ce805edf9764535eb0ce188cadf
and temporarily patched in
3b4aad1186e8e8e6f6c7887cb5e8d9bfd7d3ce2f.

This test checks that the memory tag read
command errors when you use it on a platform
without memory tagging.
(which is why we skip the test if you actually
have MTE)

The problem with this test is that there's
two levels of unsupported each with it's own
specific error.

On anything that isn't AArch64, there's no
tagging extension we support. So you're told
that that is the case. As in "this won't ever work".

When you're on AArch64 we know that MTE could
be present on the remote and when we find that it
isn't, we tell you that instead.

Expect a different error message on AArch64 to fix
the test.

lldb/test/API/functionalities/memory/tag/TestMemoryTag.py

index 04bc4cc..d282723 100644 (file)
@@ -18,7 +18,7 @@ class MemoryTagTestCase(TestBase):
 
     def test_memory_tag_read_unsupported(self):
         """Test that "memory tag read" errors on unsupported platforms"""
-        if not self.isAArch64MTE():
+        if self.isAArch64MTE():
             self.skipTest("Requires a target without AArch64 MTE.")
 
         self.build()
@@ -30,6 +30,12 @@ class MemoryTagTestCase(TestBase):
                                         num_expected_locations=1)
         self.runCmd("run", RUN_SUCCEEDED)
 
-        self.expect("memory tag read 0 1",
-                    substrs=["error: This architecture does not support memory tagging"],
-                    error=True)
+        # If you're on AArch64 you could have MTE but the remote process
+        # must also support it. If you're on any other arhcitecture you
+        # won't have any tagging at all. So the error message is different.
+        if self.getArchitecture() == "aarch64":
+            expected = "error: Process does not support memory tagging"
+        else:
+            expected = "error: This architecture does not support memory tagging"
+
+        self.expect("memory tag read 0 1", substrs=[expected], error=True)