about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-05-01 20:01:48 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-05-01 20:01:48 +0000
commitf2d922feb2ea93c7133d6b40317cfdce7140f74f (patch)
treef558911d46ce2449ab699d07ed54929b24831f7e
parentd22956c99b81958fdfb8437361f92b9d8a6e7984 (diff)
downloadglibc-f2d922feb2ea93c7133d6b40317cfdce7140f74f.tar.gz
glibc-f2d922feb2ea93c7133d6b40317cfdce7140f74f.tar.xz
glibc-f2d922feb2ea93c7133d6b40317cfdce7140f74f.zip
conformtest: Unify "constant" and "typed-constant".
-rw-r--r--ChangeLog5
-rw-r--r--conform/conformtest.pl59
-rw-r--r--conform/data/signal.h-data8
3 files changed, 24 insertions, 48 deletions
diff --git a/ChangeLog b/ChangeLog
index f1f903d2b9..323b45be3e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2012-05-01  Joseph Myers  <joseph@codesourcery.com>
 
+	* conform/conformtest.pl: Handle braced types on "constant" lines
+	instead of handling "typed-constant".
+	* conform/data/signal.h-data: Use "constant" instead of
+	"typed-constant".
+
 	* conform/conformtest.pl: Handle "optional-" at start of lines in
 	one place rather than duplicating several cases.  Handle each
 	format of "macro" line with initial "optional-".
diff --git a/conform/conformtest.pl b/conform/conformtest.pl
index dc3712ea66..0a1a093990 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 18f1b9e096..99468aecef 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