about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2016-05-10 15:20:09 +0000
committerJoseph Myers <joseph@codesourcery.com>2016-05-10 15:20:09 +0000
commit77d21a1f4f56659dc3f6d0e841cdf8df0ba2a16a (patch)
tree7b7196baa39a6f0bd148d6b3ed0c0a25fb81749e
parent46c1ffa4d50ec6a11fb845708a94f107fdb765d2 (diff)
downloadglibc-77d21a1f4f56659dc3f6d0e841cdf8df0ba2a16a.tar.gz
glibc-77d21a1f4f56659dc3f6d0e841cdf8df0ba2a16a.tar.xz
glibc-77d21a1f4f56659dc3f6d0e841cdf8df0ba2a16a.zip
conformtest: Fix st_blksize, st_blocks expectations for XPG3, XPG4.
The conformtest expectations expect the struct stat fields st_blksize
and st_blocks to be of types blksize_t and blkcnt_t.  But XPG4 does
not have those types, using long instead, and XPG3 does not have these
fields at all.  This patch adjusts the expectations for those
standards, XFAILing them for XPG4 to allow for systems where the
typedefs don't correspond to long.

Tested for x86_64 and x86.

	* conform/data/sys/stat.h-data (st_blksize): Do not expect for
	[XPG3].  Expect type long and XFAIL for [XPG4].
	(st_blocks): Likewise.
-rw-r--r--ChangeLog4
-rw-r--r--conform/data/sys/stat.h-data10
2 files changed, 13 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 93db66fd61..4e0870fef6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2016-05-10  Joseph Myers  <joseph@codesourcery.com>
 
+	* conform/data/sys/stat.h-data (st_blksize): Do not expect for
+	[XPG3].  Expect type long and XFAIL for [XPG4].
+	(st_blocks): Likewise.
+
 	[BZ #20044]
 	* posix/unistd.h [__USE_UNIX98 && !__USE_XOPEN2K]
 	(pthread_atfork): New prototype.
diff --git a/conform/data/sys/stat.h-data b/conform/data/sys/stat.h-data
index f5b17a31ac..c70ef4529f 100644
--- a/conform/data/sys/stat.h-data
+++ b/conform/data/sys/stat.h-data
@@ -44,9 +44,17 @@ element {struct stat} {struct timespec} st_atim
 element {struct stat} {struct timespec} st_mtim
 element {struct stat} {struct timespec} st_ctim
 #endif
-#if !defined POSIX && !defined POSIX2008
+#if !defined XPG3 && !defined POSIX && !defined POSIX2008
+# ifdef XPG4
+// The XPG4 use of "long" for these fields is not compatible with the
+// use of typedefs in future standards to support values outside the
+// range of "long".
+xfail-element {struct stat} long st_blksize
+xfail-element {struct stat} long st_blocks
+# else
 element {struct stat} blksize_t st_blksize
 element {struct stat} blkcnt_t st_blocks
+# endif
 #endif
 
 # if defined XOPEN2K8 || defined POSIX2008