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:
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user