diff options
author | Joseph Myers <joseph@codesourcery.com> | 2012-05-01 20:01:48 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2012-05-01 20:01:48 +0000 |
commit | f2d922feb2ea93c7133d6b40317cfdce7140f74f (patch) | |
tree | f558911d46ce2449ab699d07ed54929b24831f7e /conform | |
parent | d22956c99b81958fdfb8437361f92b9d8a6e7984 (diff) | |
download | glibc-f2d922feb2ea93c7133d6b40317cfdce7140f74f.zip glibc-f2d922feb2ea93c7133d6b40317cfdce7140f74f.tar.gz glibc-f2d922feb2ea93c7133d6b40317cfdce7140f74f.tar.bz2 |
conformtest: Unify "constant" and "typed-constant".
Diffstat (limited to 'conform')
-rw-r--r-- | conform/conformtest.pl | 59 | ||||
-rw-r--r-- | conform/data/signal.h-data | 8 |
2 files changed, 19 insertions, 48 deletions
diff --git a/conform/conformtest.pl b/conform/conformtest.pl index dc3712e..0a1a093 100644 --- a/conform/conformtest.pl +++ b/conform/conformtest.pl @@ -385,10 +385,11 @@ while ($#headers >= 0) { "Member \"$member\" does not have the correct type.", $res, 0); } - } elsif (/^constant *([a-zA-Z0-9_]*) *(?:([>=<!]+) ([A-Za-z0-9_-]*))?/) { + } elsif (/^constant *([a-zA-Z0-9_]*) *(?:{([^}]*)} *)?(?:([>=<!]+) ([A-Za-z0-9_-]*))?/) { my($const) = $1; - my($op) = $2; - my($value) = $3; + my($type) = $2; + my($op) = $3; + my($value) = $4; my($res) = $missing; # Remember that this name is allowed. @@ -407,55 +408,27 @@ while ($#headers >= 0) { : "Constant \"$const\" not available."), $res, $optional); - if (defined ($op) && ($res == 0 || !$optional)) { - # Generate a program to test for the value of this constant. + if (defined ($type) && ($res == 0 || !$optional)) { + # Test the types of the members. open (TESTFILE, ">$fnamebase.c"); print TESTFILE "$prepend"; print TESTFILE "#include <$h>\n"; - # Negate the value since 0 means ok - print TESTFILE "int main (void) { return !($const $op $value); }\n"; + print TESTFILE "__typeof__ (($type) 0) a;\n"; + print TESTFILE "extern __typeof__ ($const) a;\n"; close (TESTFILE); - $res = runtest ($fnamebase, "Testing for value of constant $const", - "Constant \"$const\" has not the right value.", $res); + compiletest ($fnamebase, "Testing for type of constant $const", + "Constant \"$const\" does not have the correct type.", + $res, 0); } - } elsif (/^typed-constant *([a-zA-Z0-9_]*) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_-]*)?/) { - my($const) = $1; - my($type) = "$3$4"; - my($value) = $5; - my($res) = $missing; - # Remember that this name is allowed. - push @allow, $const; - - # Generate a program to test for the availability of this constant. - open (TESTFILE, ">$fnamebase.c"); - print TESTFILE "$prepend"; - print TESTFILE "#include <$h>\n"; - print TESTFILE "__typeof__ ($const) a = $const;\n"; - close (TESTFILE); - - $res = compiletest ($fnamebase, "Testing for constant $const", - "Constant \"$const\" not available.", $res, 0); - - # Test the types of the members. - open (TESTFILE, ">$fnamebase.c"); - print TESTFILE "$prepend"; - print TESTFILE "#include <$h>\n"; - print TESTFILE "__typeof__ (($type) 0) a;\n"; - print TESTFILE "extern __typeof__ ($const) a;\n"; - close (TESTFILE); - - compiletest ($fnamebase, "Testing for type of constant $const", - "Constant \"$const\" does not have the correct type.", - $res, 0); - - if ($value ne "") { + if (defined ($op) && ($res == 0 || !$optional)) { # Generate a program to test for the value of this constant. open (TESTFILE, ">$fnamebase.c"); print TESTFILE "$prepend"; print TESTFILE "#include <$h>\n"; - print TESTFILE "int main (void) { return $const != $value; }\n"; + # Negate the value since 0 means ok + print TESTFILE "int main (void) { return !($const $op $value); }\n"; close (TESTFILE); $res = runtest ($fnamebase, "Testing for value of constant $const", @@ -833,9 +806,7 @@ while ($#headers >= 0) { if (/^element *({([^}]*)}|([^ ]*)) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_]*) *(.*)/) { push @allow, $7; - } elsif (/^constant *([a-zA-Z0-9_]*) *(?:([>=<!]+) ([A-Za-z0-9_-]*))?/) { - push @allow, $1; - } elsif (/^typed-constant *([a-zA-Z0-9_]*) *({([^}]*)}|([^ ]*)) *([A-Za-z0-9_]*)?/) { + } elsif (/^constant *([a-zA-Z0-9_]*) *(?:{([^}]*)} *)?(?:([>=<!]+) ([A-Za-z0-9_-]*))?/) { push @allow, $1; } elsif (/^(type|tag) *({([^}]*)|([a-zA-Z0-9_]*))/) { my($type) = "$3$4"; diff --git a/conform/data/signal.h-data b/conform/data/signal.h-data index 18f1b9e..99468ae 100644 --- a/conform/data/signal.h-data +++ b/conform/data/signal.h-data @@ -1,9 +1,9 @@ -typed-constant SIG_DFL {void(*)(int)} -typed-constant SIG_ERR {void(*)(int)} +constant SIG_DFL {void(*)(int)} +constant SIG_ERR {void(*)(int)} #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008 -typed-constant SIG_HOLD {void(*)(int)} +constant SIG_HOLD {void(*)(int)} #endif -typed-constant SIG_IGN {void(*)(int)} +constant SIG_IGN {void(*)(int)} type sig_atomic_t #if !defined ISO && !defined ISO99 && !defined ISO11 |