Message ID | Pine.LNX.4.64.1405152141190.911@digraph.polyomino.org.uk |
---|---|
State | New |
Headers | show |
Ping. This patch <https://sourceware.org/ml/libc-alpha/2014-05/msg00391.html> is pending review.
Ping^2. This patch <https://sourceware.org/ml/libc-alpha/2014-05/msg00391.html> is still pending review.
Ping^3. This patch <https://sourceware.org/ml/libc-alpha/2014-05/msg00391.html> is still pending review.
On Thu, May 15, 2014 at 09:43:05PM +0000, Joseph S. Myers wrote: > diff --git a/conform/data/sys/mman.h-data b/conform/data/sys/mman.h-data > index 0555fd1..3a88684 100644 > --- a/conform/data/sys/mman.h-data > +++ b/conform/data/sys/mman.h-data > @@ -39,8 +39,10 @@ optional-function int posix_typed_mem_get_info (int, struct posix_typed_mem_info > optional-function int posix_typed_mem_open (const char*, int, int) > # endif > > +# ifndef POSIX > type size_t > type off_t > +# endif The earliest POSIX I could access (2001) as this text: The size_t and off_t types are defined as described in <sys/types.h>. Since I didn't have a copy of the POSIX 1995/6, Carlos suggested I look at the next best available thing, which was the Susv1 and that too had the same text. Wouldn't that make this change incorrect? > type suseconds_t > # endif > +# ifndef POSIX > type time_t The Susv1 has time_t in sys/types.h. Siddhesh
On Wed, Jun 11, 2014 at 11:28:05PM +0530, Siddhesh Poyarekar wrote: > On Thu, May 15, 2014 at 09:43:05PM +0000, Joseph S. Myers wrote: > > diff --git a/conform/data/sys/mman.h-data b/conform/data/sys/mman.h-data > > index 0555fd1..3a88684 100644 > > --- a/conform/data/sys/mman.h-data > > +++ b/conform/data/sys/mman.h-data > > @@ -39,8 +39,10 @@ optional-function int posix_typed_mem_get_info (int, struct posix_typed_mem_info > > optional-function int posix_typed_mem_open (const char*, int, int) > > # endif > > > > +# ifndef POSIX > > type size_t > > type off_t > > +# endif > > The earliest POSIX I could access (2001) as this text: > > The size_t and off_t types are defined as described in > <sys/types.h>. > > Since I didn't have a copy of the POSIX 1995/6, Carlos suggested I > look at the next best available thing, which was the Susv1 and that > too had the same text. Wouldn't that make this change incorrect? > > > type suseconds_t > > # endif > > +# ifndef POSIX > > type time_t > > The Susv1 has time_t in sys/types.h. I went through your second similar patch proposal for wait.h and the number of inconsistencies leads me to believe that I am getting something wrong, especially since I'm not even looking at the exact document you cited for verification. I'll defer review to someone who actually has access to the document or has other means to verify the change. Siddhesh
On Wed, 11 Jun 2014, Siddhesh Poyarekar wrote: > On Thu, May 15, 2014 at 09:43:05PM +0000, Joseph S. Myers wrote: > > diff --git a/conform/data/sys/mman.h-data b/conform/data/sys/mman.h-data > > index 0555fd1..3a88684 100644 > > --- a/conform/data/sys/mman.h-data > > +++ b/conform/data/sys/mman.h-data > > @@ -39,8 +39,10 @@ optional-function int posix_typed_mem_get_info (int, struct posix_typed_mem_info > > optional-function int posix_typed_mem_open (const char*, int, int) > > # endif > > > > +# ifndef POSIX > > type size_t > > type off_t > > +# endif > > The earliest POSIX I could access (2001) as this text: > > The size_t and off_t types are defined as described in > <sys/types.h>. > > Since I didn't have a copy of the POSIX 1995/6, Carlos suggested I > look at the next best available thing, which was the Susv1 and that > too had the same text. Wouldn't that make this change incorrect? No. POSIX.1:1995/6 does not have the header definition manpages from the Single Unix sequence of documents that were used as a basis for 2001 and later editions of POSIX, and those often include things that weren't in earlier versions of POSIX - not always XSI-conditional. (In particular, cases where a function prototype uses a type have typically moved towards POSIX requiring that type to be defined in the header using it, rather than allowing the function to be declared with an implementation-namespace version __*_t without *_t itself being defined. Other cases, such as where there was a permission for a header to include several other complete headers because of a few types used from those headers, have more often remained XSI-conditional.) * These types are not listed in Annex C (not normative and not always to be trusted, but a good starting point for indications of what goes in each header before going through relevant normative content in more detail). * The sys/mman.h header definition (section 12) lists various functions and constants but does not say anything about types being defined in this header (they are of course permitted, as part of the general permission to define *_t types in all POSIX headers). > > type suseconds_t > > # endif > > +# ifndef POSIX > > type time_t > > The Susv1 has time_t in sys/types.h. Table 2-1 in POSIX.1:1995/6, listing sys/types.h contents, does not.
On Wed, Jun 11, 2014 at 06:44:05PM +0000, Joseph S. Myers wrote: > No. POSIX.1:1995/6 does not have the header definition manpages from the > Single Unix sequence of documents that were used as a basis for 2001 and > later editions of POSIX, and those often include things that weren't in > earlier versions of POSIX - not always XSI-conditional. (In particular, > cases where a function prototype uses a type have typically moved towards > POSIX requiring that type to be defined in the header using it, rather > than allowing the function to be declared with an implementation-namespace > version __*_t without *_t itself being defined. Other cases, such as > where there was a permission for a header to include several other > complete headers because of a few types used from those headers, have more > often remained XSI-conditional.) > > * These types are not listed in Annex C (not normative and not always to > be trusted, but a good starting point for indications of what goes in each > header before going through relevant normative content in more detail). > > * The sys/mman.h header definition (section 12) lists various functions > and constants but does not say anything about types being defined in this > header (they are of course permitted, as part of the general permission to > define *_t types in all POSIX headers). > > > > type suseconds_t > > > # endif > > > +# ifndef POSIX > > > type time_t > > > > The Susv1 has time_t in sys/types.h. > > Table 2-1 in POSIX.1:1995/6, listing sys/types.h contents, does not. Thanks, that explains the difference I am seeing. I think your explanation ought to be sufficient validation for this patch, but if you think this needs further review then please wait for someone else to do that since without the document, I cannot add anything to this beyond positive testing on the same architectures that you have already tested, i.e. x86. Siddhesh
On 05/15/2014 11:43 PM, Joseph S. Myers wrote: > Continuing the series of patches to clean up conformtest expectations > for "POSIX" (1995/6) based on review of the expectations against the > standard, this patch cleans up expectations for sys/mman.h, sys/stat.h > and sys/types.h. Tested x86_64; no new XFAILs needed. Could you please provide a precise citation for "POSIX" (1995/6)? I'm trying to get a copy, and want to make sure I get the right one.
On Thu, 12 Jun 2014, Florian Weimer wrote: > On 05/15/2014 11:43 PM, Joseph S. Myers wrote: > > Continuing the series of patches to clean up conformtest expectations > > for "POSIX" (1995/6) based on review of the expectations against the > > standard, this patch cleans up expectations for sys/mman.h, sys/stat.h > > and sys/types.h. Tested x86_64; no new XFAILs needed. > > Could you please provide a precise citation for "POSIX" (1995/6)? I'm trying > to get a copy, and want to make sure I get the right one. "POSIX" in conformtest is testing _POSIX_C_SOURCE=199506L (well, it's currently testing _POSIX_C_SOURCE=199912, but there's no difference in what they enable in glibc and it should be fixed to test _POSIX_C_SOURCE=199506L). That means the union of the symbols defined by ISO/IEC 9945-1:1996 (ANSI/IEEE Std 1003.1, 1996 Edition) (ISBN 1-55937-573-6) and ISO/IEC 9945-2:1993 (ANSI/IEEE Std 1003.2-1992) (my copy bears ISBN 1-55937-255-9 but comes with a correction slip saying it should be 1-55937-406-3). For limits.h, stdio.h and unistd.h you need to take the union of the symbols from POSIX.1 and POSIX.2. The other headers are only in one or another of the standards. The last time I checked, the 1993 edition of POSIX.1 (POSIX.1b) was available on IEEE Xplore (downloadable as a 42MB PDF given a site subscription to IEEE Xplore), but not the 1995/6 or 1990 editions (both of which I have in paper form). I'd hope once the review of "POSIX" is complete to rename that standard in conformtest to POSIX95 and extend the support to versions that glibc supports but conformtest doesn't currently cover (the 2001 edition without XSI extensions, 1993 + POSIX.2, POSIX.1:1990 + POSIX.2, POSIX.1:1990). Once we have POSIX.1:1990 support in conformtest we can remove posix/annexc, which is a bit confused about what it's testing (it uses _POSIX_SOURCE, i.e. POSIX.1:1990, but the expectations are based on a more recent version, probably 1995/6). With C90 Amendment 1 support in conformtest we can remove stdlib/isomac. With both removed, we can eliminate $(native-compile) (see discussion in April 2012 about how we'd like to do so). There was some discussion in the Austin Group about making older standards and drafts available but I haven't noticed progress there lately.
diff --git a/conform/data/sys/mman.h-data b/conform/data/sys/mman.h-data index 0555fd1..3a88684 100644 --- a/conform/data/sys/mman.h-data +++ b/conform/data/sys/mman.h-data @@ -39,8 +39,10 @@ optional-function int posix_typed_mem_get_info (int, struct posix_typed_mem_info optional-function int posix_typed_mem_open (const char*, int, int) # endif +# ifndef POSIX type size_t type off_t +# endif function int mlock (const void*, size_t) function int mlockall (int) diff --git a/conform/data/sys/stat.h-data b/conform/data/sys/stat.h-data index 41c3932..631daa4 100644 --- a/conform/data/sys/stat.h-data +++ b/conform/data/sys/stat.h-data @@ -66,6 +66,7 @@ constant S_IRUSR constant S_IWUSR constant S_IXUSR constant S_IRWXG +constant S_IRGRP constant S_IWGRP constant S_IXGRP constant S_IRWXO @@ -78,12 +79,12 @@ constant S_ISGID constant S_ISVTX #endif -#if !defined POSIX macro S_ISBLK macro S_ISCHR macro S_ISDIR macro S_ISFIFO macro S_ISREG +#if !defined POSIX macro S_ISLNK macro S_ISSOCK #endif @@ -92,7 +93,9 @@ macro S_ISSOCK optional-macro S_TYPEISMQ optional-macro S_TYPEISSEM optional-macro S_TYPEISSHM +# if !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98 optional-macro S_TYPEISTMO +# endif # if defined XOPEN2K8 || defined POSIX2008 constant UTIME_NOW diff --git a/conform/data/sys/types.h-data b/conform/data/sys/types.h-data index cda1954..36c5efa 100644 --- a/conform/data/sys/types.h-data +++ b/conform/data/sys/types.h-data @@ -1,6 +1,6 @@ #if !defined ISO && !defined ISO99 && !defined ISO11 -type blkcnt_t #if !defined POSIX +type blkcnt_t type blksize_t type clock_t type clockid_t @@ -48,8 +48,10 @@ type ssize_t # if !defined POSIX && !defined POSIX2008 type suseconds_t # endif +# ifndef POSIX type time_t type timer_t +# endif type uid_t allow *_t