Separate out error_t definition
Commit Message
so interfaces needing it can get it.
* stdlib/errno.h (error_t): Move definition to...
* stdlib/bits/types/error_t.h: ... new header.
* stdlib/Makefile (headers): Add bits/types/error_t.h.
* sysdeps/mach/hurd/bits/errno.h (error_t): Move definition to...
* sysdeps/mach/hurd/bits/types/error_t.h: ... new header.
* sysdeps/mach/hurd/errnos.awk (error_t): Likewise.
* hurd/hurd.h: Include <bits/types/error_t.h>
* hurd/hurd/fd.h: Include <bits/types/error_t.h>
* hurd/hurd/id.h: Include <errno.h> and <bits/types/error_t.h>
* hurd/hurd/lookup.h: Include <errno.h> and <bits/types/error_t.h>
* hurd/hurd/resource.h: Include <bits/types/error_t.h>
* hurd/hurd/signal.h: Include <bits/types/error_t.h>
* hurd/hurd/sigpreempt.h: Include <bits/types/error_t.h>
---
ChangeLog | 13 +++++++++++++
hurd/hurd.h | 1 +
hurd/hurd/fd.h | 1 +
hurd/hurd/id.h | 2 ++
hurd/hurd/lookup.h | 2 ++
hurd/hurd/resource.h | 1 +
hurd/hurd/signal.h | 1 +
hurd/hurd/sigpreempt.h | 1 +
stdlib/Makefile | 2 +-
stdlib/bits/types/error_t.h | 24 ++++++++++++++++++++++++
stdlib/errno.h | 7 +------
sysdeps/mach/hurd/bits/errno.h | 8 --------
sysdeps/mach/hurd/bits/types/error_t.h | 27 +++++++++++++++++++++++++++
sysdeps/mach/hurd/errnos.awk | 8 --------
14 files changed, 75 insertions(+), 23 deletions(-)
create mode 100644 stdlib/bits/types/error_t.h
create mode 100644 sysdeps/mach/hurd/bits/types/error_t.h
Comments
Samuel Thibault, on dim. 04 mars 2018 03:28:06 +0100, wrote:
> + * stdlib/errno.h (error_t): Move definition to...
> + * stdlib/bits/types/error_t.h: ... new header.
While looking at other stuff, I saw that perhaps I need to add a
./include/bits/types/error_t.h too? (although I don't know why it is
needed, things went fine without it).
Samuel
On Sat, Mar 3, 2018 at 9:41 PM, Samuel Thibault
<samuel.thibault@ens-lyon.org> wrote:
> Samuel Thibault, on dim. 04 mars 2018 03:28:06 +0100, wrote:
>> + * stdlib/errno.h (error_t): Move definition to...
>> + * stdlib/bits/types/error_t.h: ... new header.
>
> While looking at other stuff, I saw that perhaps I need to add a
> ./include/bits/types/error_t.h too? (although I don't know why it is
> needed, things went fine without it).
You don't need that, but you _do_ need to put the generic (non-Hurd)
version of bits/types/error_t.h in the top-level bits directory
instead of in stdlib/bits. The top-level bits directory is for the
generic version of bits headers that might get overridden by sysdeps
versions; bits headers in subject-matter directories are used
unconditionally on all platforms.
Yes, this is confusing. I don't remember why the top-level directory
is not sysdeps/generic/bits, which would at least be consistent with
the way the rest of sysdeps works.
Also, I think the Hurd bits/types/error_t.h needs to include
bits/errno.h so that the definition of enum __error_t_codes is
visible.
Rest of the patch looks good to me.
zw
Zack Weinberg, on dim. 04 mars 2018 11:03:37 -0500, wrote:
> On Sat, Mar 3, 2018 at 9:41 PM, Samuel Thibault
> <samuel.thibault@ens-lyon.org> wrote:
> > Samuel Thibault, on dim. 04 mars 2018 03:28:06 +0100, wrote:
> >> + * stdlib/errno.h (error_t): Move definition to...
> >> + * stdlib/bits/types/error_t.h: ... new header.
> >
> > While looking at other stuff, I saw that perhaps I need to add a
> > ./include/bits/types/error_t.h too? (although I don't know why it is
> > needed, things went fine without it).
>
> You don't need that, but you _do_ need to put the generic (non-Hurd)
> version of bits/types/error_t.h in the top-level bits directory
> instead of in stdlib/bits.
Ok...
Thanks!
Samuel
@@ -23,6 +23,19 @@
* mach/mach/mig_support.h [defined __USE_GNU]: Do not #error out.
* scripts/check-installed-headers.sh: Do not ignore Hurd and Mach
headers.
+ * stdlib/errno.h (error_t): Move definition to...
+ * stdlib/bits/types/error_t.h: ... new header.
+ * stdlib/Makefile (headers): Add bits/types/error_t.h.
+ * sysdeps/mach/hurd/bits/errno.h (error_t): Move definition to...
+ * sysdeps/mach/hurd/bits/types/error_t.h: ... new header.
+ * sysdeps/mach/hurd/errnos.awk (error_t): Likewise.
+ * hurd/hurd.h: Include <bits/types/error_t.h>
+ * hurd/hurd/fd.h: Include <bits/types/error_t.h>
+ * hurd/hurd/id.h: Include <errno.h> and <bits/types/error_t.h>
+ * hurd/hurd/lookup.h: Include <errno.h> and <bits/types/error_t.h>
+ * hurd/hurd/resource.h: Include <bits/types/error_t.h>
+ * hurd/hurd/signal.h: Include <bits/types/error_t.h>
+ * hurd/hurd/sigpreempt.h: Include <bits/types/error_t.h>
2018-03-03 Andreas Schwab <schwab@linux-m68k.org>
@@ -41,6 +41,7 @@
#include <hurd/port.h>
#include <errno.h>
+#include <bits/types/error_t.h>
#ifndef _HURD_H_EXTERN_INLINE
#define _HURD_H_EXTERN_INLINE __extern_inline
@@ -140,6 +140,7 @@ _hurd_fd_get (int fd)
__result; })
#include <errno.h>
+#include <bits/types/error_t.h>
/* Check if ERR should generate a signal.
Returns the signal to take, or zero if none. */
@@ -21,6 +21,8 @@
#define _HURD_ID_H 1
#include <features.h>
#include <hurd/hurd_types.h>
+#include <errno.h>
+#include <bits/types/error_t.h>
#include <cthreads.h> /* For `struct mutex'. */
@@ -19,6 +19,8 @@
#ifndef _HURD_LOOKUP_H
#define _HURD_LOOKUP_H 1
+#include <errno.h>
+#include <bits/types/error_t.h>
#include <hurd/hurd_types.h>
/* These functions all take two callback functions as the first two arguments.
@@ -22,6 +22,7 @@
#include <sys/types.h>
#include <sys/resource.h>
#include <errno.h>
+#include <bits/types/error_t.h>
#include <hurd/process.h>
/* This array contains the current resource limits for the process. */
@@ -35,6 +35,7 @@
#include <hurd/hurd_types.h>
#include <signal.h>
#include <errno.h>
+#include <bits/types/error_t.h>
#include <hurd/msg.h>
#include <cthreads.h> /* For `struct mutex'. */
@@ -20,6 +20,7 @@
#define _HURD_SIGPREEMPT_H 1
#include <errno.h>
+#include <bits/types/error_t.h>
#include <signal.h> /* For sigset_t, sighandler_t, SIG_ERR. */
struct hurd_sigstate; /* <hurd/signal.h> */
struct hurd_signal_detail; /* <hurd/signal.h> */
@@ -25,7 +25,7 @@ include ../Makeconfig
headers := stdlib.h bits/stdlib.h bits/stdlib-ldbl.h bits/stdlib-float.h \
monetary.h bits/monetary-ldbl.h \
inttypes.h stdint.h bits/wordsize.h \
- errno.h sys/errno.h bits/errno.h \
+ errno.h sys/errno.h bits/errno.h bits/types/error_t.h \
ucontext.h sys/ucontext.h \
alloca.h fmtmsg.h \
bits/stdlib-bsearch.h sys/random.h bits/stdint-intn.h \
new file mode 100644
@@ -0,0 +1,24 @@
+/* Define error_t.
+ Copyright (C) 1991-2018 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef __error_t_defined
+# define __error_t_defined 1
+
+typedef int error_t;
+
+#endif
@@ -45,12 +45,7 @@ extern int *__errno_location (void) __THROW __attribute_const__;
extern char *program_invocation_name;
extern char *program_invocation_short_name;
-/* bits/errno.h may have defined this type. If it didn't, provide a
- fallback definition. */
-# ifndef __error_t_defined
-# define __error_t_defined 1
-typedef int error_t;
-# endif
+#include <bits/types/error_t.h>
# endif /* __USE_GNU */
@@ -215,14 +215,6 @@ enum __error_t_codes
__FORCE_ERROR_T_CODES_SIGNED = -1
};
-/* User-visible type of error codes. It is ok to use 'int' or
- 'kern_return_t' for these, but with 'error_t' the debugger prints
- symbolic values. */
-# if !defined __error_t_defined && defined __USE_GNU
-# define __error_t_defined 1
-typedef enum __error_t_codes error_t;
-# endif
-
#endif /* not __ASSEMBLER__ */
/* The C standard requires that all of the E-constants be
new file mode 100644
@@ -0,0 +1,27 @@
+/* Define error_t.
+ Copyright (C) 1991-2018 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* User-visible type of error codes. It is ok to use 'int' or
+ 'kern_return_t' for these, but with 'error_t' the debugger prints
+ symbolic values. */
+#ifndef __error_t_defined
+# define __error_t_defined 1
+
+typedef enum __error_t_codes error_t;
+
+#endif
@@ -181,14 +181,6 @@ function print_errno_enum(maxseq)
print " __FORCE_ERROR_T_CODES_SIGNED = -1";
print "};";
print "";
- print "/* User-visible type of error codes. It is ok to use 'int' or";
- print " 'kern_return_t' for these, but with 'error_t' the debugger prints";
- print " symbolic values. */";
- print "# if !defined __error_t_defined && defined __USE_GNU";
- print "# define __error_t_defined 1";
- print "typedef enum __error_t_codes error_t;"
- print "# endif";
- print "";
print "#endif /* not __ASSEMBLER__ */";
}