glibc/math/libm-test-compat_totalordermag.inc
Joseph Myers 4745f4c1ca Correct TEST_COMPAT conditions in totalorder compat tests.
I noticed that the totalorder compat tests mixed TEST_COMPAT
conditions using COMPAT_VER (computed as the first symbol version for
the symbol being tested) and those with a hardcoded GLIBC_2_25.

COMPAT_VER is logically correct here, so this patch changes the tests
to use it.  GLIBC_2_25 is harmless at present (even for _FloatN /
_FloatNx functions added in later glibc versions).  However, if in
future we support _Float16 functions in glibc for any existing
configuration, the test using GLIBC_2_25 would get things wrong
(wrongly think that there are compat versions of totalorderf16 and
totalordermagf16 to test).

(The actual definitions of the compat / versioned symbols for the
totalorder functions make no attempt to deal with the possibility of
libm function support for a new floating-point format, already
supported for other architectures in glibc, being added in some glibc
configuration in future, for which the only vaguely plausible case
would be if some architecture gets _Float128 support it previously
lacked; this is much like functions added after glibc 2.4 not
generally attempting to deal with compat support for long double
changing away from having the same format as double.)

Tested for x86_64, and with build-many-glibcs.py.

	* math/libm-test-compat_totalorder.inc (do_test)
	[TEST_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)]: Change condition to
	[TEST_COMPAT (libm, COMPAT_VER, GLIBC_2_31)].
	* math/libm-test-compat_totalordermag.inc (do_test)
	[TEST_COMPAT (libm, GLIBC_2_25, GLIBC_2_31)]: Likewise.
2019-08-16 19:23:30 +00:00

57 lines
1.6 KiB
C++

/* Test totalordermag compat symbol.
Copyright (C) 2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include <shlib-compat.h>
#include <first-versions.h>
#define COMPAT_TEST
#include "libm-test-totalordermag.c"
#define CONCATX(x, y) x ## y
#define CONCAT(x, y) CONCATX (x, y)
#define COMPAT_VER CONCAT (FIRST_VERSION_libm_, FUNC_TEST (totalordermag))
#if TEST_COMPAT (libm, COMPAT_VER, GLIBC_2_31)
int FUNC_TEST (compat_totalordermag) (FLOAT, FLOAT);
compat_symbol_reference (libm,
FUNC_TEST (compat_totalordermag),
FUNC_TEST (totalordermag),
COMPAT_VER);
static void
compat_totalordermag_test (void)
{
ALL_RM_TEST (compat_totalordermag, 1, totalordermag_test_data, RUN_TEST_LOOP_ff_b, END);
}
#endif
static void
do_test (void)
{
#if TEST_COMPAT (libm, COMPAT_VER, GLIBC_2_31)
compat_totalordermag_test ();
#endif
}
/*
* Local Variables:
* mode:c
* End:
*/