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