* [PATCH] Avoid defining size_t in ctype.h, wctype.h and signal.h for -std=c99 -pedantic
@ 2007-07-17 17:20 Jakub Jelinek
0 siblings, 0 replies; only message in thread
From: Jakub Jelinek @ 2007-07-17 17:20 UTC (permalink / raw)
To: Ulrich Drepper; +Cc: Glibc hackers
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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2007-07-17 17:20 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-07-17 17:20 [PATCH] Avoid defining size_t in ctype.h, wctype.h and signal.h for -std=c99 -pedantic Jakub Jelinek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).