This is the mail archive of the libc-hacker@sourceware.org mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! As CONFORMANCE notes, these headers aren't supposed to define size_t (except that signal.h is not supposed to define size_t in ISO C99 and is supposed to define it in XPG6 or whenever struct sigstack is defined). Not sure why bits/types.h has been defining it, it is much cleaner if it just defines only __*_t types. Most of the headers that actually need size_t were already explicitly or implicitly making sure they get the type defined (be it #define __need_size_t #include <stddef.h>, or #include <sys/types.h>, or #include <stdlib.h>, or #include <string.h>, or #include <stdio.h>), there were just a few headers that needed some tweaking. I did make install-headers with this into an empty directory on x86_64-linux, and tried to compile all headers one by one into .s with various feature test macros to make sure this doesn't cause regressions, additionally I have grepped gcc -E -D_XOPEN_SOURCE={500,600} outputs of including headers that XPG* requires to define size_t or in the prototypes/struct definitions use size_t and also grepped all headers in libc tree which use size_t and don't necessarily make sure it is included. This is what I fond: 2007-07-17 Jakub Jelinek <jakub@redhat.com> * bits/types.h: Don't include stddef.h, don't define __need_size_t. * signal/signal.h <__USE_BSD || __USE_XOPEN_EXTENDED>: Define __need_size_t and include stddef.h. * sysvipc/sys/msg.h: Likewise. * posix/sched.h: Likewise. * hurd/hurd/signal.h (__need_size_t): Define. * CONFORMANCE: ctype.h and wctype.h no longer define size_t, neither does signal.h in pedantic ISO C namespaces. stdio.h no longer defines wint_t or wchar_t. --- libc/bits/types.h.jj 2005-02-22 00:11:47.000000000 +0100 +++ libc/bits/types.h 2007-07-17 18:41:03.000000000 +0200 @@ -1,5 +1,5 @@ /* bits/types.h -- definitions of __*_t types underlying *_t types. - Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -27,9 +27,6 @@ #include <features.h> #include <bits/wordsize.h> -#define __need_size_t -#include <stddef.h> - /* Convenience types. */ typedef unsigned char __u_char; typedef unsigned short int __u_short; --- libc/signal/signal.h.jj 2004-11-20 18:57:35.000000000 +0100 +++ libc/signal/signal.h 2007-07-17 18:45:27.000000000 +0200 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2003, 2004 Free Software Foundation, Inc. +/* Copyright (C) 1991-2003, 2004, 2007 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -339,6 +339,8 @@ extern int sigreturn (struct sigcontext #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED +# define __need_size_t +# include <stddef.h> /* If INTERRUPT is nonzero, make signal SIG interrupt system calls (causing them to fail with EINTR); if INTERRUPT is zero, make system --- libc/sysvipc/sys/msg.h.jj 2006-08-03 17:38:26.000000000 +0200 +++ libc/sysvipc/sys/msg.h 2007-07-17 18:47:17.000000000 +0200 @@ -1,4 +1,5 @@ -/* Copyright (C) 1995-1997,1999,2000,2003,2006 Free Software Foundation, Inc. +/* Copyright (C) 1995-1997,1999,2000,2003,2006,2007 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -21,6 +22,9 @@ #include <features.h> +#define __need_size_t +#include <stddef.h> + /* Get common definition of System V style IPC. */ #include <sys/ipc.h> --- libc/posix/sched.h.jj 2007-04-23 10:54:03.000000000 +0200 +++ libc/posix/sched.h 2007-07-17 18:42:23.000000000 +0200 @@ -25,6 +25,9 @@ /* Get type definitions. */ #include <bits/types.h> +#define __need_size_t +#include <stddef.h> + #define __need_timespec #include <time.h> --- libc/hurd/hurd/signal.h.jj 2007-03-21 21:22:16.000000000 +0100 +++ libc/hurd/hurd/signal.h 2007-07-17 18:44:33.000000000 +0200 @@ -26,6 +26,7 @@ #error "Must have `_GNU_SOURCE' feature test macro to use this file" #endif +#define __need_size_t #define __need_NULL #include <stddef.h> --- libc/CONFORMANCE.jj 2004-04-17 19:43:48.000000000 +0200 +++ libc/CONFORMANCE 2007-07-17 19:08:34.000000000 +0200 @@ -184,15 +184,7 @@ Also, the Single Unix Specification gene be included in headers (if _XOPEN_SOURCE is defined appropriately) than ISO C permits. -<ctype.h> should not declare size_t. - -<signal.h> should not declare size_t. - -<stdio.h> should not declare or use wchar_t or wint_t. - <wchar.h> does not support AMD1; to support it, the functions fwprintf, fwscanf, wprintf, wscanf, swprintf, swscanf, vfwprintf, vwprintf, vswprintf and fwide would need to be declared when __STDC_VERSION__ >= 199409L and not just for C99. - -<wctype.h> should not declare size_t. Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |