1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00

arm: XFAIL string/tst-memmove-overflow due to bug 25620

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>
This commit is contained in:
Florian Weimer
2020-05-13 16:45:29 +02:00
parent ad78d70275
commit eca1b23332
2 changed files with 26 additions and 2 deletions

View File

@ -57,6 +57,25 @@ expected_value (size_t index)
return randomized >> 25; /* Result is in the range [0, 127]. */ 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 static int
test_main (void) test_main (void)
{ {
@ -138,13 +157,13 @@ test_main (void)
start + allocation_size - sizeof (expected_end) - 1, start + allocation_size - sizeof (expected_end) - 1,
sizeof (expected_end)); sizeof (expected_end));
for (size_t i = 0; i < unshared_size - 1; ++i) 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 /* The gap between the checked start and end area of the mapping
has shared mappings at unspecified boundaries, so do not has shared mappings at unspecified boundaries, so do not
check the expected values in the middle. */ check the expected values in the middle. */
for (size_t i = allocation_size - unshared_size; i < allocation_size - 1; for (size_t i = allocation_size - unshared_size; i < allocation_size - 1;
++i) ++i)
TEST_COMPARE (start[i], expected_value (i + 1)); check_one_index (i, start[i], expected_value (i + 1));
support_blob_repeat_free (&repeat); support_blob_repeat_free (&repeat);
} }

View File

@ -68,3 +68,8 @@ ifeq ($(subdir),nptl)
libpthread-sysdep_routines += pt-arm-unwind-resume libpthread-sysdep_routines += pt-arm-unwind-resume
libpthread-shared-only-routines += pt-arm-unwind-resume libpthread-shared-only-routines += pt-arm-unwind-resume
endif endif
ifeq ($(subdir),string)
# This test fails on arm due to bug 25620 and related issues.
test-xfail-tst-memmove-overflow = yes
endif