mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 22:10:13 +00:00
conformtest: Make more tests into compilation tests.
The conformtest header tests test some things through compilation tests and others through execution tests. This patch makes more of the tests into compilation tests, using _Static_assert (note: for float.h tests on floating-point values this is depending on a GNU extension, that those assertions are allowed in the absence of -pedantic although they aren't strictly integer constant expressions). The remaining execution tests are for values of things listed as "symbol" (in fact no such things have a value expectation listed) and for values of macros defined as string constants (three such values listed in total). This is intended as preparation for enabling the vast bulk of the tests to run for cross compilation. (Even the few remaining execution tests ought in principle to run for cross compilation when a test wrapper is defined, but that's more complicated. The existing execution tests for native builds in fact are linked and run with an existing installed libc that's required to exist to link against, rather than with the newly built libc; only the new headers are used.) Tested for x86_64. * conform/conformtest.pl: Use compilation instead of execution tests for testing values of constants and usability in #if.
This commit is contained in:
parent
598fe6d9f4
commit
0fbca26c39
@ -1,3 +1,8 @@
|
|||||||
|
2017-03-16 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* conform/conformtest.pl: Use compilation instead of execution
|
||||||
|
tests for testing values of constants and usability in #if.
|
||||||
|
|
||||||
2017-03-16 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
|
2017-03-16 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
|
||||||
|
|
||||||
* math/auto-libm-test-in: Mark some catan and catanh as
|
* math/auto-libm-test-in: Mark some catan and catanh as
|
||||||
|
@ -472,11 +472,11 @@ while ($#headers >= 0) {
|
|||||||
}
|
}
|
||||||
print TESTFILE "# define conformtest_value ($s)\n";
|
print TESTFILE "# define conformtest_value ($s)\n";
|
||||||
print TESTFILE "#endif\n";
|
print TESTFILE "#endif\n";
|
||||||
print TESTFILE "int main (void) { return !((($symbol < 0) == conformtest_negative) && ($symbol == conformtest_value)); }\n";
|
print TESTFILE "_Static_assert ((($symbol < 0) == conformtest_negative) && ($symbol == conformtest_value), \"value match inside and outside #if\");\n";
|
||||||
close (TESTFILE);
|
close (TESTFILE);
|
||||||
|
|
||||||
runtest ($fnamebase, "Testing for #if usability of symbol $symbol",
|
compiletest ($fnamebase, "Testing for #if usability of symbol $symbol",
|
||||||
"Symbol \"$symbol\" not usable in #if.", $res, $xfail);
|
"Symbol \"$symbol\" not usable in #if.", $res, 0, $xfail);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined ($type) && ($res == 0 || !$optional)) {
|
if (defined ($type) && ($res == 0 || !$optional)) {
|
||||||
@ -503,13 +503,12 @@ while ($#headers >= 0) {
|
|||||||
open (TESTFILE, ">$fnamebase.c");
|
open (TESTFILE, ">$fnamebase.c");
|
||||||
print TESTFILE "$prepend";
|
print TESTFILE "$prepend";
|
||||||
print TESTFILE "#include <$h>\n";
|
print TESTFILE "#include <$h>\n";
|
||||||
# Negate the value since 0 means ok
|
print TESTFILE "_Static_assert ($symbol $op $value, \"value constraint\");\n";
|
||||||
print TESTFILE "int main (void) { return !($symbol $op $value); }\n";
|
|
||||||
close (TESTFILE);
|
close (TESTFILE);
|
||||||
|
|
||||||
$res = runtest ($fnamebase, "Testing for value of symbol $symbol",
|
$res = compiletest ($fnamebase, "Testing for value of symbol $symbol",
|
||||||
"Symbol \"$symbol\" has not the right value.", $res,
|
"Symbol \"$symbol\" has not the right value.",
|
||||||
$xfail);
|
$res, 0, $xfail);
|
||||||
}
|
}
|
||||||
} elsif (/^symbol *([a-zA-Z0-9_]*) *([A-Za-z0-9_-]*)?/) {
|
} elsif (/^symbol *([a-zA-Z0-9_]*) *([A-Za-z0-9_-]*)?/) {
|
||||||
my($symbol) = $1;
|
my($symbol) = $1;
|
||||||
|
Loading…
Reference in New Issue
Block a user