arm: XFAIL string/tst-memmove-overflow due to bug 25620
authorFlorian Weimer <fweimer@redhat.com>
Wed, 13 May 2020 14:45:29 +0000 (16:45 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Wed, 13 May 2020 14:48:26 +0000 (16:48 +0200)
Also reduce the amount of output in case of a large-scale mismatch in
the copied data.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
string/tst-memmove-overflow.c
sysdeps/arm/Makefile

index b744679..77d693d 100644 (file)
@@ -57,6 +57,25 @@ expected_value (size_t index)
   return randomized >> 25;     /* Result is in the range [0, 127].  */
 }
 
+/* Used to count mismatches up to a limit, to avoid creating a huge
+   test output file.  */
+static unsigned int mismatch_count;
+
+/* Check ACTUAL == EXPECTED.  Use INDEX for error reporting.  Exit the
+   process after too many errors.  */
+static inline void
+check_one_index (size_t index, unsigned char actual, unsigned char expected)
+{
+  if (actual != expected)
+    {
+      printf ("error: mismatch at index %zu: expected 0x%02x, got 0x%02x\n",
+             index, actual, expected);
+      ++mismatch_count;
+      if (mismatch_count > 200)
+       FAIL_EXIT1 ("bailing out due to too many errors");
+    }
+}
+
 static int
 test_main (void)
 {
@@ -138,13 +157,13 @@ test_main (void)
                         start + allocation_size - sizeof (expected_end) - 1,
                         sizeof (expected_end));
       for (size_t i = 0; i < unshared_size - 1; ++i)
-       TEST_COMPARE (start[i], expected_value (i + 1));
+       check_one_index (i, start[i], expected_value (i + 1));
       /* The gap between the checked start and end area of the mapping
         has shared mappings at unspecified boundaries, so do not
         check the expected values in the middle.  */
       for (size_t i = allocation_size - unshared_size; i < allocation_size - 1;
           ++i)
-       TEST_COMPARE (start[i], expected_value (i + 1));
+       check_one_index (i, start[i], expected_value (i + 1));
 
       support_blob_repeat_free (&repeat);
     }
index ad2042b..a0cb7f3 100644 (file)
@@ -68,3 +68,8 @@ ifeq ($(subdir),nptl)
 libpthread-sysdep_routines += pt-arm-unwind-resume
 libpthread-shared-only-routines += pt-arm-unwind-resume
 endif
+
+ifeq ($(subdir),string)
+# This test fails on arm due to bug 25620 and related issues.
+test-xfail-tst-memmove-overflow = yes
+endif