1/* This file is automatically generated.  DO NOT EDIT! */
2/* Generated from: NetBSD: mknative-gdb,v 1.12 2020/09/17 16:54:31 christos Exp  */
3/* Generated from: NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp  */
4
5/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
6/* A GNU-like <signal.h>.
7
8   Copyright (C) 2006-2020 Free Software Foundation, Inc.
9
10   This program is free software: you can redistribute it and/or modify
11   it under the terms of the GNU General Public License as published by
12   the Free Software Foundation; either version 3 of the License, or
13   (at your option) any later version.
14
15   This program is distributed in the hope that it will be useful,
16   but WITHOUT ANY WARRANTY; without even the implied warranty of
17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18   GNU General Public License for more details.
19
20   You should have received a copy of the GNU General Public License
21   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
22
23#if __GNUC__ >= 3
24#pragma GCC system_header
25#endif
26
27
28#if defined __need_sig_atomic_t || defined __need_sigset_t || defined _GL_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T)
29/* Special invocation convention:
30   - Inside glibc header files.
31   - On glibc systems we have a sequence of nested includes
32     <signal.h> -> <ucontext.h> -> <signal.h>.
33     In this situation, the functions are not yet declared, therefore we cannot
34     provide the C++ aliases.
35   - On glibc systems with GCC 4.3 we have a sequence of nested includes
36     <csignal> -> </usr/include/signal.h> -> <sys/ucontext.h> -> <signal.h>.
37     In this situation, some of the functions are not yet declared, therefore
38     we cannot provide the C++ aliases.  */
39
40# include_next <signal.h>
41
42#else
43/* Normal invocation convention.  */
44
45#ifndef _GL_SIGNAL_H
46
47#define _GL_ALREADY_INCLUDING_SIGNAL_H
48
49/* Define pid_t, uid_t.
50   Also, mingw defines sigset_t not in <signal.h>, but in <sys/types.h>.
51   On Solaris 10, <signal.h> includes <sys/types.h>, which eventually includes
52   us; so include <sys/types.h> now, before the second inclusion guard.  */
53#include <sys/types.h>
54
55/* The include_next requires a split double-inclusion guard.  */
56#include_next <signal.h>
57
58#undef _GL_ALREADY_INCLUDING_SIGNAL_H
59
60#ifndef _GL_SIGNAL_H
61#define _GL_SIGNAL_H
62
63/* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6, Android
64   declare pthread_sigmask in <pthread.h>, not in <signal.h>.
65   But avoid namespace pollution on glibc systems.*/
66#if (0 || defined GNULIB_POSIXCHECK) \
67    && ((defined __APPLE__ && defined __MACH__) \
68        || defined __FreeBSD__ || defined __OpenBSD__ || defined __osf__ \
69        || defined __sun || defined __ANDROID__) \
70    && ! defined __GLIBC__
71# include <pthread.h>
72#endif
73
74/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
75/* C++ compatible function declaration macros.
76   Copyright (C) 2010-2020 Free Software Foundation, Inc.
77
78   This program is free software: you can redistribute it and/or modify it
79   under the terms of the GNU General Public License as published
80   by the Free Software Foundation; either version 3 of the License, or
81   (at your option) any later version.
82
83   This program is distributed in the hope that it will be useful,
84   but WITHOUT ANY WARRANTY; without even the implied warranty of
85   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
86   General Public License for more details.
87
88   You should have received a copy of the GNU General Public License
89   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
90
91#ifndef _GL_CXXDEFS_H
92#define _GL_CXXDEFS_H
93
94/* Begin/end the GNULIB_NAMESPACE namespace.  */
95#if defined __cplusplus && defined GNULIB_NAMESPACE
96# define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
97# define _GL_END_NAMESPACE }
98#else
99# define _GL_BEGIN_NAMESPACE
100# define _GL_END_NAMESPACE
101#endif
102
103/* The three most frequent use cases of these macros are:
104
105   * For providing a substitute for a function that is missing on some
106     platforms, but is declared and works fine on the platforms on which
107     it exists:
108
109       #if @GNULIB_FOO@
110       # if !@HAVE_FOO@
111       _GL_FUNCDECL_SYS (foo, ...);
112       # endif
113       _GL_CXXALIAS_SYS (foo, ...);
114       _GL_CXXALIASWARN (foo);
115       #elif defined GNULIB_POSIXCHECK
116       ...
117       #endif
118
119   * For providing a replacement for a function that exists on all platforms,
120     but is broken/insufficient and needs to be replaced on some platforms:
121
122       #if @GNULIB_FOO@
123       # if @REPLACE_FOO@
124       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
125       #   undef foo
126       #   define foo rpl_foo
127       #  endif
128       _GL_FUNCDECL_RPL (foo, ...);
129       _GL_CXXALIAS_RPL (foo, ...);
130       # else
131       _GL_CXXALIAS_SYS (foo, ...);
132       # endif
133       _GL_CXXALIASWARN (foo);
134       #elif defined GNULIB_POSIXCHECK
135       ...
136       #endif
137
138   * For providing a replacement for a function that exists on some platforms
139     but is broken/insufficient and needs to be replaced on some of them and
140     is additionally either missing or undeclared on some other platforms:
141
142       #if @GNULIB_FOO@
143       # if @REPLACE_FOO@
144       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
145       #   undef foo
146       #   define foo rpl_foo
147       #  endif
148       _GL_FUNCDECL_RPL (foo, ...);
149       _GL_CXXALIAS_RPL (foo, ...);
150       # else
151       #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
152       _GL_FUNCDECL_SYS (foo, ...);
153       #  endif
154       _GL_CXXALIAS_SYS (foo, ...);
155       # endif
156       _GL_CXXALIASWARN (foo);
157       #elif defined GNULIB_POSIXCHECK
158       ...
159       #endif
160*/
161
162/* _GL_EXTERN_C declaration;
163   performs the declaration with C linkage.  */
164#if defined __cplusplus
165# define _GL_EXTERN_C extern "C"
166#else
167# define _GL_EXTERN_C extern
168#endif
169
170/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
171   declares a replacement function, named rpl_func, with the given prototype,
172   consisting of return type, parameters, and attributes.
173   Example:
174     _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
175                                  _GL_ARG_NONNULL ((1)));
176 */
177#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
178  _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
179#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
180  _GL_EXTERN_C rettype rpl_func parameters_and_attributes
181
182/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
183   declares the system function, named func, with the given prototype,
184   consisting of return type, parameters, and attributes.
185   Example:
186     _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
187                                  _GL_ARG_NONNULL ((1)));
188 */
189#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
190  _GL_EXTERN_C rettype func parameters_and_attributes
191
192/* _GL_CXXALIAS_RPL (func, rettype, parameters);
193   declares a C++ alias called GNULIB_NAMESPACE::func
194   that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
195   Example:
196     _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
197
198   Wrapping rpl_func in an object with an inline conversion operator
199   avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is
200   actually used in the program.  */
201#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
202  _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
203#if defined __cplusplus && defined GNULIB_NAMESPACE
204# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
205    namespace GNULIB_NAMESPACE                                \
206    {                                                         \
207      static const struct _gl_ ## func ## _wrapper            \
208      {                                                       \
209        typedef rettype (*type) parameters;                   \
210                                                              \
211        inline operator type () const                         \
212        {                                                     \
213          return ::rpl_func;                                  \
214        }                                                     \
215      } func = {};                                            \
216    }                                                         \
217    _GL_EXTERN_C int _gl_cxxalias_dummy
218#else
219# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
220    _GL_EXTERN_C int _gl_cxxalias_dummy
221#endif
222
223/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
224   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
225   except that the C function rpl_func may have a slightly different
226   declaration.  A cast is used to silence the "invalid conversion" error
227   that would otherwise occur.  */
228#if defined __cplusplus && defined GNULIB_NAMESPACE
229# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
230    namespace GNULIB_NAMESPACE                                     \
231    {                                                              \
232      static const struct _gl_ ## func ## _wrapper                 \
233      {                                                            \
234        typedef rettype (*type) parameters;                        \
235                                                                   \
236        inline operator type () const                              \
237        {                                                          \
238          return reinterpret_cast<type>(::rpl_func);               \
239        }                                                          \
240      } func = {};                                                 \
241    }                                                              \
242    _GL_EXTERN_C int _gl_cxxalias_dummy
243#else
244# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
245    _GL_EXTERN_C int _gl_cxxalias_dummy
246#endif
247
248/* _GL_CXXALIAS_SYS (func, rettype, parameters);
249   declares a C++ alias called GNULIB_NAMESPACE::func
250   that redirects to the system provided function func, if GNULIB_NAMESPACE
251   is defined.
252   Example:
253     _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
254
255   Wrapping func in an object with an inline conversion operator
256   avoids a reference to func unless GNULIB_NAMESPACE::func is
257   actually used in the program.  */
258#if defined __cplusplus && defined GNULIB_NAMESPACE
259# define _GL_CXXALIAS_SYS(func,rettype,parameters)            \
260    namespace GNULIB_NAMESPACE                                \
261    {                                                         \
262      static const struct _gl_ ## func ## _wrapper            \
263      {                                                       \
264        typedef rettype (*type) parameters;                   \
265                                                              \
266        inline operator type () const                         \
267        {                                                     \
268          return ::func;                                      \
269        }                                                     \
270      } func = {};                                            \
271    }                                                         \
272    _GL_EXTERN_C int _gl_cxxalias_dummy
273#else
274# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
275    _GL_EXTERN_C int _gl_cxxalias_dummy
276#endif
277
278/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
279   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
280   except that the C function func may have a slightly different declaration.
281   A cast is used to silence the "invalid conversion" error that would
282   otherwise occur.  */
283#if defined __cplusplus && defined GNULIB_NAMESPACE
284# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
285    namespace GNULIB_NAMESPACE                          \
286    {                                                   \
287      static const struct _gl_ ## func ## _wrapper      \
288      {                                                 \
289        typedef rettype (*type) parameters;             \
290                                                        \
291        inline operator type () const                   \
292        {                                               \
293          return reinterpret_cast<type>(::func);        \
294        }                                               \
295      } func = {};                                      \
296    }                                                   \
297    _GL_EXTERN_C int _gl_cxxalias_dummy
298#else
299# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
300    _GL_EXTERN_C int _gl_cxxalias_dummy
301#endif
302
303/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
304   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
305   except that the C function is picked among a set of overloaded functions,
306   namely the one with rettype2 and parameters2.  Two consecutive casts
307   are used to silence the "cannot find a match" and "invalid conversion"
308   errors that would otherwise occur.  */
309#if defined __cplusplus && defined GNULIB_NAMESPACE
310  /* The outer cast must be a reinterpret_cast.
311     The inner cast: When the function is defined as a set of overloaded
312     functions, it works as a static_cast<>, choosing the designated variant.
313     When the function is defined as a single variant, it works as a
314     reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
315# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
316    namespace GNULIB_NAMESPACE                                                \
317    {                                                                         \
318      static const struct _gl_ ## func ## _wrapper                            \
319      {                                                                       \
320        typedef rettype (*type) parameters;                                   \
321                                                                              \
322        inline operator type () const                                         \
323        {                                                                     \
324          return reinterpret_cast<type>((rettype2 (*) parameters2)(::func));  \
325        }                                                                     \
326      } func = {};                                                            \
327    }                                                                         \
328    _GL_EXTERN_C int _gl_cxxalias_dummy
329#else
330# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
331    _GL_EXTERN_C int _gl_cxxalias_dummy
332#endif
333
334/* _GL_CXXALIASWARN (func);
335   causes a warning to be emitted when ::func is used but not when
336   GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
337   variants.  */
338#if defined __cplusplus && defined GNULIB_NAMESPACE
339# define _GL_CXXALIASWARN(func) \
340   _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
341# define _GL_CXXALIASWARN_1(func,namespace) \
342   _GL_CXXALIASWARN_2 (func, namespace)
343/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
344   we enable the warning only when not optimizing.  */
345# if !__OPTIMIZE__
346#  define _GL_CXXALIASWARN_2(func,namespace) \
347    _GL_WARN_ON_USE (func, \
348                     "The symbol ::" #func " refers to the system function. " \
349                     "Use " #namespace "::" #func " instead.")
350# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
351#  define _GL_CXXALIASWARN_2(func,namespace) \
352     extern __typeof__ (func) func
353# else
354#  define _GL_CXXALIASWARN_2(func,namespace) \
355     _GL_EXTERN_C int _gl_cxxalias_dummy
356# endif
357#else
358# define _GL_CXXALIASWARN(func) \
359    _GL_EXTERN_C int _gl_cxxalias_dummy
360#endif
361
362/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
363   causes a warning to be emitted when the given overloaded variant of ::func
364   is used but not when GNULIB_NAMESPACE::func is used.  */
365#if defined __cplusplus && defined GNULIB_NAMESPACE
366# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
367   _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
368                        GNULIB_NAMESPACE)
369# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
370   _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
371/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
372   we enable the warning only when not optimizing.  */
373# if !__OPTIMIZE__
374#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
375    _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
376                         "The symbol ::" #func " refers to the system function. " \
377                         "Use " #namespace "::" #func " instead.")
378# else
379#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
380     _GL_EXTERN_C int _gl_cxxalias_dummy
381# endif
382#else
383# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
384    _GL_EXTERN_C int _gl_cxxalias_dummy
385#endif
386
387#endif /* _GL_CXXDEFS_H */
388
389/* The definition of _GL_ARG_NONNULL is copied here.  */
390/* A C macro for declaring that specific arguments must not be NULL.
391   Copyright (C) 2009-2020 Free Software Foundation, Inc.
392
393   This program is free software: you can redistribute it and/or modify it
394   under the terms of the GNU General Public License as published
395   by the Free Software Foundation; either version 3 of the License, or
396   (at your option) any later version.
397
398   This program is distributed in the hope that it will be useful,
399   but WITHOUT ANY WARRANTY; without even the implied warranty of
400   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
401   General Public License for more details.
402
403   You should have received a copy of the GNU General Public License
404   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
405
406/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
407   that the values passed as arguments n, ..., m must be non-NULL pointers.
408   n = 1 stands for the first argument, n = 2 for the second argument etc.  */
409#ifndef _GL_ARG_NONNULL
410# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
411#  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
412# else
413#  define _GL_ARG_NONNULL(params)
414# endif
415#endif
416
417/* The definition of _GL_WARN_ON_USE is copied here.  */
418/* A C macro for emitting warnings if a function is used.
419   Copyright (C) 2010-2020 Free Software Foundation, Inc.
420
421   This program is free software: you can redistribute it and/or modify it
422   under the terms of the GNU General Public License as published
423   by the Free Software Foundation; either version 3 of the License, or
424   (at your option) any later version.
425
426   This program is distributed in the hope that it will be useful,
427   but WITHOUT ANY WARRANTY; without even the implied warranty of
428   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
429   General Public License for more details.
430
431   You should have received a copy of the GNU General Public License
432   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
433
434/* _GL_WARN_ON_USE (function, "literal string") issues a declaration
435   for FUNCTION which will then trigger a compiler warning containing
436   the text of "literal string" anywhere that function is called, if
437   supported by the compiler.  If the compiler does not support this
438   feature, the macro expands to an unused extern declaration.
439
440   _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the
441   attribute used in _GL_WARN_ON_USE.  If the compiler does not support
442   this feature, it expands to empty.
443
444   These macros are useful for marking a function as a potential
445   portability trap, with the intent that "literal string" include
446   instructions on the replacement function that should be used
447   instead.
448   _GL_WARN_ON_USE is for functions with 'extern' linkage.
449   _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
450   linkage.
451
452   However, one of the reasons that a function is a portability trap is
453   if it has the wrong signature.  Declaring FUNCTION with a different
454   signature in C is a compilation error, so this macro must use the
455   same type as any existing declaration so that programs that avoid
456   the problematic FUNCTION do not fail to compile merely because they
457   included a header that poisoned the function.  But this implies that
458   _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already
459   have a declaration.  Use of this macro implies that there must not
460   be any other macro hiding the declaration of FUNCTION; but
461   undefining FUNCTION first is part of the poisoning process anyway
462   (although for symbols that are provided only via a macro, the result
463   is a compilation error rather than a warning containing
464   "literal string").  Also note that in C++, it is only safe to use if
465   FUNCTION has no overloads.
466
467   For an example, it is possible to poison 'getline' by:
468   - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
469     [getline]) in configure.ac, which potentially defines
470     HAVE_RAW_DECL_GETLINE
471   - adding this code to a header that wraps the system <stdio.h>:
472     #undef getline
473     #if HAVE_RAW_DECL_GETLINE
474     _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
475       "not universally present; use the gnulib module getline");
476     #endif
477
478   It is not possible to directly poison global variables.  But it is
479   possible to write a wrapper accessor function, and poison that
480   (less common usage, like &environ, will cause a compilation error
481   rather than issue the nice warning, but the end result of informing
482   the developer about their portability problem is still achieved):
483     #if HAVE_RAW_DECL_ENVIRON
484     static char ***
485     rpl_environ (void) { return &environ; }
486     _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
487     # undef environ
488     # define environ (*rpl_environ ())
489     #endif
490   or better (avoiding contradictory use of 'static' and 'extern'):
491     #if HAVE_RAW_DECL_ENVIRON
492     static char ***
493     _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared")
494     rpl_environ (void) { return &environ; }
495     # undef environ
496     # define environ (*rpl_environ ())
497     #endif
498   */
499#ifndef _GL_WARN_ON_USE
500
501# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
502/* A compiler attribute is available in gcc versions 4.3.0 and later.  */
503#  define _GL_WARN_ON_USE(function, message) \
504extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
505#  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
506  __attribute__ ((__warning__ (message)))
507# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
508/* Verify the existence of the function.  */
509#  define _GL_WARN_ON_USE(function, message) \
510extern __typeof__ (function) function
511#  define _GL_WARN_ON_USE_ATTRIBUTE(message)
512# else /* Unsupported.  */
513#  define _GL_WARN_ON_USE(function, message) \
514_GL_WARN_EXTERN_C int _gl_warn_on_use
515#  define _GL_WARN_ON_USE_ATTRIBUTE(message)
516# endif
517#endif
518
519/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
520   is like _GL_WARN_ON_USE (function, "string"), except that in C++ mode the
521   function is declared with the given prototype, consisting of return type,
522   parameters, and attributes.
523   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
524   not work in this case.  */
525#ifndef _GL_WARN_ON_USE_CXX
526# if !defined __cplusplus
527#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
528     _GL_WARN_ON_USE (function, msg)
529# else
530#  if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
531#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
532extern rettype function parameters_and_attributes \
533     __attribute__ ((__warning__ (msg)))
534#  elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
535/* Verify the existence of the function.  */
536#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
537extern rettype function parameters_and_attributes
538#  else /* Unsupported.  */
539#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
540_GL_WARN_EXTERN_C int _gl_warn_on_use
541#  endif
542# endif
543#endif
544
545/* _GL_WARN_EXTERN_C declaration;
546   performs the declaration with C linkage.  */
547#ifndef _GL_WARN_EXTERN_C
548# if defined __cplusplus
549#  define _GL_WARN_EXTERN_C extern "C"
550# else
551#  define _GL_WARN_EXTERN_C extern
552# endif
553#endif
554
555/* On AIX, sig_atomic_t already includes volatile.  C99 requires that
556   'volatile sig_atomic_t' ignore the extra modifier, but C89 did not.
557   Hence, redefine this to a non-volatile type as needed.  */
558#if ! 1
559# if !GNULIB_defined_sig_atomic_t
560typedef int rpl_sig_atomic_t;
561#  undef sig_atomic_t
562#  define sig_atomic_t rpl_sig_atomic_t
563#  define GNULIB_defined_sig_atomic_t 1
564# endif
565#endif
566
567/* A set or mask of signals.  */
568#if !1
569# if !GNULIB_defined_sigset_t
570typedef unsigned int sigset_t;
571#  define GNULIB_defined_sigset_t 1
572# endif
573#endif
574
575/* Define sighandler_t, the type of signal handlers.  A GNU extension.  */
576#if !0
577# ifdef __cplusplus
578extern "C" {
579# endif
580# if !GNULIB_defined_sighandler_t
581typedef void (*sighandler_t) (int);
582#  define GNULIB_defined_sighandler_t 1
583# endif
584# ifdef __cplusplus
585}
586# endif
587#endif
588
589
590#if 0
591# ifndef SIGPIPE
592/* Define SIGPIPE to a value that does not overlap with other signals.  */
593#  define SIGPIPE 13
594#  define GNULIB_defined_SIGPIPE 1
595/* To actually use SIGPIPE, you also need the gnulib modules 'sigprocmask',
596   'write', 'stdio'.  */
597# endif
598#endif
599
600
601/* Maximum signal number + 1.  */
602#ifndef NSIG
603# if defined __TANDEM
604#  define NSIG 32
605# endif
606#endif
607
608
609#if 0
610# if 0
611#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
612#   undef pthread_sigmask
613#   define pthread_sigmask rpl_pthread_sigmask
614#  endif
615_GL_FUNCDECL_RPL (pthread_sigmask, int,
616                  (int how,
617                   const sigset_t *restrict new_mask,
618                   sigset_t *restrict old_mask));
619_GL_CXXALIAS_RPL (pthread_sigmask, int,
620                  (int how,
621                   const sigset_t *restrict new_mask,
622                   sigset_t *restrict old_mask));
623# else
624#  if !(1 || defined pthread_sigmask)
625_GL_FUNCDECL_SYS (pthread_sigmask, int,
626                  (int how,
627                   const sigset_t *restrict new_mask,
628                   sigset_t *restrict old_mask));
629#  endif
630_GL_CXXALIAS_SYS (pthread_sigmask, int,
631                  (int how,
632                   const sigset_t *restrict new_mask,
633                   sigset_t *restrict old_mask));
634# endif
635# if __GLIBC__ >= 2
636_GL_CXXALIASWARN (pthread_sigmask);
637# endif
638#elif defined GNULIB_POSIXCHECK
639# undef pthread_sigmask
640# if HAVE_RAW_DECL_PTHREAD_SIGMASK
641_GL_WARN_ON_USE (pthread_sigmask, "pthread_sigmask is not portable - "
642                 "use gnulib module pthread_sigmask for portability");
643# endif
644#endif
645
646
647#if 0
648# if 0
649#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
650#   undef raise
651#   define raise rpl_raise
652#  endif
653_GL_FUNCDECL_RPL (raise, int, (int sig));
654_GL_CXXALIAS_RPL (raise, int, (int sig));
655# else
656#  if !1
657_GL_FUNCDECL_SYS (raise, int, (int sig));
658#  endif
659_GL_CXXALIAS_SYS (raise, int, (int sig));
660# endif
661# if __GLIBC__ >= 2
662_GL_CXXALIASWARN (raise);
663# endif
664#elif defined GNULIB_POSIXCHECK
665# undef raise
666/* Assume raise is always declared.  */
667_GL_WARN_ON_USE (raise, "raise can crash on native Windows - "
668                 "use gnulib module raise for portability");
669#endif
670
671
672#if 0
673# if !1
674
675#  ifndef GNULIB_defined_signal_blocking
676#   define GNULIB_defined_signal_blocking 1
677#  endif
678
679/* Maximum signal number + 1.  */
680#  ifndef NSIG
681#   define NSIG 32
682#  endif
683
684/* This code supports only 32 signals.  */
685#  if !GNULIB_defined_verify_NSIG_constraint
686typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1];
687#   define GNULIB_defined_verify_NSIG_constraint 1
688#  endif
689
690# endif
691
692/* When also using extern inline, suppress the use of static inline in
693   standard headers of problematic Apple configurations, as Libc at
694   least through Libc-825.26 (2013-04-09) mishandles it; see, e.g.,
695   <https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html>.
696   Perhaps Apple will fix this some day.  */
697#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \
698     && (defined __i386__ || defined __x86_64__))
699# undef sigaddset
700# undef sigdelset
701# undef sigemptyset
702# undef sigfillset
703# undef sigismember
704#endif
705
706/* Test whether a given signal is contained in a signal set.  */
707# if 1
708/* This function is defined as a macro on Mac OS X.  */
709#  if defined __cplusplus && defined GNULIB_NAMESPACE
710#   undef sigismember
711#  endif
712# else
713_GL_FUNCDECL_SYS (sigismember, int, (const sigset_t *set, int sig)
714                                    _GL_ARG_NONNULL ((1)));
715# endif
716_GL_CXXALIAS_SYS (sigismember, int, (const sigset_t *set, int sig));
717_GL_CXXALIASWARN (sigismember);
718
719/* Initialize a signal set to the empty set.  */
720# if 1
721/* This function is defined as a macro on Mac OS X.  */
722#  if defined __cplusplus && defined GNULIB_NAMESPACE
723#   undef sigemptyset
724#  endif
725# else
726_GL_FUNCDECL_SYS (sigemptyset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
727# endif
728_GL_CXXALIAS_SYS (sigemptyset, int, (sigset_t *set));
729_GL_CXXALIASWARN (sigemptyset);
730
731/* Add a signal to a signal set.  */
732# if 1
733/* This function is defined as a macro on Mac OS X.  */
734#  if defined __cplusplus && defined GNULIB_NAMESPACE
735#   undef sigaddset
736#  endif
737# else
738_GL_FUNCDECL_SYS (sigaddset, int, (sigset_t *set, int sig)
739                                  _GL_ARG_NONNULL ((1)));
740# endif
741_GL_CXXALIAS_SYS (sigaddset, int, (sigset_t *set, int sig));
742_GL_CXXALIASWARN (sigaddset);
743
744/* Remove a signal from a signal set.  */
745# if 1
746/* This function is defined as a macro on Mac OS X.  */
747#  if defined __cplusplus && defined GNULIB_NAMESPACE
748#   undef sigdelset
749#  endif
750# else
751_GL_FUNCDECL_SYS (sigdelset, int, (sigset_t *set, int sig)
752                                  _GL_ARG_NONNULL ((1)));
753# endif
754_GL_CXXALIAS_SYS (sigdelset, int, (sigset_t *set, int sig));
755_GL_CXXALIASWARN (sigdelset);
756
757/* Fill a signal set with all possible signals.  */
758# if 1
759/* This function is defined as a macro on Mac OS X.  */
760#  if defined __cplusplus && defined GNULIB_NAMESPACE
761#   undef sigfillset
762#  endif
763# else
764_GL_FUNCDECL_SYS (sigfillset, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
765# endif
766_GL_CXXALIAS_SYS (sigfillset, int, (sigset_t *set));
767_GL_CXXALIASWARN (sigfillset);
768
769/* Return the set of those blocked signals that are pending.  */
770# if !1
771_GL_FUNCDECL_SYS (sigpending, int, (sigset_t *set) _GL_ARG_NONNULL ((1)));
772# endif
773_GL_CXXALIAS_SYS (sigpending, int, (sigset_t *set));
774_GL_CXXALIASWARN (sigpending);
775
776/* If OLD_SET is not NULL, put the current set of blocked signals in *OLD_SET.
777   Then, if SET is not NULL, affect the current set of blocked signals by
778   combining it with *SET as indicated in OPERATION.
779   In this implementation, you are not allowed to change a signal handler
780   while the signal is blocked.  */
781# if !1
782#  define SIG_BLOCK   0  /* blocked_set = blocked_set | *set; */
783#  define SIG_SETMASK 1  /* blocked_set = *set; */
784#  define SIG_UNBLOCK 2  /* blocked_set = blocked_set & ~*set; */
785_GL_FUNCDECL_SYS (sigprocmask, int,
786                  (int operation,
787                   const sigset_t *restrict set,
788                   sigset_t *restrict old_set));
789# endif
790_GL_CXXALIAS_SYS (sigprocmask, int,
791                  (int operation,
792                   const sigset_t *restrict set,
793                   sigset_t *restrict old_set));
794_GL_CXXALIASWARN (sigprocmask);
795
796/* Install the handler FUNC for signal SIG, and return the previous
797   handler.  */
798# ifdef __cplusplus
799extern "C" {
800# endif
801# if !GNULIB_defined_function_taking_int_returning_void_t
802typedef void (*_gl_function_taking_int_returning_void_t) (int);
803#  define GNULIB_defined_function_taking_int_returning_void_t 1
804# endif
805# ifdef __cplusplus
806}
807# endif
808# if !1
809#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
810#   define signal rpl_signal
811#  endif
812_GL_FUNCDECL_RPL (signal, _gl_function_taking_int_returning_void_t,
813                  (int sig, _gl_function_taking_int_returning_void_t func));
814_GL_CXXALIAS_RPL (signal, _gl_function_taking_int_returning_void_t,
815                  (int sig, _gl_function_taking_int_returning_void_t func));
816# else
817/* On OpenBSD, the declaration of 'signal' may not be present at this point,
818   because it occurs in <sys/signal.h>, not <signal.h> directly.  */
819#  if defined __OpenBSD__
820_GL_FUNCDECL_SYS (signal, _gl_function_taking_int_returning_void_t,
821                  (int sig, _gl_function_taking_int_returning_void_t func));
822#  endif
823_GL_CXXALIAS_SYS (signal, _gl_function_taking_int_returning_void_t,
824                  (int sig, _gl_function_taking_int_returning_void_t func));
825# endif
826# if __GLIBC__ >= 2
827_GL_CXXALIASWARN (signal);
828# endif
829
830# if !1 && GNULIB_defined_SIGPIPE
831/* Raise signal SIGPIPE.  */
832_GL_EXTERN_C int _gl_raise_SIGPIPE (void);
833# endif
834
835#elif defined GNULIB_POSIXCHECK
836# undef sigaddset
837# if HAVE_RAW_DECL_SIGADDSET
838_GL_WARN_ON_USE (sigaddset, "sigaddset is unportable - "
839                 "use the gnulib module sigprocmask for portability");
840# endif
841# undef sigdelset
842# if HAVE_RAW_DECL_SIGDELSET
843_GL_WARN_ON_USE (sigdelset, "sigdelset is unportable - "
844                 "use the gnulib module sigprocmask for portability");
845# endif
846# undef sigemptyset
847# if HAVE_RAW_DECL_SIGEMPTYSET
848_GL_WARN_ON_USE (sigemptyset, "sigemptyset is unportable - "
849                 "use the gnulib module sigprocmask for portability");
850# endif
851# undef sigfillset
852# if HAVE_RAW_DECL_SIGFILLSET
853_GL_WARN_ON_USE (sigfillset, "sigfillset is unportable - "
854                 "use the gnulib module sigprocmask for portability");
855# endif
856# undef sigismember
857# if HAVE_RAW_DECL_SIGISMEMBER
858_GL_WARN_ON_USE (sigismember, "sigismember is unportable - "
859                 "use the gnulib module sigprocmask for portability");
860# endif
861# undef sigpending
862# if HAVE_RAW_DECL_SIGPENDING
863_GL_WARN_ON_USE (sigpending, "sigpending is unportable - "
864                 "use the gnulib module sigprocmask for portability");
865# endif
866# undef sigprocmask
867# if HAVE_RAW_DECL_SIGPROCMASK
868_GL_WARN_ON_USE (sigprocmask, "sigprocmask is unportable - "
869                 "use the gnulib module sigprocmask for portability");
870# endif
871#endif /* 0 */
872
873
874#if 0
875# if !1
876
877#  if !1
878
879#   if !GNULIB_defined_siginfo_types
880
881/* Present to allow compilation, but unsupported by gnulib.  */
882union sigval
883{
884  int sival_int;
885  void *sival_ptr;
886};
887
888/* Present to allow compilation, but unsupported by gnulib.  */
889struct siginfo_t
890{
891  int si_signo;
892  int si_code;
893  int si_errno;
894  pid_t si_pid;
895  uid_t si_uid;
896  void *si_addr;
897  int si_status;
898  long si_band;
899  union sigval si_value;
900};
901typedef struct siginfo_t siginfo_t;
902
903#    define GNULIB_defined_siginfo_types 1
904#   endif
905
906#  endif /* !1 */
907
908/* We assume that platforms which lack the sigaction() function also lack
909   the 'struct sigaction' type, and vice versa.  */
910
911#  if !GNULIB_defined_struct_sigaction
912
913struct sigaction
914{
915  union
916  {
917    void (*_sa_handler) (int);
918    /* Present to allow compilation, but unsupported by gnulib.  POSIX
919       says that implementations may, but not must, make sa_sigaction
920       overlap with sa_handler, but we know of no implementation where
921       they do not overlap.  */
922    void (*_sa_sigaction) (int, siginfo_t *, void *);
923  } _sa_func;
924  sigset_t sa_mask;
925  /* Not all POSIX flags are supported.  */
926  int sa_flags;
927};
928#   define sa_handler _sa_func._sa_handler
929#   define sa_sigaction _sa_func._sa_sigaction
930/* Unsupported flags are not present.  */
931#   define SA_RESETHAND 1
932#   define SA_NODEFER 2
933#   define SA_RESTART 4
934
935#   define GNULIB_defined_struct_sigaction 1
936#  endif
937
938_GL_FUNCDECL_SYS (sigaction, int, (int, const struct sigaction *restrict,
939                                   struct sigaction *restrict));
940
941# elif !1
942
943#  define sa_sigaction sa_handler
944
945# endif /* !1, !1 */
946
947_GL_CXXALIAS_SYS (sigaction, int, (int, const struct sigaction *restrict,
948                                   struct sigaction *restrict));
949_GL_CXXALIASWARN (sigaction);
950
951#elif defined GNULIB_POSIXCHECK
952# undef sigaction
953# if HAVE_RAW_DECL_SIGACTION
954_GL_WARN_ON_USE (sigaction, "sigaction is unportable - "
955                 "use the gnulib module sigaction for portability");
956# endif
957#endif
958
959/* Some systems don't have SA_NODEFER.  */
960#ifndef SA_NODEFER
961# define SA_NODEFER 0
962#endif
963
964
965#endif /* _GL_SIGNAL_H */
966#endif /* _GL_SIGNAL_H */
967#endif
968