bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: failing SIGNATURE_CHECK's due to undefined types


From: Eric Blake
Subject: Re: failing SIGNATURE_CHECK's due to undefined types
Date: Wed, 06 Jan 2010 07:12:34 -0700
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23 Mnenhy/0.7.6.666

According to Ralf Wildenhues on 1/5/2010 11:44 PM:
> SIGNATURE_CHECK fails a few tests due to undefined ssize_t, and pread,
> on my GNU/Linux system.
> 
> Not sure if the patch is right, or if the ssize_t module is needed.
> 
> The pread failure is without a patch; it requires
>   #define _XOPEN_SOURCE 500
> 
> here but I'm not sure what the right gnuliby fix is: an AC_CHECK_DECL
> somewhere?

Do we need to be using AC_USE_SYSTEM_EXTENSIONS for pread?

> OK to commit?

No.  The whole point of the signature checks is that POSIX 2008 requires
headers to be self-contained.  For an example, <dirent.h> is now required
to provide DIR (although it can be an incomplete type), struct dirent, and
ino_t, without the user having to include <sys/types.h> beforehand (but I
don't see anything in POSIX or in test-dirent.c that requires ssize_t).
The real fix, then, is to fix our wrapper dirent.in.h to guarantee this,
and to report a glibc bug in the meantime (similar to the one I posted for
stdio.h [1]).

[1] http://sources.redhat.com/bugzilla/show_bug.cgi?id=11125

Therefore, I'm pushing this instead, which should fix pread, fseeko,
ftello, getdelim, and getline.  But I'm not sure what failure you were
seeing with test-dirent - care to post it?

-- 
Don't work too hard, make some time for fun as well!

Eric Blake             address@hidden
From 60ad192b7032409b579ea059591cfd2558f57075 Mon Sep 17 00:00:00 2001
From: Eric Blake <address@hidden>
Date: Wed, 6 Jan 2010 07:09:03 -0700
Subject: [PATCH] stdio, unistd: guarantee ssize_t

Per POSIX 2008, ssize_t needs to exist whether or not we are
replacing functions that use it.  For now, we only guarantee
it if we know that the user expects a function that uses
that type, while waiting for glibc to catch up to POSIX.

* lib/unistd.in.h (includes): Ensure that types required by POSIX
2008 are exposed when needed.
* lib/stdio.in.h (includes): Likewise.
Reported by Ralf Wildenhues.

Signed-off-by: Eric Blake <address@hidden>
---
 ChangeLog       |    8 ++++++++
 lib/stdio.in.h  |    7 ++-----
 lib/unistd.in.h |    6 ++----
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e20f352..0dbbe19 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-01-06  Eric Blake  <address@hidden>
+
+       stdio, unistd: guarantee ssize_t
+       * lib/unistd.in.h (includes): Ensure that types required by POSIX
+       2008 are exposed when needed.
+       * lib/stdio.in.h (includes): Likewise.
+       Reported by Ralf Wildenhues.
+
 2010-01-06  Paolo Bonzini  <address@hidden>

        nl_langinfo: do not call AC_CHECK_FUNC_ONCE inside if.
diff --git a/lib/stdio.in.h b/lib/stdio.in.h
index 1c73db6..1fc4f30 100644
--- a/lib/stdio.in.h
+++ b/lib/stdio.in.h
@@ -39,11 +39,8 @@
 #include <stdarg.h>
 #include <stddef.h>

-#if ((@GNULIB_FSEEKO@ && @REPLACE_FSEEKO@) \
-     || (@GNULIB_FTELLO@ && @REPLACE_FTELLO@) \
-     || (@GNULIB_GETDELIM@ && address@hidden@) \
-     || (@GNULIB_GETLINE@ && (address@hidden@ || @REPLACE_GETLINE@)) \
-     || defined GNULIB_POSIXCHECK)
+#if (@GNULIB_FSEEKO@ || @GNULIB_FTELLO@ || @GNULIB_GETDELIM@ \
+     || @GNULIB_GETLINE@ || defined GNULIB_POSIXCHECK)
 /* Get off_t and ssize_t.  */
 # include <sys/types.h>
 #endif
diff --git a/lib/unistd.in.h b/lib/unistd.in.h
index f5f97f0..f1ed8b8 100644
--- a/lib/unistd.in.h
+++ b/lib/unistd.in.h
@@ -61,10 +61,8 @@
 # include <io.h>
 #endif

-#if ((@GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@)   \
-     || (@GNULIB_READLINK@ && (address@hidden@ || @REPLACE_READLINK@)) \
-     || (@GNULIB_READLINKAT@ && address@hidden@) \
-     || defined GNULIB_POSIXCHECK)
+#if (@GNULIB_WRITE@ || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \
+     || @GNULIB_PREAD@ || defined GNULIB_POSIXCHECK)
 /* Get ssize_t.  */
 # include <sys/types.h>
 #endif
-- 
1.6.4.2

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]