# 0 "../sysdeps/s390/s390-64/__longjmp.c" # 1 "/root/git/setjmp//" # 0 "" #define __STDC__ 1 # 0 "" #define __STDC_VERSION__ 201112L # 0 "" #define __STDC_UTF_16__ 1 # 0 "" #define __STDC_UTF_32__ 1 # 0 "" #define __STDC_HOSTED__ 1 # 0 "" #define __GNUC__ 11 # 0 "" #define __GNUC_MINOR__ 2 # 0 "" #define __GNUC_PATCHLEVEL__ 1 # 0 "" #define __VERSION__ "11.2.1 20211019 (Red Hat 11.2.1-6)" # 0 "" #define __GNUC_RH_RELEASE__ 6 # 0 "" #define __ATOMIC_RELAXED 0 # 0 "" #define __ATOMIC_SEQ_CST 5 # 0 "" #define __ATOMIC_ACQUIRE 2 # 0 "" #define __ATOMIC_RELEASE 3 # 0 "" #define __ATOMIC_ACQ_REL 4 # 0 "" #define __ATOMIC_CONSUME 1 # 0 "" #define __OPTIMIZE__ 1 # 0 "" #define __FINITE_MATH_ONLY__ 0 # 0 "" #define _LP64 1 # 0 "" #define __LP64__ 1 # 0 "" #define __SIZEOF_INT__ 4 # 0 "" #define __SIZEOF_LONG__ 8 # 0 "" #define __SIZEOF_LONG_LONG__ 8 # 0 "" #define __SIZEOF_SHORT__ 2 # 0 "" #define __SIZEOF_FLOAT__ 4 # 0 "" #define __SIZEOF_DOUBLE__ 8 # 0 "" #define __SIZEOF_LONG_DOUBLE__ 16 # 0 "" #define __SIZEOF_SIZE_T__ 8 # 0 "" #define __CHAR_BIT__ 8 # 0 "" #define __BIGGEST_ALIGNMENT__ 8 # 0 "" #define __ORDER_LITTLE_ENDIAN__ 1234 # 0 "" #define __ORDER_BIG_ENDIAN__ 4321 # 0 "" #define __ORDER_PDP_ENDIAN__ 3412 # 0 "" #define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__ # 0 "" #define __FLOAT_WORD_ORDER__ __ORDER_BIG_ENDIAN__ # 0 "" #define __SIZEOF_POINTER__ 8 # 0 "" #define __GNUC_EXECUTION_CHARSET_NAME "UTF-8" # 0 "" #define __GNUC_WIDE_EXECUTION_CHARSET_NAME "UTF-32BE" # 0 "" #define __SIZE_TYPE__ long unsigned int # 0 "" #define __PTRDIFF_TYPE__ long int # 0 "" #define __WCHAR_TYPE__ int # 0 "" #define __WINT_TYPE__ unsigned int # 0 "" #define __INTMAX_TYPE__ long int # 0 "" #define __UINTMAX_TYPE__ long unsigned int # 0 "" #define __CHAR16_TYPE__ short unsigned int # 0 "" #define __CHAR32_TYPE__ unsigned int # 0 "" #define __SIG_ATOMIC_TYPE__ int # 0 "" #define __INT8_TYPE__ signed char # 0 "" #define __INT16_TYPE__ short int # 0 "" #define __INT32_TYPE__ int # 0 "" #define __INT64_TYPE__ long int # 0 "" #define __UINT8_TYPE__ unsigned char # 0 "" #define __UINT16_TYPE__ short unsigned int # 0 "" #define __UINT32_TYPE__ unsigned int # 0 "" #define __UINT64_TYPE__ long unsigned int # 0 "" #define __INT_LEAST8_TYPE__ signed char # 0 "" #define __INT_LEAST16_TYPE__ short int # 0 "" #define __INT_LEAST32_TYPE__ int # 0 "" #define __INT_LEAST64_TYPE__ long int # 0 "" #define __UINT_LEAST8_TYPE__ unsigned char # 0 "" #define __UINT_LEAST16_TYPE__ short unsigned int # 0 "" #define __UINT_LEAST32_TYPE__ unsigned int # 0 "" #define __UINT_LEAST64_TYPE__ long unsigned int # 0 "" #define __INT_FAST8_TYPE__ signed char # 0 "" #define __INT_FAST16_TYPE__ long int # 0 "" #define __INT_FAST32_TYPE__ long int # 0 "" #define __INT_FAST64_TYPE__ long int # 0 "" #define __UINT_FAST8_TYPE__ unsigned char # 0 "" #define __UINT_FAST16_TYPE__ long unsigned int # 0 "" #define __UINT_FAST32_TYPE__ long unsigned int # 0 "" #define __UINT_FAST64_TYPE__ long unsigned int # 0 "" #define __INTPTR_TYPE__ long int # 0 "" #define __UINTPTR_TYPE__ long unsigned int # 0 "" #define __GXX_ABI_VERSION 1016 # 0 "" #define __SCHAR_MAX__ 0x7f # 0 "" #define __SHRT_MAX__ 0x7fff # 0 "" #define __INT_MAX__ 0x7fffffff # 0 "" #define __LONG_MAX__ 0x7fffffffffffffffL # 0 "" #define __LONG_LONG_MAX__ 0x7fffffffffffffffLL # 0 "" #define __WCHAR_MAX__ 0x7fffffff # 0 "" #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1) # 0 "" #define __WINT_MAX__ 0xffffffffU # 0 "" #define __WINT_MIN__ 0U # 0 "" #define __PTRDIFF_MAX__ 0x7fffffffffffffffL # 0 "" #define __SIZE_MAX__ 0xffffffffffffffffUL # 0 "" #define __SCHAR_WIDTH__ 8 # 0 "" #define __SHRT_WIDTH__ 16 # 0 "" #define __INT_WIDTH__ 32 # 0 "" #define __LONG_WIDTH__ 64 # 0 "" #define __LONG_LONG_WIDTH__ 64 # 0 "" #define __WCHAR_WIDTH__ 32 # 0 "" #define __WINT_WIDTH__ 32 # 0 "" #define __PTRDIFF_WIDTH__ 64 # 0 "" #define __SIZE_WIDTH__ 64 # 0 "" #define __INTMAX_MAX__ 0x7fffffffffffffffL # 0 "" #define __INTMAX_C(c) c ## L # 0 "" #define __UINTMAX_MAX__ 0xffffffffffffffffUL # 0 "" #define __UINTMAX_C(c) c ## UL # 0 "" #define __INTMAX_WIDTH__ 64 # 0 "" #define __SIG_ATOMIC_MAX__ 0x7fffffff # 0 "" #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) # 0 "" #define __SIG_ATOMIC_WIDTH__ 32 # 0 "" #define __INT8_MAX__ 0x7f # 0 "" #define __INT16_MAX__ 0x7fff # 0 "" #define __INT32_MAX__ 0x7fffffff # 0 "" #define __INT64_MAX__ 0x7fffffffffffffffL # 0 "" #define __UINT8_MAX__ 0xff # 0 "" #define __UINT16_MAX__ 0xffff # 0 "" #define __UINT32_MAX__ 0xffffffffU # 0 "" #define __UINT64_MAX__ 0xffffffffffffffffUL # 0 "" #define __INT_LEAST8_MAX__ 0x7f # 0 "" #define __INT8_C(c) c # 0 "" #define __INT_LEAST8_WIDTH__ 8 # 0 "" #define __INT_LEAST16_MAX__ 0x7fff # 0 "" #define __INT16_C(c) c # 0 "" #define __INT_LEAST16_WIDTH__ 16 # 0 "" #define __INT_LEAST32_MAX__ 0x7fffffff # 0 "" #define __INT32_C(c) c # 0 "" #define __INT_LEAST32_WIDTH__ 32 # 0 "" #define __INT_LEAST64_MAX__ 0x7fffffffffffffffL # 0 "" #define __INT64_C(c) c ## L # 0 "" #define __INT_LEAST64_WIDTH__ 64 # 0 "" #define __UINT_LEAST8_MAX__ 0xff # 0 "" #define __UINT8_C(c) c # 0 "" #define __UINT_LEAST16_MAX__ 0xffff # 0 "" #define __UINT16_C(c) c # 0 "" #define __UINT_LEAST32_MAX__ 0xffffffffU # 0 "" #define __UINT32_C(c) c ## U # 0 "" #define __UINT_LEAST64_MAX__ 0xffffffffffffffffUL # 0 "" #define __UINT64_C(c) c ## UL # 0 "" #define __INT_FAST8_MAX__ 0x7f # 0 "" #define __INT_FAST8_WIDTH__ 8 # 0 "" #define __INT_FAST16_MAX__ 0x7fffffffffffffffL # 0 "" #define __INT_FAST16_WIDTH__ 64 # 0 "" #define __INT_FAST32_MAX__ 0x7fffffffffffffffL # 0 "" #define __INT_FAST32_WIDTH__ 64 # 0 "" #define __INT_FAST64_MAX__ 0x7fffffffffffffffL # 0 "" #define __INT_FAST64_WIDTH__ 64 # 0 "" #define __UINT_FAST8_MAX__ 0xff # 0 "" #define __UINT_FAST16_MAX__ 0xffffffffffffffffUL # 0 "" #define __UINT_FAST32_MAX__ 0xffffffffffffffffUL # 0 "" #define __UINT_FAST64_MAX__ 0xffffffffffffffffUL # 0 "" #define __INTPTR_MAX__ 0x7fffffffffffffffL # 0 "" #define __INTPTR_WIDTH__ 64 # 0 "" #define __UINTPTR_MAX__ 0xffffffffffffffffUL # 0 "" #define __GCC_IEC_559 2 # 0 "" #define __GCC_IEC_559_COMPLEX 2 # 0 "" #define __FLT_EVAL_METHOD__ 0 # 0 "" #define __FLT_EVAL_METHOD_TS_18661_3__ 0 # 0 "" #define __DEC_EVAL_METHOD__ 2 # 0 "" #define __FLT_RADIX__ 2 # 0 "" #define __FLT_MANT_DIG__ 24 # 0 "" #define __FLT_DIG__ 6 # 0 "" #define __FLT_MIN_EXP__ (-125) # 0 "" #define __FLT_MIN_10_EXP__ (-37) # 0 "" #define __FLT_MAX_EXP__ 128 # 0 "" #define __FLT_MAX_10_EXP__ 38 # 0 "" #define __FLT_DECIMAL_DIG__ 9 # 0 "" #define __FLT_MAX__ 3.40282346638528859811704183484516925e+38F # 0 "" #define __FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F # 0 "" #define __FLT_MIN__ 1.17549435082228750796873653722224568e-38F # 0 "" #define __FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F # 0 "" #define __FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F # 0 "" #define __FLT_HAS_DENORM__ 1 # 0 "" #define __FLT_HAS_INFINITY__ 1 # 0 "" #define __FLT_HAS_QUIET_NAN__ 1 # 0 "" #define __FP_FAST_FMAF 1 # 0 "" #define __FLT_IS_IEC_60559__ 2 # 0 "" #define __DBL_MANT_DIG__ 53 # 0 "" #define __DBL_DIG__ 15 # 0 "" #define __DBL_MIN_EXP__ (-1021) # 0 "" #define __DBL_MIN_10_EXP__ (-307) # 0 "" #define __DBL_MAX_EXP__ 1024 # 0 "" #define __DBL_MAX_10_EXP__ 308 # 0 "" #define __DBL_DECIMAL_DIG__ 17 # 0 "" #define __DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L) # 0 "" #define __DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L) # 0 "" #define __DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L) # 0 "" #define __DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L) # 0 "" #define __DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L) # 0 "" #define __DBL_HAS_DENORM__ 1 # 0 "" #define __DBL_HAS_INFINITY__ 1 # 0 "" #define __DBL_HAS_QUIET_NAN__ 1 # 0 "" #define __FP_FAST_FMA 1 # 0 "" #define __DBL_IS_IEC_60559__ 2 # 0 "" #define __LDBL_MANT_DIG__ 113 # 0 "" #define __LDBL_DIG__ 33 # 0 "" #define __LDBL_MIN_EXP__ (-16381) # 0 "" #define __LDBL_MIN_10_EXP__ (-4931) # 0 "" #define __LDBL_MAX_EXP__ 16384 # 0 "" #define __LDBL_MAX_10_EXP__ 4932 # 0 "" #define __DECIMAL_DIG__ 36 # 0 "" #define __LDBL_DECIMAL_DIG__ 36 # 0 "" #define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L # 0 "" #define __LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L # 0 "" #define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L # 0 "" #define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L # 0 "" #define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L # 0 "" #define __LDBL_HAS_DENORM__ 1 # 0 "" #define __LDBL_HAS_INFINITY__ 1 # 0 "" #define __LDBL_HAS_QUIET_NAN__ 1 # 0 "" #define __LDBL_IS_IEC_60559__ 2 # 0 "" #define __FLT32_MANT_DIG__ 24 # 0 "" #define __FLT32_DIG__ 6 # 0 "" #define __FLT32_MIN_EXP__ (-125) # 0 "" #define __FLT32_MIN_10_EXP__ (-37) # 0 "" #define __FLT32_MAX_EXP__ 128 # 0 "" #define __FLT32_MAX_10_EXP__ 38 # 0 "" #define __FLT32_DECIMAL_DIG__ 9 # 0 "" #define __FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32 # 0 "" #define __FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32 # 0 "" #define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32 # 0 "" #define __FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32 # 0 "" #define __FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32 # 0 "" #define __FLT32_HAS_DENORM__ 1 # 0 "" #define __FLT32_HAS_INFINITY__ 1 # 0 "" #define __FLT32_HAS_QUIET_NAN__ 1 # 0 "" #define __FP_FAST_FMAF32 1 # 0 "" #define __FLT32_IS_IEC_60559__ 2 # 0 "" #define __FLT64_MANT_DIG__ 53 # 0 "" #define __FLT64_DIG__ 15 # 0 "" #define __FLT64_MIN_EXP__ (-1021) # 0 "" #define __FLT64_MIN_10_EXP__ (-307) # 0 "" #define __FLT64_MAX_EXP__ 1024 # 0 "" #define __FLT64_MAX_10_EXP__ 308 # 0 "" #define __FLT64_DECIMAL_DIG__ 17 # 0 "" #define __FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64 # 0 "" #define __FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64 # 0 "" #define __FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64 # 0 "" #define __FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64 # 0 "" #define __FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64 # 0 "" #define __FLT64_HAS_DENORM__ 1 # 0 "" #define __FLT64_HAS_INFINITY__ 1 # 0 "" #define __FLT64_HAS_QUIET_NAN__ 1 # 0 "" #define __FP_FAST_FMAF64 1 # 0 "" #define __FLT64_IS_IEC_60559__ 2 # 0 "" #define __FLT128_MANT_DIG__ 113 # 0 "" #define __FLT128_DIG__ 33 # 0 "" #define __FLT128_MIN_EXP__ (-16381) # 0 "" #define __FLT128_MIN_10_EXP__ (-4931) # 0 "" #define __FLT128_MAX_EXP__ 16384 # 0 "" #define __FLT128_MAX_10_EXP__ 4932 # 0 "" #define __FLT128_DECIMAL_DIG__ 36 # 0 "" #define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128 # 0 "" #define __FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128 # 0 "" #define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128 # 0 "" #define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128 # 0 "" #define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128 # 0 "" #define __FLT128_HAS_DENORM__ 1 # 0 "" #define __FLT128_HAS_INFINITY__ 1 # 0 "" #define __FLT128_HAS_QUIET_NAN__ 1 # 0 "" #define __FLT128_IS_IEC_60559__ 2 # 0 "" #define __FLT32X_MANT_DIG__ 53 # 0 "" #define __FLT32X_DIG__ 15 # 0 "" #define __FLT32X_MIN_EXP__ (-1021) # 0 "" #define __FLT32X_MIN_10_EXP__ (-307) # 0 "" #define __FLT32X_MAX_EXP__ 1024 # 0 "" #define __FLT32X_MAX_10_EXP__ 308 # 0 "" #define __FLT32X_DECIMAL_DIG__ 17 # 0 "" #define __FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x # 0 "" #define __FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x # 0 "" #define __FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x # 0 "" #define __FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x # 0 "" #define __FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x # 0 "" #define __FLT32X_HAS_DENORM__ 1 # 0 "" #define __FLT32X_HAS_INFINITY__ 1 # 0 "" #define __FLT32X_HAS_QUIET_NAN__ 1 # 0 "" #define __FP_FAST_FMAF32x 1 # 0 "" #define __FLT32X_IS_IEC_60559__ 2 # 0 "" #define __FLT64X_MANT_DIG__ 113 # 0 "" #define __FLT64X_DIG__ 33 # 0 "" #define __FLT64X_MIN_EXP__ (-16381) # 0 "" #define __FLT64X_MIN_10_EXP__ (-4931) # 0 "" #define __FLT64X_MAX_EXP__ 16384 # 0 "" #define __FLT64X_MAX_10_EXP__ 4932 # 0 "" #define __FLT64X_DECIMAL_DIG__ 36 # 0 "" #define __FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x # 0 "" #define __FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x # 0 "" #define __FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x # 0 "" #define __FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x # 0 "" #define __FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x # 0 "" #define __FLT64X_HAS_DENORM__ 1 # 0 "" #define __FLT64X_HAS_INFINITY__ 1 # 0 "" #define __FLT64X_HAS_QUIET_NAN__ 1 # 0 "" #define __FLT64X_IS_IEC_60559__ 2 # 0 "" #define __DEC32_MANT_DIG__ 7 # 0 "" #define __DEC32_MIN_EXP__ (-94) # 0 "" #define __DEC32_MAX_EXP__ 97 # 0 "" #define __DEC32_MIN__ 1E-95DF # 0 "" #define __DEC32_MAX__ 9.999999E96DF # 0 "" #define __DEC32_EPSILON__ 1E-6DF # 0 "" #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF # 0 "" #define __DEC64_MANT_DIG__ 16 # 0 "" #define __DEC64_MIN_EXP__ (-382) # 0 "" #define __DEC64_MAX_EXP__ 385 # 0 "" #define __DEC64_MIN__ 1E-383DD # 0 "" #define __DEC64_MAX__ 9.999999999999999E384DD # 0 "" #define __DEC64_EPSILON__ 1E-15DD # 0 "" #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD # 0 "" #define __DEC128_MANT_DIG__ 34 # 0 "" #define __DEC128_MIN_EXP__ (-6142) # 0 "" #define __DEC128_MAX_EXP__ 6145 # 0 "" #define __DEC128_MIN__ 1E-6143DL # 0 "" #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL # 0 "" #define __DEC128_EPSILON__ 1E-33DL # 0 "" #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL # 0 "" #define __REGISTER_PREFIX__ # 0 "" #define __USER_LABEL_PREFIX__ # 0 "" #define __GNUC_GNU_INLINE__ 1 # 0 "" #define __CHAR_UNSIGNED__ 1 # 0 "" #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 # 0 "" #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 # 0 "" #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 # 0 "" #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 # 0 "" #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 1 # 0 "" #define __GCC_ATOMIC_BOOL_LOCK_FREE 2 # 0 "" #define __GCC_ATOMIC_CHAR_LOCK_FREE 2 # 0 "" #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2 # 0 "" #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2 # 0 "" #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2 # 0 "" #define __GCC_ATOMIC_SHORT_LOCK_FREE 2 # 0 "" #define __GCC_ATOMIC_INT_LOCK_FREE 2 # 0 "" #define __GCC_ATOMIC_LONG_LOCK_FREE 2 # 0 "" #define __GCC_ATOMIC_LLONG_LOCK_FREE 2 # 0 "" #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1 # 0 "" #define __GCC_ATOMIC_POINTER_LOCK_FREE 2 # 0 "" #define __HAVE_SPECULATION_SAFE_VALUE 1 # 0 "" #define __GCC_HAVE_DWARF2_CFI_ASM 1 # 0 "" #define __PRAGMA_REDEFINE_EXTNAME 1 # 0 "" #define __SIZEOF_INT128__ 16 # 0 "" #define __SIZEOF_WCHAR_T__ 4 # 0 "" #define __SIZEOF_WINT_T__ 4 # 0 "" #define __SIZEOF_PTRDIFF_T__ 8 # 0 "" #define __s390__ 1 # 0 "" #define __zarch__ 1 # 0 "" #define __s390x__ 1 # 0 "" #define __LONG_DOUBLE_128__ 1 # 0 "" #define __HTM__ 1 # 0 "" #define __VX__ 1 # 0 "" #undef __ARCH__ # 0 "" #define __ARCH__ 12 # 0 "" #define __LONG_DOUBLE_VX__ 1 # 0 "" #define __gnu_linux__ 1 # 0 "" #define __linux 1 # 0 "" #define __linux__ 1 # 0 "" #define linux 1 # 0 "" #define __unix 1 # 0 "" #define __unix__ 1 # 0 "" #define unix 1 # 0 "" #define __ELF__ 1 # 0 "" #define _LIBC_REENTRANT 1 # 0 "" #define MODULE_NAME libc # 0 "" #define TOP_NAMESPACE glibc # 0 "" # 1 "../include/stdc-predef.h" 1 /* Copyright (C) 1991-2021 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 . */ #define _STDC_PREDEF_H 1 /* This header is separate from features.h so that the compiler can include it implicitly at the start of every compilation. It must not itself include or any other header that includes because the implicit include comes before any feature test macros that may be defined in a source file before it first explicitly includes a system header. GCC knows the name of this header in order to preinclude it. */ /* glibc's intent is to support the IEC 559 math functionality, real and complex. If the GCC (4.9 and later) predefined macros specifying compiler intent are available, use them to determine whether the overall intent is to support these features; otherwise, presume an older compiler has intent to support these features and define these macros by default. */ #define __STDC_IEC_559__ 1 #define __STDC_IEC_60559_BFP__ 201404L #define __STDC_IEC_559_COMPLEX__ 1 #define __STDC_IEC_60559_COMPLEX__ 201404L /* wchar_t uses Unicode 10.0.0. Version 10.0 of the Unicode Standard is synchronized with ISO/IEC 10646:2017, fifth edition, plus the following additions from Amendment 1 to the fifth edition: - 56 emoji characters - 285 hentaigana - 3 additional Zanabazar Square characters */ #define __STDC_ISO_10646__ 201706L # 0 "" 2 # 1 "/root/build/libc-modules.h" 1 /* AUTOGENERATED BY gen-libc-modules.awk, DO NOT EDIT. */ #define MODULE_iconvprogs 1 #define MODULE_iconvdata 2 #define MODULE_ldconfig 3 #define MODULE_lddlibc4 4 #define MODULE_libmemusage 5 #define MODULE_libSegFault 6 #define MODULE_libpcprofile 7 #define MODULE_librpcsvc 8 #define MODULE_locale_programs 9 #define MODULE_memusagestat 10 #define MODULE_nonlib 11 #define MODULE_nscd 12 #define MODULE_extramodules 13 #define MODULE_libnldbl 14 #define MODULE_libsupport 15 #define MODULE_testsuite 16 #define MODULE_LIBS_BEGIN 17 #define MODULE_rtld 18 #define MODULE_libc 19 #define MODULE_libBrokenLocale 20 #define MODULE_libpthread 21 #define MODULE_libthread_db 22 #define MODULE_libcrypt 23 #define MODULE_libdl 24 #define MODULE_libgcc_s 25 #define MODULE_libnss_test1 26 #define MODULE_libnsl 27 #define MODULE_libc_malloc_debug 28 #define MODULE_libutil 29 #define MODULE_libnss_ldap 30 #define MODULE_libnss_test2 31 #define MODULE_libnss_dns 32 #define MODULE_libnss_compat 33 #define MODULE_libmvec 34 #define MODULE_libresolv 35 #define MODULE_libnss_db 36 #define MODULE_libm 37 #define MODULE_libnss_files 38 #define MODULE_librt 39 #define MODULE_libnss_hesiod 40 #define MODULE_libanl 41 # 0 "" 2 # 1 "./../include/libc-symbols.h" 1 /* Support macros for making weak and strong aliases for symbols, and for using symbol sets and linker warnings with GNU ld. Copyright (C) 1995-2021 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 . */ #define _LIBC_SYMBOLS_H 1 /* This file is included implicitly in the compilation of every source file, using -include. It includes config.h. */ /* Enable declarations of GNU extensions, since we are compiling them. */ #define _GNU_SOURCE 1 /* Use `#if IS_IN (module)` to detect what component is being compiled. */ #define PASTE_NAME1(a,b) a ##b #define PASTE_NAME(a,b) PASTE_NAME1 (a,b) #define IN_MODULE PASTE_NAME (MODULE_, MODULE_NAME) #define IS_IN(lib) (IN_MODULE == MODULE_ ##lib) /* True if the current module is a versioned library. Versioned library names culled from shlib-versions files are assigned a MODULE_* value greater than MODULE_LIBS_BEGIN. */ #define IS_IN_LIB (IN_MODULE > MODULE_LIBS_BEGIN) /* The testsuite, and some other ancillary code, should be compiled against as close an approximation to the installed headers as possible. Defining this symbol disables most internal-use-only declarations provided by this header, and all those provided by other internal wrapper headers. */ # 61 "./../include/libc-symbols.h" /* This is defined for the compilation of all C library code. features.h tests this to avoid inclusion of stubs.h while compiling the library, before stubs.h has been generated. Some library code that is shared with other packages also tests this symbol to see if it is being compiled as part of the C library. We must define this before including config.h, because it makes some definitions conditional on whether libc itself is being compiled, or just some generator program. */ #define _LIBC 1 /* Some files must be compiled with optimization on. */ /* -ffast-math cannot be applied to the C library, as it alters the ABI. Some test components that use -ffast-math are currently not part of IS_IN (testsuite) for technical reasons, so we have a secondary override. */ # 1 "/root/build/config.h" 1 /* config.h. Generated from config.h.in by configure. */ /* Define if building with SELinux support. Set by --with-selinux. */ /* #undef HAVE_SELINUX */ /* Defined if building with SELinux support & audit libs are detected. */ /* #undef HAVE_LIBAUDIT */ /* Defined if building with SELinux support & libcap libs are detected. */ /* #undef HAVE_LIBCAP */ /* Define to the assembler line separator character for multiple assembler instructions per line. Default is `;' */ /* #undef ASM_LINE_SEP */ /* Define if __attribute__((section("foo"))) puts quotes around foo. */ /* #undef HAVE_SECTION_QUOTES */ /* Define if the assembler supports the `.set' directive. */ #define HAVE_ASM_SET_DIRECTIVE 1 /* On powerpc64, use overlapping .opd entries. */ /* #undef USE_PPC64_OVERLAPPING_OPD */ /* On powerpc64, use @notoc. */ /* #undef USE_PPC64_NOTOC */ /* On powerpc64, define if the compiler supports -mcpu=power10. */ /* #undef USE_PPC64_MCPU_POWER10 */ /* On powerpc*, define if scv should be used for syscalls (when available). */ #define USE_PPC_SCV 1 /* Define if _Unwind_Find_FDE should be exported from glibc. */ #define EXPORT_UNWIND_FIND_FDE 1 /* Define if static NSS modules are wanted. */ /* #undef DO_STATIC_NSS */ /* Assume that the compiler supports __builtin_expect. This macro is necessary for proper compilation of code shared between GNU libc and GNU gettext projects. */ #define HAVE_BUILTIN_EXPECT 1 /* Define if the compiler supports __builtin_memset. */ #define HAVE_BUILTIN_MEMSET 1 /* Define if compiler accepts -ftree-loop-distribute-patterns. */ #define HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1 /* Define if compiler accepts -fno-stack-protector in an __attribute__ ((__optimize__)). */ #define HAVE_CC_NO_STACK_PROTECTOR 1 /* The level of stack protection in use for glibc as a whole. May be overridden on a file-by-file basis. */ #define STACK_PROTECTOR_LEVEL 0 /* Define if the linker supports the -z combreloc option. */ #define HAVE_Z_COMBRELOC 1 /* Define if _rtld_local structure should be forced into .sdata section. */ /* #undef HAVE_SDATA_SECTION */ /* Define if assembler supports z10 zarch instructions as default on S390. */ #define HAVE_S390_MIN_Z10_ZARCH_ASM_SUPPORT 1 /* Define if assembler supports z196 zarch instructions as default on S390. */ #define HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT 1 /* Define if assembler supports z13 zarch instructions as default on S390. */ #define HAVE_S390_MIN_Z13_ZARCH_ASM_SUPPORT 1 /* Define if assembler supports arch13 zarch instruction as default on S390. */ /* #undef HAVE_S390_MIN_ARCH13_ZARCH_ASM_SUPPORT */ /* Define if assembler supports vector instructions on S390. */ #define HAVE_S390_VX_ASM_SUPPORT 1 /* Define if gcc supports vector registers as clobbers in inline assembly on S390. */ #define HAVE_S390_VX_GCC_SUPPORT 1 /* Define if assembler supports arch13 instructions on S390. */ #define HAVE_S390_ARCH13_ASM_SUPPORT 1 /* Define if the compiler\'s exception support is based on libunwind. */ /* #undef HAVE_CC_WITH_LIBUNWIND */ /* Define if the access to static and hidden variables is position independent and does not need relocations. */ #define PI_STATIC_AND_HIDDEN 1 /* Define this to disable the 'hidden_proto' et al macros in include/libc-symbols.h that avoid PLT slots in PIE. */ /* #undef NO_HIDDEN_EXTERN_FUNC_IN_PIE */ /* Define this to disable the 'hidden_proto' et al macros in include/libc-symbols.h that avoid PLT slots in the shared objects. */ /* #undef NO_HIDDEN */ /* Define this to disable in rtld the 'hidden_proto' et al macros in include/libc-symbols.h that avoid PLT slots in the shared objects. */ /* #undef NO_RTLD_HIDDEN */ /* Define this to disable lazy relocations in DSOs. */ /* #undef BIND_NOW */ /* AArch64 big endian ABI */ /* #undef HAVE_AARCH64_BE */ /* AArch64 BTI support enabled. */ #define HAVE_AARCH64_BTI 0 /* AArch64 PAC-RET code generation is enabled. */ #define HAVE_AARCH64_PAC_RET 0 /* Assembler support ARMv8.2-A SVE. This macro becomes obsolete when glibc increased the minimum required version of GNU 'binutils' to 2.28 or later. */ #define HAVE_AARCH64_SVE_ASM 0 /* ARC big endian ABI */ /* #undef HAVE_ARC_BE */ /* C-SKY ABI version. */ /* #undef CSKYABI */ /* C-SKY floating-point ABI. */ /* #undef CSKY_HARD_FLOAT */ /* RISC-V integer ABI for ld.so. */ /* #undef RISCV_ABI_XLEN */ /* RISC-V floating-point ABI for ld.so. */ /* #undef RISCV_ABI_FLEN */ /* Linux specific: minimum supported kernel version. */ #define __LINUX_KERNEL_VERSION (3 * 65536 + 2 * 256 + 0) /* Override abi-tags ABI version if necessary. */ #define __ABI_TAG_VERSION 3,2,0 /* Mach/Hurd specific: define if mig supports the `retcode' keyword. */ /* #undef HAVE_MIG_RETCODE */ /* Mach specific: define if the `host_page_size' RPC is available. */ /* #undef HAVE_HOST_PAGE_SIZE */ /* Mach/i386 specific: define if the `i386_io_perm_*' RPCs are available. */ /* #undef HAVE_I386_IO_PERM_MODIFY */ /* Mach/i386 specific: define if the `i386_set_gdt' RPC is available. */ /* #undef HAVE_I386_SET_GDT */ /* Define if inlined system calls are available. */ #define HAVE_INLINED_SYSCALLS 1 /* Define if your compiler defaults to -msecure-plt mode on ppc. */ /* #undef HAVE_PPC_SECURE_PLT */ /* Define if memory tagging support should be enabled. */ /* #undef USE_MTAG */ /* Package description. */ #define PKGVERSION "(GNU libc) " /* Bug reporting address. */ #define REPORT_BUGS_TO "" /* Define if multi-arch DSOs should be generated. */ #define USE_MULTIARCH 1 /* Define if Systemtap probes should be defined. */ #define USE_STAP_PROBE 1 /* Define if library functions should try to contact the nscd daemon. */ #define USE_NSCD 1 /* Define if the dynamic linker should consult an ld.so.cache file. */ #define USE_LDCONFIG 1 /* Define to 1 if STT_GNU_IFUNC support actually works. */ #define HAVE_IFUNC 1 /* Define if gcc supports attribute ifunc. */ #define HAVE_GCC_IFUNC 1 /* Define if CC supports attribute retain. */ /* #undef HAVE_GNU_RETAIN */ /* Define to 1 if the assembler needs intermediate aliases to define multiple symbol versions for one symbol. */ #define SYMVER_NEEDS_ALIAS 0 /* Define to 1 if libpthread actually resides in libc. */ #define PTHREAD_IN_LIBC 1 /* */ # 226 "/root/build/config.h" /* */ /* The zic and zdump programs need these definitions. */ #define HAVE_STRERROR 1 /* The locale code needs these definitions. */ #define HAVE_REGEX 1 /* The ARM hard-float ABI is being used. */ /* #undef HAVE_ARM_PCS_VFP */ /* The ARM movw/movt instructions using PC-relative relocs work right. */ #define ARM_PCREL_MOVW_OK 0 /* The pt_chown binary is being built and used by grantpt. */ #define HAVE_PT_CHOWN 0 /* Define if the compiler supports __builtin_trap without any external dependencies such as making a function call. */ #define HAVE_BUILTIN_TRAP 1 /* ports/sysdeps/mips/configure.in */ /* Define if using the IEEE 754-2008 NaN encoding on the MIPS target. */ /* #undef HAVE_MIPS_NAN2008 */ /* The PowerPC64 ELFv2 ABI is being used. */ /* #undef HAVE_ELFV2_ABI */ /* PowerPC32 uses fcfid for integer to floating point conversions. */ #define HAVE_PPC_FCFID 0 /* PowerPC32 uses fctidz for floating point to long long conversions. */ #define HAVE_PPC_FCTIDZ 0 /* Build glibc with tunables support. */ #define HAVE_TUNABLES 1 /* Define if static PIE is supported. */ /* #undef SUPPORT_STATIC_PIE */ /* Define if static PIE is enabled. */ #define ENABLE_STATIC_PIE 0 /* Some compiler options may now allow to use ebp in __asm__ (used mainly in i386 6 argument syscall issue). */ #define CAN_USE_REGISTER_ASM_EBP 0 /* The default value of x86 CET control. */ #define DEFAULT_DL_X86_CET_CONTROL cet_elf_property /* Define if x86 ISA level should be included in shared libraries. */ /* #undef INCLUDE_X86_ISA_LEVEL */ /* Define if -msahf is enabled by default on x86. */ /* #undef HAVE_X86_LAHF_SAHF */ /* Define if -mmovbe is enabled by default on x86. */ /* #undef HAVE_X86_MOVBE */ # 86 "./../include/libc-symbols.h" 2 /* Obtain the definition of symbol_version_reference. */ # 1 "../sysdeps/generic/libc-symver.h" 1 /* Symbol version management. Copyright (C) 1995-2021 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 . */ /* This file is included from for !_ISOMAC, and unconditionally from . */ #define _LIBC_SYMVER_H 1 # 1 "/root/build/config.h" 1 /* config.h. Generated from config.h.in by configure. */ /* Define if building with SELinux support. Set by --with-selinux. */ /* #undef HAVE_SELINUX */ /* Defined if building with SELinux support & audit libs are detected. */ /* #undef HAVE_LIBAUDIT */ /* Defined if building with SELinux support & libcap libs are detected. */ /* #undef HAVE_LIBCAP */ /* Define to the assembler line separator character for multiple assembler instructions per line. Default is `;' */ /* #undef ASM_LINE_SEP */ /* Define if __attribute__((section("foo"))) puts quotes around foo. */ /* #undef HAVE_SECTION_QUOTES */ /* Define if the assembler supports the `.set' directive. */ #define HAVE_ASM_SET_DIRECTIVE 1 /* On powerpc64, use overlapping .opd entries. */ /* #undef USE_PPC64_OVERLAPPING_OPD */ /* On powerpc64, use @notoc. */ /* #undef USE_PPC64_NOTOC */ /* On powerpc64, define if the compiler supports -mcpu=power10. */ /* #undef USE_PPC64_MCPU_POWER10 */ /* On powerpc*, define if scv should be used for syscalls (when available). */ #define USE_PPC_SCV 1 /* Define if _Unwind_Find_FDE should be exported from glibc. */ #define EXPORT_UNWIND_FIND_FDE 1 /* Define if static NSS modules are wanted. */ /* #undef DO_STATIC_NSS */ /* Assume that the compiler supports __builtin_expect. This macro is necessary for proper compilation of code shared between GNU libc and GNU gettext projects. */ #define HAVE_BUILTIN_EXPECT 1 /* Define if the compiler supports __builtin_memset. */ #define HAVE_BUILTIN_MEMSET 1 /* Define if compiler accepts -ftree-loop-distribute-patterns. */ #define HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1 /* Define if compiler accepts -fno-stack-protector in an __attribute__ ((__optimize__)). */ #define HAVE_CC_NO_STACK_PROTECTOR 1 /* The level of stack protection in use for glibc as a whole. May be overridden on a file-by-file basis. */ /* Define if the linker supports the -z combreloc option. */ #define HAVE_Z_COMBRELOC 1 /* Define if _rtld_local structure should be forced into .sdata section. */ /* #undef HAVE_SDATA_SECTION */ /* Define if assembler supports z10 zarch instructions as default on S390. */ #define HAVE_S390_MIN_Z10_ZARCH_ASM_SUPPORT 1 /* Define if assembler supports z196 zarch instructions as default on S390. */ #define HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT 1 /* Define if assembler supports z13 zarch instructions as default on S390. */ #define HAVE_S390_MIN_Z13_ZARCH_ASM_SUPPORT 1 /* Define if assembler supports arch13 zarch instruction as default on S390. */ /* #undef HAVE_S390_MIN_ARCH13_ZARCH_ASM_SUPPORT */ /* Define if assembler supports vector instructions on S390. */ #define HAVE_S390_VX_ASM_SUPPORT 1 /* Define if gcc supports vector registers as clobbers in inline assembly on S390. */ #define HAVE_S390_VX_GCC_SUPPORT 1 /* Define if assembler supports arch13 instructions on S390. */ #define HAVE_S390_ARCH13_ASM_SUPPORT 1 /* Define if the compiler\'s exception support is based on libunwind. */ /* #undef HAVE_CC_WITH_LIBUNWIND */ /* Define if the access to static and hidden variables is position independent and does not need relocations. */ #define PI_STATIC_AND_HIDDEN 1 /* Define this to disable the 'hidden_proto' et al macros in include/libc-symbols.h that avoid PLT slots in PIE. */ /* #undef NO_HIDDEN_EXTERN_FUNC_IN_PIE */ /* Define this to disable the 'hidden_proto' et al macros in include/libc-symbols.h that avoid PLT slots in the shared objects. */ /* #undef NO_HIDDEN */ /* Define this to disable in rtld the 'hidden_proto' et al macros in include/libc-symbols.h that avoid PLT slots in the shared objects. */ /* #undef NO_RTLD_HIDDEN */ /* Define this to disable lazy relocations in DSOs. */ /* #undef BIND_NOW */ /* AArch64 big endian ABI */ /* #undef HAVE_AARCH64_BE */ /* AArch64 BTI support enabled. */ #define HAVE_AARCH64_BTI 0 /* AArch64 PAC-RET code generation is enabled. */ #define HAVE_AARCH64_PAC_RET 0 /* Assembler support ARMv8.2-A SVE. This macro becomes obsolete when glibc increased the minimum required version of GNU 'binutils' to 2.28 or later. */ #define HAVE_AARCH64_SVE_ASM 0 /* ARC big endian ABI */ /* #undef HAVE_ARC_BE */ /* C-SKY ABI version. */ /* #undef CSKYABI */ /* C-SKY floating-point ABI. */ /* #undef CSKY_HARD_FLOAT */ /* RISC-V integer ABI for ld.so. */ /* #undef RISCV_ABI_XLEN */ /* RISC-V floating-point ABI for ld.so. */ /* #undef RISCV_ABI_FLEN */ /* Linux specific: minimum supported kernel version. */ #define __LINUX_KERNEL_VERSION (3 * 65536 + 2 * 256 + 0) /* Override abi-tags ABI version if necessary. */ #define __ABI_TAG_VERSION 3,2,0 /* Mach/Hurd specific: define if mig supports the `retcode' keyword. */ /* #undef HAVE_MIG_RETCODE */ /* Mach specific: define if the `host_page_size' RPC is available. */ /* #undef HAVE_HOST_PAGE_SIZE */ /* Mach/i386 specific: define if the `i386_io_perm_*' RPCs are available. */ /* #undef HAVE_I386_IO_PERM_MODIFY */ /* Mach/i386 specific: define if the `i386_set_gdt' RPC is available. */ /* #undef HAVE_I386_SET_GDT */ /* Define if inlined system calls are available. */ #define HAVE_INLINED_SYSCALLS 1 /* Define if your compiler defaults to -msecure-plt mode on ppc. */ /* #undef HAVE_PPC_SECURE_PLT */ /* Define if memory tagging support should be enabled. */ /* #undef USE_MTAG */ /* Package description. */ #define PKGVERSION "(GNU libc) " /* Bug reporting address. */ #define REPORT_BUGS_TO "" /* Define if multi-arch DSOs should be generated. */ #define USE_MULTIARCH 1 /* Define if Systemtap probes should be defined. */ #define USE_STAP_PROBE 1 /* Define if library functions should try to contact the nscd daemon. */ #define USE_NSCD 1 /* Define if the dynamic linker should consult an ld.so.cache file. */ #define USE_LDCONFIG 1 /* Define to 1 if STT_GNU_IFUNC support actually works. */ #define HAVE_IFUNC 1 /* Define if gcc supports attribute ifunc. */ #define HAVE_GCC_IFUNC 1 /* Define if CC supports attribute retain. */ /* #undef HAVE_GNU_RETAIN */ /* Define to 1 if the assembler needs intermediate aliases to define multiple symbol versions for one symbol. */ #define SYMVER_NEEDS_ALIAS 0 /* Define to 1 if libpthread actually resides in libc. */ #define PTHREAD_IN_LIBC 1 /* */ # 226 "/root/build/config.h" /* */ /* The zic and zdump programs need these definitions. */ #define HAVE_STRERROR 1 /* The locale code needs these definitions. */ #define HAVE_REGEX 1 /* The ARM hard-float ABI is being used. */ /* #undef HAVE_ARM_PCS_VFP */ /* The ARM movw/movt instructions using PC-relative relocs work right. */ #define ARM_PCREL_MOVW_OK 0 /* The pt_chown binary is being built and used by grantpt. */ #define HAVE_PT_CHOWN 0 /* Define if the compiler supports __builtin_trap without any external dependencies such as making a function call. */ #define HAVE_BUILTIN_TRAP 1 /* ports/sysdeps/mips/configure.in */ /* Define if using the IEEE 754-2008 NaN encoding on the MIPS target. */ /* #undef HAVE_MIPS_NAN2008 */ /* The PowerPC64 ELFv2 ABI is being used. */ /* #undef HAVE_ELFV2_ABI */ /* PowerPC32 uses fcfid for integer to floating point conversions. */ #define HAVE_PPC_FCFID 0 /* PowerPC32 uses fctidz for floating point to long long conversions. */ #define HAVE_PPC_FCTIDZ 0 /* Build glibc with tunables support. */ #define HAVE_TUNABLES 1 /* Define if static PIE is supported. */ /* #undef SUPPORT_STATIC_PIE */ /* Define if static PIE is enabled. */ #define ENABLE_STATIC_PIE 0 /* Some compiler options may now allow to use ebp in __asm__ (used mainly in i386 6 argument syscall issue). */ #define CAN_USE_REGISTER_ASM_EBP 0 /* The default value of x86 CET control. */ #define DEFAULT_DL_X86_CET_CONTROL cet_elf_property /* Define if x86 ISA level should be included in shared libraries. */ /* #undef INCLUDE_X86_ISA_LEVEL */ /* Define if -msahf is enabled by default on x86. */ /* #undef HAVE_X86_LAHF_SAHF */ /* Define if -mmovbe is enabled by default on x86. */ /* #undef HAVE_X86_MOVBE */ # 26 "../sysdeps/generic/libc-symver.h" 2 /* Use symbol_version_reference to specify the version a symbol reference should link to. Use symbol_version or default_symbol_version for the definition of a versioned symbol. The difference is that the latter is a no-op in non-shared builds. _set_symbol_version is similar to symbol_version_reference, except that this macro expects the name and symbol version as a single string or token sequence, with an @ or @@ separator. (A string is used in C mode and a token sequence in assembler mode.) _set_symbol_version only be used for definitions because it may introduce an alias symbol that would not be globally unique for mere references. The _set_symbol_version macro is used to define default_symbol_version and compat_symbol. */ #define symbol_version_reference(real,name,version) __asm__ (".symver " #real "," #name "@" #version) # 78 "../sysdeps/generic/libc-symver.h" #define _set_symbol_version(real,name_version) __asm__ (".symver " #real "," name_version) # 89 "./../include/libc-symbols.h" 2 /* When PIC is defined and SHARED isn't defined, we are building PIE by default. */ #define BUILD_PIE_DEFAULT 0 /* Define this for the benefit of portable GNU code that wants to check it. Code that checks with #if will not #include again, since we've already done it (and this file is implicitly included in every compile, via -include). Code that checks with #ifdef will #include , but that file should always be idempotent (i.e., it's just #define/#undef and nothing else anywhere should be changing the macro state it touches), so it's harmless. */ #define HAVE_CONFIG_H 0 /* Define these macros for the benefit of portable GNU code that wants to check them. Of course, STDC_HEADERS is never false when building libc! */ #define STDC_HEADERS 1 #define HAVE_MBSTATE_T 1 #define HAVE_MBSRTOWCS 1 #define HAVE_LIBINTL_H 1 #define HAVE_WCTYPE_H 1 #define HAVE_ISWCTYPE 1 #define ENABLE_NLS 1 /* The symbols in all the user (non-_) macros are C symbols. */ #define __SYMBOL_PREFIX #define C_SYMBOL_NAME(name) name #define ASM_LINE_SEP ; /* Provide an empty definition when cdefs.h is not included. */ #define __attribute_copy__(arg) /* GCC understands weak symbols and aliases; use its interface where possible, instead of embedded assembly language. */ /* Define ALIASNAME as a strong alias for NAME. */ #define strong_alias(name,aliasname) _strong_alias(name, aliasname) #define _strong_alias(name,aliasname) extern __typeof (name) aliasname __attribute__ ((alias (#name))) __attribute_copy__ (name); /* This comes between the return type and function name in a function definition to make that definition weak. */ #define weak_function __attribute__ ((weak)) #define weak_const_function __attribute__ ((weak, __const__)) /* Define ALIASNAME as a weak alias for NAME. If weak aliases are not available, this defines a strong alias. */ #define weak_alias(name,aliasname) _weak_alias (name, aliasname) #define _weak_alias(name,aliasname) extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))) __attribute_copy__ (name); /* Same as WEAK_ALIAS, but mark symbol as hidden. */ #define weak_hidden_alias(name,aliasname) _weak_hidden_alias (name, aliasname) #define _weak_hidden_alias(name,aliasname) extern __typeof (name) aliasname __attribute__ ((weak, alias (#name), __visibility__ ("hidden"))) __attribute_copy__ (name); /* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */ #define weak_extern(symbol) _weak_extern (weak symbol) #define _weak_extern(expr) _Pragma (#expr) /* In shared builds, the expression call_function_static_weak (FUNCTION-SYMBOL, ARGUMENTS) invokes FUNCTION-SYMBOL (an identifier) unconditionally, with the (potentially empty) argument list ARGUMENTS. In static builds, if FUNCTION-SYMBOL has a definition, the function is invoked as before; if FUNCTION-SYMBOL is NULL, no call is performed. */ #define call_function_static_weak(func,...) ({ extern __typeof__ (func) func weak_function; (func != NULL ? func (__VA_ARGS__) : (void)0); }) # 208 "./../include/libc-symbols.h" /* Determine the return address. */ #define RETURN_ADDRESS(nr) __builtin_extract_return_addr (__builtin_return_address (nr)) /* When a reference to SYMBOL is encountered, the linker will emit a warning message MSG. */ /* We want the .gnu.warning.SYMBOL section to be unallocated. */ #define __make_section_unallocated(section_string) asm (".section " section_string "\n\t.previous"); /* Tacking on "\n\t#" to the section name makes gcc put it's bogus section attributes on what looks like a comment to the assembler. */ #define __sec_comment "\n\t#" #define link_warning(symbol,msg) __make_section_unallocated (".gnu.warning." #symbol) static const char __evoke_link_warning_ ##symbol[] __attribute__ ((used, section (".gnu.warning." #symbol __sec_comment))) = msg; /* A canned warning for sysdeps/stub functions. */ #define stub_warning(name) __make_section_unallocated (".gnu.glibc-stub." #name) link_warning (name, #name " is not implemented and will always fail") /* Warning for linking functions calling dlopen into static binaries. */ #define static_link_warning(name) static_link_warning1(name) #define static_link_warning1(name) link_warning(name, "Using '" #name "' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking") /* Resource Freeing Hooks: Normally a process exits and the OS cleans up any allocated memory. However, when tooling like mtrace or valgrind is monitoring the process we need to free all resources that are part of the process in order to provide the consistency required to track memory leaks. A single public API exists and is __libc_freeres(), and this is used by applications like valgrind to freee resouces. There are 3 cases: (a) __libc_freeres In this case all you need to do is define the freeing routine: foo.c: libfoo_freeres_fn (foo_freeres) { complex_free (mem); } This ensures the function is called at the right point to free resources. (b) __libc_freeres_ptr The framework for (a) iterates over the list of pointers-to-free in (b) and frees them. foo.c: libc_freeres_ptr (static char *foo_buffer); Freeing these resources alaways happens last and is equivalent to registering a function that does 'free (foo_buffer)'. (c) Explicit lists of free routines to call or objects to free. It is the intended goal to remove (a) and (b) which have some non-determinism based on link order, and instead use explicit lists of functions and frees to resolve cleanup ordering issues and make it easy to debug and maintain. As of today the following subsystems use (c): Per-thread cleanup: * malloc/thread-freeres.c libdl cleanup: * dlfcn/dlfreeres.c libpthread cleanup: * nptl/nptlfreeres.c So if you need any shutdown routines to run you should add them directly to the appropriate subsystem's shutdown list. */ /* Resource pointers to free in libc.so. */ #define libc_freeres_ptr(decl) __make_section_unallocated ("__libc_freeres_ptrs, \"aw\", %nobits") decl __attribute__ ((section ("__libc_freeres_ptrs" __sec_comment))) /* Resource freeing functions from libc.so go in this section. */ #define __libc_freeres_fn_section __attribute__ ((__used__, section ("__libc_freeres_fn"))) /* Resource freeing functions for libc.so. */ #define libc_freeres_fn(name) static void name (void) __attribute_used__ __libc_freeres_fn_section; text_set_element (__libc_subfreeres, name); static void name (void) /* Declare SYMBOL to be TYPE (`function' or `object') of SIZE bytes alias to ORIGINAL, when the assembler supports such declarations (such as in ELF). This is only necessary when defining something in assembly, or playing funny alias games where the size should be other than what the compiler thinks it is. */ #define declare_symbol_alias(symbol,original,type,size) declare_symbol_alias_1 (symbol, original, type, size) #define declare_symbol_alias_1(symbol,original,type,size) asm (".globl " __SYMBOL_PREFIX #symbol "\n\t" declare_symbol_alias_1_alias (symbol, original) "\n\t.type " __SYMBOL_PREFIX #symbol ", " "%" #type "\n\t.size " __SYMBOL_PREFIX #symbol ", " #size); #define declare_symbol_alias_1_alias(symbol,original) ".set " __SYMBOL_PREFIX #symbol ", " __SYMBOL_PREFIX #original /* */ #define attribute_used_retain __attribute__ ((__used__)) /* Symbol set support macros. */ /* Make SYMBOL, which is in the text segment, an element of SET. */ #define text_set_element(set,symbol) _elf_set_element(set, symbol) /* Make SYMBOL, which is in the data segment, an element of SET. */ #define data_set_element(set,symbol) _elf_set_element(set, symbol) /* Make SYMBOL, which is in the bss segment, an element of SET. */ #define bss_set_element(set,symbol) _elf_set_element(set, symbol) /* These are all done the same way in ELF. There is a new section created for each set. */ #define _elf_set_element(set,symbol) static const void *const __elf_set_ ##set ##_element_ ##symbol ##__ attribute_used_retain __attribute__ ((section (#set))) = &(symbol) /* Define SET as a symbol set. This may be required (it is in a.out) to be able to use the set's contents. */ #define symbol_set_define(set) symbol_set_declare(set) /* Declare SET for use in this module, if defined in another module. In a shared library, this is always local to that shared object. For static linking, the set might be wholly absent and so we use weak references. */ #define symbol_set_declare(set) extern char const __start_ ##set[] __symbol_set_attribute; extern char const __stop_ ##set[] __symbol_set_attribute; #define __symbol_set_attribute __attribute__ ((weak)) /* Return a pointer (void *const *) to the first element of SET. */ #define symbol_set_first_element(set) ((void *const *) (&__start_ ##set)) /* Return true iff PTR (a void *const *) has been incremented past the last element in SET. */ #define symbol_set_end_p(set,ptr) ((ptr) >= (void *const *) &__stop_ ##set) # 429 "./../include/libc-symbols.h" #define symbol_version(real,name,version) #define default_symbol_version(real,name,version) strong_alias(real, name) #define attribute_hidden #define attribute_tls_model_ie __attribute__ ((tls_model ("initial-exec"))) #define attribute_relro __attribute__ ((section (".data.rel.ro"))) /* Used to disable stack protection in sensitive places, like ifunc resolvers and early static TLS init. */ #define inhibit_stack_protector __attribute__ ((__optimize__ ("-fno-stack-protector"))) /* The following macros are used for PLT bypassing within libc.so (and if needed other libraries similarly). First of all, you need to have the function prototyped somewhere, say in foo/foo.h: int foo (int __bar); If calls to foo within libc.so should always go to foo defined in libc.so, then in include/foo.h you add: libc_hidden_proto (foo) line and after the foo function definition: int foo (int __bar) { return __bar; } libc_hidden_def (foo) or int foo (int __bar) { return __bar; } libc_hidden_weak (foo) Similarly for global data. If references to foo within libc.so should always go to foo defined in libc.so, then in include/foo.h you add: libc_hidden_proto (foo) line and after foo's definition: int foo = INITIAL_FOO_VALUE; libc_hidden_data_def (foo) or int foo = INITIAL_FOO_VALUE; libc_hidden_data_weak (foo) If foo is normally just an alias (strong or weak) to some other function, you should use the normal strong_alias first, then add libc_hidden_def or libc_hidden_weak: int baz (int __bar) { return __bar; } strong_alias (baz, foo) libc_hidden_weak (foo) If the function should be internal to multiple objects, say ld.so and libc.so, the best way is to use: #if IS_IN (libc) || IS_IN (rtld) hidden_proto (foo) #endif in include/foo.h and the normal macros at all function definitions depending on what DSO they belong to. If versioned_symbol macro is used to define foo, libc_hidden_ver macro should be used, as in: int __real_foo (int __bar) { return __bar; } versioned_symbol (libc, __real_foo, foo, GLIBC_2_1); libc_hidden_ver (__real_foo, foo) */ # 591 "./../include/libc-symbols.h" #define __hidden_proto_hiddenattr(attrs...) __attribute__ ((visibility ("hidden"), ##attrs)) #define hidden_proto(name,attrs...) __hidden_proto (name, , name, ##attrs) #define hidden_tls_proto(name,attrs...) __hidden_proto (name, __thread, name, ##attrs) #define __hidden_proto(name,thread,internal,attrs...) extern thread __typeof (name) name __hidden_proto_hiddenattr (attrs); #define hidden_weak(name) #define hidden_def(name) #define hidden_ver(local,name) #define hidden_data_weak(name) #define hidden_data_def(name) #define hidden_tls_def(name) #define hidden_data_ver(local,name) #define hidden_nolink(name,lib,version) #define libc_hidden_proto(name,attrs...) hidden_proto (name, ##attrs) #define libc_hidden_tls_proto(name,attrs...) hidden_tls_proto (name, ##attrs) #define libc_hidden_def(name) hidden_def (name) #define libc_hidden_weak(name) hidden_weak (name) #define libc_hidden_nolink_sunrpc(name,version) hidden_nolink (name, libc, version) #define libc_hidden_ver(local,name) hidden_ver (local, name) #define libc_hidden_data_def(name) hidden_data_def (name) #define libc_hidden_tls_def(name) hidden_tls_def (name) #define libc_hidden_data_weak(name) hidden_data_weak (name) #define libc_hidden_data_ver(local,name) hidden_data_ver (local, name) # 642 "./../include/libc-symbols.h" # 654 "./../include/libc-symbols.h" #define rtld_hidden_proto(name,attrs...) #define rtld_hidden_tls_proto(name,attrs...) #define rtld_hidden_def(name) #define rtld_hidden_weak(name) #define rtld_hidden_ver(local,name) #define rtld_hidden_data_def(name) #define rtld_hidden_tls_def(name) #define rtld_hidden_data_weak(name) #define rtld_hidden_data_ver(local,name) # 676 "./../include/libc-symbols.h" #define libm_hidden_proto(name,attrs...) #define libm_hidden_tls_proto(name,attrs...) #define libm_hidden_def(name) #define libm_hidden_weak(name) #define libm_hidden_ver(local,name) #define libm_hidden_data_def(name) #define libm_hidden_tls_def(name) #define libm_hidden_data_weak(name) #define libm_hidden_data_ver(local,name) # 698 "./../include/libc-symbols.h" #define libmvec_hidden_proto(name,attrs...) #define libmvec_hidden_tls_proto(name,attrs...) #define libmvec_hidden_def(name) #define libmvec_hidden_weak(name) #define libmvec_hidden_ver(local,name) #define libmvec_hidden_data_def(name) #define libmvec_hidden_tls_def(name) #define libmvec_hidden_data_weak(name) #define libmvec_hidden_data_ver(local,name) # 721 "./../include/libc-symbols.h" #define libresolv_hidden_proto(name,attrs...) #define libresolv_hidden_tls_proto(name,attrs...) #define libresolv_hidden_def(name) #define libresolv_hidden_weak(name) #define libresolv_hidden_ver(local,name) #define libresolv_hidden_data_def(name) #define libresolv_hidden_tls_def(name) #define libresolv_hidden_data_weak(name) #define libresolv_hidden_data_ver(local,name) # 744 "./../include/libc-symbols.h" #define libpthread_hidden_proto(name,attrs...) #define libpthread_hidden_tls_proto(name,attrs...) #define libpthread_hidden_def(name) #define libpthread_hidden_weak(name) #define libpthread_hidden_ver(local,name) #define libpthread_hidden_data_def(name) #define libpthread_hidden_tls_def(name) #define libpthread_hidden_data_weak(name) #define libpthread_hidden_data_ver(local,name) # 767 "./../include/libc-symbols.h" #define librt_hidden_proto(name,attrs...) #define librt_hidden_tls_proto(name,attrs...) #define librt_hidden_def(name) #define librt_hidden_weak(name) #define librt_hidden_ver(local,name) #define librt_hidden_data_def(name) #define librt_hidden_tls_def(name) #define librt_hidden_data_weak(name) #define librt_hidden_data_ver(local,name) # 790 "./../include/libc-symbols.h" #define libdl_hidden_proto(name,attrs...) #define libdl_hidden_tls_proto(name,attrs...) #define libdl_hidden_def(name) #define libdl_hidden_weak(name) #define libdl_hidden_ver(local,name) #define libdl_hidden_data_def(name) #define libdl_hidden_tls_def(name) #define libdl_hidden_data_weak(name) #define libdl_hidden_data_ver(local,name) # 813 "./../include/libc-symbols.h" #define libnsl_hidden_proto(name,attrs...) #define libnsl_hidden_tls_proto(name,attrs...) #define libnsl_hidden_weak(name) #define libnsl_hidden_ver(local,name) #define libnsl_hidden_data_def(name) #define libnsl_hidden_tls_def(name) #define libnsl_hidden_data_weak(name) #define libnsl_hidden_data_ver(local,name) #define libc_hidden_builtin_proto(name,attrs...) libc_hidden_proto (name, ##attrs) #define libc_hidden_builtin_def(name) libc_hidden_def (name) #define libc_hidden_builtin_weak(name) libc_hidden_weak (name) #define libc_hidden_builtin_ver(local,name) libc_hidden_ver (local, name) #define libc_hidden_ldbl_proto(name,attrs...) libc_hidden_proto (name, ##attrs) # 845 "./../include/libc-symbols.h" #define libutil_hidden_proto(name,attrs...) #define libutil_hidden_tls_proto(name,attrs...) #define libutil_hidden_def(name) #define libutil_hidden_weak(name) #define libutil_hidden_ver(local,name) #define libutil_hidden_data_def(name) #define libutil_hidden_tls_def(name) #define libutil_hidden_data_weak(name) #define libutil_hidden_data_ver(local,name) #define libanl_hidden_proto(name,attrs...) #define libanl_hidden_def(name) /* Get some dirty hacks. */ # 1 "../sysdeps/generic/symbol-hacks.h" 1 /* Some compiler optimizations may transform loops into memset/memmove calls and without proper declaration it may generate PLT calls. */ # 866 "./../include/libc-symbols.h" 2 /* Move compatibility symbols out of the way by placing them all in a special section. */ #define attribute_compat_text_section __attribute__ ((section (".text.compat"))) #define attribute_compat_data_section __attribute__ ((section (".data.compat"))) /* Helper / base macros for indirect function symbols. */ #define __ifunc_resolver(type_name,name,expr,arg,init,classifier) classifier inhibit_stack_protector __typeof (type_name) *name ##_ifunc (arg) { init (); __typeof (type_name) *res = expr; return res; } #define __ifunc(type_name,name,expr,arg,init) extern __typeof (type_name) name __attribute__ ((ifunc (#name "_ifunc"))); __ifunc_resolver (type_name, name, expr, arg, init, static) #define __ifunc_hidden(type_name,name,expr,arg,init) __ifunc (type_name, name, expr, arg, init) # 918 "./../include/libc-symbols.h" /* The following macros are used for indirect function symbols in libc.so. First of all, you need to have the function prototyped somewhere, say in foo.h: int foo (int __bar); If you have an implementation for foo which e.g. uses a special hardware feature which isn't available on all machines where this libc.so will be used but decideable if available at runtime e.g. via hwcaps, you can provide two or multiple implementations of foo: int __foo_default (int __bar) { return __bar; } int __foo_special (int __bar) { return __bar; } If your function foo has no libc_hidden_proto (foo) defined for PLT bypassing, you can use: #define INIT_ARCH() unsigned long int hwcap = __GLRO(dl_hwcap); libc_ifunc (foo, (hwcap & HWCAP_SPECIAL) ? __foo_special : __foo_default); This will define a resolver function for foo which returns __foo_special or __foo_default depending on your specified expression. Please note that you have to define a macro function INIT_ARCH before using libc_ifunc macro as it is called by the resolver function before evaluating the specified expression. In this example it is used to prepare the hwcap variable. The resolver function is assigned to an ifunc'ed symbol foo. Calls to foo from inside or outside of libc.so will be indirected by a PLT call. If your function foo has a libc_hidden_proto (foo) defined for PLT bypassing and calls to foo within libc.so should always go to one specific implementation of foo e.g. __foo_default then you have to add: __hidden_ver1 (__foo_default, __GI_foo, __foo_default); or a tweaked definition of libc_hidden_def macro after the __foo_default function definition. Calls to foo within libc.so will always go directly to __foo_default. Calls to foo from outside libc.so will be indirected by a PLT call to ifunc'ed symbol foo which you have to define in a separate compile unit: #define foo __redirect_foo #include #undef foo extern __typeof (__redirect_foo) __foo_default attribute_hidden; extern __typeof (__redirect_foo) __foo_special attribute_hidden; libc_ifunc_redirected (__redirect_foo, foo, (hwcap & HWCAP_SPECIAL) ? __foo_special : __foo_default); This will define the ifunc'ed symbol foo like above. The redirection of foo in header file is needed to omit an additional defintion of __GI_foo which would end in a linker error while linking libc.so. You have to specify __redirect_foo as first parameter which is used within libc_ifunc_redirected macro in conjunction with typeof to define the ifunc'ed symbol foo. If your function foo has a libc_hidden_proto (foo) defined and calls to foo within or from outside libc.so should go via ifunc'ed symbol, then you have to use: libc_ifunc_hidden (foo, foo, (hwcap & HWCAP_SPECIAL) ? __foo_special : __foo_default); libc_hidden_def (foo) The first parameter foo of libc_ifunc_hidden macro is used in the same way as for libc_ifunc_redirected macro. */ #define libc_ifunc(name,expr) __ifunc (name, name, expr, void, INIT_ARCH) #define libc_ifunc_redirected(redirected_name,name,expr) __ifunc (redirected_name, name, expr, void, INIT_ARCH) #define libc_ifunc_hidden(redirected_name,name,expr) __ifunc_hidden (redirected_name, name, expr, void, INIT_ARCH) /* The body of the function is supposed to use __get_cpu_features which will, if necessary, initialize the data first. */ #define libm_ifunc_init() #define libm_ifunc(name,expr) __ifunc (name, name, expr, void, libm_ifunc_init) /* Add the compiler optimization to inhibit loop transformation to library calls. This is used to avoid recursive calls in memset and memmove default implementations. */ #define inhibit_loop_to_libcall __attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns"))) /* These macros facilitate sharing source files with gnulib. They are here instead of sys/cdefs.h because they should not be used in public header files. Their definitions should be kept consistent with the definitions in gnulib-common.m4, but it is not necessary to cater to old non-GCC compilers, since they will only be used while building glibc itself. (Note that _GNUC_PREREQ cannot be used in this file.) */ /* Define as a marker that can be attached to declarations that might not be used. This helps to reduce warnings, such as from GCC -Wunused-parameter. */ #define _GL_UNUSED __attribute__ ((__unused__)) /* gcc supports the "unused" attribute on possibly unused labels, and g++ has since version 4.5. Note to support C++ as well as C, _GL_UNUSED_LABEL should be used with a trailing ; */ #define _GL_UNUSED_LABEL _GL_UNUSED /* The __pure__ attribute was added in gcc 2.96. */ #define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) /* The __const__ attribute was added in gcc 2.95. */ #define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) # 0 "" 2 # 1 "../sysdeps/s390/s390-64/__longjmp.c" /* Copyright (C) 2001-2021 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 . */ # 1 "../include/errno.h" 1 # 1 "../stdlib/errno.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * ISO C99 Standard: 7.5 Errors */ #define _ERRNO_H 1 # 1 "../include/features.h" 1 /* Copyright (C) 1991-2021 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 . */ #define _FEATURES_H 1 /* These are defined by the user (or the compiler) to specify the desired environment: __STRICT_ANSI__ ISO Standard C. _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. _ISOC11_SOURCE Extensions to ISO C99 from ISO C11. _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X. __STDC_WANT_LIB_EXT2__ Extensions to ISO C99 from TR 27431-2:2010. __STDC_WANT_IEC_60559_BFP_EXT__ Extensions to ISO C11 from TS 18661-1:2014. __STDC_WANT_IEC_60559_FUNCS_EXT__ Extensions to ISO C11 from TS 18661-4:2015. __STDC_WANT_IEC_60559_TYPES_EXT__ Extensions to ISO C11 from TS 18661-3:2015. __STDC_WANT_IEC_60559_EXT__ ISO C2X interfaces defined only in Annex F. _POSIX_SOURCE IEEE Std 1003.1. _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; if >=199309L, add IEEE Std 1003.1b-1993; if >=199506L, add IEEE Std 1003.1c-1995; if >=200112L, all of IEEE 1003.1-2004 if >=200809L, all of IEEE 1003.1-2008 _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if Single Unix conformance is wanted, to 600 for the sixth revision, to 700 for the seventh revision. _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. _LARGEFILE_SOURCE Some more functions for correct standard I/O. _LARGEFILE64_SOURCE Additional functionality from LFS for large files. _FILE_OFFSET_BITS=N Select default filesystem interface. _ATFILE_SOURCE Additional *at interfaces. _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant) MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN. _GNU_SOURCE All of the above, plus GNU extensions. _DEFAULT_SOURCE The default set of features (taking precedence over __STRICT_ANSI__). _FORTIFY_SOURCE Add security hardening to many library functions. Set to 1 or 2; 2 performs stricter checks than 1. _REENTRANT, _THREAD_SAFE Obsolete; equivalent to _POSIX_C_SOURCE=199506L. The `-ansi' switch to the GNU C compiler, and standards conformance options such as `-std=c99', define __STRICT_ANSI__. If none of these are defined, or if _DEFAULT_SOURCE is defined, the default is to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to 200809L, as well as enabling miscellaneous functions from BSD and SVID. If more than one of these are defined, they accumulate. For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together give you ISO C, 1003.1, and 1003.2, but nothing else. These are defined by this file and are used by the header files to decide what to declare or define: __GLIBC_USE (F) Define things from feature set F. This is defined to 1 or 0; the subsequent macros are either defined or undefined, and those tests should be moved to __GLIBC_USE. __USE_ISOC11 Define ISO C11 things. __USE_ISOC99 Define ISO C99 things. __USE_ISOC95 Define ISO C90 AMD1 (C95) things. __USE_ISOCXX11 Define ISO C++11 things. __USE_POSIX Define IEEE Std 1003.1 things. __USE_POSIX2 Define IEEE Std 1003.2 things. __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. __USE_XOPEN Define XPG things. __USE_XOPEN_EXTENDED Define X/Open Unix things. __USE_UNIX98 Define Single Unix V2 things. __USE_XOPEN2K Define XPG6 things. __USE_XOPEN2KXSI Define XPG6 XSI things. __USE_XOPEN2K8 Define XPG7 things. __USE_XOPEN2K8XSI Define XPG7 XSI things. __USE_LARGEFILE Define correct standard I/O things. __USE_LARGEFILE64 Define LFS things with separate names. __USE_FILE_OFFSET64 Define 64bit interface as default. __USE_MISC Define things from 4.3BSD or System V Unix. __USE_ATFILE Define *at interfaces and AT_* constants for them. __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant) MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN. __USE_GNU Define GNU extensions. __USE_FORTIFY_LEVEL Additional security measures used, according to level. The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are defined by this file unconditionally. `__GNU_LIBRARY__' is provided only for compatibility. All new code should use the other symbols to test for features. All macros listed above as possibly being defined by this file are explicitly undefined if they are not explicitly defined. Feature-test macros that are not defined by the user or compiler but are implied by the other feature-test macros defined (or by the lack of any definitions) are defined by the file. ISO C feature test macros depend on the definition of the macro when an affected header is included, not when the first system header is included, and so they are handled in , which does not have a multiple include guard. Feature test macros that can be handled from the first system header included are handled here. */ /* Undefine everything, so we get a clean slate. */ #undef __USE_ISOC11 #undef __USE_ISOC99 #undef __USE_ISOC95 #undef __USE_ISOCXX11 #undef __USE_POSIX #undef __USE_POSIX2 #undef __USE_POSIX199309 #undef __USE_POSIX199506 #undef __USE_XOPEN #undef __USE_XOPEN_EXTENDED #undef __USE_UNIX98 #undef __USE_XOPEN2K #undef __USE_XOPEN2KXSI #undef __USE_XOPEN2K8 #undef __USE_XOPEN2K8XSI #undef __USE_LARGEFILE #undef __USE_LARGEFILE64 #undef __USE_FILE_OFFSET64 #undef __USE_MISC #undef __USE_ATFILE #undef __USE_DYNAMIC_STACK_SIZE #undef __USE_GNU #undef __USE_FORTIFY_LEVEL #undef __KERNEL_STRICT_NAMES #undef __GLIBC_USE_ISOC2X #undef __GLIBC_USE_DEPRECATED_GETS #undef __GLIBC_USE_DEPRECATED_SCANF /* Suppress kernel-name space pollution unless user expressedly asks for it. */ #define __KERNEL_STRICT_NAMES /* Convenience macro to test the version of gcc. Use like this: #if __GNUC_PREREQ (2,8) ... code requiring gcc 2.8 or later ... #endif Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was added in 2.0. */ #define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) /* Similarly for clang. Features added to GCC after version 4.2 may or may not also be available in clang, and clang's definitions of __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such features can be queried via __has_extension/__has_feature. */ #define __glibc_clang_prereq(maj,min) 0 /* Whether to use feature set F. */ #define __GLIBC_USE(F) __GLIBC_USE_ ## F /* _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not issue a warning; the expectation is that the source is being transitioned to use the new macro. */ /* If _GNU_SOURCE was defined by the user, turn on all the other features. */ #undef _ISOC95_SOURCE #define _ISOC95_SOURCE 1 #undef _ISOC99_SOURCE #define _ISOC99_SOURCE 1 #undef _ISOC11_SOURCE #define _ISOC11_SOURCE 1 #undef _ISOC2X_SOURCE #define _ISOC2X_SOURCE 1 #undef _POSIX_SOURCE #define _POSIX_SOURCE 1 #undef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200809L #undef _XOPEN_SOURCE #define _XOPEN_SOURCE 700 #undef _XOPEN_SOURCE_EXTENDED #define _XOPEN_SOURCE_EXTENDED 1 #undef _LARGEFILE64_SOURCE #define _LARGEFILE64_SOURCE 1 #undef _DEFAULT_SOURCE #define _DEFAULT_SOURCE 1 #undef _ATFILE_SOURCE #define _ATFILE_SOURCE 1 #undef _DYNAMIC_STACK_SIZE_SOURCE #define _DYNAMIC_STACK_SIZE_SOURCE 1 /* If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined, define _DEFAULT_SOURCE. */ #undef _DEFAULT_SOURCE #define _DEFAULT_SOURCE 1 /* This is to enable the ISO C2X extension. */ #define __GLIBC_USE_ISOC2X 1 /* This is to enable the ISO C11 extension. */ #define __USE_ISOC11 1 /* This is to enable the ISO C99 extension. */ #define __USE_ISOC99 1 /* This is to enable the ISO C90 Amendment 1:1995 extension. */ #define __USE_ISOC95 1 # 279 "../include/features.h" /* If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE is defined, use POSIX.1-2008 (or another version depending on _XOPEN_SOURCE). */ #undef _POSIX_SOURCE #define _POSIX_SOURCE 1 #undef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200809L # 308 "../include/features.h" /* Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be defined in all multithreaded code. GNU libc has not required this for many years. We now treat them as compatibility synonyms for _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with comprehensive support for multithreaded code. Using them never lowers the selected level of POSIX conformance, only raises it. */ #define __USE_POSIX 1 #define __USE_POSIX2 1 #define __USE_POSIX199309 1 #define __USE_POSIX199506 1 #define __USE_XOPEN2K 1 #undef __USE_ISOC95 #define __USE_ISOC95 1 #undef __USE_ISOC99 #define __USE_ISOC99 1 #define __USE_XOPEN2K8 1 #undef _ATFILE_SOURCE #define _ATFILE_SOURCE 1 #define __USE_XOPEN 1 #define __USE_XOPEN_EXTENDED 1 #define __USE_UNIX98 1 #undef _LARGEFILE_SOURCE #define _LARGEFILE_SOURCE 1 #define __USE_XOPEN2K8 1 #define __USE_XOPEN2K8XSI 1 #define __USE_XOPEN2K 1 #define __USE_XOPEN2KXSI 1 #undef __USE_ISOC95 #define __USE_ISOC95 1 #undef __USE_ISOC99 #define __USE_ISOC99 1 #define __USE_LARGEFILE 1 #define __USE_LARGEFILE64 1 # 1 "../include/features-time64.h" 1 # 1 "../sysdeps/unix/sysv/linux/features-time64.h" 1 /* Features part to handle 64-bit time_t support. Copyright (C) 2021 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 . */ /* We need to know the word size in order to check the time size. */ # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 21 "../sysdeps/unix/sysv/linux/features-time64.h" 2 # 1 "../bits/timesize.h" 1 /* Bit size of the time_t type at glibc build time, general case. Copyright (C) 2018-2021 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 . */ # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 20 "../bits/timesize.h" 2 /* Size in bits of the 'time_t' type of the default ABI. */ #define __TIMESIZE __WORDSIZE # 22 "../sysdeps/unix/sysv/linux/features-time64.h" 2 # 2 "../include/features-time64.h" 2 # 393 "../include/features.h" 2 #define __USE_MISC 1 #define __USE_ATFILE 1 #define __USE_DYNAMIC_STACK_SIZE 1 #define __USE_GNU 1 # 429 "../include/features.h" #define __USE_FORTIFY_LEVEL 0 /* The function 'gets' existed in C89, but is impossible to use safely. It has been removed from ISO C11 and ISO C++14. Note: for compatibility with various implementations of , this test must consider only the value of __cplusplus when compiling C++. */ #define __GLIBC_USE_DEPRECATED_GETS 0 /* GNU formerly extended the scanf functions with modified format specifiers %as, %aS, and %a[...] that allocate a buffer for the input using malloc. This extension conflicts with ISO C99, which defines %a as a standalone format specifier that reads a floating- point number; moreover, POSIX.1-2008 provides the same feature using the modifier letter 'm' instead (%ms, %mS, %m[...]). We now follow C99 unless GNU extensions are active and the compiler is specifically in C89 or C++98 mode (strict or not). For instance, with GCC, -std=gnu11 will have C99-compliant scanf with or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the old extension. */ #define __GLIBC_USE_DEPRECATED_SCANF 0 /* Get definitions of __STDC_* predefined macros, if the compiler has not preincluded this header automatically. */ /* This macro indicates that the installed library is the GNU C Library. For historic reasons the value now is 6 and this will stay from now on. The use of this variable is deprecated. Use __GLIBC__ and __GLIBC_MINOR__ now (see below) when you want to test for a specific GNU C library version and use the values in to get the sonames of the shared libraries. */ #undef __GNU_LIBRARY__ #define __GNU_LIBRARY__ 6 /* Major and minor version number of the GNU C library package. Use these macros to test for features in specific releases. */ #define __GLIBC__ 2 #define __GLIBC_MINOR__ 34 #define __GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) /* This is here only because every header file already includes this one. */ # 1 "../include/sys/cdefs.h" 1 /* This is outside of _ISOMAC to enforce that _Static_assert always uses the two-argument form. This can be removed once the minimum GCC version used to compile glibc is GCC 9.1. */ #define _Static_assert(expr,diagnostic) _Static_assert (expr, diagnostic) # 1 "../misc/sys/cdefs.h" 1 /* Copyright (C) 1992-2021 Free Software Foundation, Inc. Copyright The GNU Toolchain Authors. 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 . */ #define _SYS_CDEFS_H 1 /* We are almost always included from features.h. */ /* The GNU libc does not support any K&R compilers or the traditional mode of ISO C compilers anymore. Check for some of the combinations not supported anymore. */ /* Some user header file might have defined this before. */ #undef __P #undef __PMT /* Compilers that lack __has_attribute may object to #if defined __has_attribute && __has_attribute (...) even though they do not need to evaluate the right-hand side of the &&. Similarly for __has_builtin, etc. */ #define __glibc_has_attribute(attr) __has_attribute (attr) #define __glibc_has_builtin(name) __has_builtin (name) #define __glibc_has_extension(ext) 0 /* All functions, except those with callbacks or those that synchronize memory, are leaf functions. */ #define __LEAF #define __LEAF_ATTR /* GCC can always grok prototypes. For C++ programs we add throw() to help it optimize the function calls. But this only works with gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions as non-throwing using a function attribute since programs can use the -fexceptions options for C code as well. */ #define __THROW __attribute__ ((__nothrow__ __LEAF)) #define __THROWNL __attribute__ ((__nothrow__)) #define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct #define __NTHNL(fct) __attribute__ ((__nothrow__)) fct # 100 "../misc/sys/cdefs.h" # 115 "../misc/sys/cdefs.h" /* These two macros are not used in glibc anymore. They are kept here only because some other projects expect the macros to be defined. */ #define __P(args) args #define __PMT(args) args /* For these things, GCC behaves the ANSI way normally, and the non-ANSI way under -traditional. */ #define __CONCAT(x,y) x ## y #define __STRING(x) #x /* This is not a typedef so `const __ptr_t' does the right thing. */ #define __ptr_t void * /* C++ needs to know that types and declarations are C, not C++. */ #define __BEGIN_DECLS #define __END_DECLS /* Fortify support. */ #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) #define __bos0(ptr) __builtin_object_size (ptr, 0) /* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. */ #define __glibc_objsize0(__o) __bos0 (__o) #define __glibc_objsize(__o) __bos (__o) /* Compile time conditions to choose between the regular, _chk and _chk_warn variants. These conditions should get evaluated to constant and optimized away. */ #define __glibc_safe_len_cond(__l,__s,__osz) ((__l) <= (__osz) / (__s)) #define __glibc_unsigned_or_positive(__l) ((__typeof (__l)) 0 < (__typeof (__l)) -1 || (__builtin_constant_p (__l) && (__l) > 0)) /* Length is known to be safe at compile time if the __L * __S <= __OBJSZ condition can be folded to a constant and if it is true. The -1 check is redundant because since it implies that __glibc_safe_len_cond is true. */ #define __glibc_safe_or_unknown_len(__l,__s,__osz) (__glibc_unsigned_or_positive (__l) && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz)) && __glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz)) /* Conversely, we know at compile time that the length is safe if the __L * __S <= __OBJSZ condition can be folded to a constant and if it is false. */ #define __glibc_unsafe_len(__l,__s,__osz) (__glibc_unsigned_or_positive (__l) && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz)) && !__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz)) /* Fortify function f. __f_alias, __f_chk and __f_chk_warn must be declared. */ #define __glibc_fortify(f,__l,__s,__osz,...) (__glibc_safe_or_unknown_len (__l, __s, __osz) ? __ ## f ## _alias (__VA_ARGS__) : (__glibc_unsafe_len (__l, __s, __osz) ? __ ## f ## _chk_warn (__VA_ARGS__, __osz) : __ ## f ## _chk (__VA_ARGS__, __osz))) /* Fortify function f, where object size argument passed to f is the number of elements and not total size. */ #define __glibc_fortify_n(f,__l,__s,__osz,...) (__glibc_safe_or_unknown_len (__l, __s, __osz) ? __ ## f ## _alias (__VA_ARGS__) : (__glibc_unsafe_len (__l, __s, __osz) ? __ ## f ## _chk_warn (__VA_ARGS__, (__osz) / (__s)) : __ ## f ## _chk (__VA_ARGS__, (__osz) / (__s)))) #define __warnattr(msg) __attribute__((__warning__ (msg))) #define __errordecl(name,msg) extern void name (void) __attribute__((__error__ (msg))) /* Support for flexible arrays. Headers that should use flexible arrays only if they're "real" (e.g. only if they won't affect sizeof()) should test #if __glibc_c99_flexarr_available. */ #define __flexarr [] #define __glibc_c99_flexarr_available 1 # 232 "../misc/sys/cdefs.h" /* __asm__ ("xyz") is used throughout the headers to rename functions at the assembly language level. This is wrapped by the __REDIRECT macro, in order to support compilers that can do this some other way. When compilers don't support asm-names at all, we have to do preprocessor tricks instead (which don't have exactly the right semantics, but it's the best we can do). Example: int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */ #define __REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) #define __REDIRECT_NTH(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROW #define __REDIRECT_NTHNL(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROWNL #define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname) #define __ASMNAME2(prefix,cname) __STRING (prefix) cname /* #elif __SOME_OTHER_COMPILER__ # define __REDIRECT(name, proto, alias) name proto; \ _Pragma("let " #name " = " #alias) */ /* GCC and clang have various useful declarations that can be made with the '__attribute__' syntax. All of the ways we use this do fine if they are omitted for compilers that don't understand it. */ /* At some point during the gcc 2.96 development the `malloc' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #define __attribute_malloc__ __attribute__ ((__malloc__)) /* Tell the compiler which arguments to an allocation function indicate the size of the allocation. */ #define __attribute_alloc_size__(params) __attribute__ ((__alloc_size__ params)) /* Tell the compiler which argument to an allocation function indicates the alignment of the allocation. */ #define __attribute_alloc_align__(param) __attribute__ ((__alloc_align__ param)) /* At some point during the gcc 2.96 development the `pure' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #define __attribute_pure__ __attribute__ ((__pure__)) /* This declaration tells the compiler that the value is constant. */ #define __attribute_const__ __attribute__ ((__const__)) #define __attribute_maybe_unused__ __attribute__ ((__unused__)) /* At some point during the gcc 3.1 development the `used' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #define __attribute_used__ __attribute__ ((__used__)) #define __attribute_noinline__ __attribute__ ((__noinline__)) /* Since version 3.2, gcc allows marking deprecated functions. */ #define __attribute_deprecated__ __attribute__ ((__deprecated__)) /* Since version 4.5, gcc also allows one to specify the message printed when a deprecated function is used. clang claims to be gcc 4.2, but may also support this feature. */ #define __attribute_deprecated_msg__(msg) __attribute__ ((__deprecated__ (msg))) /* At some point during the gcc 2.8 development the `format_arg' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. If several `format_arg' attributes are given for the same function, in gcc-3.0 and older, all but the last one are ignored. In newer gccs, all designated arguments are considered. */ #define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) /* At some point during the gcc 2.97 development the `strfmon' format attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #define __attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b))) /* The nonnull function attribute marks pointer parameters that must not be NULL. This has the name __nonnull in glibc, and __attribute_nonnull__ in files shared with Gnulib to avoid collision with a different __nonnull in DragonFlyBSD 5.9. */ #define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params)) #define __nonnull(params) __attribute_nonnull__ (params) /* The returns_nonnull function attribute marks the return type of the function as always being non-null. */ #define __returns_nonnull __attribute__ ((__returns_nonnull__)) /* If fortification mode, we warn about unused results of certain function calls which can lead to problems. */ #define __attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__)) #define __wur /* Forces a function to be always inlined. */ /* The Linux kernel defines __always_inline in stddef.h (283d7573), and it conflicts with this definition. Therefore undefine it first to allow either header to be included first. */ #undef __always_inline #define __always_inline __inline __attribute__ ((__always_inline__)) /* Associate error messages with the source location of the call site rather than with the source location inside the function. */ #define __attribute_artificial__ __attribute__ ((__artificial__)) /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__ or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions older than 4.3 may define these macros and still not guarantee GNU inlining semantics. clang++ identifies itself as gcc-4.2, but has support for GNU inlining semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and __GNUC_GNU_INLINE__ macro definitions. */ #define __extern_inline extern __inline #define __extern_always_inline extern __always_inline #define __fortify_function __extern_always_inline __attribute_artificial__ /* GCC 4.3 and above allow passing all anonymous arguments of an __extern_always_inline function to some other vararg function. */ #define __va_arg_pack() __builtin_va_arg_pack () #define __va_arg_pack_len() __builtin_va_arg_pack_len () /* It is possible to compile containing GCC extensions even if GCC is run in pedantic mode if the uses are carefully marked using the `__extension__' keyword. But this is not generally available before version 2.8. */ /* __restrict is known in EGCS 1.2 and above, and in clang. It works also in C++ mode (outside of arrays), but only when spelled as '__restrict', not 'restrict'. */ /* ISO C99 also allows to declare arrays as non-overlapping. The syntax is array_name[restrict] GCC 3.1 and clang support this. This syntax is not usable in C++ mode. */ #define __restrict_arr __restrict # 507 "../misc/sys/cdefs.h" #define __glibc_unlikely(cond) __builtin_expect ((cond), 0) #define __glibc_likely(cond) __builtin_expect ((cond), 1) # 526 "../misc/sys/cdefs.h" /* Describes a char array whose address can safely be passed as the first argument to strncpy and strncat, as the char array is not necessarily a NUL-terminated string. */ #define __attribute_nonstring__ __attribute__ ((__nonstring__)) /* Undefine (also defined in libc-symbols.h). */ #undef __attribute_copy__ /* Copies attributes from the declaration or type referenced by the argument. */ #define __attribute_copy__(arg) __attribute__ ((__copy__ (arg))) # 554 "../misc/sys/cdefs.h" /* Gnulib avoids including these, as they don't work on non-glibc or older glibc platforms. */ # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 559 "../misc/sys/cdefs.h" 2 # 1 "../sysdeps/ieee754/ldbl-opt/bits/long-double.h" 1 /* Properties of long double type. ldbl-opt version. Copyright (C) 2016-2021 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 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 . */ #define __LONG_DOUBLE_MATH_OPTIONAL 1 #define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0 # 560 "../misc/sys/cdefs.h" 2 # 613 "../misc/sys/cdefs.h" #define __LDBL_REDIR1(name,proto,alias) name proto #define __LDBL_REDIR(name,proto) name proto #define __LDBL_REDIR1_NTH(name,proto,alias) name proto __THROW #define __LDBL_REDIR_NTH(name,proto) name proto __THROW #define __LDBL_REDIR2_DECL(name) #define __LDBL_REDIR_DECL(name) #define __REDIRECT_LDBL(name,proto,alias) __REDIRECT (name, proto, alias) #define __REDIRECT_NTH_LDBL(name,proto,alias) __REDIRECT_NTH (name, proto, alias) /* __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is intended for use in preprocessor macros. Note: MESSAGE must be a _single_ string; concatenation of string literals is not supported. */ #define __glibc_macro_warning1(message) _Pragma (#message) #define __glibc_macro_warning(message) __glibc_macro_warning1 (GCC warning message) /* Generic selection (ISO C11) is a C-only feature, available in GCC since version 4.9. Previous versions do not provide generic selection, even though they might set __STDC_VERSION__ to 201112L, when in -std=c11 mode. Thus, we must check for !defined __GNUC__ when testing __STDC_VERSION__ for generic selection support. On the other hand, Clang also defines __GNUC__, so a clang-specific check is required to enable the use of generic selection. */ #define __HAVE_GENERIC_SELECTION 1 /* Designates a 1-based positional argument ref-index of pointer type that can be used to access size-index elements of the pointed-to array according to access mode, or at least one element when size-index is not provided: access (access-mode, [, ]) */ #define __attr_access(x) __attribute__ ((__access__ x)) /* For _FORTIFY_SOURCE == 3 we use __builtin_dynamic_object_size, which may use the access attribute to get object sizes from function definition arguments, so we can't use them on functions we fortify. Drop the object size hints for such functions. */ #define __fortified_attr_access(a,o,s) __attr_access ((a, o, s)) #define __attr_access_none(argno) __attribute__ ((__access__ (__none__, argno))) /* Designates dealloc as a function to call to deallocate objects allocated by the declared function. */ #define __attr_dealloc(dealloc,argno) __attribute__ ((__malloc__ (dealloc, argno))) #define __attr_dealloc_free __attr_dealloc (__builtin_free, 1) /* Specify that a function such as setjmp or vfork may return twice. */ #define __attribute_returns_twice__ __attribute__ ((__returns_twice__)) # 11 "../include/sys/cdefs.h" 2 /* The compiler will optimize based on the knowledge the parameter is not NULL. This will omit tests. A robust implementation cannot allow this so when compiling glibc itself we ignore this attribute. */ #undef __nonnull #define __nonnull(params) extern void __chk_fail (void) __attribute__ ((__noreturn__)); libc_hidden_proto (__chk_fail) rtld_hidden_proto (__chk_fail) /* If we are using redirects internally to support long double, we need to tweak some macros to ensure the PLT bypass tricks continue to work in libc. */ # 42 "../include/sys/cdefs.h" # 489 "../include/features.h" 2 /* If we don't have __REDIRECT, prototypes will be missing if __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */ /* Decide whether we can define 'extern inline' functions in headers. */ #define __USE_EXTERN_INLINES 1 /* This is here only because every header file already includes this one. Get the definitions of all the appropriate `__stub_FUNCTION' symbols. contains `#define __stub_FUNCTION' when FUNCTION is a stub that will always return failure (and set errno to ENOSYS). */ # 1 "../include/gnu/stubs.h" 1 /* This is a placeholder used only while compiling libc. The installed gnu/stubs.h file is created by make install. */ # 513 "../include/features.h" 2 # 26 "../stdlib/errno.h" 2 /* The system-specific definitions of the E* constants, as macros. */ # 1 "../sysdeps/unix/sysv/linux/bits/errno.h" 1 /* Error constants. Linux specific version. Copyright (C) 1996-2021 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 . */ #define _BITS_ERRNO_H 1 # 1 "/usr/include/linux/errno.h" 1 3 4 # 1 "/usr/include/asm/errno.h" 1 3 4 # 1 "/usr/include/asm-generic/errno.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define _ASM_GENERIC_ERRNO_H # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define _ASM_GENERIC_ERRNO_BASE_H #define EPERM 1 #define ENOENT 2 #define ESRCH 3 #define EINTR 4 #define EIO 5 #define ENXIO 6 #define E2BIG 7 #define ENOEXEC 8 #define EBADF 9 #define ECHILD 10 #define EAGAIN 11 #define ENOMEM 12 #define EACCES 13 #define EFAULT 14 #define ENOTBLK 15 #define EBUSY 16 #define EEXIST 17 #define EXDEV 18 #define ENODEV 19 #define ENOTDIR 20 #define EISDIR 21 #define EINVAL 22 #define ENFILE 23 #define EMFILE 24 #define ENOTTY 25 #define ETXTBSY 26 #define EFBIG 27 #define ENOSPC 28 #define ESPIPE 29 #define EROFS 30 #define EMLINK 31 #define EPIPE 32 #define EDOM 33 #define ERANGE 34 # 6 "/usr/include/asm-generic/errno.h" 2 3 4 #define EDEADLK 35 #define ENAMETOOLONG 36 #define ENOLCK 37 /* * This error code is special: arch syscall entry code will return * -ENOSYS if users try to call a syscall that doesn't exist. To keep * failures of syscalls that really do exist distinguishable from * failures due to attempts to use a nonexistent syscall, syscall * implementations should refrain from returning -ENOSYS. */ #define ENOSYS 38 #define ENOTEMPTY 39 #define ELOOP 40 #define EWOULDBLOCK EAGAIN #define ENOMSG 42 #define EIDRM 43 #define ECHRNG 44 #define EL2NSYNC 45 #define EL3HLT 46 #define EL3RST 47 #define ELNRNG 48 #define EUNATCH 49 #define ENOCSI 50 #define EL2HLT 51 #define EBADE 52 #define EBADR 53 #define EXFULL 54 #define ENOANO 55 #define EBADRQC 56 #define EBADSLT 57 #define EDEADLOCK EDEADLK #define EBFONT 59 #define ENOSTR 60 #define ENODATA 61 #define ETIME 62 #define ENOSR 63 #define ENONET 64 #define ENOPKG 65 #define EREMOTE 66 #define ENOLINK 67 #define EADV 68 #define ESRMNT 69 #define ECOMM 70 #define EPROTO 71 #define EMULTIHOP 72 #define EDOTDOT 73 #define EBADMSG 74 #define EOVERFLOW 75 #define ENOTUNIQ 76 #define EBADFD 77 #define EREMCHG 78 #define ELIBACC 79 #define ELIBBAD 80 #define ELIBSCN 81 #define ELIBMAX 82 #define ELIBEXEC 83 #define EILSEQ 84 #define ERESTART 85 #define ESTRPIPE 86 #define EUSERS 87 #define ENOTSOCK 88 #define EDESTADDRREQ 89 #define EMSGSIZE 90 #define EPROTOTYPE 91 #define ENOPROTOOPT 92 #define EPROTONOSUPPORT 93 #define ESOCKTNOSUPPORT 94 #define EOPNOTSUPP 95 #define EPFNOSUPPORT 96 #define EAFNOSUPPORT 97 #define EADDRINUSE 98 #define EADDRNOTAVAIL 99 #define ENETDOWN 100 #define ENETUNREACH 101 #define ENETRESET 102 #define ECONNABORTED 103 #define ECONNRESET 104 #define ENOBUFS 105 #define EISCONN 106 #define ENOTCONN 107 #define ESHUTDOWN 108 #define ETOOMANYREFS 109 #define ETIMEDOUT 110 #define ECONNREFUSED 111 #define EHOSTDOWN 112 #define EHOSTUNREACH 113 #define EALREADY 114 #define EINPROGRESS 115 #define ESTALE 116 #define EUCLEAN 117 #define ENOTNAM 118 #define ENAVAIL 119 #define EISNAM 120 #define EREMOTEIO 121 #define EDQUOT 122 #define ENOMEDIUM 123 #define EMEDIUMTYPE 124 #define ECANCELED 125 #define ENOKEY 126 #define EKEYEXPIRED 127 #define EKEYREVOKED 128 #define EKEYREJECTED 129 /* for robust mutexes */ #define EOWNERDEAD 130 #define ENOTRECOVERABLE 131 #define ERFKILL 132 #define EHWPOISON 133 # 2 "/usr/include/asm/errno.h" 2 3 4 # 2 "/usr/include/linux/errno.h" 2 3 4 # 27 "../sysdeps/unix/sysv/linux/bits/errno.h" 2 /* Older Linux headers do not define these constants. */ #define ENOTSUP EOPNOTSUPP # 29 "../stdlib/errno.h" 2 /* When included from assembly language, this header only provides the E* constants. */ __BEGIN_DECLS /* The error code set by various library functions. */ extern int *__errno_location (void) __THROW __attribute_const__; #define errno (*__errno_location ()) /* The full and simple forms of the name with which the program was invoked. These variables are set up automatically at startup based on the value of argv[0]. */ extern char *program_invocation_name; extern char *program_invocation_short_name; # 1 "../bits/types/error_t.h" 1 /* Define error_t. Copyright (C) 1991-2021 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 . */ #define __error_t_defined 1 typedef int error_t; # 49 "../stdlib/errno.h" 2 __END_DECLS # 3 "../include/errno.h" 2 #define RTLD_PRIVATE_ERRNO 0 # 24 "../include/errno.h" #undef errno #define errno __libc_errno extern __thread int errno attribute_tls_model_ie; #define __set_errno(val) (errno = (val)) extern int *__errno_location (void) __THROW __attribute_const__ ; libc_hidden_proto (__errno_location) # 19 "../sysdeps/s390/s390-64/__longjmp.c" 2 # 1 "../sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h" 1 /* Assembler macros for 64 bit S/390. Copyright (C) 2001-2021 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 . */ #define _LINUX_S390_SYSDEP_H # 1 "../sysdeps/s390/s390-64/sysdep.h" 1 /* Assembler macros for 64 bit S/390. Copyright (C) 2001-2021 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 . */ # 1 "../sysdeps/generic/sysdep.h" 1 /* Generic asm macros used on many machines. Copyright (C) 1991-2021 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 . */ /* Define a macro we can use to construct the asm name for a C symbol. */ #define C_LABEL(name) name ##: # 37 "../sysdeps/generic/sysdep.h" /* Makros to generate eh_frame unwind information. */ # 60 "../sysdeps/generic/sysdep.h" #define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name) #define CFI_STRINGIFY2(Name) #Name #define CFI_STARTPROC ".cfi_startproc" #define CFI_ENDPROC ".cfi_endproc" #define CFI_DEF_CFA(reg,off) ".cfi_def_cfa " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off) #define CFI_DEF_CFA_REGISTER(reg) ".cfi_def_cfa_register " CFI_STRINGIFY(reg) #define CFI_DEF_CFA_OFFSET(off) ".cfi_def_cfa_offset " CFI_STRINGIFY(off) #define CFI_ADJUST_CFA_OFFSET(off) ".cfi_adjust_cfa_offset " CFI_STRINGIFY(off) #define CFI_OFFSET(reg,off) ".cfi_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off) #define CFI_REL_OFFSET(reg,off) ".cfi_rel_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off) #define CFI_REGISTER(r1,r2) ".cfi_register " CFI_STRINGIFY(r1) "," CFI_STRINGIFY(r2) #define CFI_RETURN_COLUMN(reg) ".cfi_return_column " CFI_STRINGIFY(reg) #define CFI_RESTORE(reg) ".cfi_restore " CFI_STRINGIFY(reg) #define CFI_UNDEFINED(reg) ".cfi_undefined " CFI_STRINGIFY(reg) #define CFI_REMEMBER_STATE ".cfi_remember_state" #define CFI_RESTORE_STATE ".cfi_restore_state" #define CFI_WINDOW_SAVE ".cfi_window_save" #define CFI_PERSONALITY(enc,exp) ".cfi_personality " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp) #define CFI_LSDA(enc,exp) ".cfi_lsda " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp) # 1 "../sysdeps/generic/dwarf2.h" 1 /* Declarations and definitions of codes relating to the DWARF2 symbolic debugging information format. Copyright (C) 1992-2021 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 . */ #define _DWARF2_H 1 /* This file is derived from the DWARF specification (a public document) Revision 2.0.0 (July 27, 1993) developed by the UNIX International Programming Languages Special Interest Group (UI/PLSIG) and distributed by UNIX International. Copies of this specification are available from UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054. */ /* This file is shared between GCC and GDB, and should not contain prototypes. */ /* Tag names and codes. */ enum dwarf_tag { DW_TAG_padding = 0x00, DW_TAG_array_type = 0x01, DW_TAG_class_type = 0x02, DW_TAG_entry_point = 0x03, DW_TAG_enumeration_type = 0x04, DW_TAG_formal_parameter = 0x05, DW_TAG_imported_declaration = 0x08, DW_TAG_label = 0x0a, DW_TAG_lexical_block = 0x0b, DW_TAG_member = 0x0d, DW_TAG_pointer_type = 0x0f, DW_TAG_reference_type = 0x10, DW_TAG_compile_unit = 0x11, DW_TAG_string_type = 0x12, DW_TAG_structure_type = 0x13, DW_TAG_subroutine_type = 0x15, DW_TAG_typedef = 0x16, DW_TAG_union_type = 0x17, DW_TAG_unspecified_parameters = 0x18, DW_TAG_variant = 0x19, DW_TAG_common_block = 0x1a, DW_TAG_common_inclusion = 0x1b, DW_TAG_inheritance = 0x1c, DW_TAG_inlined_subroutine = 0x1d, DW_TAG_module = 0x1e, DW_TAG_ptr_to_member_type = 0x1f, DW_TAG_set_type = 0x20, DW_TAG_subrange_type = 0x21, DW_TAG_with_stmt = 0x22, DW_TAG_access_declaration = 0x23, DW_TAG_base_type = 0x24, DW_TAG_catch_block = 0x25, DW_TAG_const_type = 0x26, DW_TAG_constant = 0x27, DW_TAG_enumerator = 0x28, DW_TAG_file_type = 0x29, DW_TAG_friend = 0x2a, DW_TAG_namelist = 0x2b, DW_TAG_namelist_item = 0x2c, DW_TAG_packed_type = 0x2d, DW_TAG_subprogram = 0x2e, DW_TAG_template_type_param = 0x2f, DW_TAG_template_value_param = 0x30, DW_TAG_thrown_type = 0x31, DW_TAG_try_block = 0x32, DW_TAG_variant_part = 0x33, DW_TAG_variable = 0x34, DW_TAG_volatile_type = 0x35, /* SGI/MIPS Extensions */ DW_TAG_MIPS_loop = 0x4081, /* GNU extensions */ DW_TAG_format_label = 0x4101, /* for FORTRAN 77 and Fortran 90 */ DW_TAG_function_template = 0x4102, /* for C++ */ DW_TAG_class_template = 0x4103, /* for C++ */ DW_TAG_GNU_BINCL = 0x4104, DW_TAG_GNU_EINCL = 0x4105 }; #define DW_TAG_lo_user 0x4080 #define DW_TAG_hi_user 0xffff /* flag that tells whether entry has a child or not */ #define DW_children_no 0 #define DW_children_yes 1 /* Form names and codes. */ enum dwarf_form { DW_FORM_addr = 0x01, DW_FORM_block2 = 0x03, DW_FORM_block4 = 0x04, DW_FORM_data2 = 0x05, DW_FORM_data4 = 0x06, DW_FORM_data8 = 0x07, DW_FORM_string = 0x08, DW_FORM_block = 0x09, DW_FORM_block1 = 0x0a, DW_FORM_data1 = 0x0b, DW_FORM_flag = 0x0c, DW_FORM_sdata = 0x0d, DW_FORM_strp = 0x0e, DW_FORM_udata = 0x0f, DW_FORM_ref_addr = 0x10, DW_FORM_ref1 = 0x11, DW_FORM_ref2 = 0x12, DW_FORM_ref4 = 0x13, DW_FORM_ref8 = 0x14, DW_FORM_ref_udata = 0x15, DW_FORM_indirect = 0x16 }; /* Attribute names and codes. */ enum dwarf_attribute { DW_AT_sibling = 0x01, DW_AT_location = 0x02, DW_AT_name = 0x03, DW_AT_ordering = 0x09, DW_AT_subscr_data = 0x0a, DW_AT_byte_size = 0x0b, DW_AT_bit_offset = 0x0c, DW_AT_bit_size = 0x0d, DW_AT_element_list = 0x0f, DW_AT_stmt_list = 0x10, DW_AT_low_pc = 0x11, DW_AT_high_pc = 0x12, DW_AT_language = 0x13, DW_AT_member = 0x14, DW_AT_discr = 0x15, DW_AT_discr_value = 0x16, DW_AT_visibility = 0x17, DW_AT_import = 0x18, DW_AT_string_length = 0x19, DW_AT_common_reference = 0x1a, DW_AT_comp_dir = 0x1b, DW_AT_const_value = 0x1c, DW_AT_containing_type = 0x1d, DW_AT_default_value = 0x1e, DW_AT_inline = 0x20, DW_AT_is_optional = 0x21, DW_AT_lower_bound = 0x22, DW_AT_producer = 0x25, DW_AT_prototyped = 0x27, DW_AT_return_addr = 0x2a, DW_AT_start_scope = 0x2c, DW_AT_stride_size = 0x2e, DW_AT_upper_bound = 0x2f, DW_AT_abstract_origin = 0x31, DW_AT_accessibility = 0x32, DW_AT_address_class = 0x33, DW_AT_artificial = 0x34, DW_AT_base_types = 0x35, DW_AT_calling_convention = 0x36, DW_AT_count = 0x37, DW_AT_data_member_location = 0x38, DW_AT_decl_column = 0x39, DW_AT_decl_file = 0x3a, DW_AT_decl_line = 0x3b, DW_AT_declaration = 0x3c, DW_AT_discr_list = 0x3d, DW_AT_encoding = 0x3e, DW_AT_external = 0x3f, DW_AT_frame_base = 0x40, DW_AT_friend = 0x41, DW_AT_identifier_case = 0x42, DW_AT_macro_info = 0x43, DW_AT_namelist_items = 0x44, DW_AT_priority = 0x45, DW_AT_segment = 0x46, DW_AT_specification = 0x47, DW_AT_static_link = 0x48, DW_AT_type = 0x49, DW_AT_use_location = 0x4a, DW_AT_variable_parameter = 0x4b, DW_AT_virtuality = 0x4c, DW_AT_vtable_elem_location = 0x4d, /* SGI/MIPS Extensions */ DW_AT_MIPS_fde = 0x2001, DW_AT_MIPS_loop_begin = 0x2002, DW_AT_MIPS_tail_loop_begin = 0x2003, DW_AT_MIPS_epilog_begin = 0x2004, DW_AT_MIPS_loop_unroll_factor = 0x2005, DW_AT_MIPS_software_pipeline_depth = 0x2006, DW_AT_MIPS_linkage_name = 0x2007, DW_AT_MIPS_stride = 0x2008, DW_AT_MIPS_abstract_name = 0x2009, DW_AT_MIPS_clone_origin = 0x200a, DW_AT_MIPS_has_inlines = 0x200b, /* GNU extensions. */ DW_AT_sf_names = 0x2101, DW_AT_src_info = 0x2102, DW_AT_mac_info = 0x2103, DW_AT_src_coords = 0x2104, DW_AT_body_begin = 0x2105, DW_AT_body_end = 0x2106 }; #define DW_AT_lo_user 0x2000 #define DW_AT_hi_user 0x3ff0 /* Location atom names and codes. */ enum dwarf_location_atom { DW_OP_addr = 0x03, DW_OP_deref = 0x06, DW_OP_const1u = 0x08, DW_OP_const1s = 0x09, DW_OP_const2u = 0x0a, DW_OP_const2s = 0x0b, DW_OP_const4u = 0x0c, DW_OP_const4s = 0x0d, DW_OP_const8u = 0x0e, DW_OP_const8s = 0x0f, DW_OP_constu = 0x10, DW_OP_consts = 0x11, DW_OP_dup = 0x12, DW_OP_drop = 0x13, DW_OP_over = 0x14, DW_OP_pick = 0x15, DW_OP_swap = 0x16, DW_OP_rot = 0x17, DW_OP_xderef = 0x18, DW_OP_abs = 0x19, DW_OP_and = 0x1a, DW_OP_div = 0x1b, DW_OP_minus = 0x1c, DW_OP_mod = 0x1d, DW_OP_mul = 0x1e, DW_OP_neg = 0x1f, DW_OP_not = 0x20, DW_OP_or = 0x21, DW_OP_plus = 0x22, DW_OP_plus_uconst = 0x23, DW_OP_shl = 0x24, DW_OP_shr = 0x25, DW_OP_shra = 0x26, DW_OP_xor = 0x27, DW_OP_bra = 0x28, DW_OP_eq = 0x29, DW_OP_ge = 0x2a, DW_OP_gt = 0x2b, DW_OP_le = 0x2c, DW_OP_lt = 0x2d, DW_OP_ne = 0x2e, DW_OP_skip = 0x2f, DW_OP_lit0 = 0x30, DW_OP_lit1 = 0x31, DW_OP_lit2 = 0x32, DW_OP_lit3 = 0x33, DW_OP_lit4 = 0x34, DW_OP_lit5 = 0x35, DW_OP_lit6 = 0x36, DW_OP_lit7 = 0x37, DW_OP_lit8 = 0x38, DW_OP_lit9 = 0x39, DW_OP_lit10 = 0x3a, DW_OP_lit11 = 0x3b, DW_OP_lit12 = 0x3c, DW_OP_lit13 = 0x3d, DW_OP_lit14 = 0x3e, DW_OP_lit15 = 0x3f, DW_OP_lit16 = 0x40, DW_OP_lit17 = 0x41, DW_OP_lit18 = 0x42, DW_OP_lit19 = 0x43, DW_OP_lit20 = 0x44, DW_OP_lit21 = 0x45, DW_OP_lit22 = 0x46, DW_OP_lit23 = 0x47, DW_OP_lit24 = 0x48, DW_OP_lit25 = 0x49, DW_OP_lit26 = 0x4a, DW_OP_lit27 = 0x4b, DW_OP_lit28 = 0x4c, DW_OP_lit29 = 0x4d, DW_OP_lit30 = 0x4e, DW_OP_lit31 = 0x4f, DW_OP_reg0 = 0x50, DW_OP_reg1 = 0x51, DW_OP_reg2 = 0x52, DW_OP_reg3 = 0x53, DW_OP_reg4 = 0x54, DW_OP_reg5 = 0x55, DW_OP_reg6 = 0x56, DW_OP_reg7 = 0x57, DW_OP_reg8 = 0x58, DW_OP_reg9 = 0x59, DW_OP_reg10 = 0x5a, DW_OP_reg11 = 0x5b, DW_OP_reg12 = 0x5c, DW_OP_reg13 = 0x5d, DW_OP_reg14 = 0x5e, DW_OP_reg15 = 0x5f, DW_OP_reg16 = 0x60, DW_OP_reg17 = 0x61, DW_OP_reg18 = 0x62, DW_OP_reg19 = 0x63, DW_OP_reg20 = 0x64, DW_OP_reg21 = 0x65, DW_OP_reg22 = 0x66, DW_OP_reg23 = 0x67, DW_OP_reg24 = 0x68, DW_OP_reg25 = 0x69, DW_OP_reg26 = 0x6a, DW_OP_reg27 = 0x6b, DW_OP_reg28 = 0x6c, DW_OP_reg29 = 0x6d, DW_OP_reg30 = 0x6e, DW_OP_reg31 = 0x6f, DW_OP_breg0 = 0x70, DW_OP_breg1 = 0x71, DW_OP_breg2 = 0x72, DW_OP_breg3 = 0x73, DW_OP_breg4 = 0x74, DW_OP_breg5 = 0x75, DW_OP_breg6 = 0x76, DW_OP_breg7 = 0x77, DW_OP_breg8 = 0x78, DW_OP_breg9 = 0x79, DW_OP_breg10 = 0x7a, DW_OP_breg11 = 0x7b, DW_OP_breg12 = 0x7c, DW_OP_breg13 = 0x7d, DW_OP_breg14 = 0x7e, DW_OP_breg15 = 0x7f, DW_OP_breg16 = 0x80, DW_OP_breg17 = 0x81, DW_OP_breg18 = 0x82, DW_OP_breg19 = 0x83, DW_OP_breg20 = 0x84, DW_OP_breg21 = 0x85, DW_OP_breg22 = 0x86, DW_OP_breg23 = 0x87, DW_OP_breg24 = 0x88, DW_OP_breg25 = 0x89, DW_OP_breg26 = 0x8a, DW_OP_breg27 = 0x8b, DW_OP_breg28 = 0x8c, DW_OP_breg29 = 0x8d, DW_OP_breg30 = 0x8e, DW_OP_breg31 = 0x8f, DW_OP_regx = 0x90, DW_OP_fbreg = 0x91, DW_OP_bregx = 0x92, DW_OP_piece = 0x93, DW_OP_deref_size = 0x94, DW_OP_xderef_size = 0x95, DW_OP_nop = 0x96 }; #define DW_OP_lo_user 0x80 #define DW_OP_hi_user 0xff /* Type encodings. */ enum dwarf_type { DW_ATE_void = 0x0, DW_ATE_address = 0x1, DW_ATE_boolean = 0x2, DW_ATE_complex_float = 0x3, DW_ATE_float = 0x4, DW_ATE_signed = 0x5, DW_ATE_signed_char = 0x6, DW_ATE_unsigned = 0x7, DW_ATE_unsigned_char = 0x8 }; #define DW_ATE_lo_user 0x80 #define DW_ATE_hi_user 0xff /* Array ordering names and codes. */ enum dwarf_array_dim_ordering { DW_ORD_row_major = 0, DW_ORD_col_major = 1 }; /* access attribute */ enum dwarf_access_attribute { DW_ACCESS_public = 1, DW_ACCESS_protected = 2, DW_ACCESS_private = 3 }; /* visibility */ enum dwarf_visibility_attribute { DW_VIS_local = 1, DW_VIS_exported = 2, DW_VIS_qualified = 3 }; /* virtuality */ enum dwarf_virtuality_attribute { DW_VIRTUALITY_none = 0, DW_VIRTUALITY_virtual = 1, DW_VIRTUALITY_pure_virtual = 2 }; /* case sensitivity */ enum dwarf_id_case { DW_ID_case_sensitive = 0, DW_ID_up_case = 1, DW_ID_down_case = 2, DW_ID_case_insensitive = 3 }; /* calling convention */ enum dwarf_calling_convention { DW_CC_normal = 0x1, DW_CC_program = 0x2, DW_CC_nocall = 0x3 }; #define DW_CC_lo_user 0x40 #define DW_CC_hi_user 0xff /* inline attribute */ enum dwarf_inline_attribute { DW_INL_not_inlined = 0, DW_INL_inlined = 1, DW_INL_declared_not_inlined = 2, DW_INL_declared_inlined = 3 }; /* discriminant lists */ enum dwarf_discrim_list { DW_DSC_label = 0, DW_DSC_range = 1 }; /* line number opcodes */ enum dwarf_line_number_ops { DW_LNS_extended_op = 0, DW_LNS_copy = 1, DW_LNS_advance_pc = 2, DW_LNS_advance_line = 3, DW_LNS_set_file = 4, DW_LNS_set_column = 5, DW_LNS_negate_stmt = 6, DW_LNS_set_basic_block = 7, DW_LNS_const_add_pc = 8, DW_LNS_fixed_advance_pc = 9 }; /* line number extended opcodes */ enum dwarf_line_number_x_ops { DW_LNE_end_sequence = 1, DW_LNE_set_address = 2, DW_LNE_define_file = 3 }; /* call frame information */ enum dwarf_call_frame_info { DW_CFA_advance_loc = 0x40, DW_CFA_offset = 0x80, DW_CFA_restore = 0xc0, DW_CFA_nop = 0x00, DW_CFA_set_loc = 0x01, DW_CFA_advance_loc1 = 0x02, DW_CFA_advance_loc2 = 0x03, DW_CFA_advance_loc4 = 0x04, DW_CFA_offset_extended = 0x05, DW_CFA_restore_extended = 0x06, DW_CFA_undefined = 0x07, DW_CFA_same_value = 0x08, DW_CFA_register = 0x09, DW_CFA_remember_state = 0x0a, DW_CFA_restore_state = 0x0b, DW_CFA_def_cfa = 0x0c, DW_CFA_def_cfa_register = 0x0d, DW_CFA_def_cfa_offset = 0x0e, DW_CFA_def_cfa_expression = 0x0f, DW_CFA_expression = 0x10, /* Dwarf 2.1 */ DW_CFA_offset_extended_sf = 0x11, DW_CFA_def_cfa_sf = 0x12, DW_CFA_def_cfa_offset_sf = 0x13, /* SGI/MIPS specific */ DW_CFA_MIPS_advance_loc8 = 0x1d, /* GNU extensions */ DW_CFA_GNU_window_save = 0x2d, DW_CFA_GNU_args_size = 0x2e, DW_CFA_GNU_negative_offset_extended = 0x2f }; #define DW_CIE_ID 0xffffffff #define DW_CIE_VERSION 1 #define DW_CFA_extended 0 #define DW_CFA_low_user 0x1c #define DW_CFA_high_user 0x3f #define DW_CHILDREN_no 0x00 #define DW_CHILDREN_yes 0x01 #define DW_ADDR_none 0 /* Source language names and codes. */ enum dwarf_source_language { DW_LANG_C89 = 0x0001, DW_LANG_C = 0x0002, DW_LANG_Ada83 = 0x0003, DW_LANG_C_plus_plus = 0x0004, DW_LANG_Cobol74 = 0x0005, DW_LANG_Cobol85 = 0x0006, DW_LANG_Fortran77 = 0x0007, DW_LANG_Fortran90 = 0x0008, DW_LANG_Pascal83 = 0x0009, DW_LANG_Modula2 = 0x000a, DW_LANG_Java = 0x000b, DW_LANG_Mips_Assembler = 0x8001 }; #define DW_LANG_lo_user 0x8000 #define DW_LANG_hi_user 0xffff /* Names and codes for macro information. */ enum dwarf_macinfo_record_type { DW_MACINFO_define = 1, DW_MACINFO_undef = 2, DW_MACINFO_start_file = 3, DW_MACINFO_end_file = 4, DW_MACINFO_vendor_ext = 255 }; /* @@@ For use with GNU frame unwind information. */ #define DW_EH_PE_absptr 0x00 #define DW_EH_PE_omit 0xff #define DW_EH_PE_uleb128 0x01 #define DW_EH_PE_udata2 0x02 #define DW_EH_PE_udata4 0x03 #define DW_EH_PE_udata8 0x04 #define DW_EH_PE_sleb128 0x09 #define DW_EH_PE_sdata2 0x0A #define DW_EH_PE_sdata4 0x0B #define DW_EH_PE_sdata8 0x0C #define DW_EH_PE_signed 0x08 #define DW_EH_PE_pcrel 0x10 #define DW_EH_PE_textrel 0x20 #define DW_EH_PE_datarel 0x30 #define DW_EH_PE_funcrel 0x40 #define DW_EH_PE_aligned 0x50 #define DW_EH_PE_indirect 0x80 # 98 "../sysdeps/generic/sysdep.h" 2 # 20 "../sysdeps/s390/s390-64/sysdep.h" 2 # 23 "../sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h" 2 # 1 "../sysdeps/unix/sysdep.h" 1 /* Copyright (C) 1991-2021 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 . */ # 1 "../sysdeps/generic/sysdep.h" 1 /* Generic asm macros used on many machines. Copyright (C) 1991-2021 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 . */ # 37 "../sysdeps/generic/sysdep.h" /* Makros to generate eh_frame unwind information. */ # 60 "../sysdeps/generic/sysdep.h" #define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name) #define CFI_STRINGIFY2(Name) #Name #define CFI_STARTPROC ".cfi_startproc" #define CFI_ENDPROC ".cfi_endproc" #define CFI_DEF_CFA(reg,off) ".cfi_def_cfa " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off) #define CFI_DEF_CFA_REGISTER(reg) ".cfi_def_cfa_register " CFI_STRINGIFY(reg) #define CFI_DEF_CFA_OFFSET(off) ".cfi_def_cfa_offset " CFI_STRINGIFY(off) #define CFI_ADJUST_CFA_OFFSET(off) ".cfi_adjust_cfa_offset " CFI_STRINGIFY(off) #define CFI_OFFSET(reg,off) ".cfi_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off) #define CFI_REL_OFFSET(reg,off) ".cfi_rel_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off) #define CFI_REGISTER(r1,r2) ".cfi_register " CFI_STRINGIFY(r1) "," CFI_STRINGIFY(r2) #define CFI_RETURN_COLUMN(reg) ".cfi_return_column " CFI_STRINGIFY(reg) #define CFI_RESTORE(reg) ".cfi_restore " CFI_STRINGIFY(reg) #define CFI_UNDEFINED(reg) ".cfi_undefined " CFI_STRINGIFY(reg) #define CFI_REMEMBER_STATE ".cfi_remember_state" #define CFI_RESTORE_STATE ".cfi_restore_state" #define CFI_WINDOW_SAVE ".cfi_window_save" #define CFI_PERSONALITY(enc,exp) ".cfi_personality " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp) #define CFI_LSDA(enc,exp) ".cfi_lsda " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp) # 19 "../sysdeps/unix/sysdep.h" 2 # 1 "../sysdeps/unix/sysv/linux/single-thread.h" 1 /* Single thread optimization, Linux version. Copyright (C) 2019-2021 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 . */ #define _SINGLE_THREAD_H /* The default way to check if the process is single thread is by using the pthread_t 'multiple_threads' field. However, for some architectures it is faster to either use an extra field on TCB or global variables (the TCB field is also used on x86 for some single-thread atomic optimizations). The ABI might define SINGLE_THREAD_BY_GLOBAL to enable the single thread check to use global variables instead of the pthread_t field. */ extern int __libc_multiple_threads; libc_hidden_proto (__libc_multiple_threads) #define SINGLE_THREAD_P (THREAD_GETMEM (THREAD_SELF, header.multiple_threads) == 0) #define RTLD_SINGLE_THREAD_P SINGLE_THREAD_P # 20 "../sysdeps/unix/sysdep.h" 2 # 1 "../sysdeps/unix/sysv/linux/include/sys/syscall.h" 1 /* Wrapper header for . Linux version. Copyright (C) 2020-2021 Free Software Foundation, Inc. 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 . */ /* Use the built-in system call list, not , which may not list all the system call numbers we need. */ #define _SYSCALL_H # 1 "../sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h" 1 /* AUTOGENERATED by update-syscall-lists.py. */ #define __NR__sysctl 149 #define __NR_accept4 364 #define __NR_access 33 #define __NR_acct 51 #define __NR_add_key 278 #define __NR_adjtimex 124 #define __NR_afs_syscall 137 #define __NR_alarm 27 #define __NR_bdflush 134 #define __NR_bind 361 #define __NR_bpf 351 #define __NR_brk 45 #define __NR_capget 184 #define __NR_capset 185 #define __NR_chdir 12 #define __NR_chmod 15 #define __NR_chown 212 #define __NR_chroot 61 #define __NR_clock_adjtime 337 #define __NR_clock_getres 261 #define __NR_clock_gettime 260 #define __NR_clock_nanosleep 262 #define __NR_clock_settime 259 #define __NR_clone 120 #define __NR_clone3 435 #define __NR_close 6 #define __NR_close_range 436 #define __NR_connect 362 #define __NR_copy_file_range 375 #define __NR_creat 8 #define __NR_create_module 127 #define __NR_delete_module 129 #define __NR_dup 41 #define __NR_dup2 63 #define __NR_dup3 326 #define __NR_epoll_create 249 #define __NR_epoll_create1 327 #define __NR_epoll_ctl 250 #define __NR_epoll_pwait 312 #define __NR_epoll_pwait2 441 #define __NR_epoll_wait 251 #define __NR_eventfd 318 #define __NR_eventfd2 323 #define __NR_execve 11 #define __NR_execveat 354 #define __NR_exit 1 #define __NR_exit_group 248 #define __NR_faccessat 300 #define __NR_faccessat2 439 #define __NR_fadvise64 253 #define __NR_fallocate 314 #define __NR_fanotify_init 332 #define __NR_fanotify_mark 333 #define __NR_fchdir 133 #define __NR_fchmod 94 #define __NR_fchmodat 299 #define __NR_fchown 207 #define __NR_fchownat 291 #define __NR_fcntl 55 #define __NR_fdatasync 148 #define __NR_fgetxattr 229 #define __NR_finit_module 344 #define __NR_flistxattr 232 #define __NR_flock 143 #define __NR_fork 2 #define __NR_fremovexattr 235 #define __NR_fsconfig 431 #define __NR_fsetxattr 226 #define __NR_fsmount 432 #define __NR_fsopen 430 #define __NR_fspick 433 #define __NR_fstat 108 #define __NR_fstatfs 100 #define __NR_fstatfs64 266 #define __NR_fsync 118 #define __NR_ftruncate 93 #define __NR_futex 238 #define __NR_futimesat 292 #define __NR_get_kernel_syms 130 #define __NR_get_mempolicy 269 #define __NR_get_robust_list 305 #define __NR_getcpu 311 #define __NR_getcwd 183 #define __NR_getdents 141 #define __NR_getdents64 220 #define __NR_getegid 202 #define __NR_geteuid 201 #define __NR_getgid 200 #define __NR_getgroups 205 #define __NR_getitimer 105 #define __NR_getpeername 368 #define __NR_getpgid 132 #define __NR_getpgrp 65 #define __NR_getpid 20 #define __NR_getpmsg 188 #define __NR_getppid 64 #define __NR_getpriority 96 #define __NR_getrandom 349 #define __NR_getresgid 211 #define __NR_getresuid 209 #define __NR_getrlimit 191 #define __NR_getrusage 77 #define __NR_getsid 147 #define __NR_getsockname 367 #define __NR_getsockopt 365 #define __NR_gettid 236 #define __NR_gettimeofday 78 #define __NR_getuid 199 #define __NR_getxattr 227 #define __NR_idle 112 #define __NR_init_module 128 #define __NR_inotify_add_watch 285 #define __NR_inotify_init 284 #define __NR_inotify_init1 324 #define __NR_inotify_rm_watch 286 #define __NR_io_cancel 247 #define __NR_io_destroy 244 #define __NR_io_getevents 245 #define __NR_io_pgetevents 382 #define __NR_io_setup 243 #define __NR_io_submit 246 #define __NR_io_uring_enter 426 #define __NR_io_uring_register 427 #define __NR_io_uring_setup 425 #define __NR_ioctl 54 #define __NR_ioprio_get 283 #define __NR_ioprio_set 282 #define __NR_ipc 117 #define __NR_kcmp 343 #define __NR_kexec_file_load 381 #define __NR_kexec_load 277 #define __NR_keyctl 280 #define __NR_kill 37 #define __NR_landlock_add_rule 445 #define __NR_landlock_create_ruleset 444 #define __NR_landlock_restrict_self 446 #define __NR_lchown 198 #define __NR_lgetxattr 228 #define __NR_link 9 #define __NR_linkat 296 #define __NR_listen 363 #define __NR_listxattr 230 #define __NR_llistxattr 231 #define __NR_lookup_dcookie 110 #define __NR_lremovexattr 234 #define __NR_lseek 19 #define __NR_lsetxattr 225 #define __NR_lstat 107 #define __NR_madvise 219 #define __NR_mbind 268 #define __NR_membarrier 356 #define __NR_memfd_create 350 #define __NR_migrate_pages 287 #define __NR_mincore 218 #define __NR_mkdir 39 #define __NR_mkdirat 289 #define __NR_mknod 14 #define __NR_mknodat 290 #define __NR_mlock 150 #define __NR_mlock2 374 #define __NR_mlockall 152 #define __NR_mmap 90 #define __NR_mount 21 #define __NR_mount_setattr 442 #define __NR_move_mount 429 #define __NR_move_pages 310 #define __NR_mprotect 125 #define __NR_mq_getsetattr 276 #define __NR_mq_notify 275 #define __NR_mq_open 271 #define __NR_mq_timedreceive 274 #define __NR_mq_timedsend 273 #define __NR_mq_unlink 272 #define __NR_mremap 163 #define __NR_msgctl 402 #define __NR_msgget 399 #define __NR_msgrcv 401 #define __NR_msgsnd 400 #define __NR_msync 144 #define __NR_munlock 151 #define __NR_munlockall 153 #define __NR_munmap 91 #define __NR_name_to_handle_at 335 #define __NR_nanosleep 162 #define __NR_newfstatat 293 #define __NR_nfsservctl 169 #define __NR_nice 34 #define __NR_open 5 #define __NR_open_by_handle_at 336 #define __NR_open_tree 428 #define __NR_openat 288 #define __NR_openat2 437 #define __NR_pause 29 #define __NR_perf_event_open 331 #define __NR_personality 136 #define __NR_pidfd_getfd 438 #define __NR_pidfd_open 434 #define __NR_pidfd_send_signal 424 #define __NR_pipe 42 #define __NR_pipe2 325 #define __NR_pivot_root 217 #define __NR_pkey_alloc 385 #define __NR_pkey_free 386 #define __NR_pkey_mprotect 384 #define __NR_poll 168 #define __NR_ppoll 302 #define __NR_prctl 172 #define __NR_pread64 180 #define __NR_preadv 328 #define __NR_preadv2 376 #define __NR_prlimit64 334 #define __NR_process_madvise 440 #define __NR_process_mrelease 448 #define __NR_process_vm_readv 340 #define __NR_process_vm_writev 341 #define __NR_pselect6 301 #define __NR_ptrace 26 #define __NR_putpmsg 189 #define __NR_pwrite64 181 #define __NR_pwritev 329 #define __NR_pwritev2 377 #define __NR_query_module 167 #define __NR_quotactl 131 #define __NR_quotactl_fd 443 #define __NR_read 3 #define __NR_readahead 222 #define __NR_readdir 89 #define __NR_readlink 85 #define __NR_readlinkat 298 #define __NR_readv 145 #define __NR_reboot 88 #define __NR_recvfrom 371 #define __NR_recvmmsg 357 #define __NR_recvmsg 372 #define __NR_remap_file_pages 267 #define __NR_removexattr 233 #define __NR_rename 38 #define __NR_renameat 295 #define __NR_renameat2 347 #define __NR_request_key 279 #define __NR_restart_syscall 7 #define __NR_rmdir 40 #define __NR_rseq 383 #define __NR_rt_sigaction 174 #define __NR_rt_sigpending 176 #define __NR_rt_sigprocmask 175 #define __NR_rt_sigqueueinfo 178 #define __NR_rt_sigreturn 173 #define __NR_rt_sigsuspend 179 #define __NR_rt_sigtimedwait 177 #define __NR_rt_tgsigqueueinfo 330 #define __NR_s390_guarded_storage 378 #define __NR_s390_pci_mmio_read 353 #define __NR_s390_pci_mmio_write 352 #define __NR_s390_runtime_instr 342 #define __NR_s390_sthyi 380 #define __NR_sched_get_priority_max 159 #define __NR_sched_get_priority_min 160 #define __NR_sched_getaffinity 240 #define __NR_sched_getattr 346 #define __NR_sched_getparam 155 #define __NR_sched_getscheduler 157 #define __NR_sched_rr_get_interval 161 #define __NR_sched_setaffinity 239 #define __NR_sched_setattr 345 #define __NR_sched_setparam 154 #define __NR_sched_setscheduler 156 #define __NR_sched_yield 158 #define __NR_seccomp 348 #define __NR_select 142 #define __NR_semctl 394 #define __NR_semget 393 #define __NR_semtimedop 392 #define __NR_sendfile 187 #define __NR_sendmmsg 358 #define __NR_sendmsg 370 #define __NR_sendto 369 #define __NR_set_mempolicy 270 #define __NR_set_robust_list 304 #define __NR_set_tid_address 252 #define __NR_setdomainname 121 #define __NR_setfsgid 216 #define __NR_setfsuid 215 #define __NR_setgid 214 #define __NR_setgroups 206 #define __NR_sethostname 74 #define __NR_setitimer 104 #define __NR_setns 339 #define __NR_setpgid 57 #define __NR_setpriority 97 #define __NR_setregid 204 #define __NR_setresgid 210 #define __NR_setresuid 208 #define __NR_setreuid 203 #define __NR_setrlimit 75 #define __NR_setsid 66 #define __NR_setsockopt 366 #define __NR_settimeofday 79 #define __NR_setuid 213 #define __NR_setxattr 224 #define __NR_shmat 397 #define __NR_shmctl 396 #define __NR_shmdt 398 #define __NR_shmget 395 #define __NR_shutdown 373 #define __NR_sigaction 67 #define __NR_sigaltstack 186 #define __NR_signal 48 #define __NR_signalfd 316 #define __NR_signalfd4 322 #define __NR_sigpending 73 #define __NR_sigprocmask 126 #define __NR_sigreturn 119 #define __NR_sigsuspend 72 #define __NR_socket 359 #define __NR_socketcall 102 #define __NR_socketpair 360 #define __NR_splice 306 #define __NR_stat 106 #define __NR_statfs 99 #define __NR_statfs64 265 #define __NR_statx 379 #define __NR_swapoff 115 #define __NR_swapon 87 #define __NR_symlink 83 #define __NR_symlinkat 297 #define __NR_sync 36 #define __NR_sync_file_range 307 #define __NR_syncfs 338 #define __NR_sysfs 135 #define __NR_sysinfo 116 #define __NR_syslog 103 #define __NR_tee 308 #define __NR_tgkill 241 #define __NR_timer_create 254 #define __NR_timer_delete 258 #define __NR_timer_getoverrun 257 #define __NR_timer_gettime 256 #define __NR_timer_settime 255 #define __NR_timerfd 317 #define __NR_timerfd_create 319 #define __NR_timerfd_gettime 321 #define __NR_timerfd_settime 320 #define __NR_times 43 #define __NR_tkill 237 #define __NR_truncate 92 #define __NR_umask 60 #define __NR_umount 22 #define __NR_umount2 52 #define __NR_uname 122 #define __NR_unlink 10 #define __NR_unlinkat 294 #define __NR_unshare 303 #define __NR_uselib 86 #define __NR_userfaultfd 355 #define __NR_ustat 62 #define __NR_utime 30 #define __NR_utimensat 315 #define __NR_utimes 313 #define __NR_vfork 190 #define __NR_vhangup 111 #define __NR_vmsplice 309 #define __NR_wait4 114 #define __NR_waitid 281 #define __NR_write 4 #define __NR_writev 146 # 27 "../sysdeps/unix/sysv/linux/include/sys/syscall.h" 2 # 21 "../sysdeps/unix/sysdep.h" 2 #define HAVE_SYSCALLS /* Note that using a `PASTE' macro loses. */ #define SYSCALL__(name,args) PSEUDO (__ ##name, name, args) #define SYSCALL(name,args) PSEUDO (name, name, args) #define __SYSCALL_CONCAT_X(a,b) a ##b #define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X (a, b) #define __INTERNAL_SYSCALL0(name) INTERNAL_SYSCALL (name, 0) #define __INTERNAL_SYSCALL1(name,a1) INTERNAL_SYSCALL (name, 1, a1) #define __INTERNAL_SYSCALL2(name,a1,a2) INTERNAL_SYSCALL (name, 2, a1, a2) #define __INTERNAL_SYSCALL3(name,a1,a2,a3) INTERNAL_SYSCALL (name, 3, a1, a2, a3) #define __INTERNAL_SYSCALL4(name,a1,a2,a3,a4) INTERNAL_SYSCALL (name, 4, a1, a2, a3, a4) #define __INTERNAL_SYSCALL5(name,a1,a2,a3,a4,a5) INTERNAL_SYSCALL (name, 5, a1, a2, a3, a4, a5) #define __INTERNAL_SYSCALL6(name,a1,a2,a3,a4,a5,a6) INTERNAL_SYSCALL (name, 6, a1, a2, a3, a4, a5, a6) #define __INTERNAL_SYSCALL7(name,a1,a2,a3,a4,a5,a6,a7) INTERNAL_SYSCALL (name, 7, a1, a2, a3, a4, a5, a6, a7) #define __INTERNAL_SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n #define __INTERNAL_SYSCALL_NARGS(...) __INTERNAL_SYSCALL_NARGS_X (__VA_ARGS__,7,6,5,4,3,2,1,0,) #define __INTERNAL_SYSCALL_DISP(b,...) __SYSCALL_CONCAT (b,__INTERNAL_SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__) /* Issue a syscall defined by syscall number plus any other argument required. It is similar to INTERNAL_SYSCALL macro, but without the need to pass the expected argument number as second parameter. */ #define INTERNAL_SYSCALL_CALL(...) __INTERNAL_SYSCALL_DISP (__INTERNAL_SYSCALL, __VA_ARGS__) #define __INLINE_SYSCALL0(name) INLINE_SYSCALL (name, 0) #define __INLINE_SYSCALL1(name,a1) INLINE_SYSCALL (name, 1, a1) #define __INLINE_SYSCALL2(name,a1,a2) INLINE_SYSCALL (name, 2, a1, a2) #define __INLINE_SYSCALL3(name,a1,a2,a3) INLINE_SYSCALL (name, 3, a1, a2, a3) #define __INLINE_SYSCALL4(name,a1,a2,a3,a4) INLINE_SYSCALL (name, 4, a1, a2, a3, a4) #define __INLINE_SYSCALL5(name,a1,a2,a3,a4,a5) INLINE_SYSCALL (name, 5, a1, a2, a3, a4, a5) #define __INLINE_SYSCALL6(name,a1,a2,a3,a4,a5,a6) INLINE_SYSCALL (name, 6, a1, a2, a3, a4, a5, a6) #define __INLINE_SYSCALL7(name,a1,a2,a3,a4,a5,a6,a7) INLINE_SYSCALL (name, 7, a1, a2, a3, a4, a5, a6, a7) #define __INLINE_SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n #define __INLINE_SYSCALL_NARGS(...) __INLINE_SYSCALL_NARGS_X (__VA_ARGS__,7,6,5,4,3,2,1,0,) #define __INLINE_SYSCALL_DISP(b,...) __SYSCALL_CONCAT (b,__INLINE_SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__) /* Issue a syscall defined by syscall number plus any other argument required. Any error will be handled using arch defined macros and errno will be set accordingly. It is similar to INLINE_SYSCALL macro, but without the need to pass the expected argument number as second parameter. */ #define INLINE_SYSCALL_CALL(...) __INLINE_SYSCALL_DISP (__INLINE_SYSCALL, __VA_ARGS__) #define NO_SYSCALL_CANCEL_CHECKING SINGLE_THREAD_P #define SYSCALL_CANCEL(...) ({ long int sc_ret; if (NO_SYSCALL_CANCEL_CHECKING) sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); else { int sc_cancel_oldtype = LIBC_CANCEL_ASYNC (); sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); LIBC_CANCEL_RESET (sc_cancel_oldtype); } sc_ret; }) # 111 "../sysdeps/unix/sysdep.h" /* Issue a syscall defined by syscall number plus any other argument required. Any error will be returned unmodified (including errno). */ #define INTERNAL_SYSCALL_CANCEL(...) ({ long int sc_ret; if (NO_SYSCALL_CANCEL_CHECKING) sc_ret = INTERNAL_SYSCALL_CALL (__VA_ARGS__); else { int sc_cancel_oldtype = LIBC_CANCEL_ASYNC (); sc_ret = INTERNAL_SYSCALL_CALL (__VA_ARGS__); LIBC_CANCEL_RESET (sc_cancel_oldtype); } sc_ret; }) # 127 "../sysdeps/unix/sysdep.h" /* Machine-dependent sysdep.h files are expected to define the macro PSEUDO (function_name, syscall_name) to emit assembly code to define the C-callable function FUNCTION_NAME to do system call SYSCALL_NAME. r0 and r1 are the system call outputs. MOVE(x, y) should be defined as an instruction such that "MOVE(r1, r0)" works. ret should be defined as the return instruction. */ #define SYS_ify(syscall_name) SYS_ ##syscall_name /* Terminate a system call named SYM. This is used on some platforms to generate correct debugging information. */ #define PSEUDO_END(sym) #define PSEUDO_END_NOERRNO(sym) PSEUDO_END(sym) #define PSEUDO_END_ERRVAL(sym) PSEUDO_END(sym) /* Wrappers around system calls should normally inline the system call code. But sometimes it is not possible or implemented and we use this code. */ #define INLINE_SYSCALL(name,nr,args...) __syscall_ ##name (args) # 24 "../sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h" 2 # 1 "../sysdeps/unix/sysv/linux/s390/sysdep.h" 1 /* Syscall definitions, Linux s390 version. Copyright (C) 2019-2021 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 . */ #undef SYS_ify #define SYS_ify(syscall_name) __NR_ ##syscall_name #undef INTERNAL_SYSCALL_DIRECT #define INTERNAL_SYSCALL_DIRECT(name,nr,args...) ({ DECLARGS_ ##nr(args) register long int _ret __asm__("2"); __asm__ __volatile__ ( "svc %b1\n\t" : "=d" (_ret) : "i" (__NR_ ##name) ASMFMT_ ##nr : "memory" ); _ret; }) # 35 "../sysdeps/unix/sysv/linux/s390/sysdep.h" #undef INTERNAL_SYSCALL_SVC0 #define INTERNAL_SYSCALL_SVC0(name,nr,args...) ({ DECLARGS_ ##nr(args) register unsigned long int _nr __asm__("1") = (unsigned long int)(__NR_ ##name); register long int _ret __asm__("2"); __asm__ __volatile__ ( "svc 0\n\t" : "=d" (_ret) : "d" (_nr) ASMFMT_ ##nr : "memory" ); _ret; }) # 49 "../sysdeps/unix/sysv/linux/s390/sysdep.h" #undef INTERNAL_SYSCALL_NCS #define INTERNAL_SYSCALL_NCS(no,nr,args...) ({ DECLARGS_ ##nr(args) register unsigned long int _nr __asm__("1") = (unsigned long int)(no); register long int _ret __asm__("2"); __asm__ __volatile__ ( "svc 0\n\t" : "=d" (_ret) : "d" (_nr) ASMFMT_ ##nr : "memory" ); _ret; }) # 62 "../sysdeps/unix/sysv/linux/s390/sysdep.h" #undef INTERNAL_SYSCALL #define INTERNAL_SYSCALL(name,nr,args...) (((__NR_ ##name) < 256) ? INTERNAL_SYSCALL_DIRECT(name, nr, args) : INTERNAL_SYSCALL_SVC0(name, nr, args)) #define DECLARGS_0() #define DECLARGS_1(arg1) register unsigned long int gpr2 __asm__ ("2") = (unsigned long int)(arg1); #define DECLARGS_2(arg1,arg2) DECLARGS_1(arg1) register unsigned long int gpr3 __asm__ ("3") = (unsigned long int)(arg2); #define DECLARGS_3(arg1,arg2,arg3) DECLARGS_2(arg1, arg2) register unsigned long int gpr4 __asm__ ("4") = (unsigned long int)(arg3); #define DECLARGS_4(arg1,arg2,arg3,arg4) DECLARGS_3(arg1, arg2, arg3) register unsigned long int gpr5 __asm__ ("5") = (unsigned long int)(arg4); #define DECLARGS_5(arg1,arg2,arg3,arg4,arg5) DECLARGS_4(arg1, arg2, arg3, arg4) register unsigned long int gpr6 __asm__ ("6") = (unsigned long int)(arg5); #define DECLARGS_6(arg1,arg2,arg3,arg4,arg5,arg6) DECLARGS_5(arg1, arg2, arg3, arg4, arg5) register unsigned long int gpr7 __asm__ ("7") = (unsigned long int)(arg6); #define ASMFMT_0 #define ASMFMT_1 , "0" (gpr2) #define ASMFMT_2 , "0" (gpr2), "d" (gpr3) #define ASMFMT_3 , "0" (gpr2), "d" (gpr3), "d" (gpr4) #define ASMFMT_4 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5) #define ASMFMT_5 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6) #define ASMFMT_6 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6), "d" (gpr7) #define SINGLE_THREAD_BY_GLOBAL 1 #define VDSO_NAME "LINUX_2.6.29" #define VDSO_HASH 123718585 /* List of system calls which are supported as vsyscalls. */ #define HAVE_CLOCK_GETRES64_VSYSCALL "__kernel_clock_getres" #define HAVE_CLOCK_GETTIME64_VSYSCALL "__kernel_clock_gettime" #define HAVE_GETTIMEOFDAY_VSYSCALL "__kernel_gettimeofday" #define HAVE_GETCPU_VSYSCALL "__kernel_getcpu" # 25 "../sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h" 2 # 1 "../sysdeps/unix/sysv/linux/sysdep.h" 1 /* Copyright (C) 2015-2021 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 . */ #define _SYSDEP_LINUX_H # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 22 "../sysdeps/unix/sysv/linux/sysdep.h" 2 # 1 "../sysdeps/unix/sysv/linux/s390/kernel-features.h" 1 /* Set flags signalling availability of kernel features based on given kernel version number. S/390 version. Copyright (C) 1999-2021 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 . */ /* Direct socketcalls available with kernel 4.3. */ # 30 "../sysdeps/unix/sysv/linux/s390/kernel-features.h" # 1 "../sysdeps/unix/sysv/linux/kernel-features.h" 1 /* Set flags signalling availability of kernel features based on given kernel version number. Copyright (C) 1999-2021 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 . */ /* This file must not contain any C code. At least it must be protected to allow using the file also in assembler files. */ #define _LINUX_KERNEL_FEATURES_H 1 # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 27 "../sysdeps/unix/sysv/linux/kernel-features.h" 2 /* We assume for __LINUX_KERNEL_VERSION the same encoding used in linux/version.h. I.e., the major, minor, and subminor all get a byte with the major number being in the highest byte. This means we can do numeric comparisons. In the following we will define certain symbols depending on whether the describes kernel feature is available in the kernel version given by __LINUX_KERNEL_VERSION. We are not always exactly recording the correct versions in which the features were introduced. If somebody cares these values can afterwards be corrected. */ /* The statfs64 syscalls are available in 2.5.74 (but not for alpha). */ #define __ASSUME_STATFS64 1 /* pselect/ppoll were introduced just after 2.6.16-rc1. On x86_64 and SH this appeared first in 2.6.19-rc1, on ia64 in 2.6.22-rc1. */ #define __ASSUME_PSELECT 1 /* Support for inter-process robust mutexes was added in 2.6.17 (but some architectures lack futex_atomic_cmpxchg_inatomic in some configurations). */ #define __ASSUME_SET_ROBUST_LIST 1 /* Support for various CLOEXEC and NONBLOCK flags was added in 2.6.27. */ #define __ASSUME_IN_NONBLOCK 1 /* Support for preadv and pwritev was added in 2.6.30. */ #define __ASSUME_PREADV 1 #define __ASSUME_PWRITEV 1 /* Support for sendmmsg functionality was added in 3.0. */ #define __ASSUME_SENDMMSG 1 /* On most architectures, most socket syscalls are supported for all supported kernel versions, but on some socketcall architectures separate syscalls were only added later. */ #define __ASSUME_SENDMSG_SYSCALL 1 #define __ASSUME_RECVMSG_SYSCALL 1 #define __ASSUME_ACCEPT_SYSCALL 1 #define __ASSUME_CONNECT_SYSCALL 1 #define __ASSUME_RECVFROM_SYSCALL 1 #define __ASSUME_SENDTO_SYSCALL 1 #define __ASSUME_ACCEPT4_SYSCALL 1 #define __ASSUME_RECVMMSG_SYSCALL 1 #define __ASSUME_SENDMMSG_SYSCALL 1 #define __ASSUME_GETSOCKOPT_SYSCALL 1 #define __ASSUME_SETSOCKOPT_SYSCALL 1 /* Support for SysV IPC through wired syscalls. All supported architectures either support ipc syscall and/or all the ipc correspondent syscalls. */ #define __ASSUME_DIRECT_SYSVIPC_SYSCALLS 1 /* The generic default __IPC_64 value is 0x0, however some architectures require a different value of 0x100. */ #define __ASSUME_SYSVIPC_DEFAULT_IPC_64 1 /* All supported architectures reserve a 32-bit for MODE field in sysvipc ipc_perm. However, some kernel ABI interfaces still expect a 16-bit field. This is only an issue if arch-defined IPC_PERM padding is on a wrong position regarding endianness. In this case, the IPC control routines (msgctl, semctl, and semtctl) requires to shift the value to correct place. The ABIs that requires it define __ASSUME_SYSVIPC_BROKEN_MODE_T. */ /* Support for p{read,write}v2 was added in 4.6. However Linux default implementation does not assume the __ASSUME_* and instead use a fallback implementation based on p{read,write}v and returning an error for non supported flags. */ /* Support for the renameat2 system call was added in kernel 3.15. */ /* Support for the execveat syscall was added in 3.19. */ /* Support for statx was added in kernel 4.11. */ /* Support for clone call used on fork. The signature varies across the architectures with current 4 different variants: 1. long int clone (unsigned long flags, unsigned long newsp, int *parent_tidptr, unsigned long tls, int *child_tidptr) 2. long int clone (unsigned long newsp, unsigned long clone_flags, int *parent_tidptr, int * child_tidptr, unsigned long tls) 3. long int clone (unsigned long flags, unsigned long newsp, int stack_size, int *parent_tidptr, int *child_tidptr, unsigned long tls) 4. long int clone (unsigned long flags, unsigned long newsp, int *parent_tidptr, int *child_tidptr, unsigned long tls) The fourth variant is intended to be used as the default for newer ports, Also IA64 uses the third variant but with __NR_clone2 instead of __NR_clone. The macros names to define the variant used for the architecture is similar to kernel: - __ASSUME_CLONE_BACKWARDS: for variant 1. - __ASSUME_CLONE_BACKWARDS2: for variant 2 (s390). - __ASSUME_CLONE_BACKWARDS3: for variant 3 (microblaze). - __ASSUME_CLONE_DEFAULT: for variant 4. - __ASSUME_CLONE2: for clone2 with variant 3 (ia64). */ #define __ASSUME_CLONE_DEFAULT 1 /* Support for 64-bit time_t in the system call interface. When this flag is set, the kernel provides a version of each of these system calls that accepts 64-bit time_t: clock_adjtime(64) clock_gettime(64) clock_settime(64) clock_getres(_time64) clock_nanosleep(_time64) futex(_time64) mq_timedreceive(_time64) mq_timedsend(_time64) ppoll(_time64) pselect6(_time64) rt_sigtimedwait(_time64) sched_rr_get_interval(_time64) timer_gettime(64) timer_settime(64) timerfd_gettime(64) timerfd_settime(64) utimensat(_time64) On architectures where time_t has historically been 64 bits, only the 64-bit version of each system call exists, and there are no suffixes on the __NR_ constants. On architectures where time_t has historically been 32 bits, both 32-bit and 64-bit versions of each system call may exist, depending on the kernel version. When the 64-bit version exists, there is a '64' or '_time64' suffix on the name of its __NR_ constant, as shown above. This flag is always set for Linux 5.1 and later. Prior to that version, it is set only for some CPU architectures and ABIs: - __WORDSIZE == 64 - all supported architectures where pointers are 64 bits also have always had 64-bit time_t. - __WORDSIZE == 32 && __SYSCALL_WORDSIZE == 64 - this describes only one supported configuration, x86's 'x32' subarchitecture, where pointers are 32 bits but time_t has always been 64 bits. __ASSUME_TIME64_SYSCALLS being set does not mean __TIMESIZE is 64, and __TIMESIZE equal to 64 does not mean __ASSUME_TIME64_SYSCALLS is set. All four cases are possible. */ #define __ASSUME_TIME64_SYSCALLS 1 /* Linux waitid prior kernel 5.4 does not support waiting for the current process group. */ /* The faccessat2 system call was introduced across all architectures in Linux 5.8. */ #define __ASSUME_FACCESSAT2 0 /* The FUTEX_LOCK_PI2 operation was introduced across all architectures in Linux 5.14. */ #define __ASSUME_FUTEX_LOCK_PI2 0 # 32 "../sysdeps/unix/sysv/linux/s390/kernel-features.h" 2 #undef __ASSUME_ACCEPT_SYSCALL #undef __ASSUME_ACCEPT4_SYSCALL #undef __ASSUME_RECVMMSG_SYSCALL #undef __ASSUME_SENDMMSG_SYSCALL #undef __ASSUME_SENDMSG_SYSCALL #undef __ASSUME_RECVMSG_SYSCALL #undef __ASSUME_CONNECT_SYSCALL #undef __ASSUME_RECVFROM_SYSCALL #undef __ASSUME_SENDTO_SYSCALL #undef __ASSUME_GETSOCKOPT_SYSCALL #undef __ASSUME_SETSOCKOPT_SYSCALL /* s390 only supports ipc syscall before 5.1. */ #undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS #undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 #undef __ASSUME_CLONE_DEFAULT #define __ASSUME_CLONE_BACKWARDS2 # 23 "../sysdeps/unix/sysv/linux/sysdep.h" 2 # 1 "../include/endian.h" 1 # 1 "../string/endian.h" 1 /* Copyright (C) 1992-2021 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 . */ #define _ENDIAN_H 1 /* Get the definitions of __*_ENDIAN, __BYTE_ORDER, and __FLOAT_WORD_ORDER. */ # 1 "../include/bits/endian.h" 1 # 1 "../string/bits/endian.h" 1 /* Endian macros for string.h functions Copyright (C) 1992-2021 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 . */ #define _BITS_ENDIAN_H 1 /* Definitions for byte order, according to significance of bytes, from low addresses to high addresses. The value is what you get by putting '4' in the most significant byte, '3' in the second most significant byte, '2' in the second least significant byte, and '1' in the least significant byte, and then writing down one digit for each byte, starting with the byte at the lowest address at the left, and proceeding to the byte with the highest address at the right. */ #define __LITTLE_ENDIAN 1234 #define __BIG_ENDIAN 4321 #define __PDP_ENDIAN 3412 /* This file defines `__BYTE_ORDER' for the particular machine. */ # 1 "../sysdeps/s390/bits/endianness.h" 1 #define _BITS_ENDIANNESS_H 1 /* S/390 is big-endian. */ #define __BYTE_ORDER __BIG_ENDIAN # 36 "../string/bits/endian.h" 2 /* Some machines may need to use a different endianness for floating point values. */ #define __FLOAT_WORD_ORDER __BYTE_ORDER #define __LONG_LONG_PAIR(HI,LO) HI, LO # 2 "../include/bits/endian.h" 2 # 25 "../string/endian.h" 2 #define LITTLE_ENDIAN __LITTLE_ENDIAN #define BIG_ENDIAN __BIG_ENDIAN #define PDP_ENDIAN __PDP_ENDIAN #define BYTE_ORDER __BYTE_ORDER /* Conversion interfaces. */ # 1 "../bits/byteswap.h" 1 /* Macros and inline functions to swap the order of bytes in integer values. Copyright (C) 1997-2021 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 . */ #define _BITS_BYTESWAP_H 1 # 1 "../include/bits/types.h" 1 # 1 "../posix/bits/types.h" 1 /* bits/types.h -- definitions of __*_t types underlying *_t types. Copyright (C) 2002-2021 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 . */ /* * Never include this file directly; use instead. */ #define _BITS_TYPES_H 1 # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 28 "../posix/bits/types.h" 2 # 1 "../bits/timesize.h" 1 /* Bit size of the time_t type at glibc build time, general case. Copyright (C) 2018-2021 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 . */ # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 20 "../bits/timesize.h" 2 /* Size in bits of the 'time_t' type of the default ABI. */ #define __TIMESIZE __WORDSIZE # 29 "../posix/bits/types.h" 2 /* Convenience types. */ typedef unsigned char __u_char; typedef unsigned short int __u_short; typedef unsigned int __u_int; typedef unsigned long int __u_long; /* Fixed-size types, underlying types depend on word size and compiler. */ typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef signed short int __int16_t; typedef unsigned short int __uint16_t; typedef signed int __int32_t; typedef unsigned int __uint32_t; typedef signed long int __int64_t; typedef unsigned long int __uint64_t; /* Smallest types with at least a given width. */ typedef __int8_t __int_least8_t; typedef __uint8_t __uint_least8_t; typedef __int16_t __int_least16_t; typedef __uint16_t __uint_least16_t; typedef __int32_t __int_least32_t; typedef __uint32_t __uint_least32_t; typedef __int64_t __int_least64_t; typedef __uint64_t __uint_least64_t; /* quad_t is also 64 bits. */ typedef long int __quad_t; typedef unsigned long int __u_quad_t; /* Largest integral types. */ typedef long int __intmax_t; typedef unsigned long int __uintmax_t; /* The machine-dependent file defines __*_T_TYPE macros for each of the OS types we define below. The definitions of those macros must use the following macros for underlying types. We define __S_TYPE and __U_TYPE for the signed and unsigned variants of each of the following integer types on this machine. 16 -- "natural" 16-bit type (always short) 32 -- "natural" 32-bit type (always int) 64 -- "natural" 64-bit type (long or long long) LONG32 -- 32-bit type, traditionally long QUAD -- 64-bit type, traditionally long long WORD -- natural type of __WORDSIZE bits (int or long) LONGWORD -- type of __WORDSIZE bits, traditionally long We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the conventional uses of `long' or `long long' type modifiers match the types we define, even when a less-adorned type would be the same size. This matters for (somewhat) portably writing printf/scanf formats for these types, where using the appropriate l or ll format modifiers can make the typedefs and the formats match up across all GNU platforms. If we used `long' when it's 64 bits where `long long' is expected, then the compiler would warn about the formats not matching the argument types, and the programmer changing them to shut up the compiler would break the program's portability. Here we assume what is presently the case in all the GCC configurations we support: long long is always 64 bits, long is always word/address size, and int is always 32 bits. */ #define __S16_TYPE short int #define __U16_TYPE unsigned short int #define __S32_TYPE int #define __U32_TYPE unsigned int #define __SLONGWORD_TYPE long int #define __ULONGWORD_TYPE unsigned long int # 128 "../posix/bits/types.h" #define __SQUAD_TYPE long int #define __UQUAD_TYPE unsigned long int #define __SWORD_TYPE long int #define __UWORD_TYPE unsigned long int #define __SLONG32_TYPE int #define __ULONG32_TYPE unsigned int #define __S64_TYPE long int #define __U64_TYPE unsigned long int /* No need to mark the typedef with __extension__. */ #define __STD_TYPE typedef # 1 "../sysdeps/unix/sysv/linux/s390/bits/typesizes.h" 1 /* bits/typesizes.h -- underlying types for *_t. Linux/s390 version. Copyright (C) 2003-2021 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 . */ #define _BITS_TYPESIZES_H 1 /* See for the meaning of these macros. This file exists so that need not vary across different GNU platforms. */ #define __DEV_T_TYPE __UQUAD_TYPE #define __UID_T_TYPE __U32_TYPE #define __GID_T_TYPE __U32_TYPE #define __INO_T_TYPE __ULONGWORD_TYPE #define __INO64_T_TYPE __UQUAD_TYPE #define __MODE_T_TYPE __U32_TYPE #define __NLINK_T_TYPE __UWORD_TYPE #define __OFF_T_TYPE __SLONGWORD_TYPE #define __OFF64_T_TYPE __SQUAD_TYPE #define __PID_T_TYPE __S32_TYPE #define __RLIM_T_TYPE __ULONGWORD_TYPE #define __RLIM64_T_TYPE __UQUAD_TYPE #define __BLKCNT_T_TYPE __SLONGWORD_TYPE #define __BLKCNT64_T_TYPE __SQUAD_TYPE #define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE #define __FSBLKCNT64_T_TYPE __UQUAD_TYPE #define __FSFILCNT_T_TYPE __ULONGWORD_TYPE #define __FSFILCNT64_T_TYPE __UQUAD_TYPE #define __FSWORD_T_TYPE __SWORD_TYPE #define __ID_T_TYPE __U32_TYPE #define __CLOCK_T_TYPE __SLONGWORD_TYPE #define __TIME_T_TYPE __SLONGWORD_TYPE #define __USECONDS_T_TYPE __U32_TYPE #define __SUSECONDS_T_TYPE __SLONGWORD_TYPE #define __SUSECONDS64_T_TYPE __SQUAD_TYPE #define __DADDR_T_TYPE __S32_TYPE #define __KEY_T_TYPE __S32_TYPE #define __CLOCKID_T_TYPE __S32_TYPE #define __TIMER_T_TYPE void * #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE #define __FSID_T_TYPE struct { int __val[2]; } /* size_t is unsigned long int on s390 -m31. */ #define __SSIZE_T_TYPE __SLONGWORD_TYPE #define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE #define __CPU_MASK_TYPE __ULONGWORD_TYPE /* Tell the libc code that off_t and off64_t are actually the same type for all ABI purposes, even if possibly expressed as different base types for C type-checking purposes. */ #define __OFF_T_MATCHES_OFF64_T 1 /* Same for ino_t and ino64_t. */ #define __INO_T_MATCHES_INO64_T 1 /* And for __rlim_t and __rlim64_t. */ #define __RLIM_T_MATCHES_RLIM64_T 1 /* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */ #define __STATFS_MATCHES_STATFS64 1 /* And for getitimer, setitimer and rusage */ #define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1 # 96 "../sysdeps/unix/sysv/linux/s390/bits/typesizes.h" /* Number of descriptors that can fit in an `fd_set'. */ #define __FD_SETSIZE 1024 # 142 "../posix/bits/types.h" 2 # 1 "../bits/time64.h" 1 /* bits/time64.h -- underlying types for __time64_t. Generic version. Copyright (C) 2018-2021 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 . */ #define _BITS_TIME64_H 1 /* Define __TIME64_T_TYPE so that it is always a 64-bit type. */ /* If we already have 64-bit time type then use it. */ #define __TIME64_T_TYPE __TIME_T_TYPE # 143 "../posix/bits/types.h" 2 __STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */ __STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */ __STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */ __STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */ __STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/ __STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */ __STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */ __STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */ __STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */ __STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */ __STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */ __STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */ __STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */ __STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */ __STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */ __STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */ __STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */ __STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */ __STD_TYPE __SUSECONDS64_T_TYPE __suseconds64_t; __STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */ __STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */ /* Clock ID used in clock and timer functions. */ __STD_TYPE __CLOCKID_T_TYPE __clockid_t; /* Timer ID returned by `timer_create'. */ __STD_TYPE __TIMER_T_TYPE __timer_t; /* Type to represent block size. */ __STD_TYPE __BLKSIZE_T_TYPE __blksize_t; /* Types from the Large File Support interface. */ /* Type to count number of disk blocks. */ __STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; __STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t; /* Type to count file system blocks. */ __STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; __STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; /* Type to count file system nodes. */ __STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; __STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; /* Type of miscellaneous file system fields. */ __STD_TYPE __FSWORD_T_TYPE __fsword_t; __STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */ /* Signed long type used in system calls. */ __STD_TYPE __SYSCALL_SLONG_TYPE __syscall_slong_t; /* Unsigned long type used in system calls. */ __STD_TYPE __SYSCALL_ULONG_TYPE __syscall_ulong_t; /* These few don't really vary by system, they always correspond to one of the other defined types. */ typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */ typedef char *__caddr_t; /* Duplicates info from stdint.h but this is used in unistd.h. */ __STD_TYPE __SWORD_TYPE __intptr_t; /* Duplicate info from sys/socket.h. */ __STD_TYPE __U32_TYPE __socklen_t; /* C99: An integer type that can be accessed as an atomic entity, even in the presence of asynchronous interrupts. It is not currently necessary for this to be machine-specific. */ typedef int __sig_atomic_t; /* Seconds since the Epoch, visible to user code when time_t is too narrow only for consistency with the old way of widening too-narrow types. User code should never use __time64_t. */ #undef __STD_TYPE # 2 "../include/bits/types.h" 2 # 28 "../bits/byteswap.h" 2 /* Swap bytes in 16-bit value. */ #define __bswap_constant_16(x) ((__uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) static __inline __uint16_t __bswap_16 (__uint16_t __bsx) { return __builtin_bswap16 (__bsx); } /* Swap bytes in 32-bit value. */ #define __bswap_constant_32(x) ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24)) static __inline __uint32_t __bswap_32 (__uint32_t __bsx) { return __builtin_bswap32 (__bsx); } /* Swap bytes in 64-bit value. */ #define __bswap_constant_64(x) ((((x) & 0xff00000000000000ull) >> 56) | (((x) & 0x00ff000000000000ull) >> 40) | (((x) & 0x0000ff0000000000ull) >> 24) | (((x) & 0x000000ff00000000ull) >> 8) | (((x) & 0x00000000ff000000ull) << 8) | (((x) & 0x0000000000ff0000ull) << 24) | (((x) & 0x000000000000ff00ull) << 40) | (((x) & 0x00000000000000ffull) << 56)) # 68 "../bits/byteswap.h" __extension__ static __inline __uint64_t __bswap_64 (__uint64_t __bsx) { return __builtin_bswap64 (__bsx); } # 36 "../string/endian.h" 2 # 1 "../bits/uintn-identity.h" 1 /* Inline functions to return unsigned integer values unchanged. Copyright (C) 2017-2021 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 . */ #define _BITS_UINTN_IDENTITY_H 1 # 1 "../include/bits/types.h" 1 # 27 "../bits/uintn-identity.h" 2 /* These inline functions are to ensure the appropriate type conversions and associated diagnostics from macros that convert to a given endianness. */ static __inline __uint16_t __uint16_identity (__uint16_t __x) { return __x; } static __inline __uint32_t __uint32_identity (__uint32_t __x) { return __x; } static __inline __uint64_t __uint64_identity (__uint64_t __x) { return __x; } # 37 "../string/endian.h" 2 # 55 "../string/endian.h" #define htobe16(x) __uint16_identity (x) #define htole16(x) __bswap_16 (x) #define be16toh(x) __uint16_identity (x) #define le16toh(x) __bswap_16 (x) #define htobe32(x) __uint32_identity (x) #define htole32(x) __bswap_32 (x) #define be32toh(x) __uint32_identity (x) #define le32toh(x) __bswap_32 (x) #define htobe64(x) __uint64_identity (x) #define htole64(x) __bswap_64 (x) #define be64toh(x) __uint64_identity (x) #define le64toh(x) __bswap_64 (x) # 2 "../include/endian.h" 2 #define BIG_ENDI 1 #undef LITTLE_ENDI #define HIGH_HALF 0 #define LOW_HALF 1 # 17 "../include/endian.h" # 24 "../sysdeps/unix/sysv/linux/sysdep.h" 2 #undef INTERNAL_SYSCALL_ERROR_P #define INTERNAL_SYSCALL_ERROR_P(val) ((unsigned long int) (val) > -4096UL) #define SYSCALL_ERROR_LABEL(sc_err) ({ __set_errno (sc_err); -1L; }) /* Define a macro which expands into the inline wrapper code for a system call. It sets the errno and returns -1 on a failure, or the syscall return value otherwise. */ #undef INLINE_SYSCALL #define INLINE_SYSCALL(name,nr,args...) ({ long int sc_ret = INTERNAL_SYSCALL (name, nr, args); __glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (sc_ret)) ? SYSCALL_ERROR_LABEL (INTERNAL_SYSCALL_ERRNO (sc_ret)) : sc_ret; }) #undef INTERNAL_SYSCALL_ERRNO #define INTERNAL_SYSCALL_ERRNO(val) (-(val)) /* Set error number and return -1. A target may choose to return the internal function, __syscall_error, which sets errno and returns -1. We use -1l, instead of -1, so that it can be casted to (void *). */ #define INLINE_SYSCALL_ERROR_RETURN_VALUE(err) ({ __set_errno (err); -1l; }) /* Provide a dummy argument that can be used to force register alignment for register pairs if required by the syscall ABI. */ #define __ALIGNMENT_ARG #define __ALIGNMENT_COUNT(a,b) a /* Provide a common macro to pass 64-bit value on syscalls. */ #define SYSCALL_LL(val) (val) #define SYSCALL_LL64(val) (val) /* Provide a common macro to pass 64-bit value on pread and pwrite syscalls. */ #define SYSCALL_LL_PRW(val) __ALIGNMENT_ARG SYSCALL_LL (val) #define SYSCALL_LL64_PRW(val) __ALIGNMENT_ARG SYSCALL_LL64 (val) /* Provide a macro to pass the off{64}_t argument on p{readv,writev}{64}. */ #define LO_HI_LONG(val) (long) (val), (long) (((uint64_t) (val)) >> 32) /* Export the ___brk_addr symbol on brk.c implementation (some ABIs export it due and old crtstuff.c code). */ #define HAVE_INTERNAL_BRK_ADDR_SYMBOL 0 # 26 "../sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h" 2 # 1 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 1 /* System-specific settings for dynamic linker code. Linux version. Copyright (C) 2005-2021 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 . */ # 1 "../sysdeps/generic/dl-sysdep.h" 1 /* System-specific settings for dynamic linker code. Generic version. Copyright (C) 2002-2021 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 . */ /* No multiple inclusion protection need here because it's just macros. We don't want to use _DL_SYSDEP_H in case we are #include_next'd. */ /* This macro must be defined to either 0 or 1. If 1, then an errno global variable hidden in ld.so will work right with all the errno-using libc code compiled for ld.so, and there is never a need to share the errno location with libc. This is appropriate only if all the libc functions that ld.so uses are called without PLT and always get the versions linked into ld.so rather than the libc ones. */ #define RTLD_PRIVATE_ERRNO 0 # 20 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 2 /* On many architectures the kernel provides a virtual DSO and gives AT_SYSINFO_EHDR to point us to it. As this is introduced for new machines, we should look at it for unwind information even if we aren't making direct use of it. So enable this across the board. */ #define NEED_DL_SYSINFO_DSO 1 /* Get version of the OS. */ extern int _dl_discover_osversion (void) attribute_hidden; #define HAVE_DL_DISCOVER_OSVERSION 1 # 27 "../sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h" 2 # 1 "../sysdeps/s390/nptl/tls.h" 1 /* Definition for thread-local data handling. NPTL/s390 version. Copyright (C) 2003-2021 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 . */ #define _TLS_H 1 # 1 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 1 /* System-specific settings for dynamic linker code. Linux version. Copyright (C) 2005-2021 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 . */ # 1 "../sysdeps/generic/dl-sysdep.h" 1 /* System-specific settings for dynamic linker code. Generic version. Copyright (C) 2002-2021 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 . */ /* No multiple inclusion protection need here because it's just macros. We don't want to use _DL_SYSDEP_H in case we are #include_next'd. */ /* This macro must be defined to either 0 or 1. If 1, then an errno global variable hidden in ld.so will work right with all the errno-using libc code compiled for ld.so, and there is never a need to share the errno location with libc. This is appropriate only if all the libc functions that ld.so uses are called without PLT and always get the versions linked into ld.so rather than the libc ones. */ #define RTLD_PRIVATE_ERRNO 0 # 20 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 2 /* On many architectures the kernel provides a virtual DSO and gives AT_SYSINFO_EHDR to point us to it. As this is introduced for new machines, we should look at it for unwind information even if we aren't making direct use of it. So enable this across the board. */ #define NEED_DL_SYSINFO_DSO 1 /* Get version of the OS. */ extern int _dl_discover_osversion (void) attribute_hidden; #define HAVE_DL_DISCOVER_OSVERSION 1 # 23 "../sysdeps/s390/nptl/tls.h" 2 # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stdbool.h" 1 3 4 /* Copyright (C) 1998-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.16 Boolean type and values */ #define _STDBOOL_H #define bool _Bool #define true 1 #define false 0 /* Signal that all the definitions are present. */ #define __bool_true_false_are_defined 1 # 25 "../sysdeps/s390/nptl/tls.h" 2 # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ #define _STDDEF_H #define _STDDEF_H_ /* snaroff@next.com says the NeXT needs this. */ #define _ANSI_STDDEF_H /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ #define _PTRDIFF_T #define _T_PTRDIFF_ #define _T_PTRDIFF #define __PTRDIFF_T #define _PTRDIFF_T_ #define _BSD_PTRDIFF_T_ #define ___int_ptrdiff_t_h #define _GCC_PTRDIFF_T #define _PTRDIFF_T_DECLARED typedef __PTRDIFF_TYPE__ ptrdiff_t; /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ #define __size_t__ #define __SIZE_T__ #define _SIZE_T #define _SYS_SIZE_T_H #define _T_SIZE_ #define _T_SIZE #define __SIZE_T #define _SIZE_T_ #define _BSD_SIZE_T_ #define _SIZE_T_DEFINED_ #define _SIZE_T_DEFINED #define _BSD_SIZE_T_DEFINED_ #define _SIZE_T_DECLARED #define ___int_size_t_h #define _GCC_SIZE_T #define _SIZET_ #define __size_t typedef __SIZE_TYPE__ size_t; #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ #define __wchar_t__ #define __WCHAR_T__ #define _WCHAR_T #define _T_WCHAR_ #define _T_WCHAR #define __WCHAR_T #define _WCHAR_T_ #define _BSD_WCHAR_T_ #define _WCHAR_T_DEFINED_ #define _WCHAR_T_DEFINED #define _WCHAR_T_H #define ___int_wchar_t_h #define __INT_WCHAR_T_H #define _GCC_WCHAR_T #define _WCHAR_T_DECLARED /* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_ instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other symbols in the _FOO_T_ family, stays defined even after its corresponding type is defined). If we define wchar_t, then we must undef _WCHAR_T_; for BSD/386 1.1 (and perhaps others), if we undef _WCHAR_T_, then we must also define rune_t, since headers like runetype.h assume that if machine/ansi.h is included, and _BSD_WCHAR_T_ is not defined, then rune_t is available. machine/ansi.h says, "Note that _WCHAR_T_ and _RUNE_T_ must be of the same type." */ #undef _BSD_WCHAR_T_ # 302 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* FreeBSD 5 can't be handled well using "traditional" logic above since it no longer defines _BSD_RUNE_T_ yet still desires to export rune_t in some cases... */ # 316 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 typedef __WCHAR_TYPE__ wchar_t; #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) #define _GCC_MAX_ALIGN_T /* Type whose alignment is supported in every context and is at least as great as that of any standard type not using alignment specifiers. */ typedef struct { long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); /* _Float128 is defined as a basic type, so max_align_t must be sufficiently aligned for it. This code must work in C++, so we use __float128 here; that is only available on some architectures, but only on i386 is extra alignment needed for __float128. */ } max_align_t; # 26 "../sysdeps/s390/nptl/tls.h" 2 # 1 "../include/stdint.h" 1 # 1 "../stdlib/stdint.h" 1 /* Copyright (C) 1997-2021 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 . */ /* * ISO C99: 7.18 Integer types */ #define _STDINT_H 1 #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION # 1 "../bits/libc-header-start.h" 1 /* Handle feature test macros at the start of a header. Copyright (C) 2016-2021 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 . */ /* This header is internal to glibc and should not be included outside of glibc headers. Headers including it must define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header cannot have multiple include guards because ISO C feature test macros depend on the definition of the macro when an affected header is included, not when the first system header is included. */ #undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION /* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ macro. */ #undef __GLIBC_USE_LIB_EXT2 #define __GLIBC_USE_LIB_EXT2 1 /* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ macro. Most but not all symbols enabled by that macro in TS 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in Annex F still require a new feature test macro __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS 18661-1 are not included in C2X (and thus should depend on __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are enabled). __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS 18661-1 not included in C2X. __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS 18661-1 that are also included in C2X (with no feature test macro required in C2X). __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1 that are included in C2X but conditional on __STDC_WANT_IEC_60559_EXT__. (There are currently no features conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS 18661-1.) */ #undef __GLIBC_USE_IEC_60559_BFP_EXT #define __GLIBC_USE_IEC_60559_BFP_EXT 1 #undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X #define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1 #undef __GLIBC_USE_IEC_60559_EXT #define __GLIBC_USE_IEC_60559_EXT 1 /* ISO/IEC TS 18661-4:2015 defines the __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction functions, the symbols from this TS are enabled unconditionally in C2X. */ #undef __GLIBC_USE_IEC_60559_FUNCS_EXT #define __GLIBC_USE_IEC_60559_FUNCS_EXT 1 #undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X #define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1 /* ISO/IEC TS 18661-3:2015 defines the __STDC_WANT_IEC_60559_TYPES_EXT__ macro. */ #undef __GLIBC_USE_IEC_60559_TYPES_EXT #define __GLIBC_USE_IEC_60559_TYPES_EXT 1 # 27 "../stdlib/stdint.h" 2 # 1 "../include/bits/types.h" 1 # 28 "../stdlib/stdint.h" 2 # 1 "../bits/wchar.h" 1 /* wchar_t type related definitions. Copyright (C) 2000-2021 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 . */ #define _BITS_WCHAR_H 1 /* The fallback definitions, for when __WCHAR_MAX__ or __WCHAR_MIN__ are not defined, give the right value and type as long as both int and wchar_t are 32-bit types. Adding L'\0' to a constant value ensures that the type is correct; it is necessary to use (L'\0' + 0) rather than just L'\0' so that the type in C++ is the promoted version of wchar_t rather than the distinct wchar_t type itself. Because wchar_t in preprocessor #if expressions is treated as intmax_t or uintmax_t, the expression (L'\0' - 1) would have the wrong value for WCHAR_MAX in such expressions and so cannot be used to define __WCHAR_MAX in the unsigned case. */ #define __WCHAR_MAX __WCHAR_MAX__ #define __WCHAR_MIN __WCHAR_MIN__ # 29 "../stdlib/stdint.h" 2 # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 30 "../stdlib/stdint.h" 2 /* Exact integral types. */ /* Signed. */ # 1 "../bits/stdint-intn.h" 1 /* Define intN_t types. Copyright (C) 2017-2021 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 . */ #define _BITS_STDINT_INTN_H 1 # 1 "../include/bits/types.h" 1 # 23 "../bits/stdint-intn.h" 2 typedef __int8_t int8_t; typedef __int16_t int16_t; typedef __int32_t int32_t; typedef __int64_t int64_t; # 35 "../stdlib/stdint.h" 2 /* Unsigned. */ # 1 "../bits/stdint-uintn.h" 1 /* Define uintN_t types. Copyright (C) 2017-2021 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 . */ #define _BITS_STDINT_UINTN_H 1 # 1 "../include/bits/types.h" 1 # 23 "../bits/stdint-uintn.h" 2 typedef __uint8_t uint8_t; typedef __uint16_t uint16_t; typedef __uint32_t uint32_t; typedef __uint64_t uint64_t; # 38 "../stdlib/stdint.h" 2 /* Small types. */ /* Signed. */ typedef __int_least8_t int_least8_t; typedef __int_least16_t int_least16_t; typedef __int_least32_t int_least32_t; typedef __int_least64_t int_least64_t; /* Unsigned. */ typedef __uint_least8_t uint_least8_t; typedef __uint_least16_t uint_least16_t; typedef __uint_least32_t uint_least32_t; typedef __uint_least64_t uint_least64_t; /* Fast types. */ /* Signed. */ typedef signed char int_fast8_t; typedef long int int_fast16_t; typedef long int int_fast32_t; typedef long int int_fast64_t; /* Unsigned. */ typedef unsigned char uint_fast8_t; typedef unsigned long int uint_fast16_t; typedef unsigned long int uint_fast32_t; typedef unsigned long int uint_fast64_t; /* Types for `void *' pointers. */ typedef long int intptr_t; #define __intptr_t_defined typedef unsigned long int uintptr_t; /* Largest integral types. */ typedef __intmax_t intmax_t; typedef __uintmax_t uintmax_t; #define __INT64_C(c) c ## L #define __UINT64_C(c) c ## UL /* Limits of integral types. */ /* Minimum of signed integral types. */ #define INT8_MIN (-128) #define INT16_MIN (-32767-1) #define INT32_MIN (-2147483647-1) #define INT64_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum of signed integral types. */ #define INT8_MAX (127) #define INT16_MAX (32767) #define INT32_MAX (2147483647) #define INT64_MAX (__INT64_C(9223372036854775807)) /* Maximum of unsigned integral types. */ #define UINT8_MAX (255) #define UINT16_MAX (65535) #define UINT32_MAX (4294967295U) #define UINT64_MAX (__UINT64_C(18446744073709551615)) /* Minimum of signed integral types having a minimum size. */ #define INT_LEAST8_MIN (-128) #define INT_LEAST16_MIN (-32767-1) #define INT_LEAST32_MIN (-2147483647-1) #define INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum of signed integral types having a minimum size. */ #define INT_LEAST8_MAX (127) #define INT_LEAST16_MAX (32767) #define INT_LEAST32_MAX (2147483647) #define INT_LEAST64_MAX (__INT64_C(9223372036854775807)) /* Maximum of unsigned integral types having a minimum size. */ #define UINT_LEAST8_MAX (255) #define UINT_LEAST16_MAX (65535) #define UINT_LEAST32_MAX (4294967295U) #define UINT_LEAST64_MAX (__UINT64_C(18446744073709551615)) /* Minimum of fast signed integral types having a minimum size. */ #define INT_FAST8_MIN (-128) #define INT_FAST16_MIN (-9223372036854775807L-1) #define INT_FAST32_MIN (-9223372036854775807L-1) #define INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum of fast signed integral types having a minimum size. */ #define INT_FAST8_MAX (127) #define INT_FAST16_MAX (9223372036854775807L) #define INT_FAST32_MAX (9223372036854775807L) #define INT_FAST64_MAX (__INT64_C(9223372036854775807)) /* Maximum of fast unsigned integral types having a minimum size. */ #define UINT_FAST8_MAX (255) #define UINT_FAST16_MAX (18446744073709551615UL) #define UINT_FAST32_MAX (18446744073709551615UL) #define UINT_FAST64_MAX (__UINT64_C(18446744073709551615)) /* Values to test for integral types holding `void *' pointer. */ #define INTPTR_MIN (-9223372036854775807L-1) #define INTPTR_MAX (9223372036854775807L) #define UINTPTR_MAX (18446744073709551615UL) /* Minimum for largest signed integral type. */ #define INTMAX_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum for largest signed integral type. */ #define INTMAX_MAX (__INT64_C(9223372036854775807)) /* Maximum for largest unsigned integral type. */ #define UINTMAX_MAX (__UINT64_C(18446744073709551615)) /* Limits of other integer types. */ /* Limits of `ptrdiff_t' type. */ #define PTRDIFF_MIN (-9223372036854775807L-1) #define PTRDIFF_MAX (9223372036854775807L) # 220 "../stdlib/stdint.h" /* Limits of `sig_atomic_t'. */ #define SIG_ATOMIC_MIN (-2147483647-1) #define SIG_ATOMIC_MAX (2147483647) /* Limit of `size_t' type. */ #define SIZE_MAX (18446744073709551615UL) /* Limits of `wchar_t'. */ /* These constants might also be defined in . */ #define WCHAR_MIN __WCHAR_MIN #define WCHAR_MAX __WCHAR_MAX /* Limits of `wint_t'. */ #define WINT_MIN (0u) #define WINT_MAX (4294967295u) /* Signed. */ #define INT8_C(c) c #define INT16_C(c) c #define INT32_C(c) c #define INT64_C(c) c ## L /* Unsigned. */ #define UINT8_C(c) c #define UINT16_C(c) c #define UINT32_C(c) c ## U #define UINT64_C(c) c ## UL /* Maximal type. */ #define INTMAX_C(c) c ## L #define UINTMAX_C(c) c ## UL #define INT8_WIDTH 8 #define UINT8_WIDTH 8 #define INT16_WIDTH 16 #define UINT16_WIDTH 16 #define INT32_WIDTH 32 #define UINT32_WIDTH 32 #define INT64_WIDTH 64 #define UINT64_WIDTH 64 #define INT_LEAST8_WIDTH 8 #define UINT_LEAST8_WIDTH 8 #define INT_LEAST16_WIDTH 16 #define UINT_LEAST16_WIDTH 16 #define INT_LEAST32_WIDTH 32 #define UINT_LEAST32_WIDTH 32 #define INT_LEAST64_WIDTH 64 #define UINT_LEAST64_WIDTH 64 #define INT_FAST8_WIDTH 8 #define UINT_FAST8_WIDTH 8 #define INT_FAST16_WIDTH __WORDSIZE #define UINT_FAST16_WIDTH __WORDSIZE #define INT_FAST32_WIDTH __WORDSIZE #define UINT_FAST32_WIDTH __WORDSIZE #define INT_FAST64_WIDTH 64 #define UINT_FAST64_WIDTH 64 #define INTPTR_WIDTH __WORDSIZE #define UINTPTR_WIDTH __WORDSIZE #define INTMAX_WIDTH 64 #define UINTMAX_WIDTH 64 #define PTRDIFF_WIDTH __WORDSIZE #define SIG_ATOMIC_WIDTH 32 #define SIZE_WIDTH __WORDSIZE #define WCHAR_WIDTH 32 #define WINT_WIDTH 32 # 2 "../include/stdint.h" 2 # 27 "../sysdeps/s390/nptl/tls.h" 2 # 1 "../include/stdlib.h" 1 # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ # 5 "../include/stdlib.h" 2 /* Workaround PR90731 with GCC 9 when using ldbl redirects in C++. */ # 1 "../sysdeps/ieee754/ldbl-128/bits/floatn.h" 1 /* Macros to control TS 18661-3 glibc features on ldbl-128 platforms. Copyright (C) 2017-2021 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 . */ #define _BITS_FLOATN_H # 1 "../sysdeps/ieee754/ldbl-opt/bits/long-double.h" 1 /* Properties of long double type. ldbl-opt version. Copyright (C) 2016-2021 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 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 . */ #define __LONG_DOUBLE_MATH_OPTIONAL 1 #define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0 # 24 "../sysdeps/ieee754/ldbl-128/bits/floatn.h" 2 /* Defined to 1 if the current compiler invocation provides a floating-point type with the IEEE 754 binary128 format, and this glibc includes corresponding *f128 interfaces for it. */ #define __HAVE_FLOAT128 1 /* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct from the default float, double and long double types in this glibc. */ #define __HAVE_DISTINCT_FLOAT128 0 /* Defined to 1 if the current compiler invocation provides a floating-point type with the right format for _Float64x, and this glibc includes corresponding *f64x interfaces for it. */ #define __HAVE_FLOAT64X __HAVE_FLOAT128 /* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has the format of _Float128, which must be different from that of long double. */ #define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128 /* Defined to concatenate the literal suffix to be used with _Float128 types, if __HAVE_FLOAT128 is 1. */ #define __f128(x) x ##f128 /* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */ #define __CFLOAT128 _Complex _Float128 /* The remaining of this file provides support for older compilers. */ /* The type _Float128 exists only since GCC 7.0. */ /* Various built-in functions do not exist before GCC 7.0. */ # 1 "../bits/floatn-common.h" 1 /* Macros to control TS 18661-3 glibc features where the same definitions are appropriate for all platforms. Copyright (C) 2017-2021 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 . */ #define _BITS_FLOATN_COMMON_H # 1 "../sysdeps/ieee754/ldbl-opt/bits/long-double.h" 1 /* Properties of long double type. ldbl-opt version. Copyright (C) 2016-2021 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 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 . */ #define __LONG_DOUBLE_MATH_OPTIONAL 1 #define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0 # 25 "../bits/floatn-common.h" 2 /* This header should be included at the bottom of each bits/floatn.h. It defines the following macros for each _FloatN and _FloatNx type, where the same definitions, or definitions based only on the macros in bits/floatn.h, are appropriate for all glibc configurations. */ /* Defined to 1 if the current compiler invocation provides a floating-point type with the right format for this type, and this glibc includes corresponding *fN or *fNx interfaces for it. */ #define __HAVE_FLOAT16 0 #define __HAVE_FLOAT32 1 #define __HAVE_FLOAT64 1 #define __HAVE_FLOAT32X 1 #define __HAVE_FLOAT128X 0 /* Defined to 1 if the corresponding __HAVE_ macro is 1 and the type is the first with its format in the sequence of (the default choices for) float, double, long double, _Float16, _Float32, _Float64, _Float128, _Float32x, _Float64x, _Float128x for this glibc; that is, if functions present once per floating-point format rather than once per type are present for this type. All configurations supported by glibc have _Float32 the same format as float, _Float64 and _Float32x the same format as double, the _Float64x the same format as either long double or _Float128. No configurations support _Float128x or, as of GCC 7, have compiler support for a type meeting the requirements for _Float128x. */ #define __HAVE_DISTINCT_FLOAT16 __HAVE_FLOAT16 #define __HAVE_DISTINCT_FLOAT32 0 #define __HAVE_DISTINCT_FLOAT64 0 #define __HAVE_DISTINCT_FLOAT32X 0 #define __HAVE_DISTINCT_FLOAT64X 0 #define __HAVE_DISTINCT_FLOAT128X __HAVE_FLOAT128X /* Defined to 1 if the corresponding _FloatN type is not binary compatible with the corresponding ISO C type in the current compilation unit as opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built in glibc. */ #define __HAVE_FLOAT128_UNLIKE_LDBL (__HAVE_DISTINCT_FLOAT128 && __LDBL_MANT_DIG__ != 113) /* Defined to 1 if any _FloatN or _FloatNx types that are not ABI-distinct are however distinct types at the C language level (so for the purposes of __builtin_types_compatible_p and _Generic). */ #define __HAVE_FLOATN_NOT_TYPEDEF 1 /* Defined to concatenate the literal suffix to be used with _FloatN or _FloatNx types, if __HAVE_ is 1. The corresponding literal suffixes exist since GCC 7, for C only. */ # 88 "../bits/floatn-common.h" #define __f32(x) x ##f32 #define __f64(x) x ##f64 #define __f32x(x) x ##f32x #define __f64x(x) x ##f64x /* Defined to a complex type if __HAVE_ is 1. */ # 146 "../bits/floatn-common.h" #define __CFLOAT32 _Complex _Float32 #define __CFLOAT64 _Complex _Float64 #define __CFLOAT32X _Complex _Float32x #define __CFLOAT64X _Complex _Float64x /* The remaining of this file provides support for older compilers. */ # 210 "../bits/floatn-common.h" /* If double, long double and _Float64 all have the same set of values, TS 18661-3 requires the usual arithmetic conversions on long double and _Float64 to produce _Float64. For this to be the case when building with a compiler without a distinct _Float64 type, _Float64 must be a typedef for long double, not for double. */ # 249 "../bits/floatn-common.h" # 309 "../bits/floatn-common.h" # 326 "../bits/floatn-common.h" # 96 "../sysdeps/ieee754/ldbl-128/bits/floatn.h" 2 # 9 "../include/stdlib.h" 2 # 1 "../stdlib/stdlib.h" 1 /* Copyright (C) 1991-2021 Free Software Foundation, Inc. Copyright The GNU Toolchain Authors. 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 . */ /* * ISO C99 Standard: 7.20 General utilities */ #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION # 1 "../bits/libc-header-start.h" 1 /* Handle feature test macros at the start of a header. Copyright (C) 2016-2021 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 . */ /* This header is internal to glibc and should not be included outside of glibc headers. Headers including it must define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header cannot have multiple include guards because ISO C feature test macros depend on the definition of the macro when an affected header is included, not when the first system header is included. */ #undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION /* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ macro. */ #undef __GLIBC_USE_LIB_EXT2 #define __GLIBC_USE_LIB_EXT2 1 /* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ macro. Most but not all symbols enabled by that macro in TS 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in Annex F still require a new feature test macro __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS 18661-1 are not included in C2X (and thus should depend on __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are enabled). __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS 18661-1 not included in C2X. __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS 18661-1 that are also included in C2X (with no feature test macro required in C2X). __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1 that are included in C2X but conditional on __STDC_WANT_IEC_60559_EXT__. (There are currently no features conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS 18661-1.) */ #undef __GLIBC_USE_IEC_60559_BFP_EXT #define __GLIBC_USE_IEC_60559_BFP_EXT 1 #undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X #define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1 #undef __GLIBC_USE_IEC_60559_EXT #define __GLIBC_USE_IEC_60559_EXT 1 /* ISO/IEC TS 18661-4:2015 defines the __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction functions, the symbols from this TS are enabled unconditionally in C2X. */ #undef __GLIBC_USE_IEC_60559_FUNCS_EXT #define __GLIBC_USE_IEC_60559_FUNCS_EXT 1 #undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X #define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1 /* ISO/IEC TS 18661-3:2015 defines the __STDC_WANT_IEC_60559_TYPES_EXT__ macro. */ #undef __GLIBC_USE_IEC_60559_TYPES_EXT #define __GLIBC_USE_IEC_60559_TYPES_EXT 1 # 27 "../stdlib/stdlib.h" 2 /* Get size_t, wchar_t and NULL from . */ #define __need_size_t #define __need_wchar_t #define __need_NULL # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 33 "../stdlib/stdlib.h" 2 __BEGIN_DECLS #define _STDLIB_H 1 /* XPG requires a few symbols from being defined. */ # 1 "../sysdeps/unix/sysv/linux/bits/waitflags.h" 1 /* Definitions of flag bits for `waitpid' et al. Copyright (C) 1992-2021 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 . */ /* Bits in the third argument to `waitpid'. */ #define WNOHANG 1 #define WUNTRACED 2 /* Bits in the fourth argument to `waitid'. */ #define WSTOPPED 2 #define WEXITED 4 #define WCONTINUED 8 #define WNOWAIT 0x01000000 #define __WNOTHREAD 0x20000000 #define __WALL 0x40000000 #define __WCLONE 0x80000000 # 41 "../stdlib/stdlib.h" 2 # 1 "../bits/waitstatus.h" 1 /* Definitions of status bits for `wait' et al. Copyright (C) 1992-2021 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 . */ /* Everything extant so far uses these same bits. */ /* If WIFEXITED(STATUS), the low-order 8 bits of the status. */ #define __WEXITSTATUS(status) (((status) & 0xff00) >> 8) /* If WIFSIGNALED(STATUS), the terminating signal. */ #define __WTERMSIG(status) ((status) & 0x7f) /* If WIFSTOPPED(STATUS), the signal that stopped the child. */ #define __WSTOPSIG(status) __WEXITSTATUS(status) /* Nonzero if STATUS indicates normal termination. */ #define __WIFEXITED(status) (__WTERMSIG(status) == 0) /* Nonzero if STATUS indicates termination by a signal. */ #define __WIFSIGNALED(status) (((signed char) (((status) & 0x7f) + 1) >> 1) > 0) /* Nonzero if STATUS indicates the child is stopped. */ #define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f) /* Nonzero if STATUS indicates the child continued after a stop. We only define this if provides the WCONTINUED flag bit. */ #define __WIFCONTINUED(status) ((status) == __W_CONTINUED) /* Nonzero if STATUS indicates the child dumped core. */ #define __WCOREDUMP(status) ((status) & __WCOREFLAG) /* Macros for constructing status values. */ #define __W_EXITCODE(ret,sig) ((ret) << 8 | (sig)) #define __W_STOPCODE(sig) ((sig) << 8 | 0x7f) #define __W_CONTINUED 0xffff #define __WCOREFLAG 0x80 # 42 "../stdlib/stdlib.h" 2 /* Define the macros also would define this way. */ #define WEXITSTATUS(status) __WEXITSTATUS (status) #define WTERMSIG(status) __WTERMSIG (status) #define WSTOPSIG(status) __WSTOPSIG (status) #define WIFEXITED(status) __WIFEXITED (status) #define WIFSIGNALED(status) __WIFSIGNALED (status) #define WIFSTOPPED(status) __WIFSTOPPED (status) #define WIFCONTINUED(status) __WIFCONTINUED (status) /* _FloatN API tests for enablement. */ /* Returned by `div'. */ typedef struct { int quot; /* Quotient. */ int rem; /* Remainder. */ } div_t; /* Returned by `ldiv'. */ typedef struct { long int quot; /* Quotient. */ long int rem; /* Remainder. */ } ldiv_t; #define __ldiv_t_defined 1 /* Returned by `lldiv'. */ __extension__ typedef struct { long long int quot; /* Quotient. */ long long int rem; /* Remainder. */ } lldiv_t; #define __lldiv_t_defined 1 /* The largest number rand will return (same as INT_MAX). */ #define RAND_MAX 2147483647 /* We define these the same for all machines. Changes from this to the outside world should be done in `_exit'. */ #define EXIT_FAILURE 1 #define EXIT_SUCCESS 0 /* Maximum length of a multibyte character in the current locale. */ #define MB_CUR_MAX (__ctype_get_mb_cur_max ()) extern size_t __ctype_get_mb_cur_max (void) __THROW __wur; /* Convert a string to a floating-point number. */ extern double atof (const char *__nptr) __THROW __attribute_pure__ __nonnull ((1)) __wur; /* Convert a string to an integer. */ extern int atoi (const char *__nptr) __THROW __attribute_pure__ __nonnull ((1)) __wur; /* Convert a string to a long integer. */ extern long int atol (const char *__nptr) __THROW __attribute_pure__ __nonnull ((1)) __wur; /* Convert a string to a long long integer. */ __extension__ extern long long int atoll (const char *__nptr) __THROW __attribute_pure__ __nonnull ((1)) __wur; /* Convert a string to a floating-point number. */ extern double strtod (const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)); /* Likewise for `float' and `long double' sizes of floating-point numbers. */ extern float strtof (const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)); extern long double strtold (const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)); /* Likewise for '_FloatN' and '_FloatNx'. */ extern _Float32 strtof32 (const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)); extern _Float64 strtof64 (const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)); extern _Float128 strtof128 (const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)); extern _Float32x strtof32x (const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)); extern _Float64x strtof64x (const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)); /* Convert a string to a long integer. */ extern long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)); /* Convert a string to an unsigned long integer. */ extern unsigned long int strtoul (const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)); /* Convert a string to a quadword integer. */ __extension__ extern long long int strtoq (const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)); /* Convert a string to an unsigned quadword integer. */ __extension__ extern unsigned long long int strtouq (const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)); /* Convert a string to a quadword integer. */ __extension__ extern long long int strtoll (const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)); /* Convert a string to an unsigned quadword integer. */ __extension__ extern unsigned long long int strtoull (const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)); /* Convert a floating-point number to a string. */ extern int strfromd (char *__dest, size_t __size, const char *__format, double __f) __THROW __nonnull ((3)); extern int strfromf (char *__dest, size_t __size, const char *__format, float __f) __THROW __nonnull ((3)); extern int strfroml (char *__dest, size_t __size, const char *__format, long double __f) __THROW __nonnull ((3)); extern int strfromf32 (char *__dest, size_t __size, const char * __format, _Float32 __f) __THROW __nonnull ((3)); extern int strfromf64 (char *__dest, size_t __size, const char * __format, _Float64 __f) __THROW __nonnull ((3)); extern int strfromf128 (char *__dest, size_t __size, const char * __format, _Float128 __f) __THROW __nonnull ((3)); extern int strfromf32x (char *__dest, size_t __size, const char * __format, _Float32x __f) __THROW __nonnull ((3)); extern int strfromf64x (char *__dest, size_t __size, const char * __format, _Float64x __f) __THROW __nonnull ((3)); /* Parallel versions of the functions above which take the locale to use as an additional parameter. These are GNU extensions inspired by the POSIX.1-2008 extended locale API. */ # 1 "../include/bits/types/locale_t.h" 1 # 1 "../locale/bits/types/locale_t.h" 1 /* Definition of locale_t. Copyright (C) 2017-2021 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 . */ #define _BITS_TYPES_LOCALE_T_H 1 # 1 "../include/bits/types/__locale_t.h" 1 # 1 "../locale/bits/types/__locale_t.h" 1 /* Definition of struct __locale_struct and __locale_t. Copyright (C) 1997-2021 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 . */ #define _BITS_TYPES___LOCALE_T_H 1 /* POSIX.1-2008: the locale_t type, representing a locale context (implementation-namespace version). This type should be treated as opaque by applications; some details are exposed for the sake of efficiency in e.g. ctype functions. */ struct __locale_struct { /* Note: LC_ALL is not a valid index into this array. */ struct __locale_data *__locales[13]; /* 13 = __LC_LAST. */ /* To increase the speed of this solution we add some special members. */ const unsigned short int *__ctype_b; const int *__ctype_tolower; const int *__ctype_toupper; /* Note: LC_ALL is not a valid index into this array. */ const char *__names[13]; }; typedef struct __locale_struct *__locale_t; # 2 "../include/bits/types/__locale_t.h" 2 # 23 "../locale/bits/types/locale_t.h" 2 typedef __locale_t locale_t; # 2 "../include/bits/types/locale_t.h" 2 # 274 "../stdlib/stdlib.h" 2 extern long int strtol_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __THROW __nonnull ((1, 4)); extern unsigned long int strtoul_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __THROW __nonnull ((1, 4)); __extension__ extern long long int strtoll_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __THROW __nonnull ((1, 4)); __extension__ extern unsigned long long int strtoull_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __THROW __nonnull ((1, 4)); extern double strtod_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __THROW __nonnull ((1, 3)); extern float strtof_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __THROW __nonnull ((1, 3)); extern long double strtold_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __THROW __nonnull ((1, 3)); extern _Float32 strtof32_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __THROW __nonnull ((1, 3)); extern _Float64 strtof64_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __THROW __nonnull ((1, 3)); extern _Float128 strtof128_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __THROW __nonnull ((1, 3)); extern _Float32x strtof32x_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __THROW __nonnull ((1, 3)); extern _Float64x strtof64x_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __THROW __nonnull ((1, 3)); __extern_inline int __NTH (atoi (const char *__nptr)) { return (int) strtol (__nptr, (char **) NULL, 10); } __extern_inline long int __NTH (atol (const char *__nptr)) { return strtol (__nptr, (char **) NULL, 10); } __extension__ __extern_inline long long int __NTH (atoll (const char *__nptr)) { return strtoll (__nptr, (char **) NULL, 10); } /* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant digit first. Returns a pointer to static storage overwritten by the next call. */ extern char *l64a (long int __n) __THROW __wur; /* Read a number from a string S in base 64 as above. */ extern long int a64l (const char *__s) __THROW __attribute_pure__ __nonnull ((1)) __wur; # 1 "../include/sys/types.h" 1 # 1 "../posix/sys/types.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * POSIX Standard: 2.6 Primitive System Data Types */ #define _SYS_TYPES_H 1 __BEGIN_DECLS # 1 "../include/bits/types.h" 1 # 30 "../posix/sys/types.h" 2 typedef __u_char u_char; typedef __u_short u_short; typedef __u_int u_int; typedef __u_long u_long; typedef __quad_t quad_t; typedef __u_quad_t u_quad_t; typedef __fsid_t fsid_t; #define __u_char_defined typedef __loff_t loff_t; typedef __ino_t ino_t; #define __ino_t_defined typedef __ino64_t ino64_t; #define __ino64_t_defined typedef __dev_t dev_t; #define __dev_t_defined typedef __gid_t gid_t; #define __gid_t_defined typedef __mode_t mode_t; #define __mode_t_defined typedef __nlink_t nlink_t; #define __nlink_t_defined typedef __uid_t uid_t; #define __uid_t_defined typedef __off_t off_t; #define __off_t_defined typedef __off64_t off64_t; #define __off64_t_defined typedef __pid_t pid_t; #define __pid_t_defined typedef __id_t id_t; #define __id_t_defined typedef __ssize_t ssize_t; #define __ssize_t_defined typedef __daddr_t daddr_t; typedef __caddr_t caddr_t; #define __daddr_t_defined typedef __key_t key_t; #define __key_t_defined # 1 "../include/bits/types/clock_t.h" 1 # 1 "../time/bits/types/clock_t.h" 1 #define __clock_t_defined 1 # 1 "../include/bits/types.h" 1 # 5 "../time/bits/types/clock_t.h" 2 /* Returned by `clock'. */ typedef __clock_t clock_t; # 2 "../include/bits/types/clock_t.h" 2 # 127 "../posix/sys/types.h" 2 # 1 "../include/bits/types/clockid_t.h" 1 # 1 "../time/bits/types/clockid_t.h" 1 #define __clockid_t_defined 1 # 1 "../include/bits/types.h" 1 # 5 "../time/bits/types/clockid_t.h" 2 /* Clock ID used in clock and timer functions. */ typedef __clockid_t clockid_t; # 2 "../include/bits/types/clockid_t.h" 2 # 129 "../posix/sys/types.h" 2 # 1 "../include/bits/types/time_t.h" 1 # 1 "../time/bits/types/time_t.h" 1 #define __time_t_defined 1 # 1 "../include/bits/types.h" 1 # 5 "../time/bits/types/time_t.h" 2 /* Returned by `time'. */ typedef __time_t time_t; # 2 "../include/bits/types/time_t.h" 2 # 130 "../posix/sys/types.h" 2 # 1 "../include/bits/types/timer_t.h" 1 # 1 "../time/bits/types/timer_t.h" 1 #define __timer_t_defined 1 # 1 "../include/bits/types.h" 1 # 5 "../time/bits/types/timer_t.h" 2 /* Timer ID returned by `timer_create'. */ typedef __timer_t timer_t; # 2 "../include/bits/types/timer_t.h" 2 # 131 "../posix/sys/types.h" 2 typedef __useconds_t useconds_t; #define __useconds_t_defined typedef __suseconds_t suseconds_t; #define __suseconds_t_defined #define __need_size_t # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 145 "../posix/sys/types.h" 2 /* Old compatibility names for C types. */ typedef unsigned long int ulong; typedef unsigned short int ushort; typedef unsigned int uint; /* These size-specific names are used by some of the inet code. */ /* These were defined by ISO C without the first `_'. */ typedef __uint8_t u_int8_t; typedef __uint16_t u_int16_t; typedef __uint32_t u_int32_t; typedef __uint64_t u_int64_t; typedef int register_t __attribute__ ((__mode__ (__word__))); /* Some code from BIND tests this macro to see if the types above are defined. */ #define __BIT_TYPES_DEFINED__ 1 /* In BSD is expected to define BYTE_ORDER. */ # 1 "../include/endian.h" 1 #define BIG_ENDI 1 #undef LITTLE_ENDI #define HIGH_HALF 0 #define LOW_HALF 1 # 17 "../include/endian.h" # 177 "../posix/sys/types.h" 2 /* It also defines `fd_set' and the FD_* macros for `select'. */ # 1 "../include/sys/select.h" 1 # 1 "../misc/sys/select.h" 1 /* `fd_set' type and related macros, and `select'/`pselect' declarations. Copyright (C) 1996-2021 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 . */ /* POSIX 1003.1g: 6.2 Select from File Descriptor Sets */ #define _SYS_SELECT_H 1 /* Get definition of needed basic types. */ # 1 "../include/bits/types.h" 1 # 28 "../misc/sys/select.h" 2 /* Get __FD_* definitions. */ # 1 "../bits/select.h" 1 /* Copyright (C) 1997-2021 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 . */ /* We don't use `memset' because this would require a prototype and the array isn't too big. */ #define __FD_ZERO(s) do { unsigned int __i; fd_set *__arr = (s); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) __FDS_BITS (__arr)[__i] = 0; } while (0) #define __FD_SET(d,s) ((void) (__FDS_BITS (s)[__FD_ELT(d)] |= __FD_MASK(d))) #define __FD_CLR(d,s) ((void) (__FDS_BITS (s)[__FD_ELT(d)] &= ~__FD_MASK(d))) #define __FD_ISSET(d,s) ((__FDS_BITS (s)[__FD_ELT (d)] & __FD_MASK (d)) != 0) # 31 "../misc/sys/select.h" 2 /* Get sigset_t. */ # 1 "../include/bits/types/sigset_t.h" 1 # 1 "../signal/bits/types/sigset_t.h" 1 #define __sigset_t_defined 1 # 1 "../sysdeps/unix/sysv/linux/bits/types/__sigset_t.h" 1 #define ____sigset_t_defined #define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int))) typedef struct { unsigned long int __val[_SIGSET_NWORDS]; } __sigset_t; # 5 "../signal/bits/types/sigset_t.h" 2 /* A set of signals to be blocked, unblocked, or waited for. */ typedef __sigset_t sigset_t; # 2 "../include/bits/types/sigset_t.h" 2 # 34 "../misc/sys/select.h" 2 /* Get definition of timer specification structures. */ # 1 "../include/bits/types/time_t.h" 1 # 37 "../misc/sys/select.h" 2 # 1 "../include/bits/types/struct_timeval.h" 1 # 1 "../time/bits/types/struct_timeval.h" 1 #define __timeval_defined 1 # 1 "../include/bits/types.h" 1 # 5 "../time/bits/types/struct_timeval.h" 2 /* A time value that is accurate to the nearest microsecond but also has a range of years. */ struct timeval { __time_t tv_sec; /* Seconds. */ __suseconds_t tv_usec; /* Microseconds. */ }; # 2 "../include/bits/types/struct_timeval.h" 2 # 38 "../misc/sys/select.h" 2 # 1 "../include/bits/types/struct_timespec.h" 1 # 1 "../time/bits/types/struct_timespec.h" 1 /* NB: Include guard matches what uses. */ #define _STRUCT_TIMESPEC 1 # 1 "../include/bits/types.h" 1 # 6 "../time/bits/types/struct_timespec.h" 2 # 1 "../include/bits/endian.h" 1 # 7 "../time/bits/types/struct_timespec.h" 2 # 1 "../include/bits/types/time_t.h" 1 # 8 "../time/bits/types/struct_timespec.h" 2 /* POSIX.1b structure for a time value. This is like a `struct timeval' but has nanoseconds instead of microseconds. */ struct timespec { __time_t tv_sec; /* Seconds. */ __syscall_slong_t tv_nsec; /* Nanoseconds. */ # 31 "../time/bits/types/struct_timespec.h" }; # 2 "../include/bits/types/struct_timespec.h" 2 # 40 "../misc/sys/select.h" 2 /* The fd_set member is required to be an array of longs. */ typedef long int __fd_mask; /* Some versions of define this macros. */ #undef __NFDBITS /* It's easier to assume 8-bit bytes than to get CHAR_BIT. */ #define __NFDBITS (8 * (int) sizeof (__fd_mask)) #define __FD_ELT(d) ((d) / __NFDBITS) #define __FD_MASK(d) ((__fd_mask) (1UL << ((d) % __NFDBITS))) /* fd_set for select and pselect. */ typedef struct { /* XPG4.2 requires this member name. Otherwise avoid the name from the global namespace. */ __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS]; #define __FDS_BITS(set) ((set)->fds_bits) } fd_set; /* Maximum number of file descriptors in `fd_set'. */ #define FD_SETSIZE __FD_SETSIZE /* Sometimes the fd_set member is assumed to have this type. */ typedef __fd_mask fd_mask; /* Number of bits per word of `fd_set' (some code assumes this is 32). */ #define NFDBITS __NFDBITS /* Access macros for `fd_set'. */ #define FD_SET(fd,fdsetp) __FD_SET (fd, fdsetp) #define FD_CLR(fd,fdsetp) __FD_CLR (fd, fdsetp) #define FD_ISSET(fd,fdsetp) __FD_ISSET (fd, fdsetp) #define FD_ZERO(fdsetp) __FD_ZERO (fdsetp) __BEGIN_DECLS /* Check the first NFDS descriptors each in READFDS (if not NULL) for read readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out after waiting the interval specified therein. Returns the number of ready descriptors, or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout); # 118 "../misc/sys/select.h" /* Same as above only that the TIMEOUT value is given with higher resolution and a sigmask which is been set temporarily. This version should be used. This function is a cancellation point and therefore not marked with __THROW. */ extern int pselect (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, const struct timespec *__restrict __timeout, const __sigset_t *__restrict __sigmask); # 145 "../misc/sys/select.h" /* Define some inlines helping to catch common problems. */ __END_DECLS # 3 "../include/sys/select.h" 2 /* Now define the internal interfaces. */ #define __pselect64 __pselect #define __select64 __select # 35 "../include/sys/select.h" extern int __pselect (int __nfds, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, const struct timespec *__timeout, const __sigset_t *__sigmask); extern int __select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout); libc_hidden_proto (__select) # 180 "../posix/sys/types.h" 2 typedef __blksize_t blksize_t; #define __blksize_t_defined /* Types from the Large File Support interface. */ typedef __blkcnt_t blkcnt_t; /* Type to count number of disk blocks. */ #define __blkcnt_t_defined typedef __fsblkcnt_t fsblkcnt_t; /* Type to count file system blocks. */ #define __fsblkcnt_t_defined typedef __fsfilcnt_t fsfilcnt_t; /* Type to count file system inodes. */ #define __fsfilcnt_t_defined # 217 "../posix/sys/types.h" typedef __blkcnt64_t blkcnt64_t; /* Type to count number of disk blocks. */ typedef __fsblkcnt64_t fsblkcnt64_t; /* Type to count file system blocks. */ typedef __fsfilcnt64_t fsfilcnt64_t; /* Type to count file system inodes. */ /* Now add the thread types. */ # 1 "../sysdeps/nptl/bits/pthreadtypes.h" 1 /* Declaration of common pthread types for all architectures. Copyright (C) 2017-2021 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 . */ #define _BITS_PTHREADTYPES_COMMON_H 1 /* For internal mutex and condition variable definitions. */ # 1 "../sysdeps/nptl/bits/thread-shared-types.h" 1 /* Common threading primitives definitions for both POSIX and C11. Copyright (C) 2017-2021 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 . */ #define _THREAD_SHARED_TYPES_H 1 /* Arch-specific definitions. Each architecture must define the following macros to define the expected sizes of pthread data types: __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t. __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t. __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t. __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t. __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t. __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t. __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t. __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t. __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t. The additional macro defines any constraint for the lock alignment inside the thread structures: __LOCK_ALIGNMENT - for internal lock/futex usage. Same idea but for the once locking primitive: __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition. */ # 1 "../sysdeps/nptl/bits/pthreadtypes-arch.h" 1 /* Machine-specific pthread type layouts. Generic version. Copyright (C) 2019-2021 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 . */ #define _BITS_PTHREADTYPES_ARCH_H 1 # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 24 "../sysdeps/nptl/bits/pthreadtypes-arch.h" 2 #define __SIZEOF_PTHREAD_ATTR_T 56 #define __SIZEOF_PTHREAD_MUTEX_T 40 #define __SIZEOF_PTHREAD_RWLOCK_T 56 #define __SIZEOF_PTHREAD_BARRIER_T 32 #define __SIZEOF_PTHREAD_MUTEXATTR_T 4 #define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 #define __SIZEOF_PTHREAD_BARRIERATTR_T 4 #define __SIZEOF_PTHREAD_COND_T 48 #define __SIZEOF_PTHREAD_CONDATTR_T 4 #define __LOCK_ALIGNMENT #define __ONCE_ALIGNMENT # 45 "../sysdeps/nptl/bits/thread-shared-types.h" 2 # 1 "../include/bits/atomic_wide_counter.h" 1 # 1 "../bits/atomic_wide_counter.h" 1 /* Monotonically increasing wide counters (at least 62 bits). Copyright (C) 2016-2021 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 . */ #define _BITS_ATOMIC_WIDE_COUNTER_H /* Counter that is monotonically increasing (by less than 2**31 per increment), with a single writer, and an arbitrary number of readers. */ typedef union { __extension__ unsigned long long int __value64; struct { unsigned int __low; unsigned int __high; } __value32; } __atomic_wide_counter; # 2 "../include/bits/atomic_wide_counter.h" 2 # 47 "../sysdeps/nptl/bits/thread-shared-types.h" 2 /* Common definition of pthread_mutex_t. */ typedef struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __pthread_list_t; typedef struct __pthread_internal_slist { struct __pthread_internal_slist *__next; } __pthread_slist_t; /* Arch-specific mutex definitions. A generic implementation is provided by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture can override it by defining: 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t definition). It should contains at least the internal members defined in the generic version. 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with atomic operations. 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization. It should initialize the mutex internal flag. */ # 1 "../sysdeps/s390/nptl/bits/struct_mutex.h" 1 /* S390 internal mutex struct definitions. Copyright (C) 2019-2021 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 . */ #define _THREAD_MUTEX_INTERNAL_H 1 struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; /* KIND must stay at this position in the structure to maintain binary compatibility with static initializers. */ int __kind; short __spins; short __elision; __pthread_list_t __list; #define __PTHREAD_MUTEX_HAVE_PREV 1 # 53 "../sysdeps/s390/nptl/bits/struct_mutex.h" }; #define __PTHREAD_MUTEX_INITIALIZER(__kind) 0, 0, 0, 0, __kind, 0, 0, { 0, 0 } # 77 "../sysdeps/nptl/bits/thread-shared-types.h" 2 /* Arch-sepecific read-write lock definitions. A generic implementation is provided by struct_rwlock.h. If required, an architecture can override it by defining: 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition). It should contain at least the internal members defined in the generic version. 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization. It should initialize the rwlock internal type. */ # 1 "../sysdeps/s390/nptl/bits/struct_rwlock.h" 1 /* S390 internal rwlock struct definitions. Copyright (C) 2019-2021 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 . */ #define _RWLOCK_INTERNAL_H struct __pthread_rwlock_arch_t { unsigned int __readers; unsigned int __writers; unsigned int __wrphase_futex; unsigned int __writers_futex; unsigned int __pad3; unsigned int __pad4; int __cur_writer; int __shared; unsigned long int __pad1; unsigned long int __pad2; /* FLAGS must stay at this position in the structure to maintain binary compatibility. */ unsigned int __flags; # 48 "../sysdeps/s390/nptl/bits/struct_rwlock.h" }; #define __PTHREAD_RWLOCK_INITIALIZER(__flags) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, __flags # 90 "../sysdeps/nptl/bits/thread-shared-types.h" 2 /* Common definition of pthread_cond_t. */ struct __pthread_cond_s { __atomic_wide_counter __wseq; __atomic_wide_counter __g1_start; unsigned int __g_refs[2] __LOCK_ALIGNMENT; unsigned int __g_size[2]; unsigned int __g1_orig_size; unsigned int __wrefs; unsigned int __g_signals[2]; }; typedef unsigned int __tss_t; typedef unsigned long int __thrd_t; typedef struct { int __data __ONCE_ALIGNMENT; } __once_flag; #define __ONCE_FLAG_INIT { 0 } # 24 "../sysdeps/nptl/bits/pthreadtypes.h" 2 /* Thread identifiers. The structure of the attribute type is not exposed on purpose. */ typedef unsigned long int pthread_t; /* Data structures for mutex handling. The structure of the attribute type is not exposed on purpose. */ typedef union { char __size[__SIZEOF_PTHREAD_MUTEXATTR_T]; int __align; } pthread_mutexattr_t; /* Data structure for condition variable handling. The structure of the attribute type is not exposed on purpose. */ typedef union { char __size[__SIZEOF_PTHREAD_CONDATTR_T]; int __align; } pthread_condattr_t; /* Keys for thread-specific data */ typedef unsigned int pthread_key_t; /* Once-only execution */ typedef int __ONCE_ALIGNMENT pthread_once_t; union pthread_attr_t { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; }; typedef union pthread_attr_t pthread_attr_t; #define __have_pthread_attr_t 1 typedef union { struct __pthread_mutex_s __data; char __size[__SIZEOF_PTHREAD_MUTEX_T]; long int __align; } pthread_mutex_t; typedef union { struct __pthread_cond_s __data; char __size[__SIZEOF_PTHREAD_COND_T]; __extension__ long long int __align; } pthread_cond_t; /* Data structure for reader-writer lock variable handling. The structure of the attribute type is deliberately not exposed. */ typedef union { struct __pthread_rwlock_arch_t __data; char __size[__SIZEOF_PTHREAD_RWLOCK_T]; long int __align; } pthread_rwlock_t; typedef union { char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T]; long int __align; } pthread_rwlockattr_t; /* POSIX spinlock data type. */ typedef volatile int pthread_spinlock_t; /* POSIX barriers data type. The structure of the type is deliberately not exposed. */ typedef union { char __size[__SIZEOF_PTHREAD_BARRIER_T]; long int __align; } pthread_barrier_t; typedef union { char __size[__SIZEOF_PTHREAD_BARRIERATTR_T]; int __align; } pthread_barrierattr_t; # 228 "../posix/sys/types.h" 2 __END_DECLS # 2 "../include/sys/types.h" 2 # 396 "../stdlib/stdlib.h" 2 /* These are the functions that actually do things. The `random', `srandom', `initstate' and `setstate' functions are those from BSD Unices. The `rand' and `srand' functions are required by the ANSI standard. We provide both interfaces to the same random number generator. */ /* Return a random long integer between 0 and 2^31-1 inclusive. */ extern long int random (void) __THROW; /* Seed the random number generator with the given number. */ extern void srandom (unsigned int __seed) __THROW; /* Initialize the random number generator to use state buffer STATEBUF, of length STATELEN, and seed it with SEED. Optimal lengths are 8, 16, 32, 64, 128 and 256, the bigger the better; values less than 8 will cause an error and values greater than 256 will be rounded down. */ extern char *initstate (unsigned int __seed, char *__statebuf, size_t __statelen) __THROW __nonnull ((2)); /* Switch the random number generator to state buffer STATEBUF, which should have been previously initialized by `initstate'. */ extern char *setstate (char *__statebuf) __THROW __nonnull ((1)); /* Reentrant versions of the `random' family of functions. These functions all use the following data structure to contain state, rather than global state variables. */ struct random_data { int32_t *fptr; /* Front pointer. */ int32_t *rptr; /* Rear pointer. */ int32_t *state; /* Array of state values. */ int rand_type; /* Type of random number generator. */ int rand_deg; /* Degree of random number generator. */ int rand_sep; /* Distance between front and rear. */ int32_t *end_ptr; /* Pointer behind state table. */ }; extern int random_r (struct random_data *__restrict __buf, int32_t *__restrict __result) __THROW __nonnull ((1, 2)); extern int srandom_r (unsigned int __seed, struct random_data *__buf) __THROW __nonnull ((2)); extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) __THROW __nonnull ((2, 4)); extern int setstate_r (char *__restrict __statebuf, struct random_data *__restrict __buf) __THROW __nonnull ((1, 2)); /* Return a random integer between 0 and RAND_MAX inclusive. */ extern int rand (void) __THROW; /* Seed the random number generator with the given number. */ extern void srand (unsigned int __seed) __THROW; /* Reentrant interface according to POSIX.1. */ extern int rand_r (unsigned int *__seed) __THROW; /* System V style 48-bit random number generator functions. */ /* Return non-negative, double-precision floating-point value in [0.0,1.0). */ extern double drand48 (void) __THROW; extern double erand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1)); /* Return non-negative, long integer in [0,2^31). */ extern long int lrand48 (void) __THROW; extern long int nrand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1)); /* Return signed, long integers in [-2^31,2^31). */ extern long int mrand48 (void) __THROW; extern long int jrand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1)); /* Seed random number generator. */ extern void srand48 (long int __seedval) __THROW; extern unsigned short int *seed48 (unsigned short int __seed16v[3]) __THROW __nonnull ((1)); extern void lcong48 (unsigned short int __param[7]) __THROW __nonnull ((1)); /* Data structure for communication with thread safe versions. This type is to be regarded as opaque. It's only exported because users have to allocate objects of this type. */ struct drand48_data { unsigned short int __x[3]; /* Current state. */ unsigned short int __old_x[3]; /* Old state. */ unsigned short int __c; /* Additive const. in congruential formula. */ unsigned short int __init; /* Flag for initializing. */ __extension__ unsigned long long int __a; /* Factor in congruential formula. */ }; /* Return non-negative, double-precision floating-point value in [0.0,1.0). */ extern int drand48_r (struct drand48_data *__restrict __buffer, double *__restrict __result) __THROW __nonnull ((1, 2)); extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) __THROW __nonnull ((1, 2)); /* Return non-negative, long integer in [0,2^31). */ extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) __THROW __nonnull ((1, 2)); extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) __THROW __nonnull ((1, 2)); /* Return signed, long integers in [-2^31,2^31). */ extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) __THROW __nonnull ((1, 2)); extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) __THROW __nonnull ((1, 2)); /* Seed random number generator. */ extern int srand48_r (long int __seedval, struct drand48_data *__buffer) __THROW __nonnull ((2)); extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) __THROW __nonnull ((1, 2)); extern int lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) __THROW __nonnull ((1, 2)); /* Allocate SIZE bytes of memory. */ extern void *malloc (size_t __size) __THROW __attribute_malloc__ __attribute_alloc_size__ ((1)) __wur; /* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */ extern void *calloc (size_t __nmemb, size_t __size) __THROW __attribute_malloc__ __attribute_alloc_size__ ((1, 2)) __wur; /* Re-allocate the previously allocated block in PTR, making the new block SIZE bytes long. */ /* __attribute_malloc__ is not used, because if realloc returns the same pointer that was passed to it, aliasing needs to be allowed between objects pointed by the old and new pointers. */ extern void *realloc (void *__ptr, size_t __size) __THROW __attribute_warn_unused_result__ __attribute_alloc_size__ ((2)); /* Free a block allocated by `malloc', `realloc' or `calloc'. */ extern void free (void *__ptr) __THROW; /* Re-allocate the previously allocated block in PTR, making the new block large enough for NMEMB elements of SIZE bytes each. */ /* __attribute_malloc__ is not used, because if reallocarray returns the same pointer that was passed to it, aliasing needs to be allowed between objects pointed by the old and new pointers. */ extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) __THROW __attribute_warn_unused_result__ __attribute_alloc_size__ ((2, 3)) __attr_dealloc_free; /* Add reallocarray as its own deallocator. */ extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) __THROW __attr_dealloc (reallocarray, 1); # 1 "../include/alloca.h" 1 # 1 "../stdlib/alloca.h" 1 /* Copyright (C) 1992-2021 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 . */ #define _ALLOCA_H 1 #define __need_size_t # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 25 "../stdlib/alloca.h" 2 __BEGIN_DECLS /* Remove any previous definition. */ #undef alloca /* Allocate a block that will be freed when the calling function exits. */ extern void *alloca (size_t __size) __THROW; #define alloca(size) __builtin_alloca (size) __END_DECLS # 4 "../include/alloca.h" 2 # 1 "../include/stackinfo.h" 1 /* Details about the machine's stack: wrapper header. Copyright (C) 2014-2021 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 . */ #define _INCLUDE_STACKINFO_H 1 /* A sysdeps/.../stackinfo.h file defines details for the CPU. It is obliged to define either _STACK_GROWS_DOWN or _STACK_GROWS_UP. */ # 1 "../sysdeps/s390/stackinfo.h" 1 /* Copyright (C) 2000-2021 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 . */ /* This file contains a bit of information about the stack allocation of the processor. */ #define _STACKINFO_H 1 # 1 "../include/elf.h" 1 # 1 "../elf/elf.h" 1 /* This file defines standard ELF types, structures, and macros. Copyright (C) 1995-2021 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 . */ #define _ELF_H 1 /* Standard ELF types. */ # 1 "../include/stdint.h" 1 # 25 "../elf/elf.h" 2 /* Type for a 16-bit quantity. */ typedef uint16_t Elf32_Half; typedef uint16_t Elf64_Half; /* Types for signed and unsigned 32-bit quantities. */ typedef uint32_t Elf32_Word; typedef int32_t Elf32_Sword; typedef uint32_t Elf64_Word; typedef int32_t Elf64_Sword; /* Types for signed and unsigned 64-bit quantities. */ typedef uint64_t Elf32_Xword; typedef int64_t Elf32_Sxword; typedef uint64_t Elf64_Xword; typedef int64_t Elf64_Sxword; /* Type of addresses. */ typedef uint32_t Elf32_Addr; typedef uint64_t Elf64_Addr; /* Type of file offsets. */ typedef uint32_t Elf32_Off; typedef uint64_t Elf64_Off; /* Type for section indices, which are 16-bit quantities. */ typedef uint16_t Elf32_Section; typedef uint16_t Elf64_Section; /* Type for version symbol information. */ typedef Elf32_Half Elf32_Versym; typedef Elf64_Half Elf64_Versym; /* The ELF file header. This appears at the start of every ELF file. */ #define EI_NIDENT (16) typedef struct { unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ Elf32_Half e_type; /* Object file type */ Elf32_Half e_machine; /* Architecture */ Elf32_Word e_version; /* Object file version */ Elf32_Addr e_entry; /* Entry point virtual address */ Elf32_Off e_phoff; /* Program header table file offset */ Elf32_Off e_shoff; /* Section header table file offset */ Elf32_Word e_flags; /* Processor-specific flags */ Elf32_Half e_ehsize; /* ELF header size in bytes */ Elf32_Half e_phentsize; /* Program header table entry size */ Elf32_Half e_phnum; /* Program header table entry count */ Elf32_Half e_shentsize; /* Section header table entry size */ Elf32_Half e_shnum; /* Section header table entry count */ Elf32_Half e_shstrndx; /* Section header string table index */ } Elf32_Ehdr; typedef struct { unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ Elf64_Half e_type; /* Object file type */ Elf64_Half e_machine; /* Architecture */ Elf64_Word e_version; /* Object file version */ Elf64_Addr e_entry; /* Entry point virtual address */ Elf64_Off e_phoff; /* Program header table file offset */ Elf64_Off e_shoff; /* Section header table file offset */ Elf64_Word e_flags; /* Processor-specific flags */ Elf64_Half e_ehsize; /* ELF header size in bytes */ Elf64_Half e_phentsize; /* Program header table entry size */ Elf64_Half e_phnum; /* Program header table entry count */ Elf64_Half e_shentsize; /* Section header table entry size */ Elf64_Half e_shnum; /* Section header table entry count */ Elf64_Half e_shstrndx; /* Section header string table index */ } Elf64_Ehdr; /* Fields in the e_ident array. The EI_* macros are indices into the array. The macros under each EI_* macro are the values the byte may have. */ #define EI_MAG0 0 #define ELFMAG0 0x7f #define EI_MAG1 1 #define ELFMAG1 'E' #define EI_MAG2 2 #define ELFMAG2 'L' #define EI_MAG3 3 #define ELFMAG3 'F' /* Conglomeration of the identification bytes, for easy testing as a word. */ #define ELFMAG "\177ELF" #define SELFMAG 4 #define EI_CLASS 4 #define ELFCLASSNONE 0 #define ELFCLASS32 1 #define ELFCLASS64 2 #define ELFCLASSNUM 3 #define EI_DATA 5 #define ELFDATANONE 0 #define ELFDATA2LSB 1 #define ELFDATA2MSB 2 #define ELFDATANUM 3 #define EI_VERSION 6 /* Value must be EV_CURRENT */ #define EI_OSABI 7 #define ELFOSABI_NONE 0 #define ELFOSABI_SYSV 0 #define ELFOSABI_HPUX 1 #define ELFOSABI_NETBSD 2 #define ELFOSABI_GNU 3 #define ELFOSABI_LINUX ELFOSABI_GNU #define ELFOSABI_SOLARIS 6 #define ELFOSABI_AIX 7 #define ELFOSABI_IRIX 8 #define ELFOSABI_FREEBSD 9 #define ELFOSABI_TRU64 10 #define ELFOSABI_MODESTO 11 #define ELFOSABI_OPENBSD 12 #define ELFOSABI_ARM_AEABI 64 #define ELFOSABI_ARM 97 #define ELFOSABI_STANDALONE 255 #define EI_ABIVERSION 8 #define EI_PAD 9 /* Legal values for e_type (object file type). */ #define ET_NONE 0 #define ET_REL 1 #define ET_EXEC 2 #define ET_DYN 3 #define ET_CORE 4 #define ET_NUM 5 #define ET_LOOS 0xfe00 #define ET_HIOS 0xfeff #define ET_LOPROC 0xff00 #define ET_HIPROC 0xffff /* Legal values for e_machine (architecture). */ #define EM_NONE 0 #define EM_M32 1 #define EM_SPARC 2 #define EM_386 3 #define EM_68K 4 #define EM_88K 5 #define EM_IAMCU 6 #define EM_860 7 #define EM_MIPS 8 #define EM_S370 9 #define EM_MIPS_RS3_LE 10 /* reserved 11-14 */ #define EM_PARISC 15 /* reserved 16 */ #define EM_VPP500 17 #define EM_SPARC32PLUS 18 #define EM_960 19 #define EM_PPC 20 #define EM_PPC64 21 #define EM_S390 22 #define EM_SPU 23 /* reserved 24-35 */ #define EM_V800 36 #define EM_FR20 37 #define EM_RH32 38 #define EM_RCE 39 #define EM_ARM 40 #define EM_FAKE_ALPHA 41 #define EM_SH 42 #define EM_SPARCV9 43 #define EM_TRICORE 44 #define EM_ARC 45 #define EM_H8_300 46 #define EM_H8_300H 47 #define EM_H8S 48 #define EM_H8_500 49 #define EM_IA_64 50 #define EM_MIPS_X 51 #define EM_COLDFIRE 52 #define EM_68HC12 53 #define EM_MMA 54 #define EM_PCP 55 #define EM_NCPU 56 #define EM_NDR1 57 #define EM_STARCORE 58 #define EM_ME16 59 #define EM_ST100 60 #define EM_TINYJ 61 #define EM_X86_64 62 #define EM_PDSP 63 #define EM_PDP10 64 #define EM_PDP11 65 #define EM_FX66 66 #define EM_ST9PLUS 67 #define EM_ST7 68 #define EM_68HC16 69 #define EM_68HC11 70 #define EM_68HC08 71 #define EM_68HC05 72 #define EM_SVX 73 #define EM_ST19 74 #define EM_VAX 75 #define EM_CRIS 76 #define EM_JAVELIN 77 #define EM_FIREPATH 78 #define EM_ZSP 79 #define EM_MMIX 80 #define EM_HUANY 81 #define EM_PRISM 82 #define EM_AVR 83 #define EM_FR30 84 #define EM_D10V 85 #define EM_D30V 86 #define EM_V850 87 #define EM_M32R 88 #define EM_MN10300 89 #define EM_MN10200 90 #define EM_PJ 91 #define EM_OPENRISC 92 #define EM_ARC_COMPACT 93 #define EM_XTENSA 94 #define EM_VIDEOCORE 95 #define EM_TMM_GPP 96 #define EM_NS32K 97 #define EM_TPC 98 #define EM_SNP1K 99 #define EM_ST200 100 #define EM_IP2K 101 #define EM_MAX 102 #define EM_CR 103 #define EM_F2MC16 104 #define EM_MSP430 105 #define EM_BLACKFIN 106 #define EM_SE_C33 107 #define EM_SEP 108 #define EM_ARCA 109 #define EM_UNICORE 110 #define EM_EXCESS 111 #define EM_DXP 112 #define EM_ALTERA_NIOS2 113 #define EM_CRX 114 #define EM_XGATE 115 #define EM_C166 116 #define EM_M16C 117 #define EM_DSPIC30F 118 #define EM_CE 119 #define EM_M32C 120 /* reserved 121-130 */ #define EM_TSK3000 131 #define EM_RS08 132 #define EM_SHARC 133 #define EM_ECOG2 134 #define EM_SCORE7 135 #define EM_DSP24 136 #define EM_VIDEOCORE3 137 #define EM_LATTICEMICO32 138 #define EM_SE_C17 139 #define EM_TI_C6000 140 #define EM_TI_C2000 141 #define EM_TI_C5500 142 #define EM_TI_ARP32 143 #define EM_TI_PRU 144 /* reserved 145-159 */ #define EM_MMDSP_PLUS 160 #define EM_CYPRESS_M8C 161 #define EM_R32C 162 #define EM_TRIMEDIA 163 #define EM_QDSP6 164 #define EM_8051 165 #define EM_STXP7X 166 #define EM_NDS32 167 #define EM_ECOG1X 168 #define EM_MAXQ30 169 #define EM_XIMO16 170 #define EM_MANIK 171 #define EM_CRAYNV2 172 #define EM_RX 173 #define EM_METAG 174 #define EM_MCST_ELBRUS 175 #define EM_ECOG16 176 #define EM_CR16 177 #define EM_ETPU 178 #define EM_SLE9X 179 #define EM_L10M 180 #define EM_K10M 181 /* reserved 182 */ #define EM_AARCH64 183 /* reserved 184 */ #define EM_AVR32 185 #define EM_STM8 186 #define EM_TILE64 187 #define EM_TILEPRO 188 #define EM_MICROBLAZE 189 #define EM_CUDA 190 #define EM_TILEGX 191 #define EM_CLOUDSHIELD 192 #define EM_COREA_1ST 193 #define EM_COREA_2ND 194 #define EM_ARCV2 195 #define EM_OPEN8 196 #define EM_RL78 197 #define EM_VIDEOCORE5 198 #define EM_78KOR 199 #define EM_56800EX 200 #define EM_BA1 201 #define EM_BA2 202 #define EM_XCORE 203 #define EM_MCHP_PIC 204 #define EM_INTELGT 205 /* reserved 206-209 */ #define EM_KM32 210 #define EM_KMX32 211 #define EM_EMX16 212 #define EM_EMX8 213 #define EM_KVARC 214 #define EM_CDP 215 #define EM_COGE 216 #define EM_COOL 217 #define EM_NORC 218 #define EM_CSR_KALIMBA 219 #define EM_Z80 220 #define EM_VISIUM 221 #define EM_FT32 222 #define EM_MOXIE 223 #define EM_AMDGPU 224 /* reserved 225-242 */ #define EM_RISCV 243 #define EM_BPF 247 #define EM_CSKY 252 #define EM_NUM 253 /* Old spellings/synonyms. */ #define EM_ARC_A5 EM_ARC_COMPACT /* If it is necessary to assign new unofficial EM_* values, please pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision with official or non-GNU unofficial values. */ #define EM_ALPHA 0x9026 /* Legal values for e_version (version). */ #define EV_NONE 0 #define EV_CURRENT 1 #define EV_NUM 2 /* Section header. */ typedef struct { Elf32_Word sh_name; /* Section name (string tbl index) */ Elf32_Word sh_type; /* Section type */ Elf32_Word sh_flags; /* Section flags */ Elf32_Addr sh_addr; /* Section virtual addr at execution */ Elf32_Off sh_offset; /* Section file offset */ Elf32_Word sh_size; /* Section size in bytes */ Elf32_Word sh_link; /* Link to another section */ Elf32_Word sh_info; /* Additional section information */ Elf32_Word sh_addralign; /* Section alignment */ Elf32_Word sh_entsize; /* Entry size if section holds table */ } Elf32_Shdr; typedef struct { Elf64_Word sh_name; /* Section name (string tbl index) */ Elf64_Word sh_type; /* Section type */ Elf64_Xword sh_flags; /* Section flags */ Elf64_Addr sh_addr; /* Section virtual addr at execution */ Elf64_Off sh_offset; /* Section file offset */ Elf64_Xword sh_size; /* Section size in bytes */ Elf64_Word sh_link; /* Link to another section */ Elf64_Word sh_info; /* Additional section information */ Elf64_Xword sh_addralign; /* Section alignment */ Elf64_Xword sh_entsize; /* Entry size if section holds table */ } Elf64_Shdr; /* Special section indices. */ #define SHN_UNDEF 0 #define SHN_LORESERVE 0xff00 #define SHN_LOPROC 0xff00 #define SHN_BEFORE 0xff00 #define SHN_AFTER 0xff01 #define SHN_HIPROC 0xff1f #define SHN_LOOS 0xff20 #define SHN_HIOS 0xff3f #define SHN_ABS 0xfff1 #define SHN_COMMON 0xfff2 #define SHN_XINDEX 0xffff #define SHN_HIRESERVE 0xffff /* Legal values for sh_type (section type). */ #define SHT_NULL 0 #define SHT_PROGBITS 1 #define SHT_SYMTAB 2 #define SHT_STRTAB 3 #define SHT_RELA 4 #define SHT_HASH 5 #define SHT_DYNAMIC 6 #define SHT_NOTE 7 #define SHT_NOBITS 8 #define SHT_REL 9 #define SHT_SHLIB 10 #define SHT_DYNSYM 11 #define SHT_INIT_ARRAY 14 #define SHT_FINI_ARRAY 15 #define SHT_PREINIT_ARRAY 16 #define SHT_GROUP 17 #define SHT_SYMTAB_SHNDX 18 #define SHT_NUM 19 #define SHT_LOOS 0x60000000 #define SHT_GNU_ATTRIBUTES 0x6ffffff5 #define SHT_GNU_HASH 0x6ffffff6 #define SHT_GNU_LIBLIST 0x6ffffff7 #define SHT_CHECKSUM 0x6ffffff8 #define SHT_LOSUNW 0x6ffffffa #define SHT_SUNW_move 0x6ffffffa #define SHT_SUNW_COMDAT 0x6ffffffb #define SHT_SUNW_syminfo 0x6ffffffc #define SHT_GNU_verdef 0x6ffffffd #define SHT_GNU_verneed 0x6ffffffe #define SHT_GNU_versym 0x6fffffff #define SHT_HISUNW 0x6fffffff #define SHT_HIOS 0x6fffffff #define SHT_LOPROC 0x70000000 #define SHT_HIPROC 0x7fffffff #define SHT_LOUSER 0x80000000 #define SHT_HIUSER 0x8fffffff /* Legal values for sh_flags (section flags). */ #define SHF_WRITE (1 << 0) #define SHF_ALLOC (1 << 1) #define SHF_EXECINSTR (1 << 2) #define SHF_MERGE (1 << 4) #define SHF_STRINGS (1 << 5) #define SHF_INFO_LINK (1 << 6) #define SHF_LINK_ORDER (1 << 7) #define SHF_OS_NONCONFORMING (1 << 8) #define SHF_GROUP (1 << 9) #define SHF_TLS (1 << 10) #define SHF_COMPRESSED (1 << 11) #define SHF_MASKOS 0x0ff00000 #define SHF_MASKPROC 0xf0000000 #define SHF_GNU_RETAIN (1 << 21) #define SHF_ORDERED (1 << 30) #define SHF_EXCLUDE (1U << 31) /* Section compression header. Used when SHF_COMPRESSED is set. */ typedef struct { Elf32_Word ch_type; /* Compression format. */ Elf32_Word ch_size; /* Uncompressed data size. */ Elf32_Word ch_addralign; /* Uncompressed data alignment. */ } Elf32_Chdr; typedef struct { Elf64_Word ch_type; /* Compression format. */ Elf64_Word ch_reserved; Elf64_Xword ch_size; /* Uncompressed data size. */ Elf64_Xword ch_addralign; /* Uncompressed data alignment. */ } Elf64_Chdr; /* Legal values for ch_type (compression algorithm). */ #define ELFCOMPRESS_ZLIB 1 #define ELFCOMPRESS_LOOS 0x60000000 #define ELFCOMPRESS_HIOS 0x6fffffff #define ELFCOMPRESS_LOPROC 0x70000000 #define ELFCOMPRESS_HIPROC 0x7fffffff /* Section group handling. */ #define GRP_COMDAT 0x1 /* Symbol table entry. */ typedef struct { Elf32_Word st_name; /* Symbol name (string tbl index) */ Elf32_Addr st_value; /* Symbol value */ Elf32_Word st_size; /* Symbol size */ unsigned char st_info; /* Symbol type and binding */ unsigned char st_other; /* Symbol visibility */ Elf32_Section st_shndx; /* Section index */ } Elf32_Sym; typedef struct { Elf64_Word st_name; /* Symbol name (string tbl index) */ unsigned char st_info; /* Symbol type and binding */ unsigned char st_other; /* Symbol visibility */ Elf64_Section st_shndx; /* Section index */ Elf64_Addr st_value; /* Symbol value */ Elf64_Xword st_size; /* Symbol size */ } Elf64_Sym; /* The syminfo section if available contains additional information about every dynamic symbol. */ typedef struct { Elf32_Half si_boundto; /* Direct bindings, symbol bound to */ Elf32_Half si_flags; /* Per symbol flags */ } Elf32_Syminfo; typedef struct { Elf64_Half si_boundto; /* Direct bindings, symbol bound to */ Elf64_Half si_flags; /* Per symbol flags */ } Elf64_Syminfo; /* Possible values for si_boundto. */ #define SYMINFO_BT_SELF 0xffff #define SYMINFO_BT_PARENT 0xfffe #define SYMINFO_BT_LOWRESERVE 0xff00 /* Possible bitmasks for si_flags. */ #define SYMINFO_FLG_DIRECT 0x0001 #define SYMINFO_FLG_PASSTHRU 0x0002 #define SYMINFO_FLG_COPY 0x0004 #define SYMINFO_FLG_LAZYLOAD 0x0008 /* Syminfo version values. */ #define SYMINFO_NONE 0 #define SYMINFO_CURRENT 1 #define SYMINFO_NUM 2 /* How to extract and insert information held in the st_info field. */ #define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) #define ELF32_ST_TYPE(val) ((val) & 0xf) #define ELF32_ST_INFO(bind,type) (((bind) << 4) + ((type) & 0xf)) /* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field. */ #define ELF64_ST_BIND(val) ELF32_ST_BIND (val) #define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) #define ELF64_ST_INFO(bind,type) ELF32_ST_INFO ((bind), (type)) /* Legal values for ST_BIND subfield of st_info (symbol binding). */ #define STB_LOCAL 0 #define STB_GLOBAL 1 #define STB_WEAK 2 #define STB_NUM 3 #define STB_LOOS 10 #define STB_GNU_UNIQUE 10 #define STB_HIOS 12 #define STB_LOPROC 13 #define STB_HIPROC 15 /* Legal values for ST_TYPE subfield of st_info (symbol type). */ #define STT_NOTYPE 0 #define STT_OBJECT 1 #define STT_FUNC 2 #define STT_SECTION 3 #define STT_FILE 4 #define STT_COMMON 5 #define STT_TLS 6 #define STT_NUM 7 #define STT_LOOS 10 #define STT_GNU_IFUNC 10 #define STT_HIOS 12 #define STT_LOPROC 13 #define STT_HIPROC 15 /* Symbol table indices are found in the hash buckets and chain table of a symbol hash table section. This special index value indicates the end of a chain, meaning no further symbols are found in that bucket. */ #define STN_UNDEF 0 /* How to extract and insert information held in the st_other field. */ #define ELF32_ST_VISIBILITY(o) ((o) & 0x03) /* For ELF64 the definitions are the same. */ #define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) /* Symbol visibility specification encoded in the st_other field. */ #define STV_DEFAULT 0 #define STV_INTERNAL 1 #define STV_HIDDEN 2 #define STV_PROTECTED 3 /* Relocation table entry without addend (in section of type SHT_REL). */ typedef struct { Elf32_Addr r_offset; /* Address */ Elf32_Word r_info; /* Relocation type and symbol index */ } Elf32_Rel; /* I have seen two different definitions of the Elf64_Rel and Elf64_Rela structures, so we'll leave them out until Novell (or whoever) gets their act together. */ /* The following, at least, is used on Sparc v9, MIPS, and Alpha. */ typedef struct { Elf64_Addr r_offset; /* Address */ Elf64_Xword r_info; /* Relocation type and symbol index */ } Elf64_Rel; /* Relocation table entry with addend (in section of type SHT_RELA). */ typedef struct { Elf32_Addr r_offset; /* Address */ Elf32_Word r_info; /* Relocation type and symbol index */ Elf32_Sword r_addend; /* Addend */ } Elf32_Rela; typedef struct { Elf64_Addr r_offset; /* Address */ Elf64_Xword r_info; /* Relocation type and symbol index */ Elf64_Sxword r_addend; /* Addend */ } Elf64_Rela; /* How to extract and insert information held in the r_info field. */ #define ELF32_R_SYM(val) ((val) >> 8) #define ELF32_R_TYPE(val) ((val) & 0xff) #define ELF32_R_INFO(sym,type) (((sym) << 8) + ((type) & 0xff)) #define ELF64_R_SYM(i) ((i) >> 32) #define ELF64_R_TYPE(i) ((i) & 0xffffffff) #define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) /* Program segment header. */ typedef struct { Elf32_Word p_type; /* Segment type */ Elf32_Off p_offset; /* Segment file offset */ Elf32_Addr p_vaddr; /* Segment virtual address */ Elf32_Addr p_paddr; /* Segment physical address */ Elf32_Word p_filesz; /* Segment size in file */ Elf32_Word p_memsz; /* Segment size in memory */ Elf32_Word p_flags; /* Segment flags */ Elf32_Word p_align; /* Segment alignment */ } Elf32_Phdr; typedef struct { Elf64_Word p_type; /* Segment type */ Elf64_Word p_flags; /* Segment flags */ Elf64_Off p_offset; /* Segment file offset */ Elf64_Addr p_vaddr; /* Segment virtual address */ Elf64_Addr p_paddr; /* Segment physical address */ Elf64_Xword p_filesz; /* Segment size in file */ Elf64_Xword p_memsz; /* Segment size in memory */ Elf64_Xword p_align; /* Segment alignment */ } Elf64_Phdr; /* Special value for e_phnum. This indicates that the real number of program headers is too large to fit into e_phnum. Instead the real value is in the field sh_info of section 0. */ #define PN_XNUM 0xffff /* Legal values for p_type (segment type). */ #define PT_NULL 0 #define PT_LOAD 1 #define PT_DYNAMIC 2 #define PT_INTERP 3 #define PT_NOTE 4 #define PT_SHLIB 5 #define PT_PHDR 6 #define PT_TLS 7 #define PT_NUM 8 #define PT_LOOS 0x60000000 #define PT_GNU_EH_FRAME 0x6474e550 #define PT_GNU_STACK 0x6474e551 #define PT_GNU_RELRO 0x6474e552 #define PT_GNU_PROPERTY 0x6474e553 #define PT_LOSUNW 0x6ffffffa #define PT_SUNWBSS 0x6ffffffa #define PT_SUNWSTACK 0x6ffffffb #define PT_HISUNW 0x6fffffff #define PT_HIOS 0x6fffffff #define PT_LOPROC 0x70000000 #define PT_HIPROC 0x7fffffff /* Legal values for p_flags (segment flags). */ #define PF_X (1 << 0) #define PF_W (1 << 1) #define PF_R (1 << 2) #define PF_MASKOS 0x0ff00000 #define PF_MASKPROC 0xf0000000 /* Legal values for note segment descriptor types for core files. */ #define NT_PRSTATUS 1 #define NT_PRFPREG 2 #define NT_FPREGSET 2 #define NT_PRPSINFO 3 #define NT_PRXREG 4 #define NT_TASKSTRUCT 4 #define NT_PLATFORM 5 #define NT_AUXV 6 #define NT_GWINDOWS 7 #define NT_ASRS 8 #define NT_PSTATUS 10 #define NT_PSINFO 13 #define NT_PRCRED 14 #define NT_UTSNAME 15 #define NT_LWPSTATUS 16 #define NT_LWPSINFO 17 #define NT_PRFPXREG 20 #define NT_SIGINFO 0x53494749 #define NT_FILE 0x46494c45 #define NT_PRXFPREG 0x46e62b7f #define NT_PPC_VMX 0x100 #define NT_PPC_SPE 0x101 #define NT_PPC_VSX 0x102 #define NT_PPC_TAR 0x103 #define NT_PPC_PPR 0x104 #define NT_PPC_DSCR 0x105 #define NT_PPC_EBB 0x106 #define NT_PPC_PMU 0x107 #define NT_PPC_TM_CGPR 0x108 #define NT_PPC_TM_CFPR 0x109 #define NT_PPC_TM_CVMX 0x10a #define NT_PPC_TM_CVSX 0x10b #define NT_PPC_TM_SPR 0x10c #define NT_PPC_TM_CTAR 0x10d #define NT_PPC_TM_CPPR 0x10e #define NT_PPC_TM_CDSCR 0x10f #define NT_PPC_PKEY 0x110 #define NT_386_TLS 0x200 #define NT_386_IOPERM 0x201 #define NT_X86_XSTATE 0x202 #define NT_S390_HIGH_GPRS 0x300 #define NT_S390_TIMER 0x301 #define NT_S390_TODCMP 0x302 #define NT_S390_TODPREG 0x303 #define NT_S390_CTRS 0x304 #define NT_S390_PREFIX 0x305 #define NT_S390_LAST_BREAK 0x306 #define NT_S390_SYSTEM_CALL 0x307 #define NT_S390_TDB 0x308 #define NT_S390_VXRS_LOW 0x309 #define NT_S390_VXRS_HIGH 0x30a #define NT_S390_GS_CB 0x30b #define NT_S390_GS_BC 0x30c #define NT_S390_RI_CB 0x30d #define NT_ARM_VFP 0x400 #define NT_ARM_TLS 0x401 #define NT_ARM_HW_BREAK 0x402 #define NT_ARM_HW_WATCH 0x403 #define NT_ARM_SYSTEM_CALL 0x404 #define NT_ARM_SVE 0x405 #define NT_ARM_PAC_MASK 0x406 #define NT_ARM_PACA_KEYS 0x407 #define NT_ARM_PACG_KEYS 0x408 #define NT_ARM_TAGGED_ADDR_CTRL 0x409 #define NT_ARM_PAC_ENABLED_KEYS 0x40a #define NT_VMCOREDD 0x700 #define NT_MIPS_DSP 0x800 #define NT_MIPS_FP_MODE 0x801 #define NT_MIPS_MSA 0x802 /* Legal values for the note segment descriptor types for object files. */ #define NT_VERSION 1 /* Dynamic section entry. */ typedef struct { Elf32_Sword d_tag; /* Dynamic entry type */ union { Elf32_Word d_val; /* Integer value */ Elf32_Addr d_ptr; /* Address value */ } d_un; } Elf32_Dyn; typedef struct { Elf64_Sxword d_tag; /* Dynamic entry type */ union { Elf64_Xword d_val; /* Integer value */ Elf64_Addr d_ptr; /* Address value */ } d_un; } Elf64_Dyn; /* Legal values for d_tag (dynamic entry type). */ #define DT_NULL 0 #define DT_NEEDED 1 #define DT_PLTRELSZ 2 #define DT_PLTGOT 3 #define DT_HASH 4 #define DT_STRTAB 5 #define DT_SYMTAB 6 #define DT_RELA 7 #define DT_RELASZ 8 #define DT_RELAENT 9 #define DT_STRSZ 10 #define DT_SYMENT 11 #define DT_INIT 12 #define DT_FINI 13 #define DT_SONAME 14 #define DT_RPATH 15 #define DT_SYMBOLIC 16 #define DT_REL 17 #define DT_RELSZ 18 #define DT_RELENT 19 #define DT_PLTREL 20 #define DT_DEBUG 21 #define DT_TEXTREL 22 #define DT_JMPREL 23 #define DT_BIND_NOW 24 #define DT_INIT_ARRAY 25 #define DT_FINI_ARRAY 26 #define DT_INIT_ARRAYSZ 27 #define DT_FINI_ARRAYSZ 28 #define DT_RUNPATH 29 #define DT_FLAGS 30 #define DT_ENCODING 32 #define DT_PREINIT_ARRAY 32 #define DT_PREINIT_ARRAYSZ 33 #define DT_SYMTAB_SHNDX 34 #define DT_NUM 35 #define DT_LOOS 0x6000000d #define DT_HIOS 0x6ffff000 #define DT_LOPROC 0x70000000 #define DT_HIPROC 0x7fffffff #define DT_PROCNUM DT_MIPS_NUM /* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the Dyn.d_un.d_val field of the Elf*_Dyn structure. This follows Sun's approach. */ #define DT_VALRNGLO 0x6ffffd00 #define DT_GNU_PRELINKED 0x6ffffdf5 #define DT_GNU_CONFLICTSZ 0x6ffffdf6 #define DT_GNU_LIBLISTSZ 0x6ffffdf7 #define DT_CHECKSUM 0x6ffffdf8 #define DT_PLTPADSZ 0x6ffffdf9 #define DT_MOVEENT 0x6ffffdfa #define DT_MOVESZ 0x6ffffdfb #define DT_FEATURE_1 0x6ffffdfc #define DT_POSFLAG_1 0x6ffffdfd #define DT_SYMINSZ 0x6ffffdfe #define DT_SYMINENT 0x6ffffdff #define DT_VALRNGHI 0x6ffffdff #define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) #define DT_VALNUM 12 /* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the Dyn.d_un.d_ptr field of the Elf*_Dyn structure. If any adjustment is made to the ELF object after it has been built these entries will need to be adjusted. */ #define DT_ADDRRNGLO 0x6ffffe00 #define DT_GNU_HASH 0x6ffffef5 #define DT_TLSDESC_PLT 0x6ffffef6 #define DT_TLSDESC_GOT 0x6ffffef7 #define DT_GNU_CONFLICT 0x6ffffef8 #define DT_GNU_LIBLIST 0x6ffffef9 #define DT_CONFIG 0x6ffffefa #define DT_DEPAUDIT 0x6ffffefb #define DT_AUDIT 0x6ffffefc #define DT_PLTPAD 0x6ffffefd #define DT_MOVETAB 0x6ffffefe #define DT_SYMINFO 0x6ffffeff #define DT_ADDRRNGHI 0x6ffffeff #define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) #define DT_ADDRNUM 11 /* The versioning entry types. The next are defined as part of the GNU extension. */ #define DT_VERSYM 0x6ffffff0 #define DT_RELACOUNT 0x6ffffff9 #define DT_RELCOUNT 0x6ffffffa /* These were chosen by Sun. */ #define DT_FLAGS_1 0x6ffffffb #define DT_VERDEF 0x6ffffffc #define DT_VERDEFNUM 0x6ffffffd #define DT_VERNEED 0x6ffffffe #define DT_VERNEEDNUM 0x6fffffff #define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) #define DT_VERSIONTAGNUM 16 /* Sun added these machine-independent extensions in the "processor-specific" range. Be compatible. */ #define DT_AUXILIARY 0x7ffffffd #define DT_FILTER 0x7fffffff #define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) #define DT_EXTRANUM 3 /* Values of `d_un.d_val' in the DT_FLAGS entry. */ #define DF_ORIGIN 0x00000001 #define DF_SYMBOLIC 0x00000002 #define DF_TEXTREL 0x00000004 #define DF_BIND_NOW 0x00000008 #define DF_STATIC_TLS 0x00000010 /* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 entry in the dynamic section. */ #define DF_1_NOW 0x00000001 #define DF_1_GLOBAL 0x00000002 #define DF_1_GROUP 0x00000004 #define DF_1_NODELETE 0x00000008 #define DF_1_LOADFLTR 0x00000010 #define DF_1_INITFIRST 0x00000020 #define DF_1_NOOPEN 0x00000040 #define DF_1_ORIGIN 0x00000080 #define DF_1_DIRECT 0x00000100 #define DF_1_TRANS 0x00000200 #define DF_1_INTERPOSE 0x00000400 #define DF_1_NODEFLIB 0x00000800 #define DF_1_NODUMP 0x00001000 #define DF_1_CONFALT 0x00002000 #define DF_1_ENDFILTEE 0x00004000 #define DF_1_DISPRELDNE 0x00008000 #define DF_1_DISPRELPND 0x00010000 #define DF_1_NODIRECT 0x00020000 #define DF_1_IGNMULDEF 0x00040000 #define DF_1_NOKSYMS 0x00080000 #define DF_1_NOHDR 0x00100000 #define DF_1_EDITED 0x00200000 #define DF_1_NORELOC 0x00400000 #define DF_1_SYMINTPOSE 0x00800000 #define DF_1_GLOBAUDIT 0x01000000 #define DF_1_SINGLETON 0x02000000 #define DF_1_STUB 0x04000000 #define DF_1_PIE 0x08000000 #define DF_1_KMOD 0x10000000 #define DF_1_WEAKFILTER 0x20000000 #define DF_1_NOCOMMON 0x40000000 /* Flags for the feature selection in DT_FEATURE_1. */ #define DTF_1_PARINIT 0x00000001 #define DTF_1_CONFEXP 0x00000002 /* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry. */ #define DF_P1_LAZYLOAD 0x00000001 #define DF_P1_GROUPPERM 0x00000002 /* Version definition sections. */ typedef struct { Elf32_Half vd_version; /* Version revision */ Elf32_Half vd_flags; /* Version information */ Elf32_Half vd_ndx; /* Version Index */ Elf32_Half vd_cnt; /* Number of associated aux entries */ Elf32_Word vd_hash; /* Version name hash value */ Elf32_Word vd_aux; /* Offset in bytes to verdaux array */ Elf32_Word vd_next; /* Offset in bytes to next verdef entry */ } Elf32_Verdef; typedef struct { Elf64_Half vd_version; /* Version revision */ Elf64_Half vd_flags; /* Version information */ Elf64_Half vd_ndx; /* Version Index */ Elf64_Half vd_cnt; /* Number of associated aux entries */ Elf64_Word vd_hash; /* Version name hash value */ Elf64_Word vd_aux; /* Offset in bytes to verdaux array */ Elf64_Word vd_next; /* Offset in bytes to next verdef entry */ } Elf64_Verdef; /* Legal values for vd_version (version revision). */ #define VER_DEF_NONE 0 #define VER_DEF_CURRENT 1 #define VER_DEF_NUM 2 /* Legal values for vd_flags (version information flags). */ #define VER_FLG_BASE 0x1 #define VER_FLG_WEAK 0x2 /* Versym symbol index values. */ #define VER_NDX_LOCAL 0 #define VER_NDX_GLOBAL 1 #define VER_NDX_LORESERVE 0xff00 #define VER_NDX_ELIMINATE 0xff01 /* Auxiliary version information. */ typedef struct { Elf32_Word vda_name; /* Version or dependency names */ Elf32_Word vda_next; /* Offset in bytes to next verdaux entry */ } Elf32_Verdaux; typedef struct { Elf64_Word vda_name; /* Version or dependency names */ Elf64_Word vda_next; /* Offset in bytes to next verdaux entry */ } Elf64_Verdaux; /* Version dependency section. */ typedef struct { Elf32_Half vn_version; /* Version of structure */ Elf32_Half vn_cnt; /* Number of associated aux entries */ Elf32_Word vn_file; /* Offset of filename for this dependency */ Elf32_Word vn_aux; /* Offset in bytes to vernaux array */ Elf32_Word vn_next; /* Offset in bytes to next verneed entry */ } Elf32_Verneed; typedef struct { Elf64_Half vn_version; /* Version of structure */ Elf64_Half vn_cnt; /* Number of associated aux entries */ Elf64_Word vn_file; /* Offset of filename for this dependency */ Elf64_Word vn_aux; /* Offset in bytes to vernaux array */ Elf64_Word vn_next; /* Offset in bytes to next verneed entry */ } Elf64_Verneed; /* Legal values for vn_version (version revision). */ #define VER_NEED_NONE 0 #define VER_NEED_CURRENT 1 #define VER_NEED_NUM 2 /* Auxiliary needed version information. */ typedef struct { Elf32_Word vna_hash; /* Hash value of dependency name */ Elf32_Half vna_flags; /* Dependency specific information */ Elf32_Half vna_other; /* Unused */ Elf32_Word vna_name; /* Dependency name string offset */ Elf32_Word vna_next; /* Offset in bytes to next vernaux entry */ } Elf32_Vernaux; typedef struct { Elf64_Word vna_hash; /* Hash value of dependency name */ Elf64_Half vna_flags; /* Dependency specific information */ Elf64_Half vna_other; /* Unused */ Elf64_Word vna_name; /* Dependency name string offset */ Elf64_Word vna_next; /* Offset in bytes to next vernaux entry */ } Elf64_Vernaux; /* Legal values for vna_flags. */ #define VER_FLG_WEAK 0x2 /* Auxiliary vector. */ /* This vector is normally only used by the program interpreter. The usual definition in an ABI supplement uses the name auxv_t. The vector is not usually defined in a standard file, but it can't hurt. We rename it to avoid conflicts. The sizes of these types are an arrangement between the exec server and the program interpreter, so we don't fully specify them here. */ typedef struct { uint32_t a_type; /* Entry type */ union { uint32_t a_val; /* Integer value */ /* We use to have pointer elements added here. We cannot do that, though, since it does not work when using 32-bit definitions on 64-bit platforms and vice versa. */ } a_un; } Elf32_auxv_t; typedef struct { uint64_t a_type; /* Entry type */ union { uint64_t a_val; /* Integer value */ /* We use to have pointer elements added here. We cannot do that, though, since it does not work when using 32-bit definitions on 64-bit platforms and vice versa. */ } a_un; } Elf64_auxv_t; /* Legal values for a_type (entry type). */ #define AT_NULL 0 #define AT_IGNORE 1 #define AT_EXECFD 2 #define AT_PHDR 3 #define AT_PHENT 4 #define AT_PHNUM 5 #define AT_PAGESZ 6 #define AT_BASE 7 #define AT_FLAGS 8 #define AT_ENTRY 9 #define AT_NOTELF 10 #define AT_UID 11 #define AT_EUID 12 #define AT_GID 13 #define AT_EGID 14 #define AT_CLKTCK 17 /* Some more special a_type values describing the hardware. */ #define AT_PLATFORM 15 #define AT_HWCAP 16 /* This entry gives some information about the FPU initialization performed by the kernel. */ #define AT_FPUCW 18 /* Cache block sizes. */ #define AT_DCACHEBSIZE 19 #define AT_ICACHEBSIZE 20 #define AT_UCACHEBSIZE 21 /* A special ignored value for PPC, used by the kernel to control the interpretation of the AUXV. Must be > 16. */ #define AT_IGNOREPPC 22 #define AT_SECURE 23 #define AT_BASE_PLATFORM 24 #define AT_RANDOM 25 #define AT_HWCAP2 26 #define AT_EXECFN 31 /* Pointer to the global system page used for system calls and other nice things. */ #define AT_SYSINFO 32 #define AT_SYSINFO_EHDR 33 /* Shapes of the caches. Bits 0-3 contains associativity; bits 4-7 contains log2 of line size; mask those to get cache size. */ #define AT_L1I_CACHESHAPE 34 #define AT_L1D_CACHESHAPE 35 #define AT_L2_CACHESHAPE 36 #define AT_L3_CACHESHAPE 37 /* Shapes of the caches, with more room to describe them. *GEOMETRY are comprised of cache line size in bytes in the bottom 16 bits and the cache associativity in the next 16 bits. */ #define AT_L1I_CACHESIZE 40 #define AT_L1I_CACHEGEOMETRY 41 #define AT_L1D_CACHESIZE 42 #define AT_L1D_CACHEGEOMETRY 43 #define AT_L2_CACHESIZE 44 #define AT_L2_CACHEGEOMETRY 45 #define AT_L3_CACHESIZE 46 #define AT_L3_CACHEGEOMETRY 47 #define AT_MINSIGSTKSZ 51 /* Note section contents. Each entry in the note section begins with a header of a fixed form. */ typedef struct { Elf32_Word n_namesz; /* Length of the note's name. */ Elf32_Word n_descsz; /* Length of the note's descriptor. */ Elf32_Word n_type; /* Type of the note. */ } Elf32_Nhdr; typedef struct { Elf64_Word n_namesz; /* Length of the note's name. */ Elf64_Word n_descsz; /* Length of the note's descriptor. */ Elf64_Word n_type; /* Type of the note. */ } Elf64_Nhdr; /* Known names of notes. */ /* Solaris entries in the note section have this name. */ #define ELF_NOTE_SOLARIS "SUNW Solaris" /* Note entries for GNU systems have this name. */ #define ELF_NOTE_GNU "GNU" /* Defined types of notes for Solaris. */ /* Value of descriptor (one word) is desired pagesize for the binary. */ #define ELF_NOTE_PAGESIZE_HINT 1 /* Defined note types for GNU systems. */ /* ABI information. The descriptor consists of words: word 0: OS descriptor word 1: major version of the ABI word 2: minor version of the ABI word 3: subminor version of the ABI */ #define NT_GNU_ABI_TAG 1 #define ELF_NOTE_ABI NT_GNU_ABI_TAG /* Known OSes. These values can appear in word 0 of an NT_GNU_ABI_TAG note section entry. */ #define ELF_NOTE_OS_LINUX 0 #define ELF_NOTE_OS_GNU 1 #define ELF_NOTE_OS_SOLARIS2 2 #define ELF_NOTE_OS_FREEBSD 3 /* Synthetic hwcap information. The descriptor begins with two words: word 0: number of entries word 1: bitmask of enabled entries Then follow variable-length entries, one byte followed by a '\0'-terminated hwcap name string. The byte gives the bit number to test if enabled, (1U << bit) & bitmask. */ #define NT_GNU_HWCAP 2 /* Build ID bits as generated by ld --build-id. The descriptor consists of any nonzero number of bytes. */ #define NT_GNU_BUILD_ID 3 /* Version note generated by GNU gold containing a version string. */ #define NT_GNU_GOLD_VERSION 4 /* Program property. */ #define NT_GNU_PROPERTY_TYPE_0 5 /* Note section name of program property. */ #define NOTE_GNU_PROPERTY_SECTION_NAME ".note.gnu.property" /* Values used in GNU .note.gnu.property notes (NT_GNU_PROPERTY_TYPE_0). */ /* Stack size. */ #define GNU_PROPERTY_STACK_SIZE 1 /* No copy relocation on protected data symbol. */ #define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2 /* A 4-byte unsigned integer property: A bit is set if it is set in all relocatable inputs. */ #define GNU_PROPERTY_UINT32_AND_LO 0xb0000000 #define GNU_PROPERTY_UINT32_AND_HI 0xb0007fff /* A 4-byte unsigned integer property: A bit is set if it is set in any relocatable inputs. */ #define GNU_PROPERTY_UINT32_OR_LO 0xb0008000 #define GNU_PROPERTY_UINT32_OR_HI 0xb000ffff /* The needed properties by the object file. */ #define GNU_PROPERTY_1_NEEDED GNU_PROPERTY_UINT32_OR_LO /* Set if the object file requires canonical function pointers and cannot be used with copy relocation. */ #define GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS (1U << 0) /* Processor-specific semantics, lo */ #define GNU_PROPERTY_LOPROC 0xc0000000 /* Processor-specific semantics, hi */ #define GNU_PROPERTY_HIPROC 0xdfffffff /* Application-specific semantics, lo */ #define GNU_PROPERTY_LOUSER 0xe0000000 /* Application-specific semantics, hi */ #define GNU_PROPERTY_HIUSER 0xffffffff /* AArch64 specific GNU properties. */ #define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000 #define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1U << 0) #define GNU_PROPERTY_AARCH64_FEATURE_1_PAC (1U << 1) /* The x86 instruction sets indicated by the corresponding bits are used in program. Their support in the hardware is optional. */ #define GNU_PROPERTY_X86_ISA_1_USED 0xc0010002 /* The x86 instruction sets indicated by the corresponding bits are used in program and they must be supported by the hardware. */ #define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0008002 /* X86 processor-specific features used in program. */ #define GNU_PROPERTY_X86_FEATURE_1_AND 0xc0000002 /* GNU_PROPERTY_X86_ISA_1_BASELINE: CMOV, CX8 (cmpxchg8b), FPU (fld), MMX, OSFXSR (fxsave), SCE (syscall), SSE and SSE2. */ #define GNU_PROPERTY_X86_ISA_1_BASELINE (1U << 0) /* GNU_PROPERTY_X86_ISA_1_V2: GNU_PROPERTY_X86_ISA_1_BASELINE, CMPXCHG16B (cmpxchg16b), LAHF-SAHF (lahf), POPCNT (popcnt), SSE3, SSSE3, SSE4.1 and SSE4.2. */ #define GNU_PROPERTY_X86_ISA_1_V2 (1U << 1) /* GNU_PROPERTY_X86_ISA_1_V3: GNU_PROPERTY_X86_ISA_1_V2, AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE. */ #define GNU_PROPERTY_X86_ISA_1_V3 (1U << 2) /* GNU_PROPERTY_X86_ISA_1_V4: GNU_PROPERTY_X86_ISA_1_V3, AVX512F, AVX512BW, AVX512CD, AVX512DQ and AVX512VL. */ #define GNU_PROPERTY_X86_ISA_1_V4 (1U << 3) /* This indicates that all executable sections are compatible with IBT. */ #define GNU_PROPERTY_X86_FEATURE_1_IBT (1U << 0) /* This indicates that all executable sections are compatible with SHSTK. */ #define GNU_PROPERTY_X86_FEATURE_1_SHSTK (1U << 1) /* Move records. */ typedef struct { Elf32_Xword m_value; /* Symbol value. */ Elf32_Word m_info; /* Size and index. */ Elf32_Word m_poffset; /* Symbol offset. */ Elf32_Half m_repeat; /* Repeat count. */ Elf32_Half m_stride; /* Stride info. */ } Elf32_Move; typedef struct { Elf64_Xword m_value; /* Symbol value. */ Elf64_Xword m_info; /* Size and index. */ Elf64_Xword m_poffset; /* Symbol offset. */ Elf64_Half m_repeat; /* Repeat count. */ Elf64_Half m_stride; /* Stride info. */ } Elf64_Move; /* Macro to construct move records. */ #define ELF32_M_SYM(info) ((info) >> 8) #define ELF32_M_SIZE(info) ((unsigned char) (info)) #define ELF32_M_INFO(sym,size) (((sym) << 8) + (unsigned char) (size)) #define ELF64_M_SYM(info) ELF32_M_SYM (info) #define ELF64_M_SIZE(info) ELF32_M_SIZE (info) #define ELF64_M_INFO(sym,size) ELF32_M_INFO (sym, size) /* Motorola 68k specific definitions. */ /* Values for Elf32_Ehdr.e_flags. */ #define EF_CPU32 0x00810000 /* m68k relocs. */ #define R_68K_NONE 0 #define R_68K_32 1 #define R_68K_16 2 #define R_68K_8 3 #define R_68K_PC32 4 #define R_68K_PC16 5 #define R_68K_PC8 6 #define R_68K_GOT32 7 #define R_68K_GOT16 8 #define R_68K_GOT8 9 #define R_68K_GOT32O 10 #define R_68K_GOT16O 11 #define R_68K_GOT8O 12 #define R_68K_PLT32 13 #define R_68K_PLT16 14 #define R_68K_PLT8 15 #define R_68K_PLT32O 16 #define R_68K_PLT16O 17 #define R_68K_PLT8O 18 #define R_68K_COPY 19 #define R_68K_GLOB_DAT 20 #define R_68K_JMP_SLOT 21 #define R_68K_RELATIVE 22 #define R_68K_TLS_GD32 25 #define R_68K_TLS_GD16 26 #define R_68K_TLS_GD8 27 #define R_68K_TLS_LDM32 28 #define R_68K_TLS_LDM16 29 #define R_68K_TLS_LDM8 30 #define R_68K_TLS_LDO32 31 #define R_68K_TLS_LDO16 32 #define R_68K_TLS_LDO8 33 #define R_68K_TLS_IE32 34 #define R_68K_TLS_IE16 35 #define R_68K_TLS_IE8 36 #define R_68K_TLS_LE32 37 #define R_68K_TLS_LE16 38 #define R_68K_TLS_LE8 39 #define R_68K_TLS_DTPMOD32 40 #define R_68K_TLS_DTPREL32 41 #define R_68K_TLS_TPREL32 42 /* Keep this the last entry. */ #define R_68K_NUM 43 /* Intel 80386 specific definitions. */ /* i386 relocs. */ #define R_386_NONE 0 #define R_386_32 1 #define R_386_PC32 2 #define R_386_GOT32 3 #define R_386_PLT32 4 #define R_386_COPY 5 #define R_386_GLOB_DAT 6 #define R_386_JMP_SLOT 7 #define R_386_RELATIVE 8 #define R_386_GOTOFF 9 #define R_386_GOTPC 10 #define R_386_32PLT 11 #define R_386_TLS_TPOFF 14 #define R_386_TLS_IE 15 #define R_386_TLS_GOTIE 16 #define R_386_TLS_LE 17 #define R_386_TLS_GD 18 #define R_386_TLS_LDM 19 #define R_386_16 20 #define R_386_PC16 21 #define R_386_8 22 #define R_386_PC8 23 #define R_386_TLS_GD_32 24 #define R_386_TLS_GD_PUSH 25 #define R_386_TLS_GD_CALL 26 #define R_386_TLS_GD_POP 27 #define R_386_TLS_LDM_32 28 #define R_386_TLS_LDM_PUSH 29 #define R_386_TLS_LDM_CALL 30 #define R_386_TLS_LDM_POP 31 #define R_386_TLS_LDO_32 32 #define R_386_TLS_IE_32 33 #define R_386_TLS_LE_32 34 #define R_386_TLS_DTPMOD32 35 #define R_386_TLS_DTPOFF32 36 #define R_386_TLS_TPOFF32 37 #define R_386_SIZE32 38 #define R_386_TLS_GOTDESC 39 #define R_386_TLS_DESC_CALL 40 #define R_386_TLS_DESC 41 #define R_386_IRELATIVE 42 #define R_386_GOT32X 43 /* Keep this the last entry. */ #define R_386_NUM 44 /* SUN SPARC specific definitions. */ /* Legal values for ST_TYPE subfield of st_info (symbol type). */ #define STT_SPARC_REGISTER 13 /* Values for Elf64_Ehdr.e_flags. */ #define EF_SPARCV9_MM 3 #define EF_SPARCV9_TSO 0 #define EF_SPARCV9_PSO 1 #define EF_SPARCV9_RMO 2 #define EF_SPARC_LEDATA 0x800000 #define EF_SPARC_EXT_MASK 0xFFFF00 #define EF_SPARC_32PLUS 0x000100 #define EF_SPARC_SUN_US1 0x000200 #define EF_SPARC_HAL_R1 0x000400 #define EF_SPARC_SUN_US3 0x000800 /* SPARC relocs. */ #define R_SPARC_NONE 0 #define R_SPARC_8 1 #define R_SPARC_16 2 #define R_SPARC_32 3 #define R_SPARC_DISP8 4 #define R_SPARC_DISP16 5 #define R_SPARC_DISP32 6 #define R_SPARC_WDISP30 7 #define R_SPARC_WDISP22 8 #define R_SPARC_HI22 9 #define R_SPARC_22 10 #define R_SPARC_13 11 #define R_SPARC_LO10 12 #define R_SPARC_GOT10 13 #define R_SPARC_GOT13 14 #define R_SPARC_GOT22 15 #define R_SPARC_PC10 16 #define R_SPARC_PC22 17 #define R_SPARC_WPLT30 18 #define R_SPARC_COPY 19 #define R_SPARC_GLOB_DAT 20 #define R_SPARC_JMP_SLOT 21 #define R_SPARC_RELATIVE 22 #define R_SPARC_UA32 23 /* Additional Sparc64 relocs. */ #define R_SPARC_PLT32 24 #define R_SPARC_HIPLT22 25 #define R_SPARC_LOPLT10 26 #define R_SPARC_PCPLT32 27 #define R_SPARC_PCPLT22 28 #define R_SPARC_PCPLT10 29 #define R_SPARC_10 30 #define R_SPARC_11 31 #define R_SPARC_64 32 #define R_SPARC_OLO10 33 #define R_SPARC_HH22 34 #define R_SPARC_HM10 35 #define R_SPARC_LM22 36 #define R_SPARC_PC_HH22 37 #define R_SPARC_PC_HM10 38 #define R_SPARC_PC_LM22 39 #define R_SPARC_WDISP16 40 #define R_SPARC_WDISP19 41 #define R_SPARC_GLOB_JMP 42 #define R_SPARC_7 43 #define R_SPARC_5 44 #define R_SPARC_6 45 #define R_SPARC_DISP64 46 #define R_SPARC_PLT64 47 #define R_SPARC_HIX22 48 #define R_SPARC_LOX10 49 #define R_SPARC_H44 50 #define R_SPARC_M44 51 #define R_SPARC_L44 52 #define R_SPARC_REGISTER 53 #define R_SPARC_UA64 54 #define R_SPARC_UA16 55 #define R_SPARC_TLS_GD_HI22 56 #define R_SPARC_TLS_GD_LO10 57 #define R_SPARC_TLS_GD_ADD 58 #define R_SPARC_TLS_GD_CALL 59 #define R_SPARC_TLS_LDM_HI22 60 #define R_SPARC_TLS_LDM_LO10 61 #define R_SPARC_TLS_LDM_ADD 62 #define R_SPARC_TLS_LDM_CALL 63 #define R_SPARC_TLS_LDO_HIX22 64 #define R_SPARC_TLS_LDO_LOX10 65 #define R_SPARC_TLS_LDO_ADD 66 #define R_SPARC_TLS_IE_HI22 67 #define R_SPARC_TLS_IE_LO10 68 #define R_SPARC_TLS_IE_LD 69 #define R_SPARC_TLS_IE_LDX 70 #define R_SPARC_TLS_IE_ADD 71 #define R_SPARC_TLS_LE_HIX22 72 #define R_SPARC_TLS_LE_LOX10 73 #define R_SPARC_TLS_DTPMOD32 74 #define R_SPARC_TLS_DTPMOD64 75 #define R_SPARC_TLS_DTPOFF32 76 #define R_SPARC_TLS_DTPOFF64 77 #define R_SPARC_TLS_TPOFF32 78 #define R_SPARC_TLS_TPOFF64 79 #define R_SPARC_GOTDATA_HIX22 80 #define R_SPARC_GOTDATA_LOX10 81 #define R_SPARC_GOTDATA_OP_HIX22 82 #define R_SPARC_GOTDATA_OP_LOX10 83 #define R_SPARC_GOTDATA_OP 84 #define R_SPARC_H34 85 #define R_SPARC_SIZE32 86 #define R_SPARC_SIZE64 87 #define R_SPARC_WDISP10 88 #define R_SPARC_JMP_IREL 248 #define R_SPARC_IRELATIVE 249 #define R_SPARC_GNU_VTINHERIT 250 #define R_SPARC_GNU_VTENTRY 251 #define R_SPARC_REV32 252 /* Keep this the last entry. */ #define R_SPARC_NUM 253 /* For Sparc64, legal values for d_tag of Elf64_Dyn. */ #define DT_SPARC_REGISTER 0x70000001 #define DT_SPARC_NUM 2 /* MIPS R3000 specific definitions. */ /* Legal values for e_flags field of Elf32_Ehdr. */ #define EF_MIPS_NOREORDER 1 #define EF_MIPS_PIC 2 #define EF_MIPS_CPIC 4 #define EF_MIPS_XGOT 8 #define EF_MIPS_64BIT_WHIRL 16 #define EF_MIPS_ABI2 32 #define EF_MIPS_ABI_ON32 64 #define EF_MIPS_FP64 512 #define EF_MIPS_NAN2008 1024 #define EF_MIPS_ARCH 0xf0000000 /* Legal values for MIPS architecture level. */ #define EF_MIPS_ARCH_1 0x00000000 #define EF_MIPS_ARCH_2 0x10000000 #define EF_MIPS_ARCH_3 0x20000000 #define EF_MIPS_ARCH_4 0x30000000 #define EF_MIPS_ARCH_5 0x40000000 #define EF_MIPS_ARCH_32 0x50000000 #define EF_MIPS_ARCH_64 0x60000000 #define EF_MIPS_ARCH_32R2 0x70000000 #define EF_MIPS_ARCH_64R2 0x80000000 /* The following are unofficial names and should not be used. */ #define E_MIPS_ARCH_1 EF_MIPS_ARCH_1 #define E_MIPS_ARCH_2 EF_MIPS_ARCH_2 #define E_MIPS_ARCH_3 EF_MIPS_ARCH_3 #define E_MIPS_ARCH_4 EF_MIPS_ARCH_4 #define E_MIPS_ARCH_5 EF_MIPS_ARCH_5 #define E_MIPS_ARCH_32 EF_MIPS_ARCH_32 #define E_MIPS_ARCH_64 EF_MIPS_ARCH_64 /* Special section indices. */ #define SHN_MIPS_ACOMMON 0xff00 #define SHN_MIPS_TEXT 0xff01 #define SHN_MIPS_DATA 0xff02 #define SHN_MIPS_SCOMMON 0xff03 #define SHN_MIPS_SUNDEFINED 0xff04 /* Legal values for sh_type field of Elf32_Shdr. */ #define SHT_MIPS_LIBLIST 0x70000000 #define SHT_MIPS_MSYM 0x70000001 #define SHT_MIPS_CONFLICT 0x70000002 #define SHT_MIPS_GPTAB 0x70000003 #define SHT_MIPS_UCODE 0x70000004 #define SHT_MIPS_DEBUG 0x70000005 #define SHT_MIPS_REGINFO 0x70000006 #define SHT_MIPS_PACKAGE 0x70000007 #define SHT_MIPS_PACKSYM 0x70000008 #define SHT_MIPS_RELD 0x70000009 #define SHT_MIPS_IFACE 0x7000000b #define SHT_MIPS_CONTENT 0x7000000c #define SHT_MIPS_OPTIONS 0x7000000d #define SHT_MIPS_SHDR 0x70000010 #define SHT_MIPS_FDESC 0x70000011 #define SHT_MIPS_EXTSYM 0x70000012 #define SHT_MIPS_DENSE 0x70000013 #define SHT_MIPS_PDESC 0x70000014 #define SHT_MIPS_LOCSYM 0x70000015 #define SHT_MIPS_AUXSYM 0x70000016 #define SHT_MIPS_OPTSYM 0x70000017 #define SHT_MIPS_LOCSTR 0x70000018 #define SHT_MIPS_LINE 0x70000019 #define SHT_MIPS_RFDESC 0x7000001a #define SHT_MIPS_DELTASYM 0x7000001b #define SHT_MIPS_DELTAINST 0x7000001c #define SHT_MIPS_DELTACLASS 0x7000001d #define SHT_MIPS_DWARF 0x7000001e #define SHT_MIPS_DELTADECL 0x7000001f #define SHT_MIPS_SYMBOL_LIB 0x70000020 #define SHT_MIPS_EVENTS 0x70000021 #define SHT_MIPS_TRANSLATE 0x70000022 #define SHT_MIPS_PIXIE 0x70000023 #define SHT_MIPS_XLATE 0x70000024 #define SHT_MIPS_XLATE_DEBUG 0x70000025 #define SHT_MIPS_WHIRL 0x70000026 #define SHT_MIPS_EH_REGION 0x70000027 #define SHT_MIPS_XLATE_OLD 0x70000028 #define SHT_MIPS_PDR_EXCEPTION 0x70000029 #define SHT_MIPS_XHASH 0x7000002b /* Legal values for sh_flags field of Elf32_Shdr. */ #define SHF_MIPS_GPREL 0x10000000 #define SHF_MIPS_MERGE 0x20000000 #define SHF_MIPS_ADDR 0x40000000 #define SHF_MIPS_STRINGS 0x80000000 #define SHF_MIPS_NOSTRIP 0x08000000 #define SHF_MIPS_LOCAL 0x04000000 #define SHF_MIPS_NAMES 0x02000000 #define SHF_MIPS_NODUPE 0x01000000 /* Symbol tables. */ /* MIPS specific values for `st_other'. */ #define STO_MIPS_DEFAULT 0x0 #define STO_MIPS_INTERNAL 0x1 #define STO_MIPS_HIDDEN 0x2 #define STO_MIPS_PROTECTED 0x3 #define STO_MIPS_PLT 0x8 #define STO_MIPS_SC_ALIGN_UNUSED 0xff /* MIPS specific values for `st_info'. */ #define STB_MIPS_SPLIT_COMMON 13 /* Entries found in sections of type SHT_MIPS_GPTAB. */ typedef union { struct { Elf32_Word gt_current_g_value; /* -G value used for compilation. */ Elf32_Word gt_unused; /* Not used. */ } gt_header; /* First entry in section. */ struct { Elf32_Word gt_g_value; /* If this value were used for -G. */ Elf32_Word gt_bytes; /* This many bytes would be used. */ } gt_entry; /* Subsequent entries in section. */ } Elf32_gptab; /* Entry found in sections of type SHT_MIPS_REGINFO. */ typedef struct { Elf32_Word ri_gprmask; /* General registers used. */ Elf32_Word ri_cprmask[4]; /* Coprocessor registers used. */ Elf32_Sword ri_gp_value; /* $gp register value. */ } Elf32_RegInfo; /* Entries found in sections of type SHT_MIPS_OPTIONS. */ typedef struct { unsigned char kind; /* Determines interpretation of the variable part of descriptor. */ unsigned char size; /* Size of descriptor, including header. */ Elf32_Section section; /* Section header index of section affected, 0 for global options. */ Elf32_Word info; /* Kind-specific information. */ } Elf_Options; /* Values for `kind' field in Elf_Options. */ #define ODK_NULL 0 #define ODK_REGINFO 1 #define ODK_EXCEPTIONS 2 #define ODK_PAD 3 #define ODK_HWPATCH 4 #define ODK_FILL 5 #define ODK_TAGS 6 #define ODK_HWAND 7 #define ODK_HWOR 8 /* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries. */ #define OEX_FPU_MIN 0x1f #define OEX_FPU_MAX 0x1f00 #define OEX_PAGE0 0x10000 #define OEX_SMM 0x20000 #define OEX_FPDBUG 0x40000 #define OEX_PRECISEFP OEX_FPDBUG #define OEX_DISMISS 0x80000 #define OEX_FPU_INVAL 0x10 #define OEX_FPU_DIV0 0x08 #define OEX_FPU_OFLO 0x04 #define OEX_FPU_UFLO 0x02 #define OEX_FPU_INEX 0x01 /* Masks for `info' in Elf_Options for an ODK_HWPATCH entry. */ #define OHW_R4KEOP 0x1 #define OHW_R8KPFETCH 0x2 #define OHW_R5KEOP 0x4 #define OHW_R5KCVTL 0x8 #define OPAD_PREFIX 0x1 #define OPAD_POSTFIX 0x2 #define OPAD_SYMBOL 0x4 /* Entry found in `.options' section. */ typedef struct { Elf32_Word hwp_flags1; /* Extra flags. */ Elf32_Word hwp_flags2; /* Extra flags. */ } Elf_Options_Hw; /* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries. */ #define OHWA0_R4KEOP_CHECKED 0x00000001 #define OHWA1_R4KEOP_CLEAN 0x00000002 /* MIPS relocs. */ #define R_MIPS_NONE 0 #define R_MIPS_16 1 #define R_MIPS_32 2 #define R_MIPS_REL32 3 #define R_MIPS_26 4 #define R_MIPS_HI16 5 #define R_MIPS_LO16 6 #define R_MIPS_GPREL16 7 #define R_MIPS_LITERAL 8 #define R_MIPS_GOT16 9 #define R_MIPS_PC16 10 #define R_MIPS_CALL16 11 #define R_MIPS_GPREL32 12 #define R_MIPS_SHIFT5 16 #define R_MIPS_SHIFT6 17 #define R_MIPS_64 18 #define R_MIPS_GOT_DISP 19 #define R_MIPS_GOT_PAGE 20 #define R_MIPS_GOT_OFST 21 #define R_MIPS_GOT_HI16 22 #define R_MIPS_GOT_LO16 23 #define R_MIPS_SUB 24 #define R_MIPS_INSERT_A 25 #define R_MIPS_INSERT_B 26 #define R_MIPS_DELETE 27 #define R_MIPS_HIGHER 28 #define R_MIPS_HIGHEST 29 #define R_MIPS_CALL_HI16 30 #define R_MIPS_CALL_LO16 31 #define R_MIPS_SCN_DISP 32 #define R_MIPS_REL16 33 #define R_MIPS_ADD_IMMEDIATE 34 #define R_MIPS_PJUMP 35 #define R_MIPS_RELGOT 36 #define R_MIPS_JALR 37 #define R_MIPS_TLS_DTPMOD32 38 #define R_MIPS_TLS_DTPREL32 39 #define R_MIPS_TLS_DTPMOD64 40 #define R_MIPS_TLS_DTPREL64 41 #define R_MIPS_TLS_GD 42 #define R_MIPS_TLS_LDM 43 #define R_MIPS_TLS_DTPREL_HI16 44 #define R_MIPS_TLS_DTPREL_LO16 45 #define R_MIPS_TLS_GOTTPREL 46 #define R_MIPS_TLS_TPREL32 47 #define R_MIPS_TLS_TPREL64 48 #define R_MIPS_TLS_TPREL_HI16 49 #define R_MIPS_TLS_TPREL_LO16 50 #define R_MIPS_GLOB_DAT 51 #define R_MIPS_COPY 126 #define R_MIPS_JUMP_SLOT 127 /* Keep this the last entry. */ #define R_MIPS_NUM 128 /* Legal values for p_type field of Elf32_Phdr. */ #define PT_MIPS_REGINFO 0x70000000 #define PT_MIPS_RTPROC 0x70000001 #define PT_MIPS_OPTIONS 0x70000002 #define PT_MIPS_ABIFLAGS 0x70000003 /* Special program header types. */ #define PF_MIPS_LOCAL 0x10000000 /* Legal values for d_tag field of Elf32_Dyn. */ #define DT_MIPS_RLD_VERSION 0x70000001 #define DT_MIPS_TIME_STAMP 0x70000002 #define DT_MIPS_ICHECKSUM 0x70000003 #define DT_MIPS_IVERSION 0x70000004 #define DT_MIPS_FLAGS 0x70000005 #define DT_MIPS_BASE_ADDRESS 0x70000006 #define DT_MIPS_MSYM 0x70000007 #define DT_MIPS_CONFLICT 0x70000008 #define DT_MIPS_LIBLIST 0x70000009 #define DT_MIPS_LOCAL_GOTNO 0x7000000a #define DT_MIPS_CONFLICTNO 0x7000000b #define DT_MIPS_LIBLISTNO 0x70000010 #define DT_MIPS_SYMTABNO 0x70000011 #define DT_MIPS_UNREFEXTNO 0x70000012 #define DT_MIPS_GOTSYM 0x70000013 #define DT_MIPS_HIPAGENO 0x70000014 #define DT_MIPS_RLD_MAP 0x70000016 #define DT_MIPS_DELTA_CLASS 0x70000017 #define DT_MIPS_DELTA_CLASS_NO 0x70000018 #define DT_MIPS_DELTA_INSTANCE 0x70000019 #define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a #define DT_MIPS_DELTA_RELOC 0x7000001b #define DT_MIPS_DELTA_RELOC_NO 0x7000001c #define DT_MIPS_DELTA_SYM 0x7000001d #define DT_MIPS_DELTA_SYM_NO 0x7000001e #define DT_MIPS_DELTA_CLASSSYM 0x70000020 #define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 #define DT_MIPS_CXX_FLAGS 0x70000022 #define DT_MIPS_PIXIE_INIT 0x70000023 #define DT_MIPS_SYMBOL_LIB 0x70000024 #define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 #define DT_MIPS_LOCAL_GOTIDX 0x70000026 #define DT_MIPS_HIDDEN_GOTIDX 0x70000027 #define DT_MIPS_PROTECTED_GOTIDX 0x70000028 #define DT_MIPS_OPTIONS 0x70000029 #define DT_MIPS_INTERFACE 0x7000002a #define DT_MIPS_DYNSTR_ALIGN 0x7000002b #define DT_MIPS_INTERFACE_SIZE 0x7000002c #define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d #define DT_MIPS_PERF_SUFFIX 0x7000002e #define DT_MIPS_COMPACT_SIZE 0x7000002f #define DT_MIPS_GP_VALUE 0x70000030 #define DT_MIPS_AUX_DYNAMIC 0x70000031 /* The address of .got.plt in an executable using the new non-PIC ABI. */ #define DT_MIPS_PLTGOT 0x70000032 /* The base of the PLT in an executable using the new non-PIC ABI if that PLT is writable. For a non-writable PLT, this is omitted or has a zero value. */ #define DT_MIPS_RWPLT 0x70000034 /* An alternative description of the classic MIPS RLD_MAP that is usable in a PIE as it stores a relative offset from the address of the tag rather than an absolute address. */ #define DT_MIPS_RLD_MAP_REL 0x70000035 /* GNU-style hash table with xlat. */ #define DT_MIPS_XHASH 0x70000036 #define DT_MIPS_NUM 0x37 /* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry. */ #define RHF_NONE 0 #define RHF_QUICKSTART (1 << 0) #define RHF_NOTPOT (1 << 1) #define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) #define RHF_NO_MOVE (1 << 3) #define RHF_SGI_ONLY (1 << 4) #define RHF_GUARANTEE_INIT (1 << 5) #define RHF_DELTA_C_PLUS_PLUS (1 << 6) #define RHF_GUARANTEE_START_INIT (1 << 7) #define RHF_PIXIE (1 << 8) #define RHF_DEFAULT_DELAY_LOAD (1 << 9) #define RHF_REQUICKSTART (1 << 10) #define RHF_REQUICKSTARTED (1 << 11) #define RHF_CORD (1 << 12) #define RHF_NO_UNRES_UNDEF (1 << 13) #define RHF_RLD_ORDER_SAFE (1 << 14) /* Entries found in sections of type SHT_MIPS_LIBLIST. */ typedef struct { Elf32_Word l_name; /* Name (string table index) */ Elf32_Word l_time_stamp; /* Timestamp */ Elf32_Word l_checksum; /* Checksum */ Elf32_Word l_version; /* Interface version */ Elf32_Word l_flags; /* Flags */ } Elf32_Lib; typedef struct { Elf64_Word l_name; /* Name (string table index) */ Elf64_Word l_time_stamp; /* Timestamp */ Elf64_Word l_checksum; /* Checksum */ Elf64_Word l_version; /* Interface version */ Elf64_Word l_flags; /* Flags */ } Elf64_Lib; /* Legal values for l_flags. */ #define LL_NONE 0 #define LL_EXACT_MATCH (1 << 0) #define LL_IGNORE_INT_VER (1 << 1) #define LL_REQUIRE_MINOR (1 << 2) #define LL_EXPORTS (1 << 3) #define LL_DELAY_LOAD (1 << 4) #define LL_DELTA (1 << 5) /* Entries found in sections of type SHT_MIPS_CONFLICT. */ typedef Elf32_Addr Elf32_Conflict; typedef struct { /* Version of flags structure. */ Elf32_Half version; /* The level of the ISA: 1-5, 32, 64. */ unsigned char isa_level; /* The revision of ISA: 0 for MIPS V and below, 1-n otherwise. */ unsigned char isa_rev; /* The size of general purpose registers. */ unsigned char gpr_size; /* The size of co-processor 1 registers. */ unsigned char cpr1_size; /* The size of co-processor 2 registers. */ unsigned char cpr2_size; /* The floating-point ABI. */ unsigned char fp_abi; /* Processor-specific extension. */ Elf32_Word isa_ext; /* Mask of ASEs used. */ Elf32_Word ases; /* Mask of general flags. */ Elf32_Word flags1; Elf32_Word flags2; } Elf_MIPS_ABIFlags_v0; /* Values for the register size bytes of an abi flags structure. */ #define MIPS_AFL_REG_NONE 0x00 #define MIPS_AFL_REG_32 0x01 #define MIPS_AFL_REG_64 0x02 #define MIPS_AFL_REG_128 0x03 /* Masks for the ases word of an ABI flags structure. */ #define MIPS_AFL_ASE_DSP 0x00000001 #define MIPS_AFL_ASE_DSPR2 0x00000002 #define MIPS_AFL_ASE_EVA 0x00000004 #define MIPS_AFL_ASE_MCU 0x00000008 #define MIPS_AFL_ASE_MDMX 0x00000010 #define MIPS_AFL_ASE_MIPS3D 0x00000020 #define MIPS_AFL_ASE_MT 0x00000040 #define MIPS_AFL_ASE_SMARTMIPS 0x00000080 #define MIPS_AFL_ASE_VIRT 0x00000100 #define MIPS_AFL_ASE_MSA 0x00000200 #define MIPS_AFL_ASE_MIPS16 0x00000400 #define MIPS_AFL_ASE_MICROMIPS 0x00000800 #define MIPS_AFL_ASE_XPA 0x00001000 #define MIPS_AFL_ASE_MASK 0x00001fff /* Values for the isa_ext word of an ABI flags structure. */ #define MIPS_AFL_EXT_XLR 1 #define MIPS_AFL_EXT_OCTEON2 2 #define MIPS_AFL_EXT_OCTEONP 3 #define MIPS_AFL_EXT_LOONGSON_3A 4 #define MIPS_AFL_EXT_OCTEON 5 #define MIPS_AFL_EXT_5900 6 #define MIPS_AFL_EXT_4650 7 #define MIPS_AFL_EXT_4010 8 #define MIPS_AFL_EXT_4100 9 #define MIPS_AFL_EXT_3900 10 #define MIPS_AFL_EXT_10000 11 #define MIPS_AFL_EXT_SB1 12 #define MIPS_AFL_EXT_4111 13 #define MIPS_AFL_EXT_4120 14 #define MIPS_AFL_EXT_5400 15 #define MIPS_AFL_EXT_5500 16 #define MIPS_AFL_EXT_LOONGSON_2E 17 #define MIPS_AFL_EXT_LOONGSON_2F 18 /* Masks for the flags1 word of an ABI flags structure. */ #define MIPS_AFL_FLAGS1_ODDSPREG 1 /* Object attribute values. */ enum { /* Not tagged or not using any ABIs affected by the differences. */ Val_GNU_MIPS_ABI_FP_ANY = 0, /* Using hard-float -mdouble-float. */ Val_GNU_MIPS_ABI_FP_DOUBLE = 1, /* Using hard-float -msingle-float. */ Val_GNU_MIPS_ABI_FP_SINGLE = 2, /* Using soft-float. */ Val_GNU_MIPS_ABI_FP_SOFT = 3, /* Using -mips32r2 -mfp64. */ Val_GNU_MIPS_ABI_FP_OLD_64 = 4, /* Using -mfpxx. */ Val_GNU_MIPS_ABI_FP_XX = 5, /* Using -mips32r2 -mfp64. */ Val_GNU_MIPS_ABI_FP_64 = 6, /* Using -mips32r2 -mfp64 -mno-odd-spreg. */ Val_GNU_MIPS_ABI_FP_64A = 7, /* Maximum allocated FP ABI value. */ Val_GNU_MIPS_ABI_FP_MAX = 7 }; /* HPPA specific definitions. */ /* Legal values for e_flags field of Elf32_Ehdr. */ #define EF_PARISC_TRAPNIL 0x00010000 #define EF_PARISC_EXT 0x00020000 #define EF_PARISC_LSB 0x00040000 #define EF_PARISC_WIDE 0x00080000 #define EF_PARISC_NO_KABP 0x00100000 #define EF_PARISC_LAZYSWAP 0x00400000 #define EF_PARISC_ARCH 0x0000ffff /* Defined values for `e_flags & EF_PARISC_ARCH' are: */ #define EFA_PARISC_1_0 0x020b #define EFA_PARISC_1_1 0x0210 #define EFA_PARISC_2_0 0x0214 /* Additional section indices. */ #define SHN_PARISC_ANSI_COMMON 0xff00 #define SHN_PARISC_HUGE_COMMON 0xff01 /* Legal values for sh_type field of Elf32_Shdr. */ #define SHT_PARISC_EXT 0x70000000 #define SHT_PARISC_UNWIND 0x70000001 #define SHT_PARISC_DOC 0x70000002 /* Legal values for sh_flags field of Elf32_Shdr. */ #define SHF_PARISC_SHORT 0x20000000 #define SHF_PARISC_HUGE 0x40000000 #define SHF_PARISC_SBP 0x80000000 /* Legal values for ST_TYPE subfield of st_info (symbol type). */ #define STT_PARISC_MILLICODE 13 #define STT_HP_OPAQUE (STT_LOOS + 0x1) #define STT_HP_STUB (STT_LOOS + 0x2) /* HPPA relocs. */ #define R_PARISC_NONE 0 #define R_PARISC_DIR32 1 #define R_PARISC_DIR21L 2 #define R_PARISC_DIR17R 3 #define R_PARISC_DIR17F 4 #define R_PARISC_DIR14R 6 #define R_PARISC_PCREL32 9 #define R_PARISC_PCREL21L 10 #define R_PARISC_PCREL17R 11 #define R_PARISC_PCREL17F 12 #define R_PARISC_PCREL14R 14 #define R_PARISC_DPREL21L 18 #define R_PARISC_DPREL14R 22 #define R_PARISC_GPREL21L 26 #define R_PARISC_GPREL14R 30 #define R_PARISC_LTOFF21L 34 #define R_PARISC_LTOFF14R 38 #define R_PARISC_SECREL32 41 #define R_PARISC_SEGBASE 48 #define R_PARISC_SEGREL32 49 #define R_PARISC_PLTOFF21L 50 #define R_PARISC_PLTOFF14R 54 #define R_PARISC_LTOFF_FPTR32 57 #define R_PARISC_LTOFF_FPTR21L 58 #define R_PARISC_LTOFF_FPTR14R 62 #define R_PARISC_FPTR64 64 #define R_PARISC_PLABEL32 65 #define R_PARISC_PLABEL21L 66 #define R_PARISC_PLABEL14R 70 #define R_PARISC_PCREL64 72 #define R_PARISC_PCREL22F 74 #define R_PARISC_PCREL14WR 75 #define R_PARISC_PCREL14DR 76 #define R_PARISC_PCREL16F 77 #define R_PARISC_PCREL16WF 78 #define R_PARISC_PCREL16DF 79 #define R_PARISC_DIR64 80 #define R_PARISC_DIR14WR 83 #define R_PARISC_DIR14DR 84 #define R_PARISC_DIR16F 85 #define R_PARISC_DIR16WF 86 #define R_PARISC_DIR16DF 87 #define R_PARISC_GPREL64 88 #define R_PARISC_GPREL14WR 91 #define R_PARISC_GPREL14DR 92 #define R_PARISC_GPREL16F 93 #define R_PARISC_GPREL16WF 94 #define R_PARISC_GPREL16DF 95 #define R_PARISC_LTOFF64 96 #define R_PARISC_LTOFF14WR 99 #define R_PARISC_LTOFF14DR 100 #define R_PARISC_LTOFF16F 101 #define R_PARISC_LTOFF16WF 102 #define R_PARISC_LTOFF16DF 103 #define R_PARISC_SECREL64 104 #define R_PARISC_SEGREL64 112 #define R_PARISC_PLTOFF14WR 115 #define R_PARISC_PLTOFF14DR 116 #define R_PARISC_PLTOFF16F 117 #define R_PARISC_PLTOFF16WF 118 #define R_PARISC_PLTOFF16DF 119 #define R_PARISC_LTOFF_FPTR64 120 #define R_PARISC_LTOFF_FPTR14WR 123 #define R_PARISC_LTOFF_FPTR14DR 124 #define R_PARISC_LTOFF_FPTR16F 125 #define R_PARISC_LTOFF_FPTR16WF 126 #define R_PARISC_LTOFF_FPTR16DF 127 #define R_PARISC_LORESERVE 128 #define R_PARISC_COPY 128 #define R_PARISC_IPLT 129 #define R_PARISC_EPLT 130 #define R_PARISC_TPREL32 153 #define R_PARISC_TPREL21L 154 #define R_PARISC_TPREL14R 158 #define R_PARISC_LTOFF_TP21L 162 #define R_PARISC_LTOFF_TP14R 166 #define R_PARISC_LTOFF_TP14F 167 #define R_PARISC_TPREL64 216 #define R_PARISC_TPREL14WR 219 #define R_PARISC_TPREL14DR 220 #define R_PARISC_TPREL16F 221 #define R_PARISC_TPREL16WF 222 #define R_PARISC_TPREL16DF 223 #define R_PARISC_LTOFF_TP64 224 #define R_PARISC_LTOFF_TP14WR 227 #define R_PARISC_LTOFF_TP14DR 228 #define R_PARISC_LTOFF_TP16F 229 #define R_PARISC_LTOFF_TP16WF 230 #define R_PARISC_LTOFF_TP16DF 231 #define R_PARISC_GNU_VTENTRY 232 #define R_PARISC_GNU_VTINHERIT 233 #define R_PARISC_TLS_GD21L 234 #define R_PARISC_TLS_GD14R 235 #define R_PARISC_TLS_GDCALL 236 #define R_PARISC_TLS_LDM21L 237 #define R_PARISC_TLS_LDM14R 238 #define R_PARISC_TLS_LDMCALL 239 #define R_PARISC_TLS_LDO21L 240 #define R_PARISC_TLS_LDO14R 241 #define R_PARISC_TLS_DTPMOD32 242 #define R_PARISC_TLS_DTPMOD64 243 #define R_PARISC_TLS_DTPOFF32 244 #define R_PARISC_TLS_DTPOFF64 245 #define R_PARISC_TLS_LE21L R_PARISC_TPREL21L #define R_PARISC_TLS_LE14R R_PARISC_TPREL14R #define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L #define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R #define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32 #define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64 #define R_PARISC_HIRESERVE 255 /* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */ #define PT_HP_TLS (PT_LOOS + 0x0) #define PT_HP_CORE_NONE (PT_LOOS + 0x1) #define PT_HP_CORE_VERSION (PT_LOOS + 0x2) #define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) #define PT_HP_CORE_COMM (PT_LOOS + 0x4) #define PT_HP_CORE_PROC (PT_LOOS + 0x5) #define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) #define PT_HP_CORE_STACK (PT_LOOS + 0x7) #define PT_HP_CORE_SHM (PT_LOOS + 0x8) #define PT_HP_CORE_MMF (PT_LOOS + 0x9) #define PT_HP_PARALLEL (PT_LOOS + 0x10) #define PT_HP_FASTBIND (PT_LOOS + 0x11) #define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) #define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) #define PT_HP_STACK (PT_LOOS + 0x14) #define PT_PARISC_ARCHEXT 0x70000000 #define PT_PARISC_UNWIND 0x70000001 /* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr. */ #define PF_PARISC_SBP 0x08000000 #define PF_HP_PAGE_SIZE 0x00100000 #define PF_HP_FAR_SHARED 0x00200000 #define PF_HP_NEAR_SHARED 0x00400000 #define PF_HP_CODE 0x01000000 #define PF_HP_MODIFY 0x02000000 #define PF_HP_LAZYSWAP 0x04000000 #define PF_HP_SBP 0x08000000 /* Alpha specific definitions. */ /* Legal values for e_flags field of Elf64_Ehdr. */ #define EF_ALPHA_32BIT 1 #define EF_ALPHA_CANRELAX 2 /* Legal values for sh_type field of Elf64_Shdr. */ /* These two are primerily concerned with ECOFF debugging info. */ #define SHT_ALPHA_DEBUG 0x70000001 #define SHT_ALPHA_REGINFO 0x70000002 /* Legal values for sh_flags field of Elf64_Shdr. */ #define SHF_ALPHA_GPREL 0x10000000 /* Legal values for st_other field of Elf64_Sym. */ #define STO_ALPHA_NOPV 0x80 #define STO_ALPHA_STD_GPLOAD 0x88 /* Alpha relocs. */ #define R_ALPHA_NONE 0 #define R_ALPHA_REFLONG 1 #define R_ALPHA_REFQUAD 2 #define R_ALPHA_GPREL32 3 #define R_ALPHA_LITERAL 4 #define R_ALPHA_LITUSE 5 #define R_ALPHA_GPDISP 6 #define R_ALPHA_BRADDR 7 #define R_ALPHA_HINT 8 #define R_ALPHA_SREL16 9 #define R_ALPHA_SREL32 10 #define R_ALPHA_SREL64 11 #define R_ALPHA_GPRELHIGH 17 #define R_ALPHA_GPRELLOW 18 #define R_ALPHA_GPREL16 19 #define R_ALPHA_COPY 24 #define R_ALPHA_GLOB_DAT 25 #define R_ALPHA_JMP_SLOT 26 #define R_ALPHA_RELATIVE 27 #define R_ALPHA_TLS_GD_HI 28 #define R_ALPHA_TLSGD 29 #define R_ALPHA_TLS_LDM 30 #define R_ALPHA_DTPMOD64 31 #define R_ALPHA_GOTDTPREL 32 #define R_ALPHA_DTPREL64 33 #define R_ALPHA_DTPRELHI 34 #define R_ALPHA_DTPRELLO 35 #define R_ALPHA_DTPREL16 36 #define R_ALPHA_GOTTPREL 37 #define R_ALPHA_TPREL64 38 #define R_ALPHA_TPRELHI 39 #define R_ALPHA_TPRELLO 40 #define R_ALPHA_TPREL16 41 /* Keep this the last entry. */ #define R_ALPHA_NUM 46 /* Magic values of the LITUSE relocation addend. */ #define LITUSE_ALPHA_ADDR 0 #define LITUSE_ALPHA_BASE 1 #define LITUSE_ALPHA_BYTOFF 2 #define LITUSE_ALPHA_JSR 3 #define LITUSE_ALPHA_TLS_GD 4 #define LITUSE_ALPHA_TLS_LDM 5 /* Legal values for d_tag of Elf64_Dyn. */ #define DT_ALPHA_PLTRO (DT_LOPROC + 0) #define DT_ALPHA_NUM 1 /* PowerPC specific declarations */ /* Values for Elf32/64_Ehdr.e_flags. */ #define EF_PPC_EMB 0x80000000 /* Cygnus local bits below */ #define EF_PPC_RELOCATABLE 0x00010000 #define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC relocations defined by the ABIs */ #define R_PPC_NONE 0 #define R_PPC_ADDR32 1 #define R_PPC_ADDR24 2 #define R_PPC_ADDR16 3 #define R_PPC_ADDR16_LO 4 #define R_PPC_ADDR16_HI 5 #define R_PPC_ADDR16_HA 6 #define R_PPC_ADDR14 7 #define R_PPC_ADDR14_BRTAKEN 8 #define R_PPC_ADDR14_BRNTAKEN 9 #define R_PPC_REL24 10 #define R_PPC_REL14 11 #define R_PPC_REL14_BRTAKEN 12 #define R_PPC_REL14_BRNTAKEN 13 #define R_PPC_GOT16 14 #define R_PPC_GOT16_LO 15 #define R_PPC_GOT16_HI 16 #define R_PPC_GOT16_HA 17 #define R_PPC_PLTREL24 18 #define R_PPC_COPY 19 #define R_PPC_GLOB_DAT 20 #define R_PPC_JMP_SLOT 21 #define R_PPC_RELATIVE 22 #define R_PPC_LOCAL24PC 23 #define R_PPC_UADDR32 24 #define R_PPC_UADDR16 25 #define R_PPC_REL32 26 #define R_PPC_PLT32 27 #define R_PPC_PLTREL32 28 #define R_PPC_PLT16_LO 29 #define R_PPC_PLT16_HI 30 #define R_PPC_PLT16_HA 31 #define R_PPC_SDAREL16 32 #define R_PPC_SECTOFF 33 #define R_PPC_SECTOFF_LO 34 #define R_PPC_SECTOFF_HI 35 #define R_PPC_SECTOFF_HA 36 /* PowerPC relocations defined for the TLS access ABI. */ #define R_PPC_TLS 67 #define R_PPC_DTPMOD32 68 #define R_PPC_TPREL16 69 #define R_PPC_TPREL16_LO 70 #define R_PPC_TPREL16_HI 71 #define R_PPC_TPREL16_HA 72 #define R_PPC_TPREL32 73 #define R_PPC_DTPREL16 74 #define R_PPC_DTPREL16_LO 75 #define R_PPC_DTPREL16_HI 76 #define R_PPC_DTPREL16_HA 77 #define R_PPC_DTPREL32 78 #define R_PPC_GOT_TLSGD16 79 #define R_PPC_GOT_TLSGD16_LO 80 #define R_PPC_GOT_TLSGD16_HI 81 #define R_PPC_GOT_TLSGD16_HA 82 #define R_PPC_GOT_TLSLD16 83 #define R_PPC_GOT_TLSLD16_LO 84 #define R_PPC_GOT_TLSLD16_HI 85 #define R_PPC_GOT_TLSLD16_HA 86 #define R_PPC_GOT_TPREL16 87 #define R_PPC_GOT_TPREL16_LO 88 #define R_PPC_GOT_TPREL16_HI 89 #define R_PPC_GOT_TPREL16_HA 90 #define R_PPC_GOT_DTPREL16 91 #define R_PPC_GOT_DTPREL16_LO 92 #define R_PPC_GOT_DTPREL16_HI 93 #define R_PPC_GOT_DTPREL16_HA 94 #define R_PPC_TLSGD 95 #define R_PPC_TLSLD 96 /* The remaining relocs are from the Embedded ELF ABI, and are not in the SVR4 ELF ABI. */ #define R_PPC_EMB_NADDR32 101 #define R_PPC_EMB_NADDR16 102 #define R_PPC_EMB_NADDR16_LO 103 #define R_PPC_EMB_NADDR16_HI 104 #define R_PPC_EMB_NADDR16_HA 105 #define R_PPC_EMB_SDAI16 106 #define R_PPC_EMB_SDA2I16 107 #define R_PPC_EMB_SDA2REL 108 #define R_PPC_EMB_SDA21 109 #define R_PPC_EMB_MRKREF 110 #define R_PPC_EMB_RELSEC16 111 #define R_PPC_EMB_RELST_LO 112 #define R_PPC_EMB_RELST_HI 113 #define R_PPC_EMB_RELST_HA 114 #define R_PPC_EMB_BIT_FLD 115 #define R_PPC_EMB_RELSDA 116 /* Diab tool relocations. */ #define R_PPC_DIAB_SDA21_LO 180 #define R_PPC_DIAB_SDA21_HI 181 #define R_PPC_DIAB_SDA21_HA 182 #define R_PPC_DIAB_RELSDA_LO 183 #define R_PPC_DIAB_RELSDA_HI 184 #define R_PPC_DIAB_RELSDA_HA 185 /* GNU extension to support local ifunc. */ #define R_PPC_IRELATIVE 248 /* GNU relocs used in PIC code sequences. */ #define R_PPC_REL16 249 #define R_PPC_REL16_LO 250 #define R_PPC_REL16_HI 251 #define R_PPC_REL16_HA 252 /* This is a phony reloc to handle any old fashioned TOC16 references that may still be in object files. */ #define R_PPC_TOC16 255 /* PowerPC specific values for the Dyn d_tag field. */ #define DT_PPC_GOT (DT_LOPROC + 0) #define DT_PPC_OPT (DT_LOPROC + 1) #define DT_PPC_NUM 2 /* PowerPC specific values for the DT_PPC_OPT Dyn entry. */ #define PPC_OPT_TLS 1 /* PowerPC64 relocations defined by the ABIs */ #define R_PPC64_NONE R_PPC_NONE #define R_PPC64_ADDR32 R_PPC_ADDR32 #define R_PPC64_ADDR24 R_PPC_ADDR24 #define R_PPC64_ADDR16 R_PPC_ADDR16 #define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO #define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI #define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA #define R_PPC64_ADDR14 R_PPC_ADDR14 #define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN #define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN #define R_PPC64_REL24 R_PPC_REL24 #define R_PPC64_REL14 R_PPC_REL14 #define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN #define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN #define R_PPC64_GOT16 R_PPC_GOT16 #define R_PPC64_GOT16_LO R_PPC_GOT16_LO #define R_PPC64_GOT16_HI R_PPC_GOT16_HI #define R_PPC64_GOT16_HA R_PPC_GOT16_HA #define R_PPC64_COPY R_PPC_COPY #define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT #define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT #define R_PPC64_RELATIVE R_PPC_RELATIVE #define R_PPC64_UADDR32 R_PPC_UADDR32 #define R_PPC64_UADDR16 R_PPC_UADDR16 #define R_PPC64_REL32 R_PPC_REL32 #define R_PPC64_PLT32 R_PPC_PLT32 #define R_PPC64_PLTREL32 R_PPC_PLTREL32 #define R_PPC64_PLT16_LO R_PPC_PLT16_LO #define R_PPC64_PLT16_HI R_PPC_PLT16_HI #define R_PPC64_PLT16_HA R_PPC_PLT16_HA #define R_PPC64_SECTOFF R_PPC_SECTOFF #define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO #define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI #define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA #define R_PPC64_ADDR30 37 #define R_PPC64_ADDR64 38 #define R_PPC64_ADDR16_HIGHER 39 #define R_PPC64_ADDR16_HIGHERA 40 #define R_PPC64_ADDR16_HIGHEST 41 #define R_PPC64_ADDR16_HIGHESTA 42 #define R_PPC64_UADDR64 43 #define R_PPC64_REL64 44 #define R_PPC64_PLT64 45 #define R_PPC64_PLTREL64 46 #define R_PPC64_TOC16 47 #define R_PPC64_TOC16_LO 48 #define R_PPC64_TOC16_HI 49 #define R_PPC64_TOC16_HA 50 #define R_PPC64_TOC 51 #define R_PPC64_PLTGOT16 52 #define R_PPC64_PLTGOT16_LO 53 #define R_PPC64_PLTGOT16_HI 54 #define R_PPC64_PLTGOT16_HA 55 #define R_PPC64_ADDR16_DS 56 #define R_PPC64_ADDR16_LO_DS 57 #define R_PPC64_GOT16_DS 58 #define R_PPC64_GOT16_LO_DS 59 #define R_PPC64_PLT16_LO_DS 60 #define R_PPC64_SECTOFF_DS 61 #define R_PPC64_SECTOFF_LO_DS 62 #define R_PPC64_TOC16_DS 63 #define R_PPC64_TOC16_LO_DS 64 #define R_PPC64_PLTGOT16_DS 65 #define R_PPC64_PLTGOT16_LO_DS 66 /* PowerPC64 relocations defined for the TLS access ABI. */ #define R_PPC64_TLS 67 #define R_PPC64_DTPMOD64 68 #define R_PPC64_TPREL16 69 #define R_PPC64_TPREL16_LO 70 #define R_PPC64_TPREL16_HI 71 #define R_PPC64_TPREL16_HA 72 #define R_PPC64_TPREL64 73 #define R_PPC64_DTPREL16 74 #define R_PPC64_DTPREL16_LO 75 #define R_PPC64_DTPREL16_HI 76 #define R_PPC64_DTPREL16_HA 77 #define R_PPC64_DTPREL64 78 #define R_PPC64_GOT_TLSGD16 79 #define R_PPC64_GOT_TLSGD16_LO 80 #define R_PPC64_GOT_TLSGD16_HI 81 #define R_PPC64_GOT_TLSGD16_HA 82 #define R_PPC64_GOT_TLSLD16 83 #define R_PPC64_GOT_TLSLD16_LO 84 #define R_PPC64_GOT_TLSLD16_HI 85 #define R_PPC64_GOT_TLSLD16_HA 86 #define R_PPC64_GOT_TPREL16_DS 87 #define R_PPC64_GOT_TPREL16_LO_DS 88 #define R_PPC64_GOT_TPREL16_HI 89 #define R_PPC64_GOT_TPREL16_HA 90 #define R_PPC64_GOT_DTPREL16_DS 91 #define R_PPC64_GOT_DTPREL16_LO_DS 92 #define R_PPC64_GOT_DTPREL16_HI 93 #define R_PPC64_GOT_DTPREL16_HA 94 #define R_PPC64_TPREL16_DS 95 #define R_PPC64_TPREL16_LO_DS 96 #define R_PPC64_TPREL16_HIGHER 97 #define R_PPC64_TPREL16_HIGHERA 98 #define R_PPC64_TPREL16_HIGHEST 99 #define R_PPC64_TPREL16_HIGHESTA 100 #define R_PPC64_DTPREL16_DS 101 #define R_PPC64_DTPREL16_LO_DS 102 #define R_PPC64_DTPREL16_HIGHER 103 #define R_PPC64_DTPREL16_HIGHERA 104 #define R_PPC64_DTPREL16_HIGHEST 105 #define R_PPC64_DTPREL16_HIGHESTA 106 #define R_PPC64_TLSGD 107 #define R_PPC64_TLSLD 108 #define R_PPC64_TOCSAVE 109 /* Added when HA and HI relocs were changed to report overflows. */ #define R_PPC64_ADDR16_HIGH 110 #define R_PPC64_ADDR16_HIGHA 111 #define R_PPC64_TPREL16_HIGH 112 #define R_PPC64_TPREL16_HIGHA 113 #define R_PPC64_DTPREL16_HIGH 114 #define R_PPC64_DTPREL16_HIGHA 115 /* GNU extension to support local ifunc. */ #define R_PPC64_JMP_IREL 247 #define R_PPC64_IRELATIVE 248 #define R_PPC64_REL16 249 #define R_PPC64_REL16_LO 250 #define R_PPC64_REL16_HI 251 #define R_PPC64_REL16_HA 252 /* e_flags bits specifying ABI. 1 for original function descriptor using ABI, 2 for revised ABI without function descriptors, 0 for unspecified or not using any features affected by the differences. */ #define EF_PPC64_ABI 3 /* PowerPC64 specific values for the Dyn d_tag field. */ #define DT_PPC64_GLINK (DT_LOPROC + 0) #define DT_PPC64_OPD (DT_LOPROC + 1) #define DT_PPC64_OPDSZ (DT_LOPROC + 2) #define DT_PPC64_OPT (DT_LOPROC + 3) #define DT_PPC64_NUM 4 /* PowerPC64 specific bits in the DT_PPC64_OPT Dyn entry. */ #define PPC64_OPT_TLS 1 #define PPC64_OPT_MULTI_TOC 2 #define PPC64_OPT_LOCALENTRY 4 /* PowerPC64 specific values for the Elf64_Sym st_other field. */ #define STO_PPC64_LOCAL_BIT 5 #define STO_PPC64_LOCAL_MASK (7 << STO_PPC64_LOCAL_BIT) #define PPC64_LOCAL_ENTRY_OFFSET(other) (((1 << (((other) & STO_PPC64_LOCAL_MASK) >> STO_PPC64_LOCAL_BIT)) >> 2) << 2) /* ARM specific declarations */ /* Processor specific flags for the ELF header e_flags field. */ #define EF_ARM_RELEXEC 0x01 #define EF_ARM_HASENTRY 0x02 #define EF_ARM_INTERWORK 0x04 #define EF_ARM_APCS_26 0x08 #define EF_ARM_APCS_FLOAT 0x10 #define EF_ARM_PIC 0x20 #define EF_ARM_ALIGN8 0x40 #define EF_ARM_NEW_ABI 0x80 #define EF_ARM_OLD_ABI 0x100 #define EF_ARM_SOFT_FLOAT 0x200 #define EF_ARM_VFP_FLOAT 0x400 #define EF_ARM_MAVERICK_FLOAT 0x800 #define EF_ARM_ABI_FLOAT_SOFT 0x200 #define EF_ARM_ABI_FLOAT_HARD 0x400 /* Other constants defined in the ARM ELF spec. version B-01. */ /* NB. These conflict with values defined above. */ #define EF_ARM_SYMSARESORTED 0x04 #define EF_ARM_DYNSYMSUSESEGIDX 0x08 #define EF_ARM_MAPSYMSFIRST 0x10 #define EF_ARM_EABIMASK 0XFF000000 /* Constants defined in AAELF. */ #define EF_ARM_BE8 0x00800000 #define EF_ARM_LE8 0x00400000 #define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) #define EF_ARM_EABI_UNKNOWN 0x00000000 #define EF_ARM_EABI_VER1 0x01000000 #define EF_ARM_EABI_VER2 0x02000000 #define EF_ARM_EABI_VER3 0x03000000 #define EF_ARM_EABI_VER4 0x04000000 #define EF_ARM_EABI_VER5 0x05000000 /* Additional symbol types for Thumb. */ #define STT_ARM_TFUNC STT_LOPROC #define STT_ARM_16BIT STT_HIPROC /* ARM-specific values for sh_flags */ #define SHF_ARM_ENTRYSECT 0x10000000 #define SHF_ARM_COMDEF 0x80000000 /* ARM-specific program header flags */ #define PF_ARM_SB 0x10000000 #define PF_ARM_PI 0x20000000 #define PF_ARM_ABS 0x40000000 /* Processor specific values for the Phdr p_type field. */ #define PT_ARM_EXIDX (PT_LOPROC + 1) /* Processor specific values for the Shdr sh_type field. */ #define SHT_ARM_EXIDX (SHT_LOPROC + 1) #define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) #define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) /* AArch64 relocs. */ #define R_AARCH64_NONE 0 /* ILP32 AArch64 relocs. */ #define R_AARCH64_P32_ABS32 1 #define R_AARCH64_P32_COPY 180 #define R_AARCH64_P32_GLOB_DAT 181 #define R_AARCH64_P32_JUMP_SLOT 182 #define R_AARCH64_P32_RELATIVE 183 #define R_AARCH64_P32_TLS_DTPMOD 184 #define R_AARCH64_P32_TLS_DTPREL 185 #define R_AARCH64_P32_TLS_TPREL 186 #define R_AARCH64_P32_TLSDESC 187 #define R_AARCH64_P32_IRELATIVE 188 /* LP64 AArch64 relocs. */ #define R_AARCH64_ABS64 257 #define R_AARCH64_ABS32 258 #define R_AARCH64_ABS16 259 #define R_AARCH64_PREL64 260 #define R_AARCH64_PREL32 261 #define R_AARCH64_PREL16 262 #define R_AARCH64_MOVW_UABS_G0 263 #define R_AARCH64_MOVW_UABS_G0_NC 264 #define R_AARCH64_MOVW_UABS_G1 265 #define R_AARCH64_MOVW_UABS_G1_NC 266 #define R_AARCH64_MOVW_UABS_G2 267 #define R_AARCH64_MOVW_UABS_G2_NC 268 #define R_AARCH64_MOVW_UABS_G3 269 #define R_AARCH64_MOVW_SABS_G0 270 #define R_AARCH64_MOVW_SABS_G1 271 #define R_AARCH64_MOVW_SABS_G2 272 #define R_AARCH64_LD_PREL_LO19 273 #define R_AARCH64_ADR_PREL_LO21 274 #define R_AARCH64_ADR_PREL_PG_HI21 275 #define R_AARCH64_ADR_PREL_PG_HI21_NC 276 #define R_AARCH64_ADD_ABS_LO12_NC 277 #define R_AARCH64_LDST8_ABS_LO12_NC 278 #define R_AARCH64_TSTBR14 279 #define R_AARCH64_CONDBR19 280 #define R_AARCH64_JUMP26 282 #define R_AARCH64_CALL26 283 #define R_AARCH64_LDST16_ABS_LO12_NC 284 #define R_AARCH64_LDST32_ABS_LO12_NC 285 #define R_AARCH64_LDST64_ABS_LO12_NC 286 #define R_AARCH64_MOVW_PREL_G0 287 #define R_AARCH64_MOVW_PREL_G0_NC 288 #define R_AARCH64_MOVW_PREL_G1 289 #define R_AARCH64_MOVW_PREL_G1_NC 290 #define R_AARCH64_MOVW_PREL_G2 291 #define R_AARCH64_MOVW_PREL_G2_NC 292 #define R_AARCH64_MOVW_PREL_G3 293 #define R_AARCH64_LDST128_ABS_LO12_NC 299 #define R_AARCH64_MOVW_GOTOFF_G0 300 #define R_AARCH64_MOVW_GOTOFF_G0_NC 301 #define R_AARCH64_MOVW_GOTOFF_G1 302 #define R_AARCH64_MOVW_GOTOFF_G1_NC 303 #define R_AARCH64_MOVW_GOTOFF_G2 304 #define R_AARCH64_MOVW_GOTOFF_G2_NC 305 #define R_AARCH64_MOVW_GOTOFF_G3 306 #define R_AARCH64_GOTREL64 307 #define R_AARCH64_GOTREL32 308 #define R_AARCH64_GOT_LD_PREL19 309 #define R_AARCH64_LD64_GOTOFF_LO15 310 #define R_AARCH64_ADR_GOT_PAGE 311 #define R_AARCH64_LD64_GOT_LO12_NC 312 #define R_AARCH64_LD64_GOTPAGE_LO15 313 #define R_AARCH64_TLSGD_ADR_PREL21 512 #define R_AARCH64_TLSGD_ADR_PAGE21 513 #define R_AARCH64_TLSGD_ADD_LO12_NC 514 #define R_AARCH64_TLSGD_MOVW_G1 515 #define R_AARCH64_TLSGD_MOVW_G0_NC 516 #define R_AARCH64_TLSLD_ADR_PREL21 517 #define R_AARCH64_TLSLD_ADR_PAGE21 518 #define R_AARCH64_TLSLD_ADD_LO12_NC 519 #define R_AARCH64_TLSLD_MOVW_G1 520 #define R_AARCH64_TLSLD_MOVW_G0_NC 521 #define R_AARCH64_TLSLD_LD_PREL19 522 #define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 #define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 #define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 #define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 #define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 #define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 #define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 #define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 #define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 #define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 #define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 #define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 #define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 #define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 #define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 #define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 #define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 #define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 #define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 #define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 #define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 #define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 #define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 #define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 #define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 #define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 #define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 #define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 #define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 #define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 #define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 #define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 #define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 #define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 #define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 #define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 #define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 #define R_AARCH64_TLSDESC_LD_PREL19 560 #define R_AARCH64_TLSDESC_ADR_PREL21 561 #define R_AARCH64_TLSDESC_ADR_PAGE21 562 #define R_AARCH64_TLSDESC_LD64_LO12 563 #define R_AARCH64_TLSDESC_ADD_LO12 564 #define R_AARCH64_TLSDESC_OFF_G1 565 #define R_AARCH64_TLSDESC_OFF_G0_NC 566 #define R_AARCH64_TLSDESC_LDR 567 #define R_AARCH64_TLSDESC_ADD 568 #define R_AARCH64_TLSDESC_CALL 569 #define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 #define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 #define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 #define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 #define R_AARCH64_COPY 1024 #define R_AARCH64_GLOB_DAT 1025 #define R_AARCH64_JUMP_SLOT 1026 #define R_AARCH64_RELATIVE 1027 #define R_AARCH64_TLS_DTPMOD 1028 #define R_AARCH64_TLS_DTPREL 1029 #define R_AARCH64_TLS_TPREL 1030 #define R_AARCH64_TLSDESC 1031 #define R_AARCH64_IRELATIVE 1032 /* AArch64 specific values for the Dyn d_tag field. */ #define DT_AARCH64_BTI_PLT (DT_LOPROC + 1) #define DT_AARCH64_PAC_PLT (DT_LOPROC + 3) #define DT_AARCH64_VARIANT_PCS (DT_LOPROC + 5) #define DT_AARCH64_NUM 6 /* AArch64 specific values for the st_other field. */ #define STO_AARCH64_VARIANT_PCS 0x80 /* ARM relocs. */ #define R_ARM_NONE 0 #define R_ARM_PC24 1 #define R_ARM_ABS32 2 #define R_ARM_REL32 3 #define R_ARM_PC13 4 #define R_ARM_ABS16 5 #define R_ARM_ABS12 6 #define R_ARM_THM_ABS5 7 #define R_ARM_ABS8 8 #define R_ARM_SBREL32 9 #define R_ARM_THM_PC22 10 #define R_ARM_THM_PC8 11 #define R_ARM_AMP_VCALL9 12 #define R_ARM_SWI24 13 #define R_ARM_TLS_DESC 13 #define R_ARM_THM_SWI8 14 #define R_ARM_XPC25 15 #define R_ARM_THM_XPC22 16 #define R_ARM_TLS_DTPMOD32 17 #define R_ARM_TLS_DTPOFF32 18 #define R_ARM_TLS_TPOFF32 19 #define R_ARM_COPY 20 #define R_ARM_GLOB_DAT 21 #define R_ARM_JUMP_SLOT 22 #define R_ARM_RELATIVE 23 #define R_ARM_GOTOFF 24 #define R_ARM_GOTPC 25 #define R_ARM_GOT32 26 #define R_ARM_PLT32 27 #define R_ARM_CALL 28 #define R_ARM_JUMP24 29 #define R_ARM_THM_JUMP24 30 #define R_ARM_BASE_ABS 31 #define R_ARM_ALU_PCREL_7_0 32 #define R_ARM_ALU_PCREL_15_8 33 #define R_ARM_ALU_PCREL_23_15 34 #define R_ARM_LDR_SBREL_11_0 35 #define R_ARM_ALU_SBREL_19_12 36 #define R_ARM_ALU_SBREL_27_20 37 #define R_ARM_TARGET1 38 #define R_ARM_SBREL31 39 #define R_ARM_V4BX 40 #define R_ARM_TARGET2 41 #define R_ARM_PREL31 42 #define R_ARM_MOVW_ABS_NC 43 #define R_ARM_MOVT_ABS 44 #define R_ARM_MOVW_PREL_NC 45 #define R_ARM_MOVT_PREL 46 #define R_ARM_THM_MOVW_ABS_NC 47 #define R_ARM_THM_MOVT_ABS 48 #define R_ARM_THM_MOVW_PREL_NC 49 #define R_ARM_THM_MOVT_PREL 50 #define R_ARM_THM_JUMP19 51 #define R_ARM_THM_JUMP6 52 #define R_ARM_THM_ALU_PREL_11_0 53 #define R_ARM_THM_PC12 54 #define R_ARM_ABS32_NOI 55 #define R_ARM_REL32_NOI 56 #define R_ARM_ALU_PC_G0_NC 57 #define R_ARM_ALU_PC_G0 58 #define R_ARM_ALU_PC_G1_NC 59 #define R_ARM_ALU_PC_G1 60 #define R_ARM_ALU_PC_G2 61 #define R_ARM_LDR_PC_G1 62 #define R_ARM_LDR_PC_G2 63 #define R_ARM_LDRS_PC_G0 64 #define R_ARM_LDRS_PC_G1 65 #define R_ARM_LDRS_PC_G2 66 #define R_ARM_LDC_PC_G0 67 #define R_ARM_LDC_PC_G1 68 #define R_ARM_LDC_PC_G2 69 #define R_ARM_ALU_SB_G0_NC 70 #define R_ARM_ALU_SB_G0 71 #define R_ARM_ALU_SB_G1_NC 72 #define R_ARM_ALU_SB_G1 73 #define R_ARM_ALU_SB_G2 74 #define R_ARM_LDR_SB_G0 75 #define R_ARM_LDR_SB_G1 76 #define R_ARM_LDR_SB_G2 77 #define R_ARM_LDRS_SB_G0 78 #define R_ARM_LDRS_SB_G1 79 #define R_ARM_LDRS_SB_G2 80 #define R_ARM_LDC_SB_G0 81 #define R_ARM_LDC_SB_G1 82 #define R_ARM_LDC_SB_G2 83 #define R_ARM_MOVW_BREL_NC 84 #define R_ARM_MOVT_BREL 85 #define R_ARM_MOVW_BREL 86 #define R_ARM_THM_MOVW_BREL_NC 87 #define R_ARM_THM_MOVT_BREL 88 #define R_ARM_THM_MOVW_BREL 89 #define R_ARM_TLS_GOTDESC 90 #define R_ARM_TLS_CALL 91 #define R_ARM_TLS_DESCSEQ 92 #define R_ARM_THM_TLS_CALL 93 #define R_ARM_PLT32_ABS 94 #define R_ARM_GOT_ABS 95 #define R_ARM_GOT_PREL 96 #define R_ARM_GOT_BREL12 97 #define R_ARM_GOTOFF12 98 #define R_ARM_GOTRELAX 99 #define R_ARM_GNU_VTENTRY 100 #define R_ARM_GNU_VTINHERIT 101 #define R_ARM_THM_PC11 102 #define R_ARM_THM_PC9 103 #define R_ARM_TLS_GD32 104 #define R_ARM_TLS_LDM32 105 #define R_ARM_TLS_LDO32 106 #define R_ARM_TLS_IE32 107 #define R_ARM_TLS_LE32 108 #define R_ARM_TLS_LDO12 109 #define R_ARM_TLS_LE12 110 #define R_ARM_TLS_IE12GP 111 #define R_ARM_ME_TOO 128 #define R_ARM_THM_TLS_DESCSEQ 129 #define R_ARM_THM_TLS_DESCSEQ16 129 #define R_ARM_THM_TLS_DESCSEQ32 130 #define R_ARM_THM_GOT_BREL12 131 #define R_ARM_IRELATIVE 160 #define R_ARM_RXPC25 249 #define R_ARM_RSBREL32 250 #define R_ARM_THM_RPC22 251 #define R_ARM_RREL32 252 #define R_ARM_RABS22 253 #define R_ARM_RPC24 254 #define R_ARM_RBASE 255 /* Keep this the last entry. */ #define R_ARM_NUM 256 /* C-SKY */ #define R_CKCORE_NONE 0 #define R_CKCORE_ADDR32 1 #define R_CKCORE_PCRELIMM8BY4 2 #define R_CKCORE_PCRELIMM11BY2 3 #define R_CKCORE_PCREL32 5 #define R_CKCORE_PCRELJSR_IMM11BY2 6 #define R_CKCORE_RELATIVE 9 #define R_CKCORE_COPY 10 #define R_CKCORE_GLOB_DAT 11 #define R_CKCORE_JUMP_SLOT 12 #define R_CKCORE_GOTOFF 13 #define R_CKCORE_GOTPC 14 #define R_CKCORE_GOT32 15 #define R_CKCORE_PLT32 16 #define R_CKCORE_ADDRGOT 17 #define R_CKCORE_ADDRPLT 18 #define R_CKCORE_PCREL_IMM26BY2 19 #define R_CKCORE_PCREL_IMM16BY2 20 #define R_CKCORE_PCREL_IMM16BY4 21 #define R_CKCORE_PCREL_IMM10BY2 22 #define R_CKCORE_PCREL_IMM10BY4 23 #define R_CKCORE_ADDR_HI16 24 /* ((S + A) >> 16) & 0xffff */ #define R_CKCORE_ADDR_LO16 25 #define R_CKCORE_GOTPC_HI16 26 /* ((GOT + A - P) >> 16) & 0xffff */ #define R_CKCORE_GOTPC_LO16 27 #define R_CKCORE_GOTOFF_HI16 28 /* ((S + A - GOT) >> 16) & 0xffff */ #define R_CKCORE_GOTOFF_LO16 29 #define R_CKCORE_GOT12 30 #define R_CKCORE_GOT_HI16 31 /* (G >> 16) & 0xffff */ #define R_CKCORE_GOT_LO16 32 #define R_CKCORE_PLT12 33 #define R_CKCORE_PLT_HI16 34 /* (G >> 16) & 0xffff */ #define R_CKCORE_PLT_LO16 35 #define R_CKCORE_ADDRGOT_HI16 36 /* (GOT + G * 4) & 0xffff */ #define R_CKCORE_ADDRGOT_LO16 37 #define R_CKCORE_ADDRPLT_HI16 38 /* ((GOT + G * 4) >> 16) & 0xFFFF */ #define R_CKCORE_ADDRPLT_LO16 39 #define R_CKCORE_PCREL_JSR_IMM26BY2 40 #define R_CKCORE_TOFFSET_LO16 41 #define R_CKCORE_DOFFSET_LO16 42 #define R_CKCORE_PCREL_IMM18BY2 43 #define R_CKCORE_DOFFSET_IMM18 44 #define R_CKCORE_DOFFSET_IMM18BY2 45 #define R_CKCORE_DOFFSET_IMM18BY4 46 #define R_CKCORE_GOT_IMM18BY4 48 #define R_CKCORE_PLT_IMM18BY4 49 #define R_CKCORE_PCREL_IMM7BY4 50 #define R_CKCORE_TLS_LE32 51 #define R_CKCORE_TLS_IE32 52 #define R_CKCORE_TLS_GD32 53 #define R_CKCORE_TLS_LDM32 54 #define R_CKCORE_TLS_LDO32 55 #define R_CKCORE_TLS_DTPMOD32 56 #define R_CKCORE_TLS_DTPOFF32 57 #define R_CKCORE_TLS_TPOFF32 58 /* C-SKY elf header definition. */ #define EF_CSKY_ABIMASK 0XF0000000 #define EF_CSKY_OTHER 0X0FFF0000 #define EF_CSKY_PROCESSOR 0X0000FFFF #define EF_CSKY_ABIV1 0X10000000 #define EF_CSKY_ABIV2 0X20000000 /* C-SKY attributes section. */ #define SHT_CSKY_ATTRIBUTES (SHT_LOPROC + 1) /* IA-64 specific declarations. */ /* Processor specific flags for the Ehdr e_flags field. */ #define EF_IA_64_MASKOS 0x0000000f #define EF_IA_64_ABI64 0x00000010 #define EF_IA_64_ARCH 0xff000000 /* Processor specific values for the Phdr p_type field. */ #define PT_IA_64_ARCHEXT (PT_LOPROC + 0) #define PT_IA_64_UNWIND (PT_LOPROC + 1) #define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) #define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) #define PT_IA_64_HP_STACK (PT_LOOS + 0x14) /* Processor specific flags for the Phdr p_flags field. */ #define PF_IA_64_NORECOV 0x80000000 /* Processor specific values for the Shdr sh_type field. */ #define SHT_IA_64_EXT (SHT_LOPROC + 0) #define SHT_IA_64_UNWIND (SHT_LOPROC + 1) /* Processor specific flags for the Shdr sh_flags field. */ #define SHF_IA_64_SHORT 0x10000000 #define SHF_IA_64_NORECOV 0x20000000 /* Processor specific values for the Dyn d_tag field. */ #define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0) #define DT_IA_64_NUM 1 /* IA-64 relocations. */ #define R_IA64_NONE 0x00 #define R_IA64_IMM14 0x21 #define R_IA64_IMM22 0x22 #define R_IA64_IMM64 0x23 #define R_IA64_DIR32MSB 0x24 #define R_IA64_DIR32LSB 0x25 #define R_IA64_DIR64MSB 0x26 #define R_IA64_DIR64LSB 0x27 #define R_IA64_GPREL22 0x2a #define R_IA64_GPREL64I 0x2b #define R_IA64_GPREL32MSB 0x2c #define R_IA64_GPREL32LSB 0x2d #define R_IA64_GPREL64MSB 0x2e #define R_IA64_GPREL64LSB 0x2f #define R_IA64_LTOFF22 0x32 #define R_IA64_LTOFF64I 0x33 #define R_IA64_PLTOFF22 0x3a #define R_IA64_PLTOFF64I 0x3b #define R_IA64_PLTOFF64MSB 0x3e #define R_IA64_PLTOFF64LSB 0x3f #define R_IA64_FPTR64I 0x43 #define R_IA64_FPTR32MSB 0x44 #define R_IA64_FPTR32LSB 0x45 #define R_IA64_FPTR64MSB 0x46 #define R_IA64_FPTR64LSB 0x47 #define R_IA64_PCREL60B 0x48 #define R_IA64_PCREL21B 0x49 #define R_IA64_PCREL21M 0x4a #define R_IA64_PCREL21F 0x4b #define R_IA64_PCREL32MSB 0x4c #define R_IA64_PCREL32LSB 0x4d #define R_IA64_PCREL64MSB 0x4e #define R_IA64_PCREL64LSB 0x4f #define R_IA64_LTOFF_FPTR22 0x52 #define R_IA64_LTOFF_FPTR64I 0x53 #define R_IA64_LTOFF_FPTR32MSB 0x54 #define R_IA64_LTOFF_FPTR32LSB 0x55 #define R_IA64_LTOFF_FPTR64MSB 0x56 #define R_IA64_LTOFF_FPTR64LSB 0x57 #define R_IA64_SEGREL32MSB 0x5c #define R_IA64_SEGREL32LSB 0x5d #define R_IA64_SEGREL64MSB 0x5e #define R_IA64_SEGREL64LSB 0x5f #define R_IA64_SECREL32MSB 0x64 #define R_IA64_SECREL32LSB 0x65 #define R_IA64_SECREL64MSB 0x66 #define R_IA64_SECREL64LSB 0x67 #define R_IA64_REL32MSB 0x6c #define R_IA64_REL32LSB 0x6d #define R_IA64_REL64MSB 0x6e #define R_IA64_REL64LSB 0x6f #define R_IA64_LTV32MSB 0x74 #define R_IA64_LTV32LSB 0x75 #define R_IA64_LTV64MSB 0x76 #define R_IA64_LTV64LSB 0x77 #define R_IA64_PCREL21BI 0x79 #define R_IA64_PCREL22 0x7a #define R_IA64_PCREL64I 0x7b #define R_IA64_IPLTMSB 0x80 #define R_IA64_IPLTLSB 0x81 #define R_IA64_COPY 0x84 #define R_IA64_SUB 0x85 #define R_IA64_LTOFF22X 0x86 #define R_IA64_LDXMOV 0x87 #define R_IA64_TPREL14 0x91 #define R_IA64_TPREL22 0x92 #define R_IA64_TPREL64I 0x93 #define R_IA64_TPREL64MSB 0x96 #define R_IA64_TPREL64LSB 0x97 #define R_IA64_LTOFF_TPREL22 0x9a #define R_IA64_DTPMOD64MSB 0xa6 #define R_IA64_DTPMOD64LSB 0xa7 #define R_IA64_LTOFF_DTPMOD22 0xaa #define R_IA64_DTPREL14 0xb1 #define R_IA64_DTPREL22 0xb2 #define R_IA64_DTPREL64I 0xb3 #define R_IA64_DTPREL32MSB 0xb4 #define R_IA64_DTPREL32LSB 0xb5 #define R_IA64_DTPREL64MSB 0xb6 #define R_IA64_DTPREL64LSB 0xb7 #define R_IA64_LTOFF_DTPREL22 0xba /* SH specific declarations */ /* Processor specific flags for the ELF header e_flags field. */ #define EF_SH_MACH_MASK 0x1f #define EF_SH_UNKNOWN 0x0 #define EF_SH1 0x1 #define EF_SH2 0x2 #define EF_SH3 0x3 #define EF_SH_DSP 0x4 #define EF_SH3_DSP 0x5 #define EF_SH4AL_DSP 0x6 #define EF_SH3E 0x8 #define EF_SH4 0x9 #define EF_SH2E 0xb #define EF_SH4A 0xc #define EF_SH2A 0xd #define EF_SH4_NOFPU 0x10 #define EF_SH4A_NOFPU 0x11 #define EF_SH4_NOMMU_NOFPU 0x12 #define EF_SH2A_NOFPU 0x13 #define EF_SH3_NOMMU 0x14 #define EF_SH2A_SH4_NOFPU 0x15 #define EF_SH2A_SH3_NOFPU 0x16 #define EF_SH2A_SH4 0x17 #define EF_SH2A_SH3E 0x18 /* SH relocs. */ #define R_SH_NONE 0 #define R_SH_DIR32 1 #define R_SH_REL32 2 #define R_SH_DIR8WPN 3 #define R_SH_IND12W 4 #define R_SH_DIR8WPL 5 #define R_SH_DIR8WPZ 6 #define R_SH_DIR8BP 7 #define R_SH_DIR8W 8 #define R_SH_DIR8L 9 #define R_SH_SWITCH16 25 #define R_SH_SWITCH32 26 #define R_SH_USES 27 #define R_SH_COUNT 28 #define R_SH_ALIGN 29 #define R_SH_CODE 30 #define R_SH_DATA 31 #define R_SH_LABEL 32 #define R_SH_SWITCH8 33 #define R_SH_GNU_VTINHERIT 34 #define R_SH_GNU_VTENTRY 35 #define R_SH_TLS_GD_32 144 #define R_SH_TLS_LD_32 145 #define R_SH_TLS_LDO_32 146 #define R_SH_TLS_IE_32 147 #define R_SH_TLS_LE_32 148 #define R_SH_TLS_DTPMOD32 149 #define R_SH_TLS_DTPOFF32 150 #define R_SH_TLS_TPOFF32 151 #define R_SH_GOT32 160 #define R_SH_PLT32 161 #define R_SH_COPY 162 #define R_SH_GLOB_DAT 163 #define R_SH_JMP_SLOT 164 #define R_SH_RELATIVE 165 #define R_SH_GOTOFF 166 #define R_SH_GOTPC 167 /* Keep this the last entry. */ #define R_SH_NUM 256 /* S/390 specific definitions. */ /* Valid values for the e_flags field. */ #define EF_S390_HIGH_GPRS 0x00000001 /* Additional s390 relocs */ #define R_390_NONE 0 #define R_390_8 1 #define R_390_12 2 #define R_390_16 3 #define R_390_32 4 #define R_390_PC32 5 #define R_390_GOT12 6 #define R_390_GOT32 7 #define R_390_PLT32 8 #define R_390_COPY 9 #define R_390_GLOB_DAT 10 #define R_390_JMP_SLOT 11 #define R_390_RELATIVE 12 #define R_390_GOTOFF32 13 #define R_390_GOTPC 14 #define R_390_GOT16 15 #define R_390_PC16 16 #define R_390_PC16DBL 17 #define R_390_PLT16DBL 18 #define R_390_PC32DBL 19 #define R_390_PLT32DBL 20 #define R_390_GOTPCDBL 21 #define R_390_64 22 #define R_390_PC64 23 #define R_390_GOT64 24 #define R_390_PLT64 25 #define R_390_GOTENT 26 #define R_390_GOTOFF16 27 #define R_390_GOTOFF64 28 #define R_390_GOTPLT12 29 #define R_390_GOTPLT16 30 #define R_390_GOTPLT32 31 #define R_390_GOTPLT64 32 #define R_390_GOTPLTENT 33 #define R_390_PLTOFF16 34 #define R_390_PLTOFF32 35 #define R_390_PLTOFF64 36 #define R_390_TLS_LOAD 37 #define R_390_TLS_GDCALL 38 #define R_390_TLS_LDCALL 39 #define R_390_TLS_GD32 40 #define R_390_TLS_GD64 41 #define R_390_TLS_GOTIE12 42 #define R_390_TLS_GOTIE32 43 #define R_390_TLS_GOTIE64 44 #define R_390_TLS_LDM32 45 #define R_390_TLS_LDM64 46 #define R_390_TLS_IE32 47 #define R_390_TLS_IE64 48 #define R_390_TLS_IEENT 49 #define R_390_TLS_LE32 50 #define R_390_TLS_LE64 51 #define R_390_TLS_LDO32 52 #define R_390_TLS_LDO64 53 #define R_390_TLS_DTPMOD 54 #define R_390_TLS_DTPOFF 55 #define R_390_TLS_TPOFF 56 #define R_390_20 57 #define R_390_GOT20 58 #define R_390_GOTPLT20 59 #define R_390_TLS_GOTIE20 60 #define R_390_IRELATIVE 61 /* Keep this the last entry. */ #define R_390_NUM 62 /* CRIS relocations. */ #define R_CRIS_NONE 0 #define R_CRIS_8 1 #define R_CRIS_16 2 #define R_CRIS_32 3 #define R_CRIS_8_PCREL 4 #define R_CRIS_16_PCREL 5 #define R_CRIS_32_PCREL 6 #define R_CRIS_GNU_VTINHERIT 7 #define R_CRIS_GNU_VTENTRY 8 #define R_CRIS_COPY 9 #define R_CRIS_GLOB_DAT 10 #define R_CRIS_JUMP_SLOT 11 #define R_CRIS_RELATIVE 12 #define R_CRIS_16_GOT 13 #define R_CRIS_32_GOT 14 #define R_CRIS_16_GOTPLT 15 #define R_CRIS_32_GOTPLT 16 #define R_CRIS_32_GOTREL 17 #define R_CRIS_32_PLT_GOTREL 18 #define R_CRIS_32_PLT_PCREL 19 #define R_CRIS_NUM 20 /* AMD x86-64 relocations. */ #define R_X86_64_NONE 0 #define R_X86_64_64 1 #define R_X86_64_PC32 2 #define R_X86_64_GOT32 3 #define R_X86_64_PLT32 4 #define R_X86_64_COPY 5 #define R_X86_64_GLOB_DAT 6 #define R_X86_64_JUMP_SLOT 7 #define R_X86_64_RELATIVE 8 #define R_X86_64_GOTPCREL 9 #define R_X86_64_32 10 #define R_X86_64_32S 11 #define R_X86_64_16 12 #define R_X86_64_PC16 13 #define R_X86_64_8 14 #define R_X86_64_PC8 15 #define R_X86_64_DTPMOD64 16 #define R_X86_64_DTPOFF64 17 #define R_X86_64_TPOFF64 18 #define R_X86_64_TLSGD 19 #define R_X86_64_TLSLD 20 #define R_X86_64_DTPOFF32 21 #define R_X86_64_GOTTPOFF 22 #define R_X86_64_TPOFF32 23 #define R_X86_64_PC64 24 #define R_X86_64_GOTOFF64 25 #define R_X86_64_GOTPC32 26 #define R_X86_64_GOT64 27 #define R_X86_64_GOTPCREL64 28 #define R_X86_64_GOTPC64 29 #define R_X86_64_GOTPLT64 30 #define R_X86_64_PLTOFF64 31 #define R_X86_64_SIZE32 32 #define R_X86_64_SIZE64 33 #define R_X86_64_GOTPC32_TLSDESC 34 #define R_X86_64_TLSDESC_CALL 35 #define R_X86_64_TLSDESC 36 #define R_X86_64_IRELATIVE 37 #define R_X86_64_RELATIVE64 38 /* 39 Reserved was R_X86_64_PC32_BND */ /* 40 Reserved was R_X86_64_PLT32_BND */ #define R_X86_64_GOTPCRELX 41 #define R_X86_64_REX_GOTPCRELX 42 #define R_X86_64_NUM 43 /* x86-64 sh_type values. */ #define SHT_X86_64_UNWIND 0x70000001 /* AM33 relocations. */ #define R_MN10300_NONE 0 #define R_MN10300_32 1 #define R_MN10300_16 2 #define R_MN10300_8 3 #define R_MN10300_PCREL32 4 #define R_MN10300_PCREL16 5 #define R_MN10300_PCREL8 6 #define R_MN10300_GNU_VTINHERIT 7 #define R_MN10300_GNU_VTENTRY 8 #define R_MN10300_24 9 #define R_MN10300_GOTPC32 10 #define R_MN10300_GOTPC16 11 #define R_MN10300_GOTOFF32 12 #define R_MN10300_GOTOFF24 13 #define R_MN10300_GOTOFF16 14 #define R_MN10300_PLT32 15 #define R_MN10300_PLT16 16 #define R_MN10300_GOT32 17 #define R_MN10300_GOT24 18 #define R_MN10300_GOT16 19 #define R_MN10300_COPY 20 #define R_MN10300_GLOB_DAT 21 #define R_MN10300_JMP_SLOT 22 #define R_MN10300_RELATIVE 23 #define R_MN10300_TLS_GD 24 #define R_MN10300_TLS_LD 25 #define R_MN10300_TLS_LDO 26 #define R_MN10300_TLS_GOTIE 27 #define R_MN10300_TLS_IE 28 #define R_MN10300_TLS_LE 29 #define R_MN10300_TLS_DTPMOD 30 #define R_MN10300_TLS_DTPOFF 31 #define R_MN10300_TLS_TPOFF 32 #define R_MN10300_SYM_DIFF 33 #define R_MN10300_ALIGN 34 #define R_MN10300_NUM 35 /* M32R relocs. */ #define R_M32R_NONE 0 #define R_M32R_16 1 #define R_M32R_32 2 #define R_M32R_24 3 #define R_M32R_10_PCREL 4 #define R_M32R_18_PCREL 5 #define R_M32R_26_PCREL 6 #define R_M32R_HI16_ULO 7 #define R_M32R_HI16_SLO 8 #define R_M32R_LO16 9 #define R_M32R_SDA16 10 #define R_M32R_GNU_VTINHERIT 11 #define R_M32R_GNU_VTENTRY 12 /* M32R relocs use SHT_RELA. */ #define R_M32R_16_RELA 33 #define R_M32R_32_RELA 34 #define R_M32R_24_RELA 35 #define R_M32R_10_PCREL_RELA 36 #define R_M32R_18_PCREL_RELA 37 #define R_M32R_26_PCREL_RELA 38 #define R_M32R_HI16_ULO_RELA 39 #define R_M32R_HI16_SLO_RELA 40 #define R_M32R_LO16_RELA 41 #define R_M32R_SDA16_RELA 42 #define R_M32R_RELA_GNU_VTINHERIT 43 #define R_M32R_RELA_GNU_VTENTRY 44 #define R_M32R_REL32 45 #define R_M32R_GOT24 48 #define R_M32R_26_PLTREL 49 #define R_M32R_COPY 50 #define R_M32R_GLOB_DAT 51 #define R_M32R_JMP_SLOT 52 #define R_M32R_RELATIVE 53 #define R_M32R_GOTOFF 54 #define R_M32R_GOTPC24 55 #define R_M32R_GOT16_HI_ULO 56 #define R_M32R_GOT16_HI_SLO 57 #define R_M32R_GOT16_LO 58 #define R_M32R_GOTPC_HI_ULO 59 #define R_M32R_GOTPC_HI_SLO 60 #define R_M32R_GOTPC_LO 61 #define R_M32R_GOTOFF_HI_ULO 62 #define R_M32R_GOTOFF_HI_SLO 63 #define R_M32R_GOTOFF_LO 64 #define R_M32R_NUM 256 /* MicroBlaze relocations */ #define R_MICROBLAZE_NONE 0 #define R_MICROBLAZE_32 1 #define R_MICROBLAZE_32_PCREL 2 #define R_MICROBLAZE_64_PCREL 3 #define R_MICROBLAZE_32_PCREL_LO 4 #define R_MICROBLAZE_64 5 #define R_MICROBLAZE_32_LO 6 #define R_MICROBLAZE_SRO32 7 #define R_MICROBLAZE_SRW32 8 #define R_MICROBLAZE_64_NONE 9 #define R_MICROBLAZE_32_SYM_OP_SYM 10 #define R_MICROBLAZE_GNU_VTINHERIT 11 #define R_MICROBLAZE_GNU_VTENTRY 12 #define R_MICROBLAZE_GOTPC_64 13 #define R_MICROBLAZE_GOT_64 14 #define R_MICROBLAZE_PLT_64 15 #define R_MICROBLAZE_REL 16 #define R_MICROBLAZE_JUMP_SLOT 17 #define R_MICROBLAZE_GLOB_DAT 18 #define R_MICROBLAZE_GOTOFF_64 19 #define R_MICROBLAZE_GOTOFF_32 20 #define R_MICROBLAZE_COPY 21 #define R_MICROBLAZE_TLS 22 #define R_MICROBLAZE_TLSGD 23 #define R_MICROBLAZE_TLSLD 24 #define R_MICROBLAZE_TLSDTPMOD32 25 #define R_MICROBLAZE_TLSDTPREL32 26 #define R_MICROBLAZE_TLSDTPREL64 27 #define R_MICROBLAZE_TLSGOTTPREL32 28 #define R_MICROBLAZE_TLSTPREL32 29 /* Legal values for d_tag (dynamic entry type). */ #define DT_NIOS2_GP 0x70000002 /* Nios II relocations. */ #define R_NIOS2_NONE 0 #define R_NIOS2_S16 1 #define R_NIOS2_U16 2 #define R_NIOS2_PCREL16 3 #define R_NIOS2_CALL26 4 #define R_NIOS2_IMM5 5 #define R_NIOS2_CACHE_OPX 6 #define R_NIOS2_IMM6 7 #define R_NIOS2_IMM8 8 #define R_NIOS2_HI16 9 #define R_NIOS2_LO16 10 #define R_NIOS2_HIADJ16 11 #define R_NIOS2_BFD_RELOC_32 12 #define R_NIOS2_BFD_RELOC_16 13 #define R_NIOS2_BFD_RELOC_8 14 #define R_NIOS2_GPREL 15 #define R_NIOS2_GNU_VTINHERIT 16 #define R_NIOS2_GNU_VTENTRY 17 #define R_NIOS2_UJMP 18 #define R_NIOS2_CJMP 19 #define R_NIOS2_CALLR 20 #define R_NIOS2_ALIGN 21 #define R_NIOS2_GOT16 22 #define R_NIOS2_CALL16 23 #define R_NIOS2_GOTOFF_LO 24 #define R_NIOS2_GOTOFF_HA 25 #define R_NIOS2_PCREL_LO 26 #define R_NIOS2_PCREL_HA 27 #define R_NIOS2_TLS_GD16 28 #define R_NIOS2_TLS_LDM16 29 #define R_NIOS2_TLS_LDO16 30 #define R_NIOS2_TLS_IE16 31 #define R_NIOS2_TLS_LE16 32 #define R_NIOS2_TLS_DTPMOD 33 #define R_NIOS2_TLS_DTPREL 34 #define R_NIOS2_TLS_TPREL 35 #define R_NIOS2_COPY 36 #define R_NIOS2_GLOB_DAT 37 #define R_NIOS2_JUMP_SLOT 38 #define R_NIOS2_RELATIVE 39 #define R_NIOS2_GOTOFF 40 #define R_NIOS2_CALL26_NOAT 41 #define R_NIOS2_GOT_LO 42 #define R_NIOS2_GOT_HA 43 #define R_NIOS2_CALL_LO 44 #define R_NIOS2_CALL_HA 45 /* TILEPro relocations. */ #define R_TILEPRO_NONE 0 #define R_TILEPRO_32 1 #define R_TILEPRO_16 2 #define R_TILEPRO_8 3 #define R_TILEPRO_32_PCREL 4 #define R_TILEPRO_16_PCREL 5 #define R_TILEPRO_8_PCREL 6 #define R_TILEPRO_LO16 7 #define R_TILEPRO_HI16 8 #define R_TILEPRO_HA16 9 #define R_TILEPRO_COPY 10 #define R_TILEPRO_GLOB_DAT 11 #define R_TILEPRO_JMP_SLOT 12 #define R_TILEPRO_RELATIVE 13 #define R_TILEPRO_BROFF_X1 14 #define R_TILEPRO_JOFFLONG_X1 15 #define R_TILEPRO_JOFFLONG_X1_PLT 16 #define R_TILEPRO_IMM8_X0 17 #define R_TILEPRO_IMM8_Y0 18 #define R_TILEPRO_IMM8_X1 19 #define R_TILEPRO_IMM8_Y1 20 #define R_TILEPRO_MT_IMM15_X1 21 #define R_TILEPRO_MF_IMM15_X1 22 #define R_TILEPRO_IMM16_X0 23 #define R_TILEPRO_IMM16_X1 24 #define R_TILEPRO_IMM16_X0_LO 25 #define R_TILEPRO_IMM16_X1_LO 26 #define R_TILEPRO_IMM16_X0_HI 27 #define R_TILEPRO_IMM16_X1_HI 28 #define R_TILEPRO_IMM16_X0_HA 29 #define R_TILEPRO_IMM16_X1_HA 30 #define R_TILEPRO_IMM16_X0_PCREL 31 #define R_TILEPRO_IMM16_X1_PCREL 32 #define R_TILEPRO_IMM16_X0_LO_PCREL 33 #define R_TILEPRO_IMM16_X1_LO_PCREL 34 #define R_TILEPRO_IMM16_X0_HI_PCREL 35 #define R_TILEPRO_IMM16_X1_HI_PCREL 36 #define R_TILEPRO_IMM16_X0_HA_PCREL 37 #define R_TILEPRO_IMM16_X1_HA_PCREL 38 #define R_TILEPRO_IMM16_X0_GOT 39 #define R_TILEPRO_IMM16_X1_GOT 40 #define R_TILEPRO_IMM16_X0_GOT_LO 41 #define R_TILEPRO_IMM16_X1_GOT_LO 42 #define R_TILEPRO_IMM16_X0_GOT_HI 43 #define R_TILEPRO_IMM16_X1_GOT_HI 44 #define R_TILEPRO_IMM16_X0_GOT_HA 45 #define R_TILEPRO_IMM16_X1_GOT_HA 46 #define R_TILEPRO_MMSTART_X0 47 #define R_TILEPRO_MMEND_X0 48 #define R_TILEPRO_MMSTART_X1 49 #define R_TILEPRO_MMEND_X1 50 #define R_TILEPRO_SHAMT_X0 51 #define R_TILEPRO_SHAMT_X1 52 #define R_TILEPRO_SHAMT_Y0 53 #define R_TILEPRO_SHAMT_Y1 54 #define R_TILEPRO_DEST_IMM8_X1 55 /* Relocs 56-59 are currently not defined. */ #define R_TILEPRO_TLS_GD_CALL 60 #define R_TILEPRO_IMM8_X0_TLS_GD_ADD 61 #define R_TILEPRO_IMM8_X1_TLS_GD_ADD 62 #define R_TILEPRO_IMM8_Y0_TLS_GD_ADD 63 #define R_TILEPRO_IMM8_Y1_TLS_GD_ADD 64 #define R_TILEPRO_TLS_IE_LOAD 65 #define R_TILEPRO_IMM16_X0_TLS_GD 66 #define R_TILEPRO_IMM16_X1_TLS_GD 67 #define R_TILEPRO_IMM16_X0_TLS_GD_LO 68 #define R_TILEPRO_IMM16_X1_TLS_GD_LO 69 #define R_TILEPRO_IMM16_X0_TLS_GD_HI 70 #define R_TILEPRO_IMM16_X1_TLS_GD_HI 71 #define R_TILEPRO_IMM16_X0_TLS_GD_HA 72 #define R_TILEPRO_IMM16_X1_TLS_GD_HA 73 #define R_TILEPRO_IMM16_X0_TLS_IE 74 #define R_TILEPRO_IMM16_X1_TLS_IE 75 #define R_TILEPRO_IMM16_X0_TLS_IE_LO 76 #define R_TILEPRO_IMM16_X1_TLS_IE_LO 77 #define R_TILEPRO_IMM16_X0_TLS_IE_HI 78 #define R_TILEPRO_IMM16_X1_TLS_IE_HI 79 #define R_TILEPRO_IMM16_X0_TLS_IE_HA 80 #define R_TILEPRO_IMM16_X1_TLS_IE_HA 81 #define R_TILEPRO_TLS_DTPMOD32 82 #define R_TILEPRO_TLS_DTPOFF32 83 #define R_TILEPRO_TLS_TPOFF32 84 #define R_TILEPRO_IMM16_X0_TLS_LE 85 #define R_TILEPRO_IMM16_X1_TLS_LE 86 #define R_TILEPRO_IMM16_X0_TLS_LE_LO 87 #define R_TILEPRO_IMM16_X1_TLS_LE_LO 88 #define R_TILEPRO_IMM16_X0_TLS_LE_HI 89 #define R_TILEPRO_IMM16_X1_TLS_LE_HI 90 #define R_TILEPRO_IMM16_X0_TLS_LE_HA 91 #define R_TILEPRO_IMM16_X1_TLS_LE_HA 92 #define R_TILEPRO_GNU_VTINHERIT 128 #define R_TILEPRO_GNU_VTENTRY 129 #define R_TILEPRO_NUM 130 /* TILE-Gx relocations. */ #define R_TILEGX_NONE 0 #define R_TILEGX_64 1 #define R_TILEGX_32 2 #define R_TILEGX_16 3 #define R_TILEGX_8 4 #define R_TILEGX_64_PCREL 5 #define R_TILEGX_32_PCREL 6 #define R_TILEGX_16_PCREL 7 #define R_TILEGX_8_PCREL 8 #define R_TILEGX_HW0 9 #define R_TILEGX_HW1 10 #define R_TILEGX_HW2 11 #define R_TILEGX_HW3 12 #define R_TILEGX_HW0_LAST 13 #define R_TILEGX_HW1_LAST 14 #define R_TILEGX_HW2_LAST 15 #define R_TILEGX_COPY 16 #define R_TILEGX_GLOB_DAT 17 #define R_TILEGX_JMP_SLOT 18 #define R_TILEGX_RELATIVE 19 #define R_TILEGX_BROFF_X1 20 #define R_TILEGX_JUMPOFF_X1 21 #define R_TILEGX_JUMPOFF_X1_PLT 22 #define R_TILEGX_IMM8_X0 23 #define R_TILEGX_IMM8_Y0 24 #define R_TILEGX_IMM8_X1 25 #define R_TILEGX_IMM8_Y1 26 #define R_TILEGX_DEST_IMM8_X1 27 #define R_TILEGX_MT_IMM14_X1 28 #define R_TILEGX_MF_IMM14_X1 29 #define R_TILEGX_MMSTART_X0 30 #define R_TILEGX_MMEND_X0 31 #define R_TILEGX_SHAMT_X0 32 #define R_TILEGX_SHAMT_X1 33 #define R_TILEGX_SHAMT_Y0 34 #define R_TILEGX_SHAMT_Y1 35 #define R_TILEGX_IMM16_X0_HW0 36 #define R_TILEGX_IMM16_X1_HW0 37 #define R_TILEGX_IMM16_X0_HW1 38 #define R_TILEGX_IMM16_X1_HW1 39 #define R_TILEGX_IMM16_X0_HW2 40 #define R_TILEGX_IMM16_X1_HW2 41 #define R_TILEGX_IMM16_X0_HW3 42 #define R_TILEGX_IMM16_X1_HW3 43 #define R_TILEGX_IMM16_X0_HW0_LAST 44 #define R_TILEGX_IMM16_X1_HW0_LAST 45 #define R_TILEGX_IMM16_X0_HW1_LAST 46 #define R_TILEGX_IMM16_X1_HW1_LAST 47 #define R_TILEGX_IMM16_X0_HW2_LAST 48 #define R_TILEGX_IMM16_X1_HW2_LAST 49 #define R_TILEGX_IMM16_X0_HW0_PCREL 50 #define R_TILEGX_IMM16_X1_HW0_PCREL 51 #define R_TILEGX_IMM16_X0_HW1_PCREL 52 #define R_TILEGX_IMM16_X1_HW1_PCREL 53 #define R_TILEGX_IMM16_X0_HW2_PCREL 54 #define R_TILEGX_IMM16_X1_HW2_PCREL 55 #define R_TILEGX_IMM16_X0_HW3_PCREL 56 #define R_TILEGX_IMM16_X1_HW3_PCREL 57 #define R_TILEGX_IMM16_X0_HW0_LAST_PCREL 58 #define R_TILEGX_IMM16_X1_HW0_LAST_PCREL 59 #define R_TILEGX_IMM16_X0_HW1_LAST_PCREL 60 #define R_TILEGX_IMM16_X1_HW1_LAST_PCREL 61 #define R_TILEGX_IMM16_X0_HW2_LAST_PCREL 62 #define R_TILEGX_IMM16_X1_HW2_LAST_PCREL 63 #define R_TILEGX_IMM16_X0_HW0_GOT 64 #define R_TILEGX_IMM16_X1_HW0_GOT 65 #define R_TILEGX_IMM16_X0_HW0_PLT_PCREL 66 #define R_TILEGX_IMM16_X1_HW0_PLT_PCREL 67 #define R_TILEGX_IMM16_X0_HW1_PLT_PCREL 68 #define R_TILEGX_IMM16_X1_HW1_PLT_PCREL 69 #define R_TILEGX_IMM16_X0_HW2_PLT_PCREL 70 #define R_TILEGX_IMM16_X1_HW2_PLT_PCREL 71 #define R_TILEGX_IMM16_X0_HW0_LAST_GOT 72 #define R_TILEGX_IMM16_X1_HW0_LAST_GOT 73 #define R_TILEGX_IMM16_X0_HW1_LAST_GOT 74 #define R_TILEGX_IMM16_X1_HW1_LAST_GOT 75 #define R_TILEGX_IMM16_X0_HW3_PLT_PCREL 76 #define R_TILEGX_IMM16_X1_HW3_PLT_PCREL 77 #define R_TILEGX_IMM16_X0_HW0_TLS_GD 78 #define R_TILEGX_IMM16_X1_HW0_TLS_GD 79 #define R_TILEGX_IMM16_X0_HW0_TLS_LE 80 #define R_TILEGX_IMM16_X1_HW0_TLS_LE 81 #define R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE 82 #define R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE 83 #define R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE 84 #define R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE 85 #define R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD 86 #define R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD 87 #define R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD 88 #define R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD 89 /* Relocs 90-91 are currently not defined. */ #define R_TILEGX_IMM16_X0_HW0_TLS_IE 92 #define R_TILEGX_IMM16_X1_HW0_TLS_IE 93 #define R_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL 94 #define R_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL 95 #define R_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL 96 #define R_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL 97 #define R_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL 98 #define R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL 99 #define R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE 100 #define R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE 101 #define R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE 102 #define R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE 103 /* Relocs 104-105 are currently not defined. */ #define R_TILEGX_TLS_DTPMOD64 106 #define R_TILEGX_TLS_DTPOFF64 107 #define R_TILEGX_TLS_TPOFF64 108 #define R_TILEGX_TLS_DTPMOD32 109 #define R_TILEGX_TLS_DTPOFF32 110 #define R_TILEGX_TLS_TPOFF32 111 #define R_TILEGX_TLS_GD_CALL 112 #define R_TILEGX_IMM8_X0_TLS_GD_ADD 113 #define R_TILEGX_IMM8_X1_TLS_GD_ADD 114 #define R_TILEGX_IMM8_Y0_TLS_GD_ADD 115 #define R_TILEGX_IMM8_Y1_TLS_GD_ADD 116 #define R_TILEGX_TLS_IE_LOAD 117 #define R_TILEGX_IMM8_X0_TLS_ADD 118 #define R_TILEGX_IMM8_X1_TLS_ADD 119 #define R_TILEGX_IMM8_Y0_TLS_ADD 120 #define R_TILEGX_IMM8_Y1_TLS_ADD 121 #define R_TILEGX_GNU_VTINHERIT 128 #define R_TILEGX_GNU_VTENTRY 129 #define R_TILEGX_NUM 130 /* RISC-V ELF Flags */ #define EF_RISCV_RVC 0x0001 #define EF_RISCV_FLOAT_ABI 0x0006 #define EF_RISCV_FLOAT_ABI_SOFT 0x0000 #define EF_RISCV_FLOAT_ABI_SINGLE 0x0002 #define EF_RISCV_FLOAT_ABI_DOUBLE 0x0004 #define EF_RISCV_FLOAT_ABI_QUAD 0x0006 /* RISC-V relocations. */ #define R_RISCV_NONE 0 #define R_RISCV_32 1 #define R_RISCV_64 2 #define R_RISCV_RELATIVE 3 #define R_RISCV_COPY 4 #define R_RISCV_JUMP_SLOT 5 #define R_RISCV_TLS_DTPMOD32 6 #define R_RISCV_TLS_DTPMOD64 7 #define R_RISCV_TLS_DTPREL32 8 #define R_RISCV_TLS_DTPREL64 9 #define R_RISCV_TLS_TPREL32 10 #define R_RISCV_TLS_TPREL64 11 #define R_RISCV_BRANCH 16 #define R_RISCV_JAL 17 #define R_RISCV_CALL 18 #define R_RISCV_CALL_PLT 19 #define R_RISCV_GOT_HI20 20 #define R_RISCV_TLS_GOT_HI20 21 #define R_RISCV_TLS_GD_HI20 22 #define R_RISCV_PCREL_HI20 23 #define R_RISCV_PCREL_LO12_I 24 #define R_RISCV_PCREL_LO12_S 25 #define R_RISCV_HI20 26 #define R_RISCV_LO12_I 27 #define R_RISCV_LO12_S 28 #define R_RISCV_TPREL_HI20 29 #define R_RISCV_TPREL_LO12_I 30 #define R_RISCV_TPREL_LO12_S 31 #define R_RISCV_TPREL_ADD 32 #define R_RISCV_ADD8 33 #define R_RISCV_ADD16 34 #define R_RISCV_ADD32 35 #define R_RISCV_ADD64 36 #define R_RISCV_SUB8 37 #define R_RISCV_SUB16 38 #define R_RISCV_SUB32 39 #define R_RISCV_SUB64 40 #define R_RISCV_GNU_VTINHERIT 41 #define R_RISCV_GNU_VTENTRY 42 #define R_RISCV_ALIGN 43 #define R_RISCV_RVC_BRANCH 44 #define R_RISCV_RVC_JUMP 45 #define R_RISCV_RVC_LUI 46 #define R_RISCV_GPREL_I 47 #define R_RISCV_GPREL_S 48 #define R_RISCV_TPREL_I 49 #define R_RISCV_TPREL_S 50 #define R_RISCV_RELAX 51 #define R_RISCV_SUB6 52 #define R_RISCV_SET6 53 #define R_RISCV_SET8 54 #define R_RISCV_SET16 55 #define R_RISCV_SET32 56 #define R_RISCV_32_PCREL 57 #define R_RISCV_IRELATIVE 58 #define R_RISCV_NUM 59 /* BPF specific declarations. */ #define R_BPF_NONE 0 #define R_BPF_64_64 1 #define R_BPF_64_32 10 /* Imagination Meta specific relocations. */ #define R_METAG_HIADDR16 0 #define R_METAG_LOADDR16 1 #define R_METAG_ADDR32 2 #define R_METAG_NONE 3 #define R_METAG_RELBRANCH 4 #define R_METAG_GETSETOFF 5 /* Backward compatibility */ #define R_METAG_REG32OP1 6 #define R_METAG_REG32OP2 7 #define R_METAG_REG32OP3 8 #define R_METAG_REG16OP1 9 #define R_METAG_REG16OP2 10 #define R_METAG_REG16OP3 11 #define R_METAG_REG32OP4 12 #define R_METAG_HIOG 13 #define R_METAG_LOOG 14 #define R_METAG_REL8 15 #define R_METAG_REL16 16 /* GNU */ #define R_METAG_GNU_VTINHERIT 30 #define R_METAG_GNU_VTENTRY 31 /* PIC relocations */ #define R_METAG_HI16_GOTOFF 32 #define R_METAG_LO16_GOTOFF 33 #define R_METAG_GETSET_GOTOFF 34 #define R_METAG_GETSET_GOT 35 #define R_METAG_HI16_GOTPC 36 #define R_METAG_LO16_GOTPC 37 #define R_METAG_HI16_PLT 38 #define R_METAG_LO16_PLT 39 #define R_METAG_RELBRANCH_PLT 40 #define R_METAG_GOTOFF 41 #define R_METAG_PLT 42 #define R_METAG_COPY 43 #define R_METAG_JMP_SLOT 44 #define R_METAG_RELATIVE 45 #define R_METAG_GLOB_DAT 46 /* TLS relocations */ #define R_METAG_TLS_GD 47 #define R_METAG_TLS_LDM 48 #define R_METAG_TLS_LDO_HI16 49 #define R_METAG_TLS_LDO_LO16 50 #define R_METAG_TLS_LDO 51 #define R_METAG_TLS_IE 52 #define R_METAG_TLS_IENONPIC 53 #define R_METAG_TLS_IENONPIC_HI16 54 #define R_METAG_TLS_IENONPIC_LO16 55 #define R_METAG_TLS_TPOFF 56 #define R_METAG_TLS_DTPMOD 57 #define R_METAG_TLS_DTPOFF 58 #define R_METAG_TLS_LE 59 #define R_METAG_TLS_LE_HI16 60 #define R_METAG_TLS_LE_LO16 61 /* NDS32 relocations. */ #define R_NDS32_NONE 0 #define R_NDS32_32_RELA 20 #define R_NDS32_COPY 39 #define R_NDS32_GLOB_DAT 40 #define R_NDS32_JMP_SLOT 41 #define R_NDS32_RELATIVE 42 #define R_NDS32_TLS_TPOFF 102 #define R_NDS32_TLS_DESC 119 /* ARCompact/ARCv2 specific relocs. */ #define R_ARC_NONE 0x0 #define R_ARC_8 0x1 #define R_ARC_16 0x2 #define R_ARC_24 0x3 #define R_ARC_32 0x4 #define R_ARC_B26 0x5 #define R_ARC_B22_PCREL 0x6 #define R_ARC_H30 0x7 #define R_ARC_N8 0x8 #define R_ARC_N16 0x9 #define R_ARC_N24 0xA #define R_ARC_N32 0xB #define R_ARC_SDA 0xC #define R_ARC_SECTOFF 0xD #define R_ARC_S21H_PCREL 0xE #define R_ARC_S21W_PCREL 0xF #define R_ARC_S25H_PCREL 0x10 #define R_ARC_S25W_PCREL 0x11 #define R_ARC_SDA32 0x12 #define R_ARC_SDA_LDST 0x13 #define R_ARC_SDA_LDST1 0x14 #define R_ARC_SDA_LDST2 0x15 #define R_ARC_SDA16_LD 0x16 #define R_ARC_SDA16_LD1 0x17 #define R_ARC_SDA16_LD2 0x18 #define R_ARC_S13_PCREL 0x19 #define R_ARC_W 0x1A #define R_ARC_32_ME 0x1B #define R_ARC_N32_ME 0x1C #define R_ARC_SECTOFF_ME 0x1D #define R_ARC_SDA32_ME 0x1E #define R_ARC_W_ME 0x1F #define R_ARC_H30_ME 0x20 #define R_ARC_SECTOFF_U8 0x21 #define R_ARC_SECTOFF_S9 0x22 #define R_AC_SECTOFF_U8 0x23 #define R_AC_SECTOFF_U8_1 0x24 #define R_AC_SECTOFF_U8_2 0x25 #define R_AC_SECTOFF_S9 0x26 #define R_AC_SECTOFF_S9_1 0x27 #define R_AC_SECTOFF_S9_2 0x28 #define R_ARC_SECTOFF_ME_1 0x29 #define R_ARC_SECTOFF_ME_2 0x2A #define R_ARC_SECTOFF_1 0x2B #define R_ARC_SECTOFF_2 0x2C #define R_ARC_PC32 0x32 #define R_ARC_GOTPC32 0x33 #define R_ARC_PLT32 0x34 #define R_ARC_COPY 0x35 #define R_ARC_GLOB_DAT 0x36 #define R_ARC_JUMP_SLOT 0x37 #define R_ARC_RELATIVE 0x38 #define R_ARC_GOTOFF 0x39 #define R_ARC_GOTPC 0x3A #define R_ARC_GOT32 0x3B #define R_ARC_TLS_DTPMOD 0x42 #define R_ARC_TLS_DTPOFF 0x43 #define R_ARC_TLS_TPOFF 0x44 #define R_ARC_TLS_GD_GOT 0x45 #define R_ARC_TLS_GD_LD 0x46 #define R_ARC_TLS_GD_CALL 0x47 #define R_ARC_TLS_IE_GOT 0x48 #define R_ARC_TLS_DTPOFF_S9 0x4a #define R_ARC_TLS_LE_S9 0x4a #define R_ARC_TLS_LE_32 0x4b # 3 "../include/elf.h" 2 # 1 "../include/libc-pointer-arith.h" 1 /* Helper macros for pointer arithmetic. Copyright (C) 2012-2021 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 . */ #define _LIBC_POINTER_ARITH_H 1 # 1 "../include/stdint.h" 1 # 23 "../include/libc-pointer-arith.h" 2 /* 1 if 'type' is a pointer type, 0 otherwise. */ #define __pointer_type(type) (__builtin_classify_type ((type) 0) == 5) /* intptr_t if P is true, or T if P is false. */ #define __integer_if_pointer_type_sub(T,P) __typeof__ (*(0 ? (__typeof__ (0 ? (T *) 0 : (void *) (P))) 0 : (__typeof__ (0 ? (intptr_t *) 0 : (void *) (!(P)))) 0)) /* intptr_t if EXPR has a pointer type, or the type of EXPR otherwise. */ #define __integer_if_pointer_type(expr) __integer_if_pointer_type_sub(__typeof__ ((__typeof__ (expr)) 0), __pointer_type (__typeof__ (expr))) /* Cast an integer or a pointer VAL to integer with proper type. */ #define cast_to_integer(val) ((__integer_if_pointer_type (val)) (val)) /* Cast an integer VAL to void * pointer. */ #define cast_to_pointer(val) ((void *) (uintptr_t) (val)) /* Align a value by rounding down to closest size. e.g. Using size of 4096, we get this behavior: {4095, 4096, 4097} = {0, 4096, 4096}. */ #define ALIGN_DOWN(base,size) ((base) & -((__typeof__ (base)) (size))) /* Align a value by rounding up to closest size. e.g. Using size of 4096, we get this behavior: {4095, 4096, 4097} = {4096, 4096, 8192}. Note: The size argument has side effects (expanded multiple times). */ #define ALIGN_UP(base,size) ALIGN_DOWN ((base) + (size) - 1, (size)) /* Same as ALIGN_DOWN(), but automatically casts when base is a pointer. */ #define PTR_ALIGN_DOWN(base,size) ((__typeof__ (base)) ALIGN_DOWN ((uintptr_t) (base), (size))) /* Same as ALIGN_UP(), but automatically casts when base is a pointer. */ #define PTR_ALIGN_UP(base,size) ((__typeof__ (base)) ALIGN_UP ((uintptr_t) (base), (size))) # 7 "../include/elf.h" 2 /* Compute the offset of the note descriptor from size of note entry's owner string and note alignment. */ #define ELF_NOTE_DESC_OFFSET(namesz,align) ALIGN_UP (sizeof (ElfW(Nhdr)) + (namesz), (align)) /* Compute the offset of the next note entry from size of note entry's owner string, size of the note descriptor and note alignment. */ #define ELF_NOTE_NEXT_OFFSET(namesz,descsz,align) ALIGN_UP (ELF_NOTE_DESC_OFFSET ((namesz), (align)) + (descsz), (align)) /* Some information which is not meant for the public and therefore not in . */ # 1 "../sysdeps/generic/dl-dtprocnum.h" 1 /* Configuration of lookup functions. Copyright (C) 2000-2021 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 . */ /* Number of extra dynamic section entries for this architecture. By default there are none. */ #define DT_THISPROCNUM 0 # 21 "../include/elf.h" 2 #define DT_1_SUPPORTED_MASK (DF_1_NOW | DF_1_NODELETE | DF_1_INITFIRST | DF_1_NOOPEN | DF_1_ORIGIN | DF_1_NODEFLIB | DF_1_PIE) # 25 "../sysdeps/s390/stackinfo.h" 2 /* On s390 the stack grows down. */ #define _STACK_GROWS_DOWN 1 /* Default to an executable stack. PF_X can be overridden if PT_GNU_STACK is * present, but it is presumed absent. */ #define DEFAULT_STACK_PERMS (PF_R|PF_W|PF_X) # 25 "../include/stackinfo.h" 2 #define _STACK_GROWS_UP 0 # 41 "../include/stackinfo.h" # 8 "../include/alloca.h" 2 #undef __alloca /* Now define the internal interfaces. */ extern void *__alloca (size_t __size); #define __alloca(size) __builtin_alloca (size) extern int __libc_use_alloca (size_t size) __attribute__ ((const)); extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const)); libc_hidden_proto (__libc_alloca_cutoff) #define __MAX_ALLOCA_CUTOFF 65536 # 1 "../sysdeps/pthread/allocalim.h" 1 /* Determine whether block of given size can be allocated on the stack or not. Copyright (C) 2002-2021 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; see the file COPYING.LIB. If not, see . */ # 1 "../include/alloca.h" 1 # 20 "../sysdeps/pthread/allocalim.h" 2 # 1 "../include/limits.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types */ #define _LIBC_LIMITS_H_ 1 #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION # 1 "../bits/libc-header-start.h" 1 /* Handle feature test macros at the start of a header. Copyright (C) 2016-2021 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 . */ /* This header is internal to glibc and should not be included outside of glibc headers. Headers including it must define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header cannot have multiple include guards because ISO C feature test macros depend on the definition of the macro when an affected header is included, not when the first system header is included. */ #undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION /* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ macro. */ #undef __GLIBC_USE_LIB_EXT2 #define __GLIBC_USE_LIB_EXT2 1 /* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ macro. Most but not all symbols enabled by that macro in TS 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in Annex F still require a new feature test macro __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS 18661-1 are not included in C2X (and thus should depend on __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are enabled). __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS 18661-1 not included in C2X. __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS 18661-1 that are also included in C2X (with no feature test macro required in C2X). __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1 that are included in C2X but conditional on __STDC_WANT_IEC_60559_EXT__. (There are currently no features conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS 18661-1.) */ #undef __GLIBC_USE_IEC_60559_BFP_EXT #define __GLIBC_USE_IEC_60559_BFP_EXT 1 #undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X #define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1 #undef __GLIBC_USE_IEC_60559_EXT #define __GLIBC_USE_IEC_60559_EXT 1 /* ISO/IEC TS 18661-4:2015 defines the __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction functions, the symbols from this TS are enabled unconditionally in C2X. */ #undef __GLIBC_USE_IEC_60559_FUNCS_EXT #define __GLIBC_USE_IEC_60559_FUNCS_EXT 1 #undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X #define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1 /* ISO/IEC TS 18661-3:2015 defines the __STDC_WANT_IEC_60559_TYPES_EXT__ macro. */ #undef __GLIBC_USE_IEC_60559_TYPES_EXT #define __GLIBC_USE_IEC_60559_TYPES_EXT 1 # 27 "../include/limits.h" 2 /* Maximum length of any multibyte character in any locale. We define this value here since the gcc header does not define the correct value. */ #define MB_LEN_MAX 16 /* If we are not using GNU CC we have to define all the symbols ourself. Otherwise use gcc's definitions (see below). */ # 114 "../include/limits.h" /* Get the compiler's limits.h, which defines almost all the ISO constants. We put this #include_next outside the double inclusion check because it should be possible to include this file more than once and still get the definitions from gcc's header. */ /* `_GCC_LIMITS_H_' is what GCC's file defines. */ # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/limits.h" 1 3 4 /* Copyright (C) 1992-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* This administrivia gets added to the beginning of limits.h if the system has its own version of limits.h. */ /* We use _GCC_LIMITS_H_ because we want this not to match any macros that the system's limits.h uses for its own purposes. */ #define _GCC_LIMITS_H_ /* Copyright (C) 1991-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ #define _LIMITS_H___ /* Number of bits in a `char'. */ #undef CHAR_BIT #define CHAR_BIT __CHAR_BIT__ /* Maximum length of a multibyte character. */ /* Minimum and maximum values a `signed char' can hold. */ #undef SCHAR_MIN #define SCHAR_MIN (-SCHAR_MAX - 1) #undef SCHAR_MAX #define SCHAR_MAX __SCHAR_MAX__ /* Maximum value an `unsigned char' can hold. (Minimum is 0). */ #undef UCHAR_MAX #define UCHAR_MAX (SCHAR_MAX * 2 + 1) /* Minimum and maximum values a `char' can hold. */ #undef CHAR_MIN #define CHAR_MIN 0 #undef CHAR_MAX #define CHAR_MAX UCHAR_MAX /* Minimum and maximum values a `signed short int' can hold. */ #undef SHRT_MIN #define SHRT_MIN (-SHRT_MAX - 1) #undef SHRT_MAX #define SHRT_MAX __SHRT_MAX__ /* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ #undef USHRT_MAX #define USHRT_MAX (SHRT_MAX * 2 + 1) /* Minimum and maximum values a `signed int' can hold. */ #undef INT_MIN #define INT_MIN (-INT_MAX - 1) #undef INT_MAX #define INT_MAX __INT_MAX__ /* Maximum value an `unsigned int' can hold. (Minimum is 0). */ #undef UINT_MAX #define UINT_MAX (INT_MAX * 2U + 1U) /* Minimum and maximum values a `signed long int' can hold. (Same as `int'). */ #undef LONG_MIN #define LONG_MIN (-LONG_MAX - 1L) #undef LONG_MAX #define LONG_MAX __LONG_MAX__ /* Maximum value an `unsigned long int' can hold. (Minimum is 0). */ #undef ULONG_MAX #define ULONG_MAX (LONG_MAX * 2UL + 1UL) /* Minimum and maximum values a `signed long long int' can hold. */ #undef LLONG_MIN #define LLONG_MIN (-LLONG_MAX - 1LL) #undef LLONG_MAX #define LLONG_MAX __LONG_LONG_MAX__ /* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ #undef ULLONG_MAX #define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) /* Minimum and maximum values a `signed long long int' can hold. */ #undef LONG_LONG_MIN #define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL) #undef LONG_LONG_MAX #define LONG_LONG_MAX __LONG_LONG_MAX__ /* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ #undef ULONG_LONG_MAX #define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL) # 187 "/usr/lib/gcc/s390x-redhat-linux/11/include/limits.h" 3 4 /* This administrivia gets added to the end of limits.h if the system has its own version of limits.h. */ # 125 "../include/limits.h" 2 /* The files in some gcc versions don't define LLONG_MIN, LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for ages are available. */ /* The integer width macros are not defined by GCC's before GCC 7, or if _GNU_SOURCE rather than __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature. */ #define CHAR_WIDTH 8 #define SCHAR_WIDTH 8 #define UCHAR_WIDTH 8 #define SHRT_WIDTH 16 #define USHRT_WIDTH 16 #define INT_WIDTH 32 #define UINT_WIDTH 32 #define LONG_WIDTH __WORDSIZE #define ULONG_WIDTH __WORDSIZE #define LLONG_WIDTH 64 #define ULLONG_WIDTH 64 /* The macros for _Bool are not defined by GCC's before GCC 11, or if _GNU_SOURCE is defined rather than enabling C2x support with -std. */ #define BOOL_MAX 1 #define BOOL_WIDTH 1 /* POSIX adds things to . */ # 1 "../include/bits/posix1_lim.h" 1 # 1 "../posix/bits/posix1_lim.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * POSIX Standard: 2.9.2 Minimum Values Added to * * Never include this file directly; use instead. */ #define _BITS_POSIX1_LIM_H 1 # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 28 "../posix/bits/posix1_lim.h" 2 /* These are the standard-mandated minimum values. */ /* Minimum number of operations in one list I/O call. */ #define _POSIX_AIO_LISTIO_MAX 2 /* Minimal number of outstanding asynchronous I/O operations. */ #define _POSIX_AIO_MAX 1 /* Maximum length of arguments to `execve', including environment. */ #define _POSIX_ARG_MAX 4096 /* Maximum simultaneous processes per real user ID. */ #define _POSIX_CHILD_MAX 25 /* Minimal number of timer expiration overruns. */ #define _POSIX_DELAYTIMER_MAX 32 /* Maximum length of a host name (not including the terminating null) as returned from the GETHOSTNAME function. */ #define _POSIX_HOST_NAME_MAX 255 /* Maximum link count of a file. */ #define _POSIX_LINK_MAX 8 /* Maximum length of login name. */ #define _POSIX_LOGIN_NAME_MAX 9 /* Number of bytes in a terminal canonical input queue. */ #define _POSIX_MAX_CANON 255 /* Number of bytes for which space will be available in a terminal input queue. */ #define _POSIX_MAX_INPUT 255 /* Maximum number of message queues open for a process. */ #define _POSIX_MQ_OPEN_MAX 8 /* Maximum number of supported message priorities. */ #define _POSIX_MQ_PRIO_MAX 32 /* Number of bytes in a filename. */ #define _POSIX_NAME_MAX 14 /* Number of simultaneous supplementary group IDs per process. */ #define _POSIX_NGROUPS_MAX 8 /* Number of files one process can have open at once. */ #define _POSIX_OPEN_MAX 20 /* Number of descriptors that a process may examine with `pselect' or `select'. */ #define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX /* Number of bytes in a pathname. */ #define _POSIX_PATH_MAX 256 /* Number of bytes than can be written atomically to a pipe. */ #define _POSIX_PIPE_BUF 512 /* The number of repeated occurrences of a BRE permitted by the REGEXEC and REGCOMP functions when using the interval notation. */ #define _POSIX_RE_DUP_MAX 255 /* Minimal number of realtime signals reserved for the application. */ #define _POSIX_RTSIG_MAX 8 /* Number of semaphores a process can have. */ #define _POSIX_SEM_NSEMS_MAX 256 /* Maximal value of a semaphore. */ #define _POSIX_SEM_VALUE_MAX 32767 /* Number of pending realtime signals. */ #define _POSIX_SIGQUEUE_MAX 32 /* Largest value of a `ssize_t'. */ #define _POSIX_SSIZE_MAX 32767 /* Number of streams a process can have open at once. */ #define _POSIX_STREAM_MAX 8 /* The number of bytes in a symbolic link. */ #define _POSIX_SYMLINK_MAX 255 /* The number of symbolic links that can be traversed in the resolution of a pathname in the absence of a loop. */ #define _POSIX_SYMLOOP_MAX 8 /* Number of timer for a process. */ #define _POSIX_TIMER_MAX 32 /* Maximum number of characters in a tty name. */ #define _POSIX_TTY_NAME_MAX 9 /* Maximum length of a timezone name (element of `tzname'). */ #define _POSIX_TZNAME_MAX 6 /* Maximum number of connections that can be queued on a socket. */ #define _POSIX_QLIMIT 1 /* Maximum number of bytes that can be buffered on a socket for send or receive. */ #define _POSIX_HIWAT _POSIX_PIPE_BUF /* Maximum number of elements in an `iovec' array. */ #define _POSIX_UIO_MAXIOV 16 /* Maximum clock resolution in nanoseconds. */ #define _POSIX_CLOCKRES_MIN 20000000 /* Get the implementation-specific values for the above. */ # 1 "../sysdeps/unix/sysv/linux/bits/local_lim.h" 1 /* Minimum guaranteed maximum values for system limits. Linux version. Copyright (C) 1993-2021 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; see the file COPYING.LIB. If not, see . */ /* The kernel header pollutes the namespace with the NR_OPEN symbol and defines LINK_MAX although filesystems have different maxima. A similar thing is true for OPEN_MAX: the limit can be changed at runtime and therefore the macro must not be defined. Remove this after including the header if necessary. */ #define __undef_NR_OPEN #define __undef_LINK_MAX #define __undef_OPEN_MAX #define __undef_ARG_MAX /* The kernel sources contain a file with all the needed information. */ # 1 "/usr/include/linux/limits.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define _LINUX_LIMITS_H #define NR_OPEN 1024 #define NGROUPS_MAX 65536 #define ARG_MAX 131072 #define LINK_MAX 127 #define MAX_CANON 255 #define MAX_INPUT 255 #define NAME_MAX 255 #define PATH_MAX 4096 #define PIPE_BUF 4096 #define XATTR_NAME_MAX 255 #define XATTR_SIZE_MAX 65536 #define XATTR_LIST_MAX 65536 #define RTSIG_MAX 32 # 39 "../sysdeps/unix/sysv/linux/bits/local_lim.h" 2 /* Have to remove NR_OPEN? */ #undef NR_OPEN #undef __undef_NR_OPEN /* Have to remove LINK_MAX? */ #undef LINK_MAX #undef __undef_LINK_MAX /* Have to remove OPEN_MAX? */ #undef OPEN_MAX #undef __undef_OPEN_MAX /* Have to remove ARG_MAX? */ #undef ARG_MAX #undef __undef_ARG_MAX /* The number of data keys per process. */ #define _POSIX_THREAD_KEYS_MAX 128 /* This is the value this implementation supports. */ #define PTHREAD_KEYS_MAX 1024 /* Controlling the iterations of destructors for thread-specific data. */ #define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 /* Number of iterations this implementation does. */ #define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS /* The number of threads per process. */ #define _POSIX_THREAD_THREADS_MAX 64 /* We have no predefined limit on the number of threads. */ #undef PTHREAD_THREADS_MAX /* Maximum amount by which a process can descrease its asynchronous I/O priority level. */ #define AIO_PRIO_DELTA_MAX 20 /* Arrange for the definition of PTHREAD_STACK_MIN. */ # 1 "../sysdeps/unix/sysv/linux/include/bits/pthread_stack_min-dynamic.h" 1 /* Don't define PTHREAD_STACK_MIN to __sysconf (_SC_THREAD_STACK_MIN) for glibc build. */ # 1 "../sysdeps/unix/sysv/linux/bits/pthread_stack_min.h" 1 /* Definition of PTHREAD_STACK_MIN. Linux version. Copyright (C) 2021 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 . */ /* Minimum size for a thread. We are free to choose a reasonable value. */ #define PTHREAD_STACK_MIN 16384 # 7 "../sysdeps/unix/sysv/linux/include/bits/pthread_stack_min-dynamic.h" 2 # 82 "../sysdeps/unix/sysv/linux/bits/local_lim.h" 2 /* Maximum number of timer expiration overruns. */ #define DELAYTIMER_MAX 2147483647 /* Maximum tty name length. */ #define TTY_NAME_MAX 32 /* Maximum login name length. This is arbitrary. */ #define LOGIN_NAME_MAX 256 /* Maximum host name length. */ #define HOST_NAME_MAX 64 /* Maximum message queue priority level. */ #define MQ_PRIO_MAX 32768 /* Maximum value the semaphore can have. */ #define SEM_VALUE_MAX (2147483647) # 162 "../posix/bits/posix1_lim.h" 2 /* ssize_t is not formally required to be the signed type corresponding to size_t, but it is for all configurations supported by glibc. */ #define SSIZE_MAX LONG_MAX /* This value is a guaranteed minimum maximum. The current maximum can be got from `sysconf'. */ # 2 "../include/bits/posix1_lim.h" 2 # 196 "../include/limits.h" 2 # 1 "../include/bits/posix2_lim.h" 1 # 1 "../posix/bits/posix2_lim.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * Never include this file directly; include instead. */ #define _BITS_POSIX2_LIM_H 1 /* The maximum `ibase' and `obase' values allowed by the `bc' utility. */ #define _POSIX2_BC_BASE_MAX 99 /* The maximum number of elements allowed in an array by the `bc' utility. */ #define _POSIX2_BC_DIM_MAX 2048 /* The maximum `scale' value allowed by the `bc' utility. */ #define _POSIX2_BC_SCALE_MAX 99 /* The maximum length of a string constant accepted by the `bc' utility. */ #define _POSIX2_BC_STRING_MAX 1000 /* The maximum number of weights that can be assigned to an entry of the LC_COLLATE `order' keyword in the locale definition file. */ #define _POSIX2_COLL_WEIGHTS_MAX 2 /* The maximum number of expressions that can be nested within parentheses by the `expr' utility. */ #define _POSIX2_EXPR_NEST_MAX 32 /* The maximum length, in bytes, of an input line. */ #define _POSIX2_LINE_MAX 2048 /* The maximum number of repeated occurrences of a regular expression permitted when using the interval notation `\{M,N\}'. */ #define _POSIX2_RE_DUP_MAX 255 /* The maximum number of bytes in a character class name. We have no fixed limit, 2048 is a high number. */ #define _POSIX2_CHARCLASS_NAME_MAX 14 /* These values are implementation-specific, and may vary within the implementation. Their precise values can be obtained from sysconf. */ #define BC_BASE_MAX _POSIX2_BC_BASE_MAX #define BC_DIM_MAX _POSIX2_BC_DIM_MAX #define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX #define BC_STRING_MAX _POSIX2_BC_STRING_MAX #define COLL_WEIGHTS_MAX 255 #define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX #define LINE_MAX _POSIX2_LINE_MAX #define CHARCLASS_NAME_MAX 2048 /* This value is defined like this in regex.h. */ #define RE_DUP_MAX (0x7fff) # 2 "../include/bits/posix2_lim.h" 2 # 200 "../include/limits.h" 2 # 1 "../include/bits/xopen_lim.h" 1 /* Copyright (C) 1996-2021 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 . */ /* * Never include this file directly; use instead. */ /* Additional definitions from X/Open Portability Guide, Issue 4, Version 2 System Interfaces and Headers, 4.16 Please note only the values which are not greater than the minimum stated in the standard document are listed. The `sysconf' functions should be used to obtain the actual value. */ #define _XOPEN_LIM_H 1 /* We do not provide fixed values for ARG_MAX Maximum length of argument to the `exec' function including environment data. ATEXIT_MAX Maximum number of functions that may be registered with `atexit'. CHILD_MAX Maximum number of simultaneous processes per real user ID. OPEN_MAX Maximum number of files that one process can have open at anyone time. PAGESIZE PAGE_SIZE Size of bytes of a page. PASS_MAX Maximum number of significant bytes in a password. We only provide a fixed limit for IOV_MAX Maximum number of `iovec' structures that one process has available for use with `readv' or writev'. if this is indeed fixed by the underlying system. */ /* Maximum number of `iovec' structures that may be used in a single call to `readv', `writev', etc. */ #define _XOPEN_IOV_MAX _POSIX_UIO_MAXIOV # 1 "../sysdeps/unix/sysv/linux/bits/uio_lim.h" 1 /* Implementation limits related to sys/uio.h - Linux version. Copyright (C) 2017-2021 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 . */ #define _BITS_UIO_LIM_H 1 /* Maximum length of the 'struct iovec' array in a single call to readv or writev. This macro has different values in different kernel versions. The latest versions of the kernel use 1024 and this is good choice. Since the C library implementation of readv/writev is able to emulate the functionality even if the currently running kernel does not support this large value the readv/writev call will not fail because of this. */ #define __IOV_MAX 1024 # 65 "../include/bits/xopen_lim.h" 2 #define IOV_MAX __IOV_MAX /* Maximum value of `digit' in calls to the `printf' and `scanf' functions. We have no limit, so return a reasonable value. */ #define NL_ARGMAX _POSIX_ARG_MAX /* Maximum number of bytes in a `LANG' name. We have no limit. */ #define NL_LANGMAX _POSIX2_LINE_MAX /* Maximum message number. We have no limit. */ #define NL_MSGMAX INT_MAX /* Maximum number of bytes in N-to-1 collation mapping. We have no limit. */ #define NL_NMAX INT_MAX /* Maximum set number. We have no limit. */ #define NL_SETMAX INT_MAX /* Maximum number of bytes in a message. We have no limit. */ #define NL_TEXTMAX INT_MAX /* Default process priority. */ #define NZERO 20 /* Number of bits in a word of type `int'. */ #define WORD_BIT 32 # 123 "../include/bits/xopen_lim.h" /* Number of bits in a word of type `long int'. */ /* Safe assumption. */ #define LONG_BIT 64 # 147 "../include/bits/xopen_lim.h" # 204 "../include/limits.h" 2 # 21 "../sysdeps/pthread/allocalim.h" 2 extern __always_inline int __libc_use_alloca (size_t size) { return (__glibc_likely (__libc_alloca_cutoff (size)) || __glibc_likely (size <= PTHREAD_STACK_MIN / 4) ); } # 25 "../include/alloca.h" 2 #define alloca_account(size,avar) ({ size_t s__ = (size); avar += s__; __alloca (s__); }) # 575 "../stdlib/stdlib.h" 2 /* Allocate SIZE bytes on a page boundary. The storage cannot be freed. */ extern void *valloc (size_t __size) __THROW __attribute_malloc__ __attribute_alloc_size__ ((1)) __wur; /* Allocate memory of SIZE bytes with an alignment of ALIGNMENT. */ extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) __THROW __nonnull ((1)) __wur; /* ISO C variant of aligned allocation. */ extern void *aligned_alloc (size_t __alignment, size_t __size) __THROW __attribute_malloc__ __attribute_alloc_align__ ((1)) __attribute_alloc_size__ ((2)) __wur; /* Abort execution and generate a core-dump. */ extern void abort (void) __THROW __attribute__ ((__noreturn__)); /* Register a function to be called when `exit' is called. */ extern int atexit (void (*__func) (void)) __THROW __nonnull ((1)); /* Register a function to be called when `quick_exit' is called. */ extern int at_quick_exit (void (*__func) (void)) __THROW __nonnull ((1)); /* Register a function to be called with the status given to `exit' and the given argument. */ extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) __THROW __nonnull ((1)); /* Call all functions registered with `atexit' and `on_exit', in the reverse of the order in which they were registered, perform stdio cleanup, and terminate program execution with STATUS. */ extern void exit (int __status) __THROW __attribute__ ((__noreturn__)); /* Call all functions registered with `at_quick_exit' in the reverse of the order in which they were registered and terminate program execution with STATUS. */ extern void quick_exit (int __status) __THROW __attribute__ ((__noreturn__)); /* Terminate the program with STATUS without calling any of the functions registered with `atexit' or `on_exit'. */ extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__)); /* Return the value of envariable NAME, or NULL if it doesn't exist. */ extern char *getenv (const char *__name) __THROW __nonnull ((1)) __wur; /* This function is similar to the above but returns NULL if the programs is running with SUID or SGID enabled. */ extern char *secure_getenv (const char *__name) __THROW __nonnull ((1)) __wur; /* The SVID says this is in , but this seems a better place. */ /* Put STRING, which is of the form "NAME=VALUE", in the environment. If there is no `=', remove NAME from the environment. */ extern int putenv (char *__string) __THROW __nonnull ((1)); /* Set NAME to VALUE in the environment. If REPLACE is nonzero, overwrite an existing value. */ extern int setenv (const char *__name, const char *__value, int __replace) __THROW __nonnull ((2)); /* Remove the variable NAME from the environment. */ extern int unsetenv (const char *__name) __THROW __nonnull ((1)); /* The `clearenv' was planned to be added to POSIX.1 but probably never made it. Nevertheless the POSIX.9 standard (POSIX bindings for Fortran 77) requires this function. */ extern int clearenv (void) __THROW; /* Generate a unique temporary file name from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the file name unique. Always returns TEMPLATE, it's either a temporary file name or a null string if it cannot get a unique file name. */ extern char *mktemp (char *__template) __THROW __nonnull ((1)); /* Generate a unique temporary file name from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the filename unique. Returns a file descriptor open on the file for reading and writing, or -1 if it cannot create a uniquely-named file. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int mkstemp (char *__template) __nonnull ((1)) __wur; # 704 "../stdlib/stdlib.h" extern int mkstemp64 (char *__template) __nonnull ((1)) __wur; /* Similar to mkstemp, but the template can have a suffix after the XXXXXX. The length of the suffix is specified in the second parameter. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int mkstemps (char *__template, int __suffixlen) __nonnull ((1)) __wur; # 726 "../stdlib/stdlib.h" extern int mkstemps64 (char *__template, int __suffixlen) __nonnull ((1)) __wur; /* Create a unique temporary directory from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the directory name unique. Returns TEMPLATE, or a null pointer if it cannot get a unique name. The directory is created mode 700. */ extern char *mkdtemp (char *__template) __THROW __nonnull ((1)) __wur; /* Generate a unique temporary file name from TEMPLATE similar to mkstemp. But allow the caller to pass additional flags which are used in the open call to create the file.. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int mkostemp (char *__template, int __flags) __nonnull ((1)) __wur; # 758 "../stdlib/stdlib.h" extern int mkostemp64 (char *__template, int __flags) __nonnull ((1)) __wur; /* Similar to mkostemp, but the template can have a suffix after the XXXXXX. The length of the suffix is specified in the second parameter. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int mkostemps (char *__template, int __suffixlen, int __flags) __nonnull ((1)) __wur; # 780 "../stdlib/stdlib.h" extern int mkostemps64 (char *__template, int __suffixlen, int __flags) __nonnull ((1)) __wur; /* Execute the given line as a shell command. This function is a cancellation point and therefore not marked with __THROW. */ extern int system (const char *__command) __wur; /* Return a malloc'd string containing the canonical absolute name of the existing named file. */ extern char *canonicalize_file_name (const char *__name) __THROW __nonnull ((1)) __attribute_malloc__ __attr_dealloc_free __wur; /* Return the canonical absolute name of file NAME. If RESOLVED is null, the result is malloc'd; otherwise, if the canonical name is PATH_MAX chars or more, returns null with `errno' set to ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, returns the name in RESOLVED. */ extern char *realpath (const char *__restrict __name, char *__restrict __resolved) __THROW __wur; /* Shorthand for type of comparison functions. */ #define __COMPAR_FN_T typedef int (*__compar_fn_t) (const void *, const void *); typedef __compar_fn_t comparison_fn_t; typedef int (*__compar_d_fn_t) (const void *, const void *, void *); /* Do a binary search for KEY in BASE, which consists of NMEMB elements of SIZE bytes each, using COMPAR to perform the comparisons. */ extern void *bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __nonnull ((1, 2, 5)) __wur; # 1 "../bits/stdlib-bsearch.h" 1 /* Perform binary search - inline version. Copyright (C) 1991-2021 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 . */ __extern_inline void * bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) { size_t __l, __u, __idx; const void *__p; int __comparison; __l = 0; __u = __nmemb; while (__l < __u) { __idx = (__l + __u) / 2; __p = (const void *) (((const char *) __base) + (__idx * __size)); __comparison = (*__compar) (__key, __p); if (__comparison < 0) __u = __idx; else if (__comparison > 0) __l = __idx + 1; else { #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wcast-qual" return (void *) __p; #pragma GCC diagnostic pop } } return NULL; } # 834 "../stdlib/stdlib.h" 2 /* Sort NMEMB elements of BASE, of SIZE bytes each, using COMPAR to perform the comparisons. */ extern void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __nonnull ((1, 4)); extern void qsort_r (void *__base, size_t __nmemb, size_t __size, __compar_d_fn_t __compar, void *__arg) __nonnull ((1, 4)); /* Return the absolute value of X. */ extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur; extern long int labs (long int __x) __THROW __attribute__ ((__const__)) __wur; __extension__ extern long long int llabs (long long int __x) __THROW __attribute__ ((__const__)) __wur; /* Return the `div_t', `ldiv_t' or `lldiv_t' representation of the value of NUMER over DENOM. */ /* GCC may have built-ins for these someday. */ extern div_t div (int __numer, int __denom) __THROW __attribute__ ((__const__)) __wur; extern ldiv_t ldiv (long int __numer, long int __denom) __THROW __attribute__ ((__const__)) __wur; __extension__ extern lldiv_t lldiv (long long int __numer, long long int __denom) __THROW __attribute__ ((__const__)) __wur; /* Convert floating point numbers to strings. The returned values are valid only until another call to the same function. */ /* Convert VALUE to a string with NDIGIT digits and return a pointer to this. Set *DECPT with the position of the decimal character and *SIGN with the sign of the number. */ extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; /* Convert VALUE to a string rounded to NDIGIT decimal digits. Set *DECPT with the position of the decimal character and *SIGN with the sign of the number. */ extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; /* If possible convert VALUE to a string with NDIGIT significant digits. Otherwise use exponential representation. The resulting string will be written to BUF. */ extern char *gcvt (double __value, int __ndigit, char *__buf) __THROW __nonnull ((3)) __wur; /* Long double versions of above functions. */ extern char *qecvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; extern char *qfcvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; extern char *qgcvt (long double __value, int __ndigit, char *__buf) __THROW __nonnull ((3)) __wur; /* Reentrant version of the functions above which provide their own buffers. */ extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __THROW __nonnull ((3, 4, 5)); extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __THROW __nonnull ((3, 4, 5)); extern int qecvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __THROW __nonnull ((3, 4, 5)); extern int qfcvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __THROW __nonnull ((3, 4, 5)); /* Return the length of the multibyte character in S, which is no longer than N. */ extern int mblen (const char *__s, size_t __n) __THROW; /* Return the length of the given multibyte character, putting its `wchar_t' representation in *PWC. */ extern int mbtowc (wchar_t *__restrict __pwc, const char *__restrict __s, size_t __n) __THROW; /* Put the multibyte character represented by WCHAR in S, returning its length. */ extern int wctomb (char *__s, wchar_t __wchar) __THROW; /* Convert a multibyte string to a wide char string. */ extern size_t mbstowcs (wchar_t *__restrict __pwcs, const char *__restrict __s, size_t __n) __THROW __attr_access ((__read_only__, 2)); /* Convert a wide char string to multibyte string. */ extern size_t wcstombs (char *__restrict __s, const wchar_t *__restrict __pwcs, size_t __n) __THROW __fortified_attr_access (__write_only__, 1, 3) __attr_access ((__read_only__, 2)); /* Determine whether the string value of RESPONSE matches the affirmation or negative response expression as specified by the LC_MESSAGES category in the program's current locale. Returns 1 if affirmative, 0 if negative, and -1 if not matching. */ extern int rpmatch (const char *__response) __THROW __nonnull ((1)) __wur; /* Parse comma separated suboption from *OPTIONP and match against strings in TOKENS. If found return index and set *VALUEP to optional value introduced by an equal sign. If the suboption is not part of TOKENS return in *VALUEP beginning of unknown suboption. On exit *OPTIONP is set to the beginning of the next token or at the terminating NUL character. */ extern int getsubopt (char **__restrict __optionp, char *const *__restrict __tokens, char **__restrict __valuep) __THROW __nonnull ((1, 2, 3)) __wur; /* X/Open pseudo terminal handling. */ /* Return a master pseudo-terminal handle. */ extern int posix_openpt (int __oflag) __wur; /* The next four functions all take a master pseudo-tty fd and perform an operation on the associated slave: */ /* Chown the slave to the calling user. */ extern int grantpt (int __fd) __THROW; /* Release an internal lock so the slave can be opened. Call after grantpt(). */ extern int unlockpt (int __fd) __THROW; /* Return the pathname of the pseudo terminal slave associated with the master FD is open on, or NULL on errors. The returned storage is good until the next call to this function. */ extern char *ptsname (int __fd) __THROW __wur; /* Store at most BUFLEN characters of the pathname of the slave pseudo terminal associated with the master FD is open on in BUF. Return 0 on success, otherwise an error number. */ extern int ptsname_r (int __fd, char *__buf, size_t __buflen) __THROW __nonnull ((2)) __fortified_attr_access (__write_only__, 2, 3); /* Open a master pseudo terminal and return its file descriptor. */ extern int getpt (void); /* Put the 1 minute, 5 minute and 15 minute load averages into the first NELEM elements of LOADAVG. Return the number written (never more than three, but may be less than NELEM), or -1 if an error occurred. */ extern int getloadavg (double __loadavg[], int __nelem) __THROW __nonnull ((1)); # 1 "../include/bits/stdlib-float.h" 1 /* No floating-point inline functions in rtld and for the conform tests. */ # 1 "../stdlib/bits/stdlib-float.h" 1 /* Floating-point inline functions for stdlib.h. Copyright (C) 2012-2021 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 . */ __extern_inline double __NTH (atof (const char *__nptr)) { return strtod (__nptr, (char **) NULL); } # 7 "../include/bits/stdlib-float.h" 2 # 1024 "../stdlib/stdlib.h" 2 /* Define some macros helping to catch buffer overflows. */ __END_DECLS # 16 "../include/stdlib.h" 2 /* Now define the internal interfaces. */ # 1 "../include/sys/stat.h" 1 # 1 "../io/sys/stat.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * POSIX Standard: 5.6 File Characteristics */ #define _SYS_STAT_H 1 # 1 "../include/bits/types.h" 1 # 28 "../io/sys/stat.h" 2 # 1 "../include/bits/types/struct_timespec.h" 1 # 31 "../io/sys/stat.h" 2 /* The Single Unix specification says that some more types are available here. */ # 1 "../include/bits/types/time_t.h" 1 # 38 "../io/sys/stat.h" 2 # 57 "../io/sys/stat.h" # 76 "../io/sys/stat.h" # 92 "../io/sys/stat.h" __BEGIN_DECLS # 1 "../sysdeps/unix/sysv/linux/bits/stat.h" 1 /* Copyright (C) 1992-2021 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 . */ #define _BITS_STAT_H 1 # 1 "../sysdeps/unix/sysv/linux/s390/bits/struct_stat.h" 1 /* Definition for struct stat. Copyright (C) 2020-2021 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 . */ #define _BITS_STRUCT_STAT_H 1 # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 27 "../sysdeps/unix/sysv/linux/s390/bits/struct_stat.h" 2 struct stat { __dev_t st_dev; /* Device. */ __ino_t st_ino; /* File serial number. */ __nlink_t st_nlink; /* Link count. */ __mode_t st_mode; /* File mode. */ __uid_t st_uid; /* User ID of the file's owner. */ __gid_t st_gid; /* Group ID of the file's group.*/ int __glibc_reserved0; __dev_t st_rdev; /* Device number, if device. */ __off_t st_size; /* Size of file, in bytes. */ /* Nanosecond resolution timestamps are stored in a format equivalent to 'struct timespec'. This is the type used whenever possible but the Unix namespace rules do not allow the identifier 'timespec' to appear in the header. Therefore we have to handle the use of this header in strictly standard-compliant sources special. */ struct timespec st_atim; /* Time of last access. */ struct timespec st_mtim; /* Time of last modification. */ struct timespec st_ctim; /* Time of last status change. */ #define st_atime st_atim.tv_sec #define st_mtime st_mtim.tv_sec #define st_ctime st_ctim.tv_sec # 61 "../sysdeps/unix/sysv/linux/s390/bits/struct_stat.h" __blksize_t st_blksize; /* Optimal block size for I/O. */ __blkcnt_t st_blocks; /* Nr. 512-byte blocks allocated. */ long int __glibc_reserved[3]; }; # 126 "../sysdeps/unix/sysv/linux/s390/bits/struct_stat.h" /* Note stat64 is the same shape as stat. */ struct stat64 { __dev_t st_dev; /* Device. */ __ino64_t st_ino; /* File serial number. */ __nlink_t st_nlink; /* Link count. */ __mode_t st_mode; /* File mode. */ __uid_t st_uid; /* User ID of the file's owner. */ __gid_t st_gid; /* Group ID of the file's group.*/ int __glibc_reserved0; __dev_t st_rdev; /* Device number, if device. */ __off_t st_size; /* Size of file, in bytes. */ /* Nanosecond resolution timestamps are stored in a format equivalent to 'struct timespec'. This is the type used whenever possible but the Unix namespace rules do not allow the identifier 'timespec' to appear in the header. Therefore we have to handle the use of this header in strictly standard-compliant sources special. */ struct timespec st_atim; /* Time of last access. */ struct timespec st_mtim; /* Time of last modification. */ struct timespec st_ctim; /* Time of last status change. */ #define st_atime st_atim.tv_sec #define st_mtime st_mtim.tv_sec #define st_ctime st_ctim.tv_sec # 162 "../sysdeps/unix/sysv/linux/s390/bits/struct_stat.h" __blksize_t st_blksize; /* Optimal block size for I/O. */ __blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */ long int __glibc_reserved[3]; }; # 211 "../sysdeps/unix/sysv/linux/s390/bits/struct_stat.h" /* Tell code we have these members. */ #define _STATBUF_ST_BLKSIZE #define _STATBUF_ST_RDEV /* Nanosecond resolution time values are supported. */ #define _STATBUF_ST_NSEC # 26 "../sysdeps/unix/sysv/linux/bits/stat.h" 2 /* Encoding of the file mode. */ #define __S_IFMT 0170000 /* File types. */ #define __S_IFDIR 0040000 #define __S_IFCHR 0020000 #define __S_IFBLK 0060000 #define __S_IFREG 0100000 #define __S_IFIFO 0010000 #define __S_IFLNK 0120000 #define __S_IFSOCK 0140000 /* POSIX.1b objects. Note that these macros always evaluate to zero. But they do it by enforcing the correct use of the macros. */ #define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode) #define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode) #define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode) /* Protection bits. */ #define __S_ISUID 04000 #define __S_ISGID 02000 #define __S_ISVTX 01000 #define __S_IREAD 0400 #define __S_IWRITE 0200 #define __S_IEXEC 0100 #define UTIME_NOW ((1l << 30) - 1l) #define UTIME_OMIT ((1l << 30) - 2l) # 102 "../io/sys/stat.h" 2 #define S_IFMT __S_IFMT #define S_IFDIR __S_IFDIR #define S_IFCHR __S_IFCHR #define S_IFBLK __S_IFBLK #define S_IFREG __S_IFREG #define S_IFIFO __S_IFIFO #define S_IFLNK __S_IFLNK #define S_IFSOCK __S_IFSOCK /* Test macros for file types. */ #define __S_ISTYPE(mode,mask) (((mode) & __S_IFMT) == (mask)) #define S_ISDIR(mode) __S_ISTYPE((mode), __S_IFDIR) #define S_ISCHR(mode) __S_ISTYPE((mode), __S_IFCHR) #define S_ISBLK(mode) __S_ISTYPE((mode), __S_IFBLK) #define S_ISREG(mode) __S_ISTYPE((mode), __S_IFREG) #define S_ISFIFO(mode) __S_ISTYPE((mode), __S_IFIFO) #define S_ISLNK(mode) __S_ISTYPE((mode), __S_IFLNK) #define S_ISSOCK(mode) __S_ISTYPE((mode), __S_IFSOCK) /* These are from POSIX.1b. If the objects are not implemented using separate distinct file types, the macros always will evaluate to zero. Unlike the other S_* macros the following three take a pointer to a `struct stat' object as the argument. */ #define S_TYPEISMQ(buf) __S_TYPEISMQ(buf) #define S_TYPEISSEM(buf) __S_TYPEISSEM(buf) #define S_TYPEISSHM(buf) __S_TYPEISSHM(buf) /* Protection bits. */ #define S_ISUID __S_ISUID #define S_ISGID __S_ISGID /* Save swapped text after use (sticky bit). This is pretty well obsolete. */ #define S_ISVTX __S_ISVTX #define S_IRUSR __S_IREAD #define S_IWUSR __S_IWRITE #define S_IXUSR __S_IEXEC /* Read, write, and execute by owner. */ #define S_IRWXU (__S_IREAD|__S_IWRITE|__S_IEXEC) #define S_IREAD S_IRUSR #define S_IWRITE S_IWUSR #define S_IEXEC S_IXUSR #define S_IRGRP (S_IRUSR >> 3) #define S_IWGRP (S_IWUSR >> 3) #define S_IXGRP (S_IXUSR >> 3) /* Read, write, and execute by group. */ #define S_IRWXG (S_IRWXU >> 3) #define S_IROTH (S_IRGRP >> 3) #define S_IWOTH (S_IWGRP >> 3) #define S_IXOTH (S_IXGRP >> 3) /* Read, write, and execute by others. */ #define S_IRWXO (S_IRWXG >> 3) /* Macros for common mode bit masks. */ #define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) #define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) #define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) #define S_BLKSIZE 512 /* Get file attributes for FILE and put them in BUF. */ extern int stat (const char *__restrict __file, struct stat *__restrict __buf) __THROW __nonnull ((1, 2)); /* Get file attributes for the file, device, pipe, or socket that file descriptor FD is open on and put them in BUF. */ extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2)); # 238 "../io/sys/stat.h" extern int stat64 (const char *__restrict __file, struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2)); extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2)); # 257 "../io/sys/stat.h" /* Similar to stat, get the attributes for FILE and put them in BUF. Relative path names are interpreted relative to FD unless FD is AT_FDCWD. */ extern int fstatat (int __fd, const char *__restrict __file, struct stat *__restrict __buf, int __flag) __THROW __nonnull ((2, 3)); # 288 "../io/sys/stat.h" extern int fstatat64 (int __fd, const char *__restrict __file, struct stat64 *__restrict __buf, int __flag) __THROW __nonnull ((2, 3)); # 306 "../io/sys/stat.h" /* Get file attributes about FILE and put them in BUF. If FILE is a symbolic link, do not follow it. */ extern int lstat (const char *__restrict __file, struct stat *__restrict __buf) __THROW __nonnull ((1, 2)); # 336 "../io/sys/stat.h" extern int lstat64 (const char *__restrict __file, struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2)); /* Set file access permissions for FILE to MODE. If FILE is a symbolic link, this affects its target instead. */ extern int chmod (const char *__file, __mode_t __mode) __THROW __nonnull ((1)); /* Set file access permissions for FILE to MODE. If FILE is a symbolic link, this affects the link itself rather than its target. */ extern int lchmod (const char *__file, __mode_t __mode) __THROW __nonnull ((1)); /* Set file access permissions of the file FD is open on to MODE. */ extern int fchmod (int __fd, __mode_t __mode) __THROW; /* Set file access permissions of FILE relative to the directory FD is open on. */ extern int fchmodat (int __fd, const char *__file, __mode_t __mode, int __flag) __THROW __nonnull ((2)) __wur; /* Set the file creation mask of the current process to MASK, and return the old creation mask. */ extern __mode_t umask (__mode_t __mask) __THROW; /* Get the current `umask' value without changing it. This function is only available under the GNU Hurd. */ extern __mode_t getumask (void) __THROW; /* Create a new directory named PATH, with permission bits MODE. */ extern int mkdir (const char *__path, __mode_t __mode) __THROW __nonnull ((1)); /* Like mkdir, create a new directory with permission bits MODE. But interpret relative PATH names relative to the directory associated with FD. */ extern int mkdirat (int __fd, const char *__path, __mode_t __mode) __THROW __nonnull ((2)); /* Create a device file named PATH, with permission and special bits MODE and device number DEV (which can be constructed from major and minor device numbers with the `makedev' macro above). */ extern int mknod (const char *__path, __mode_t __mode, __dev_t __dev) __THROW __nonnull ((1)); /* Like mknod, create a new device file with permission bits MODE and device number DEV. But interpret relative PATH names relative to the directory associated with FD. */ extern int mknodat (int __fd, const char *__path, __mode_t __mode, __dev_t __dev) __THROW __nonnull ((2)); /* Create a new FIFO named PATH, with permission bits MODE. */ extern int mkfifo (const char *__path, __mode_t __mode) __THROW __nonnull ((1)); /* Like mkfifo, create a new FIFO with permission bits MODE. But interpret relative PATH names relative to the directory associated with FD. */ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode) __THROW __nonnull ((2)); /* Set file access and modification times relative to directory file descriptor. */ extern int utimensat (int __fd, const char *__path, const struct timespec __times[2], int __flags) __THROW __nonnull ((2)); # 447 "../io/sys/stat.h" /* Set file access and modification times of the file associated with FD. */ extern int futimens (int __fd, const struct timespec __times[2]) __THROW; # 462 "../io/sys/stat.h" # 1 "../include/bits/statx.h" 1 # 1 "../io/bits/statx.h" 1 /* statx-related definitions and declarations. Generic version. Copyright (C) 2018-2021 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 . */ /* This interface is based on in Linux. */ /* Use the generic definitions. */ # 1 "../include/bits/statx-generic.h" 1 # 1 "../io/bits/statx-generic.h" 1 /* Generic statx-related definitions and declarations. Copyright (C) 2018-2021 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 . */ /* This interface is based on in Linux. */ # 1 "../include/bits/types/struct_statx_timestamp.h" 1 # 1 "../io/bits/types/struct_statx_timestamp.h" 1 /* Definition of the generic version of struct statx_timestamp. Copyright (C) 2018-2021 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 . */ #define __statx_timestamp_defined 1 struct statx_timestamp { __int64_t tv_sec; __uint32_t tv_nsec; __int32_t __statx_timestamp_pad1[1]; }; # 2 "../include/bits/types/struct_statx_timestamp.h" 2 # 26 "../io/bits/statx-generic.h" 2 # 1 "../include/bits/types/struct_statx.h" 1 # 1 "../io/bits/types/struct_statx.h" 1 /* Definition of the generic version of struct statx. Copyright (C) 2018-2021 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 . */ #define __statx_defined 1 /* Warning: The kernel may add additional fields to this struct in the future. Only use this struct for calling the statx function, not for storing data. (Expansion will be controlled by the mask argument of the statx function.) */ struct statx { __uint32_t stx_mask; __uint32_t stx_blksize; __uint64_t stx_attributes; __uint32_t stx_nlink; __uint32_t stx_uid; __uint32_t stx_gid; __uint16_t stx_mode; __uint16_t __statx_pad1[1]; __uint64_t stx_ino; __uint64_t stx_size; __uint64_t stx_blocks; __uint64_t stx_attributes_mask; struct statx_timestamp stx_atime; struct statx_timestamp stx_btime; struct statx_timestamp stx_ctime; struct statx_timestamp stx_mtime; __uint32_t stx_rdev_major; __uint32_t stx_rdev_minor; __uint32_t stx_dev_major; __uint32_t stx_dev_minor; __uint64_t __statx_pad2[14]; }; # 2 "../include/bits/types/struct_statx.h" 2 # 27 "../io/bits/statx-generic.h" 2 #define STATX_TYPE 0x0001U #define STATX_MODE 0x0002U #define STATX_NLINK 0x0004U #define STATX_UID 0x0008U #define STATX_GID 0x0010U #define STATX_ATIME 0x0020U #define STATX_MTIME 0x0040U #define STATX_CTIME 0x0080U #define STATX_INO 0x0100U #define STATX_SIZE 0x0200U #define STATX_BLOCKS 0x0400U #define STATX_BASIC_STATS 0x07ffU #define STATX_ALL 0x0fffU #define STATX_BTIME 0x0800U #define STATX_MNT_ID 0x1000U #define STATX__RESERVED 0x80000000U #define STATX_ATTR_COMPRESSED 0x0004 #define STATX_ATTR_IMMUTABLE 0x0010 #define STATX_ATTR_APPEND 0x0020 #define STATX_ATTR_NODUMP 0x0040 #define STATX_ATTR_ENCRYPTED 0x0800 #define STATX_ATTR_AUTOMOUNT 0x1000 #define STATX_ATTR_MOUNT_ROOT 0x2000 #define STATX_ATTR_VERITY 0x100000 #define STATX_ATTR_DAX 0x200000 __BEGIN_DECLS /* Fill *BUF with information about PATH in DIRFD. */ int statx (int __dirfd, const char *__restrict __path, int __flags, unsigned int __mask, struct statx *__restrict __buf) __THROW __nonnull ((2, 5)); __END_DECLS # 2 "../include/bits/statx-generic.h" 2 # 27 "../io/bits/statx.h" 2 # 2 "../include/bits/statx.h" 2 # 466 "../io/sys/stat.h" 2 __END_DECLS # 3 "../include/sys/stat.h" 2 # 1 "../sysdeps/unix/sysv/linux/s390/xstatver.h" 1 /* Versions of the 'struct stat' data structure used in compatibility xstat functions. */ # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 5 "../sysdeps/unix/sysv/linux/s390/xstatver.h" 2 #define _STAT_VER_KERNEL 0 #define _STAT_VER_LINUX 1 #define _MKNOD_VER_LINUX 0 # 18 "../sysdeps/unix/sysv/linux/s390/xstatver.h" #define _STAT_VER _STAT_VER_LINUX #define _MKNOD_VER _MKNOD_VER_LINUX # 6 "../include/sys/stat.h" 2 # 1 "../include/struct___timespec64.h" 1 #define _STRUCT_TIMESPEC64_H #define __timespec64 timespec # 27 "../include/struct___timespec64.h" # 7 "../include/sys/stat.h" 2 # 1 "../sysdeps/unix/sysv/linux/struct_stat_time64.h" 1 /* Struct stat with 64-bit time support. Copyright (C) 2020-2021 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 . */ #define _BITS_STRUCT_STAT_TIME64_H 1 #define __stat64_t64 stat64 # 33 "../sysdeps/unix/sysv/linux/struct_stat_time64.h" # 8 "../include/sys/stat.h" 2 static inline bool in_ino_t_range (__ino64_t v) { __ino_t s = v; return s == v; } static inline bool in_off_t_range (__off64_t v) { __off_t s = v; return s == v; } static inline bool in_blkcnt_t_range (__blkcnt64_t v) { __blkcnt_t s = v; return s == v; } /* Now define the internal interfaces. */ extern int __stat (const char *__file, struct stat *__buf); extern int __stat64 (const char *__file, struct stat64 *__buf); extern int __fstat (int __fd, struct stat *__buf); extern int __fstat64 (int __fd, struct stat64 *__buf); extern int __lstat (const char *__file, struct stat *__buf); extern int __lstat64 (const char *__file, struct stat64 *__buf); extern int __fstatat (int dirfd, const char *pathname, struct stat *buf, int flags); extern int __fstatat64 (int dirfd, const char *pathname, struct stat64 *buf, int flags); hidden_proto (__stat64) hidden_proto (__fstat64) hidden_proto (__lstat64) hidden_proto (__fstatat64) #define __stat64_time64 __stat64 #define __fstat64_time64 __fstat64 #define __lstat64_time64 __lstat64 #define __fstatat64_time64 __fstatat64 # 65 "../include/sys/stat.h" extern int __chmod (const char *__file, __mode_t __mode); libc_hidden_proto (__chmod) extern int __fchmod (int __fd, __mode_t __mode); libc_hidden_proto (fchmodat) extern __mode_t __umask (__mode_t __mask); extern int __mkdir (const char *__path, __mode_t __mode); libc_hidden_proto (__mkdir) extern int __mknodat (int fd, const char *path, mode_t mode, dev_t dev); libc_hidden_proto (__mknodat); extern int __mknod (const char *__path, __mode_t __mode, __dev_t __dev); libc_hidden_proto (__mknod); extern int __xmknod (int __ver, const char *__path, __mode_t __mode, __dev_t *__dev); extern int __xmknodat (int __ver, int __fd, const char *__path, __mode_t __mode, __dev_t *__dev); int __fxstat (int __ver, int __fildes, struct stat *__stat_buf); int __xstat (int __ver, const char *__filename, struct stat *__stat_buf); int __lxstat (int __ver, const char *__filename, struct stat *__stat_buf); int __fxstatat (int __ver, int __fildes, const char *__filename, struct stat *__stat_buf, int __flag); int __fxstat64 (int ver, int __fildes, struct stat64 *__stat_buf); int __xstat64 (int ver, const char *__filename, struct stat64 *__stat_buf); int __lxstat64 (int ver, const char *__filename, struct stat64 *__stat_buf); int __fxstatat64 (int ver, int __fildes, const char *__filename, struct stat64 *__stat_buf, int __flag); # 20 "../include/stdlib.h" 2 # 1 "../include/rtld-malloc.h" 1 /* Redirection of malloc inside the dynamic linker. Copyright (C) 2020-2021 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 . */ /* The dynamic linker needs to use its own minimal malloc before libc has been relocated, and the libc malloc afterwards. The active malloc implementation is reached via the __rtld_* function pointers declared below. They are initialized to the minimal malloc by __rtld_malloc_init_stubs, and set to the final implementation by __rtld_malloc_init_real. */ #define _RTLD_MALLOC_H # 80 "../include/rtld-malloc.h" /* This allows static/non-rtld builds to get a pointer to the functions, in the same way that is required inside rtld. */ #define __rtld_calloc (&calloc) #define __rtld_free (&free) #define __rtld_malloc (&malloc) #define __rtld_realloc (&realloc) # 22 "../include/stdlib.h" 2 extern __typeof (strtol_l) __strtol_l; extern __typeof (strtoul_l) __strtoul_l; extern __typeof (strtoll_l) __strtoll_l; extern __typeof (strtoull_l) __strtoull_l; extern __typeof (strtod_l) __strtod_l; extern __typeof (strtof_l) __strtof_l; extern __typeof (strtold_l) __strtold_l; libc_hidden_proto (__strtol_l) libc_hidden_proto (__strtoul_l) libc_hidden_proto (__strtoll_l) libc_hidden_proto (__strtoull_l) libc_hidden_proto (__strtod_l) libc_hidden_proto (__strtof_l) libc_hidden_proto (__strtold_l) libc_hidden_proto (exit) libc_hidden_proto (abort) libc_hidden_proto (getenv) extern __typeof (secure_getenv) __libc_secure_getenv; libc_hidden_proto (__libc_secure_getenv) libc_hidden_proto (bsearch) libc_hidden_proto (qsort) extern __typeof (qsort_r) __qsort_r; libc_hidden_proto (__qsort_r) libc_hidden_proto (lrand48_r) libc_hidden_proto (wctomb) extern long int __random (void) attribute_hidden; extern void __srandom (unsigned int __seed); extern char *__initstate (unsigned int __seed, char *__statebuf, size_t __statelen); extern char *__setstate (char *__statebuf); extern int __random_r (struct random_data *__buf, int32_t *__result) attribute_hidden; extern int __srandom_r (unsigned int __seed, struct random_data *__buf) attribute_hidden; extern int __initstate_r (unsigned int __seed, char *__statebuf, size_t __statelen, struct random_data *__buf) attribute_hidden; extern int __setstate_r (char *__statebuf, struct random_data *__buf) attribute_hidden; extern int __rand_r (unsigned int *__seed); extern int __erand48_r (unsigned short int __xsubi[3], struct drand48_data *__buffer, double *__result) attribute_hidden; extern int __nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__buffer, long int *__result) attribute_hidden; extern int __jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__buffer, long int *__result) attribute_hidden; extern int __srand48_r (long int __seedval, struct drand48_data *__buffer) attribute_hidden; extern int __seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) attribute_hidden; extern int __lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) attribute_hidden; /* Internal function to compute next state of the generator. */ extern int __drand48_iterate (unsigned short int __xsubi[3], struct drand48_data *__buffer) attribute_hidden; /* Global state for non-reentrant functions. Defined in drand48-iter.c. */ extern struct drand48_data __libc_drand48_data attribute_hidden; extern int __setenv (const char *__name, const char *__value, int __replace) attribute_hidden; extern int __unsetenv (const char *__name) attribute_hidden; extern int __clearenv (void) attribute_hidden; extern char *__mktemp (char *__template) __THROW __nonnull ((1)); libc_hidden_proto (__mktemp) extern char *__canonicalize_file_name (const char *__name); extern char *__realpath (const char *__name, char *__resolved); libc_hidden_proto (__realpath) extern int __ptsname_r (int __fd, char *__buf, size_t __buflen) attribute_hidden; extern int __ptsname_internal (int fd, char *buf, size_t buflen, struct stat64 *stp) attribute_hidden; extern int __getpt (void); extern int __posix_openpt (int __oflag) attribute_hidden; extern int __add_to_environ (const char *name, const char *value, const char *combines, int replace) attribute_hidden; extern void _quicksort (void *const pbase, size_t total_elems, size_t size, __compar_d_fn_t cmp, void *arg); extern int __on_exit (void (*__func) (int __status, void *__arg), void *__arg); extern int __cxa_atexit (void (*func) (void *), void *arg, void *d); libc_hidden_proto (__cxa_atexit); extern int __cxa_thread_atexit_impl (void (*func) (void *), void *arg, void *d); extern void __call_tls_dtors (void) __attribute__ ((weak)) ; libc_hidden_proto (__call_tls_dtors) extern void __cxa_finalize (void *d); extern int __posix_memalign (void **memptr, size_t alignment, size_t size); extern void *__libc_memalign (size_t alignment, size_t size) __attribute_malloc__; extern void *__libc_reallocarray (void *__ptr, size_t __nmemb, size_t __size) __THROW __attribute_warn_unused_result__; libc_hidden_proto (__libc_reallocarray) extern int __libc_system (const char *line); extern __typeof (getpt) __getpt; extern __typeof (ptsname_r) __ptsname_r; libc_hidden_proto (__getpt) libc_hidden_proto (__ptsname_r) libc_hidden_proto (grantpt) libc_hidden_proto (unlockpt) extern double __strtod_internal (const char *__restrict __nptr, char **__restrict __endptr, int __group) __THROW __nonnull ((1)) __wur; extern float __strtof_internal (const char *__restrict __nptr, char **__restrict __endptr, int __group) __THROW __nonnull ((1)) __wur; extern long double __strtold_internal (const char *__restrict __nptr, char **__restrict __endptr, int __group) __THROW __nonnull ((1)) __wur; extern long int __strtol_internal (const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __THROW __nonnull ((1)) __wur; extern unsigned long int __strtoul_internal (const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __THROW __nonnull ((1)) __wur; __extension__ extern long long int __strtoll_internal (const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __THROW __nonnull ((1)) __wur; __extension__ extern unsigned long long int __strtoull_internal (const char * __restrict __nptr, char **__restrict __endptr, int __base, int __group) __THROW __nonnull ((1)) __wur; libc_hidden_proto (__strtof_internal) libc_hidden_proto (__strtod_internal) libc_hidden_proto (__strtold_internal) libc_hidden_proto (__strtol_internal) libc_hidden_proto (__strtoll_internal) libc_hidden_proto (__strtoul_internal) libc_hidden_proto (__strtoull_internal) extern double ____strtod_l_internal (const char *__restrict __nptr, char **__restrict __endptr, int __group, locale_t __loc); extern float ____strtof_l_internal (const char *__restrict __nptr, char **__restrict __endptr, int __group, locale_t __loc); extern long double ____strtold_l_internal (const char *__restrict __nptr, char **__restrict __endptr, int __group, locale_t __loc); extern long int ____strtol_l_internal (const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group, locale_t __loc); extern unsigned long int ____strtoul_l_internal (const char * __restrict __nptr, char **__restrict __endptr, int __base, int __group, locale_t __loc); __extension__ extern long long int ____strtoll_l_internal (const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group, locale_t __loc); __extension__ extern unsigned long long int ____strtoull_l_internal (const char * __restrict __nptr, char ** __restrict __endptr, int __base, int __group, locale_t __loc); libc_hidden_proto (____strtof_l_internal) libc_hidden_proto (____strtod_l_internal) libc_hidden_proto (____strtold_l_internal) libc_hidden_proto (____strtol_l_internal) libc_hidden_proto (____strtoll_l_internal) libc_hidden_proto (____strtoul_l_internal) libc_hidden_proto (____strtoull_l_internal) libc_hidden_proto (strtof) libc_hidden_proto (strtod) libc_hidden_proto (strtold) libc_hidden_proto (strtol) libc_hidden_proto (strtoll) libc_hidden_proto (strtoul) libc_hidden_proto (strtoull) libc_hidden_proto (atoi) extern float __strtof_nan (const char *, char **, char); extern double __strtod_nan (const char *, char **, char); extern long double __strtold_nan (const char *, char **, char); extern float __wcstof_nan (const wchar_t *, wchar_t **, wchar_t); extern double __wcstod_nan (const wchar_t *, wchar_t **, wchar_t); extern long double __wcstold_nan (const wchar_t *, wchar_t **, wchar_t); libc_hidden_proto (__strtof_nan) libc_hidden_proto (__strtod_nan) libc_hidden_proto (__strtold_nan) libc_hidden_proto (__wcstof_nan) libc_hidden_proto (__wcstod_nan) libc_hidden_proto (__wcstold_nan) /* Enable _FloatN bits as needed. */ # 276 "../include/stdlib.h" extern char *__ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign); extern char *__fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign); extern char *__gcvt (double __value, int __ndigit, char *__buf); extern int __ecvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len); libc_hidden_proto (__ecvt_r) extern int __fcvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len); libc_hidden_proto (__fcvt_r) extern char *__qecvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign); extern char *__qfcvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign); extern char *__qgcvt (long double __value, int __ndigit, char *__buf); extern int __qecvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len); libc_hidden_proto (__qecvt_r) extern int __qfcvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len); libc_hidden_proto (__qfcvt_r) #undef MB_CUR_MAX #define MB_CUR_MAX (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX)) struct abort_msg_s { unsigned int size; char msg[0]; }; extern struct abort_msg_s *__abort_msg; libc_hidden_proto (__abort_msg) # 28 "../sysdeps/s390/nptl/tls.h" 2 # 1 "../include/list.h" 1 /* Copyright (C) 2002-2021 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 . */ #define _LIST_H 1 /* Internal: doubly linked lists. */ /* The definitions of this file are adopted from those which can be found in the Linux kernel headers to enable people familiar with the latter find their way in these sources as well. */ # 1 "../include/list_t.h" 1 /* Copyright (C) 2002-2021 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 . */ #define _LIST_T_H 1 /* Internal: doubly linked lists. */ /* Basic type for the double-link list. */ typedef struct list_head { struct list_head *next; struct list_head *prev; } list_t; # 28 "../include/list.h" 2 # 1 "../include/atomic.h" 1 /* Internal macros for atomic operations for GNU C Library. Copyright (C) 2002-2021 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 . */ #define _ATOMIC_H 1 /* This header defines three types of macros: - atomic arithmetic and logic operation on memory. They all have the prefix "atomic_". - conditionally atomic operations of the same kinds. These always behave identical but can be faster when atomicity is not really needed since only one thread has access to the memory location. In that case the code is slower in the multi-thread case. The interfaces have the prefix "catomic_". - support functions like barriers. They also have the prefix "atomic_". Architectures must provide a few lowlevel macros (the compare and exchange definitions). All others are optional. They should only be provided if the architecture has specific support for the operation. As macros are usually heavily nested and often use local variables to make sure side-effects are evaluated properly, use for macro local variables a per-macro unique prefix. This file uses __atgN_ prefix where N is different in each macro. */ # 1 "../sysdeps/s390/atomic-machine.h" 1 /* Copyright (C) 2003-2021 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 . */ # 1 "../include/stdint.h" 1 # 19 "../sysdeps/s390/atomic-machine.h" 2 typedef int8_t atomic8_t; typedef uint8_t uatomic8_t; typedef int_fast8_t atomic_fast8_t; typedef uint_fast8_t uatomic_fast8_t; typedef int16_t atomic16_t; typedef uint16_t uatomic16_t; typedef int_fast16_t atomic_fast16_t; typedef uint_fast16_t uatomic_fast16_t; typedef int32_t atomic32_t; typedef uint32_t uatomic32_t; typedef int_fast32_t atomic_fast32_t; typedef uint_fast32_t uatomic_fast32_t; typedef int64_t atomic64_t; typedef uint64_t uatomic64_t; typedef int_fast64_t atomic_fast64_t; typedef uint_fast64_t uatomic_fast64_t; typedef intptr_t atomicptr_t; typedef uintptr_t uatomicptr_t; typedef intmax_t atomic_max_t; typedef uintmax_t uatomic_max_t; /* Activate all C11 atomic builtins. Note: E.g. in nptl/pthread_key_delete.c if compiled with GCCs 6 and before, an extra stack-frame is generated and the old value is stored on stack before cs instruction but it never loads this value from stack. An unreleased GCC 7 omit those stack operations. E.g. in nptl/pthread_once.c the condition code of cs instruction is evaluated by a sequence of ipm, sra, compare and jump instructions instead of one conditional jump instruction. This also occurs with an unreleased GCC 7. The atomic_fetch_abc_def C11 builtins are now using load-and-abc instructions on z196 zarch and higher cpus instead of a loop with compare-and-swap instruction. */ #define USE_ATOMIC_COMPILER_BUILTINS 1 #define __HAVE_64B_ATOMICS 1 #define ATOMIC_EXCHANGE_USES_CAS 1 /* Implement some of the non-C11 atomic macros from include/atomic.h with help of the C11 atomic builtins. The other non-C11 atomic macros are using the macros defined here. */ /* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL. Return the old *MEM value. */ #define atomic_compare_and_exchange_val_acq(mem,newval,oldval) ({ __atomic_check_size((mem)); typeof ((__typeof (*(mem))) *(mem)) __atg1_oldval = (oldval); __atomic_compare_exchange_n (mem, (void *) &__atg1_oldval, newval, 1, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED); __atg1_oldval; }) #define atomic_compare_and_exchange_val_rel(mem,newval,oldval) ({ __atomic_check_size((mem)); typeof ((__typeof (*(mem))) *(mem)) __atg1_2_oldval = (oldval); __atomic_compare_exchange_n (mem, (void *) &__atg1_2_oldval, newval, 1, __ATOMIC_RELEASE, __ATOMIC_RELAXED); __atg1_2_oldval; }) /* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL. Return zero if *MEM was changed or non-zero if no exchange happened. */ #define atomic_compare_and_exchange_bool_acq(mem,newval,oldval) ({ __atomic_check_size((mem)); typeof ((__typeof (*(mem))) *(mem)) __atg2_oldval = (oldval); !__atomic_compare_exchange_n (mem, (void *) &__atg2_oldval, newval, 1, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED); }) #define catomic_compare_and_exchange_bool_acq(mem,newval,oldval) atomic_compare_and_exchange_bool_acq (mem, newval, oldval) /* Store NEWVALUE in *MEM and return the old value. */ #define atomic_exchange_acq(mem,newvalue) ({ __atomic_check_size((mem)); __atomic_exchange_n (mem, newvalue, __ATOMIC_ACQUIRE); }) #define atomic_exchange_rel(mem,newvalue) ({ __atomic_check_size((mem)); __atomic_exchange_n (mem, newvalue, __ATOMIC_RELEASE); }) /* Add VALUE to *MEM and return the old value of *MEM. */ /* The gcc builtin uses load-and-add instruction on z196 zarch and higher cpus instead of a loop with compare-and-swap instruction. */ #define atomic_exchange_and_add_acq(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_add ((mem), (operand), __ATOMIC_ACQUIRE); }) #define atomic_exchange_and_add_rel(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_add ((mem), (operand), __ATOMIC_RELEASE); }) #define catomic_exchange_and_add(mem,value) atomic_exchange_and_add (mem, value) /* Atomically *mem |= mask and return the old value of *mem. */ /* The gcc builtin uses load-and-or instruction on z196 zarch and higher cpus instead of a loop with compare-and-swap instruction. */ #define atomic_or_val(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_or ((mem), (operand), __ATOMIC_ACQUIRE); }) /* Atomically *mem |= mask. */ #define atomic_or(mem,mask) do { atomic_or_val (mem, mask); } while (0) #define catomic_or(mem,mask) atomic_or (mem, mask) /* Atomically *mem |= 1 << bit and return true if the bit was set in old value of *mem. */ /* The load-and-or instruction is used on z196 zarch and higher cpus instead of a loop with compare-and-swap instruction. */ #define atomic_bit_test_set(mem,bit) ({ __typeof (*(mem)) __atg14_old; __typeof (mem) __atg14_memp = (mem); __typeof (*(mem)) __atg14_mask = ((__typeof (*(mem))) 1 << (bit)); __atg14_old = atomic_or_val (__atg14_memp, __atg14_mask); __atg14_old & __atg14_mask; }) /* Atomically *mem &= mask and return the old value of *mem. */ /* The gcc builtin uses load-and-and instruction on z196 zarch and higher cpus instead of a loop with compare-and-swap instruction. */ #define atomic_and_val(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_and ((mem), (operand), __ATOMIC_ACQUIRE); }) /* Atomically *mem &= mask. */ #define atomic_and(mem,mask) do { atomic_and_val (mem, mask); } while (0) #define catomic_and(mem,mask) atomic_and(mem, mask) # 50 "../include/atomic.h" 2 /* Wrapper macros to call pre_NN_post (mem, ...) where NN is the bit width of *MEM. The calling macro puts parens around MEM and following args. */ #define __atomic_val_bysize(pre,post,mem,...) ({ __typeof ((__typeof (*(mem))) *(mem)) __atg1_result; if (sizeof (*mem) == 1) __atg1_result = pre ##_8_ ##post (mem, __VA_ARGS__); else if (sizeof (*mem) == 2) __atg1_result = pre ##_16_ ##post (mem, __VA_ARGS__); else if (sizeof (*mem) == 4) __atg1_result = pre ##_32_ ##post (mem, __VA_ARGS__); else if (sizeof (*mem) == 8) __atg1_result = pre ##_64_ ##post (mem, __VA_ARGS__); else abort (); __atg1_result; }) # 69 "../include/atomic.h" #define __atomic_bool_bysize(pre,post,mem,...) ({ int __atg2_result; if (sizeof (*mem) == 1) __atg2_result = pre ##_8_ ##post (mem, __VA_ARGS__); else if (sizeof (*mem) == 2) __atg2_result = pre ##_16_ ##post (mem, __VA_ARGS__); else if (sizeof (*mem) == 4) __atg2_result = pre ##_32_ ##post (mem, __VA_ARGS__); else if (sizeof (*mem) == 8) __atg2_result = pre ##_64_ ##post (mem, __VA_ARGS__); else abort (); __atg2_result; }) # 84 "../include/atomic.h" /* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL. Return the old *MEM value. */ #define catomic_compare_and_exchange_val_acq(mem,newval,oldval) atomic_compare_and_exchange_val_acq (mem, newval, oldval) #define catomic_compare_and_exchange_val_rel(mem,newval,oldval) atomic_compare_and_exchange_val_rel (mem, newval, oldval) /* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL. Return zero if *MEM was changed or non-zero if no exchange happened. */ # 142 "../include/atomic.h" # 159 "../include/atomic.h" /* Store NEWVALUE in *MEM and return the old value. */ # 176 "../include/atomic.h" /* Add VALUE to *MEM and return the old value of *MEM. */ # 204 "../include/atomic.h" #define atomic_exchange_and_add(mem,value) atomic_exchange_and_add_acq(mem, value) # 231 "../include/atomic.h" #define atomic_max(mem,value) do { __typeof (*(mem)) __atg8_oldval; __typeof (mem) __atg8_memp = (mem); __typeof (*(mem)) __atg8_value = (value); do { __atg8_oldval = *__atg8_memp; if (__atg8_oldval >= __atg8_value) break; } while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__atg8_memp, __atg8_value, __atg8_oldval), 0)); } while (0) # 247 "../include/atomic.h" #define catomic_max(mem,value) do { __typeof (*(mem)) __atg9_oldv; __typeof (mem) __atg9_memp = (mem); __typeof (*(mem)) __atg9_value = (value); do { __atg9_oldv = *__atg9_memp; if (__atg9_oldv >= __atg9_value) break; } while (__builtin_expect (catomic_compare_and_exchange_bool_acq (__atg9_memp, __atg9_value, __atg9_oldv), 0)); } while (0) # 265 "../include/atomic.h" #define atomic_min(mem,value) do { __typeof (*(mem)) __atg10_oldval; __typeof (mem) __atg10_memp = (mem); __typeof (*(mem)) __atg10_value = (value); do { __atg10_oldval = *__atg10_memp; if (__atg10_oldval <= __atg10_value) break; } while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__atg10_memp, __atg10_value, __atg10_oldval), 0)); } while (0) # 283 "../include/atomic.h" #define atomic_add(mem,value) (void) atomic_exchange_and_add ((mem), (value)) #define catomic_add(mem,value) (void) catomic_exchange_and_add ((mem), (value)) #define atomic_increment(mem) atomic_add ((mem), 1) #define catomic_increment(mem) catomic_add ((mem), 1) #define atomic_increment_val(mem) (atomic_exchange_and_add ((mem), 1) + 1) #define catomic_increment_val(mem) (catomic_exchange_and_add ((mem), 1) + 1) /* Add one to *MEM and return true iff it's now zero. */ #define atomic_increment_and_test(mem) (atomic_exchange_and_add ((mem), 1) + 1 == 0) #define atomic_decrement(mem) atomic_add ((mem), -1) #define catomic_decrement(mem) catomic_add ((mem), -1) #define atomic_decrement_val(mem) (atomic_exchange_and_add ((mem), -1) - 1) #define catomic_decrement_val(mem) (catomic_exchange_and_add ((mem), -1) - 1) /* Subtract 1 from *MEM and return true iff it's now zero. */ #define atomic_decrement_and_test(mem) (atomic_exchange_and_add ((mem), -1) == 1) /* Decrement *MEM if it is > 0, and return the old value. */ #define atomic_decrement_if_positive(mem) ({ __typeof (*(mem)) __atg11_oldval; __typeof (mem) __atg11_memp = (mem); do { __atg11_oldval = *__atg11_memp; if (__glibc_unlikely (__atg11_oldval <= 0)) break; } while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__atg11_memp, __atg11_oldval - 1, __atg11_oldval), 0)); __atg11_oldval; }) # 368 "../include/atomic.h" #define atomic_add_negative(mem,value) ({ __typeof (value) __atg12_value = (value); atomic_exchange_and_add (mem, __atg12_value) < -__atg12_value; }) #define atomic_add_zero(mem,value) ({ __typeof (value) __atg13_value = (value); atomic_exchange_and_add (mem, __atg13_value) == -__atg13_value; }) #define atomic_bit_set(mem,bit) (void) atomic_bit_test_set(mem, bit) # 406 "../include/atomic.h" /* Atomically *mem &= mask. */ # 423 "../include/atomic.h" # 439 "../include/atomic.h" /* Atomically *mem &= mask and return the old value of *mem. */ # 456 "../include/atomic.h" /* Atomically *mem |= mask and return the old value of *mem. */ # 473 "../include/atomic.h" # 489 "../include/atomic.h" /* Atomically *mem |= mask and return the old value of *mem. */ # 506 "../include/atomic.h" #define atomic_full_barrier() __asm ("" ::: "memory") #define atomic_read_barrier() atomic_full_barrier () #define atomic_write_barrier() atomic_full_barrier () #define atomic_forced_read(x) ({ __typeof (x) __x; __asm ("" : "=r" (__x) : "0" (x)); __x; }) /* This is equal to 1 iff the architecture supports 64b atomic operations. */ /* The following functions are a subset of the atomic operations provided by C11. Usually, a function named atomic_OP_MO(args) is equivalent to C11's atomic_OP_explicit(args, memory_order_MO); exceptions noted below. */ /* Each arch can request to use compiler built-ins for C11 atomics. If it does, all atomics will be based on these. */ /* We require 32b atomic operations; some archs also support 64b atomic operations. */ void __atomic_link_error (void); #define __atomic_check_size(mem) if ((sizeof (*mem) != 4) && (sizeof (*mem) != 8)) __atomic_link_error (); /* We additionally provide 8b and 16b atomic loads and stores; we do not yet need other atomic operations of such sizes, and restricting the support to loads and stores makes this easier for archs that do not have native support for atomic operations to less-than-word-sized data. */ #define __atomic_check_size_ls(mem) if ((sizeof (*mem) != 1) && (sizeof (*mem) != 2) && (sizeof (*mem) != 4) && (sizeof (*mem) != 8)) __atomic_link_error (); #define atomic_thread_fence_acquire() __atomic_thread_fence (__ATOMIC_ACQUIRE) #define atomic_thread_fence_release() __atomic_thread_fence (__ATOMIC_RELEASE) #define atomic_thread_fence_seq_cst() __atomic_thread_fence (__ATOMIC_SEQ_CST) #define atomic_load_relaxed(mem) ({ __atomic_check_size_ls((mem)); __atomic_load_n ((mem), __ATOMIC_RELAXED); }) #define atomic_load_acquire(mem) ({ __atomic_check_size_ls((mem)); __atomic_load_n ((mem), __ATOMIC_ACQUIRE); }) #define atomic_store_relaxed(mem,val) do { __atomic_check_size_ls((mem)); __atomic_store_n ((mem), (val), __ATOMIC_RELAXED); } while (0) #define atomic_store_release(mem,val) do { __atomic_check_size_ls((mem)); __atomic_store_n ((mem), (val), __ATOMIC_RELEASE); } while (0) /* On failure, this CAS has memory_order_relaxed semantics. */ #define atomic_compare_exchange_weak_relaxed(mem,expected,desired) ({ __atomic_check_size((mem)); __atomic_compare_exchange_n ((mem), (expected), (desired), 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); }) #define atomic_compare_exchange_weak_acquire(mem,expected,desired) ({ __atomic_check_size((mem)); __atomic_compare_exchange_n ((mem), (expected), (desired), 1, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED); }) #define atomic_compare_exchange_weak_release(mem,expected,desired) ({ __atomic_check_size((mem)); __atomic_compare_exchange_n ((mem), (expected), (desired), 1, __ATOMIC_RELEASE, __ATOMIC_RELAXED); }) #define atomic_exchange_relaxed(mem,desired) ({ __atomic_check_size((mem)); __atomic_exchange_n ((mem), (desired), __ATOMIC_RELAXED); }) #define atomic_exchange_acquire(mem,desired) ({ __atomic_check_size((mem)); __atomic_exchange_n ((mem), (desired), __ATOMIC_ACQUIRE); }) #define atomic_exchange_release(mem,desired) ({ __atomic_check_size((mem)); __atomic_exchange_n ((mem), (desired), __ATOMIC_RELEASE); }) #define atomic_fetch_add_relaxed(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_add ((mem), (operand), __ATOMIC_RELAXED); }) #define atomic_fetch_add_acquire(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_add ((mem), (operand), __ATOMIC_ACQUIRE); }) #define atomic_fetch_add_release(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_add ((mem), (operand), __ATOMIC_RELEASE); }) #define atomic_fetch_add_acq_rel(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_add ((mem), (operand), __ATOMIC_ACQ_REL); }) #define atomic_fetch_and_relaxed(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_and ((mem), (operand), __ATOMIC_RELAXED); }) #define atomic_fetch_and_acquire(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_and ((mem), (operand), __ATOMIC_ACQUIRE); }) #define atomic_fetch_and_release(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_and ((mem), (operand), __ATOMIC_RELEASE); }) #define atomic_fetch_or_relaxed(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_or ((mem), (operand), __ATOMIC_RELAXED); }) #define atomic_fetch_or_acquire(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_or ((mem), (operand), __ATOMIC_ACQUIRE); }) #define atomic_fetch_or_release(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_or ((mem), (operand), __ATOMIC_RELEASE); }) #define atomic_fetch_xor_release(mem,operand) ({ __atomic_check_size((mem)); __atomic_fetch_xor ((mem), (operand), __ATOMIC_RELEASE); }) # 813 "../include/atomic.h" /* This operation does not affect synchronization semantics but can be used in the body of a spin loop to potentially improve its efficiency. */ #define atomic_spin_nop() do { } while (0) /* ATOMIC_EXCHANGE_USES_CAS is non-zero if atomic_exchange operations are implemented based on a CAS loop; otherwise, this is zero and we assume that the atomic_exchange operations could provide better performance than a CAS loop. */ # 29 "../include/list.h" 2 /* Define a variable with the head and tail of the list. */ #define LIST_HEAD(name) list_t name = { &(name), &(name) } /* Initialize a new list head. */ #define INIT_LIST_HEAD(ptr) (ptr)->next = (ptr)->prev = (ptr) /* Add new element at the head of the list. */ static inline void list_add (list_t *newp, list_t *head) { newp->next = head->next; newp->prev = head; head->next->prev = newp; atomic_write_barrier (); head->next = newp; } /* Remove element from list. */ static inline void list_del (list_t *elem) { elem->next->prev = elem->prev; elem->prev->next = elem->next; } /* Join two lists. */ static inline void list_splice (list_t *add, list_t *head) { /* Do nothing if the list which gets added is empty. */ if (add != add->next) { add->next->prev = head; add->prev->next = head->next; head->next->prev = add->prev; head->next = add->next; } } /* Get typed element from list at a given position. */ #define list_entry(ptr,type,member) ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member))) /* Iterate forward over the elements of the list. */ #define list_for_each(pos,head) for (pos = (head)->next; pos != (head); pos = pos->next) /* Iterate forward over the elements of the list. */ #define list_for_each_prev(pos,head) for (pos = (head)->prev; pos != (head); pos = pos->prev) /* Iterate backwards over the elements list. The list elements can be removed from the list while doing this. */ #define list_for_each_prev_safe(pos,p,head) for (pos = (head)->prev, p = pos->prev; pos != (head); pos = p, p = pos->prev) # 29 "../sysdeps/s390/nptl/tls.h" 2 # 1 "../sysdeps/unix/sysv/linux/s390/kernel-features.h" 1 /* Set flags signalling availability of kernel features based on given kernel version number. S/390 version. Copyright (C) 1999-2021 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 . */ /* Direct socketcalls available with kernel 4.3. */ # 30 "../sysdeps/unix/sysv/linux/s390/kernel-features.h" #undef __ASSUME_ACCEPT_SYSCALL #undef __ASSUME_ACCEPT4_SYSCALL #undef __ASSUME_RECVMMSG_SYSCALL #undef __ASSUME_SENDMMSG_SYSCALL #undef __ASSUME_SENDMSG_SYSCALL #undef __ASSUME_RECVMSG_SYSCALL #undef __ASSUME_CONNECT_SYSCALL #undef __ASSUME_RECVFROM_SYSCALL #undef __ASSUME_SENDTO_SYSCALL #undef __ASSUME_GETSOCKOPT_SYSCALL #undef __ASSUME_SETSOCKOPT_SYSCALL /* s390 only supports ipc syscall before 5.1. */ #undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS #undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 #undef __ASSUME_CLONE_DEFAULT #define __ASSUME_CLONE_BACKWARDS2 # 30 "../sysdeps/s390/nptl/tls.h" 2 # 1 "../sysdeps/generic/dl-dtv.h" 1 /* Generic declarations for DTV-based TLS handling in the dynamic linker. Copyright (C) 2002-2021 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 . */ #define _DL_DTV_H struct dtv_pointer { void *val; /* Pointer to data, or TLS_DTV_UNALLOCATED. */ void *to_free; /* Unaligned pointer, for deallocation. */ }; /* Type for the dtv. */ typedef union dtv { size_t counter; struct dtv_pointer pointer; } dtv_t; /* Value used for dtv entries for which the allocation is delayed. */ #define TLS_DTV_UNALLOCATED ((void *) -1l) # 31 "../sysdeps/s390/nptl/tls.h" 2 typedef struct { void *tcb; /* Pointer to the TCB. Not necessary the thread descriptor used by libpthread. */ dtv_t *dtv; void *self; /* Pointer to the thread descriptor. */ int multiple_threads; uintptr_t sysinfo; uintptr_t stack_guard; int gscope_flag; int __glibc_reserved1; /* GCC split stack support. */ void *__private_ss; } tcbhead_t; /* Alignment requirement for the stack. For IA-32 this is governed by the SSE memory functions. */ #define STACK_ALIGN 16 /* Get system call information. */ # 1 "../sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h" 1 /* Assembler macros for 64 bit S/390. Copyright (C) 2001-2021 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 . */ # 63 "../sysdeps/s390/nptl/tls.h" 2 /* This is the size of the initial TCB. Can't be just sizeof (tcbhead_t), because NPTL getpid, __libc_alloca_cutoff etc. need (almost) the whole struct pthread even when not linked with -lpthread. */ #define TLS_INIT_TCB_SIZE sizeof (struct pthread) /* Alignment requirements for the initial TCB. */ #define TLS_INIT_TCB_ALIGN __alignof__ (struct pthread) /* This is the size of the TCB. */ #define TLS_TCB_SIZE sizeof (struct pthread) /* Alignment requirements for the TCB. */ #define TLS_TCB_ALIGN __alignof__ (struct pthread) /* The TCB can have any size and the memory following the address the thread pointer points to is unspecified. Allocate the TCB there. */ #define TLS_TCB_AT_TP 1 #define TLS_DTV_AT_TP 0 /* Get the thread descriptor definition. */ # 1 "../nptl/descr.h" 1 /* Copyright (C) 2002-2021 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 . */ #define _DESCR_H 1 # 1 "../include/limits.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types */ # 116 "../include/limits.h" /* Get the compiler's limits.h, which defines almost all the ISO constants. We put this #include_next outside the double inclusion check because it should be possible to include this file more than once and still get the definitions from gcc's header. */ /* The files in some gcc versions don't define LLONG_MIN, LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for ages are available. */ /* The integer width macros are not defined by GCC's before GCC 7, or if _GNU_SOURCE rather than __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature. */ /* The macros for _Bool are not defined by GCC's before GCC 11, or if _GNU_SOURCE is defined rather than enabling C2x support with -std. */ /* POSIX adds things to . */ # 1 "../include/bits/posix1_lim.h" 1 # 196 "../include/limits.h" 2 # 1 "../include/bits/posix2_lim.h" 1 # 200 "../include/limits.h" 2 # 22 "../nptl/descr.h" 2 # 1 "../include/sched.h" 1 # 1 "../posix/sched.h" 1 /* Definitions for POSIX 1003.1b-1993 (aka POSIX.4) scheduling interface. Copyright (C) 1996-2021 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 . */ #define _SCHED_H 1 /* Get type definitions. */ # 1 "../include/bits/types.h" 1 # 26 "../posix/sched.h" 2 #define __need_size_t #define __need_NULL # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 30 "../posix/sched.h" 2 # 1 "../include/bits/types/time_t.h" 1 # 32 "../posix/sched.h" 2 # 1 "../include/bits/types/struct_timespec.h" 1 # 33 "../posix/sched.h" 2 /* Get system specific constant and data structure definitions. */ # 1 "../sysdeps/unix/sysv/linux/bits/sched.h" 1 /* Definitions of constants and data structure for POSIX 1003.1b-1993 scheduling interface. Copyright (C) 1996-2021 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 . */ #define _BITS_SCHED_H 1 /* Scheduling algorithms. */ #define SCHED_OTHER 0 #define SCHED_FIFO 1 #define SCHED_RR 2 #define SCHED_BATCH 3 #define SCHED_ISO 4 #define SCHED_IDLE 5 #define SCHED_DEADLINE 6 #define SCHED_RESET_ON_FORK 0x40000000 /* Cloning flags. */ #define CSIGNAL 0x000000ff #define CLONE_VM 0x00000100 #define CLONE_FS 0x00000200 #define CLONE_FILES 0x00000400 #define CLONE_SIGHAND 0x00000800 #define CLONE_PIDFD 0x00001000 #define CLONE_PTRACE 0x00002000 #define CLONE_VFORK 0x00004000 #define CLONE_PARENT 0x00008000 #define CLONE_THREAD 0x00010000 #define CLONE_NEWNS 0x00020000 #define CLONE_SYSVSEM 0x00040000 #define CLONE_SETTLS 0x00080000 #define CLONE_PARENT_SETTID 0x00100000 #define CLONE_CHILD_CLEARTID 0x00200000 #define CLONE_DETACHED 0x00400000 #define CLONE_UNTRACED 0x00800000 #define CLONE_CHILD_SETTID 0x01000000 #define CLONE_NEWCGROUP 0x02000000 #define CLONE_NEWUTS 0x04000000 #define CLONE_NEWIPC 0x08000000 #define CLONE_NEWUSER 0x10000000 #define CLONE_NEWPID 0x20000000 #define CLONE_NEWNET 0x40000000 #define CLONE_IO 0x80000000 # 1 "../bits/types/struct_sched_param.h" 1 /* Sched parameter structure. Generic version. Copyright (C) 1996-2021 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 . */ #define _BITS_TYPES_STRUCT_SCHED_PARAM 1 /* Data structure to describe a process' schedulability. */ struct sched_param { int sched_priority; }; # 77 "../sysdeps/unix/sysv/linux/bits/sched.h" 2 __BEGIN_DECLS /* Clone current process. */ extern int clone (int (*__fn) (void *__arg), void *__child_stack, int __flags, void *__arg, ...) __THROW; /* Unshare the specified resources. */ extern int unshare (int __flags) __THROW; /* Get index of currently used CPU. */ extern int sched_getcpu (void) __THROW; /* Get currently used CPU and NUMA node. */ extern int getcpu (unsigned int *, unsigned int *) __THROW; /* Switch process to namespace of type NSTYPE indicated by FD. */ extern int setns (int __fd, int __nstype) __THROW; __END_DECLS # 44 "../posix/sched.h" 2 # 1 "../include/bits/cpu-set.h" 1 # 1 "../posix/bits/cpu-set.h" 1 /* Definition of the cpu_set_t structure used by the POSIX 1003.1b-1993 scheduling interface. Copyright (C) 1996-2021 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 . */ #define _BITS_CPU_SET_H 1 /* Size definition for CPU sets. */ #define __CPU_SETSIZE 1024 #define __NCPUBITS (8 * sizeof (__cpu_mask)) /* Type for array elements in 'cpu_set_t'. */ typedef __CPU_MASK_TYPE __cpu_mask; /* Basic access functions. */ #define __CPUELT(cpu) ((cpu) / __NCPUBITS) #define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS)) /* Data structure to describe CPU mask. */ typedef struct { __cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS]; } cpu_set_t; /* Access functions for CPU masks. */ #define __CPU_ZERO_S(setsize,cpusetp) do __builtin_memset (cpusetp, '\0', setsize); while (0) # 58 "../posix/bits/cpu-set.h" #define __CPU_SET_S(cpu,setsize,cpusetp) (__extension__ ({ size_t __cpu = (cpu); __cpu / 8 < (setsize) ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] |= __CPUMASK (__cpu)) : 0; })) #define __CPU_CLR_S(cpu,setsize,cpusetp) (__extension__ ({ size_t __cpu = (cpu); __cpu / 8 < (setsize) ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] &= ~__CPUMASK (__cpu)) : 0; })) #define __CPU_ISSET_S(cpu,setsize,cpusetp) (__extension__ ({ size_t __cpu = (cpu); __cpu / 8 < (setsize) ? ((((const __cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] & __CPUMASK (__cpu))) != 0 : 0; })) #define __CPU_COUNT_S(setsize,cpusetp) __sched_cpucount (setsize, cpusetp) #define __CPU_EQUAL_S(setsize,cpusetp1,cpusetp2) (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0) # 98 "../posix/bits/cpu-set.h" #define __CPU_OP_S(setsize,destset,srcset1,srcset2,op) (__extension__ ({ cpu_set_t *__dest = (destset); const __cpu_mask *__arr1 = (srcset1)->__bits; const __cpu_mask *__arr2 = (srcset2)->__bits; size_t __imax = (setsize) / sizeof (__cpu_mask); size_t __i; for (__i = 0; __i < __imax; ++__i) ((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i]; __dest; })) # 109 "../posix/bits/cpu-set.h" #define __CPU_ALLOC_SIZE(count) ((((count) + __NCPUBITS - 1) / __NCPUBITS) * sizeof (__cpu_mask)) #define __CPU_ALLOC(count) __sched_cpualloc (count) #define __CPU_FREE(cpuset) __sched_cpufree (cpuset) __BEGIN_DECLS extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) __THROW; extern cpu_set_t *__sched_cpualloc (size_t __count) __THROW __wur; extern void __sched_cpufree (cpu_set_t *__set) __THROW; __END_DECLS # 3 "../include/bits/cpu-set.h" 2 int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp); libc_hidden_proto (__sched_cpucount) # 45 "../posix/sched.h" 2 /* Backward compatibility. */ #define sched_priority sched_priority #define __sched_priority sched_priority __BEGIN_DECLS /* Set scheduling parameters for a process. */ extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) __THROW; /* Retrieve scheduling parameters for a particular process. */ extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __THROW; /* Set scheduling algorithm and/or parameters for a process. */ extern int sched_setscheduler (__pid_t __pid, int __policy, const struct sched_param *__param) __THROW; /* Retrieve scheduling algorithm for a particular purpose. */ extern int sched_getscheduler (__pid_t __pid) __THROW; /* Yield the processor. */ extern int sched_yield (void) __THROW; /* Get maximum priority value for a scheduler. */ extern int sched_get_priority_max (int __algorithm) __THROW; /* Get minimum priority value for a scheduler. */ extern int sched_get_priority_min (int __algorithm) __THROW; /* Get the SCHED_RR interval for the named process. */ extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW; # 88 "../posix/sched.h" /* Access macros for `cpu_set'. */ #define CPU_SETSIZE __CPU_SETSIZE #define CPU_SET(cpu,cpusetp) __CPU_SET_S (cpu, sizeof (cpu_set_t), cpusetp) #define CPU_CLR(cpu,cpusetp) __CPU_CLR_S (cpu, sizeof (cpu_set_t), cpusetp) #define CPU_ISSET(cpu,cpusetp) __CPU_ISSET_S (cpu, sizeof (cpu_set_t), cpusetp) #define CPU_ZERO(cpusetp) __CPU_ZERO_S (sizeof (cpu_set_t), cpusetp) #define CPU_COUNT(cpusetp) __CPU_COUNT_S (sizeof (cpu_set_t), cpusetp) #define CPU_SET_S(cpu,setsize,cpusetp) __CPU_SET_S (cpu, setsize, cpusetp) #define CPU_CLR_S(cpu,setsize,cpusetp) __CPU_CLR_S (cpu, setsize, cpusetp) #define CPU_ISSET_S(cpu,setsize,cpusetp) __CPU_ISSET_S (cpu, setsize, cpusetp) #define CPU_ZERO_S(setsize,cpusetp) __CPU_ZERO_S (setsize, cpusetp) #define CPU_COUNT_S(setsize,cpusetp) __CPU_COUNT_S (setsize, cpusetp) #define CPU_EQUAL(cpusetp1,cpusetp2) __CPU_EQUAL_S (sizeof (cpu_set_t), cpusetp1, cpusetp2) #define CPU_EQUAL_S(setsize,cpusetp1,cpusetp2) __CPU_EQUAL_S (setsize, cpusetp1, cpusetp2) #define CPU_AND(destset,srcset1,srcset2) __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, &) #define CPU_OR(destset,srcset1,srcset2) __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, |) #define CPU_XOR(destset,srcset1,srcset2) __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, ^) #define CPU_AND_S(setsize,destset,srcset1,srcset2) __CPU_OP_S (setsize, destset, srcset1, srcset2, &) #define CPU_OR_S(setsize,destset,srcset1,srcset2) __CPU_OP_S (setsize, destset, srcset1, srcset2, |) #define CPU_XOR_S(setsize,destset,srcset1,srcset2) __CPU_OP_S (setsize, destset, srcset1, srcset2, ^) #define CPU_ALLOC_SIZE(count) __CPU_ALLOC_SIZE (count) #define CPU_ALLOC(count) __CPU_ALLOC (count) #define CPU_FREE(cpuset) __CPU_FREE (cpuset) /* Set the CPU affinity for a task */ extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, const cpu_set_t *__cpuset) __THROW; /* Get the CPU affinity for a task */ extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, cpu_set_t *__cpuset) __THROW; __END_DECLS # 3 "../include/sched.h" 2 /* Now define the internal interfaces. */ extern int __sched_setparam (__pid_t __pid, const struct sched_param *__param); libc_hidden_proto (__sched_setparam) extern int __sched_getparam (__pid_t __pid, struct sched_param *__param); libc_hidden_proto (__sched_getparam) extern int __sched_setscheduler (__pid_t __pid, int __policy, const struct sched_param *__param); libc_hidden_proto (__sched_setscheduler) extern int __sched_getscheduler (__pid_t __pid); libc_hidden_proto (__sched_getscheduler) extern int __sched_yield (void); libc_hidden_proto (__sched_yield) extern int __sched_get_priority_max (int __algorithm); libc_hidden_proto (__sched_get_priority_max) extern int __sched_get_priority_min (int __algorithm); libc_hidden_proto (__sched_get_priority_min) extern int __sched_rr_get_interval (__pid_t __pid, struct timespec *__t); /* These are Linux specific. */ extern int __clone (int (*__fn) (void *__arg), void *__child_stack, int __flags, void *__arg, ...); libc_hidden_proto (__clone) extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base, size_t __child_stack_size, int __flags, void *__arg, ...); libc_hidden_proto (__clone2) /* NB: Can't use "__typeof__ (getcpu)" since getcpu is Linux specific and Hurd doesn't have it. */ extern int __getcpu (unsigned int *, unsigned int *); libc_hidden_proto (__getcpu) # 23 "../nptl/descr.h" 2 # 1 "../include/setjmp.h" 1 # 1 "../setjmp/setjmp.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * ISO C99 Standard: 7.13 Nonlocal jumps */ #define _SETJMP_H 1 __BEGIN_DECLS # 1 "../sysdeps/s390/bits/setjmp.h" 1 /* Copyright (C) 2000-2021 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 . */ /* Define the machine-dependent type `jmp_buf'. IBM s390 version. */ #define __S390_SETJMP_H__ # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 28 "../sysdeps/s390/bits/setjmp.h" 2 typedef struct __s390_jmp_buf { /* We save registers 6-15. */ long int __gregs[10]; /* We save fpu registers f8 - f15. */ long __fpregs[8]; } __jmp_buf[1]; # 30 "../setjmp/setjmp.h" 2 # 1 "../include/bits/types/struct___jmp_buf_tag.h" 1 # 1 "../setjmp/bits/types/struct___jmp_buf_tag.h" 1 /* Define struct __jmp_buf_tag. Copyright (C) 1991-2021 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 . */ #define __jmp_buf_tag_defined 1 /* Calling environment, plus possibly a saved signal mask. */ struct __jmp_buf_tag { /* NOTE: The machine-dependent definitions of `__sigsetjmp' assume that a `jmp_buf' begins with a `__jmp_buf' and that `__mask_was_saved' follows it. Do not move these members or add others before it. */ __jmp_buf __jmpbuf; /* Calling environment. */ int __mask_was_saved; /* Saved the signal mask? */ __sigset_t __saved_mask; /* Saved signal mask. */ }; # 2 "../include/bits/types/struct___jmp_buf_tag.h" 2 # 31 "../setjmp/setjmp.h" 2 typedef struct __jmp_buf_tag jmp_buf[1]; /* Store the calling environment in ENV, also saving the signal mask. Return 0. */ extern int setjmp (jmp_buf __env) __THROWNL; /* Store the calling environment in ENV, also saving the signal mask if SAVEMASK is nonzero. Return 0. This is the internal name for `sigsetjmp'. */ extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROWNL; /* Store the calling environment in ENV, not saving the signal mask. Return 0. */ extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROWNL; /* Do not save the signal mask. This is equivalent to the `_setjmp' BSD function. */ #define setjmp(env) _setjmp (env) /* Jump to the environment saved in ENV, making the `setjmp' call there return VAL, or 1 if VAL is 0. */ extern void longjmp (struct __jmp_buf_tag __env[1], int __val) __THROWNL __attribute__ ((__noreturn__)); /* Same. Usually `_longjmp' is used with `_setjmp', which does not save the signal mask. But it is how ENV was saved that determines whether `longjmp' restores the mask; `_longjmp' is just an alias. */ extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) __THROWNL __attribute__ ((__noreturn__)); /* Use the same type for `jmp_buf' and `sigjmp_buf'. The `__mask_was_saved' flag determines whether or not `longjmp' will restore the signal mask. */ typedef struct __jmp_buf_tag sigjmp_buf[1]; /* Store the calling environment in ENV, also saving the signal mask if SAVEMASK is nonzero. Return 0. */ #define sigsetjmp(env,savemask) __sigsetjmp (env, savemask) /* Jump to the environment saved in ENV, making the sigsetjmp call there return VAL, or 1 if VAL is 0. Restore the signal mask if that sigsetjmp call saved it. This is just an alias `longjmp'. */ extern void siglongjmp (sigjmp_buf __env, int __val) __THROWNL __attribute__ ((__noreturn__)); /* Define helper functions to catch unsafe code. */ __END_DECLS # 3 "../include/setjmp.h" 2 /* Now define the internal interfaces. */ /* Internal machine-dependent function to restore context sans signal mask. */ extern void __longjmp (__jmp_buf __env, int __val) __attribute__ ((__noreturn__)) attribute_hidden; extern void ____longjmp_chk (__jmp_buf __env, int __val) __attribute__ ((__noreturn__)) attribute_hidden; /* Internal function to possibly save the current mask of blocked signals in ENV, and always set the flag saying whether or not it was saved. This is used by the machine-dependent definition of `__sigsetjmp'. Always returns zero, for convenience. */ extern int __sigjmp_save (jmp_buf __env, int __savemask); extern void _longjmp_unwind (jmp_buf env, int val); extern void __libc_siglongjmp (sigjmp_buf env, int val) __attribute__ ((noreturn)) attribute_hidden; extern void __libc_longjmp (sigjmp_buf env, int val) __attribute__ ((noreturn)) attribute_hidden; libc_hidden_proto (_setjmp) libc_hidden_proto (__sigsetjmp) /* Check jmp_buf sizes, alignments and offsets. */ # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ # 36 "../include/setjmp.h" 2 # 1 "../sysdeps/unix/sysv/linux/s390/s390-64/jmp_buf-macros.h" 1 #define JMP_BUF_SIZE 280 #define SIGJMP_BUF_SIZE 280 #define JMP_BUF_ALIGN 8 #define SIGJMP_BUF_ALIGN 8 #define MASK_WAS_SAVED_OFFSET 144 #define SAVED_MASK_OFFSET 152 # 37 "../include/setjmp.h" 2 #define SJSTR_HELPER(x) #x #define SJSTR(x) SJSTR_HELPER(x) #define TEST_SIZE(type,size) _Static_assert (sizeof (type) == size, "size of " #type " != " SJSTR (size)) #define TEST_ALIGN(type,align) _Static_assert (__alignof__ (type) == align , "align of " #type " != " SJSTR (align)) #define TEST_OFFSET(type,member,offset) _Static_assert (offsetof (type, member) == offset, "offset of " #member " field of " #type " != " SJSTR (offset)) /* Check if jmp_buf have the expected sizes. */ TEST_SIZE (jmp_buf, JMP_BUF_SIZE); TEST_SIZE (sigjmp_buf, SIGJMP_BUF_SIZE); /* Check if jmp_buf have the expected alignments. */ TEST_ALIGN (jmp_buf, JMP_BUF_ALIGN); TEST_ALIGN (sigjmp_buf, SIGJMP_BUF_ALIGN); /* Check if internal fields in jmp_buf have the expected offsets. */ TEST_OFFSET (struct __jmp_buf_tag, __mask_was_saved, MASK_WAS_SAVED_OFFSET); TEST_OFFSET (struct __jmp_buf_tag, __saved_mask, SAVED_MASK_OFFSET); # 24 "../nptl/descr.h" 2 # 1 "../include/sys/types.h" 1 # 26 "../nptl/descr.h" 2 # 1 "../sysdeps/s390/hp-timing.h" 1 /* High precision, low overhead timing functions. s390 version. Copyright (C) 2019-2021 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 . */ #define _HP_TIMING_S390_H 1 /* The stckf instruction is available starting with z9-109 zarch CPUs. As there is no extra configure check for z9-109, the z10 one is used. */ # 1 "../sysdeps/generic/hp-timing-common.h" 1 /* High precision, low overhead timing functions. Generic version. Copyright (C) 1998-2021 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 . */ /* In case a platform supports timers in the hardware the following macros and types must be defined: - HP_TIMING_INLINE: this macro is non-zero if the functionality is not implemented using function calls but instead uses some inlined code which might simply consist of a few assembler instructions. We have to know this since we might want to use the macros here in places where we cannot make function calls. - hp_timing_t: This is the type for variables used to store the time values. This type must be integral. - HP_TIMING_NOW: place timestamp for current time in variable given as parameter. */ /* The target supports hp-timing. Share the common infrastructure. */ # 1 "../include/string.h" 1 /* Some of these are defined as macros in the real string.h, so we must prototype them before including it. */ # 1 "../include/sys/types.h" 1 # 7 "../include/string.h" 2 # 1 "../include/locale.h" 1 # 1 "../locale/locale.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * ISO C99 Standard: 7.11 Localization */ #define _LOCALE_H 1 #define __need_NULL # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 29 "../locale/locale.h" 2 # 1 "../include/bits/locale.h" 1 # 1 "../locale/bits/locale.h" 1 /* Definition of locale category symbol values. Copyright (C) 2001-2021 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 . */ #define _BITS_LOCALE_H 1 #define __LC_CTYPE 0 #define __LC_NUMERIC 1 #define __LC_TIME 2 #define __LC_COLLATE 3 #define __LC_MONETARY 4 #define __LC_MESSAGES 5 #define __LC_ALL 6 #define __LC_PAPER 7 #define __LC_NAME 8 #define __LC_ADDRESS 9 #define __LC_TELEPHONE 10 #define __LC_MEASUREMENT 11 #define __LC_IDENTIFICATION 12 # 2 "../include/bits/locale.h" 2 # 30 "../locale/locale.h" 2 __BEGIN_DECLS /* These are the possibilities for the first argument to setlocale. The code assumes that the lowest LC_* symbol has the value zero. */ #define LC_CTYPE __LC_CTYPE #define LC_NUMERIC __LC_NUMERIC #define LC_TIME __LC_TIME #define LC_COLLATE __LC_COLLATE #define LC_MONETARY __LC_MONETARY #define LC_MESSAGES __LC_MESSAGES #define LC_ALL __LC_ALL #define LC_PAPER __LC_PAPER #define LC_NAME __LC_NAME #define LC_ADDRESS __LC_ADDRESS #define LC_TELEPHONE __LC_TELEPHONE #define LC_MEASUREMENT __LC_MEASUREMENT #define LC_IDENTIFICATION __LC_IDENTIFICATION /* Structure giving information about numeric and monetary notation. */ struct lconv { /* Numeric (non-monetary) information. */ char *decimal_point; /* Decimal point character. */ char *thousands_sep; /* Thousands separator. */ /* Each element is the number of digits in each group; elements with higher indices are farther left. An element with value CHAR_MAX means that no further grouping is done. An element with value 0 means that the previous element is used for all groups farther left. */ char *grouping; /* Monetary information. */ /* First three chars are a currency symbol from ISO 4217. Fourth char is the separator. Fifth char is '\0'. */ char *int_curr_symbol; char *currency_symbol; /* Local currency symbol. */ char *mon_decimal_point; /* Decimal point character. */ char *mon_thousands_sep; /* Thousands separator. */ char *mon_grouping; /* Like `grouping' element (above). */ char *positive_sign; /* Sign for positive values. */ char *negative_sign; /* Sign for negative values. */ char int_frac_digits; /* Int'l fractional digits. */ char frac_digits; /* Local fractional digits. */ /* 1 if currency_symbol precedes a positive value, 0 if succeeds. */ char p_cs_precedes; /* 1 iff a space separates currency_symbol from a positive value. */ char p_sep_by_space; /* 1 if currency_symbol precedes a negative value, 0 if succeeds. */ char n_cs_precedes; /* 1 iff a space separates currency_symbol from a negative value. */ char n_sep_by_space; /* Positive and negative sign positions: 0 Parentheses surround the quantity and currency_symbol. 1 The sign string precedes the quantity and currency_symbol. 2 The sign string follows the quantity and currency_symbol. 3 The sign string immediately precedes the currency_symbol. 4 The sign string immediately follows the currency_symbol. */ char p_sign_posn; char n_sign_posn; /* 1 if int_curr_symbol precedes a positive value, 0 if succeeds. */ char int_p_cs_precedes; /* 1 iff a space separates int_curr_symbol from a positive value. */ char int_p_sep_by_space; /* 1 if int_curr_symbol precedes a negative value, 0 if succeeds. */ char int_n_cs_precedes; /* 1 iff a space separates int_curr_symbol from a negative value. */ char int_n_sep_by_space; /* Positive and negative sign positions: 0 Parentheses surround the quantity and int_curr_symbol. 1 The sign string precedes the quantity and int_curr_symbol. 2 The sign string follows the quantity and int_curr_symbol. 3 The sign string immediately precedes the int_curr_symbol. 4 The sign string immediately follows the int_curr_symbol. */ char int_p_sign_posn; char int_n_sign_posn; # 118 "../locale/locale.h" }; /* Set and/or return the current locale. */ extern char *setlocale (int __category, const char *__locale) __THROW; /* Return the numeric/monetary information for the current locale. */ extern struct lconv *localeconv (void) __THROW; /* POSIX.1-2008 extends the locale interface with functions for explicit creation and manipulation of 'locale_t' objects representing locale contexts, and a set of parallel locale-sensitive text processing functions that take a locale_t argument. This enables applications to work with data from multiple locales simultaneously and thread-safely. */ # 1 "../include/bits/types/locale_t.h" 1 # 136 "../locale/locale.h" 2 /* Return a reference to a data structure representing a set of locale datasets. Unlike for the CATEGORY parameter for `setlocale' the CATEGORY_MASK parameter here uses a single bit for each category, made by OR'ing together LC_*_MASK bits above. */ extern locale_t newlocale (int __category_mask, const char *__locale, locale_t __base) __THROW; /* These are the bits that can be set in the CATEGORY_MASK argument to `newlocale'. In the GNU implementation, LC_FOO_MASK has the value of (1 << LC_FOO), but this is not a part of the interface that callers can assume will be true. */ #define LC_CTYPE_MASK (1 << __LC_CTYPE) #define LC_NUMERIC_MASK (1 << __LC_NUMERIC) #define LC_TIME_MASK (1 << __LC_TIME) #define LC_COLLATE_MASK (1 << __LC_COLLATE) #define LC_MONETARY_MASK (1 << __LC_MONETARY) #define LC_MESSAGES_MASK (1 << __LC_MESSAGES) #define LC_PAPER_MASK (1 << __LC_PAPER) #define LC_NAME_MASK (1 << __LC_NAME) #define LC_ADDRESS_MASK (1 << __LC_ADDRESS) #define LC_TELEPHONE_MASK (1 << __LC_TELEPHONE) #define LC_MEASUREMENT_MASK (1 << __LC_MEASUREMENT) #define LC_IDENTIFICATION_MASK (1 << __LC_IDENTIFICATION) #define LC_ALL_MASK (LC_CTYPE_MASK | LC_NUMERIC_MASK | LC_TIME_MASK | LC_COLLATE_MASK | LC_MONETARY_MASK | LC_MESSAGES_MASK | LC_PAPER_MASK | LC_NAME_MASK | LC_ADDRESS_MASK | LC_TELEPHONE_MASK | LC_MEASUREMENT_MASK | LC_IDENTIFICATION_MASK ) # 173 "../locale/locale.h" /* Return a duplicate of the set of locale in DATASET. All usage counters are increased if necessary. */ extern locale_t duplocale (locale_t __dataset) __THROW; /* Free the data associated with a locale dataset previously returned by a call to `setlocale_r'. */ extern void freelocale (locale_t __dataset) __THROW; /* Switch the current thread's locale to DATASET. If DATASET is null, instead just return the current setting. The special value LC_GLOBAL_LOCALE is the initial setting for all threads and can also be installed any time, meaning the thread uses the global settings controlled by `setlocale'. */ extern locale_t uselocale (locale_t __dataset) __THROW; /* This value can be passed to `uselocale' and may be returned by it. Passing this value to any other function has undefined behavior. */ #define LC_GLOBAL_LOCALE ((locale_t) -1L) __END_DECLS # 3 "../include/locale.h" 2 extern __typeof (uselocale) __uselocale; libc_hidden_proto (setlocale) libc_hidden_proto (__uselocale) /* This has to be changed whenever a new locale is defined. */ #define __LC_LAST 13 extern struct loaded_l10nfile *_nl_locale_file_list[] attribute_hidden; /* Locale object for C locale. */ extern const struct __locale_struct _nl_C_locobj attribute_hidden; #define _nl_C_locobj_ptr ((struct __locale_struct *) &_nl_C_locobj) /* Now define the internal interfaces. */ extern struct lconv *__localeconv (void); /* Fetch the name of the current locale set in the given category. */ extern const char *__current_locale_name (int category) attribute_hidden; # 8 "../include/string.h" 2 extern void *__memccpy (void *__dest, const void *__src, int __c, size_t __n); extern size_t __strnlen (const char *__string, size_t __maxlen) __attribute_pure__; extern char *__strsep (char **__stringp, const char *__delim); libc_hidden_proto (__strsep) extern int __strverscmp (const char *__s1, const char *__s2) __attribute_pure__; extern int __strncasecmp (const char *__s1, const char *__s2, size_t __n) __attribute_pure__; extern int __strcasecmp (const char *__s1, const char *__s2) __attribute_pure__; extern char *__strcasestr (const char *__haystack, const char *__needle) __attribute_pure__; extern char *__strdup (const char *__string) __attribute_malloc__; extern char *__strndup (const char *__string, size_t __n) __attribute_malloc__; extern void *__rawmemchr (const void *__s, int __c) __attribute_pure__; extern char *__strchrnul (const char *__s, int __c) __attribute_pure__; extern void *__memrchr (const void *__s, int __c, size_t __n) __attribute_pure__; extern void *__memchr (const void *__s, int __c, size_t __n) __attribute_pure__; extern void __bzero (void *__s, size_t __n) __THROW __nonnull ((1)); extern int __ffs (int __i) __attribute__ ((const)); extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen); extern char *__strerror_l (int __errnum, locale_t __loc); extern const char *__sigdescr_np (int __errnum); libc_hidden_proto (__sigdescr_np) /* Get _STRING_ARCH_unaligned. */ # 1 "../sysdeps/s390/string_private.h" 1 /* Define _STRING_ARCH_unaligned. S/390 version. Copyright (C) 2016-2021 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 . */ /* The s390 processors can access unaligned multi-byte variables. */ #define _STRING_ARCH_unaligned 1 # 61 "../include/string.h" 2 # 1 "../string/string.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * ISO C99 Standard: 7.21 String handling */ #define _STRING_H 1 #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION # 1 "../bits/libc-header-start.h" 1 /* Handle feature test macros at the start of a header. Copyright (C) 2016-2021 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 . */ /* This header is internal to glibc and should not be included outside of glibc headers. Headers including it must define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header cannot have multiple include guards because ISO C feature test macros depend on the definition of the macro when an affected header is included, not when the first system header is included. */ #undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION /* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ macro. */ #undef __GLIBC_USE_LIB_EXT2 #define __GLIBC_USE_LIB_EXT2 1 /* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ macro. Most but not all symbols enabled by that macro in TS 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in Annex F still require a new feature test macro __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS 18661-1 are not included in C2X (and thus should depend on __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are enabled). __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS 18661-1 not included in C2X. __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS 18661-1 that are also included in C2X (with no feature test macro required in C2X). __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1 that are included in C2X but conditional on __STDC_WANT_IEC_60559_EXT__. (There are currently no features conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS 18661-1.) */ #undef __GLIBC_USE_IEC_60559_BFP_EXT #define __GLIBC_USE_IEC_60559_BFP_EXT 1 #undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X #define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1 #undef __GLIBC_USE_IEC_60559_EXT #define __GLIBC_USE_IEC_60559_EXT 1 /* ISO/IEC TS 18661-4:2015 defines the __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction functions, the symbols from this TS are enabled unconditionally in C2X. */ #undef __GLIBC_USE_IEC_60559_FUNCS_EXT #define __GLIBC_USE_IEC_60559_FUNCS_EXT 1 #undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X #define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1 /* ISO/IEC TS 18661-3:2015 defines the __STDC_WANT_IEC_60559_TYPES_EXT__ macro. */ #undef __GLIBC_USE_IEC_60559_TYPES_EXT #define __GLIBC_USE_IEC_60559_TYPES_EXT 1 # 27 "../string/string.h" 2 __BEGIN_DECLS /* Get size_t and NULL from . */ #define __need_size_t #define __need_NULL # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 34 "../string/string.h" 2 /* Tell the caller that we provide correct C++ prototypes. */ /* Copy N bytes of SRC to DEST. */ extern void *memcpy (void *__restrict __dest, const void *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); /* Copy N bytes of SRC to DEST, guaranteeing correct behavior for overlapping strings. */ extern void *memmove (void *__dest, const void *__src, size_t __n) __THROW __nonnull ((1, 2)); /* Copy no more than N bytes of SRC to DEST, stopping when C is found. Return the position in DEST one byte past where C was copied, or NULL if C was not found in the first N bytes of SRC. */ extern void *memccpy (void *__restrict __dest, const void *__restrict __src, int __c, size_t __n) __THROW __nonnull ((1, 2)) __attr_access ((__write_only__, 1, 4)); /* Set N bytes of S to C. */ extern void *memset (void *__s, int __c, size_t __n) __THROW __nonnull ((1)); /* Compare N bytes of S1 and S2. */ extern int memcmp (const void *__s1, const void *__s2, size_t __n) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Compare N bytes of S1 and S2. Return zero if S1 and S2 are equal. Return some non-zero value otherwise. Essentially __memcmpeq has the exact same semantics as memcmp except the return value is less constrained. memcmp is always a correct implementation of __memcmpeq. As well !!memcmp, -memcmp, or bcmp are correct implementations. __memcmpeq is meant to be used by compilers when memcmp return is only used for its bolean value. __memcmpeq is declared only for use by compilers. Programs should continue to use memcmp. */ extern int __memcmpeq (const void *__s1, const void *__s2, size_t __n) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Search N bytes of S for C. */ # 107 "../string/string.h" extern void *memchr (const void *__s, int __c, size_t __n) __THROW __attribute_pure__ __nonnull ((1)); /* Search in S for C. This is similar to `memchr' but there is no length limit. */ extern void *rawmemchr (const void *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); /* Search N bytes of S for the final occurrence of C. */ # 133 "../string/string.h" extern void *memrchr (const void *__s, int __c, size_t __n) __THROW __attribute_pure__ __nonnull ((1)) __attr_access ((__read_only__, 1, 3)); /* Copy SRC to DEST. */ extern char *strcpy (char *__restrict __dest, const char *__restrict __src) __THROW __nonnull ((1, 2)); /* Copy no more than N characters of SRC to DEST. */ extern char *strncpy (char *__restrict __dest, const char *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); /* Append SRC onto DEST. */ extern char *strcat (char *__restrict __dest, const char *__restrict __src) __THROW __nonnull ((1, 2)); /* Append no more than N characters from SRC onto DEST. */ extern char *strncat (char *__restrict __dest, const char *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); /* Compare S1 and S2. */ extern int strcmp (const char *__s1, const char *__s2) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Compare N characters of S1 and S2. */ extern int strncmp (const char *__s1, const char *__s2, size_t __n) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Compare the collated forms of S1 and S2. */ extern int strcoll (const char *__s1, const char *__s2) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Put a transformation of SRC into no more than N bytes of DEST. */ extern size_t strxfrm (char *__restrict __dest, const char *__restrict __src, size_t __n) __THROW __nonnull ((2)) __attr_access ((__write_only__, 1, 3)); /* POSIX.1-2008 extended locale interface (see locale.h). */ # 1 "../include/bits/types/locale_t.h" 1 # 173 "../string/string.h" 2 /* Compare the collated forms of S1 and S2, using sorting rules from L. */ extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) __THROW __attribute_pure__ __nonnull ((1, 2, 3)); /* Put a transformation of SRC into no more than N bytes of DEST, using sorting rules from L. */ extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, locale_t __l) __THROW __nonnull ((2, 4)) __attr_access ((__write_only__, 1, 3)); /* Duplicate S, returning an identical malloc'd string. */ extern char *strdup (const char *__s) __THROW __attribute_malloc__ __nonnull ((1)); /* Return a malloc'd copy of at most N bytes of STRING. The resultant string is terminated even if no null terminator appears before STRING[N]. */ extern char *strndup (const char *__string, size_t __n) __THROW __attribute_malloc__ __nonnull ((1)); /* Duplicate S, returning an identical alloca'd string. */ #define strdupa(s) (__extension__ ({ const char *__old = (s); size_t __len = strlen (__old) + 1; char *__new = (char *) __builtin_alloca (__len); (char *) memcpy (__new, __old, __len); })) /* Return an alloca'd copy of at most N bytes of string. */ #define strndupa(s,n) (__extension__ ({ const char *__old = (s); size_t __len = strnlen (__old, (n)); char *__new = (char *) __builtin_alloca (__len + 1); __new[__len] = '\0'; (char *) memcpy (__new, __old, __len); })) # 220 "../string/string.h" /* Find the first occurrence of C in S. */ # 246 "../string/string.h" extern char *strchr (const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); /* Find the last occurrence of C in S. */ # 273 "../string/string.h" extern char *strrchr (const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); /* This function is similar to `strchr'. But it returns a pointer to the closing NUL byte in case C is not found in S. */ extern char *strchrnul (const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); /* Return the length of the initial segment of S which consists entirely of characters not in REJECT. */ extern size_t strcspn (const char *__s, const char *__reject) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Return the length of the initial segment of S which consists entirely of characters in ACCEPT. */ extern size_t strspn (const char *__s, const char *__accept) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Find the first occurrence in S of any character in ACCEPT. */ # 323 "../string/string.h" extern char *strpbrk (const char *__s, const char *__accept) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Find the first occurrence of NEEDLE in HAYSTACK. */ # 350 "../string/string.h" extern char *strstr (const char *__haystack, const char *__needle) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Divide S into tokens separated by characters in DELIM. */ extern char *strtok (char *__restrict __s, const char *__restrict __delim) __THROW __nonnull ((2)); /* Divide S into tokens separated by characters in DELIM. Information passed between calls are stored in SAVE_PTR. */ extern char *__strtok_r (char *__restrict __s, const char *__restrict __delim, char **__restrict __save_ptr) __THROW __nonnull ((2, 3)); extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, char **__restrict __save_ptr) __THROW __nonnull ((2, 3)); /* Similar to `strstr' but this function ignores the case of both strings. */ extern char *strcasestr (const char *__haystack, const char *__needle) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Find the first occurrence of NEEDLE in HAYSTACK. NEEDLE is NEEDLELEN bytes long; HAYSTACK is HAYSTACKLEN bytes long. */ extern void *memmem (const void *__haystack, size_t __haystacklen, const void *__needle, size_t __needlelen) __THROW __attribute_pure__ __nonnull ((1, 3)) __attr_access ((__read_only__, 1, 2)) __attr_access ((__read_only__, 3, 4)); /* Copy N bytes of SRC to DEST, return pointer to bytes after the last written byte. */ extern void *__mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); extern void *mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); /* Return the length of S. */ extern size_t strlen (const char *__s) __THROW __attribute_pure__ __nonnull ((1)); /* Find the length of STRING, but scan at most MAXLEN characters. If no '\0' terminator is found in that many characters, return MAXLEN. */ extern size_t strnlen (const char *__string, size_t __maxlen) __THROW __attribute_pure__ __nonnull ((1)); /* Return a string describing the meaning of the `errno' code in ERRNUM. */ extern char *strerror (int __errnum) __THROW; /* Reentrant version of `strerror'. There are 2 flavors of `strerror_r', GNU which returns the string and may or may not use the supplied temporary buffer and POSIX one which fills the string into the buffer. To use the POSIX version, -D_XOPEN_SOURCE=600 or -D_POSIX_C_SOURCE=200112L without -D_GNU_SOURCE is needed, otherwise the GNU version is preferred. */ # 442 "../string/string.h" /* If a temporary buffer is required, at most BUFLEN bytes of BUF will be used. */ extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) __THROW __nonnull ((2)) __wur __attr_access ((__write_only__, 2, 3)); /* Return a string describing the meaning of tthe error in ERR. */ extern const char *strerrordesc_np (int __err) __THROW; /* Return a string with the error name in ERR. */ extern const char *strerrorname_np (int __err) __THROW; /* Translate error number to string according to the locale L. */ extern char *strerror_l (int __errnum, locale_t __l) __THROW; # 1 "../include/strings.h" 1 # 1 "../string/strings.h" 1 /* Copyright (C) 1991-2021 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 . */ #define _STRINGS_H 1 #define __need_size_t # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 24 "../string/strings.h" 2 /* Tell the caller that we provide correct C++ prototypes. */ __BEGIN_DECLS /* Compare N bytes of S1 and S2 (same as memcmp). */ extern int bcmp (const void *__s1, const void *__s2, size_t __n) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Copy N bytes of SRC to DEST (like memmove, but args reversed). */ extern void bcopy (const void *__src, void *__dest, size_t __n) __THROW __nonnull ((1, 2)); /* Set N bytes of S to 0. */ extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1)); /* Find the first occurrence of C in S (same as strchr). */ # 68 "../string/strings.h" extern char *index (const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); /* Find the last occurrence of C in S (same as strrchr). */ # 96 "../string/strings.h" extern char *rindex (const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); /* Return the position of the first bit set in I, or 0 if none are set. The least-significant bit is position 1, the most-significant 32. */ extern int ffs (int __i) __THROW __attribute_const__; /* The following two functions are non-standard but necessary for non-32 bit platforms. */ extern int ffsl (long int __l) __THROW __attribute_const__; __extension__ extern int ffsll (long long int __ll) __THROW __attribute_const__; /* Compare S1 and S2, ignoring case. */ extern int strcasecmp (const char *__s1, const char *__s2) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Compare no more than N chars of S1 and S2, ignoring case. */ extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) __THROW __attribute_pure__ __nonnull ((1, 2)); /* POSIX.1-2008 extended locale interface (see locale.h). */ # 1 "../include/bits/types/locale_t.h" 1 # 126 "../string/strings.h" 2 /* Compare S1 and S2, ignoring case, using collation rules from LOC. */ extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) __THROW __attribute_pure__ __nonnull ((1, 2, 3)); /* Compare no more than N chars of S1 and S2, ignoring case, using collation rules from LOC. */ extern int strncasecmp_l (const char *__s1, const char *__s2, size_t __n, locale_t __loc) __THROW __attribute_pure__ __nonnull ((1, 2, 4)); __END_DECLS # 2 "../include/strings.h" 2 # 463 "../string/string.h" 2 /* Set N bytes of S to 0. The compiler will not delete a call to this function, even if S is dead after the call. */ extern void explicit_bzero (void *__s, size_t __n) __THROW __nonnull ((1)) __fortified_attr_access (__write_only__, 1, 2); /* Return the next DELIM-delimited token from *STRINGP, terminating it with a '\0', and update *STRINGP to point past it. */ extern char *strsep (char **__restrict __stringp, const char *__restrict __delim) __THROW __nonnull ((1, 2)); /* Return a string describing the meaning of the signal number in SIG. */ extern char *strsignal (int __sig) __THROW; /* Return an abbreviation string for the signal number SIG. */ extern const char *sigabbrev_np (int __sig) __THROW; /* Return a string describing the meaning of the signal number in SIG, the result is not translated. */ extern const char *sigdescr_np (int __sig) __THROW; /* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */ extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) __THROW __nonnull ((1, 2)); extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) __THROW __nonnull ((1, 2)); /* Copy no more than N characters of SRC to DEST, returning the address of the last character written into DEST. */ extern char *__stpncpy (char *__restrict __dest, const char *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); extern char *stpncpy (char *__restrict __dest, const char *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); /* Compare S1 and S2 as strings holding name & indices/version numbers. */ extern int strverscmp (const char *__s1, const char *__s2) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Sautee STRING briskly. */ extern char *strfry (char *__string) __THROW __nonnull ((1)); /* Frobnicate N bytes of S. */ extern void *memfrob (void *__s, size_t __n) __THROW __nonnull ((1)) __attr_access ((__read_write__, 1, 2)); /* Return the file name within directory of FILENAME. We don't declare the function if the `basename' macro is available (defined in ) which makes the XPG version of this function available. */ extern char *basename (const char *__filename) __THROW __nonnull ((1)); __END_DECLS # 64 "../include/string.h" 2 extern __typeof (strcoll_l) __strcoll_l; extern __typeof (strxfrm_l) __strxfrm_l; extern __typeof (strcasecmp_l) __strcasecmp_l; extern __typeof (strncasecmp_l) __strncasecmp_l; /* Alternative version which doesn't pollute glibc's namespace. */ #undef strndupa #define strndupa(s,n) (__extension__ ({ const char *__old = (s); size_t __len = __strnlen (__old, (n)); char *__new = (char *) __builtin_alloca (__len + 1); __new[__len] = '\0'; (char *) memcpy (__new, __old, __len); })) # 83 "../include/string.h" libc_hidden_proto (__mempcpy) #define __mempcpy(dest,src,n) __builtin_mempcpy (dest, src, n) libc_hidden_proto (__stpcpy) #define __stpcpy(dest,src) __builtin_stpcpy (dest, src) libc_hidden_proto (__stpncpy) libc_hidden_proto (__rawmemchr) libc_hidden_proto (__strcasecmp) libc_hidden_proto (__strcasecmp_l) libc_hidden_proto (__strncasecmp_l) extern __typeof (strncat) __strncat; libc_hidden_proto (__strncat) libc_hidden_proto (__strdup) libc_hidden_proto (__strndup) libc_hidden_proto (__strerror_r) libc_hidden_proto (__strverscmp) libc_hidden_proto (basename) extern char *__basename (const char *__filename) __THROW __nonnull ((1)); libc_hidden_proto (__basename) libc_hidden_proto (strcoll) libc_hidden_proto (__strcoll_l) libc_hidden_proto (__strxfrm_l) libc_hidden_proto (__strtok_r) extern char *__strsep_g (char **__stringp, const char *__delim); libc_hidden_proto (__strsep_g) libc_hidden_proto (strnlen) libc_hidden_proto (__strnlen) libc_hidden_proto (__memcmpeq) libc_hidden_proto (memmem) extern __typeof (memmem) __memmem; libc_hidden_proto (__memmem) libc_hidden_proto (__ffs) libc_hidden_proto (__strerror_l) /* Avoid hidden reference to IFUNC symbol __explicit_bzero_chk. */ void __explicit_bzero_chk_internal (void *, size_t, size_t) __THROW __nonnull ((1)) attribute_hidden; #define explicit_bzero(buf,len) __explicit_bzero_chk_internal (buf, len, __glibc_objsize0 (buf)) libc_hidden_builtin_proto (memchr) libc_hidden_builtin_proto (memcpy) libc_hidden_builtin_proto (mempcpy) libc_hidden_builtin_proto (memcmp) libc_hidden_builtin_proto (memmove) libc_hidden_builtin_proto (memset) libc_hidden_builtin_proto (strcat) libc_hidden_builtin_proto (strchr) libc_hidden_builtin_proto (strcmp) libc_hidden_builtin_proto (strcpy) libc_hidden_builtin_proto (strcspn) libc_hidden_builtin_proto (strlen) libc_hidden_builtin_proto (strncmp) libc_hidden_builtin_proto (strncpy) libc_hidden_builtin_proto (strpbrk) libc_hidden_builtin_proto (stpcpy) libc_hidden_builtin_proto (strrchr) libc_hidden_builtin_proto (strspn) libc_hidden_builtin_proto (strstr) libc_hidden_builtin_proto (ffs) # 174 "../include/string.h" /* Redirect calls to __builtin_mempcpy and __builtin_stpcpy to call __mempcpy and __stpcpy if not inlined. */ extern __typeof (mempcpy) mempcpy __asm__ ("__mempcpy"); extern __typeof (stpcpy) stpcpy __asm__ ("__stpcpy"); extern void *__memcpy_chk (void *__restrict __dest, const void *__restrict __src, size_t __len, size_t __destlen) __THROW; extern void *__memmove_chk (void *__dest, const void *__src, size_t __len, size_t __destlen) __THROW; extern void *__mempcpy_chk (void *__restrict __dest, const void *__restrict __src, size_t __len, size_t __destlen) __THROW; extern void *__memset_chk (void *__dest, int __ch, size_t __len, size_t __destlen) __THROW; extern char *__strcpy_chk (char *__restrict __dest, const char *__restrict __src, size_t __destlen) __THROW; extern char *__stpcpy_chk (char *__restrict __dest, const char *__restrict __src, size_t __destlen) __THROW; extern char *__strncpy_chk (char *__restrict __dest, const char *__restrict __src, size_t __len, size_t __destlen) __THROW; extern char *__strcat_chk (char *__restrict __dest, const char *__restrict __src, size_t __destlen) __THROW; extern char *__strncat_chk (char *__restrict __dest, const char *__restrict __src, size_t __len, size_t __destlen) __THROW; # 38 "../sysdeps/generic/hp-timing-common.h" 2 # 1 "../include/sys/param.h" 1 # 1 "../misc/sys/param.h" 1 /* Compatibility header for old-style Unix parameters and limits. Copyright (C) 1995-2021 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 . */ #define _SYS_PARAM_H 1 #define __need_NULL # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 24 "../misc/sys/param.h" 2 # 1 "../include/sys/types.h" 1 # 26 "../misc/sys/param.h" 2 # 1 "../include/limits.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types */ # 116 "../include/limits.h" /* Get the compiler's limits.h, which defines almost all the ISO constants. We put this #include_next outside the double inclusion check because it should be possible to include this file more than once and still get the definitions from gcc's header. */ /* The files in some gcc versions don't define LLONG_MIN, LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for ages are available. */ /* The integer width macros are not defined by GCC's before GCC 7, or if _GNU_SOURCE rather than __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature. */ /* The macros for _Bool are not defined by GCC's before GCC 11, or if _GNU_SOURCE is defined rather than enabling C2x support with -std. */ /* POSIX adds things to . */ # 1 "../include/bits/posix1_lim.h" 1 # 196 "../include/limits.h" 2 # 1 "../include/bits/posix2_lim.h" 1 # 200 "../include/limits.h" 2 # 27 "../misc/sys/param.h" 2 # 1 "../include/endian.h" 1 #define BIG_ENDI 1 #undef LITTLE_ENDI #define HIGH_HALF 0 #define LOW_HALF 1 # 17 "../include/endian.h" # 28 "../misc/sys/param.h" 2 # 1 "../include/signal.h" 1 # 1 "../signal/signal.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * ISO C99 Standard: 7.14 Signal handling */ #define _SIGNAL_H __BEGIN_DECLS # 1 "../include/bits/types.h" 1 # 30 "../signal/signal.h" 2 # 1 "../bits/signum-generic.h" 1 /* Signal number constants. Generic template. Copyright (C) 1991-2021 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 . */ #define _BITS_SIGNUM_GENERIC_H 1 /* Fake signal functions. */ #define SIG_ERR ((__sighandler_t) -1) #define SIG_DFL ((__sighandler_t) 0) #define SIG_IGN ((__sighandler_t) 1) #define SIG_HOLD ((__sighandler_t) 2) /* We define here all the signal names listed in POSIX (1003.1-2008); as of 1003.1-2013, no additional signals have been added by POSIX. We also define here signal names that historically exist in every real-world POSIX variant (e.g. SIGWINCH). Signals in the 1-15 range are defined with their historical numbers. For other signals, we use the BSD numbers. There are two unallocated signal numbers in the 1-31 range: 7 and 29. Signal number 0 is reserved for use as kill(pid, 0), to test whether a process exists without sending it a signal. */ /* ISO C99 signals. */ #define SIGINT 2 #define SIGILL 4 #define SIGABRT 6 #define SIGFPE 8 #define SIGSEGV 11 #define SIGTERM 15 /* Historical signals specified by POSIX. */ #define SIGHUP 1 #define SIGQUIT 3 #define SIGTRAP 5 #define SIGKILL 9 #define SIGPIPE 13 #define SIGALRM 14 /* Archaic names for compatibility. */ #define SIGIO SIGPOLL #define SIGIOT SIGABRT #define SIGCLD SIGCHLD /* Not all systems support real-time signals. bits/signum.h indicates that they are supported by overriding __SIGRTMAX to a value greater than __SIGRTMIN. These constants give the kernel-level hard limits, but some real-time signals may be used internally by glibc. Do not use these constants in application code; use SIGRTMIN and SIGRTMAX (defined in signal.h) instead. */ /* Include system specific bits. */ # 1 "../sysdeps/unix/sysv/linux/bits/signum-arch.h" 1 /* Signal number definitions. Linux version. Copyright (C) 1995-2021 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 . */ #define _BITS_SIGNUM_ARCH_H 1 /* Adjustments and additions to the signal number constants for most Linux systems. */ #define SIGSTKFLT 16 #define SIGPWR 30 /* Historical signals specified by POSIX. */ #define SIGBUS 7 #define SIGSYS 31 /* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */ #define SIGURG 23 #define SIGSTOP 19 #define SIGTSTP 20 #define SIGCONT 18 #define SIGCHLD 17 #define SIGTTIN 21 #define SIGTTOU 22 #define SIGPOLL 29 #define SIGXFSZ 25 #define SIGXCPU 24 #define SIGVTALRM 26 #define SIGPROF 27 #define SIGUSR1 10 #define SIGUSR2 12 /* Nonstandard signals found in all modern POSIX systems (including both BSD and Linux). */ #define SIGWINCH 28 /* Archaic names for compatibility. */ #define SIGIO SIGPOLL #define SIGIOT SIGABRT #define SIGCLD SIGCHLD #define __SIGRTMIN 32 #define __SIGRTMAX 64 # 77 "../bits/signum-generic.h" 2 /* Biggest signal number + 1 (including real-time signals). */ #define _NSIG (__SIGRTMAX + 1) # 31 "../signal/signal.h" 2 # 1 "../include/bits/types/sig_atomic_t.h" 1 # 1 "../signal/bits/types/sig_atomic_t.h" 1 #define __sig_atomic_t_defined 1 # 1 "../include/bits/types.h" 1 # 5 "../signal/bits/types/sig_atomic_t.h" 2 /* An integral type that can be modified atomically, without the possibility of a signal arriving in the middle of the operation. */ typedef __sig_atomic_t sig_atomic_t; # 2 "../include/bits/types/sig_atomic_t.h" 2 # 33 "../signal/signal.h" 2 # 1 "../include/bits/types/sigset_t.h" 1 # 36 "../signal/signal.h" 2 /* We need `struct timespec' later on. */ # 1 "../include/bits/types/struct_timespec.h" 1 # 54 "../signal/signal.h" 2 # 1 "../sysdeps/unix/sysv/linux/bits/types/siginfo_t.h" 1 #define __siginfo_t_defined 1 # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 5 "../sysdeps/unix/sysv/linux/bits/types/siginfo_t.h" 2 # 1 "../include/bits/types.h" 1 # 6 "../sysdeps/unix/sysv/linux/bits/types/siginfo_t.h" 2 # 1 "../include/bits/types/__sigval_t.h" 1 # 1 "../signal/bits/types/__sigval_t.h" 1 /* Define __sigval_t. Copyright (C) 1997-2021 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 . */ #define ____sigval_t_defined /* Type for data associated with a signal. */ union sigval { int sival_int; void *sival_ptr; }; typedef union sigval __sigval_t; # 40 "../signal/bits/types/__sigval_t.h" # 2 "../include/bits/types/__sigval_t.h" 2 # 7 "../sysdeps/unix/sysv/linux/bits/types/siginfo_t.h" 2 #define __SI_MAX_SIZE 128 #define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4) /* Some fields of siginfo_t have architecture-specific variations. */ # 1 "../sysdeps/unix/sysv/linux/bits/siginfo-arch.h" 1 /* Architecture-specific adjustments to siginfo_t. */ #define _BITS_SIGINFO_ARCH_H 1 /* This architecture has no adjustments to make to siginfo_t. */ # 17 "../sysdeps/unix/sysv/linux/bits/types/siginfo_t.h" 2 #define __SI_ALIGNMENT #define __SI_BAND_TYPE long int #define __SI_CLOCK_T __clock_t #define __SI_ERRNO_THEN_CODE 1 #define __SI_HAVE_SIGSYS 1 #define __SI_SIGFAULT_ADDL typedef struct { int si_signo; /* Signal number. */ int si_errno; /* If non-zero, an errno value associated with this signal, as defined in . */ int si_code; /* Signal code. */ int __pad0; /* Explicit padding. */ union { int _pad[__SI_PAD_SIZE]; /* kill(). */ struct { __pid_t si_pid; /* Sending process ID. */ __uid_t si_uid; /* Real user ID of sending process. */ } _kill; /* POSIX.1b timers. */ struct { int si_tid; /* Timer ID. */ int si_overrun; /* Overrun count. */ __sigval_t si_sigval; /* Signal value. */ } _timer; /* POSIX.1b signals. */ struct { __pid_t si_pid; /* Sending process ID. */ __uid_t si_uid; /* Real user ID of sending process. */ __sigval_t si_sigval; /* Signal value. */ } _rt; /* SIGCHLD. */ struct { __pid_t si_pid; /* Which child. */ __uid_t si_uid; /* Real user ID of sending process. */ int si_status; /* Exit value or signal. */ __SI_CLOCK_T si_utime; __SI_CLOCK_T si_stime; } _sigchld; /* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */ struct { void *si_addr; /* Faulting insn/memory ref. */ __SI_SIGFAULT_ADDL short int si_addr_lsb; /* Valid LSB of the reported address. */ union { /* used when si_code=SEGV_BNDERR */ struct { void *_lower; void *_upper; } _addr_bnd; /* used when si_code=SEGV_PKUERR */ __uint32_t _pkey; } _bounds; } _sigfault; /* SIGPOLL. */ struct { __SI_BAND_TYPE si_band; /* Band event for SIGPOLL. */ int si_fd; } _sigpoll; /* SIGSYS. */ struct { void *_call_addr; /* Calling user insn. */ int _syscall; /* Triggering system call number. */ unsigned int _arch; /* AUDIT_ARCH_* of syscall. */ } _sigsys; } _sifields; } siginfo_t __SI_ALIGNMENT; /* X/Open requires some more fields with fixed names. */ #define si_pid _sifields._kill.si_pid #define si_uid _sifields._kill.si_uid #define si_timerid _sifields._timer.si_tid #define si_overrun _sifields._timer.si_overrun #define si_status _sifields._sigchld.si_status #define si_utime _sifields._sigchld.si_utime #define si_stime _sifields._sigchld.si_stime #define si_value _sifields._rt.si_sigval #define si_int _sifields._rt.si_sigval.sival_int #define si_ptr _sifields._rt.si_sigval.sival_ptr #define si_addr _sifields._sigfault.si_addr #define si_addr_lsb _sifields._sigfault.si_addr_lsb #define si_lower _sifields._sigfault._bounds._addr_bnd._lower #define si_upper _sifields._sigfault._bounds._addr_bnd._upper #define si_pkey _sifields._sigfault._bounds._pkey #define si_band _sifields._sigpoll.si_band #define si_fd _sifields._sigpoll.si_fd #define si_call_addr _sifields._sigsys._call_addr #define si_syscall _sifields._sigsys._syscall #define si_arch _sifields._sigsys._arch # 58 "../signal/signal.h" 2 # 1 "../sysdeps/unix/sysv/linux/bits/siginfo-consts.h" 1 /* siginfo constants. Linux version. Copyright (C) 1997-2021 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 . */ #define _BITS_SIGINFO_CONSTS_H 1 /* Most of these constants are uniform across all architectures, but there is one exception. */ #define __SI_ASYNCIO_AFTER_SIGIO 1 /* Values for `si_code'. Positive values are reserved for kernel-generated signals. */ enum { SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */ SI_DETHREAD = -7, /* Sent by execve killing subsidiary threads. */ SI_TKILL, /* Sent by tkill. */ SI_SIGIO, /* Sent by queued SIGIO. */ SI_ASYNCIO, /* Sent by AIO completion. */ SI_MESGQ, /* Sent by real time mesq state change. */ SI_TIMER, /* Sent by timer expiration. */ SI_QUEUE, /* Sent by sigqueue. */ SI_USER, /* Sent by kill, sigsend. */ SI_KERNEL = 0x80 /* Send by kernel. */ #define SI_ASYNCNL SI_ASYNCNL #define SI_DETHREAD SI_DETHREAD #define SI_TKILL SI_TKILL #define SI_SIGIO SI_SIGIO #define SI_ASYNCIO SI_ASYNCIO #define SI_MESGQ SI_MESGQ #define SI_TIMER SI_TIMER #define SI_ASYNCIO SI_ASYNCIO #define SI_QUEUE SI_QUEUE #define SI_USER SI_USER #define SI_KERNEL SI_KERNEL }; /* `si_code' values for SIGILL signal. */ enum { ILL_ILLOPC = 1, /* Illegal opcode. */ #define ILL_ILLOPC ILL_ILLOPC ILL_ILLOPN, /* Illegal operand. */ #define ILL_ILLOPN ILL_ILLOPN ILL_ILLADR, /* Illegal addressing mode. */ #define ILL_ILLADR ILL_ILLADR ILL_ILLTRP, /* Illegal trap. */ #define ILL_ILLTRP ILL_ILLTRP ILL_PRVOPC, /* Privileged opcode. */ #define ILL_PRVOPC ILL_PRVOPC ILL_PRVREG, /* Privileged register. */ #define ILL_PRVREG ILL_PRVREG ILL_COPROC, /* Coprocessor error. */ #define ILL_COPROC ILL_COPROC ILL_BADSTK, /* Internal stack error. */ #define ILL_BADSTK ILL_BADSTK ILL_BADIADDR /* Unimplemented instruction address. */ #define ILL_BADIADDR ILL_BADIADDR }; /* `si_code' values for SIGFPE signal. */ enum { FPE_INTDIV = 1, /* Integer divide by zero. */ #define FPE_INTDIV FPE_INTDIV FPE_INTOVF, /* Integer overflow. */ #define FPE_INTOVF FPE_INTOVF FPE_FLTDIV, /* Floating point divide by zero. */ #define FPE_FLTDIV FPE_FLTDIV FPE_FLTOVF, /* Floating point overflow. */ #define FPE_FLTOVF FPE_FLTOVF FPE_FLTUND, /* Floating point underflow. */ #define FPE_FLTUND FPE_FLTUND FPE_FLTRES, /* Floating point inexact result. */ #define FPE_FLTRES FPE_FLTRES FPE_FLTINV, /* Floating point invalid operation. */ #define FPE_FLTINV FPE_FLTINV FPE_FLTSUB, /* Subscript out of range. */ #define FPE_FLTSUB FPE_FLTSUB FPE_FLTUNK = 14, /* Undiagnosed floating-point exception. */ #define FPE_FLTUNK FPE_FLTUNK FPE_CONDTRAP /* Trap on condition. */ #define FPE_CONDTRAP FPE_CONDTRAP }; /* `si_code' values for SIGSEGV signal. */ enum { SEGV_MAPERR = 1, /* Address not mapped to object. */ #define SEGV_MAPERR SEGV_MAPERR SEGV_ACCERR, /* Invalid permissions for mapped object. */ #define SEGV_ACCERR SEGV_ACCERR SEGV_BNDERR, /* Bounds checking failure. */ #define SEGV_BNDERR SEGV_BNDERR SEGV_PKUERR, /* Protection key checking failure. */ #define SEGV_PKUERR SEGV_PKUERR SEGV_ACCADI, /* ADI not enabled for mapped object. */ #define SEGV_ACCADI SEGV_ACCADI SEGV_ADIDERR, /* Disrupting MCD error. */ #define SEGV_ADIDERR SEGV_ADIDERR SEGV_ADIPERR, /* Precise MCD exception. */ #define SEGV_ADIPERR SEGV_ADIPERR SEGV_MTEAERR, /* Asynchronous ARM MTE error. */ #define SEGV_MTEAERR SEGV_MTEAERR SEGV_MTESERR /* Synchronous ARM MTE exception. */ #define SEGV_MTESERR SEGV_MTESERR }; /* `si_code' values for SIGBUS signal. */ enum { BUS_ADRALN = 1, /* Invalid address alignment. */ #define BUS_ADRALN BUS_ADRALN BUS_ADRERR, /* Non-existant physical address. */ #define BUS_ADRERR BUS_ADRERR BUS_OBJERR, /* Object specific hardware error. */ #define BUS_OBJERR BUS_OBJERR BUS_MCEERR_AR, /* Hardware memory error: action required. */ #define BUS_MCEERR_AR BUS_MCEERR_AR BUS_MCEERR_AO /* Hardware memory error: action optional. */ #define BUS_MCEERR_AO BUS_MCEERR_AO }; /* `si_code' values for SIGTRAP signal. */ enum { TRAP_BRKPT = 1, /* Process breakpoint. */ #define TRAP_BRKPT TRAP_BRKPT TRAP_TRACE, /* Process trace trap. */ #define TRAP_TRACE TRAP_TRACE TRAP_BRANCH, /* Process taken branch trap. */ #define TRAP_BRANCH TRAP_BRANCH TRAP_HWBKPT, /* Hardware breakpoint/watchpoint. */ #define TRAP_HWBKPT TRAP_HWBKPT TRAP_UNK /* Undiagnosed trap. */ #define TRAP_UNK TRAP_UNK }; /* `si_code' values for SIGCHLD signal. */ enum { CLD_EXITED = 1, /* Child has exited. */ #define CLD_EXITED CLD_EXITED CLD_KILLED, /* Child was killed. */ #define CLD_KILLED CLD_KILLED CLD_DUMPED, /* Child terminated abnormally. */ #define CLD_DUMPED CLD_DUMPED CLD_TRAPPED, /* Traced child has trapped. */ #define CLD_TRAPPED CLD_TRAPPED CLD_STOPPED, /* Child has stopped. */ #define CLD_STOPPED CLD_STOPPED CLD_CONTINUED /* Stopped child has continued. */ #define CLD_CONTINUED CLD_CONTINUED }; /* `si_code' values for SIGPOLL signal. */ enum { POLL_IN = 1, /* Data input available. */ #define POLL_IN POLL_IN POLL_OUT, /* Output buffers available. */ #define POLL_OUT POLL_OUT POLL_MSG, /* Input message available. */ #define POLL_MSG POLL_MSG POLL_ERR, /* I/O error. */ #define POLL_ERR POLL_ERR POLL_PRI, /* High priority input available. */ #define POLL_PRI POLL_PRI POLL_HUP /* Device disconnected. */ #define POLL_HUP POLL_HUP }; /* Architectures might also add architecture-specific constants. These are all considered GNU extensions. */ # 1 "../sysdeps/unix/sysv/linux/bits/siginfo-consts-arch.h" 1 /* Architecture-specific additional siginfo constants. */ #define _BITS_SIGINFO_CONSTS_ARCH_H 1 /* This architecture has no additional siginfo constants. */ # 214 "../sysdeps/unix/sysv/linux/bits/siginfo-consts.h" 2 # 59 "../signal/signal.h" 2 # 1 "../include/bits/types/sigval_t.h" 1 # 1 "../signal/bits/types/sigval_t.h" 1 #define __sigval_t_defined # 1 "../include/bits/types/__sigval_t.h" 1 # 5 "../signal/bits/types/sigval_t.h" 2 /* To avoid sigval_t (not a standard type name) having C++ name mangling depending on whether the selected standard includes union sigval, it should not be defined at all when using a standard for which the sigval name is not reserved; in that case, headers should not include and should use only the internal __sigval_t name. */ typedef __sigval_t sigval_t; # 2 "../include/bits/types/sigval_t.h" 2 # 63 "../signal/signal.h" 2 # 1 "../sysdeps/unix/sysv/linux/bits/types/sigevent_t.h" 1 #define __sigevent_t_defined 1 # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 5 "../sysdeps/unix/sysv/linux/bits/types/sigevent_t.h" 2 # 1 "../include/bits/types.h" 1 # 6 "../sysdeps/unix/sysv/linux/bits/types/sigevent_t.h" 2 # 1 "../include/bits/types/__sigval_t.h" 1 # 7 "../sysdeps/unix/sysv/linux/bits/types/sigevent_t.h" 2 #define __SIGEV_MAX_SIZE 64 #define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4) /* Forward declaration. */ /* Structure to transport application-defined values with signals. */ typedef struct sigevent { __sigval_t sigev_value; int sigev_signo; int sigev_notify; union { int _pad[__SIGEV_PAD_SIZE]; /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the thread to receive the signal. */ __pid_t _tid; struct { void (*_function) (__sigval_t); /* Function to start. */ pthread_attr_t *_attribute; /* Thread attributes. */ } _sigev_thread; } _sigev_un; } sigevent_t; /* POSIX names to access some of the members. */ #define sigev_notify_function _sigev_un._sigev_thread._function #define sigev_notify_attributes _sigev_un._sigev_thread._attribute # 67 "../signal/signal.h" 2 # 1 "../sysdeps/unix/sysv/linux/bits/sigevent-consts.h" 1 /* sigevent constants. Linux version. Copyright (C) 1997-2021 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 . */ #define _BITS_SIGEVENT_CONSTS_H 1 /* `sigev_notify' values. */ enum { SIGEV_SIGNAL = 0, /* Notify via signal. */ #define SIGEV_SIGNAL SIGEV_SIGNAL SIGEV_NONE, /* Other notification: meaningless. */ #define SIGEV_NONE SIGEV_NONE SIGEV_THREAD, /* Deliver via thread creation. */ #define SIGEV_THREAD SIGEV_THREAD SIGEV_THREAD_ID = 4 /* Send signal to specific thread. This is a Linux extension. */ #define SIGEV_THREAD_ID SIGEV_THREAD_ID }; # 68 "../signal/signal.h" 2 /* Type of a signal handler. */ typedef void (*__sighandler_t) (int); /* The X/Open definition of `signal' specifies the SVID semantic. Use the additional function `sysv_signal' when X/Open compatibility is requested. */ extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) __THROW; extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) __THROW; /* Set the handler for the signal SIG to HANDLER, returning the old handler, or SIG_ERR on error. By default `signal' has the BSD semantic. */ extern __sighandler_t signal (int __sig, __sighandler_t __handler) __THROW; # 100 "../signal/signal.h" /* Send signal SIG to process number PID. If PID is zero, send SIG to all processes in the current process's process group. If PID is < -1, send SIG to all processes in process group - PID. */ extern int kill (__pid_t __pid, int __sig) __THROW; /* Send SIG to all processes in process group PGRP. If PGRP is zero, send SIG to all processes in the current process's process group. */ extern int killpg (__pid_t __pgrp, int __sig) __THROW; /* Raise signal SIG, i.e., send SIG to yourself. */ extern int raise (int __sig) __THROW; /* SVID names for the same things. */ extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) __THROW; extern int gsignal (int __sig) __THROW; /* Print a message describing the meaning of the given signal number. */ extern void psignal (int __sig, const char *__s); /* Print a message describing the meaning of the given signal information. */ extern void psiginfo (const siginfo_t *__pinfo, const char *__s); /* The `sigpause' function in X/Open defines the argument as the signal number. This requires redirecting to another function because the default version in glibc uses an old BSD interface. This function is a cancellation point and therefore not marked with __THROW. */ extern int sigpause (int __sig) __asm__ ("__xpg_sigpause") __attribute_deprecated_msg__ ("Use the sigsuspend function instead"); /* None of the following functions should be used anymore. They are here only for compatibility. A single word (`int') is not guaranteed to be enough to hold a complete signal mask and therefore these functions simply do not work in many situations. Use `sigprocmask' instead. */ /* Compute mask for signal SIG. */ #define sigmask(sig) __glibc_macro_warning ("sigmask is deprecated") ((int)(1u << ((sig) - 1))) /* Block signals in MASK, returning the old mask. */ extern int sigblock (int __mask) __THROW __attribute_deprecated__; /* Set the mask of blocked signals to MASK, returning the old mask. */ extern int sigsetmask (int __mask) __THROW __attribute_deprecated__; /* Return currently selected signal mask. */ extern int siggetmask (void) __THROW __attribute_deprecated__; #define NSIG _NSIG typedef __sighandler_t sighandler_t; /* 4.4 BSD uses the name `sig_t' for this. */ typedef __sighandler_t sig_t; /* Clear all signals from SET. */ extern int sigemptyset (sigset_t *__set) __THROW __nonnull ((1)); /* Set all signals in SET. */ extern int sigfillset (sigset_t *__set) __THROW __nonnull ((1)); /* Add SIGNO to SET. */ extern int sigaddset (sigset_t *__set, int __signo) __THROW __nonnull ((1)); /* Remove SIGNO from SET. */ extern int sigdelset (sigset_t *__set, int __signo) __THROW __nonnull ((1)); /* Return 1 if SIGNO is in SET, 0 if not. */ extern int sigismember (const sigset_t *__set, int __signo) __THROW __nonnull ((1)); /* Return non-empty value is SET is not empty. */ extern int sigisemptyset (const sigset_t *__set) __THROW __nonnull ((1)); /* Build new signal set by combining the two inputs set using logical AND. */ extern int sigandset (sigset_t *__set, const sigset_t *__left, const sigset_t *__right) __THROW __nonnull ((1, 2, 3)); /* Build new signal set by combining the two inputs set using logical OR. */ extern int sigorset (sigset_t *__set, const sigset_t *__left, const sigset_t *__right) __THROW __nonnull ((1, 2, 3)); /* Get the system-specific definitions of `struct sigaction' and the `SA_*' and `SIG_*'. constants. */ # 1 "../sysdeps/unix/sysv/linux/s390/bits/sigaction.h" 1 /* Definitions for 31 & 64 bit S/390 sigaction. Copyright (C) 2001-2021 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 . */ #define _BITS_SIGACTION_H 1 # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 27 "../sysdeps/unix/sysv/linux/s390/bits/sigaction.h" 2 /* Structure describing the action to be taken when a signal arrives. */ struct sigaction { /* Signal handler. */ union { /* Used if SA_SIGINFO is not set. */ __sighandler_t sa_handler; /* Used if SA_SIGINFO is set. */ void (*sa_sigaction) (int, siginfo_t *, void *); } __sigaction_handler; #define sa_handler __sigaction_handler.sa_handler #define sa_sigaction __sigaction_handler.sa_sigaction /* Special flags. */ int __glibc_reserved0; int sa_flags; /* Restore handler. */ void (*sa_restorer) (void); /* Additional set of signals to be blocked. */ __sigset_t sa_mask; }; # 88 "../sysdeps/unix/sysv/linux/s390/bits/sigaction.h" /* Bits in `sa_flags'. */ #define SA_NOCLDSTOP 1 #define SA_NOCLDWAIT 2 #define SA_SIGINFO 4 #define SA_ONSTACK 0x08000000 #define SA_RESTART 0x10000000 #define SA_NODEFER 0x40000000 #define SA_RESETHAND 0x80000000 #define SA_INTERRUPT 0x20000000 /* Some aliases for the SA_ constants. */ #define SA_NOMASK SA_NODEFER #define SA_ONESHOT SA_RESETHAND #define SA_STACK SA_ONSTACK /* Values for the HOW argument to `sigprocmask'. */ #define SIG_BLOCK 0 #define SIG_UNBLOCK 1 #define SIG_SETMASK 2 # 230 "../signal/signal.h" 2 /* Get and/or change the set of blocked signals. */ extern int sigprocmask (int __how, const sigset_t *__restrict __set, sigset_t *__restrict __oset) __THROW; /* Change the set of blocked signals to SET, wait until a signal arrives, and restore the set of blocked signals. This function is a cancellation point and therefore not marked with __THROW. */ extern int sigsuspend (const sigset_t *__set) __nonnull ((1)); /* Get and/or set the action for signal SIG. */ extern int sigaction (int __sig, const struct sigaction *__restrict __act, struct sigaction *__restrict __oact) __THROW; /* Put in SET all signals that are blocked and waiting to be delivered. */ extern int sigpending (sigset_t *__set) __THROW __nonnull ((1)); /* Select any of pending signals from SET or wait for any to arrive. This function is a cancellation point and therefore not marked with __THROW. */ extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig) __nonnull ((1, 2)); /* Select any of pending signals from SET and place information in INFO. This function is a cancellation point and therefore not marked with __THROW. */ extern int sigwaitinfo (const sigset_t *__restrict __set, siginfo_t *__restrict __info) __nonnull ((1)); /* Select any of pending signals from SET and place information in INFO. Wait the time specified by TIMEOUT if no signal is pending. This function is a cancellation point and therefore not marked with __THROW. */ extern int sigtimedwait (const sigset_t *__restrict __set, siginfo_t *__restrict __info, const struct timespec *__restrict __timeout) __nonnull ((1)); # 289 "../signal/signal.h" /* Send signal SIG to the process PID. Associate data in VAL with the signal. */ extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val) __THROW; /* Get machine-dependent `struct sigcontext' and signal subcodes. */ # 1 "../sysdeps/unix/sysv/linux/bits/sigcontext.h" 1 /* Copyright (C) 1996-2021 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 . */ #define _BITS_SIGCONTEXT_H 1 /* Kernel headers before 2.1.1 define a struct sigcontext_struct, but we need sigcontext. */ #define sigcontext_struct sigcontext # 1 "/usr/include/asm/sigcontext.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * S390 version * Copyright IBM Corp. 1999, 2000 */ #define _ASM_S390_SIGCONTEXT_H # 1 "/usr/include/linux/types.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define _LINUX_TYPES_H # 1 "/usr/include/asm/types.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * S390 version * * Derived from "include/asm-i386/types.h" */ #define _S390_TYPES_H # 1 "/usr/include/asm-generic/int-ll64.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * asm-generic/int-ll64.h * * Integer declarations for architectures which use "long long" * for 64-bit types. */ #define _ASM_GENERIC_INT_LL64_H # 1 "/usr/include/asm/bitsperlong.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define __ASM_S390_BITSPERLONG_H #define __BITS_PER_LONG 64 # 1 "/usr/include/asm-generic/bitsperlong.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define __ASM_GENERIC_BITS_PER_LONG /* * There seems to be no way of detecting this automatically from user * space, so 64 bit architectures should override this in their * bitsperlong.h. In particular, an architecture that supports * both 32 and 64 bit user space must not rely on CONFIG_64BIT * to decide it, but rather check a compiler provided macro. */ # 12 "/usr/include/asm/bitsperlong.h" 2 3 4 # 13 "/usr/include/asm-generic/int-ll64.h" 2 3 4 /* * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the * header files exported to user space */ typedef __signed__ char __s8; typedef unsigned char __u8; typedef __signed__ short __s16; typedef unsigned short __u16; typedef __signed__ int __s32; typedef unsigned int __u32; __extension__ typedef __signed__ long long __s64; __extension__ typedef unsigned long long __u64; # 12 "/usr/include/asm/types.h" 2 3 4 /* A address type so that arithmetic can be done on it & it can be upgraded to 64 bit when necessary */ typedef unsigned long addr_t; typedef __signed__ long saddr_t; typedef struct { __u32 u[4]; } __vector128; # 6 "/usr/include/linux/types.h" 2 3 4 # 1 "/usr/include/linux/posix_types.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define _LINUX_POSIX_TYPES_H # 1 "/usr/include/linux/stddef.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ # 6 "/usr/include/linux/posix_types.h" 2 3 4 /* * This allows for 1024 file descriptors: if NR_OPEN is ever grown * beyond that you'll have to change this too. But 1024 fd's seem to be * enough even for such "real" unices like OSF/1, so hopefully this is * one limit that doesn't have to be changed [again]. * * Note that POSIX wants the FD_CLEAR(fd,fdsetp) defines to be in * (and thus ) - but this is a more logical * place for them. Solved by having dummy defines in . */ /* * This macro may have been defined in . But we always * use the one here. */ #undef __FD_SETSIZE #define __FD_SETSIZE 1024 typedef struct { unsigned long fds_bits[__FD_SETSIZE / (8 * sizeof(long))]; } __kernel_fd_set; /* Type of a signal handler. */ typedef void (*__kernel_sighandler_t)(int); /* Type of a SYSV IPC key. */ typedef int __kernel_key_t; typedef int __kernel_mqd_t; # 1 "/usr/include/asm/posix_types.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * S390 version * */ #define __ARCH_S390_POSIX_TYPES_H /* * This file is generally used by user-level software, so you need to * be a little careful about namespace pollution etc. Also, we cannot * assume GCC is being used. */ typedef unsigned long __kernel_size_t; typedef long __kernel_ssize_t; #define __kernel_size_t __kernel_size_t typedef unsigned short __kernel_old_dev_t; #define __kernel_old_dev_t __kernel_old_dev_t # 34 "/usr/include/asm/posix_types.h" 3 4 typedef unsigned int __kernel_ino_t; typedef unsigned int __kernel_mode_t; typedef int __kernel_ipc_pid_t; typedef unsigned int __kernel_uid_t; typedef unsigned int __kernel_gid_t; typedef long __kernel_ptrdiff_t; typedef unsigned long __kernel_sigset_t; /* at least 32 bits */ #define __kernel_ino_t __kernel_ino_t #define __kernel_mode_t __kernel_mode_t #define __kernel_ipc_pid_t __kernel_ipc_pid_t #define __kernel_uid_t __kernel_uid_t #define __kernel_gid_t __kernel_gid_t # 1 "/usr/include/asm-generic/posix_types.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define __ASM_GENERIC_POSIX_TYPES_H /* * This file is generally used by user-level software, so you need to * be a little careful about namespace pollution etc. * * First the types that are often defined in different ways across * architectures, so that you can override them. */ typedef long __kernel_long_t; typedef unsigned long __kernel_ulong_t; typedef int __kernel_pid_t; typedef __kernel_long_t __kernel_suseconds_t; typedef int __kernel_daddr_t; typedef unsigned int __kernel_uid32_t; typedef unsigned int __kernel_gid32_t; typedef __kernel_uid_t __kernel_old_uid_t; typedef __kernel_gid_t __kernel_old_gid_t; /* * Most 32 bit architectures use "unsigned int" size_t, * and all 64 bit architectures use "unsigned long" size_t. */ # 77 "/usr/include/asm-generic/posix_types.h" 3 4 typedef struct { int val[2]; } __kernel_fsid_t; /* * anything below here should be completely generic */ typedef __kernel_long_t __kernel_off_t; typedef long long __kernel_loff_t; typedef __kernel_long_t __kernel_old_time_t; typedef __kernel_long_t __kernel_time_t; typedef long long __kernel_time64_t; typedef __kernel_long_t __kernel_clock_t; typedef int __kernel_timer_t; typedef int __kernel_clockid_t; typedef char * __kernel_caddr_t; typedef unsigned short __kernel_uid16_t; typedef unsigned short __kernel_gid16_t; # 52 "/usr/include/asm/posix_types.h" 2 3 4 # 37 "/usr/include/linux/posix_types.h" 2 3 4 # 10 "/usr/include/linux/types.h" 2 3 4 /* * Below are truly Linux-specific types that should never collide with * any application/library that wants linux/types.h. */ #define __bitwise__ #define __bitwise __bitwise__ typedef __u16 __bitwise __le16; typedef __u16 __bitwise __be16; typedef __u32 __bitwise __le32; typedef __u32 __bitwise __be32; typedef __u64 __bitwise __le64; typedef __u64 __bitwise __be64; typedef __u16 __bitwise __sum16; typedef __u32 __bitwise __wsum; /* * aligned_u64 should be used in defining kernel<->userspace ABIs to avoid * common 32/64-bit compat problems. * 64-bit values align to 4-byte boundaries on x86_32 (and possibly other * architectures) and to 8-byte boundaries on 64-bit architectures. The new * aligned_64 type enforces 8-byte alignment so that structs containing * aligned_64 values have the same alignment on 32-bit and 64-bit architectures. * No conversions are necessary between 32-bit user-space and a 64-bit kernel. */ #define __aligned_u64 __u64 __attribute__((aligned(8))) #define __aligned_be64 __be64 __attribute__((aligned(8))) #define __aligned_le64 __le64 __attribute__((aligned(8))) typedef unsigned __bitwise __poll_t; # 12 "/usr/include/asm/sigcontext.h" 2 3 4 #define __NUM_GPRS 16 #define __NUM_FPRS 16 #define __NUM_ACRS 16 #define __NUM_VXRS 32 #define __NUM_VXRS_LOW 16 #define __NUM_VXRS_HIGH 16 # 29 "/usr/include/asm/sigcontext.h" 3 4 /* Has to be at least _NSIG_WORDS from asm/signal.h */ #define _SIGCONTEXT_NSIG 64 #define _SIGCONTEXT_NSIG_BPW 64 /* Size of stack frame allocated when calling signal handler. */ #define __SIGNAL_FRAMESIZE 160 #define _SIGCONTEXT_NSIG_WORDS (_SIGCONTEXT_NSIG / _SIGCONTEXT_NSIG_BPW) #define _SIGMASK_COPY_SIZE (sizeof(unsigned long)*_SIGCONTEXT_NSIG_WORDS) typedef struct { unsigned long mask; unsigned long addr; } __attribute__ ((aligned(8))) _psw_t; typedef struct { _psw_t psw; unsigned long gprs[__NUM_GPRS]; unsigned int acrs[__NUM_ACRS]; } _s390_regs_common; typedef struct { unsigned int fpc; unsigned int pad; double fprs[__NUM_FPRS]; } _s390_fp_regs; typedef struct { _s390_regs_common regs; _s390_fp_regs fpregs; } _sigregs; typedef struct { unsigned long long vxrs_low[__NUM_VXRS_LOW]; __vector128 vxrs_high[__NUM_VXRS_HIGH]; unsigned char __reserved[128]; } _sigregs_ext; struct sigcontext { unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS]; _sigregs *sregs; }; # 31 "../sysdeps/unix/sysv/linux/bits/sigcontext.h" 2 /* The Linux kernel headers redefine NULL wrongly, so cleanup afterwards. */ #define __need_NULL # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 35 "../sysdeps/unix/sysv/linux/bits/sigcontext.h" 2 # 302 "../signal/signal.h" 2 /* Restore the state saved in SCP. */ extern int sigreturn (struct sigcontext *__scp) __THROW; #define __need_size_t # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 312 "../signal/signal.h" 2 # 1 "../sysdeps/unix/sysv/linux/bits/types/stack_t.h" 1 /* Define stack_t. Linux version. Copyright (C) 1998-2021 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 . */ #define __stack_t_defined 1 #define __need_size_t # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 24 "../sysdeps/unix/sysv/linux/bits/types/stack_t.h" 2 /* Structure describing a signal stack. */ typedef struct { void *ss_sp; int ss_flags; size_t ss_size; } stack_t; # 314 "../signal/signal.h" 2 /* This will define `ucontext_t' and `mcontext_t'. */ # 1 "../sysdeps/unix/sysv/linux/s390/sys/ucontext.h" 1 /* Copyright (C) 2000-2021 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 . */ #define _SYS_UCONTEXT_H 1 # 1 "../include/bits/types/sigset_t.h" 1 # 24 "../sysdeps/unix/sysv/linux/s390/sys/ucontext.h" 2 #define __ctx(fld) fld /* Type for a program status word. */ typedef struct { unsigned long __ctx(mask); unsigned long __ctx(addr); } __attribute__ ((__aligned__(8))) __psw_t; /* Type for a general-purpose register. */ typedef unsigned long greg_t; /* And the whole bunch of them. We should have used `struct s390_regs', but to avoid name space pollution and since the tradition says that the register set is an array, we make gregset_t a simple array that has the same size as s390_regs. This is needed for the elf_prstatus structure. */ #define __NGREG 27 #define NGREG __NGREG /* Must match kernels psw_t alignment. */ typedef greg_t gregset_t[__NGREG] __attribute__ ((__aligned__(8))); typedef union { double __ctx(d); float __ctx(f); } fpreg_t; /* Register set for the floating-point registers. */ typedef struct { unsigned int __ctx(fpc); fpreg_t __ctx(fprs)[16]; } fpregset_t; /* Context to describe whole processor state. */ typedef struct { __psw_t __ctx(psw); unsigned long __ctx(gregs)[16]; unsigned int __ctx(aregs)[16]; fpregset_t __ctx(fpregs); } mcontext_t; /* Userlevel context. */ typedef struct ucontext_t { unsigned long int __ctx(uc_flags); struct ucontext_t *uc_link; stack_t uc_stack; mcontext_t uc_mcontext; sigset_t uc_sigmask; } ucontext_t; #undef __ctx # 317 "../signal/signal.h" 2 /* If INTERRUPT is nonzero, make signal SIG interrupt system calls (causing them to fail with EINTR); if INTERRUPT is zero, make system calls be restarted after signal SIG. */ extern int siginterrupt (int __sig, int __interrupt) __THROW __attribute_deprecated_msg__ ("Use sigaction with SA_RESTART instead"); # 1 "../include/bits/sigstack.h" 1 # 1 "../sysdeps/unix/sysv/linux/bits/sigstack.h" 1 /* sigstack, sigaltstack definitions. Copyright (C) 1998-2021 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 . */ #define _BITS_SIGSTACK_H 1 /* Minimum stack size for a signal handler. */ #define MINSIGSTKSZ 2048 /* System default stack size. */ #define SIGSTKSZ 8192 # 2 "../include/bits/sigstack.h" 2 #define CONSTANT_MINSIGSTKSZ MINSIGSTKSZ # 328 "../signal/signal.h" 2 # 1 "../include/bits/sigstksz.h" 1 /* NB: Don't define MINSIGSTKSZ nor SIGSTKSZ to sysconf (SC_SIGSTKSZ) for glibc build. IS_IN can only be used when _ISOMAC isn't defined. */ # 329 "../signal/signal.h" 2 # 1 "../sysdeps/unix/sysv/linux/bits/ss_flags.h" 1 /* ss_flags values for stack_t. Linux version. Copyright (C) 1998-2021 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 . */ #define _BITS_SS_FLAGS_H 1 /* Possible values for `ss_flags'. */ enum { SS_ONSTACK = 1, #define SS_ONSTACK SS_ONSTACK SS_DISABLE #define SS_DISABLE SS_DISABLE }; # 330 "../signal/signal.h" 2 /* Alternate signal handler stack interface. This interface should always be preferred over `sigstack'. */ extern int sigaltstack (const stack_t *__restrict __ss, stack_t *__restrict __oss) __THROW; # 1 "../include/bits/types/struct_sigstack.h" 1 # 1 "../signal/bits/types/struct_sigstack.h" 1 /* Define struct sigstack. Copyright (C) 1998-2021 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 . */ #define __sigstack_defined 1 /* Structure describing a signal stack (obsolete). */ struct sigstack { void *ss_sp; /* Signal stack pointer. */ int ss_onstack; /* Nonzero if executing on this stack. */ }; # 2 "../include/bits/types/struct_sigstack.h" 2 # 340 "../signal/signal.h" 2 /* Run signals handlers on the stack specified by SS (if not NULL). If OSS is not NULL, it is filled in with the old signal stack status. This interface is obsolete and on many platform not implemented. */ extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) __THROW __attribute_deprecated__; /* Simplified interface for signal management. */ /* Add SIG to the calling process' signal mask. */ extern int sighold (int __sig) __THROW __attribute_deprecated_msg__ ("Use the sigprocmask function instead"); /* Remove SIG from the calling process' signal mask. */ extern int sigrelse (int __sig) __THROW __attribute_deprecated_msg__ ("Use the sigprocmask function instead"); /* Set the disposition of SIG to SIG_IGN. */ extern int sigignore (int __sig) __THROW __attribute_deprecated_msg__ ("Use the signal function instead"); /* Set the disposition of SIG. */ extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW __attribute_deprecated_msg__ ("Use the signal and sigprocmask functions instead"); /* Some of the functions for handling signals in threaded programs must be defined here. */ # 1 "../sysdeps/pthread/bits/sigthread.h" 1 /* Signal handling function for threaded programs. Copyright (C) 1998-2021 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; see the file COPYING.LIB. If not, see . */ #define _BITS_SIGTHREAD_H 1 /* Functions for handling signals. */ /* Modify the signal mask for the calling thread. The arguments have the same meaning as for sigprocmask(2). */ extern int pthread_sigmask (int __how, const __sigset_t *__restrict __newmask, __sigset_t *__restrict __oldmask)__THROW; /* Send signal SIGNO to the given thread. */ extern int pthread_kill (pthread_t __threadid, int __signo) __THROW; /* Queue signal and data to a thread. */ extern int pthread_sigqueue (pthread_t __threadid, int __signo, const union sigval __value) __THROW; # 377 "../signal/signal.h" 2 /* The following functions are used internally in the C library and in other code which need deep insights. */ /* Return number of available real-time signal with highest priority. */ extern int __libc_current_sigrtmin (void) __THROW; /* Return number of available real-time signal with lowest priority. */ extern int __libc_current_sigrtmax (void) __THROW; #define SIGRTMIN (__libc_current_sigrtmin ()) #define SIGRTMAX (__libc_current_sigrtmax ()) /* System-specific extensions. */ # 1 "../sysdeps/unix/sysv/linux/bits/signal_ext.h" 1 /* System-specific extensions of , Linux version. Copyright (C) 2019-2021 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 . */ /* Send SIGNAL to the thread TID in the thread group (process) identified by TGID. This function behaves like kill, but also fails with ESRCH if the specified TID does not belong to the specified thread group. */ extern int tgkill (__pid_t __tgid, __pid_t __tid, int __signal); # 392 "../signal/signal.h" 2 __END_DECLS # 3 "../include/signal.h" 2 # 1 "../sysdeps/unix/sysv/linux/sigsetops.h" 1 /* __sigset_t manipulators. Linux version. Copyright (C) 1991-2021 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 . */ #define _SIGSETOPS_H 1 # 1 "../include/signal.h" 1 # 23 "../sysdeps/unix/sysv/linux/sigsetops.h" 2 # 1 "../include/limits.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types */ # 116 "../include/limits.h" /* Get the compiler's limits.h, which defines almost all the ISO constants. We put this #include_next outside the double inclusion check because it should be possible to include this file more than once and still get the definitions from gcc's header. */ /* The files in some gcc versions don't define LLONG_MIN, LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for ages are available. */ /* The integer width macros are not defined by GCC's before GCC 7, or if _GNU_SOURCE rather than __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature. */ /* The macros for _Bool are not defined by GCC's before GCC 11, or if _GNU_SOURCE is defined rather than enabling C2x support with -std. */ /* POSIX adds things to . */ # 1 "../include/bits/posix1_lim.h" 1 # 196 "../include/limits.h" 2 # 1 "../include/bits/posix2_lim.h" 1 # 200 "../include/limits.h" 2 # 24 "../sysdeps/unix/sysv/linux/sigsetops.h" 2 /* Return a mask that includes the bit for SIG only. */ #define __sigmask(sig) (1UL << (((sig) - 1) % ULONG_WIDTH)) /* Return the word index for SIG. */ static inline unsigned long int __sigword (int sig) { return (sig - 1) / ULONG_WIDTH; } /* Linux sig* functions only handle up to __NSIG_WORDS words instead of full _SIGSET_NWORDS sigset size. The signal numbers are 1-based, and bit 0 of a signal mask is for signal 1. */ #define __NSIG_WORDS (ALIGN_UP ((_NSIG - 1), ULONG_WIDTH) / ULONG_WIDTH) _Static_assert (__NSIG_WORDS <= _SIGSET_NWORDS, "__NSIG_WORDS > _SIGSET_WORDS"); /* This macro is used on syscall that takes a sigset_t to specify the expected size in bytes. As for glibc, kernel sigset is implemented as an array of unsigned long. */ #define __NSIG_BYTES (__NSIG_WORDS * (ULONG_WIDTH / UCHAR_WIDTH)) static inline void __sigemptyset (sigset_t *set) { int cnt = __NSIG_WORDS; while (--cnt >= 0) set->__val[cnt] = 0; } static inline void __sigfillset (sigset_t *set) { int cnt = __NSIG_WORDS; while (--cnt >= 0) set->__val[cnt] = ~0UL; } static inline int __sigisemptyset (const sigset_t *set) { int cnt = __NSIG_WORDS; int ret = set->__val[--cnt]; while (ret == 0 && --cnt >= 0) ret = set->__val[cnt]; return ret == 0; } static inline void __sigandset (sigset_t *dest, const sigset_t *left, const sigset_t *right) { int cnt = __NSIG_WORDS; while (--cnt >= 0) dest->__val[cnt] = left->__val[cnt] & right->__val[cnt]; } static inline void __sigorset (sigset_t *dest, const sigset_t *left, const sigset_t *right) { int cnt = __NSIG_WORDS; while (--cnt >= 0) dest->__val[cnt] = left->__val[cnt] | right->__val[cnt]; } static inline int __sigismember (const sigset_t *set, int sig) { unsigned long int mask = __sigmask (sig); unsigned long int word = __sigword (sig); return set->__val[word] & mask ? 1 : 0; } static inline void __sigaddset (sigset_t *set, int sig) { unsigned long int mask = __sigmask (sig); unsigned long int word = __sigword (sig); set->__val[word] |= mask; } static inline void __sigdelset (sigset_t *set, int sig) { unsigned long int mask = __sigmask (sig); unsigned long int word = __sigword (sig); set->__val[word] &= ~mask; } # 6 "../include/signal.h" 2 libc_hidden_proto (sigemptyset) libc_hidden_proto (sigfillset) libc_hidden_proto (sigaddset) libc_hidden_proto (sigdelset) libc_hidden_proto (sigismember) extern int __sigpause (int sig_or_mask, int is_sig); libc_hidden_proto (__sigpause) libc_hidden_proto (raise) libc_hidden_proto (__libc_current_sigrtmin) libc_hidden_proto (__libc_current_sigrtmax) extern const char * const __sys_siglist[_NSIG]; libc_hidden_proto (__sys_siglist) extern const char * const __sys_sigabbrev[_NSIG]; libc_hidden_proto (__sys_sigabbrev) /* Now define the internal interfaces. */ extern __sighandler_t __bsd_signal (int __sig, __sighandler_t __handler); extern int __kill (__pid_t __pid, int __sig); libc_hidden_proto (__kill) extern int __sigaction (int __sig, const struct sigaction *__restrict __act, struct sigaction *__restrict __oact); libc_hidden_proto (__sigaction) extern int __sigblock (int __mask); libc_hidden_proto (__sigblock) extern int __sigsetmask (int __mask); extern int __sigprocmask (int __how, const sigset_t *__set, sigset_t *__oset); libc_hidden_proto (__sigprocmask) extern int __sigsuspend (const sigset_t *__set); libc_hidden_proto (__sigsuspend) extern int __sigwait (const sigset_t *__set, int *__sig); libc_hidden_proto (__sigwait) extern int __sigwaitinfo (const sigset_t *__set, siginfo_t *__info); libc_hidden_proto (__sigwaitinfo) #define __sigtimedwait64 __sigtimedwait extern int __sigtimedwait (const sigset_t *__set, siginfo_t *__info, const struct timespec *__timeout); libc_hidden_proto (__sigtimedwait) extern int __sigqueue (__pid_t __pid, int __sig, const union sigval __val); extern int __sigreturn (struct sigcontext *__scp); extern int __sigaltstack (const stack_t *__ss, stack_t *__oss); libc_hidden_proto (__sigaltstack) extern int __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact); libc_hidden_proto (__libc_sigaction) extern int __default_sigpause (int mask); extern int __xpg_sigpause (int sig); /* Allocate real-time signal with highest/lowest available priority. */ extern int __libc_allocate_rtsig (int __high); # 29 "../misc/sys/param.h" 2 /* This file defines some things in system-specific ways. */ # 1 "../sysdeps/unix/sysv/linux/bits/param.h" 1 /* Old-style Unix parameters and limits. Linux version. Copyright (C) 1995-2021 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 . */ #define __undef_ARG_MAX # 1 "/usr/include/linux/param.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define _LINUX_PARAM_H # 1 "/usr/include/asm/param.h" 1 3 4 # 1 "/usr/include/asm-generic/param.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define __ASM_GENERIC_PARAM_H #define HZ 100 #define EXEC_PAGESIZE 4096 #define NOGROUP (-1) #define MAXHOSTNAMELEN 64 # 2 "/usr/include/asm/param.h" 2 3 4 # 6 "/usr/include/linux/param.h" 2 3 4 # 29 "../sysdeps/unix/sysv/linux/bits/param.h" 2 /* The kernel headers define ARG_MAX. The value is wrong, though. */ #undef ARG_MAX #undef __undef_ARG_MAX #define MAXSYMLINKS 20 /* The following are not really correct but it is a value we used for a long time and which seems to be usable. People should not use NOFILE and NCARGS anyway. */ #define NOFILE 256 #define NCARGS 131072 # 32 "../misc/sys/param.h" 2 /* BSD names for some values. */ #define NBBY CHAR_BIT #define NGROUPS NGROUPS_MAX #define CANBSIZ MAX_CANON #define MAXPATHLEN PATH_MAX # 65 "../misc/sys/param.h" /* Magical constants. */ #define NODEV ((dev_t) -1) /* Unit of `st_blocks'. */ #define DEV_BSIZE 512 /* Bit map related macros. */ #define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY)) #define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY))) #define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY))) #define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0) /* Macros for counting and rounding. */ #define howmany(x,y) (((x) + ((y) - 1)) / (y)) #define roundup(x,y) (__builtin_constant_p (y) && powerof2 (y) ? (((x) + (y) - 1) & ~((y) - 1)) : ((((x) + ((y) - 1)) / (y)) * (y))) #define powerof2(x) ((((x) - 1) & (x)) == 0) /* Macros for min/max. */ #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) # 2 "../include/sys/param.h" 2 # 39 "../sysdeps/generic/hp-timing-common.h" 2 # 1 "../sysdeps/generic/_itoa.h" 1 /* Internal function for converting integers to ASCII. Copyright (C) 1994-2021 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 . */ #define _ITOA_H # 1 "../include/limits.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types */ # 116 "../include/limits.h" /* Get the compiler's limits.h, which defines almost all the ISO constants. We put this #include_next outside the double inclusion check because it should be possible to include this file more than once and still get the definitions from gcc's header. */ /* The files in some gcc versions don't define LLONG_MIN, LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for ages are available. */ /* The integer width macros are not defined by GCC's before GCC 7, or if _GNU_SOURCE rather than __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature. */ /* The macros for _Bool are not defined by GCC's before GCC 11, or if _GNU_SOURCE is defined rather than enabling C2x support with -std. */ /* POSIX adds things to . */ # 1 "../include/bits/posix1_lim.h" 1 # 196 "../include/limits.h" 2 # 1 "../include/bits/posix2_lim.h" 1 # 200 "../include/limits.h" 2 # 23 "../sysdeps/generic/_itoa.h" 2 /* When long long is different from long, by default, _itoa_word is provided to convert long to ASCII and _itoa is provided to convert long long. A sysdeps _itoa.h can define _ITOA_NEEDED to 0 and define _ITOA_WORD_TYPE to unsigned long long int to override it so that _itoa_word is changed to convert long long to ASCII and _itoa is mapped to _itoa_word. */ #define _ITOA_NEEDED (LONG_MAX != LLONG_MAX) #define _ITOA_WORD_TYPE unsigned long int /* Convert VALUE into ASCII in base BASE (2..36). Write backwards starting the character just before BUFLIM. Return the address of the first (left-to-right) character in the number. Use upper case letters iff UPPER_CASE is nonzero. */ extern char *_itoa (unsigned long long int value, char *buflim, unsigned int base, int upper_case) attribute_hidden; extern const char _itoa_upper_digits[]; extern const char _itoa_lower_digits[]; hidden_proto (_itoa_upper_digits) hidden_proto (_itoa_lower_digits) extern char *_itoa_word (_ITOA_WORD_TYPE value, char *buflim, unsigned int base, int upper_case) attribute_hidden; # 88 "../sysdeps/generic/_itoa.h" /* Similar to the _itoa functions, but output starts at buf and pointer after the last written character is returned. */ extern char *_fitoa_word (_ITOA_WORD_TYPE value, char *buf, unsigned int base, int upper_case) attribute_hidden; extern char *_fitoa (unsigned long long value, char *buf, unsigned int base, int upper_case) attribute_hidden; /* No need for special long long versions. */ #define _itoa(value,buf,base,upper_case) _itoa_word (value, buf, base, upper_case) #define _fitoa(value,buf,base,upper_case) _fitoa_word (value, buf, base, upper_case) # 40 "../sysdeps/generic/hp-timing-common.h" 2 /* Compute the difference between START and END, storing into DIFF. */ #define HP_TIMING_DIFF(Diff,Start,End) ((Diff) = (End) - (Start)) /* Accumulate ADD into SUM. No attempt is made to be thread-safe. */ #define HP_TIMING_ACCUM_NT(Sum,Diff) ((Sum) += (Diff)) #define HP_TIMING_PRINT_SIZE (3 * sizeof (hp_timing_t) + 1) /* Write a decimal representation of the timing value into the given string. */ #define HP_TIMING_PRINT(Dest,Len,Val) do { char __buf[HP_TIMING_PRINT_SIZE]; char *__dest = (Dest); size_t __len = (Len); char *__cp = _itoa ((Val), __buf + sizeof (__buf), 10, 0); size_t __cp_len = MIN (__buf + sizeof (__buf) - __cp, __len); memcpy (__dest, __cp, __cp_len); __dest[__cp_len - 1] = '\0'; } while (0) # 26 "../sysdeps/s390/hp-timing.h" 2 /* We use 64 bit values for the times. Note: Bit 51 is incremented every 0.000 001s = 1us. */ typedef unsigned long long int hp_timing_t; #define HP_TIMING_INLINE (1) #define HP_TIMING_NOW(VAR) do { __asm__ __volatile__ ("stckf %0" : "=Q" (VAR) : : "cc"); } while (0) # 27 "../nptl/descr.h" 2 # 1 "../sysdeps/nptl/lowlevellock.h" 1 /* Low-level lock implementation. Generic futex-based version. Copyright (C) 2005-2021 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 . */ #define _LOWLEVELLOCK_H 1 # 1 "../sysdeps/unix/sysv/linux/s390/elision-conf.h" 1 /* Lock elision tunable parameters. Copyright (C) 2014-2021 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 . */ #define _ELISION_CONF_H 1 # 1 "../include/pthread.h" 1 # 1 "../sysdeps/nptl/pthread.h" 1 /* Copyright (C) 2002-2021 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 . */ #define _PTHREAD_H 1 # 1 "../include/time.h" 1 # 1 "../time/time.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * ISO C99 Standard: 7.23 Date and time */ #define _TIME_H 1 #define __need_size_t #define __need_NULL # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 30 "../time/time.h" 2 /* This defines CLOCKS_PER_SEC, which is the number of processor clock ticks per second, and possibly a number of other constants. */ # 1 "../sysdeps/unix/sysv/linux/bits/time.h" 1 /* System-dependent timing definitions. Linux version. Copyright (C) 1996-2021 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 . */ /* * Never include this file directly; use instead. */ #define _BITS_TIME_H 1 # 1 "../include/bits/types.h" 1 # 27 "../sysdeps/unix/sysv/linux/bits/time.h" 2 /* ISO/IEC 9899:1999 7.23.1: Components of time The macro `CLOCKS_PER_SEC' is an expression with type `clock_t' that is the number per second of the value returned by the `clock' function. */ /* CAE XSH, Issue 4, Version 2: The value of CLOCKS_PER_SEC is required to be 1 million on all XSI-conformant systems. */ #define CLOCKS_PER_SEC ((__clock_t) 1000000) /* Identifier for system-wide realtime clock. */ #define CLOCK_REALTIME 0 /* Monotonic system-wide clock. */ #define CLOCK_MONOTONIC 1 /* High-resolution timer from the CPU. */ #define CLOCK_PROCESS_CPUTIME_ID 2 /* Thread-specific CPU-time clock. */ #define CLOCK_THREAD_CPUTIME_ID 3 /* Monotonic system-wide clock, not adjusted for frequency scaling. */ #define CLOCK_MONOTONIC_RAW 4 /* Identifier for system-wide realtime clock, updated only on ticks. */ #define CLOCK_REALTIME_COARSE 5 /* Monotonic system-wide clock, updated only on ticks. */ #define CLOCK_MONOTONIC_COARSE 6 /* Monotonic system-wide clock that includes time spent in suspension. */ #define CLOCK_BOOTTIME 7 /* Like CLOCK_REALTIME but also wakes suspended system. */ #define CLOCK_REALTIME_ALARM 8 /* Like CLOCK_BOOTTIME but also wakes suspended system. */ #define CLOCK_BOOTTIME_ALARM 9 /* Like CLOCK_REALTIME but in International Atomic Time. */ #define CLOCK_TAI 11 /* Flag to indicate time is absolute. */ #define TIMER_ABSTIME 1 # 1 "../sysdeps/unix/sysv/linux/bits/timex.h" 1 /* Copyright (C) 1995-2021 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 . */ #define _BITS_TIMEX_H 1 # 1 "../include/bits/types.h" 1 # 22 "../sysdeps/unix/sysv/linux/bits/timex.h" 2 # 1 "../include/bits/types/struct_timeval.h" 1 # 23 "../sysdeps/unix/sysv/linux/bits/timex.h" 2 /* These definitions from linux/timex.h as of 3.18. */ struct timex { # 58 "../sysdeps/unix/sysv/linux/bits/timex.h" unsigned int modes; /* mode selector */ __syscall_slong_t offset; /* time offset (usec) */ __syscall_slong_t freq; /* frequency offset (scaled ppm) */ __syscall_slong_t maxerror; /* maximum error (usec) */ __syscall_slong_t esterror; /* estimated error (usec) */ int status; /* clock command/status */ __syscall_slong_t constant; /* pll time constant */ __syscall_slong_t precision; /* clock precision (usec) (ro) */ __syscall_slong_t tolerance; /* clock frequency tolerance (ppm) (ro) */ struct timeval time; /* (read only, except for ADJ_SETOFFSET) */ __syscall_slong_t tick; /* (modified) usecs between clock ticks */ __syscall_slong_t ppsfreq; /* pps frequency (scaled ppm) (ro) */ __syscall_slong_t jitter; /* pps jitter (us) (ro) */ int shift; /* interval duration (s) (shift) (ro) */ __syscall_slong_t stabil; /* pps stability (scaled ppm) (ro) */ __syscall_slong_t jitcnt; /* jitter limit exceeded (ro) */ __syscall_slong_t calcnt; /* calibration intervals (ro) */ __syscall_slong_t errcnt; /* calibration errors (ro) */ __syscall_slong_t stbcnt; /* stability limit exceeded (ro) */ int tai; /* TAI offset (ro) */ /* ??? */ int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; }; /* Mode codes (timex.mode) */ #define ADJ_OFFSET 0x0001 #define ADJ_FREQUENCY 0x0002 #define ADJ_MAXERROR 0x0004 #define ADJ_ESTERROR 0x0008 #define ADJ_STATUS 0x0010 #define ADJ_TIMECONST 0x0020 #define ADJ_TAI 0x0080 #define ADJ_SETOFFSET 0x0100 #define ADJ_MICRO 0x1000 #define ADJ_NANO 0x2000 #define ADJ_TICK 0x4000 #define ADJ_OFFSET_SINGLESHOT 0x8001 #define ADJ_OFFSET_SS_READ 0xa001 /* xntp 3.4 compatibility names */ #define MOD_OFFSET ADJ_OFFSET #define MOD_FREQUENCY ADJ_FREQUENCY #define MOD_MAXERROR ADJ_MAXERROR #define MOD_ESTERROR ADJ_ESTERROR #define MOD_STATUS ADJ_STATUS #define MOD_TIMECONST ADJ_TIMECONST #define MOD_CLKB ADJ_TICK #define MOD_CLKA ADJ_OFFSET_SINGLESHOT #define MOD_TAI ADJ_TAI #define MOD_MICRO ADJ_MICRO #define MOD_NANO ADJ_NANO /* Status codes (timex.status) */ #define STA_PLL 0x0001 #define STA_PPSFREQ 0x0002 #define STA_PPSTIME 0x0004 #define STA_FLL 0x0008 #define STA_INS 0x0010 #define STA_DEL 0x0020 #define STA_UNSYNC 0x0040 #define STA_FREQHOLD 0x0080 #define STA_PPSSIGNAL 0x0100 #define STA_PPSJITTER 0x0200 #define STA_PPSWANDER 0x0400 #define STA_PPSERROR 0x0800 #define STA_CLOCKERR 0x1000 #define STA_NANO 0x2000 #define STA_MODE 0x4000 #define STA_CLK 0x8000 /* Read-only bits */ #define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK) # 74 "../sysdeps/unix/sysv/linux/bits/time.h" 2 __BEGIN_DECLS /* Tune a POSIX clock. */ extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW; # 89 "../sysdeps/unix/sysv/linux/bits/time.h" __END_DECLS # 34 "../time/time.h" 2 /* Many of the typedefs and structs whose official home is this header may also need to be defined by other headers. */ # 1 "../include/bits/types/clock_t.h" 1 # 38 "../time/time.h" 2 # 1 "../include/bits/types/time_t.h" 1 # 39 "../time/time.h" 2 # 1 "../include/bits/types/struct_tm.h" 1 # 1 "../time/bits/types/struct_tm.h" 1 #define __struct_tm_defined 1 # 1 "../include/bits/types.h" 1 # 5 "../time/bits/types/struct_tm.h" 2 /* ISO C `broken-down time' structure. */ struct tm { int tm_sec; /* Seconds. [0-60] (1 leap second) */ int tm_min; /* Minutes. [0-59] */ int tm_hour; /* Hours. [0-23] */ int tm_mday; /* Day. [1-31] */ int tm_mon; /* Month. [0-11] */ int tm_year; /* Year - 1900. */ int tm_wday; /* Day of week. [0-6] */ int tm_yday; /* Days in year.[0-365] */ int tm_isdst; /* DST. [-1/0/1]*/ long int tm_gmtoff; /* Seconds east of UTC. */ const char *tm_zone; /* Timezone abbreviation. */ }; # 2 "../include/bits/types/struct_tm.h" 2 # 40 "../time/time.h" 2 # 1 "../include/bits/types/struct_timespec.h" 1 # 43 "../time/time.h" 2 # 1 "../include/bits/types/clockid_t.h" 1 # 47 "../time/time.h" 2 # 1 "../include/bits/types/timer_t.h" 1 # 48 "../time/time.h" 2 # 1 "../include/bits/types/struct_itimerspec.h" 1 # 1 "../time/bits/types/struct_itimerspec.h" 1 #define __itimerspec_defined 1 # 1 "../include/bits/types.h" 1 # 5 "../time/bits/types/struct_itimerspec.h" 2 # 1 "../include/bits/types/struct_timespec.h" 1 # 6 "../time/bits/types/struct_itimerspec.h" 2 /* POSIX.1b structure for timer start values and intervals. */ struct itimerspec { struct timespec it_interval; struct timespec it_value; }; # 2 "../include/bits/types/struct_itimerspec.h" 2 # 49 "../time/time.h" 2 struct sigevent; # 1 "../include/bits/types/locale_t.h" 1 # 61 "../time/time.h" 2 /* Time base values for timespec_get. */ #define TIME_UTC 1 __BEGIN_DECLS /* Time used by the program so far (user time + system time). The result / CLOCKS_PER_SEC is program time in seconds. */ extern clock_t clock (void) __THROW; /* Return the current time and put it in *TIMER if TIMER is not NULL. */ extern time_t time (time_t *__timer) __THROW; /* Return the difference between TIME1 and TIME0. */ extern double difftime (time_t __time1, time_t __time0) __THROW __attribute__ ((__const__)); /* Return the `time_t' representation of TP and normalize TP. */ extern time_t mktime (struct tm *__tp) __THROW; # 96 "../time/time.h" /* Format TP into S according to FORMAT. Write no more than MAXSIZE characters and return the number of characters written, or 0 if it would exceed MAXSIZE. */ extern size_t strftime (char *__restrict __s, size_t __maxsize, const char *__restrict __format, const struct tm *__restrict __tp) __THROW; /* Parse S according to FORMAT and store binary time information in TP. The return value is a pointer to the first unparsed character in S. */ extern char *strptime (const char *__restrict __s, const char *__restrict __fmt, struct tm *__tp) __THROW; /* Similar to the two functions above but take the information from the provided locale and not the global locale. */ extern size_t strftime_l (char *__restrict __s, size_t __maxsize, const char *__restrict __format, const struct tm *__restrict __tp, locale_t __loc) __THROW; extern char *strptime_l (const char *__restrict __s, const char *__restrict __fmt, struct tm *__tp, locale_t __loc) __THROW; /* Return the `struct tm' representation of *TIMER in Universal Coordinated Time (aka Greenwich Mean Time). */ extern struct tm *gmtime (const time_t *__timer) __THROW; /* Return the `struct tm' representation of *TIMER in the local timezone. */ extern struct tm *localtime (const time_t *__timer) __THROW; # 148 "../time/time.h" /* Return the `struct tm' representation of *TIMER in UTC, using *TP to store the result. */ extern struct tm *gmtime_r (const time_t *__restrict __timer, struct tm *__restrict __tp) __THROW; /* Return the `struct tm' representation of *TIMER in local time, using *TP to store the result. */ extern struct tm *localtime_r (const time_t *__restrict __timer, struct tm *__restrict __tp) __THROW; # 175 "../time/time.h" /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n" that is the representation of TP in this format. */ extern char *asctime (const struct tm *__tp) __THROW; /* Equivalent to `asctime (localtime (timer))'. */ extern char *ctime (const time_t *__timer) __THROW; /* Reentrant versions of the above functions. */ /* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n" that is the representation of TP in this format. */ extern char *asctime_r (const struct tm *__restrict __tp, char *__restrict __buf) __THROW; /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */ extern char *ctime_r (const time_t *__restrict __timer, char *__restrict __buf) __THROW; # 212 "../time/time.h" /* Defined in localtime.c. */ extern char *__tzname[2]; /* Current timezone names. */ extern int __daylight; /* If daylight-saving time is ever in use. */ extern long int __timezone; /* Seconds west of UTC. */ /* Same as above. */ extern char *tzname[2]; /* Set time conversion information from the TZ environment variable. If TZ is not defined, a locale-dependent default is used. */ extern void tzset (void) __THROW; extern int daylight; extern long int timezone; /* Nonzero if YEAR is a leap year (every 4 years, except every 100th isn't, and every 400th is). */ #define __isleap(year) ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) /* Miscellaneous functions many Unices inherited from the public domain localtime package. These are included only for compatibility. */ /* Like `mktime', but for TP represents Universal Time, not local time. */ extern time_t timegm (struct tm *__tp) __THROW; /* Another name for `mktime'. */ extern time_t timelocal (struct tm *__tp) __THROW; # 260 "../time/time.h" /* Return the number of days in YEAR. */ extern int dysize (int __year) __THROW __attribute__ ((__const__)); /* Pause execution for a number of nanoseconds. This function is a cancellation point and therefore not marked with __THROW. */ extern int nanosleep (const struct timespec *__requested_time, struct timespec *__remaining); /* Get resolution of clock CLOCK_ID. */ extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW; /* Get current value of clock CLOCK_ID and store it in TP. */ extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW; /* Set clock CLOCK_ID to value TP. */ extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) __THROW; # 303 "../time/time.h" /* High-resolution sleep with the specified clock. This function is a cancellation point and therefore not marked with __THROW. */ extern int clock_nanosleep (clockid_t __clock_id, int __flags, const struct timespec *__req, struct timespec *__rem); # 324 "../time/time.h" /* Return clock ID for CPU-time clock. */ extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW; /* Create new per-process timer using CLOCK_ID. */ extern int timer_create (clockid_t __clock_id, struct sigevent *__restrict __evp, timer_t *__restrict __timerid) __THROW; /* Delete timer TIMERID. */ extern int timer_delete (timer_t __timerid) __THROW; /* Set timer TIMERID to VALUE, returning old value in OVALUE. */ extern int timer_settime (timer_t __timerid, int __flags, const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) __THROW; /* Get current value of timer TIMERID and store it in VALUE. */ extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) __THROW; # 362 "../time/time.h" /* Get expiration overrun for timer TIMERID. */ extern int timer_getoverrun (timer_t __timerid) __THROW; /* Set TS to calendar time based in time base BASE. */ extern int timespec_get (struct timespec *__ts, int __base) __THROW __nonnull ((1)); # 381 "../time/time.h" /* Set TS to resolution of time base BASE. */ extern int timespec_getres (struct timespec *__ts, int __base) __THROW; # 398 "../time/time.h" /* Set to one of the following values to indicate an error. 1 the DATEMSK environment variable is null or undefined, 2 the template file cannot be opened for reading, 3 failed to get file status information, 4 the template file is not a regular file, 5 an error is encountered while reading the template file, 6 memory allication failed (not enough memory available), 7 there is no line in the template that matches the input, 8 invalid input specification Example: February 31 or a time is specified that can not be represented in a time_t (representing the time in seconds since 00:00:00 UTC, January 1, 1970) */ extern int getdate_err; /* Parse the given string as a date specification and return a value representing the value. The templates from the file identified by the environment variable DATEMSK are used. In case of an error `getdate_err' is set. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct tm *getdate (const char *__string); /* Since `getdate' is not reentrant because of the use of `getdate_err' and the static buffer to return the result in, we provide a thread-safe variant. The functionality is the same. The result is returned in the buffer pointed to by RESBUFP and in case of an error the return value is != 0 with the same values as given above for `getdate_err'. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int getdate_r (const char *__restrict __string, struct tm *__restrict __resbufp); __END_DECLS # 3 "../include/time.h" 2 # 1 "../include/bits/types/struct_timeval.h" 1 # 6 "../include/time.h" 2 # 1 "../include/struct___timeval64.h" 1 #define _STRUCT_TIMEVAL64_H #define __timeval64 timeval # 17 "../include/struct___timeval64.h" # 8 "../include/time.h" 2 # 1 "../include/bits/types/locale_t.h" 1 # 9 "../include/time.h" 2 # 1 "../time/mktime-internal.h" 1 /* Internals of mktime and related functions Copyright 2016-2021 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Paul Eggert . 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 . */ /* mktime_offset_t is a signed type wide enough to hold a UTC offset in seconds, and used as part of the type of the offset-guess argument to mktime_internal. In Glibc, it is always long int. When in Gnulib, use time_t on platforms where time_t is signed, to be compatible with platforms like BeOS that export this implementation detail of mktime. On platforms where time_t is unsigned, GNU and POSIX code can assume 'int' is at least 32 bits which is wide enough for a UTC offset. */ typedef long int mktime_offset_t; /* The source code uses identifiers like __time64_t for glibc timestamps that can contain 64-bit values even when time_t is only 32 bits. These are just macros for the ordinary identifiers unless compiling within glibc when time_t is 32 bits. */ #undef __time64_t #define __time64_t time_t #define __gmtime64_r __gmtime_r #define __localtime64_r __localtime_r #define __mktime64 mktime #define __timegm64 timegm # 72 "../time/mktime-internal.h" /* Subroutine of mktime. Return the time_t representation of TP and normalize TP, given that a struct tm * maps to a time_t as performed by FUNC. Record next guess for localtime-gmtime offset in *OFFSET. */ extern __time64_t __mktime_internal (struct tm *tp, struct tm *(*func) (__time64_t const *, struct tm *), mktime_offset_t *offset) attribute_hidden; # 11 "../include/time.h" 2 # 1 "../include/sys/time.h" 1 /* Time function internal interfaces. Copyright (C) 1997-2021 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 . */ # 1 "../time/sys/time.h" 1 /* Copyright (C) 1991-2021 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 . */ #define _SYS_TIME_H 1 # 1 "../include/bits/types.h" 1 # 24 "../time/sys/time.h" 2 # 1 "../include/bits/types/time_t.h" 1 # 25 "../time/sys/time.h" 2 # 1 "../include/bits/types/struct_timeval.h" 1 # 26 "../time/sys/time.h" 2 __BEGIN_DECLS /* Macros for converting between `struct timeval' and `struct timespec'. */ #define TIMEVAL_TO_TIMESPEC(tv,ts) { (ts)->tv_sec = (tv)->tv_sec; (ts)->tv_nsec = (tv)->tv_usec * 1000; } #define TIMESPEC_TO_TIMEVAL(tv,ts) { (tv)->tv_sec = (ts)->tv_sec; (tv)->tv_usec = (ts)->tv_nsec / 1000; } /* Structure crudely representing a timezone. This is obsolete and should never be used. */ struct timezone { int tz_minuteswest; /* Minutes west of GMT. */ int tz_dsttime; /* Nonzero if DST is ever in effect. */ }; /* Get the current time of day, putting it into *TV. If TZ is not null, *TZ must be a struct timezone, and both fields will be set to zero. Calling this function with a non-null TZ is obsolete; use localtime etc. instead. This function itself is semi-obsolete; most callers should use time or clock_gettime instead. */ extern int gettimeofday (struct timeval *__restrict __tv, void *__restrict __tz) __THROW __nonnull ((1)); # 78 "../time/sys/time.h" /* Set the current time of day and timezone information. This call is restricted to the super-user. Setting the timezone in this way is obsolete, but we don't yet warn about it because it still has some uses for which there is no alternative. */ extern int settimeofday (const struct timeval *__tv, const struct timezone *__tz) __THROW; /* Adjust the current time of day by the amount in DELTA. If OLDDELTA is not NULL, it is filled in with the amount of time adjustment remaining to be done from the last `adjtime' call. This call is restricted to the super-user. */ extern int adjtime (const struct timeval *__delta, struct timeval *__olddelta) __THROW; # 110 "../time/sys/time.h" /* Values for the first argument to `getitimer' and `setitimer'. */ enum __itimer_which { /* Timers run in real time. */ ITIMER_REAL = 0, #define ITIMER_REAL ITIMER_REAL /* Timers run only when the process is executing. */ ITIMER_VIRTUAL = 1, #define ITIMER_VIRTUAL ITIMER_VIRTUAL /* Timers run when the process is executing and when the system is executing on behalf of the process. */ ITIMER_PROF = 2 #define ITIMER_PROF ITIMER_PROF }; /* Type of the second argument to `getitimer' and the second and third arguments `setitimer'. */ struct itimerval { /* Value to put into `it_value' when the timer expires. */ struct timeval it_interval; /* Time to the next timer expiration. */ struct timeval it_value; }; /* Use the nicer parameter type only in GNU mode and not for C++ since the strict C++ rules prevent the automatic promotion. */ typedef enum __itimer_which __itimer_which_t; /* Set *VALUE to the current setting of timer WHICH. Return 0 on success, -1 on errors. */ extern int getitimer (__itimer_which_t __which, struct itimerval *__value) __THROW; /* Set the timer WHICH to *NEW. If OLD is not NULL, set *OLD to the old value of timer WHICH. Returns 0 on success, -1 on errors. */ extern int setitimer (__itimer_which_t __which, const struct itimerval *__restrict __new, struct itimerval *__restrict __old) __THROW; /* Change the access time of FILE to TVP[0] and the modification time of FILE to TVP[1]. If TVP is a null pointer, use the current time instead. Returns 0 on success, -1 on errors. */ extern int utimes (const char *__file, const struct timeval __tvp[2]) __THROW __nonnull ((1)); # 185 "../time/sys/time.h" /* Same as `utimes', but does not follow symbolic links. */ extern int lutimes (const char *__file, const struct timeval __tvp[2]) __THROW __nonnull ((1)); /* Same as `utimes', but takes an open file descriptor instead of a name. */ extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW; # 207 "../time/sys/time.h" /* Change the access time of FILE relative to FD to TVP[0] and the modification time of FILE to TVP[1]. If TVP is a null pointer, use the current time instead. Returns 0 on success, -1 on errors. */ extern int futimesat (int __fd, const char *__file, const struct timeval __tvp[2]) __THROW; # 225 "../time/sys/time.h" /* Convenience macros for operations on timevals. NOTE: `timercmp' does not work for >= or <=. */ #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) #define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) #define timercmp(a,b,CMP) (((a)->tv_sec == (b)->tv_sec) ? ((a)->tv_usec CMP (b)->tv_usec) : ((a)->tv_sec CMP (b)->tv_sec)) #define timeradd(a,b,result) do { (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; if ((result)->tv_usec >= 1000000) { ++(result)->tv_sec; (result)->tv_usec -= 1000000; } } while (0) # 247 "../time/sys/time.h" #define timersub(a,b,result) do { (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; if ((result)->tv_usec < 0) { --(result)->tv_sec; (result)->tv_usec += 1000000; } } while (0) # 256 "../time/sys/time.h" __END_DECLS # 21 "../include/sys/time.h" 2 extern int __gettimeofday (struct timeval *__tv, void *__tz); extern int __settimezone (const struct timezone *__tz) attribute_hidden; extern int __adjtime (const struct timeval *__delta, struct timeval *__olddelta); #define __adjtime64 __adjtime extern int __getitimer (enum __itimer_which __which, struct itimerval *__value); extern int __setitimer (enum __itimer_which __which, const struct itimerval *__restrict __new, struct itimerval *__restrict __old) attribute_hidden; extern int __utimes (const char *__file, const struct timeval __tvp[2]) attribute_hidden; extern int __futimes (int fd, const struct timeval tvp[2]) attribute_hidden; # 12 "../include/time.h" 2 # 1 "../sysdeps/unix/sysv/linux/time-clockid.h" 1 /* System specific time definitions. Generic Version. Copyright 2019-2021 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 . */ /* Timer used on clock_gettime for time implementation. For Linux it uses the coarse version which returns the time at the last tick and mimic what time as syscall should return. */ #define TIME_CLOCK_GETTIME_CLOCKID CLOCK_REALTIME_COARSE # 13 "../include/time.h" 2 # 1 "../include/stdint.h" 1 # 15 "../include/time.h" 2 extern __typeof (strftime_l) __strftime_l; libc_hidden_proto (__strftime_l) extern __typeof (strptime_l) __strptime_l; libc_hidden_proto (asctime) libc_hidden_proto (mktime) libc_hidden_proto (timelocal) libc_hidden_proto (localtime) libc_hidden_proto (strftime) libc_hidden_proto (strptime) extern __typeof (clock_gettime) __clock_gettime; libc_hidden_proto (__clock_gettime) extern __typeof (clock_settime) __clock_settime; libc_hidden_proto (__clock_settime) extern __typeof (clock_getres) __clock_getres; libc_hidden_proto (__clock_getres) extern __typeof (clock_nanosleep) __clock_nanosleep; libc_hidden_proto (__clock_nanosleep); extern __typeof (clock_adjtime) __clock_adjtime; libc_hidden_proto (__clock_adjtime); /* Now define the internal interfaces. */ struct tm; /* Defined in mktime.c. */ extern const unsigned short int __mon_yday[2][13] attribute_hidden; /* Defined in localtime.c. */ extern struct tm _tmbuf attribute_hidden; /* Defined in tzset.c. */ extern char *__tzstring (const char *string) attribute_hidden; extern int __use_tzfile attribute_hidden; extern void __tzfile_read (const char *file, size_t extra, char **extrap) attribute_hidden; extern void __tzfile_compute (__time64_t timer, int use_localtime, long int *leap_correct, int *leap_hit, struct tm *tp) attribute_hidden; extern void __tzfile_default (const char *std, const char *dst, int stdoff, int dstoff) attribute_hidden; extern void __tzset_parse_tz (const char *tz) attribute_hidden; extern void __tz_compute (__time64_t timer, struct tm *tm, int use_localtime) __THROW attribute_hidden; #define __itimerspec64 itimerspec # 80 "../include/time.h" #define __utimbuf64 utimbuf #define __itimerval64 itimerval # 99 "../include/time.h" #define __getitimer64 __getitimer #define __setitimer64 __setitimer # 113 "../include/time.h" #define __ctime64 ctime #define __ctime64_r ctime_r #define __localtime64 localtime extern struct tm *__localtime_r (const time_t *__timer, struct tm *__tp) attribute_hidden; # 146 "../include/time.h" extern struct tm *__gmtime_r (const time_t *__restrict __timer, struct tm *__restrict __tp); libc_hidden_proto (__gmtime_r) #define __gmtime64 gmtime # 164 "../include/time.h" #define __clock_settime64 __clock_settime #define __clock_getres64 __clock_getres #define __utime64 __utime #define __utimes64 __utimes #define __utimensat64 __utimensat # 194 "../include/time.h" extern int __utimensat64_helper (int fd, const char *file, const struct __timespec64 tsp[2], int flags); libc_hidden_proto (__utimensat64_helper); #define __futimes64 __futimes #define __futimesat64 __futimesat #define __lutimes64 __lutimes #define __futimens64 __futimens # 215 "../include/time.h" #define __timer_gettime64 __timer_gettime #define __timerfd_gettime64 __timerfd_gettime # 229 "../include/time.h" #define __timer_settime64 __timer_settime #define __timerfd_settime64 __timerfd_settime # 247 "../include/time.h" #define __sched_rr_get_interval64 __sched_rr_get_interval #define __settimeofday64 __settimeofday #define __gettimeofday64 __gettimeofday # 266 "../include/time.h" /* Compute the `struct tm' representation of T, offset OFFSET seconds east of UTC, and store year, yday, mon, mday, wday, hour, min, sec into *TP. Return nonzero if successful. */ extern int __offtime (__time64_t __timer, long int __offset, struct tm *__tp) attribute_hidden; extern char *__asctime_r (const struct tm *__tp, char *__buf) attribute_hidden; extern void __tzset (void) attribute_hidden; /* Prototype for the internal function to get information based on TZ. */ extern struct tm *__tz_convert (__time64_t timer, int use_localtime, struct tm *tp) attribute_hidden; extern int __nanosleep (const struct timespec *__requested_time, struct timespec *__remaining); hidden_proto (__nanosleep) #define __nanosleep64 __nanosleep extern int __getdate_r (const char *__string, struct tm *__resbufp); libc_hidden_proto (__getdate_r); /* Determine CLK_TCK value. */ extern int __getclktck (void) attribute_hidden; /* strptime support. */ extern char * __strptime_internal (const char *rp, const char *fmt, struct tm *tm, void *statep, locale_t locparam) attribute_hidden; #define __difftime64 __difftime extern double __difftime (time_t time1, time_t time0); #define __clock_nanosleep_time64 __clock_nanosleep #define __clock_gettime64 __clock_gettime #define __timespec_get64 __timespec_get #define __timespec_getres64 __timespec_getres # 334 "../include/time.h" #define __time64 __time /* Use in the clock_* functions. Size of the field representing the actual clock ID. */ #define CLOCK_IDFIELD_SIZE 3 /* Check whether T fits in int32_t, assume all usages are for sizeof(time_t) == 32. */ static inline bool in_time_t_range (__time64_t t) { int32_t s = t; return s == t; } /* Convert a known valid struct timeval into a struct __timespec64. */ static inline struct __timespec64 valid_timeval_to_timespec64 (const struct timeval tv) { struct __timespec64 ts64; ts64.tv_sec = tv.tv_sec; ts64.tv_nsec = tv.tv_usec * 1000; return ts64; } /* Convert a known valid struct timeval into a struct __timeval64. */ static inline struct __timeval64 valid_timeval_to_timeval64 (const struct timeval tv) { struct __timeval64 tv64; tv64.tv_sec = tv.tv_sec; tv64.tv_usec = tv.tv_usec; return tv64; } /* Convert a valid and within range of struct timeval, struct __timeval64 into a struct timeval. */ static inline struct timeval valid_timeval64_to_timeval (const struct __timeval64 tv64) { struct timeval tv; tv.tv_sec = (time_t) tv64.tv_sec; tv.tv_usec = (suseconds_t) tv64.tv_usec; return tv; } /* Convert a struct __timeval64 into a struct __timespec64. */ static inline struct __timespec64 timeval64_to_timespec64 (const struct __timeval64 tv64) { struct __timespec64 ts64; ts64.tv_sec = tv64.tv_sec; ts64.tv_nsec = tv64.tv_usec * 1000; return ts64; } /* Convert a known valid struct timespec into a struct __timespec64. */ static inline struct __timespec64 valid_timespec_to_timespec64 (const struct timespec ts) { struct __timespec64 ts64; ts64.tv_sec = ts.tv_sec; ts64.tv_nsec = ts.tv_nsec; return ts64; } /* Convert a valid and within range of struct timespec, struct __timespec64 into a struct timespec. */ static inline struct timespec valid_timespec64_to_timespec (const struct __timespec64 ts64) { struct timespec ts; ts.tv_sec = (time_t) ts64.tv_sec; ts.tv_nsec = ts64.tv_nsec; return ts; } /* Convert a valid and within range of struct timeval struct __timespec64 into a struct timeval. */ static inline struct timeval valid_timespec64_to_timeval (const struct __timespec64 ts64) { struct timeval tv; tv.tv_sec = (time_t) ts64.tv_sec; tv.tv_usec = ts64.tv_nsec / 1000; return tv; } /* Convert a struct __timespec64 into a struct __timeval64. */ static inline struct __timeval64 timespec64_to_timeval64 (const struct __timespec64 ts64) { struct __timeval64 tv64; tv64.tv_sec = ts64.tv_sec; tv64.tv_usec = ts64.tv_nsec / 1000; return tv64; } /* A version of 'struct timeval' with 32-bit time_t and suseconds_t. */ struct __timeval32 { int32_t tv_sec; /* Seconds. */ int32_t tv_usec; /* Microseconds. */ }; /* Conversion functions for converting to/from __timeval32 */ static inline struct __timeval64 valid_timeval32_to_timeval64 (const struct __timeval32 tv) { return (struct __timeval64) { tv.tv_sec, tv.tv_usec }; } static inline struct __timeval32 valid_timeval64_to_timeval32 (const struct __timeval64 tv64) { return (struct __timeval32) { tv64.tv_sec, tv64.tv_usec }; } static inline struct timeval valid_timeval32_to_timeval (const struct __timeval32 tv) { return (struct timeval) { tv.tv_sec, tv.tv_usec }; } static inline struct __timeval32 valid_timeval_to_timeval32 (const struct timeval tv) { return (struct __timeval32) { tv.tv_sec, tv.tv_usec }; } static inline struct timespec valid_timeval32_to_timespec (const struct __timeval32 tv) { return (struct timespec) { tv.tv_sec, tv.tv_usec * 1000 }; } static inline struct __timeval32 valid_timespec_to_timeval32 (const struct timespec ts) { return (struct __timeval32) { (time_t) ts.tv_sec, ts.tv_nsec / 1000 }; } static inline struct __timeval64 valid_timespec_to_timeval64 (const struct timespec ts) { return (struct __timeval64) { (time_t) ts.tv_sec, ts.tv_nsec / 1000 }; } /* Check if a value is in the valid nanoseconds range. Return true if it is, false otherwise. */ static inline bool valid_nanoseconds (__syscall_slong_t ns) { return __glibc_likely (0 <= ns && ns < 1000000000); } /* Helper function to get time in seconds, similar to time. */ static inline time_t time_now (void) { struct timespec ts; __clock_gettime (TIME_CLOCK_GETTIME_CLOCKID, &ts); return ts.tv_sec; } static inline __time64_t time64_now (void) { struct __timespec64 ts; __clock_gettime64 (TIME_CLOCK_GETTIME_CLOCKID, &ts); return ts.tv_sec; } #define NSEC_PER_SEC 1000000000L #define USEC_PER_SEC 1000000L #define NSEC_PER_USEC 1000L # 24 "../sysdeps/nptl/pthread.h" 2 # 1 "../include/bits/endian.h" 1 # 26 "../sysdeps/nptl/pthread.h" 2 # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 29 "../sysdeps/nptl/pthread.h" 2 # 1 "../include/bits/types/struct_timespec.h" 1 # 30 "../sysdeps/nptl/pthread.h" 2 # 1 "../include/bits/types/struct___jmp_buf_tag.h" 1 # 32 "../sysdeps/nptl/pthread.h" 2 # 1 "../sysdeps/unix/sysv/linux/include/bits/pthread_stack_min-dynamic.h" 1 /* Don't define PTHREAD_STACK_MIN to __sysconf (_SC_THREAD_STACK_MIN) for glibc build. */ # 1 "../sysdeps/unix/sysv/linux/bits/pthread_stack_min.h" 1 /* Definition of PTHREAD_STACK_MIN. Linux version. Copyright (C) 2021 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 . */ /* Minimum size for a thread. We are free to choose a reasonable value. */ #define PTHREAD_STACK_MIN 16384 # 7 "../sysdeps/unix/sysv/linux/include/bits/pthread_stack_min-dynamic.h" 2 # 34 "../sysdeps/nptl/pthread.h" 2 /* Detach state. */ enum { PTHREAD_CREATE_JOINABLE, #define PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_DETACHED #define PTHREAD_CREATE_DETACHED PTHREAD_CREATE_DETACHED }; /* Mutex types. */ enum { PTHREAD_MUTEX_TIMED_NP, PTHREAD_MUTEX_RECURSIVE_NP, PTHREAD_MUTEX_ERRORCHECK_NP, PTHREAD_MUTEX_ADAPTIVE_NP , PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL /* For compatibility. */ , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP }; /* Robust mutex or not flags. */ enum { PTHREAD_MUTEX_STALLED, PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, PTHREAD_MUTEX_ROBUST, PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST }; /* Mutex protocols. */ enum { PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT }; #define PTHREAD_MUTEX_INITIALIZER { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_TIMED_NP) } } #define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_RECURSIVE_NP) } } #define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_ERRORCHECK_NP) } } #define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_ADAPTIVE_NP) } } /* Read-write lock types. */ enum { PTHREAD_RWLOCK_PREFER_READER_NP, PTHREAD_RWLOCK_PREFER_WRITER_NP, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP }; /* Read-write lock initializers. */ #define PTHREAD_RWLOCK_INITIALIZER { { __PTHREAD_RWLOCK_INITIALIZER (PTHREAD_RWLOCK_DEFAULT_NP) } } #define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP { { __PTHREAD_RWLOCK_INITIALIZER (PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP) } } /* Scheduler inheritance. */ enum { PTHREAD_INHERIT_SCHED, #define PTHREAD_INHERIT_SCHED PTHREAD_INHERIT_SCHED PTHREAD_EXPLICIT_SCHED #define PTHREAD_EXPLICIT_SCHED PTHREAD_EXPLICIT_SCHED }; /* Scope handling. */ enum { PTHREAD_SCOPE_SYSTEM, #define PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_PROCESS #define PTHREAD_SCOPE_PROCESS PTHREAD_SCOPE_PROCESS }; /* Process shared or private flag. */ enum { PTHREAD_PROCESS_PRIVATE, #define PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_SHARED #define PTHREAD_PROCESS_SHARED PTHREAD_PROCESS_SHARED }; /* Conditional variable handling. */ #define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } } /* Cleanup buffers */ struct _pthread_cleanup_buffer { void (*__routine) (void *); /* Function to call. */ void *__arg; /* Its argument. */ int __canceltype; /* Saved cancellation type. */ struct _pthread_cleanup_buffer *__prev; /* Chaining of cleanup functions. */ }; /* Cancellation */ enum { PTHREAD_CANCEL_ENABLE, #define PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_DISABLE #define PTHREAD_CANCEL_DISABLE PTHREAD_CANCEL_DISABLE }; enum { PTHREAD_CANCEL_DEFERRED, #define PTHREAD_CANCEL_DEFERRED PTHREAD_CANCEL_DEFERRED PTHREAD_CANCEL_ASYNCHRONOUS #define PTHREAD_CANCEL_ASYNCHRONOUS PTHREAD_CANCEL_ASYNCHRONOUS }; #define PTHREAD_CANCELED ((void *) -1) /* Single execution handling. */ #define PTHREAD_ONCE_INIT 0 /* Value returned by 'pthread_barrier_wait' for one of the threads after the required number of threads have called this function. -1 is distinct from 0 and all errno constants */ #define PTHREAD_BARRIER_SERIAL_THREAD -1 __BEGIN_DECLS /* Create a new thread, starting with execution of START-ROUTINE getting passed ARG. Creation attributed come from ATTR. The new handle is stored in *NEWTHREAD. */ extern int pthread_create (pthread_t *__restrict __newthread, const pthread_attr_t *__restrict __attr, void *(*__start_routine) (void *), void *__restrict __arg) __THROWNL __nonnull ((1, 3)); /* Terminate calling thread. The registered cleanup handlers are called via exception handling so we cannot mark this function with __THROW.*/ extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); /* Make calling thread wait for termination of the thread TH. The exit status of the thread is stored in *THREAD_RETURN, if THREAD_RETURN is not NULL. This function is a cancellation point and therefore not marked with __THROW. */ extern int pthread_join (pthread_t __th, void **__thread_return); /* Check whether thread TH has terminated. If yes return the status of the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL. */ extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW; /* Make calling thread wait for termination of the thread TH, but only until TIMEOUT. The exit status of the thread is stored in *THREAD_RETURN, if THREAD_RETURN is not NULL. This function is a cancellation point and therefore not marked with __THROW. */ extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, const struct timespec *__abstime); /* Make calling thread wait for termination of the thread TH, but only until TIMEOUT measured against the clock specified by CLOCKID. The exit status of the thread is stored in *THREAD_RETURN, if THREAD_RETURN is not NULL. This function is a cancellation point and therefore not marked with __THROW. */ extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return, clockid_t __clockid, const struct timespec *__abstime); # 263 "../sysdeps/nptl/pthread.h" /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN. The resources of TH will therefore be freed immediately when it terminates, instead of waiting for another thread to perform PTHREAD_JOIN on it. */ extern int pthread_detach (pthread_t __th) __THROW; /* Obtain the identifier of the current thread. */ extern pthread_t pthread_self (void) __THROW __attribute__ ((__const__)); /* Compare two thread identifiers. */ extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) __THROW __attribute__ ((__const__)); /* Thread attribute handling. */ /* Initialize thread attribute *ATTR with default attributes (detachstate is PTHREAD_JOINABLE, scheduling policy is SCHED_OTHER, no user-provided stack). */ extern int pthread_attr_init (pthread_attr_t *__attr) __THROW __nonnull ((1)); /* Destroy thread attribute *ATTR. */ extern int pthread_attr_destroy (pthread_attr_t *__attr) __THROW __nonnull ((1)); /* Get detach state attribute. */ extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, int *__detachstate) __THROW __nonnull ((1, 2)); /* Set detach state attribute. */ extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, int __detachstate) __THROW __nonnull ((1)); /* Get the size of the guard area created for stack overflow protection. */ extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, size_t *__guardsize) __THROW __nonnull ((1, 2)); /* Set the size of the guard area created for stack overflow protection. */ extern int pthread_attr_setguardsize (pthread_attr_t *__attr, size_t __guardsize) __THROW __nonnull ((1)); /* Return in *PARAM the scheduling parameters of *ATTR. */ extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, struct sched_param *__restrict __param) __THROW __nonnull ((1, 2)); /* Set scheduling parameters (priority, etc) in *ATTR according to PARAM. */ extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, const struct sched_param *__restrict __param) __THROW __nonnull ((1, 2)); /* Return in *POLICY the scheduling policy of *ATTR. */ extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict __attr, int *__restrict __policy) __THROW __nonnull ((1, 2)); /* Set scheduling policy in *ATTR according to POLICY. */ extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) __THROW __nonnull ((1)); /* Return in *INHERIT the scheduling inheritance mode of *ATTR. */ extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict __attr, int *__restrict __inherit) __THROW __nonnull ((1, 2)); /* Set scheduling inheritance mode in *ATTR according to INHERIT. */ extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, int __inherit) __THROW __nonnull ((1)); /* Return in *SCOPE the scheduling contention scope of *ATTR. */ extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, int *__restrict __scope) __THROW __nonnull ((1, 2)); /* Set scheduling contention scope in *ATTR according to SCOPE. */ extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) __THROW __nonnull ((1)); /* Return the previously set address for the stack. */ extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict __attr, void **__restrict __stackaddr) __THROW __nonnull ((1, 2)) __attribute_deprecated__; /* Set the starting address of the stack of the thread to be created. Depending on whether the stack grows up or down the value must either be higher or lower than all the address in the memory block. The minimal size of the block must be PTHREAD_STACK_MIN. */ extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, void *__stackaddr) __THROW __nonnull ((1)) __attribute_deprecated__; /* Return the currently used minimal stack size. */ extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict __attr, size_t *__restrict __stacksize) __THROW __nonnull ((1, 2)); /* Add information about the minimum stack size needed for the thread to be started. This size must never be less than PTHREAD_STACK_MIN and must also not exceed the system limits. */ extern int pthread_attr_setstacksize (pthread_attr_t *__attr, size_t __stacksize) __THROW __nonnull ((1)); /* Return the previously set address for the stack. */ extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, void **__restrict __stackaddr, size_t *__restrict __stacksize) __THROW __nonnull ((1, 2, 3)); /* The following two interfaces are intended to replace the last two. They require setting the address as well as the size since only setting the address will make the implementation on some architectures impossible. */ extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, size_t __stacksize) __THROW __nonnull ((1)); /* Thread created with attribute ATTR will be limited to run only on the processors represented in CPUSET. */ extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, size_t __cpusetsize, const cpu_set_t *__cpuset) __THROW __nonnull ((1, 3)); /* Get bit set in CPUSET representing the processors threads created with ATTR can run on. */ extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, size_t __cpusetsize, cpu_set_t *__cpuset) __THROW __nonnull ((1, 3)); /* Get the default attributes used by pthread_create in this process. */ extern int pthread_getattr_default_np (pthread_attr_t *__attr) __THROW __nonnull ((1)); /* Store *SIGMASK as the signal mask for the new thread in *ATTR. */ extern int pthread_attr_setsigmask_np (pthread_attr_t *__attr, const __sigset_t *sigmask); /* Store the signal mask of *ATTR in *SIGMASK. If there is no signal mask stored, return PTHREAD_ATTR_NOSIGMASK_NP. Return zero on success. */ extern int pthread_attr_getsigmask_np (const pthread_attr_t *__attr, __sigset_t *sigmask); /* Special return value from pthread_attr_getsigmask_np if the signal mask has not been set. */ #define PTHREAD_ATTR_NO_SIGMASK_NP (-1) /* Set the default attributes to be used by pthread_create in this process. */ extern int pthread_setattr_default_np (const pthread_attr_t *__attr) __THROW __nonnull ((1)); /* Initialize thread attribute *ATTR with attributes corresponding to the already running thread TH. It shall be called on uninitialized ATTR and destroyed with pthread_attr_destroy when no longer needed. */ extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) __THROW __nonnull ((2)); /* Functions for scheduling control. */ /* Set the scheduling parameters for TARGET_THREAD according to POLICY and *PARAM. */ extern int pthread_setschedparam (pthread_t __target_thread, int __policy, const struct sched_param *__param) __THROW __nonnull ((3)); /* Return in *POLICY and *PARAM the scheduling parameters for TARGET_THREAD. */ extern int pthread_getschedparam (pthread_t __target_thread, int *__restrict __policy, struct sched_param *__restrict __param) __THROW __nonnull ((2, 3)); /* Set the scheduling priority for TARGET_THREAD. */ extern int pthread_setschedprio (pthread_t __target_thread, int __prio) __THROW; /* Get thread name visible in the kernel and its interfaces. */ extern int pthread_getname_np (pthread_t __target_thread, char *__buf, size_t __buflen) __THROW __nonnull ((2)); /* Set thread name visible in the kernel and its interfaces. */ extern int pthread_setname_np (pthread_t __target_thread, const char *__name) __THROW __nonnull ((2)); /* Determine level of concurrency. */ extern int pthread_getconcurrency (void) __THROW; /* Set new concurrency level to LEVEL. */ extern int pthread_setconcurrency (int __level) __THROW; extern int pthread_yield (void) __THROW; extern int __REDIRECT_NTH (pthread_yield, (void), sched_yield) __attribute_deprecated_msg__ ("\ pthread_yield is deprecated, use sched_yield instead"); /* Limit specified thread TH to run only on the processors represented in CPUSET. */ extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, const cpu_set_t *__cpuset) __THROW __nonnull ((3)); /* Get bit set in CPUSET representing the processors TH can run on. */ extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, cpu_set_t *__cpuset) __THROW __nonnull ((3)); /* Functions for handling initialization. */ /* Guarantee that the initialization function INIT_ROUTINE will be called only once, even if pthread_once is executed several times with the same ONCE_CONTROL argument. ONCE_CONTROL must point to a static or extern variable initialized to PTHREAD_ONCE_INIT. The initialization functions might throw exception which is why this function is not marked with __THROW. */ extern int pthread_once (pthread_once_t *__once_control, void (*__init_routine) (void)) __nonnull ((1, 2)); /* Functions for handling cancellation. Note that these functions are explicitly not marked to not throw an exception in C++ code. If cancellation is implemented by unwinding this is necessary to have the compiler generate the unwind information. */ /* Set cancelability state of current thread to STATE, returning old state in *OLDSTATE if OLDSTATE is not NULL. */ extern int pthread_setcancelstate (int __state, int *__oldstate); /* Set cancellation state of current thread to TYPE, returning the old type in *OLDTYPE if OLDTYPE is not NULL. */ extern int pthread_setcanceltype (int __type, int *__oldtype); /* Cancel THREAD immediately or at the next possibility. */ extern int pthread_cancel (pthread_t __th); /* Test for pending cancellation for the current thread and terminate the thread as per pthread_exit(PTHREAD_CANCELED) if it has been cancelled. */ extern void pthread_testcancel (void); /* Cancellation handling with integration into exception handling. */ struct __cancel_jmp_buf_tag { __jmp_buf __cancel_jmp_buf; int __mask_was_saved; }; typedef struct { struct __cancel_jmp_buf_tag __cancel_jmp_buf[1]; void *__pad[4]; } __pthread_unwind_buf_t __attribute__ ((__aligned__)); /* No special attributes by default. */ #define __cleanup_fct_attribute /* Structure to hold the cleanup handler information. */ struct __pthread_cleanup_frame { void (*__cancel_routine) (void *); void *__cancel_arg; int __do_it; int __cancel_type; }; # 674 "../sysdeps/nptl/pthread.h" /* Install a cleanup handler: ROUTINE will be called with arguments ARG when the thread is canceled or calls pthread_exit. ROUTINE will also be called with arguments ARG when the matching pthread_cleanup_pop is executed with non-zero EXECUTE argument. pthread_cleanup_push and pthread_cleanup_pop are macros and must always be used in matching pairs at the same nesting level of braces. */ #define pthread_cleanup_push(routine,arg) do { __pthread_unwind_buf_t __cancel_buf; void (*__cancel_routine) (void *) = (routine); void *__cancel_arg = (arg); int __not_first_call = __sigsetjmp_cancel (__cancel_buf.__cancel_jmp_buf, 0); if (__glibc_unlikely (__not_first_call)) { __cancel_routine (__cancel_arg); __pthread_unwind_next (&__cancel_buf); } __pthread_register_cancel (&__cancel_buf); do { # 697 "../sysdeps/nptl/pthread.h" extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf) __cleanup_fct_attribute; /* Remove a cleanup handler installed by the matching pthread_cleanup_push. If EXECUTE is non-zero, the handler function is called. */ #define pthread_cleanup_pop(execute) do { } while (0); } while (0); __pthread_unregister_cancel (&__cancel_buf); if (execute) __cancel_routine (__cancel_arg); } while (0) extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf) __cleanup_fct_attribute; /* Install a cleanup handler as pthread_cleanup_push does, but also saves the current cancellation type and sets it to deferred cancellation. */ #define pthread_cleanup_push_defer_np(routine,arg) do { __pthread_unwind_buf_t __cancel_buf; void (*__cancel_routine) (void *) = (routine); void *__cancel_arg = (arg); int __not_first_call = __sigsetjmp_cancel (__cancel_buf.__cancel_jmp_buf, 0); if (__glibc_unlikely (__not_first_call)) { __cancel_routine (__cancel_arg); __pthread_unwind_next (&__cancel_buf); } __pthread_register_cancel_defer (&__cancel_buf); do { # 732 "../sysdeps/nptl/pthread.h" extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf) __cleanup_fct_attribute; /* Remove a cleanup handler as pthread_cleanup_pop does, but also restores the cancellation type that was in effect when the matching pthread_cleanup_push_defer was called. */ #define pthread_cleanup_pop_restore_np(execute) do { } while (0); } while (0); __pthread_unregister_cancel_restore (&__cancel_buf); if (execute) __cancel_routine (__cancel_arg); } while (0) extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf) __cleanup_fct_attribute; /* Internal interface to initiate cleanup. */ extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf) __cleanup_fct_attribute __attribute__ ((__noreturn__)) __attribute__ ((__weak__)) ; /* Function used in the macros. Calling __sigsetjmp, with its first argument declared as an array, results in a -Wstringop-overflow warning from GCC 11 because struct pthread_unwind_buf is smaller than jmp_buf. The calls from the macros have __SAVEMASK set to 0, so nothing beyond the common prefix is used and this warning is a false positive. Use an alias with its first argument declared to use the type in the macros if possible to avoid this warning. */ extern int __REDIRECT_NTHNL (__sigsetjmp_cancel, (struct __cancel_jmp_buf_tag __env[1], int __savemask), __sigsetjmp) __attribute_returns_twice__; /* Mutex handling. */ /* Initialize a mutex. */ extern int pthread_mutex_init (pthread_mutex_t *__mutex, const pthread_mutexattr_t *__mutexattr) __THROW __nonnull ((1)); /* Destroy a mutex. */ extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) __THROW __nonnull ((1)); /* Try locking a mutex. */ extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) __THROWNL __nonnull ((1)); /* Lock a mutex. */ extern int pthread_mutex_lock (pthread_mutex_t *__mutex) __THROWNL __nonnull ((1)); /* Wait until lock becomes available, or specified time passes. */ extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) __THROWNL __nonnull ((1, 2)); # 813 "../sysdeps/nptl/pthread.h" extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex, clockid_t __clockid, const struct timespec *__restrict __abstime) __THROWNL __nonnull ((1, 3)); # 832 "../sysdeps/nptl/pthread.h" /* Unlock a mutex. */ extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) __THROWNL __nonnull ((1)); /* Get the priority ceiling of MUTEX. */ extern int pthread_mutex_getprioceiling (const pthread_mutex_t * __restrict __mutex, int *__restrict __prioceiling) __THROW __nonnull ((1, 2)); /* Set the priority ceiling of MUTEX to PRIOCEILING, return old priority ceiling value in *OLD_CEILING. */ extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, int __prioceiling, int *__restrict __old_ceiling) __THROW __nonnull ((1, 3)); /* Declare the state protected by MUTEX as consistent. */ extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) __THROW __nonnull ((1)); extern int __REDIRECT_NTH (pthread_mutex_consistent_np, (pthread_mutex_t *), pthread_mutex_consistent) __nonnull ((1)) __attribute_deprecated_msg__ ("\ pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent"); /* Functions for handling mutex attributes. */ /* Initialize mutex attribute object ATTR with default attributes (kind is PTHREAD_MUTEX_TIMED_NP). */ extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) __THROW __nonnull ((1)); /* Destroy mutex attribute object ATTR. */ extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) __THROW __nonnull ((1)); /* Get the process-shared flag of the mutex attribute ATTR. */ extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * __restrict __attr, int *__restrict __pshared) __THROW __nonnull ((1, 2)); /* Set the process-shared flag of the mutex attribute ATTR. */ extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, int __pshared) __THROW __nonnull ((1)); /* Return in *KIND the mutex kind attribute in *ATTR. */ extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict __attr, int *__restrict __kind) __THROW __nonnull ((1, 2)); /* Set the mutex kind attribute in *ATTR to KIND (either PTHREAD_MUTEX_NORMAL, PTHREAD_MUTEX_RECURSIVE, PTHREAD_MUTEX_ERRORCHECK, or PTHREAD_MUTEX_DEFAULT). */ extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) __THROW __nonnull ((1)); /* Return in *PROTOCOL the mutex protocol attribute in *ATTR. */ extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * __restrict __attr, int *__restrict __protocol) __THROW __nonnull ((1, 2)); /* Set the mutex protocol attribute in *ATTR to PROTOCOL (either PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, or PTHREAD_PRIO_PROTECT). */ extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, int __protocol) __THROW __nonnull ((1)); /* Return in *PRIOCEILING the mutex prioceiling attribute in *ATTR. */ extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * __restrict __attr, int *__restrict __prioceiling) __THROW __nonnull ((1, 2)); /* Set the mutex prioceiling attribute in *ATTR to PRIOCEILING. */ extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, int __prioceiling) __THROW __nonnull ((1)); /* Get the robustness flag of the mutex attribute ATTR. */ extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, int *__robustness) __THROW __nonnull ((1, 2)); extern int __REDIRECT_NTH (pthread_mutexattr_getrobust_np, (pthread_mutexattr_t *, int *), pthread_mutexattr_getrobust) __nonnull ((1)) __attribute_deprecated_msg__ ("\ pthread_mutexattr_getrobust_np is deprecated, use pthread_mutexattr_getrobust"); /* Set the robustness flag of the mutex attribute ATTR. */ extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, int __robustness) __THROW __nonnull ((1)); extern int __REDIRECT_NTH (pthread_mutexattr_setrobust_np, (pthread_mutexattr_t *, int), pthread_mutexattr_setrobust) __nonnull ((1)) __attribute_deprecated_msg__ ("\ pthread_mutexattr_setrobust_np is deprecated, use pthread_mutexattr_setrobust"); /* Functions for handling read-write locks. */ /* Initialize read-write lock RWLOCK using attributes ATTR, or use the default values if later is NULL. */ extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, const pthread_rwlockattr_t *__restrict __attr) __THROW __nonnull ((1)); /* Destroy read-write lock RWLOCK. */ extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) __THROW __nonnull ((1)); /* Acquire read lock for RWLOCK. */ extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) __THROWNL __nonnull ((1)); /* Try to acquire read lock for RWLOCK. */ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) __THROWNL __nonnull ((1)); /* Try to acquire read lock for RWLOCK or return after specfied time. */ extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) __THROWNL __nonnull ((1, 2)); # 1000 "../sysdeps/nptl/pthread.h" extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) __THROWNL __nonnull ((1, 3)); # 1020 "../sysdeps/nptl/pthread.h" /* Acquire write lock for RWLOCK. */ extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) __THROWNL __nonnull ((1)); /* Try to acquire write lock for RWLOCK. */ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) __THROWNL __nonnull ((1)); /* Try to acquire write lock for RWLOCK or return after specfied time. */ extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) __THROWNL __nonnull ((1, 2)); # 1047 "../sysdeps/nptl/pthread.h" extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) __THROWNL __nonnull ((1, 3)); # 1068 "../sysdeps/nptl/pthread.h" /* Unlock RWLOCK. */ extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) __THROWNL __nonnull ((1)); /* Functions for handling read-write lock attributes. */ /* Initialize attribute object ATTR with default values. */ extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) __THROW __nonnull ((1)); /* Destroy attribute object ATTR. */ extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) __THROW __nonnull ((1)); /* Return current setting of process-shared attribute of ATTR in PSHARED. */ extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * __restrict __attr, int *__restrict __pshared) __THROW __nonnull ((1, 2)); /* Set process-shared attribute of ATTR to PSHARED. */ extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, int __pshared) __THROW __nonnull ((1)); /* Return current setting of reader/writer preference. */ extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * __restrict __attr, int *__restrict __pref) __THROW __nonnull ((1, 2)); /* Set reader/write preference. */ extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, int __pref) __THROW __nonnull ((1)); /* Functions for handling conditional variables. */ /* Initialize condition variable COND using attributes ATTR, or use the default values if later is NULL. */ extern int pthread_cond_init (pthread_cond_t *__restrict __cond, const pthread_condattr_t *__restrict __cond_attr) __THROW __nonnull ((1)); /* Destroy condition variable COND. */ extern int pthread_cond_destroy (pthread_cond_t *__cond) __THROW __nonnull ((1)); /* Wake up one thread waiting for condition variable COND. */ extern int pthread_cond_signal (pthread_cond_t *__cond) __THROWNL __nonnull ((1)); /* Wake up all threads waiting for condition variables COND. */ extern int pthread_cond_broadcast (pthread_cond_t *__cond) __THROWNL __nonnull ((1)); /* Wait for condition variable COND to be signaled or broadcast. MUTEX is assumed to be locked before. This function is a cancellation point and therefore not marked with __THROW. */ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex) __nonnull ((1, 2)); /* Wait for condition variable COND to be signaled or broadcast until ABSTIME. MUTEX is assumed to be locked before. ABSTIME is an absolute time specification; zero is the beginning of the epoch (00:00:00 GMT, January 1, 1970). This function is a cancellation point and therefore not marked with __THROW. */ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) __nonnull ((1, 2, 3)); # 1161 "../sysdeps/nptl/pthread.h" /* Wait for condition variable COND to be signaled or broadcast until ABSTIME measured by the specified clock. MUTEX is assumed to be locked before. CLOCK is the clock to use. ABSTIME is an absolute time specification against CLOCK's epoch. This function is a cancellation point and therefore not marked with __THROW. */ extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, __clockid_t __clock_id, const struct timespec *__restrict __abstime) __nonnull ((1, 2, 4)); # 1189 "../sysdeps/nptl/pthread.h" /* Functions for handling condition variable attributes. */ /* Initialize condition variable attribute ATTR. */ extern int pthread_condattr_init (pthread_condattr_t *__attr) __THROW __nonnull ((1)); /* Destroy condition variable attribute ATTR. */ extern int pthread_condattr_destroy (pthread_condattr_t *__attr) __THROW __nonnull ((1)); /* Get the process-shared flag of the condition variable attribute ATTR. */ extern int pthread_condattr_getpshared (const pthread_condattr_t * __restrict __attr, int *__restrict __pshared) __THROW __nonnull ((1, 2)); /* Set the process-shared flag of the condition variable attribute ATTR. */ extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, int __pshared) __THROW __nonnull ((1)); /* Get the clock selected for the condition variable attribute ATTR. */ extern int pthread_condattr_getclock (const pthread_condattr_t * __restrict __attr, __clockid_t *__restrict __clock_id) __THROW __nonnull ((1, 2)); /* Set the clock selected for the condition variable attribute ATTR. */ extern int pthread_condattr_setclock (pthread_condattr_t *__attr, __clockid_t __clock_id) __THROW __nonnull ((1)); /* Functions to handle spinlocks. */ /* Initialize the spinlock LOCK. If PSHARED is nonzero the spinlock can be shared between different processes. */ extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) __THROW __nonnull ((1)); /* Destroy the spinlock LOCK. */ extern int pthread_spin_destroy (pthread_spinlock_t *__lock) __THROW __nonnull ((1)); /* Wait until spinlock LOCK is retrieved. */ extern int pthread_spin_lock (pthread_spinlock_t *__lock) __THROWNL __nonnull ((1)); /* Try to lock spinlock LOCK. */ extern int pthread_spin_trylock (pthread_spinlock_t *__lock) __THROWNL __nonnull ((1)); /* Release spinlock LOCK. */ extern int pthread_spin_unlock (pthread_spinlock_t *__lock) __THROWNL __nonnull ((1)); /* Functions to handle barriers. */ /* Initialize BARRIER with the attributes in ATTR. The barrier is opened when COUNT waiters arrived. */ extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, const pthread_barrierattr_t *__restrict __attr, unsigned int __count) __THROW __nonnull ((1)); /* Destroy a previously dynamically initialized barrier BARRIER. */ extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) __THROW __nonnull ((1)); /* Wait on barrier BARRIER. */ extern int pthread_barrier_wait (pthread_barrier_t *__barrier) __THROWNL __nonnull ((1)); /* Initialize barrier attribute ATTR. */ extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) __THROW __nonnull ((1)); /* Destroy previously dynamically initialized barrier attribute ATTR. */ extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) __THROW __nonnull ((1)); /* Get the process-shared flag of the barrier attribute ATTR. */ extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * __restrict __attr, int *__restrict __pshared) __THROW __nonnull ((1, 2)); /* Set the process-shared flag of the barrier attribute ATTR. */ extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, int __pshared) __THROW __nonnull ((1)); /* Functions for handling thread-specific data. */ /* Create a key value identifying a location in the thread-specific data area. Each thread maintains a distinct thread-specific data area. DESTR_FUNCTION, if non-NULL, is called with the value associated to that key when the key is destroyed. DESTR_FUNCTION is not called if the value associated is NULL when the key is destroyed. */ extern int pthread_key_create (pthread_key_t *__key, void (*__destr_function) (void *)) __THROW __nonnull ((1)); /* Destroy KEY. */ extern int pthread_key_delete (pthread_key_t __key) __THROW; /* Return current value of the thread-specific data slot identified by KEY. */ extern void *pthread_getspecific (pthread_key_t __key) __THROW; /* Store POINTER in the thread-specific data slot identified by KEY. */ extern int pthread_setspecific (pthread_key_t __key, const void *__pointer) __THROW __attr_access_none (2); /* Get ID of CPU-time clock for thread THREAD_ID. */ extern int pthread_getcpuclockid (pthread_t __thread_id, __clockid_t *__clock_id) __THROW __nonnull ((2)); /* Install handlers to be called when a new process is created with FORK. The PREPARE handler is called in the parent process just before performing FORK. The PARENT handler is called in the parent process just after FORK. The CHILD handler is called in the child process. Each of the three handlers can be NULL, meaning that no handler needs to be called at that point. PTHREAD_ATFORK can be called several times, in which case the PREPARE handlers are called in LIFO order (last added with PTHREAD_ATFORK, first called before FORK), and the PARENT and CHILD handlers are called in FIFO (first added, first called). */ extern int pthread_atfork (void (*__prepare) (void), void (*__parent) (void), void (*__child) (void)) __THROW; /* Optimizations. */ __extern_inline int __NTH (pthread_equal (pthread_t __thread1, pthread_t __thread2)) { return __thread1 == __thread2; } __END_DECLS # 2 "../include/pthread.h" 2 /* Prototypes repeated instead of using __typeof because pthread.h is included in C++ tests, and declaring functions with __typeof and __THROW doesn't work for C++. */ extern int __pthread_barrier_init (pthread_barrier_t *__restrict __barrier, const pthread_barrierattr_t *__restrict __attr, unsigned int __count) __THROW __nonnull ((1)); libc_hidden_proto (__pthread_barrier_init) extern int __pthread_barrier_wait (pthread_barrier_t *__barrier) __THROWNL __nonnull ((1)); libc_hidden_proto (__pthread_barrier_wait) /* This function is called to initialize the pthread library. */ extern void __pthread_initialize (void) __attribute__ ((weak)); extern int __pthread_kill (pthread_t threadid, int signo); extern pthread_t __pthread_self (void); # 22 "../sysdeps/unix/sysv/linux/s390/elision-conf.h" 2 #define ENABLE_ELISION_SUPPORT 1 #define ELISION_UNLOCK_NEEDS_ADAPT_COUNT 1 /* Should make sure there is no false sharing on this. */ struct elision_config { int skip_lock_busy; int skip_lock_internal_abort; int skip_lock_out_of_tbegin_retries; int try_tbegin; int skip_trylock_internal_abort; }; extern struct elision_config __elision_aconf attribute_hidden; # 24 "../sysdeps/nptl/lowlevellock.h" 2 # 1 "../sysdeps/nptl/lowlevellock-futex.h" 1 /* Low-level locking access to futex facilities. Stub version. Copyright (C) 2014-2021 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 . */ #define _LOWLEVELLOCK_FUTEX_H 1 # 1 "../sysdeps/unix/sysv/linux/sysdep-cancel.h" 1 /* Single-thread optimization definitions. Linux version. Copyright (C) 2017-2021 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 . */ #define _SYSDEP_CANCEL_H # 1 "../sysdeps/s390/nptl/tls.h" 1 /* Definition for thread-local data handling. NPTL/s390 version. Copyright (C) 2003-2021 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 . */ # 25 "../sysdeps/unix/sysv/linux/sysdep-cancel.h" 2 /* Set cancellation mode to asynchronous. */ extern int __pthread_enable_asynccancel (void); libc_hidden_proto (__pthread_enable_asynccancel) #define LIBC_CANCEL_ASYNC() __pthread_enable_asynccancel () /* Reset to previous cancellation mode. */ extern void __pthread_disable_asynccancel (int oldtype); libc_hidden_proto (__pthread_disable_asynccancel) #define LIBC_CANCEL_RESET(oldtype) __pthread_disable_asynccancel (oldtype) # 25 "../sysdeps/nptl/lowlevellock-futex.h" 2 # 1 "../sysdeps/unix/sysv/linux/s390/kernel-features.h" 1 /* Set flags signalling availability of kernel features based on given kernel version number. S/390 version. Copyright (C) 1999-2021 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 . */ /* Direct socketcalls available with kernel 4.3. */ # 30 "../sysdeps/unix/sysv/linux/s390/kernel-features.h" #undef __ASSUME_ACCEPT_SYSCALL #undef __ASSUME_ACCEPT4_SYSCALL #undef __ASSUME_RECVMMSG_SYSCALL #undef __ASSUME_SENDMMSG_SYSCALL #undef __ASSUME_SENDMSG_SYSCALL #undef __ASSUME_RECVMSG_SYSCALL #undef __ASSUME_CONNECT_SYSCALL #undef __ASSUME_RECVFROM_SYSCALL #undef __ASSUME_SENDTO_SYSCALL #undef __ASSUME_GETSOCKOPT_SYSCALL #undef __ASSUME_SETSOCKOPT_SYSCALL /* s390 only supports ipc syscall before 5.1. */ #undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS #undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 #undef __ASSUME_CLONE_DEFAULT #define __ASSUME_CLONE_BACKWARDS2 # 26 "../sysdeps/nptl/lowlevellock-futex.h" 2 #define FUTEX_WAIT 0 #define FUTEX_WAKE 1 #define FUTEX_REQUEUE 3 #define FUTEX_CMP_REQUEUE 4 #define FUTEX_WAKE_OP 5 #define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) #define FUTEX_LOCK_PI 6 #define FUTEX_UNLOCK_PI 7 #define FUTEX_TRYLOCK_PI 8 #define FUTEX_WAIT_BITSET 9 #define FUTEX_WAKE_BITSET 10 #define FUTEX_WAIT_REQUEUE_PI 11 #define FUTEX_CMP_REQUEUE_PI 12 #define FUTEX_LOCK_PI2 13 #define FUTEX_PRIVATE_FLAG 128 #define FUTEX_CLOCK_REALTIME 256 #define FUTEX_BITSET_MATCH_ANY 0xffffffff /* Values for 'private' parameter of locking macros. Yes, the definition seems to be backwards. But it is not. The bit will be reversed before passing to the system call. */ #define LLL_PRIVATE 0 #define LLL_SHARED FUTEX_PRIVATE_FLAG #define __lll_private_flag(fl,private) (((fl) | FUTEX_PRIVATE_FLAG) ^ (private)) #define lll_futex_syscall(nargs,futexp,op,...) ({ long int __ret = INTERNAL_SYSCALL (futex, nargs, futexp, op, __VA_ARGS__); (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (__ret)) ? -INTERNAL_SYSCALL_ERRNO (__ret) : 0); }) /* For most of these macros, the return value is never really used. Nevertheless, the protocol is that each one returns a negated errno code for failure or zero for success. (Note that the corresponding Linux system calls can sometimes return positive values for success cases too. We never use those values.) */ /* Wait while *FUTEXP == VAL for an lll_futex_wake call on FUTEXP. */ #define lll_futex_wait(futexp,val,private) lll_futex_timed_wait (futexp, val, NULL, private) #define lll_futex_timed_wait(futexp,val,timeout,private) lll_futex_syscall (4, futexp, __lll_private_flag (FUTEX_WAIT, private), val, timeout) /* Verify whether the supplied clockid is supported by lll_futex_clock_wait_bitset. */ #define lll_futex_supported_clockid(clockid) ((clockid) == CLOCK_REALTIME || (clockid) == CLOCK_MONOTONIC) /* Wake up up to NR waiters on FUTEXP. */ #define lll_futex_wake(futexp,nr,private) lll_futex_syscall (4, futexp, __lll_private_flag (FUTEX_WAKE, private), nr, 0) /* Wake up up to NR_WAKE waiters on FUTEXP. Move up to NR_MOVE of the rest from waiting on FUTEXP to waiting on MUTEX (a different futex). Returns non-zero if error happened, zero if success. */ #define lll_futex_requeue(futexp,nr_wake,nr_move,mutex,val,private) lll_futex_syscall (6, futexp, __lll_private_flag (FUTEX_CMP_REQUEUE, private), nr_wake, nr_move, mutex, val) /* Wake up up to NR_WAKE waiters on FUTEXP and NR_WAKE2 on FUTEXP2. Returns non-zero if error happened, zero if success. */ #define lll_futex_wake_unlock(futexp,nr_wake,nr_wake2,futexp2,private) lll_futex_syscall (6, futexp, __lll_private_flag (FUTEX_WAKE_OP, private), nr_wake, nr_wake2, futexp2, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE) #define lll_futex_timed_unlock_pi(futexp,private) lll_futex_syscall (4, futexp, __lll_private_flag (FUTEX_UNLOCK_PI, private), 0, 0) /* Like lll_futex_requeue, but pairs with lll_futex_wait_requeue_pi and inherits priority from the waiter. */ #define lll_futex_cmp_requeue_pi(futexp,nr_wake,nr_move,mutex,val,private) lll_futex_syscall (6, futexp, __lll_private_flag (FUTEX_CMP_REQUEUE_PI, private), nr_wake, nr_move, mutex, val) /* Like lll_futex_wait, but acting as a cancellable entrypoint. */ #define lll_futex_wait_cancel(futexp,val,private) ({ int __oldtype = LIBC_CANCEL_ASYNC (); long int __err = lll_futex_wait (futexp, val, LLL_SHARED); LIBC_CANCEL_RESET (__oldtype); __err; }) /* Like lll_futex_timed_wait, but acting as a cancellable entrypoint. */ #define lll_futex_timed_wait_cancel(futexp,val,timeout,private) ({ int __oldtype = LIBC_CANCEL_ASYNC (); long int __err = lll_futex_timed_wait (futexp, val, timeout, private); LIBC_CANCEL_RESET (__oldtype); __err; }) # 25 "../sysdeps/nptl/lowlevellock.h" 2 /* Low-level locks use a combination of atomic operations (to acquire and release lock ownership) and futex operations (to block until the state of a lock changes). A lock can be in one of three states: 0: not acquired, 1: acquired with no waiters; no other threads are blocked or about to block for changes to the lock state, >1: acquired, possibly with waiters; there may be other threads blocked or about to block for changes to the lock state. We expect that the common case is an uncontended lock, so we just need to transition the lock between states 0 and 1; releasing the lock does not need to wake any other blocked threads. If the lock is contended and a thread decides to block using a futex operation, then this thread needs to first change the state to >1; if this state is observed during lock release, the releasing thread will wake one of the potentially blocked threads. Much of this code takes a 'private' parameter. This may be: LLL_PRIVATE: lock only shared within a process LLL_SHARED: lock may be shared across processes. Condition variables contain an optimization for broadcasts that requeues waiting threads on a lock's futex. Therefore, there is a special variant of the locks (whose name contains "cond") that makes sure to always set the lock state to >1 and not just 1. Robust locks set the lock to the id of the owner. This allows detection of the case where the owner exits without releasing the lock. Flags are OR'd with the owner id to record additional information about lock state. Therefore the states of robust locks are: 0: not acquired id: acquired (by user identified by id & FUTEX_TID_MASK) The following flags may be set in the robust lock value: FUTEX_WAITERS - possibly has waiters FUTEX_OWNER_DIED - owning user has exited without releasing the futex. */ /* If LOCK is 0 (not acquired), set to 1 (acquired with no waiters) and return 0. Otherwise leave lock unchanged and return non-zero to indicate that the lock was not acquired. */ #define __lll_trylock(lock) __glibc_unlikely (atomic_compare_and_exchange_bool_acq ((lock), 1, 0)) #define lll_trylock(lock) __lll_trylock (&(lock)) /* If LOCK is 0 (not acquired), set to 2 (acquired, possibly with waiters) and return 0. Otherwise leave lock unchanged and return non-zero to indicate that the lock was not acquired. */ #define lll_cond_trylock(lock) __glibc_unlikely (atomic_compare_and_exchange_bool_acq (&(lock), 2, 0)) extern void __lll_lock_wait_private (int *futex); libc_hidden_proto (__lll_lock_wait_private) extern void __lll_lock_wait (int *futex, int private); libc_hidden_proto (__lll_lock_wait) /* This is an expression rather than a statement even though its value is void, so that it can be used in a comma expression or as an expression that's cast to void. */ /* The inner conditional compiles to a call to __lll_lock_wait_private if private is known at compile time to be LLL_PRIVATE, and to a call to __lll_lock_wait otherwise. */ /* If FUTEX is 0 (not acquired), set to 1 (acquired with no waiters) and return. Otherwise, ensure that it is >1 (acquired, possibly with waiters) and then block until we acquire the lock, at which point FUTEX will still be >1. The lock is always acquired on return. */ #define __lll_lock(futex,private) ((void) ({ int *__futex = (futex); if (__glibc_unlikely (atomic_compare_and_exchange_bool_acq (__futex, 1, 0))) { if (__builtin_constant_p (private) && (private) == LLL_PRIVATE) __lll_lock_wait_private (__futex); else __lll_lock_wait (__futex, private); } })) # 107 "../sysdeps/nptl/lowlevellock.h" #define lll_lock(futex,private) __lll_lock (&(futex), private) /* This is an expression rather than a statement even though its value is void, so that it can be used in a comma expression or as an expression that's cast to void. */ /* Unconditionally set FUTEX to 2 (acquired, possibly with waiters). If FUTEX was 0 (not acquired) then return. Otherwise, block until the lock is acquired, at which point FUTEX is 2 (acquired, possibly with waiters). The lock is always acquired on return. */ #define __lll_cond_lock(futex,private) ((void) ({ int *__futex = (futex); if (__glibc_unlikely (atomic_exchange_acq (__futex, 2) != 0)) __lll_lock_wait (__futex, private); })) #define lll_cond_lock(futex,private) __lll_cond_lock (&(futex), private) extern void __lll_lock_wake_private (int *futex); libc_hidden_proto (__lll_lock_wake_private) extern void __lll_lock_wake (int *futex, int private); libc_hidden_proto (__lll_lock_wake) /* This is an expression rather than a statement even though its value is void, so that it can be used in a comma expression or as an expression that's cast to void. */ /* Unconditionally set FUTEX to 0 (not acquired), releasing the lock. If FUTEX was >1 (acquired, possibly with waiters), then wake any waiters. The waiter that acquires the lock will set FUTEX to >1. Evaluate PRIVATE before releasing the lock so that we do not violate the mutex destruction requirements. Specifically, we need to ensure that another thread can destroy the mutex (and reuse its memory) once it acquires the lock and when there will be no further lock acquisitions; thus, we must not access the lock after releasing it, or those accesses could be concurrent with mutex destruction or reuse of the memory. */ #define __lll_unlock(futex,private) ((void) ({ int *__futex = (futex); int __private = (private); int __oldval = atomic_exchange_rel (__futex, 0); if (__glibc_unlikely (__oldval > 1)) { if (__builtin_constant_p (private) && (private) == LLL_PRIVATE) __lll_lock_wake_private (__futex); else __lll_lock_wake (__futex, __private); } })) # 159 "../sysdeps/nptl/lowlevellock.h" #define lll_unlock(futex,private) __lll_unlock (&(futex), private) #define lll_islocked(futex) ((futex) != LLL_LOCK_INITIALIZER) /* Our internal lock implementation is identical to the binary-compatible mutex implementation. */ /* Initializers for lock. */ #define LLL_LOCK_INITIALIZER (0) #define LLL_LOCK_INITIALIZER_LOCKED (1) /* Elision support. */ /* Force elision for all new locks. This is used to decide whether existing DEFAULT locks should be automatically upgraded to elision in pthread_mutex_lock. Disabled for suid programs. Only used when elision is available. */ extern int __pthread_force_elision; libc_hidden_proto (__pthread_force_elision) extern void __lll_elision_init (void) attribute_hidden; extern int __lll_clocklock_elision (int *futex, short *adapt_count, clockid_t clockid, const struct __timespec64 *timeout, int private); libc_hidden_proto (__lll_clocklock_elision) extern int __lll_lock_elision (int *futex, short *adapt_count, int private); libc_hidden_proto (__lll_lock_elision) extern int __lll_unlock_elision (int *lock, short *adapt_count, int private); libc_hidden_proto (__lll_unlock_elision) extern int __lll_trylock_elision (int *lock, short *adapt_count); libc_hidden_proto (__lll_trylock_elision) #define lll_clocklock_elision(futex,adapt_count,clockid,timeout,private) __lll_clocklock_elision (&(futex), &(adapt_count), clockid, timeout, private) #define lll_lock_elision(futex,adapt_count,private) __lll_lock_elision (&(futex), &(adapt_count), private) #define lll_trylock_elision(futex,adapt_count) __lll_trylock_elision (&(futex), &(adapt_count)) #define lll_unlock_elision(futex,adapt_count,private) __lll_unlock_elision (&(futex), &(adapt_count), private) /* Automatically enable elision for existing user lock kinds. */ #define FORCE_ELISION(m,s) if (__pthread_force_elision) { int mutex_kind = atomic_load_relaxed (&((m)->__data.__kind)); if ((mutex_kind & PTHREAD_MUTEX_ELISION_FLAGS_NP) == 0) { mutex_kind |= PTHREAD_MUTEX_ELISION_NP; atomic_store_relaxed (&((m)->__data.__kind), mutex_kind); } if ((mutex_kind & PTHREAD_MUTEX_ELISION_NP) != 0) { s; } } # 262 "../sysdeps/nptl/lowlevellock.h" # 274 "../sysdeps/nptl/lowlevellock.h" # 29 "../nptl/descr.h" 2 # 1 "../sysdeps/s390/nptl/pthreaddef.h" 1 /* Copyright (C) 2003-2021 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 . */ /* Default stack size. */ #define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024) /* Minimum guard size. */ #define ARCH_MIN_GUARD_SIZE 0 /* Required stack pointer alignment at beginning. SSE requires 16 bytes. */ #define STACK_ALIGN 16 /* Minimal stack size after allocating thread descriptor and guard size. */ #define MINIMAL_REST_STACK 2048 /* Alignment requirement for TCB. */ #define TCB_ALIGNMENT 16 /* Location of current stack frame. */ #define CURRENT_STACK_FRAME __builtin_frame_address (0) # 30 "../nptl/descr.h" 2 # 1 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 1 /* System-specific settings for dynamic linker code. Linux version. Copyright (C) 2005-2021 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 . */ # 1 "../sysdeps/generic/dl-sysdep.h" 1 /* System-specific settings for dynamic linker code. Generic version. Copyright (C) 2002-2021 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 . */ /* No multiple inclusion protection need here because it's just macros. We don't want to use _DL_SYSDEP_H in case we are #include_next'd. */ /* This macro must be defined to either 0 or 1. If 1, then an errno global variable hidden in ld.so will work right with all the errno-using libc code compiled for ld.so, and there is never a need to share the errno location with libc. This is appropriate only if all the libc functions that ld.so uses are called without PLT and always get the versions linked into ld.so rather than the libc ones. */ #define RTLD_PRIVATE_ERRNO 0 # 20 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 2 /* On many architectures the kernel provides a virtual DSO and gives AT_SYSINFO_EHDR to point us to it. As this is introduced for new machines, we should look at it for unwind information even if we aren't making direct use of it. So enable this across the board. */ #define NEED_DL_SYSINFO_DSO 1 /* Get version of the OS. */ extern int _dl_discover_osversion (void) attribute_hidden; #define HAVE_DL_DISCOVER_OSVERSION 1 # 31 "../nptl/descr.h" 2 # 1 "../sysdeps/nptl/thread_db.h" 1 /* thread_db.h -- interface to libthread_db.so library for debugging -lpthread Copyright (C) 1999-2021 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 . */ #define _THREAD_DB_H 1 /* This is the debugger interface for the NPTL library. It is modelled closely after the interface with same names in Solaris with the goal to share the same code in the debugger. */ # 1 "../include/pthread.h" 1 /* Prototypes repeated instead of using __typeof because pthread.h is included in C++ tests, and declaring functions with __typeof and __THROW doesn't work for C++. */ extern int __pthread_barrier_init (pthread_barrier_t *__restrict __barrier, const pthread_barrierattr_t *__restrict __attr, unsigned int __count) __THROW __nonnull ((1)); libc_hidden_proto (__pthread_barrier_init) extern int __pthread_barrier_wait (pthread_barrier_t *__barrier) __THROWNL __nonnull ((1)); libc_hidden_proto (__pthread_barrier_wait) /* This function is called to initialize the pthread library. */ extern void __pthread_initialize (void) __attribute__ ((weak)); extern int __pthread_kill (pthread_t threadid, int signo); extern pthread_t __pthread_self (void); # 26 "../sysdeps/nptl/thread_db.h" 2 # 1 "../include/stdint.h" 1 # 27 "../sysdeps/nptl/thread_db.h" 2 # 1 "../include/sys/types.h" 1 # 28 "../sysdeps/nptl/thread_db.h" 2 # 1 "../sysdeps/unix/sysv/linux/sys/procfs.h" 1 /* Definitions for core files and libthread_db. Generic Linux version. Copyright (C) 1996-2021 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 . */ #define _SYS_PROCFS_H 1 /* This is somewhat modelled after the file of the same name on SVR4 systems. It provides a definition of the core file format for ELF used on Linux. It doesn't have anything to do with the /proc file system, even though Linux has one. Anyway, the whole purpose of this file is for GDB and GDB only. Don't read too much into it. Don't use it for anything other than GDB unless you know what you are doing. */ # 1 "../include/sys/types.h" 1 # 35 "../sysdeps/unix/sysv/linux/sys/procfs.h" 2 # 1 "../sysdeps/unix/sysv/linux/s390/sys/user.h" 1 /* Copyright (C) 2000-2021 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 . */ #define _SYS_USER_H 1 /* The whole purpose of this file is for GDB and GDB only. Don't read too much into it. Don't use it for anything other than GDB unless you know what you are doing. */ struct _user_psw_struct { unsigned long mask; unsigned long addr; }; struct _user_fpregs_struct { unsigned int fpc; double fprs[16]; }; struct _user_per_struct { unsigned long control_regs[3]; unsigned single_step : 1; unsigned instruction_fetch : 1; unsigned : 30; unsigned long starting_addr; unsigned long ending_addr; unsigned short perc_atmid; unsigned long address; unsigned char access_id; }; struct _user_regs_struct { struct _user_psw_struct psw; /* Program status word. */ unsigned long gprs[16]; /* General purpose registers. */ unsigned int acrs[16]; /* Access registers. */ unsigned long orig_gpr2; /* Original gpr2. */ struct _user_fpregs_struct fp_regs; /* Floating point registers. */ struct _user_per_struct per_info; /* Hardware tracing registers. */ unsigned long ieee_instruction_pointer; /* Always 0. */ }; struct user { struct _user_regs_struct regs; /* User registers. */ unsigned long int u_tsize; /* Text segment size (pages). */ unsigned long int u_dsize; /* Data segment size (pages). */ unsigned long int u_ssize; /* Stack segment size (pages). */ unsigned long start_code; /* Starting address of text. */ unsigned long start_stack; /* Starting address of stack area. */ long int signal; /* Signal causing the core dump. */ struct _user_regs_struct *u_ar0; /* Help gdb find registers. */ unsigned long magic; /* Identifies a core file. */ char u_comm[32]; /* User command naem. */ }; #define PAGE_SHIFT 12 #define PAGE_SIZE (1UL << PAGE_SHIFT) #define PAGE_MASK (~(PAGE_SIZE-1)) #define NBPG PAGE_SIZE #define UPAGES 1 #define HOST_TEXT_START_ADDR (u.start_code) #define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) # 36 "../sysdeps/unix/sysv/linux/sys/procfs.h" 2 /* bits/procfs.h, provided by each architecture, must define elf_gregset_t, elf_fpregset_t and any other architecture-specific types needed. */ # 1 "../sysdeps/unix/sysv/linux/s390/bits/procfs.h" 1 /* Types for registers for sys/procfs.h. S/390 version. Copyright (C) 2000-2021 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 . */ typedef greg_t elf_greg_t; #define ELF_NGREG NGREG typedef gregset_t elf_gregset_t; typedef fpreg_t elf_fpreg_t; typedef fpregset_t elf_fpregset_t; # 41 "../sysdeps/unix/sysv/linux/sys/procfs.h" 2 /* bits/procfs-id.h must define __pr_uid_t and __pr_gid_t, the types of pr_uid and pr_gid. */ # 1 "../sysdeps/unix/sysv/linux/s390/bits/procfs-id.h" 1 /* Types of pr_uid and pr_gid in struct elf_prpsinfo. S/390 version. Copyright (C) 2018-2021 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 . */ typedef unsigned int __pr_uid_t; typedef unsigned int __pr_gid_t; # 45 "../sysdeps/unix/sysv/linux/sys/procfs.h" 2 __BEGIN_DECLS /* Signal info. */ struct elf_siginfo { int si_signo; /* Signal number. */ int si_code; /* Extra code. */ int si_errno; /* Errno. */ }; /* Definitions to generate Intel SVR4-like core files. These mostly have the same names as the SVR4 types with "elf_" tacked on the front to prevent clashes with Linux definitions, and the typedef forms have been avoided. This is mostly like the SVR4 structure, but more Linuxy, with things that Linux does not support and which GDB doesn't really use excluded. */ struct elf_prstatus { struct elf_siginfo pr_info; /* Info associated with signal. */ short int pr_cursig; /* Current signal. */ unsigned long int pr_sigpend; /* Set of pending signals. */ unsigned long int pr_sighold; /* Set of held signals. */ __pid_t pr_pid; __pid_t pr_ppid; __pid_t pr_pgrp; __pid_t pr_sid; struct timeval pr_utime; /* User time. */ struct timeval pr_stime; /* System time. */ struct timeval pr_cutime; /* Cumulative user time. */ struct timeval pr_cstime; /* Cumulative system time. */ elf_gregset_t pr_reg; /* GP registers. */ int pr_fpvalid; /* True if math copro being used. */ }; #define ELF_PRARGSZ (80) struct elf_prpsinfo { char pr_state; /* Numeric process state. */ char pr_sname; /* Char for pr_state. */ char pr_zomb; /* Zombie. */ char pr_nice; /* Nice val. */ unsigned long int pr_flag; /* Flags. */ __pr_uid_t pr_uid; __pr_gid_t pr_gid; int pr_pid, pr_ppid, pr_pgrp, pr_sid; /* Lots missing */ char pr_fname[16]; /* Filename of executable. */ char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */ }; /* The rest of this file provides the types for emulation of the Solaris interfaces that should be implemented by users of libthread_db. */ /* Addresses. */ typedef void *psaddr_t; # 1 "../sysdeps/unix/sysv/linux/bits/procfs-prregset.h" 1 /* Types of prgregset_t and prfpregset_t. Generic Linux version. Copyright (C) 2018-2021 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 . */ typedef elf_gregset_t __prgregset_t; typedef elf_fpregset_t __prfpregset_t; # 107 "../sysdeps/unix/sysv/linux/sys/procfs.h" 2 /* Register sets. Linux has different names. */ typedef __prgregset_t prgregset_t; typedef __prfpregset_t prfpregset_t; /* We don't have any differences between processes and threads, therefore have only one PID type. */ typedef __pid_t lwpid_t; /* Process status and info. In the end we do provide typedefs for them. */ typedef struct elf_prstatus prstatus_t; typedef struct elf_prpsinfo prpsinfo_t; __END_DECLS /* On some architectures, provide other-ABI variants of the above types. */ # 1 "../sysdeps/unix/sysv/linux/s390/bits/procfs-extra.h" 1 /* Extra sys/procfs.h definitions. S/390 version. Copyright (C) 2000-2021 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 . */ /* Provide 32-bit variants so that BFD can read 32-bit core files. */ #define ELF_NGREG32 36 typedef unsigned int elf_greg_t32; typedef elf_greg_t32 elf_gregset_t32[ELF_NGREG32] __attribute__ ((__aligned__ (8))); typedef elf_fpregset_t elf_fpregset_t32; struct elf_prstatus32 { struct elf_siginfo pr_info; /* Info associated with signal. */ short int pr_cursig; /* Current signal. */ unsigned int pr_sigpend; /* Set of pending signals. */ unsigned int pr_sighold; /* Set of held signals. */ __pid_t pr_pid; __pid_t pr_ppid; __pid_t pr_pgrp; __pid_t pr_sid; struct { int tv_sec, tv_usec; } pr_utime, /* User time. */ pr_stime, /* System time. */ pr_cutime, /* Cumulative user time. */ pr_cstime; /* Cumulative system time. */ elf_gregset_t32 pr_reg; /* GP registers. */ int pr_fpvalid; /* True if math copro being used. */ }; struct elf_prpsinfo32 { char pr_state; /* Numeric process state. */ char pr_sname; /* Char for pr_state. */ char pr_zomb; /* Zombie. */ char pr_nice; /* Nice val. */ unsigned int pr_flag; /* Flags. */ unsigned short int pr_uid; unsigned short int pr_gid; int pr_pid, pr_ppid, pr_pgrp, pr_sid; /* Lots missing */ char pr_fname[16]; /* Filename of executable. */ char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */ }; typedef elf_gregset_t32 prgregset32_t; typedef elf_fpregset_t32 prfpregset32_t; typedef struct elf_prstatus32 prstatus32_t; typedef struct elf_prpsinfo32 prpsinfo32_t; # 125 "../sysdeps/unix/sysv/linux/sys/procfs.h" 2 # 29 "../sysdeps/nptl/thread_db.h" 2 /* Error codes of the library. */ typedef enum { TD_OK, /* No error. */ TD_ERR, /* No further specified error. */ TD_NOTHR, /* No matching thread found. */ TD_NOSV, /* No matching synchronization handle found. */ TD_NOLWP, /* No matching light-weighted process found. */ TD_BADPH, /* Invalid process handle. */ TD_BADTH, /* Invalid thread handle. */ TD_BADSH, /* Invalid synchronization handle. */ TD_BADTA, /* Invalid thread agent. */ TD_BADKEY, /* Invalid key. */ TD_NOMSG, /* No event available. */ TD_NOFPREGS, /* No floating-point register content available. */ TD_NOLIBTHREAD, /* Application not linked with thread library. */ TD_NOEVENT, /* Requested event is not supported. */ TD_NOCAPAB, /* Capability not available. */ TD_DBERR, /* Internal debug library error. */ TD_NOAPLIC, /* Operation is not applicable. */ TD_NOTSD, /* No thread-specific data available. */ TD_MALLOC, /* Out of memory. */ TD_PARTIALREG, /* Not entire register set was read or written. */ TD_NOXREGS, /* X register set not available for given thread. */ TD_TLSDEFER, /* Thread has not yet allocated TLS for given module. */ TD_NOTALLOC = TD_TLSDEFER, TD_VERSION, /* Version if libpthread and libthread_db do not match. */ TD_NOTLS /* There is no TLS segment in the given module. */ } td_err_e; /* Possible thread states. TD_THR_ANY_STATE is a pseudo-state used to select threads regardless of state in td_ta_thr_iter(). */ typedef enum { TD_THR_ANY_STATE, TD_THR_UNKNOWN, TD_THR_STOPPED, TD_THR_RUN, TD_THR_ACTIVE, TD_THR_ZOMBIE, TD_THR_SLEEP, TD_THR_STOPPED_ASLEEP } td_thr_state_e; /* Thread type: user or system. TD_THR_ANY_TYPE is a pseudo-type used to select threads regardless of type in td_ta_thr_iter(). */ typedef enum { TD_THR_ANY_TYPE, TD_THR_USER, TD_THR_SYSTEM } td_thr_type_e; /* Types of the debugging library. */ /* Handle for a process. This type is opaque. */ typedef struct td_thragent td_thragent_t; /* The actual thread handle type. This is also opaque. */ typedef struct td_thrhandle { td_thragent_t *th_ta_p; psaddr_t th_unique; } td_thrhandle_t; /* Forward declaration of a type defined by and for the dynamic linker. */ struct link_map; /* Flags for `td_ta_thr_iter'. */ #define TD_THR_ANY_USER_FLAGS 0xffffffff #define TD_THR_LOWEST_PRIORITY -20 #define TD_SIGNO_MASK NULL #define TD_EVENTSIZE 2 #define BT_UISHIFT 5 #define BT_NBIPUI (1 << BT_UISHIFT) #define BT_UIMASK (BT_NBIPUI - 1) /* Bitmask of enabled events. */ typedef struct td_thr_events { uint32_t event_bits[TD_EVENTSIZE]; } td_thr_events_t; /* Event set manipulation macros. */ #define __td_eventmask(n) (UINT32_C (1) << (((n) - 1) & BT_UIMASK)) #define __td_eventword(n) ((UINT32_C ((n) - 1)) >> BT_UISHIFT) #define td_event_emptyset(setp) do { int __i; for (__i = TD_EVENTSIZE; __i > 0; --__i) (setp)->event_bits[__i - 1] = 0; } while (0) #define td_event_fillset(setp) do { int __i; for (__i = TD_EVENTSIZE; __i > 0; --__i) (setp)->event_bits[__i - 1] = UINT32_C (0xffffffff); } while (0) #define td_event_addset(setp,n) (((setp)->event_bits[__td_eventword (n)]) |= __td_eventmask (n)) #define td_event_delset(setp,n) (((setp)->event_bits[__td_eventword (n)]) &= ~__td_eventmask (n)) #define td_eventismember(setp,n) (__td_eventmask (n) & ((setp)->event_bits[__td_eventword (n)])) #define td_eventisempty(setp) (!((setp)->event_bits[0]) && !((setp)->event_bits[1])) /* Events reportable by the thread implementation. */ typedef enum { TD_ALL_EVENTS, /* Pseudo-event number. */ TD_EVENT_NONE = TD_ALL_EVENTS, /* Depends on context. */ TD_READY, /* Is executable now. */ TD_SLEEP, /* Blocked in a synchronization obj. */ TD_SWITCHTO, /* Now assigned to a process. */ TD_SWITCHFROM, /* Not anymore assigned to a process. */ TD_LOCK_TRY, /* Trying to get an unavailable lock. */ TD_CATCHSIG, /* Signal posted to the thread. */ TD_IDLE, /* Process getting idle. */ TD_CREATE, /* New thread created. */ TD_DEATH, /* Thread terminated. */ TD_PREEMPT, /* Preempted. */ TD_PRI_INHERIT, /* Inherited elevated priority. */ TD_REAP, /* Reaped. */ TD_CONCURRENCY, /* Number of processes changing. */ TD_TIMEOUT, /* Conditional variable wait timed out. */ TD_MIN_EVENT_NUM = TD_READY, TD_MAX_EVENT_NUM = TD_TIMEOUT, TD_EVENTS_ENABLE = 31 /* Event reporting enabled. */ } td_event_e; /* Values representing the different ways events are reported. */ typedef enum { NOTIFY_BPT, /* User must insert breakpoint at u.bptaddr. */ NOTIFY_AUTOBPT, /* Breakpoint at u.bptaddr is automatically inserted. */ NOTIFY_SYSCALL /* System call u.syscallno will be invoked. */ } td_notify_e; /* Description how event type is reported. */ typedef struct td_notify { td_notify_e type; /* Way the event is reported. */ union { psaddr_t bptaddr; /* Address of breakpoint. */ int syscallno; /* Number of system call used. */ } u; } td_notify_t; /* Structure used to report event. */ typedef struct td_event_msg { td_event_e event; /* Event type being reported. */ const td_thrhandle_t *th_p; /* Thread reporting the event. */ union { uintptr_t data; /* Event specific data. */ } msg; } td_event_msg_t; /* Structure containing event data available in each thread structure. */ typedef struct { td_thr_events_t eventmask; /* Mask of enabled events. */ td_event_e eventnum; /* Number of last event. */ void *eventdata; /* Data associated with event. */ } td_eventbuf_t; /* Gathered statistics about the process. */ typedef struct td_ta_stats { int nthreads; /* Total number of threads in use. */ int r_concurrency; /* Concurrency level requested by user. */ int nrunnable_num; /* Average runnable threads, numerator. */ int nrunnable_den; /* Average runnable threads, denominator. */ int a_concurrency_num; /* Achieved concurrency level, numerator. */ int a_concurrency_den; /* Achieved concurrency level, denominator. */ int nlwps_num; /* Average number of processes in use, numerator. */ int nlwps_den; /* Average number of processes in use, denominator. */ int nidle_num; /* Average number of idling processes, numerator. */ int nidle_den; /* Average number of idling processes, denominator. */ } td_ta_stats_t; /* Since Sun's library is based on Solaris threads we have to define a few types to map them to POSIX threads. */ typedef pthread_t thread_t; typedef pthread_key_t thread_key_t; /* Callback for iteration over threads. */ typedef int td_thr_iter_f (const td_thrhandle_t *, void *); /* Callback for iteration over thread local data. */ typedef int td_key_iter_f (thread_key_t, void (*) (void *), void *); /* Forward declaration. This has to be defined by the user. */ struct ps_prochandle; /* Information about the thread. */ typedef struct td_thrinfo { td_thragent_t *ti_ta_p; /* Process handle. */ unsigned int ti_user_flags; /* Unused. */ thread_t ti_tid; /* Thread ID returned by pthread_create(). */ char *ti_tls; /* Pointer to thread-local data. */ psaddr_t ti_startfunc; /* Start function passed to pthread_create(). */ psaddr_t ti_stkbase; /* Base of thread's stack. */ long int ti_stksize; /* Size of thread's stack. */ psaddr_t ti_ro_area; /* Unused. */ int ti_ro_size; /* Unused. */ td_thr_state_e ti_state; /* Thread state. */ unsigned char ti_db_suspended; /* Nonzero if suspended by debugger. */ td_thr_type_e ti_type; /* Type of the thread (system vs user thread). */ intptr_t ti_pc; /* Unused. */ intptr_t ti_sp; /* Unused. */ short int ti_flags; /* Unused. */ int ti_pri; /* Thread priority. */ lwpid_t ti_lid; /* Kernel PID for this thread. */ sigset_t ti_sigmask; /* Signal mask. */ unsigned char ti_traceme; /* Nonzero if event reporting enabled. */ unsigned char ti_preemptflag; /* Unused. */ unsigned char ti_pirecflag; /* Unused. */ sigset_t ti_pending; /* Set of pending signals. */ td_thr_events_t ti_events; /* Set of enabled events. */ } td_thrinfo_t; /* Prototypes for exported library functions. */ /* Initialize the thread debug support library. */ extern td_err_e td_init (void); /* Historical relict. Should not be used anymore. */ extern td_err_e td_log (void); /* Return list of symbols the library can request. */ extern const char **td_symbol_list (void); /* Generate new thread debug library handle for process PS. */ extern td_err_e td_ta_new (struct ps_prochandle *__ps, td_thragent_t **__ta); /* Free resources allocated for TA. */ extern td_err_e td_ta_delete (td_thragent_t *__ta); /* Get number of currently running threads in process associated with TA. */ extern td_err_e td_ta_get_nthreads (const td_thragent_t *__ta, int *__np); /* Return process handle passed in `td_ta_new' for process associated with TA. */ extern td_err_e td_ta_get_ph (const td_thragent_t *__ta, struct ps_prochandle **__ph); /* Map thread library handle PT to thread debug library handle for process associated with TA and store result in *TH. */ extern td_err_e td_ta_map_id2thr (const td_thragent_t *__ta, pthread_t __pt, td_thrhandle_t *__th); /* Map process ID LWPID to thread debug library handle for process associated with TA and store result in *TH. */ extern td_err_e td_ta_map_lwp2thr (const td_thragent_t *__ta, lwpid_t __lwpid, td_thrhandle_t *__th); /* Call for each thread in a process associated with TA the callback function CALLBACK. */ extern td_err_e td_ta_thr_iter (const td_thragent_t *__ta, td_thr_iter_f *__callback, void *__cbdata_p, td_thr_state_e __state, int __ti_pri, sigset_t *__ti_sigmask_p, unsigned int __ti_user_flags); /* Call for each defined thread local data entry the callback function KI. */ extern td_err_e td_ta_tsd_iter (const td_thragent_t *__ta, td_key_iter_f *__ki, void *__p); /* Get event address for EVENT. */ extern td_err_e td_ta_event_addr (const td_thragent_t *__ta, td_event_e __event, td_notify_t *__ptr); /* Enable EVENT in global mask. */ extern td_err_e td_ta_set_event (const td_thragent_t *__ta, td_thr_events_t *__event); /* Disable EVENT in global mask. */ extern td_err_e td_ta_clear_event (const td_thragent_t *__ta, td_thr_events_t *__event); /* Return information about last event. */ extern td_err_e td_ta_event_getmsg (const td_thragent_t *__ta, td_event_msg_t *__msg); /* Set suggested concurrency level for process associated with TA. */ extern td_err_e td_ta_setconcurrency (const td_thragent_t *__ta, int __level); /* Enable collecting statistics for process associated with TA. */ extern td_err_e td_ta_enable_stats (const td_thragent_t *__ta, int __enable); /* Reset statistics. */ extern td_err_e td_ta_reset_stats (const td_thragent_t *__ta); /* Retrieve statistics from process associated with TA. */ extern td_err_e td_ta_get_stats (const td_thragent_t *__ta, td_ta_stats_t *__statsp); /* Validate that TH is a thread handle. */ extern td_err_e td_thr_validate (const td_thrhandle_t *__th); /* Return information about thread TH. */ extern td_err_e td_thr_get_info (const td_thrhandle_t *__th, td_thrinfo_t *__infop); /* Retrieve floating-point register contents of process running thread TH. */ extern td_err_e td_thr_getfpregs (const td_thrhandle_t *__th, prfpregset_t *__regset); /* Retrieve general register contents of process running thread TH. */ extern td_err_e td_thr_getgregs (const td_thrhandle_t *__th, prgregset_t __gregs); /* Retrieve extended register contents of process running thread TH. */ extern td_err_e td_thr_getxregs (const td_thrhandle_t *__th, void *__xregs); /* Get size of extended register set of process running thread TH. */ extern td_err_e td_thr_getxregsize (const td_thrhandle_t *__th, int *__sizep); /* Set floating-point register contents of process running thread TH. */ extern td_err_e td_thr_setfpregs (const td_thrhandle_t *__th, const prfpregset_t *__fpregs); /* Set general register contents of process running thread TH. */ extern td_err_e td_thr_setgregs (const td_thrhandle_t *__th, prgregset_t __gregs); /* Set extended register contents of process running thread TH. */ extern td_err_e td_thr_setxregs (const td_thrhandle_t *__th, const void *__addr); /* Get address of the given module's TLS storage area for the given thread. */ extern td_err_e td_thr_tlsbase (const td_thrhandle_t *__th, unsigned long int __modid, psaddr_t *__base); /* Get address of thread local variable. */ extern td_err_e td_thr_tls_get_addr (const td_thrhandle_t *__th, psaddr_t __map_address, size_t __offset, psaddr_t *__address); /* Enable reporting for EVENT for thread TH. */ extern td_err_e td_thr_event_enable (const td_thrhandle_t *__th, int __event); /* Enable EVENT for thread TH. */ extern td_err_e td_thr_set_event (const td_thrhandle_t *__th, td_thr_events_t *__event); /* Disable EVENT for thread TH. */ extern td_err_e td_thr_clear_event (const td_thrhandle_t *__th, td_thr_events_t *__event); /* Get event message for thread TH. */ extern td_err_e td_thr_event_getmsg (const td_thrhandle_t *__th, td_event_msg_t *__msg); /* Set priority of thread TH. */ extern td_err_e td_thr_setprio (const td_thrhandle_t *__th, int __prio); /* Set pending signals for thread TH. */ extern td_err_e td_thr_setsigpending (const td_thrhandle_t *__th, unsigned char __n, const sigset_t *__ss); /* Set signal mask for thread TH. */ extern td_err_e td_thr_sigsetmask (const td_thrhandle_t *__th, const sigset_t *__ss); /* Return thread local data associated with key TK in thread TH. */ extern td_err_e td_thr_tsd (const td_thrhandle_t *__th, const thread_key_t __tk, void **__data); /* Suspend execution of thread TH. */ extern td_err_e td_thr_dbsuspend (const td_thrhandle_t *__th); /* Resume execution of thread TH. */ extern td_err_e td_thr_dbresume (const td_thrhandle_t *__th); # 32 "../nptl/descr.h" 2 # 1 "../sysdeps/generic/unwind.h" 1 /* Exception handling and frame unwind runtime interface routines. Copyright (C) 2001-2021 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 . */ /* This is derived from the C++ ABI for IA-64. Where we diverge for cross-architecture compatibility are noted with "@@@". */ #define _UNWIND_H 1 /* Level 1: Base ABI */ /* @@@ The IA-64 ABI uses uint64 throughout. Most places this is inefficient for 32-bit and smaller machines. */ typedef unsigned _Unwind_Word __attribute__((__mode__(__unwind_word__))); typedef signed _Unwind_Sword __attribute__((__mode__(__unwind_word__))); typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__))); typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__))); /* @@@ The IA-64 ABI uses a 64-bit word to identify the producer and consumer of an exception. We'll go along with this for now even on 32-bit machines. We'll need to provide some other option for 16-bit machines and for machines with > 8 bits per byte. */ typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__))); /* The unwind interface uses reason codes in several contexts to identify the reasons for failures or other actions. */ typedef enum { _URC_NO_REASON = 0, _URC_FOREIGN_EXCEPTION_CAUGHT = 1, _URC_FATAL_PHASE2_ERROR = 2, _URC_FATAL_PHASE1_ERROR = 3, _URC_NORMAL_STOP = 4, _URC_END_OF_STACK = 5, _URC_HANDLER_FOUND = 6, _URC_INSTALL_CONTEXT = 7, _URC_CONTINUE_UNWIND = 8 } _Unwind_Reason_Code; /* The unwind interface uses a pointer to an exception header object as its representation of an exception being thrown. In general, the full representation of an exception object is language- and implementation-specific, but it will be prefixed by a header understood by the unwind interface. */ struct _Unwind_Exception; typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code, struct _Unwind_Exception *); struct _Unwind_Exception { union { struct { _Unwind_Exception_Class exception_class; _Unwind_Exception_Cleanup_Fn exception_cleanup; _Unwind_Word private_1; _Unwind_Word private_2; }; /* The IA-64 ABI says that this structure must be double-word aligned. */ _Unwind_Word unwind_exception_align[2] __attribute__ ((__aligned__ (2 * sizeof (_Unwind_Word)))); }; }; /* The ACTIONS argument to the personality routine is a bitwise OR of one or more of the following constants. */ typedef int _Unwind_Action; #define _UA_SEARCH_PHASE 1 #define _UA_CLEANUP_PHASE 2 #define _UA_HANDLER_FRAME 4 #define _UA_FORCE_UNWIND 8 #define _UA_END_OF_STACK 16 /* This is an opaque type used to refer to a system-specific data structure used by the system unwinder. This context is created and destroyed by the system, and passed to the personality routine during unwinding. */ struct _Unwind_Context; /* Raise an exception, passing along the given exception object. */ extern _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception *); /* Raise an exception for forced unwinding. */ typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn) (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, struct _Unwind_Context *, void *); extern _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *); /* Helper to invoke the exception_cleanup routine. */ extern void _Unwind_DeleteException (struct _Unwind_Exception *); /* Resume propagation of an existing exception. This is used after e.g. executing cleanup code, and not to implement rethrowing. */ extern void _Unwind_Resume (struct _Unwind_Exception *); /* @@@ Use unwind data to perform a stack backtrace. The trace callback is called for every stack frame in the call chain, but no cleanup actions are performed. */ typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn) (struct _Unwind_Context *, void *); extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *); /* These functions are used for communicating information about the unwind context (i.e. the unwind descriptors and the user register state) between the unwind library and the personality routine and landing pad. Only selected registers maybe manipulated. */ extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int); extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word); extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *); extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr); /* @@@ Retrieve the CFA of the given context. */ extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *); extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *); extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *); /* The personality routine is the function in the C++ (or other language) runtime library which serves as an interface between the system unwind library and language-specific exception handling semantics. It is specific to the code fragment described by an unwind info block, and it is always referenced via the pointer in the unwind info block, and hence it has no ABI-specified name. Note that this implies that two different C++ implementations can use different names, and have different contents in the language specific data area. Moreover, that the language specific data area contains no version info because name of the function invoked provides more effective versioning by detecting at link time the lack of code to handle the different data format. */ typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn) (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, struct _Unwind_Context *); /* @@@ The following alternate entry points are for setjmp/longjmp based unwinding. */ struct SjLj_Function_Context; extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *); extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *); extern _Unwind_Reason_Code _Unwind_SjLj_RaiseException (struct _Unwind_Exception *); extern _Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *); extern void _Unwind_SjLj_Resume (struct _Unwind_Exception *); /* @@@ The following provide access to the base addresses for text and data-relative addressing in the LDSA. In order to stay link compatible with the standard ABI for IA-64, we inline these. */ # 213 "../sysdeps/generic/unwind.h" extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); /* @@@ Given an address, return the entry point of the function that contains it. */ extern void * _Unwind_FindEnclosingFunction (void *pc); # 34 "../nptl/descr.h" 2 # 1 "../include/bits/types/res_state.h" 1 # 1 "../resolv/bits/types/res_state.h" 1 #define __res_state_defined 1 # 1 "../include/sys/types.h" 1 # 5 "../resolv/bits/types/res_state.h" 2 # 1 "../include/netinet/in.h" 1 # 1 "../inet/netinet/in.h" 1 /* Copyright (C) 1991-2021 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 . */ #define _NETINET_IN_H 1 # 1 "../include/sys/socket.h" 1 # 1 "../socket/sys/socket.h" 1 /* Declarations of socket constants, types, and functions. Copyright (C) 1991-2021 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 . */ #define _SYS_SOCKET_H 1 __BEGIN_DECLS # 1 "../include/bits/types/struct_iovec.h" 1 # 1 "../misc/bits/types/struct_iovec.h" 1 /* Define struct iovec. Copyright (C) 1996-2021 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 . */ #define __iovec_defined 1 #define __need_size_t # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 24 "../misc/bits/types/struct_iovec.h" 2 /* Structure for scatter/gather I/O. */ struct iovec { void *iov_base; /* Pointer to data. */ size_t iov_len; /* Length of data. */ }; # 2 "../include/bits/types/struct_iovec.h" 2 # 27 "../socket/sys/socket.h" 2 #define __need_size_t # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 29 "../socket/sys/socket.h" 2 /* This operating system-specific header file defines the SOCK_*, PF_*, AF_*, MSG_*, SOL_*, and SO_* constants, and the `struct sockaddr', `struct msghdr', and `struct linger' types. */ # 1 "../sysdeps/unix/sysv/linux/bits/socket.h" 1 /* System-specific socket constants and types. Linux version. Copyright (C) 1991-2021 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 . */ #define __BITS_SOCKET_H #define __need_size_t # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 28 "../sysdeps/unix/sysv/linux/bits/socket.h" 2 # 1 "../include/sys/types.h" 1 # 30 "../sysdeps/unix/sysv/linux/bits/socket.h" 2 /* Type for length arguments in socket calls. */ typedef __socklen_t socklen_t; #define __socklen_t_defined /* Get the architecture-dependent definition of enum __socket_type. */ # 1 "../sysdeps/unix/sysv/linux/bits/socket_type.h" 1 /* Define enum __socket_type for generic Linux. Copyright (C) 1991-2021 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 . */ /* Types of sockets. */ enum __socket_type { SOCK_STREAM = 1, /* Sequenced, reliable, connection-based byte streams. */ #define SOCK_STREAM SOCK_STREAM SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams of fixed maximum length. */ #define SOCK_DGRAM SOCK_DGRAM SOCK_RAW = 3, /* Raw protocol interface. */ #define SOCK_RAW SOCK_RAW SOCK_RDM = 4, /* Reliably-delivered messages. */ #define SOCK_RDM SOCK_RDM SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based, datagrams of fixed maximum length. */ #define SOCK_SEQPACKET SOCK_SEQPACKET SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */ #define SOCK_DCCP SOCK_DCCP SOCK_PACKET = 10, /* Linux specific way of getting packets at the dev level. For writing rarp and other similar things on the user level. */ #define SOCK_PACKET SOCK_PACKET /* Flags to be ORed into the type parameter of socket and socketpair and used for the flags parameter of paccept. */ SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the new descriptor(s). */ #define SOCK_CLOEXEC SOCK_CLOEXEC SOCK_NONBLOCK = 00004000 /* Atomically mark descriptor(s) as non-blocking. */ #define SOCK_NONBLOCK SOCK_NONBLOCK }; # 39 "../sysdeps/unix/sysv/linux/bits/socket.h" 2 /* Protocol families. */ #define PF_UNSPEC 0 #define PF_LOCAL 1 #define PF_UNIX PF_LOCAL #define PF_FILE PF_LOCAL #define PF_INET 2 #define PF_AX25 3 #define PF_IPX 4 #define PF_APPLETALK 5 #define PF_NETROM 6 #define PF_BRIDGE 7 #define PF_ATMPVC 8 #define PF_X25 9 #define PF_INET6 10 #define PF_ROSE 11 #define PF_DECnet 12 #define PF_NETBEUI 13 #define PF_SECURITY 14 #define PF_KEY 15 #define PF_NETLINK 16 #define PF_ROUTE PF_NETLINK #define PF_PACKET 17 #define PF_ASH 18 #define PF_ECONET 19 #define PF_ATMSVC 20 #define PF_RDS 21 #define PF_SNA 22 #define PF_IRDA 23 #define PF_PPPOX 24 #define PF_WANPIPE 25 #define PF_LLC 26 #define PF_IB 27 #define PF_MPLS 28 #define PF_CAN 29 #define PF_TIPC 30 #define PF_BLUETOOTH 31 #define PF_IUCV 32 #define PF_RXRPC 33 #define PF_ISDN 34 #define PF_PHONET 35 #define PF_IEEE802154 36 #define PF_CAIF 37 #define PF_ALG 38 #define PF_NFC 39 #define PF_VSOCK 40 #define PF_KCM 41 #define PF_QIPCRTR 42 #define PF_SMC 43 #define PF_XDP 44 #define PF_MAX 45 /* Address families. */ #define AF_UNSPEC PF_UNSPEC #define AF_LOCAL PF_LOCAL #define AF_UNIX PF_UNIX #define AF_FILE PF_FILE #define AF_INET PF_INET #define AF_AX25 PF_AX25 #define AF_IPX PF_IPX #define AF_APPLETALK PF_APPLETALK #define AF_NETROM PF_NETROM #define AF_BRIDGE PF_BRIDGE #define AF_ATMPVC PF_ATMPVC #define AF_X25 PF_X25 #define AF_INET6 PF_INET6 #define AF_ROSE PF_ROSE #define AF_DECnet PF_DECnet #define AF_NETBEUI PF_NETBEUI #define AF_SECURITY PF_SECURITY #define AF_KEY PF_KEY #define AF_NETLINK PF_NETLINK #define AF_ROUTE PF_ROUTE #define AF_PACKET PF_PACKET #define AF_ASH PF_ASH #define AF_ECONET PF_ECONET #define AF_ATMSVC PF_ATMSVC #define AF_RDS PF_RDS #define AF_SNA PF_SNA #define AF_IRDA PF_IRDA #define AF_PPPOX PF_PPPOX #define AF_WANPIPE PF_WANPIPE #define AF_LLC PF_LLC #define AF_IB PF_IB #define AF_MPLS PF_MPLS #define AF_CAN PF_CAN #define AF_TIPC PF_TIPC #define AF_BLUETOOTH PF_BLUETOOTH #define AF_IUCV PF_IUCV #define AF_RXRPC PF_RXRPC #define AF_ISDN PF_ISDN #define AF_PHONET PF_PHONET #define AF_IEEE802154 PF_IEEE802154 #define AF_CAIF PF_CAIF #define AF_ALG PF_ALG #define AF_NFC PF_NFC #define AF_VSOCK PF_VSOCK #define AF_KCM PF_KCM #define AF_QIPCRTR PF_QIPCRTR #define AF_SMC PF_SMC #define AF_XDP PF_XDP #define AF_MAX PF_MAX /* Socket level values. Others are defined in the appropriate headers. XXX These definitions also should go into the appropriate headers as far as they are available. */ #define SOL_RAW 255 #define SOL_DECNET 261 #define SOL_X25 262 #define SOL_PACKET 263 #define SOL_ATM 264 #define SOL_AAL 265 #define SOL_IRDA 266 #define SOL_NETBEUI 267 #define SOL_LLC 268 #define SOL_DCCP 269 #define SOL_NETLINK 270 #define SOL_TIPC 271 #define SOL_RXRPC 272 #define SOL_PPPOL2TP 273 #define SOL_BLUETOOTH 274 #define SOL_PNPIPE 275 #define SOL_RDS 276 #define SOL_IUCV 277 #define SOL_CAIF 278 #define SOL_ALG 279 #define SOL_NFC 280 #define SOL_KCM 281 #define SOL_TLS 282 #define SOL_XDP 283 /* Maximum queue length specifiable by listen. */ #define SOMAXCONN 4096 /* Get the definition of the macro to define the common sockaddr members. */ # 1 "../bits/sockaddr.h" 1 /* Definition of struct sockaddr_* common members and sizes, generic version. Copyright (C) 1995-2021 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 . */ /* * Never include this file directly; use instead. */ #define _BITS_SOCKADDR_H 1 /* POSIX.1g specifies this type name for the `sa_family' member. */ typedef unsigned short int sa_family_t; /* This macro is used to declare the initial common members of the data types used for socket addresses, `struct sockaddr', `struct sockaddr_in', `struct sockaddr_un', etc. */ #define __SOCKADDR_COMMON(sa_prefix) sa_family_t sa_prefix ##family #define __SOCKADDR_COMMON_SIZE (sizeof (unsigned short int)) /* Size of struct sockaddr_storage. */ #define _SS_SIZE 128 # 176 "../sysdeps/unix/sysv/linux/bits/socket.h" 2 /* Structure describing a generic socket address. */ struct sockaddr { __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */ char sa_data[14]; /* Address data. */ }; /* Structure large enough to hold any socket address (with the historical exception of AF_UNIX). */ #define __ss_aligntype unsigned long int #define _SS_PADSIZE (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype)) struct sockaddr_storage { __SOCKADDR_COMMON (ss_); /* Address family, etc. */ char __ss_padding[_SS_PADSIZE]; __ss_aligntype __ss_align; /* Force desired alignment. */ }; /* Bits in the FLAGS argument to `send', `recv', et al. */ enum { MSG_OOB = 0x01, /* Process out-of-band data. */ #define MSG_OOB MSG_OOB MSG_PEEK = 0x02, /* Peek at incoming messages. */ #define MSG_PEEK MSG_PEEK MSG_DONTROUTE = 0x04, /* Don't use local routing. */ #define MSG_DONTROUTE MSG_DONTROUTE /* DECnet uses a different name. */ MSG_TRYHARD = MSG_DONTROUTE, #define MSG_TRYHARD MSG_DONTROUTE MSG_CTRUNC = 0x08, /* Control data lost before delivery. */ #define MSG_CTRUNC MSG_CTRUNC MSG_PROXY = 0x10, /* Supply or ask second address. */ #define MSG_PROXY MSG_PROXY MSG_TRUNC = 0x20, #define MSG_TRUNC MSG_TRUNC MSG_DONTWAIT = 0x40, /* Nonblocking IO. */ #define MSG_DONTWAIT MSG_DONTWAIT MSG_EOR = 0x80, /* End of record. */ #define MSG_EOR MSG_EOR MSG_WAITALL = 0x100, /* Wait for a full request. */ #define MSG_WAITALL MSG_WAITALL MSG_FIN = 0x200, #define MSG_FIN MSG_FIN MSG_SYN = 0x400, #define MSG_SYN MSG_SYN MSG_CONFIRM = 0x800, /* Confirm path validity. */ #define MSG_CONFIRM MSG_CONFIRM MSG_RST = 0x1000, #define MSG_RST MSG_RST MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */ #define MSG_ERRQUEUE MSG_ERRQUEUE MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */ #define MSG_NOSIGNAL MSG_NOSIGNAL MSG_MORE = 0x8000, /* Sender will send more. */ #define MSG_MORE MSG_MORE MSG_WAITFORONE = 0x10000, /* Wait for at least one packet to return.*/ #define MSG_WAITFORONE MSG_WAITFORONE MSG_BATCH = 0x40000, /* sendmmsg: more messages coming. */ #define MSG_BATCH MSG_BATCH MSG_ZEROCOPY = 0x4000000, /* Use user data in kernel path. */ #define MSG_ZEROCOPY MSG_ZEROCOPY MSG_FASTOPEN = 0x20000000, /* Send data in TCP SYN. */ #define MSG_FASTOPEN MSG_FASTOPEN MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file descriptor received through SCM_RIGHTS. */ #define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC }; /* Structure describing messages sent by `sendmsg' and received by `recvmsg'. */ struct msghdr { void *msg_name; /* Address to send to/receive from. */ socklen_t msg_namelen; /* Length of address data. */ struct iovec *msg_iov; /* Vector of data to send/receive into. */ size_t msg_iovlen; /* Number of elements in the vector. */ void *msg_control; /* Ancillary data (eg BSD filedesc passing). */ size_t msg_controllen; /* Ancillary data buffer length. !! The type should be socklen_t but the definition of the kernel is incompatible with this. */ int msg_flags; /* Flags on received message. */ }; /* Structure used for storage of ancillary data object information. */ struct cmsghdr { size_t cmsg_len; /* Length of data in cmsg_data plus length of cmsghdr structure. !! The type should be socklen_t but the definition of the kernel is incompatible with this. */ int cmsg_level; /* Originating protocol. */ int cmsg_type; /* Protocol specific type. */ __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */ }; /* Ancillary data object manipulation macros. */ #define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data) #define CMSG_NXTHDR(mhdr,cmsg) __cmsg_nxthdr (mhdr, cmsg) #define CMSG_FIRSTHDR(mhdr) ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0) #define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1)) #define CMSG_SPACE(len) (CMSG_ALIGN (len) + CMSG_ALIGN (sizeof (struct cmsghdr))) #define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len)) extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW; #define _EXTERN_INLINE __extern_inline _EXTERN_INLINE struct cmsghdr * __NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)) { if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) /* The kernel header does this so there may be a reason. */ return (struct cmsghdr *) 0; __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)); if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen) || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len) > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen))) /* No more entries. */ return (struct cmsghdr *) 0; return __cmsg; } /* Socket level message types. This must match the definitions in . */ enum { SCM_RIGHTS = 0x01 /* Transfer file descriptors. */ #define SCM_RIGHTS SCM_RIGHTS , SCM_CREDENTIALS = 0x02 /* Credentials passing. */ #define SCM_CREDENTIALS SCM_CREDENTIALS }; /* User visible structure for SCM_CREDENTIALS message */ struct ucred { pid_t pid; /* PID of sending process. */ uid_t uid; /* UID of sending process. */ gid_t gid; /* GID of sending process. */ }; # 1 "../include/bits/types/time_t.h" 1 # 354 "../sysdeps/unix/sysv/linux/bits/socket.h" 2 # 1 "/usr/include/asm/socket.h" 1 3 4 # 1 "/usr/include/asm-generic/socket.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define __ASM_GENERIC_SOCKET_H # 1 "/usr/include/asm/sockios.h" 1 3 4 # 1 "/usr/include/asm-generic/sockios.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define __ASM_GENERIC_SOCKIOS_H /* Socket-level I/O control calls. */ #define FIOSETOWN 0x8901 #define SIOCSPGRP 0x8902 #define FIOGETOWN 0x8903 #define SIOCGPGRP 0x8904 #define SIOCATMARK 0x8905 #define SIOCGSTAMP_OLD 0x8906 #define SIOCGSTAMPNS_OLD 0x8907 # 2 "/usr/include/asm/sockios.h" 2 3 4 # 7 "/usr/include/asm-generic/socket.h" 2 3 4 /* For setsockopt(2) */ #define SOL_SOCKET 1 #define SO_DEBUG 1 #define SO_REUSEADDR 2 #define SO_TYPE 3 #define SO_ERROR 4 #define SO_DONTROUTE 5 #define SO_BROADCAST 6 #define SO_SNDBUF 7 #define SO_RCVBUF 8 #define SO_SNDBUFFORCE 32 #define SO_RCVBUFFORCE 33 #define SO_KEEPALIVE 9 #define SO_OOBINLINE 10 #define SO_NO_CHECK 11 #define SO_PRIORITY 12 #define SO_LINGER 13 #define SO_BSDCOMPAT 14 #define SO_REUSEPORT 15 #define SO_PASSCRED 16 #define SO_PEERCRED 17 #define SO_RCVLOWAT 18 #define SO_SNDLOWAT 19 #define SO_RCVTIMEO_OLD 20 #define SO_SNDTIMEO_OLD 21 /* Security levels - as per NRL IPv6 - don't actually do anything */ #define SO_SECURITY_AUTHENTICATION 22 #define SO_SECURITY_ENCRYPTION_TRANSPORT 23 #define SO_SECURITY_ENCRYPTION_NETWORK 24 #define SO_BINDTODEVICE 25 /* Socket filtering */ #define SO_ATTACH_FILTER 26 #define SO_DETACH_FILTER 27 #define SO_GET_FILTER SO_ATTACH_FILTER #define SO_PEERNAME 28 #define SO_ACCEPTCONN 30 #define SO_PEERSEC 31 #define SO_PASSSEC 34 #define SO_MARK 36 #define SO_PROTOCOL 38 #define SO_DOMAIN 39 #define SO_RXQ_OVFL 40 #define SO_WIFI_STATUS 41 #define SCM_WIFI_STATUS SO_WIFI_STATUS #define SO_PEEK_OFF 42 /* Instruct lower device to use last 4-bytes of skb data as FCS */ #define SO_NOFCS 43 #define SO_LOCK_FILTER 44 #define SO_SELECT_ERR_QUEUE 45 #define SO_BUSY_POLL 46 #define SO_MAX_PACING_RATE 47 #define SO_BPF_EXTENSIONS 48 #define SO_INCOMING_CPU 49 #define SO_ATTACH_BPF 50 #define SO_DETACH_BPF SO_DETACH_FILTER #define SO_ATTACH_REUSEPORT_CBPF 51 #define SO_ATTACH_REUSEPORT_EBPF 52 #define SO_CNX_ADVICE 53 #define SCM_TIMESTAMPING_OPT_STATS 54 #define SO_MEMINFO 55 #define SO_INCOMING_NAPI_ID 56 #define SO_COOKIE 57 #define SCM_TIMESTAMPING_PKTINFO 58 #define SO_PEERGROUPS 59 #define SO_ZEROCOPY 60 #define SO_TXTIME 61 #define SCM_TXTIME SO_TXTIME #define SO_BINDTOIFINDEX 62 #define SO_TIMESTAMP_OLD 29 #define SO_TIMESTAMPNS_OLD 35 #define SO_TIMESTAMPING_OLD 37 #define SO_TIMESTAMP_NEW 63 #define SO_TIMESTAMPNS_NEW 64 #define SO_TIMESTAMPING_NEW 65 #define SO_RCVTIMEO_NEW 66 #define SO_SNDTIMEO_NEW 67 #define SO_DETACH_REUSEPORT_BPF 68 #define SO_PREFER_BUSY_POLL 69 #define SO_BUSY_POLL_BUDGET 70 #define SO_NETNS_COOKIE 71 /* on 64-bit and x32, avoid the ?: operator */ #define SO_TIMESTAMP SO_TIMESTAMP_OLD #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD #define SO_TIMESTAMPING SO_TIMESTAMPING_OLD #define SO_RCVTIMEO SO_RCVTIMEO_OLD #define SO_SNDTIMEO SO_SNDTIMEO_OLD # 144 "/usr/include/asm-generic/socket.h" 3 4 #define SCM_TIMESTAMP SO_TIMESTAMP #define SCM_TIMESTAMPNS SO_TIMESTAMPNS #define SCM_TIMESTAMPING SO_TIMESTAMPING # 2 "/usr/include/asm/socket.h" 2 3 4 # 355 "../sysdeps/unix/sysv/linux/bits/socket.h" 2 /* Structure used to manipulate the SO_LINGER option. */ struct linger { int l_onoff; /* Nonzero to linger on close. */ int l_linger; /* Time to linger. */ }; # 34 "../socket/sys/socket.h" 2 # 1 "../include/bits/types/struct_osockaddr.h" 1 # 1 "../socket/bits/types/struct_osockaddr.h" 1 #define __osockaddr_defined 1 /* This is the 4.3 BSD `struct sockaddr' format, which is used as wire format in the grotty old 4.3 `talk' protocol. */ struct osockaddr { unsigned short int sa_family; unsigned char sa_data[14]; }; # 2 "../include/bits/types/struct_osockaddr.h" 2 # 37 "../socket/sys/socket.h" 2 /* The following constants should be used for the second parameter of `shutdown'. */ enum { SHUT_RD = 0, /* No more receptions. */ #define SHUT_RD SHUT_RD SHUT_WR, /* No more transmissions. */ #define SHUT_WR SHUT_WR SHUT_RDWR /* No more receptions or transmissions. */ #define SHUT_RDWR SHUT_RDWR }; /* This is the type we use for generic socket address arguments. With GCC 2.7 and later, the funky union causes redeclarations or uses with any of the listed types to be allowed without complaint. G++ 2.7 does not support transparent unions so there we want the old-style declaration, too. */ /* Add more `struct sockaddr_AF' types here as necessary. These are all the ones I found on NetBSD and Linux. */ #define __SOCKADDR_ALLTYPES __SOCKADDR_ONETYPE (sockaddr) __SOCKADDR_ONETYPE (sockaddr_at) __SOCKADDR_ONETYPE (sockaddr_ax25) __SOCKADDR_ONETYPE (sockaddr_dl) __SOCKADDR_ONETYPE (sockaddr_eon) __SOCKADDR_ONETYPE (sockaddr_in) __SOCKADDR_ONETYPE (sockaddr_in6) __SOCKADDR_ONETYPE (sockaddr_inarp) __SOCKADDR_ONETYPE (sockaddr_ipx) __SOCKADDR_ONETYPE (sockaddr_iso) __SOCKADDR_ONETYPE (sockaddr_ns) __SOCKADDR_ONETYPE (sockaddr_un) __SOCKADDR_ONETYPE (sockaddr_x25) # 77 "../socket/sys/socket.h" #define __SOCKADDR_ONETYPE(type) struct type *__restrict __ ##type ##__; typedef union { __SOCKADDR_ALLTYPES } __SOCKADDR_ARG __attribute__ ((__transparent_union__)); #undef __SOCKADDR_ONETYPE #define __SOCKADDR_ONETYPE(type) const struct type *__restrict __ ##type ##__; typedef union { __SOCKADDR_ALLTYPES } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__)); #undef __SOCKADDR_ONETYPE /* For `recvmmsg' and `sendmmsg'. */ struct mmsghdr { struct msghdr msg_hdr; /* Actual message header. */ unsigned int msg_len; /* Number of received or sent bytes for the entry. */ }; /* Create a new socket of type TYPE in domain DOMAIN, using protocol PROTOCOL. If PROTOCOL is zero, one is chosen automatically. Returns a file descriptor for the new socket, or -1 for errors. */ extern int socket (int __domain, int __type, int __protocol) __THROW; /* Create two new sockets, of type TYPE in domain DOMAIN and using protocol PROTOCOL, which are connected to each other, and put file descriptors for them in FDS[0] and FDS[1]. If PROTOCOL is zero, one will be chosen automatically. Returns 0 on success, -1 for errors. */ extern int socketpair (int __domain, int __type, int __protocol, int __fds[2]) __THROW; /* Give the socket FD the local address ADDR (which is LEN bytes long). */ extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len) __THROW; /* Put the local address of FD into *ADDR and its length in *LEN. */ extern int getsockname (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __len) __THROW; /* Open a connection on socket FD to peer at ADDR (which LEN bytes long). For connectionless socket types, just set the default address to send to and the only address from which to accept transmissions. Return 0 on success, -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len); /* Put the address of the peer connected to socket FD into *ADDR (which is *LEN bytes long), and its actual length into *LEN. */ extern int getpeername (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __len) __THROW; /* Send N bytes of BUF to socket FD. Returns the number sent or -1. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t send (int __fd, const void *__buf, size_t __n, int __flags); /* Read N bytes into BUF from socket FD. Returns the number read or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); /* Send N bytes of BUF on socket FD to peer at address ADDR (which is ADDR_LEN bytes long). Returns the number sent, or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t sendto (int __fd, const void *__buf, size_t __n, int __flags, __CONST_SOCKADDR_ARG __addr, socklen_t __addr_len); /* Read N bytes into BUF through socket FD. If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of the sender, and store the actual size of the address in *ADDR_LEN. Returns the number of bytes read or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len); /* Send a message described MESSAGE on socket FD. Returns the number of bytes sent, or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t sendmsg (int __fd, const struct msghdr *__message, int __flags); # 187 "../socket/sys/socket.h" /* Send a VLEN messages as described by VMESSAGES to socket FD. Returns the number of datagrams successfully written or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern int sendmmsg (int __fd, struct mmsghdr *__vmessages, unsigned int __vlen, int __flags); # 208 "../socket/sys/socket.h" /* Receive a message as described by MESSAGE from socket FD. Returns the number of bytes read or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags); # 227 "../socket/sys/socket.h" /* Receive up to VLEN messages as described by VMESSAGES from socket FD. Returns the number of messages received or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern int recvmmsg (int __fd, struct mmsghdr *__vmessages, unsigned int __vlen, int __flags, struct timespec *__tmo); # 248 "../socket/sys/socket.h" /* Put the current value for socket FD's option OPTNAME at protocol level LEVEL into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's actual length. Returns 0 on success, -1 for errors. */ extern int getsockopt (int __fd, int __level, int __optname, void *__restrict __optval, socklen_t *__restrict __optlen) __THROW; # 272 "../socket/sys/socket.h" /* Set socket FD's option OPTNAME at protocol level LEVEL to *OPTVAL (which is OPTLEN bytes long). Returns 0 on success, -1 for errors. */ extern int setsockopt (int __fd, int __level, int __optname, const void *__optval, socklen_t __optlen) __THROW; # 291 "../socket/sys/socket.h" /* Prepare to accept connections on socket FD. N connection requests will be queued before further requests are refused. Returns 0 on success, -1 for errors. */ extern int listen (int __fd, int __n) __THROW; /* Await a connection on socket FD. When a connection arrives, open a new socket to communicate with it, set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting peer and *ADDR_LEN to the address's actual length, and return the new socket's descriptor, or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern int accept (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len); /* Similar to 'accept' but takes an additional parameter to specify flags. This function is a cancellation point and therefore not marked with __THROW. */ extern int accept4 (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len, int __flags); /* Shut down all or part of the connection open on socket FD. HOW determines what to shut down: SHUT_RD = No more receptions; SHUT_WR = No more transmissions; SHUT_RDWR = No more receptions or transmissions. Returns 0 on success, -1 for errors. */ extern int shutdown (int __fd, int __how) __THROW; /* Determine whether socket is at a out-of-band mark. */ extern int sockatmark (int __fd) __THROW; /* FDTYPE is S_IFSOCK or another S_IF* macro defined in ; returns 1 if FD is open on an object of the indicated type, 0 if not, or -1 for errors (setting errno). */ extern int isfdtype (int __fd, int __fdtype) __THROW; /* Define some macros helping to catch buffer overflows. */ __END_DECLS # 3 "../include/sys/socket.h" 2 /* Now define the internal interfaces. */ /* Create a new socket of type TYPE in domain DOMAIN, using protocol PROTOCOL. If PROTOCOL is zero, one is chosen automatically. Returns a file descriptor for the new socket, or -1 for errors. */ extern int __socket (int __domain, int __type, int __protocol); libc_hidden_proto (__socket) /* Create two new sockets, of type TYPE in domain DOMAIN and using protocol PROTOCOL, which are connected to each other, and put file descriptors for them in FDS[0] and FDS[1]. If PROTOCOL is zero, one will be chosen automatically. Returns 0 on success, -1 for errors. */ extern int __socketpair (int __domain, int __type, int __protocol, int __fds[2]) attribute_hidden; /* Return a socket of any type. The socket can be used in subsequent ioctl calls to talk to the kernel. */ extern int __opensock (void) attribute_hidden; /* Put the address of the peer connected to socket FD into *ADDR (which is *LEN bytes long), and its actual length into *LEN. */ extern int __getpeername (int __fd, __SOCKADDR_ARG __addr, socklen_t *__len) attribute_hidden; /* Send N bytes of BUF to socket FD. Returns the number sent or -1. */ extern ssize_t __libc_send (int __fd, const void *__buf, size_t __n, int __flags); extern ssize_t __send (int __fd, const void *__buf, size_t __n, int __flags); libc_hidden_proto (__send) /* Read N bytes into BUF from socket FD. Returns the number read or -1 for errors. */ extern ssize_t __libc_recv (int __fd, void *__buf, size_t __n, int __flags); /* Send N bytes of BUF on socket FD to peer at address ADDR (which is ADDR_LEN bytes long). Returns the number sent, or -1 for errors. */ extern ssize_t __libc_sendto (int __fd, const void *__buf, size_t __n, int __flags, __CONST_SOCKADDR_ARG __addr, socklen_t __addr_len); /* Read N bytes into BUF through socket FD. If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of the sender, and store the actual size of the address in *ADDR_LEN. Returns the number of bytes read or -1 for errors. */ extern ssize_t __libc_recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len); /* Open a connection on socket FD to peer at ADDR (which LEN bytes long). For connectionless socket types, just set the default address to send to and the only address from which to accept transmissions. Return 0 on success, -1 for errors. */ extern int __libc_connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len); extern int __connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len); libc_hidden_proto (__connect) /* Read N bytes into BUF from socket FD. Returns the number read or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t __recv (int __fd, void *__buf, size_t __n, int __flags); libc_hidden_proto (__recv) /* Send N bytes of BUF on socket FD to peer at address ADDR (which is ADDR_LEN bytes long). Returns the number sent, or -1 for errors. */ extern ssize_t __libc_sendto (int __fd, const void *__buf, size_t __n, int __flags, __CONST_SOCKADDR_ARG __addr, socklen_t __addr_len); extern ssize_t __sendto (int __fd, const void *__buf, size_t __n, int __flags, __CONST_SOCKADDR_ARG __addr, socklen_t __addr_len) attribute_hidden; /* Read N bytes into BUF through socket FD. If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of the sender, and store the actual size of the address in *ADDR_LEN. Returns the number of bytes read or -1 for errors. */ extern ssize_t __recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) attribute_hidden; /* Send a message described MESSAGE on socket FD. Returns the number of bytes sent, or -1 for errors. */ extern ssize_t __libc_sendmsg (int __fd, const struct msghdr *__message, int __flags); extern ssize_t __sendmsg (int __fd, const struct msghdr *__message, int __flags) attribute_hidden; extern int __sendmmsg (int __fd, struct mmsghdr *__vmessages, unsigned int __vlen, int __flags); libc_hidden_proto (__sendmmsg) /* Receive a message as described by MESSAGE from socket FD. Returns the number of bytes read or -1 for errors. */ extern ssize_t __libc_recvmsg (int __fd, struct msghdr *__message, int __flags); extern ssize_t __recvmsg (int __fd, struct msghdr *__message, int __flags) attribute_hidden; #define __recvmmsg64 __recvmmsg /* Set socket FD's option OPTNAME at protocol level LEVEL to *OPTVAL (which is OPTLEN bytes long). Returns 0 on success, -1 for errors. */ extern int __setsockopt (int __fd, int __level, int __optname, const void *__optval, socklen_t __optlen); libc_hidden_proto (__setsockopt) /* Put the current value for socket FD's option OPTNAME at protocol level LEVEL into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's actual length. Returns 0 on success, -1 for errors. */ extern int __getsockopt (int __fd, int __level, int __optname, void *__restrict __optval, socklen_t *__restrict __optlen) attribute_hidden; /* Put the local address of FD into *ADDR and its length in *LEN. */ extern int __getsockname (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __len) attribute_hidden; /* Give the socket FD the local address ADDR (which is LEN bytes long). */ extern int __bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len) attribute_hidden; /* Prepare to accept connections on socket FD. N connection requests will be queued before further requests are refused. Returns 0 on success, -1 for errors. */ extern int __listen (int __fd, int __n) attribute_hidden; /* Await a connection on socket FD. When a connection arrives, open a new socket to communicate with it, set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting peer and *ADDR_LEN to the address's actual length, and return the new socket's descriptor, or -1 for errors. */ extern int __libc_accept (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) __THROW attribute_hidden; libc_hidden_proto (accept) extern int __libc_accept4 (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len, int __flags) __THROW attribute_hidden; /* Return the length of a `sockaddr' structure. */ extern int __libc_sa_len (sa_family_t __af); libc_hidden_proto (__libc_sa_len) #define SA_LEN(_x) __libc_sa_len((_x)->sa_family) libc_hidden_proto (__cmsg_nxthdr) # 24 "../inet/netinet/in.h" 2 # 1 "../include/bits/types.h" 1 # 25 "../inet/netinet/in.h" 2 __BEGIN_DECLS /* Internet address. */ typedef uint32_t in_addr_t; struct in_addr { in_addr_t s_addr; }; /* Get system-specific definitions. */ # 1 "../sysdeps/unix/sysv/linux/bits/in.h" 1 /* Copyright (C) 1991-2021 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 . */ /* Linux version. */ /* If the application has already included linux/in6.h from a linux-based kernel then we will not define the IPv6 IPPROTO_* defines, in6_addr (nor the defines), sockaddr_in6, or ipv6_mreq. Same for in6_ptkinfo or ip6_mtuinfo in linux/ipv6.h. The ABI used by the linux-kernel and glibc match exactly. Neither the linux kernel nor glibc should break this ABI without coordination. In upstream kernel 56c176c9 the _UAPI prefix was stripped so we need to check for _LINUX_IN6_H and _IPV6_H now, and keep checking the old versions for maximum backwards compatibility. */ # 41 "../sysdeps/unix/sysv/linux/bits/in.h" #define __USE_KERNEL_IPV6_DEFS 0 /* Options for use with `getsockopt' and `setsockopt' at the IP level. The first word in the comment at the right is the data type used; "bool" means a boolean value stored in an `int'. */ #define IP_OPTIONS 4 #define IP_HDRINCL 3 #define IP_TOS 1 #define IP_TTL 2 #define IP_RECVOPTS 6 /* For BSD compatibility. */ #define IP_RECVRETOPTS IP_RETOPTS #define IP_RETOPTS 7 #define IP_MULTICAST_IF 32 #define IP_MULTICAST_TTL 33 #define IP_MULTICAST_LOOP 34 #define IP_ADD_MEMBERSHIP 35 #define IP_DROP_MEMBERSHIP 36 #define IP_UNBLOCK_SOURCE 37 #define IP_BLOCK_SOURCE 38 #define IP_ADD_SOURCE_MEMBERSHIP 39 #define IP_DROP_SOURCE_MEMBERSHIP 40 #define IP_MSFILTER 41 #define MCAST_JOIN_GROUP 42 #define MCAST_BLOCK_SOURCE 43 #define MCAST_UNBLOCK_SOURCE 44 #define MCAST_LEAVE_GROUP 45 #define MCAST_JOIN_SOURCE_GROUP 46 #define MCAST_LEAVE_SOURCE_GROUP 47 #define MCAST_MSFILTER 48 #define IP_MULTICAST_ALL 49 #define IP_UNICAST_IF 50 #define MCAST_EXCLUDE 0 #define MCAST_INCLUDE 1 #define IP_ROUTER_ALERT 5 #define IP_PKTINFO 8 #define IP_PKTOPTIONS 9 #define IP_PMTUDISC 10 #define IP_MTU_DISCOVER 10 #define IP_RECVERR 11 #define IP_RECVTTL 12 #define IP_RECVTOS 13 #define IP_MTU 14 #define IP_FREEBIND 15 #define IP_IPSEC_POLICY 16 #define IP_XFRM_POLICY 17 #define IP_PASSSEC 18 #define IP_TRANSPARENT 19 #define IP_MULTICAST_ALL 49 /* TProxy original addresses */ #define IP_ORIGDSTADDR 20 #define IP_RECVORIGDSTADDR IP_ORIGDSTADDR #define IP_MINTTL 21 #define IP_NODEFRAG 22 #define IP_CHECKSUM 23 #define IP_BIND_ADDRESS_NO_PORT 24 #define IP_RECVFRAGSIZE 25 #define IP_RECVERR_RFC4884 26 /* IP_MTU_DISCOVER arguments. */ #define IP_PMTUDISC_DONT 0 #define IP_PMTUDISC_WANT 1 #define IP_PMTUDISC_DO 2 #define IP_PMTUDISC_PROBE 3 /* Always use interface mtu (ignores dst pmtu) but don't set DF flag. Also incoming ICMP frag_needed notifications will be ignored on this socket to prevent accepting spoofed ones. */ #define IP_PMTUDISC_INTERFACE 4 /* Like IP_PMTUDISC_INTERFACE but allow packets to be fragmented. */ #define IP_PMTUDISC_OMIT 5 #define IP_MULTICAST_IF 32 #define IP_MULTICAST_TTL 33 #define IP_MULTICAST_LOOP 34 #define IP_ADD_MEMBERSHIP 35 #define IP_DROP_MEMBERSHIP 36 #define IP_UNBLOCK_SOURCE 37 #define IP_BLOCK_SOURCE 38 #define IP_ADD_SOURCE_MEMBERSHIP 39 #define IP_DROP_SOURCE_MEMBERSHIP 40 #define IP_MSFILTER 41 #define IP_MULTICAST_ALL 49 #define IP_UNICAST_IF 50 /* To select the IP level. */ #define SOL_IP 0 #define IP_DEFAULT_MULTICAST_TTL 1 #define IP_DEFAULT_MULTICAST_LOOP 1 #define IP_MAX_MEMBERSHIPS 20 /* Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS. The `ip_dst' field is used for the first-hop gateway when using a source route (this gets put into the header proper). */ struct ip_opts { struct in_addr ip_dst; /* First hop; zero without source route. */ char ip_opts[40]; /* Actually variable in size. */ }; /* Like `struct ip_mreq' but including interface specification by index. */ struct ip_mreqn { struct in_addr imr_multiaddr; /* IP multicast address of group */ struct in_addr imr_address; /* local IP address of interface */ int imr_ifindex; /* Interface index */ }; /* Structure used for IP_PKTINFO. */ struct in_pktinfo { int ipi_ifindex; /* Interface index */ struct in_addr ipi_spec_dst; /* Routing destination address */ struct in_addr ipi_addr; /* Header destination address */ }; /* Options for use with `getsockopt' and `setsockopt' at the IPv6 level. The first word in the comment at the right is the data type used; "bool" means a boolean value stored in an `int'. */ #define IPV6_ADDRFORM 1 #define IPV6_2292PKTINFO 2 #define IPV6_2292HOPOPTS 3 #define IPV6_2292DSTOPTS 4 #define IPV6_2292RTHDR 5 #define IPV6_2292PKTOPTIONS 6 #define IPV6_CHECKSUM 7 #define IPV6_2292HOPLIMIT 8 #define SCM_SRCRT IPV6_RXSRCRT #define IPV6_NEXTHOP 9 #define IPV6_AUTHHDR 10 #define IPV6_UNICAST_HOPS 16 #define IPV6_MULTICAST_IF 17 #define IPV6_MULTICAST_HOPS 18 #define IPV6_MULTICAST_LOOP 19 #define IPV6_JOIN_GROUP 20 #define IPV6_LEAVE_GROUP 21 #define IPV6_ROUTER_ALERT 22 #define IPV6_MTU_DISCOVER 23 #define IPV6_MTU 24 #define IPV6_RECVERR 25 #define IPV6_V6ONLY 26 #define IPV6_JOIN_ANYCAST 27 #define IPV6_LEAVE_ANYCAST 28 #define IPV6_MULTICAST_ALL 29 #define IPV6_ROUTER_ALERT_ISOLATE 30 #define IPV6_RECVERR_RFC4884 31 #define IPV6_IPSEC_POLICY 34 #define IPV6_XFRM_POLICY 35 #define IPV6_HDRINCL 36 /* Advanced API (RFC3542) (1). */ #define IPV6_RECVPKTINFO 49 #define IPV6_PKTINFO 50 #define IPV6_RECVHOPLIMIT 51 #define IPV6_HOPLIMIT 52 #define IPV6_RECVHOPOPTS 53 #define IPV6_HOPOPTS 54 #define IPV6_RTHDRDSTOPTS 55 #define IPV6_RECVRTHDR 56 #define IPV6_RTHDR 57 #define IPV6_RECVDSTOPTS 58 #define IPV6_DSTOPTS 59 #define IPV6_RECVPATHMTU 60 #define IPV6_PATHMTU 61 #define IPV6_DONTFRAG 62 /* Advanced API (RFC3542) (2). */ #define IPV6_RECVTCLASS 66 #define IPV6_TCLASS 67 #define IPV6_AUTOFLOWLABEL 70 /* RFC5014. */ #define IPV6_ADDR_PREFERENCES 72 /* RFC5082. */ #define IPV6_MINHOPCOUNT 73 #define IPV6_ORIGDSTADDR 74 #define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR #define IPV6_TRANSPARENT 75 #define IPV6_UNICAST_IF 76 #define IPV6_RECVFRAGSIZE 77 #define IPV6_FREEBIND 78 /* Obsolete synonyms for the above. */ #define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP #define IPV6_RXHOPOPTS IPV6_HOPOPTS #define IPV6_RXDSTOPTS IPV6_DSTOPTS /* IPV6_MTU_DISCOVER values. */ #define IPV6_PMTUDISC_DONT 0 #define IPV6_PMTUDISC_WANT 1 #define IPV6_PMTUDISC_DO 2 #define IPV6_PMTUDISC_PROBE 3 #define IPV6_PMTUDISC_INTERFACE 4 #define IPV6_PMTUDISC_OMIT 5 /* Socket level values for IPv6. */ #define SOL_IPV6 41 #define SOL_ICMPV6 58 /* Routing header options for IPv6. */ #define IPV6_RTHDR_LOOSE 0 #define IPV6_RTHDR_STRICT 1 #define IPV6_RTHDR_TYPE_0 0 # 38 "../inet/netinet/in.h" 2 /* Standard well-defined IP protocols. */ enum { IPPROTO_IP = 0, /* Dummy protocol for TCP. */ #define IPPROTO_IP IPPROTO_IP IPPROTO_ICMP = 1, /* Internet Control Message Protocol. */ #define IPPROTO_ICMP IPPROTO_ICMP IPPROTO_IGMP = 2, /* Internet Group Management Protocol. */ #define IPPROTO_IGMP IPPROTO_IGMP IPPROTO_IPIP = 4, /* IPIP tunnels (older KA9Q tunnels use 94). */ #define IPPROTO_IPIP IPPROTO_IPIP IPPROTO_TCP = 6, /* Transmission Control Protocol. */ #define IPPROTO_TCP IPPROTO_TCP IPPROTO_EGP = 8, /* Exterior Gateway Protocol. */ #define IPPROTO_EGP IPPROTO_EGP IPPROTO_PUP = 12, /* PUP protocol. */ #define IPPROTO_PUP IPPROTO_PUP IPPROTO_UDP = 17, /* User Datagram Protocol. */ #define IPPROTO_UDP IPPROTO_UDP IPPROTO_IDP = 22, /* XNS IDP protocol. */ #define IPPROTO_IDP IPPROTO_IDP IPPROTO_TP = 29, /* SO Transport Protocol Class 4. */ #define IPPROTO_TP IPPROTO_TP IPPROTO_DCCP = 33, /* Datagram Congestion Control Protocol. */ #define IPPROTO_DCCP IPPROTO_DCCP IPPROTO_IPV6 = 41, /* IPv6 header. */ #define IPPROTO_IPV6 IPPROTO_IPV6 IPPROTO_RSVP = 46, /* Reservation Protocol. */ #define IPPROTO_RSVP IPPROTO_RSVP IPPROTO_GRE = 47, /* General Routing Encapsulation. */ #define IPPROTO_GRE IPPROTO_GRE IPPROTO_ESP = 50, /* encapsulating security payload. */ #define IPPROTO_ESP IPPROTO_ESP IPPROTO_AH = 51, /* authentication header. */ #define IPPROTO_AH IPPROTO_AH IPPROTO_MTP = 92, /* Multicast Transport Protocol. */ #define IPPROTO_MTP IPPROTO_MTP IPPROTO_BEETPH = 94, /* IP option pseudo header for BEET. */ #define IPPROTO_BEETPH IPPROTO_BEETPH IPPROTO_ENCAP = 98, /* Encapsulation Header. */ #define IPPROTO_ENCAP IPPROTO_ENCAP IPPROTO_PIM = 103, /* Protocol Independent Multicast. */ #define IPPROTO_PIM IPPROTO_PIM IPPROTO_COMP = 108, /* Compression Header Protocol. */ #define IPPROTO_COMP IPPROTO_COMP IPPROTO_SCTP = 132, /* Stream Control Transmission Protocol. */ #define IPPROTO_SCTP IPPROTO_SCTP IPPROTO_UDPLITE = 136, /* UDP-Lite protocol. */ #define IPPROTO_UDPLITE IPPROTO_UDPLITE IPPROTO_MPLS = 137, /* MPLS in IP. */ #define IPPROTO_MPLS IPPROTO_MPLS IPPROTO_ETHERNET = 143, /* Ethernet-within-IPv6 Encapsulation. */ #define IPPROTO_ETHERNET IPPROTO_ETHERNET IPPROTO_RAW = 255, /* Raw IP packets. */ #define IPPROTO_RAW IPPROTO_RAW IPPROTO_MPTCP = 262, /* Multipath TCP connection. */ #define IPPROTO_MPTCP IPPROTO_MPTCP IPPROTO_MAX }; /* If __USE_KERNEL_IPV6_DEFS is 1 then the user has included the kernel network headers first and we should use those ABI-identical definitions instead of our own, otherwise 0. */ enum { IPPROTO_HOPOPTS = 0, /* IPv6 Hop-by-Hop options. */ #define IPPROTO_HOPOPTS IPPROTO_HOPOPTS IPPROTO_ROUTING = 43, /* IPv6 routing header. */ #define IPPROTO_ROUTING IPPROTO_ROUTING IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header. */ #define IPPROTO_FRAGMENT IPPROTO_FRAGMENT IPPROTO_ICMPV6 = 58, /* ICMPv6. */ #define IPPROTO_ICMPV6 IPPROTO_ICMPV6 IPPROTO_NONE = 59, /* IPv6 no next header. */ #define IPPROTO_NONE IPPROTO_NONE IPPROTO_DSTOPTS = 60, /* IPv6 destination options. */ #define IPPROTO_DSTOPTS IPPROTO_DSTOPTS IPPROTO_MH = 135 /* IPv6 mobility header. */ #define IPPROTO_MH IPPROTO_MH }; /* Type to represent a port. */ typedef uint16_t in_port_t; /* Standard well-known ports. */ enum { IPPORT_ECHO = 7, /* Echo service. */ IPPORT_DISCARD = 9, /* Discard transmissions service. */ IPPORT_SYSTAT = 11, /* System status service. */ IPPORT_DAYTIME = 13, /* Time of day service. */ IPPORT_NETSTAT = 15, /* Network status service. */ IPPORT_FTP = 21, /* File Transfer Protocol. */ IPPORT_TELNET = 23, /* Telnet protocol. */ IPPORT_SMTP = 25, /* Simple Mail Transfer Protocol. */ IPPORT_TIMESERVER = 37, /* Timeserver service. */ IPPORT_NAMESERVER = 42, /* Domain Name Service. */ IPPORT_WHOIS = 43, /* Internet Whois service. */ IPPORT_MTP = 57, IPPORT_TFTP = 69, /* Trivial File Transfer Protocol. */ IPPORT_RJE = 77, IPPORT_FINGER = 79, /* Finger service. */ IPPORT_TTYLINK = 87, IPPORT_SUPDUP = 95, /* SUPDUP protocol. */ IPPORT_EXECSERVER = 512, /* execd service. */ IPPORT_LOGINSERVER = 513, /* rlogind service. */ IPPORT_CMDSERVER = 514, IPPORT_EFSSERVER = 520, /* UDP ports. */ IPPORT_BIFFUDP = 512, IPPORT_WHOSERVER = 513, IPPORT_ROUTESERVER = 520, /* Ports less than this value are reserved for privileged processes. */ IPPORT_RESERVED = 1024, /* Ports greater this value are reserved for (non-privileged) servers. */ IPPORT_USERRESERVED = 5000 }; /* Definitions of the bits in an Internet address integer. On subnets, host and network parts are found according to the subnet mask, not these masks. */ #define IN_CLASSA(a) ((((in_addr_t)(a)) & 0x80000000) == 0) #define IN_CLASSA_NET 0xff000000 #define IN_CLASSA_NSHIFT 24 #define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET) #define IN_CLASSA_MAX 128 #define IN_CLASSB(a) ((((in_addr_t)(a)) & 0xc0000000) == 0x80000000) #define IN_CLASSB_NET 0xffff0000 #define IN_CLASSB_NSHIFT 16 #define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET) #define IN_CLASSB_MAX 65536 #define IN_CLASSC(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xc0000000) #define IN_CLASSC_NET 0xffffff00 #define IN_CLASSC_NSHIFT 8 #define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET) #define IN_CLASSD(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000) #define IN_MULTICAST(a) IN_CLASSD(a) #define IN_EXPERIMENTAL(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000) #define IN_BADCLASS(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000) /* Address to accept any incoming messages. */ #define INADDR_ANY ((in_addr_t) 0x00000000) /* Address to send to all hosts. */ #define INADDR_BROADCAST ((in_addr_t) 0xffffffff) /* Address indicating an error return. */ #define INADDR_NONE ((in_addr_t) 0xffffffff) /* Dummy address for source of ICMPv6 errors converted to IPv4 (RFC 7600). */ #define INADDR_DUMMY ((in_addr_t) 0xc0000008) /* Network number for local host loopback. */ #define IN_LOOPBACKNET 127 /* Address to loopback in software to local host. */ #define INADDR_LOOPBACK ((in_addr_t) 0x7f000001) /* Defines for Multicast INADDR. */ #define INADDR_UNSPEC_GROUP ((in_addr_t) 0xe0000000) #define INADDR_ALLHOSTS_GROUP ((in_addr_t) 0xe0000001) #define INADDR_ALLRTRS_GROUP ((in_addr_t) 0xe0000002) #define INADDR_ALLSNOOPERS_GROUP ((in_addr_t) 0xe000006a) #define INADDR_MAX_LOCAL_GROUP ((in_addr_t) 0xe00000ff) /* IPv6 address */ struct in6_addr { union { uint8_t __u6_addr8[16]; uint16_t __u6_addr16[8]; uint32_t __u6_addr32[4]; } __in6_u; #define s6_addr __in6_u.__u6_addr8 #define s6_addr16 __in6_u.__u6_addr16 #define s6_addr32 __in6_u.__u6_addr32 }; extern const struct in6_addr in6addr_any; /* :: */ extern const struct in6_addr in6addr_loopback; /* ::1 */ #define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } } #define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } } #define INET_ADDRSTRLEN 16 #define INET6_ADDRSTRLEN 46 /* Structure describing an Internet socket address. */ struct sockaddr_in { __SOCKADDR_COMMON (sin_); in_port_t sin_port; /* Port number. */ struct in_addr sin_addr; /* Internet address. */ /* Pad to size of `struct sockaddr'. */ unsigned char sin_zero[sizeof (struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof (in_port_t) - sizeof (struct in_addr)]; }; /* Ditto, for IPv6. */ struct sockaddr_in6 { __SOCKADDR_COMMON (sin6_); in_port_t sin6_port; /* Transport layer port # */ uint32_t sin6_flowinfo; /* IPv6 flow information */ struct in6_addr sin6_addr; /* IPv6 address */ uint32_t sin6_scope_id; /* IPv6 scope-id */ }; /* IPv4 multicast request. */ struct ip_mreq { /* IP multicast address of group. */ struct in_addr imr_multiaddr; /* Local IP address of interface. */ struct in_addr imr_interface; }; struct ip_mreq_source { /* IP multicast address of group. */ struct in_addr imr_multiaddr; /* IP address of interface. */ struct in_addr imr_interface; /* IP address of source. */ struct in_addr imr_sourceaddr; }; /* Likewise, for IPv6. */ struct ipv6_mreq { /* IPv6 multicast address of group */ struct in6_addr ipv6mr_multiaddr; /* local interface */ unsigned int ipv6mr_interface; }; /* Multicast group request. */ struct group_req { /* Interface index. */ uint32_t gr_interface; /* Group address. */ struct sockaddr_storage gr_group; }; struct group_source_req { /* Interface index. */ uint32_t gsr_interface; /* Group address. */ struct sockaddr_storage gsr_group; /* Source address. */ struct sockaddr_storage gsr_source; }; /* Full-state filter operations. */ struct ip_msfilter { /* IP multicast address of group. */ struct in_addr imsf_multiaddr; /* Local IP address of interface. */ struct in_addr imsf_interface; /* Filter mode. */ uint32_t imsf_fmode; /* Number of source addresses. */ uint32_t imsf_numsrc; /* Source addresses. */ struct in_addr imsf_slist[1]; }; #define IP_MSFILTER_SIZE(numsrc) (sizeof (struct ip_msfilter) - sizeof (struct in_addr) + (numsrc) * sizeof (struct in_addr)) struct group_filter { /* Interface index. */ uint32_t gf_interface; /* Group address. */ struct sockaddr_storage gf_group; /* Filter mode. */ uint32_t gf_fmode; /* Number of source addresses. */ uint32_t gf_numsrc; /* Source addresses. */ struct sockaddr_storage gf_slist[1]; }; #define GROUP_FILTER_SIZE(numsrc) (sizeof (struct group_filter) - sizeof (struct sockaddr_storage) + ((numsrc) * sizeof (struct sockaddr_storage))) /* Functions to convert between host and network byte order. Please note that these functions normally take `unsigned long int' or `unsigned short int' values as arguments and also return them. But this was a short-sighted decision since on different systems the types may have different representations but the values are always the same. */ extern uint32_t ntohl (uint32_t __netlong) __THROW __attribute__ ((__const__)); extern uint16_t ntohs (uint16_t __netshort) __THROW __attribute__ ((__const__)); extern uint32_t htonl (uint32_t __hostlong) __THROW __attribute__ ((__const__)); extern uint16_t htons (uint16_t __hostshort) __THROW __attribute__ ((__const__)); # 1 "../include/endian.h" 1 #define BIG_ENDI 1 #undef LITTLE_ENDI #define HIGH_HALF 0 #define LOW_HALF 1 # 17 "../include/endian.h" # 391 "../inet/netinet/in.h" 2 /* Get machine dependent optimized versions of byte swapping functions. */ # 1 "../bits/byteswap.h" 1 /* Macros and inline functions to swap the order of bytes in integer values. Copyright (C) 1997-2021 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 . */ # 394 "../inet/netinet/in.h" 2 # 1 "../bits/uintn-identity.h" 1 /* Inline functions to return unsigned integer values unchanged. Copyright (C) 2017-2021 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 . */ # 395 "../inet/netinet/in.h" 2 /* We can optimize calls to the conversion functions. Either nothing has to be done or we are using directly the byte-swapping functions which often can be inlined. */ /* The host byte order is the same as network byte order, so these functions are all just identity. */ #define ntohl(x) __uint32_identity (x) #define ntohs(x) __uint16_identity (x) #define htonl(x) __uint32_identity (x) #define htons(x) __uint16_identity (x) # 415 "../inet/netinet/in.h" #define IN6_IS_ADDR_UNSPECIFIED(a) (__extension__ ({ const struct in6_addr *__a = (const struct in6_addr *) (a); __a->__in6_u.__u6_addr32[0] == 0 && __a->__in6_u.__u6_addr32[1] == 0 && __a->__in6_u.__u6_addr32[2] == 0 && __a->__in6_u.__u6_addr32[3] == 0; })) #define IN6_IS_ADDR_LOOPBACK(a) (__extension__ ({ const struct in6_addr *__a = (const struct in6_addr *) (a); __a->__in6_u.__u6_addr32[0] == 0 && __a->__in6_u.__u6_addr32[1] == 0 && __a->__in6_u.__u6_addr32[2] == 0 && __a->__in6_u.__u6_addr32[3] == htonl (1); })) #define IN6_IS_ADDR_LINKLOCAL(a) (__extension__ ({ const struct in6_addr *__a = (const struct in6_addr *) (a); (__a->__in6_u.__u6_addr32[0] & htonl (0xffc00000)) == htonl (0xfe800000); })) #define IN6_IS_ADDR_SITELOCAL(a) (__extension__ ({ const struct in6_addr *__a = (const struct in6_addr *) (a); (__a->__in6_u.__u6_addr32[0] & htonl (0xffc00000)) == htonl (0xfec00000); })) #define IN6_IS_ADDR_V4MAPPED(a) (__extension__ ({ const struct in6_addr *__a = (const struct in6_addr *) (a); __a->__in6_u.__u6_addr32[0] == 0 && __a->__in6_u.__u6_addr32[1] == 0 && __a->__in6_u.__u6_addr32[2] == htonl (0xffff); })) #define IN6_IS_ADDR_V4COMPAT(a) (__extension__ ({ const struct in6_addr *__a = (const struct in6_addr *) (a); __a->__in6_u.__u6_addr32[0] == 0 && __a->__in6_u.__u6_addr32[1] == 0 && __a->__in6_u.__u6_addr32[2] == 0 && ntohl (__a->__in6_u.__u6_addr32[3]) > 1; })) #define IN6_ARE_ADDR_EQUAL(a,b) (__extension__ ({ const struct in6_addr *__a = (const struct in6_addr *) (a); const struct in6_addr *__b = (const struct in6_addr *) (b); __a->__in6_u.__u6_addr32[0] == __b->__in6_u.__u6_addr32[0] && __a->__in6_u.__u6_addr32[1] == __b->__in6_u.__u6_addr32[1] && __a->__in6_u.__u6_addr32[2] == __b->__in6_u.__u6_addr32[2] && __a->__in6_u.__u6_addr32[3] == __b->__in6_u.__u6_addr32[3]; })) # 505 "../inet/netinet/in.h" #define IN6_IS_ADDR_MULTICAST(a) (((const uint8_t *) (a))[0] == 0xff) /* Bind socket to a privileged IP port. */ extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __THROW; /* The IPv6 version of this function. */ extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in) __THROW; #define IN6_IS_ADDR_MC_NODELOCAL(a) (IN6_IS_ADDR_MULTICAST(a) && ((((const uint8_t *) (a))[1] & 0xf) == 0x1)) #define IN6_IS_ADDR_MC_LINKLOCAL(a) (IN6_IS_ADDR_MULTICAST(a) && ((((const uint8_t *) (a))[1] & 0xf) == 0x2)) #define IN6_IS_ADDR_MC_SITELOCAL(a) (IN6_IS_ADDR_MULTICAST(a) && ((((const uint8_t *) (a))[1] & 0xf) == 0x5)) #define IN6_IS_ADDR_MC_ORGLOCAL(a) (IN6_IS_ADDR_MULTICAST(a) && ((((const uint8_t *) (a))[1] & 0xf) == 0x8)) #define IN6_IS_ADDR_MC_GLOBAL(a) (IN6_IS_ADDR_MULTICAST(a) && ((((const uint8_t *) (a))[1] & 0xf) == 0xe)) struct cmsghdr; /* Forward declaration. */ /* IPv6 packet information. */ struct in6_pktinfo { struct in6_addr ipi6_addr; /* src/dst IPv6 address */ unsigned int ipi6_ifindex; /* send/recv interface index */ }; /* IPv6 MTU information. */ struct ip6_mtuinfo { struct sockaddr_in6 ip6m_addr; /* dst address including zone ID */ uint32_t ip6m_mtu; /* path MTU in host byte order */ }; /* Obsolete hop-by-hop and Destination Options Processing (RFC 2292). */ extern int inet6_option_space (int __nbytes) __THROW __attribute_deprecated__; extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp, int __type) __THROW __attribute_deprecated__; extern int inet6_option_append (struct cmsghdr *__cmsg, const uint8_t *__typep, int __multx, int __plusy) __THROW __attribute_deprecated__; extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen, int __multx, int __plusy) __THROW __attribute_deprecated__; extern int inet6_option_next (const struct cmsghdr *__cmsg, uint8_t **__tptrp) __THROW __attribute_deprecated__; extern int inet6_option_find (const struct cmsghdr *__cmsg, uint8_t **__tptrp, int __type) __THROW __attribute_deprecated__; /* Hop-by-Hop and Destination Options Processing (RFC 3542). */ extern int inet6_opt_init (void *__extbuf, socklen_t __extlen) __THROW; extern int inet6_opt_append (void *__extbuf, socklen_t __extlen, int __offset, uint8_t __type, socklen_t __len, uint8_t __align, void **__databufp) __THROW; extern int inet6_opt_finish (void *__extbuf, socklen_t __extlen, int __offset) __THROW; extern int inet6_opt_set_val (void *__databuf, int __offset, void *__val, socklen_t __vallen) __THROW; extern int inet6_opt_next (void *__extbuf, socklen_t __extlen, int __offset, uint8_t *__typep, socklen_t *__lenp, void **__databufp) __THROW; extern int inet6_opt_find (void *__extbuf, socklen_t __extlen, int __offset, uint8_t __type, socklen_t *__lenp, void **__databufp) __THROW; extern int inet6_opt_get_val (void *__databuf, int __offset, void *__val, socklen_t __vallen) __THROW; /* Routing Header Option (RFC 3542). */ extern socklen_t inet6_rth_space (int __type, int __segments) __THROW; extern void *inet6_rth_init (void *__bp, socklen_t __bp_len, int __type, int __segments) __THROW; extern int inet6_rth_add (void *__bp, const struct in6_addr *__addr) __THROW; extern int inet6_rth_reverse (const void *__in, void *__out) __THROW; extern int inet6_rth_segments (const void *__bp) __THROW; extern struct in6_addr *inet6_rth_getaddr (const void *__bp, int __index) __THROW; /* Multicast source filter support. */ /* Get IPv4 source filter. */ extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr, struct in_addr __group, uint32_t *__fmode, uint32_t *__numsrc, struct in_addr *__slist) __THROW; /* Set IPv4 source filter. */ extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr, struct in_addr __group, uint32_t __fmode, uint32_t __numsrc, const struct in_addr *__slist) __THROW; /* Get source filter. */ extern int getsourcefilter (int __s, uint32_t __interface_addr, const struct sockaddr *__group, socklen_t __grouplen, uint32_t *__fmode, uint32_t *__numsrc, struct sockaddr_storage *__slist) __THROW; /* Set source filter. */ extern int setsourcefilter (int __s, uint32_t __interface_addr, const struct sockaddr *__group, socklen_t __grouplen, uint32_t __fmode, uint32_t __numsrc, const struct sockaddr_storage *__slist) __THROW; __END_DECLS # 4 "../include/netinet/in.h" 2 libc_hidden_proto (bindresvport) libc_hidden_proto (in6addr_loopback) extern __typeof (in6addr_loopback) __in6addr_loopback; libc_hidden_proto (__in6addr_loopback) libc_hidden_proto (in6addr_any) extern __typeof (in6addr_any) __in6addr_any; libc_hidden_proto (__in6addr_any) # 6 "../resolv/bits/types/res_state.h" 2 /* res_state: the global state used by the resolver stub. */ #define MAXNS 3 #define MAXDFLSRCH 3 #define MAXDNSRCH 6 #define MAXRESOLVSORT 10 struct __res_state { int retrans; /* retransmition time interval */ int retry; /* number of times to retransmit */ unsigned long options; /* option flags - see below. */ int nscount; /* number of name servers */ struct sockaddr_in nsaddr_list[MAXNS]; /* address of name server */ unsigned short id; /* current message id */ /* 2 byte hole here. */ char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */ char defdname[256]; /* default domain (deprecated) */ unsigned long pfcode; /* RES_PRF_ flags - see below. */ unsigned ndots:4; /* threshold for initial abs. query */ unsigned nsort:4; /* number of elements in sort_list[] */ unsigned ipv6_unavail:1; /* connecting to IPv6 server failed */ unsigned unused:23; struct { struct in_addr addr; uint32_t mask; } sort_list[MAXRESOLVSORT]; /* 4 byte hole here on 64-bit architectures. */ void * __glibc_unused_qhook; void * __glibc_unused_rhook; int res_h_errno; /* last one set for this context */ int _vcsock; /* PRIVATE: for res_send VC i/o */ unsigned int _flags; /* PRIVATE: see below */ /* 4 byte hole here on 64-bit architectures. */ union { char pad[52]; /* On an i386 this means 512b total. */ struct { uint16_t nscount; uint16_t nsmap[MAXNS]; int nssocks[MAXNS]; uint16_t nscount6; uint16_t nsinit; struct sockaddr_in6 *nsaddrs[MAXNS]; unsigned long long int __glibc_extension_index __attribute__((packed)); } _ext; } _u; }; typedef struct __res_state *res_state; # 2 "../include/bits/types/res_state.h" 2 # 35 "../nptl/descr.h" 2 # 1 "../sysdeps/unix/sysv/linux/s390/kernel-features.h" 1 /* Set flags signalling availability of kernel features based on given kernel version number. S/390 version. Copyright (C) 1999-2021 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 . */ /* Direct socketcalls available with kernel 4.3. */ # 30 "../sysdeps/unix/sysv/linux/s390/kernel-features.h" #undef __ASSUME_ACCEPT_SYSCALL #undef __ASSUME_ACCEPT4_SYSCALL #undef __ASSUME_RECVMMSG_SYSCALL #undef __ASSUME_SENDMMSG_SYSCALL #undef __ASSUME_SENDMSG_SYSCALL #undef __ASSUME_RECVMSG_SYSCALL #undef __ASSUME_CONNECT_SYSCALL #undef __ASSUME_RECVFROM_SYSCALL #undef __ASSUME_SENDTO_SYSCALL #undef __ASSUME_GETSOCKOPT_SYSCALL #undef __ASSUME_SETSOCKOPT_SYSCALL /* s390 only supports ipc syscall before 5.1. */ #undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS #undef __ASSUME_SYSVIPC_DEFAULT_IPC_64 #undef __ASSUME_CLONE_DEFAULT #define __ASSUME_CLONE_BACKWARDS2 # 36 "../nptl/descr.h" 2 # 1 "../sysdeps/generic/tls-internal-struct.h" 1 /* Per-thread state. Generic version. Copyright (C) 2020-2021 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 . */ #define _TLS_INTERNAL_STRUCT_H 1 struct tls_internal_t { char *strsignal_buf; char *strerror_l_buf; }; # 37 "../nptl/descr.h" 2 /* We keep thread specific data in a special data structure, a two-level array. The top-level array contains pointers to dynamically allocated arrays of a certain number of data pointers. So we can implement a sparse array. Each dynamic second-level array has PTHREAD_KEY_2NDLEVEL_SIZE entries. This value shouldn't be too large. */ #define PTHREAD_KEY_2NDLEVEL_SIZE 32 /* We need to address PTHREAD_KEYS_MAX key with PTHREAD_KEY_2NDLEVEL_SIZE keys in each subarray. */ #define PTHREAD_KEY_1STLEVEL_SIZE ((PTHREAD_KEYS_MAX + PTHREAD_KEY_2NDLEVEL_SIZE - 1) / PTHREAD_KEY_2NDLEVEL_SIZE) /* Internal version of the buffer to store cancellation handler information. */ struct pthread_unwind_buf { struct { __jmp_buf jmp_buf; int mask_was_saved; } cancel_jmp_buf[1]; union { /* This is the placeholder of the public version. */ void *pad[4]; struct { /* Pointer to the previous cleanup buffer. */ struct pthread_unwind_buf *prev; /* Backward compatibility: state of the old-style cleanup handler at the time of the previous new-style cleanup handler installment. */ struct _pthread_cleanup_buffer *cleanup; /* Cancellation type before the push call. */ int canceltype; } data; } priv; }; /* Opcodes and data types for communication with the signal handler to change user/group IDs. */ struct xid_command { int syscall_no; /* Enforce zero-extension for the pointer argument in int setgroups (size_t size, const gid_t *list); The kernel XID arguments are unsigned and do not require sign extension. */ unsigned long int id[3]; volatile int cntr; volatile int error; /* -1: no call yet, 0: success seen, >0: error seen. */ }; /* Data structure used by the kernel to find robust futexes. */ struct robust_list_head { void *list; long int futex_offset; void *list_op_pending; }; /* Data strcture used to handle thread priority protection. */ struct priority_protection_data { int priomax; unsigned int priomap[]; }; /* Thread descriptor data structure. */ struct pthread { union { /* This overlaps the TCB as used for TLS without threads (see tls.h). */ tcbhead_t header; # 156 "../nptl/descr.h" /* This extra padding has no special purpose, and this structure layout is private and subject to change without affecting the official ABI. We just have it here in case it might be convenient for some implementation-specific instrumentation hack or suchlike. */ void *__padding[24]; }; /* This descriptor's link on the GL (dl_stack_used) or GL (dl_stack_user) list. */ list_t list; /* Thread ID - which is also a 'is this thread descriptor (and therefore stack) used' flag. */ pid_t tid; /* Ununsed. */ pid_t pid_ununsed; /* List of robust mutexes the thread is holding. */ void *robust_prev; struct robust_list_head robust_head; /* The list above is strange. It is basically a double linked list but the pointer to the next/previous element of the list points in the middle of the object, the __next element. Whenever casting to __pthread_list_t we need to adjust the pointer first. These operations are effectively concurrent code in that the thread can get killed at any point in time and the kernel takes over. Thus, the __next elements are a kind of concurrent list and we need to enforce using compiler barriers that the individual operations happen in such a way that the kernel always sees a consistent list. The backward links (ie, the __prev elements) are not used by the kernel. FIXME We should use relaxed MO atomic operations here and signal fences because this kind of concurrency is similar to synchronizing with a signal handler. */ #define QUEUE_PTR_ADJUST (offsetof (__pthread_list_t, __next)) #define ENQUEUE_MUTEX_BOTH(mutex,val) do { __pthread_list_t *next = (__pthread_list_t *) ((((uintptr_t) THREAD_GETMEM (THREAD_SELF, robust_head.list)) & ~1ul) - QUEUE_PTR_ADJUST); next->__prev = (void *) &mutex->__data.__list.__next; mutex->__data.__list.__next = THREAD_GETMEM (THREAD_SELF, robust_head.list); mutex->__data.__list.__prev = (void *) &THREAD_SELF->robust_head; __asm ("" ::: "memory"); THREAD_SETMEM (THREAD_SELF, robust_head.list, (void *) (((uintptr_t) &mutex->__data.__list.__next) | val)); } while (0) # 211 "../nptl/descr.h" #define DEQUEUE_MUTEX(mutex) do { __pthread_list_t *next = (__pthread_list_t *) ((char *) (((uintptr_t) mutex->__data.__list.__next) & ~1ul) - QUEUE_PTR_ADJUST); next->__prev = mutex->__data.__list.__prev; __pthread_list_t *prev = (__pthread_list_t *) ((char *) (((uintptr_t) mutex->__data.__list.__prev) & ~1ul) - QUEUE_PTR_ADJUST); prev->__next = mutex->__data.__list.__next; __asm ("" ::: "memory"); mutex->__data.__list.__prev = NULL; mutex->__data.__list.__next = NULL; } while (0) # 227 "../nptl/descr.h" # 267 "../nptl/descr.h" #define ENQUEUE_MUTEX(mutex) ENQUEUE_MUTEX_BOTH (mutex, 0) #define ENQUEUE_MUTEX_PI(mutex) ENQUEUE_MUTEX_BOTH (mutex, 1) /* List of cleanup buffers. */ struct _pthread_cleanup_buffer *cleanup; /* Unwind information. */ struct pthread_unwind_buf *cleanup_jmp_buf; #define HAVE_CLEANUP_JMP_BUF /* Flags determining processing of cancellation. */ int cancelhandling; /* Bit set if canceled. */ #define CANCELED_BIT 3 #define CANCELED_BITMASK (0x01 << CANCELED_BIT) /* Bit set if thread is exiting. */ #define EXITING_BIT 4 #define EXITING_BITMASK (0x01 << EXITING_BIT) /* Bit set if thread terminated and TCB is freed. */ #define TERMINATED_BIT 5 #define TERMINATED_BITMASK (0x01 << TERMINATED_BIT) /* Bit set if thread is supposed to change XID. */ #define SETXID_BIT 6 #define SETXID_BITMASK (0x01 << SETXID_BIT) /* Flags. Including those copied from the thread attribute. */ int flags; /* We allocate one block of references here. This should be enough to avoid allocating any memory dynamically for most applications. */ struct pthread_key_data { /* Sequence number. We use uintptr_t to not require padding on 32- and 64-bit machines. On 64-bit machines it helps to avoid wrapping, too. */ uintptr_t seq; /* Data pointer. */ void *data; } specific_1stblock[PTHREAD_KEY_2NDLEVEL_SIZE]; /* Two-level array for the thread-specific data. */ struct pthread_key_data *specific[PTHREAD_KEY_1STLEVEL_SIZE]; /* Flag which is set when specific data is set. */ bool specific_used; /* True if events must be reported. */ bool report_events; /* True if the user provided the stack. */ bool user_stack; /* True if thread must stop at startup time. */ bool stopped_start; /* Indicate that a thread creation setup has failed (for instance the scheduler or affinity). */ int setup_failed; /* Lock to synchronize access to the descriptor. */ int lock; /* Lock for synchronizing setxid calls. */ unsigned int setxid_futex; hp_timing_t cpuclock_offset_ununsed; /* If the thread waits to join another one the ID of the latter is stored here. In case a thread is detached this field contains a pointer of the TCB if the thread itself. This is something which cannot happen in normal operation. */ struct pthread *joinid; /* Check whether a thread is detached. */ #define IS_DETACHED(pd) ((pd)->joinid == (pd)) /* The result of the thread function. */ void *result; /* Scheduling parameters for the new thread. */ struct sched_param schedparam; int schedpolicy; /* Start position of the code to be executed and the argument passed to the function. */ void *(*start_routine) (void *); void *arg; /* Debug state. */ td_eventbuf_t eventbuf; /* Next descriptor with a pending event. */ struct pthread *nextevent; /* Machine-specific unwind info. */ struct _Unwind_Exception exc; /* If nonzero, pointer to the area allocated for the stack and guard. */ void *stackblock; /* Size of the stackblock area including the guard. */ size_t stackblock_size; /* Size of the included guard area. */ size_t guardsize; /* This is what the user specified and what we will report. */ size_t reported_guardsize; /* Thread Priority Protection data. */ struct priority_protection_data *tpp; /* Resolver state. */ struct __res_state res; /* Signal mask for the new thread. Used during thread startup to restore the signal mask. (Threads are launched with all signals masked.) */ sigset_t sigmask; /* Indicates whether is a C11 thread created by thrd_creat. */ bool c11; /* Thread cancel state (PTHREAD_CANCEL_ENABLE or PTHREAD_CANCEL_DISABLE). */ unsigned char cancelstate; /* Thread cancel type (PTHREAD_CANCEL_DEFERRED or PTHREAD_CANCEL_ASYNCHRONOUS). */ unsigned char canceltype; /* Used in __pthread_kill_internal to detected a thread that has exited or is about to exit. exit_lock must only be acquired after blocking signals. */ bool exiting; int exit_lock; /* A low-level lock (for use with __libc_lock_init etc). */ /* Used on strsignal. */ struct tls_internal_t tls_state; /* This member must be last. */ char end_padding[]; #define PTHREAD_STRUCT_END_PADDING (sizeof (struct pthread) - offsetof (struct pthread, end_padding)) } __attribute ((aligned (TCB_ALIGNMENT))); /* This yields the pointer that TLS support code calls the thread pointer. */ #define TLS_TPADJ(pd) (pd) # 85 "../sysdeps/s390/nptl/tls.h" 2 /* Install the dtv pointer. The pointer passed is to the element with index -1 which contain the length. */ #define INSTALL_DTV(descr,dtvp) ((tcbhead_t *) (descr))->dtv = (dtvp) + 1 /* Install new dtv for current thread. */ #define INSTALL_NEW_DTV(dtv) (((tcbhead_t *) __builtin_thread_pointer ())->dtv = (dtv)) /* Return dtv of given thread descriptor. */ #define GET_DTV(descr) (((tcbhead_t *) (descr))->dtv) #define INIT_SYSINFO /* Code to initially initialize the thread pointer. This might need special attention since 'errno' is not yet available and if the operation can cause a failure 'errno' must not be touched. */ #define TLS_INIT_TP(thrdescr) ({ void *_thrdescr = (thrdescr); tcbhead_t *_head = _thrdescr; _head->tcb = _thrdescr; _head->self = _thrdescr; INIT_SYSINFO; __builtin_set_thread_pointer (_thrdescr); NULL; }) # 123 "../sysdeps/s390/nptl/tls.h" /* Value passed to 'clone' for initialization of the thread register. */ #define TLS_DEFINE_INIT_TP(tp,pd) void *tp = (pd) /* Return the address of the dtv for the current thread. */ #define THREAD_DTV() (((tcbhead_t *) __builtin_thread_pointer ())->dtv) /* Return the thread descriptor for the current thread. */ #define THREAD_SELF ((struct pthread *) __builtin_thread_pointer ()) /* Magic for libthread_db to know how to do THREAD_SELF. */ #define DB_THREAD_SELF REGISTER (32, 32, 18 * 4, 0) REGISTER (64, __WORDSIZE, 18 * 8, 0) /* Access to data in the thread descriptor is easy. */ #define THREAD_GETMEM(descr,member) descr->member #define THREAD_GETMEM_NC(descr,member,idx) descr->member[idx] #define THREAD_SETMEM(descr,member,value) descr->member = (value) #define THREAD_SETMEM_NC(descr,member,idx,value) descr->member[idx] = (value) /* Set the stack guard field in TCB head. */ #define THREAD_SET_STACK_GUARD(value) do { __asm__ __volatile__ ("" : : : "a0", "a1"); THREAD_SETMEM (THREAD_SELF, header.stack_guard, value); } while (0) #define THREAD_COPY_STACK_GUARD(descr) ((descr)->header.stack_guard = THREAD_GETMEM (THREAD_SELF, header.stack_guard)) /* s390 doesn't have HP_TIMING_*, so for the time being use stack_guard as pointer_guard. */ #define THREAD_GET_POINTER_GUARD() THREAD_GETMEM (THREAD_SELF, header.stack_guard) #define THREAD_SET_POINTER_GUARD(value) ((void) (value)) #define THREAD_COPY_POINTER_GUARD(descr) /* Get and set the global scope generation counter in struct pthread. */ #define THREAD_GSCOPE_FLAG_UNUSED 0 #define THREAD_GSCOPE_FLAG_USED 1 #define THREAD_GSCOPE_FLAG_WAIT 2 #define THREAD_GSCOPE_RESET_FLAG() do { int __res = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, THREAD_GSCOPE_FLAG_UNUSED); if (__res == THREAD_GSCOPE_FLAG_WAIT) lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); } while (0) # 180 "../sysdeps/s390/nptl/tls.h" #define THREAD_GSCOPE_SET_FLAG() do { THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; atomic_write_barrier (); } while (0) # 28 "../sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h" 2 /* For Linux we can use the system call table in the header file /usr/include/asm/unistd.h of the kernel. But these symbols do not follow the SYS_* syntax so we have to redefine the `SYS_ify' macro here. */ /* In newer 2.1 kernels __NR_syscall is missing so we define it here. */ #define __NR_syscall 0 #undef SYS_ify #define SYS_ify(syscall_name) __NR_ ##syscall_name # 176 "../sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h" #undef HAVE_INTERNAL_BRK_ADDR_SYMBOL #define HAVE_INTERNAL_BRK_ADDR_SYMBOL 1 /* Pointer mangling support. */ /* For the time being just use stack_guard rather than a separate pointer_guard. */ # 199 "../sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h" #define PTR_MANGLE(var) (var) = (void *) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ()) #define PTR_DEMANGLE(var) PTR_MANGLE (var) # 20 "../sysdeps/s390/s390-64/__longjmp.c" 2 # 1 "../include/unistd.h" 1 # 1 "../posix/unistd.h" 1 /* Copyright (C) 1991-2021 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 . */ /* * POSIX Standard: 2.10 Symbolic Constants */ #define _UNISTD_H 1 __BEGIN_DECLS /* These may be used to determine what facilities are present at compile time. Their values can be obtained at run time from `sysconf'. */ /* POSIX Standard approved as ISO/IEC 9945-1 as of September 2008. */ #define _POSIX_VERSION 200809L # 48 "../posix/unistd.h" /* These are not #ifdef __USE_POSIX2 because they are in the theoretically application-owned namespace. */ #define __POSIX2_THIS_VERSION 200809L /* The utilities on GNU systems also correspond to this version. */ # 65 "../posix/unistd.h" /* The utilities on GNU systems also correspond to this version. */ #define _POSIX2_VERSION __POSIX2_THIS_VERSION /* This symbol was required until the 2001 edition of POSIX. */ #define _POSIX2_C_VERSION __POSIX2_THIS_VERSION /* If defined, the implementation supports the C Language Bindings Option. */ #define _POSIX2_C_BIND __POSIX2_THIS_VERSION /* If defined, the implementation supports the C Language Development Utilities Option. */ #define _POSIX2_C_DEV __POSIX2_THIS_VERSION /* If defined, the implementation supports the Software Development Utilities Option. */ #define _POSIX2_SW_DEV __POSIX2_THIS_VERSION /* If defined, the implementation supports the creation of locales with the localedef utility. */ #define _POSIX2_LOCALEDEF __POSIX2_THIS_VERSION /* X/Open version number to which the library conforms. It is selectable. */ #define _XOPEN_VERSION 700 /* Commands and utilities from XPG4 are available. */ #define _XOPEN_XCU_VERSION 4 /* We are compatible with the old published standards as well. */ #define _XOPEN_XPG2 1 #define _XOPEN_XPG3 1 #define _XOPEN_XPG4 1 /* The X/Open Unix extensions are available. */ #define _XOPEN_UNIX 1 /* The enhanced internationalization capabilities according to XPG4.2 are present. */ #define _XOPEN_ENH_I18N 1 /* The legacy interfaces are also available. */ #define _XOPEN_LEGACY 1 /* Get values of POSIX options: If these symbols are defined, the corresponding features are always available. If not, they may be available sometimes. The current values can be obtained with `sysconf'. _POSIX_JOB_CONTROL Job control is supported. _POSIX_SAVED_IDS Processes have a saved set-user-ID and a saved set-group-ID. _POSIX_REALTIME_SIGNALS Real-time, queued signals are supported. _POSIX_PRIORITY_SCHEDULING Priority scheduling is supported. _POSIX_TIMERS POSIX.4 clocks and timers are supported. _POSIX_ASYNCHRONOUS_IO Asynchronous I/O is supported. _POSIX_PRIORITIZED_IO Prioritized asynchronous I/O is supported. _POSIX_SYNCHRONIZED_IO Synchronizing file data is supported. _POSIX_FSYNC The fsync function is present. _POSIX_MAPPED_FILES Mapping of files to memory is supported. _POSIX_MEMLOCK Locking of all memory is supported. _POSIX_MEMLOCK_RANGE Locking of ranges of memory is supported. _POSIX_MEMORY_PROTECTION Setting of memory protections is supported. _POSIX_MESSAGE_PASSING POSIX.4 message queues are supported. _POSIX_SEMAPHORES POSIX.4 counting semaphores are supported. _POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported. _POSIX_THREADS POSIX.1c pthreads are supported. _POSIX_THREAD_ATTR_STACKADDR Thread stack address attribute option supported. _POSIX_THREAD_ATTR_STACKSIZE Thread stack size attribute option supported. _POSIX_THREAD_SAFE_FUNCTIONS Thread-safe functions are supported. _POSIX_THREAD_PRIORITY_SCHEDULING POSIX.1c thread execution scheduling supported. _POSIX_THREAD_PRIO_INHERIT Thread priority inheritance option supported. _POSIX_THREAD_PRIO_PROTECT Thread priority protection option supported. _POSIX_THREAD_PROCESS_SHARED Process-shared synchronization supported. _POSIX_PII Protocol-independent interfaces are supported. _POSIX_PII_XTI XTI protocol-indep. interfaces are supported. _POSIX_PII_SOCKET Socket protocol-indep. interfaces are supported. _POSIX_PII_INTERNET Internet family of protocols supported. _POSIX_PII_INTERNET_STREAM Connection-mode Internet protocol supported. _POSIX_PII_INTERNET_DGRAM Connectionless Internet protocol supported. _POSIX_PII_OSI ISO/OSI family of protocols supported. _POSIX_PII_OSI_COTS Connection-mode ISO/OSI service supported. _POSIX_PII_OSI_CLTS Connectionless ISO/OSI service supported. _POSIX_POLL Implementation supports `poll' function. _POSIX_SELECT Implementation supports `select' and `pselect'. _XOPEN_REALTIME X/Open realtime support is available. _XOPEN_REALTIME_THREADS X/Open realtime thread support is available. _XOPEN_SHM Shared memory interface according to XPG4.2. _XBS5_ILP32_OFF32 Implementation provides environment with 32-bit int, long, pointer, and off_t types. _XBS5_ILP32_OFFBIG Implementation provides environment with 32-bit int, long, and pointer and off_t with at least 64 bits. _XBS5_LP64_OFF64 Implementation provides environment with 32-bit int, and 64-bit long, pointer, and off_t types. _XBS5_LPBIG_OFFBIG Implementation provides environment with at least 32 bits int and long, pointer, and off_t with at least 64 bits. If any of these symbols is defined as -1, the corresponding option is not true for any file. If any is defined as other than -1, the corresponding option is true for all files. If a symbol is not defined at all, the value for a specific file can be obtained from `pathconf' and `fpathconf'. _POSIX_CHOWN_RESTRICTED Only the super user can use `chown' to change the owner of a file. `chown' can only be used to change the group ID of a file to a group of which the calling process is a member. _POSIX_NO_TRUNC Pathname components longer than NAME_MAX generate an error. _POSIX_VDISABLE If defined, if the value of an element of the `c_cc' member of `struct termios' is _POSIX_VDISABLE, no character will have the effect associated with that element. _POSIX_SYNC_IO Synchronous I/O may be performed. _POSIX_ASYNC_IO Asynchronous I/O may be performed. _POSIX_PRIO_IO Prioritized Asynchronous I/O may be performed. Support for the Large File Support interface is not generally available. If it is available the following constants are defined to one. _LFS64_LARGEFILE Low-level I/O supports large files. _LFS64_STDIO Standard I/O supports large files. */ # 1 "../sysdeps/unix/sysv/linux/bits/posix_opt.h" 1 /* Define POSIX options for Linux. Copyright (C) 1996-2021 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; see the file COPYING.LIB. If not, see . */ #define _BITS_POSIX_OPT_H 1 /* Job control is supported. */ #define _POSIX_JOB_CONTROL 1 /* Processes have a saved set-user-ID and a saved set-group-ID. */ #define _POSIX_SAVED_IDS 1 /* Priority scheduling is not supported with the correct semantics, but GNU/Linux applications expect that the corresponding interfaces are available, even though the semantics do not meet the POSIX requirements. See glibc bug 14829. */ #define _POSIX_PRIORITY_SCHEDULING 200809L /* Synchronizing file data is supported. */ #define _POSIX_SYNCHRONIZED_IO 200809L /* The fsync function is present. */ #define _POSIX_FSYNC 200809L /* Mapping of files to memory is supported. */ #define _POSIX_MAPPED_FILES 200809L /* Locking of all memory is supported. */ #define _POSIX_MEMLOCK 200809L /* Locking of ranges of memory is supported. */ #define _POSIX_MEMLOCK_RANGE 200809L /* Setting of memory protections is supported. */ #define _POSIX_MEMORY_PROTECTION 200809L /* Some filesystems allow all users to change file ownership. */ #define _POSIX_CHOWN_RESTRICTED 0 /* `c_cc' member of 'struct termios' structure can be disabled by using the value _POSIX_VDISABLE. */ #define _POSIX_VDISABLE '\0' /* Filenames are not silently truncated. */ #define _POSIX_NO_TRUNC 1 /* X/Open realtime support is available. */ #define _XOPEN_REALTIME 1 /* X/Open thread realtime support is available. */ #define _XOPEN_REALTIME_THREADS 1 /* XPG4.2 shared memory is supported. */ #define _XOPEN_SHM 1 /* Tell we have POSIX threads. */ #define _POSIX_THREADS 200809L /* We have the reentrant functions described in POSIX. */ #define _POSIX_REENTRANT_FUNCTIONS 1 #define _POSIX_THREAD_SAFE_FUNCTIONS 200809L /* We provide priority scheduling for threads. */ #define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L /* We support user-defined stack sizes. */ #define _POSIX_THREAD_ATTR_STACKSIZE 200809L /* We support user-defined stacks. */ #define _POSIX_THREAD_ATTR_STACKADDR 200809L /* We support priority inheritence. */ #define _POSIX_THREAD_PRIO_INHERIT 200809L /* We support priority protection, though only for non-robust mutexes. */ #define _POSIX_THREAD_PRIO_PROTECT 200809L /* We support priority inheritence for robust mutexes. */ #define _POSIX_THREAD_ROBUST_PRIO_INHERIT 200809L /* We do not support priority protection for robust mutexes. */ #define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1 /* We support POSIX.1b semaphores. */ #define _POSIX_SEMAPHORES 200809L /* Real-time signals are supported. */ #define _POSIX_REALTIME_SIGNALS 200809L /* We support asynchronous I/O. */ #define _POSIX_ASYNCHRONOUS_IO 200809L #define _POSIX_ASYNC_IO 1 /* Alternative name for Unix98. */ #define _LFS_ASYNCHRONOUS_IO 1 /* Support for prioritization is also available. */ #define _POSIX_PRIORITIZED_IO 200809L /* The LFS support in asynchronous I/O is also available. */ #define _LFS64_ASYNCHRONOUS_IO 1 /* The rest of the LFS is also available. */ #define _LFS_LARGEFILE 1 #define _LFS64_LARGEFILE 1 #define _LFS64_STDIO 1 /* POSIX shared memory objects are implemented. */ #define _POSIX_SHARED_MEMORY_OBJECTS 200809L /* CPU-time clocks support needs to be checked at runtime. */ #define _POSIX_CPUTIME 0 /* Clock support in threads must be also checked at runtime. */ #define _POSIX_THREAD_CPUTIME 0 /* GNU libc provides regular expression handling. */ #define _POSIX_REGEXP 1 /* Reader/Writer locks are available. */ #define _POSIX_READER_WRITER_LOCKS 200809L /* We have a POSIX shell. */ #define _POSIX_SHELL 1 /* We support the Timeouts option. */ #define _POSIX_TIMEOUTS 200809L /* We support spinlocks. */ #define _POSIX_SPIN_LOCKS 200809L /* The `spawn' function family is supported. */ #define _POSIX_SPAWN 200809L /* We have POSIX timers. */ #define _POSIX_TIMERS 200809L /* The barrier functions are available. */ #define _POSIX_BARRIERS 200809L /* POSIX message queues are available. */ #define _POSIX_MESSAGE_PASSING 200809L /* Thread process-shared synchronization is supported. */ #define _POSIX_THREAD_PROCESS_SHARED 200809L /* The monotonic clock might be available. */ #define _POSIX_MONOTONIC_CLOCK 0 /* The clock selection interfaces are available. */ #define _POSIX_CLOCK_SELECTION 200809L /* Advisory information interfaces are available. */ #define _POSIX_ADVISORY_INFO 200809L /* IPv6 support is available. */ #define _POSIX_IPV6 200809L /* Raw socket support is available. */ #define _POSIX_RAW_SOCKETS 200809L /* We have at least one terminal. */ #define _POSIX2_CHAR_TERM 200809L /* Neither process nor thread sporadic server interfaces is available. */ #define _POSIX_SPORADIC_SERVER -1 #define _POSIX_THREAD_SPORADIC_SERVER -1 /* trace.h is not available. */ #define _POSIX_TRACE -1 #define _POSIX_TRACE_EVENT_FILTER -1 #define _POSIX_TRACE_INHERIT -1 #define _POSIX_TRACE_LOG -1 /* Typed memory objects are not available. */ #define _POSIX_TYPED_MEMORY_OBJECTS -1 # 203 "../posix/unistd.h" 2 /* Get the environment definitions from Unix98. */ # 1 "../sysdeps/unix/sysv/linux/s390/bits/environments.h" 1 /* Copyright (C) 1999-2021 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 . */ # 1 "../sysdeps/s390/s390-64/bits/wordsize.h" 1 /* Determine the wordsize from the preprocessor defines. */ #define __WORDSIZE 64 #define __WORDSIZE_TIME64_COMPAT32 0 # 23 "../sysdeps/unix/sysv/linux/s390/bits/environments.h" 2 /* This header should define the following symbols under the described situations. A value `1' means that the model is always supported, `-1' means it is never supported. Undefined means it cannot be statically decided. _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG, _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32, _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were used in previous versions of the Unix standard and are available only for compatibility. */ /* Environments with 32-bit wide pointers are optionally provided. Therefore following macros aren't defined: # undef _POSIX_V7_ILP32_OFF32 # undef _POSIX_V7_ILP32_OFFBIG # undef _POSIX_V6_ILP32_OFF32 # undef _POSIX_V6_ILP32_OFFBIG # undef _XBS5_ILP32_OFF32 # undef _XBS5_ILP32_OFFBIG and users need to check at runtime. */ /* We also have no use (for now) for an environment with bigger pointers and offsets. */ #define _POSIX_V7_LPBIG_OFFBIG -1 #define _POSIX_V6_LPBIG_OFFBIG -1 #define _XBS5_LPBIG_OFFBIG -1 /* By default we have 64-bit wide `long int', pointers and `off_t'. */ #define _POSIX_V7_LP64_OFF64 1 #define _POSIX_V6_LP64_OFF64 1 #define _XBS5_LP64_OFF64 1 # 90 "../sysdeps/unix/sysv/linux/s390/bits/environments.h" #define __ILP32_OFF32_CFLAGS "-m31" #define __ILP32_OFFBIG_CFLAGS "-m31 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" #define __ILP32_OFF32_LDFLAGS "-m31" #define __ILP32_OFFBIG_LDFLAGS "-m31" #define __LP64_OFF64_CFLAGS "-m64" #define __LP64_OFF64_LDFLAGS "-m64" # 207 "../posix/unistd.h" 2 /* Standard file descriptors. */ #define STDIN_FILENO 0 #define STDOUT_FILENO 1 #define STDERR_FILENO 2 /* All functions that are not declared anywhere else. */ # 1 "../include/bits/types.h" 1 # 218 "../posix/unistd.h" 2 #define __need_size_t #define __need_NULL # 1 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 1 3 4 /* Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC 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 General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* * ISO C Standard: 7.17 Common definitions */ /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ # 44 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ # 85 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 153 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 231 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_size_t /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ # 340 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 #undef __need_wchar_t # 354 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 384 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 /* A null pointer constant. */ #undef NULL #define NULL ((void *)0) #undef __need_NULL /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) # 428 "/usr/lib/gcc/s390x-redhat-linux/11/include/stddef.h" 3 4 # 227 "../posix/unistd.h" 2 /* The Single Unix specification says that some more types are available here. */ # 249 "../posix/unistd.h" /* Values for the second argument to access. These may be OR'd together. */ #define R_OK 4 #define W_OK 2 #define X_OK 1 #define F_OK 0 /* Test for access to NAME using the real UID and real GID. */ extern int access (const char *__name, int __type) __THROW __nonnull ((1)); /* Test for access to NAME using the effective UID and GID (as normal file operations use). */ extern int euidaccess (const char *__name, int __type) __THROW __nonnull ((1)); /* An alias for `euidaccess', used by some other systems. */ extern int eaccess (const char *__name, int __type) __THROW __nonnull ((1)); /* Execute program relative to a directory file descriptor. */ extern int execveat (int __fd, const char *__path, char *const __argv[], char *const __envp[], int __flags) __THROW __nonnull ((2, 3)); /* Test for access to FILE relative to the directory FD is open on. If AT_EACCESS is set in FLAG, then use effective IDs like `eaccess', otherwise use real IDs like `access'. */ extern int faccessat (int __fd, const char *__file, int __type, int __flag) __THROW __nonnull ((2)) __wur; /* Values for the WHENCE argument to lseek. */ #define SEEK_SET 0 #define SEEK_CUR 1 #define SEEK_END 2 #define SEEK_DATA 3 #define SEEK_HOLE 4 /* Old BSD names for the same constants; just for compatibility. */ #define L_SET SEEK_SET #define L_INCR SEEK_CUR #define L_XTND SEEK_END /* Move FD's file position to OFFSET bytes from the beginning of the file (if WHENCE is SEEK_SET), the current position (if WHENCE is SEEK_CUR), or the end of the file (if WHENCE is SEEK_END). Return the new file position. */ extern __off_t lseek (int __fd, __off_t __offset, int __whence) __THROW; # 349 "../posix/unistd.h" extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) __THROW; /* Close the file descriptor FD. This function is a cancellation point and therefore not marked with __THROW. */ extern int close (int __fd); /* Close all open file descriptors greater than or equal to LOWFD. Negative LOWFD is clamped to 0. */ extern void closefrom (int __lowfd) __THROW; /* Read NBYTES into BUF from FD. Return the number read, -1 for errors or 0 for EOF. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur __fortified_attr_access (__write_only__, 2, 3); /* Write N bytes of BUF to FD. Return the number written, or -1. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur __attr_access ((__read_only__, 2, 3)); /* Read NBYTES into BUF from FD at the given position OFFSET without changing the file pointer. Return the number read, -1 for errors or 0 for EOF. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __wur __fortified_attr_access (__write_only__, 2, 3); /* Write N bytes of BUF to FD at the given position OFFSET without changing the file pointer. Return the number written, or -1. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t pwrite (int __fd, const void *__buf, size_t __n, __off_t __offset) __wur __attr_access ((__read_only__, 2, 3)); # 417 "../posix/unistd.h" /* Read NBYTES into BUF from FD at the given position OFFSET without changing the file pointer. Return the number read, -1 for errors or 0 for EOF. */ extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __wur __fortified_attr_access (__write_only__, 2, 3); /* Write N bytes of BUF to FD at the given position OFFSET without changing the file pointer. Return the number written, or -1. */ extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n, __off64_t __offset) __wur __attr_access ((__read_only__, 2, 3)); /* Create a one-way communication channel (pipe). If successful, two file descriptors are stored in PIPEDES; bytes written on PIPEDES[1] can be read from PIPEDES[0]. Returns 0 if successful, -1 if not. */ extern int pipe (int __pipedes[2]) __THROW __wur; /* Same as pipe but apply flags passed in FLAGS to the new file descriptors. */ extern int pipe2 (int __pipedes[2], int __flags) __THROW __wur; /* Schedule an alarm. In SECONDS seconds, the process will get a SIGALRM. If SECONDS is zero, any currently scheduled alarm will be cancelled. The function returns the number of seconds remaining until the last alarm scheduled would have signaled, or zero if there wasn't one. There is no return value to indicate an error, but you can set `errno' to 0 and check its value after calling `alarm', and this might tell you. The signal may come late due to processor scheduling. */ extern unsigned int alarm (unsigned int __seconds) __THROW; /* Make the process sleep for SECONDS seconds, or until a signal arrives and is not ignored. The function returns the number of seconds less than SECONDS which it actually slept (thus zero if it slept the full time). If a signal handler does a `longjmp' or modifies the handling of the SIGALRM signal while inside `sleep' call, the handling of the SIGALRM signal afterwards is undefined. There is no return value to indicate error, but if `sleep' returns SECONDS, it probably didn't work. This function is a cancellation point and therefore not marked with __THROW. */ extern unsigned int sleep (unsigned int __seconds); /* Set an alarm to go off (generating a SIGALRM signal) in VALUE microseconds. If INTERVAL is nonzero, when the alarm goes off, the timer is reset to go off every INTERVAL microseconds thereafter. Returns the number of microseconds remaining before the alarm. */ extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) __THROW; /* Sleep USECONDS microseconds, or until a signal arrives that is not blocked or ignored. This function is a cancellation point and therefore not marked with __THROW. */ extern int usleep (__useconds_t __useconds); /* Suspend the process until a signal arrives. This always returns -1 and sets `errno' to EINTR. This function is a cancellation point and therefore not marked with __THROW. */ extern int pause (void); /* Change the owner and group of FILE. */ extern int chown (const char *__file, __uid_t __owner, __gid_t __group) __THROW __nonnull ((1)) __wur; /* Change the owner and group of the file that FD is open on. */ extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __THROW __wur; /* Change owner and group of FILE, if it is a symbolic link the ownership of the symbolic link is changed. */ extern int lchown (const char *__file, __uid_t __owner, __gid_t __group) __THROW __nonnull ((1)) __wur; /* Change the owner and group of FILE relative to the directory FD is open on. */ extern int fchownat (int __fd, const char *__file, __uid_t __owner, __gid_t __group, int __flag) __THROW __nonnull ((2)) __wur; /* Change the process's working directory to PATH. */ extern int chdir (const char *__path) __THROW __nonnull ((1)) __wur; /* Change the process's working directory to the one FD is open on. */ extern int fchdir (int __fd) __THROW __wur; /* Get the pathname of the current working directory, and put it in SIZE bytes of BUF. Returns NULL if the directory couldn't be determined or SIZE was too small. If successful, returns BUF. In GNU, if BUF is NULL, an array is allocated with `malloc'; the array is SIZE bytes long, unless SIZE == 0, in which case it is as big as necessary. */ extern char *getcwd (char *__buf, size_t __size) __THROW __wur; /* Return a malloc'd string containing the current directory name. If the environment variable `PWD' is set, and its value is correct, that value is used. */ extern char *get_current_dir_name (void) __THROW; /* Put the absolute pathname of the current working directory in BUF. If successful, return BUF. If not, put an error message in BUF and return NULL. BUF should be at least PATH_MAX bytes long. */ extern char *getwd (char *__buf) __THROW __nonnull ((1)) __attribute_deprecated__ __wur __attr_access ((__write_only__, 1)); /* Duplicate FD, returning a new file descriptor on the same file. */ extern int dup (int __fd) __THROW __wur; /* Duplicate FD to FD2, closing FD2 and making it open on the same file. */ extern int dup2 (int __fd, int __fd2) __THROW; /* Duplicate FD to FD2, closing FD2 and making it open on the same file while setting flags according to FLAGS. */ extern int dup3 (int __fd, int __fd2, int __flags) __THROW; /* NULL-terminated array of "NAME=VALUE" environment variables. */ extern char **__environ; extern char **environ; /* Replace the current process, executing PATH with arguments ARGV and environment ENVP. ARGV and ENVP are terminated by NULL pointers. */ extern int execve (const char *__path, char *const __argv[], char *const __envp[]) __THROW __nonnull ((1, 2)); /* Execute the file FD refers to, overlaying the running program image. ARGV and ENVP are passed to the new program, as for `execve'. */ extern int fexecve (int __fd, char *const __argv[], char *const __envp[]) __THROW __nonnull ((2)); /* Execute PATH with arguments ARGV and environment from `environ'. */ extern int execv (const char *__path, char *const __argv[]) __THROW __nonnull ((1, 2)); /* Execute PATH with all arguments after PATH until a NULL pointer, and the argument after that for environment. */ extern int execle (const char *__path, const char *__arg, ...) __THROW __nonnull ((1, 2)); /* Execute PATH with all arguments after PATH until a NULL pointer and environment from `environ'. */ extern int execl (const char *__path, const char *__arg, ...) __THROW __nonnull ((1, 2)); /* Execute FILE, searching in the `PATH' environment variable if it contains no slashes, with arguments ARGV and environment from `environ'. */ extern int execvp (const char *__file, char *const __argv[]) __THROW __nonnull ((1, 2)); /* Execute FILE, searching in the `PATH' environment variable if it contains no slashes, with all arguments after FILE until a NULL pointer and environment from `environ'. */ extern int execlp (const char *__file, const char *__arg, ...) __THROW __nonnull ((1, 2)); /* Execute FILE, searching in the `PATH' environment variable if it contains no slashes, with arguments ARGV and environment from `environ'. */ extern int execvpe (const char *__file, char *const __argv[], char *const __envp[]) __THROW __nonnull ((1, 2)); /* Add INC to priority of the current process. */ extern int nice (int __inc) __THROW __wur; /* Terminate program execution with the low-order 8 bits of STATUS. */ extern void _exit (int __status) __attribute__ ((__noreturn__)); /* Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf'; the `_SC_*' symbols for the NAME argument to `sysconf'; and the `_CS_*' symbols for the NAME argument to `confstr'. */ # 1 "../bits/confname.h" 1 /* `sysconf', `pathconf', and `confstr' NAME values. Generic version. Copyright (C) 1993-2021 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 . */ /* Values for the NAME argument to `pathconf' and `fpathconf'. */ enum { _PC_LINK_MAX, #define _PC_LINK_MAX _PC_LINK_MAX _PC_MAX_CANON, #define _PC_MAX_CANON _PC_MAX_CANON _PC_MAX_INPUT, #define _PC_MAX_INPUT _PC_MAX_INPUT _PC_NAME_MAX, #define _PC_NAME_MAX _PC_NAME_MAX _PC_PATH_MAX, #define _PC_PATH_MAX _PC_PATH_MAX _PC_PIPE_BUF, #define _PC_PIPE_BUF _PC_PIPE_BUF _PC_CHOWN_RESTRICTED, #define _PC_CHOWN_RESTRICTED _PC_CHOWN_RESTRICTED _PC_NO_TRUNC, #define _PC_NO_TRUNC _PC_NO_TRUNC _PC_VDISABLE, #define _PC_VDISABLE _PC_VDISABLE _PC_SYNC_IO, #define _PC_SYNC_IO _PC_SYNC_IO _PC_ASYNC_IO, #define _PC_ASYNC_IO _PC_ASYNC_IO _PC_PRIO_IO, #define _PC_PRIO_IO _PC_PRIO_IO _PC_SOCK_MAXBUF, #define _PC_SOCK_MAXBUF _PC_SOCK_MAXBUF _PC_FILESIZEBITS, #define _PC_FILESIZEBITS _PC_FILESIZEBITS _PC_REC_INCR_XFER_SIZE, #define _PC_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE _PC_REC_MAX_XFER_SIZE, #define _PC_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE _PC_REC_MIN_XFER_SIZE, #define _PC_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE _PC_REC_XFER_ALIGN, #define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN _PC_ALLOC_SIZE_MIN, #define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN _PC_SYMLINK_MAX, #define _PC_SYMLINK_MAX _PC_SYMLINK_MAX _PC_2_SYMLINKS #define _PC_2_SYMLINKS _PC_2_SYMLINKS }; /* Values for the argument to `sysconf'. */ enum { _SC_ARG_MAX, #define _SC_ARG_MAX _SC_ARG_MAX _SC_CHILD_MAX, #define _SC_CHILD_MAX _SC_CHILD_MAX _SC_CLK_TCK, #define _SC_CLK_TCK _SC_CLK_TCK _SC_NGROUPS_MAX, #define _SC_NGROUPS_MAX _SC_NGROUPS_MAX _SC_OPEN_MAX, #define _SC_OPEN_MAX _SC_OPEN_MAX _SC_STREAM_MAX, #define _SC_STREAM_MAX _SC_STREAM_MAX _SC_TZNAME_MAX, #define _SC_TZNAME_MAX _SC_TZNAME_MAX _SC_JOB_CONTROL, #define _SC_JOB_CONTROL _SC_JOB_CONTROL _SC_SAVED_IDS, #define _SC_SAVED_IDS _SC_SAVED_IDS _SC_REALTIME_SIGNALS, #define _SC_REALTIME_SIGNALS _SC_REALTIME_SIGNALS _SC_PRIORITY_SCHEDULING, #define _SC_PRIORITY_SCHEDULING _SC_PRIORITY_SCHEDULING _SC_TIMERS, #define _SC_TIMERS _SC_TIMERS _SC_ASYNCHRONOUS_IO, #define _SC_ASYNCHRONOUS_IO _SC_ASYNCHRONOUS_IO _SC_PRIORITIZED_IO, #define _SC_PRIORITIZED_IO _SC_PRIORITIZED_IO _SC_SYNCHRONIZED_IO, #define _SC_SYNCHRONIZED_IO _SC_SYNCHRONIZED_IO _SC_FSYNC, #define _SC_FSYNC _SC_FSYNC _SC_MAPPED_FILES, #define _SC_MAPPED_FILES _SC_MAPPED_FILES _SC_MEMLOCK, #define _SC_MEMLOCK _SC_MEMLOCK _SC_MEMLOCK_RANGE, #define _SC_MEMLOCK_RANGE _SC_MEMLOCK_RANGE _SC_MEMORY_PROTECTION, #define _SC_MEMORY_PROTECTION _SC_MEMORY_PROTECTION _SC_MESSAGE_PASSING, #define _SC_MESSAGE_PASSING _SC_MESSAGE_PASSING _SC_SEMAPHORES, #define _SC_SEMAPHORES _SC_SEMAPHORES _SC_SHARED_MEMORY_OBJECTS, #define _SC_SHARED_MEMORY_OBJECTS _SC_SHARED_MEMORY_OBJECTS _SC_AIO_LISTIO_MAX, #define _SC_AIO_LISTIO_MAX _SC_AIO_LISTIO_MAX _SC_AIO_MAX, #define _SC_AIO_MAX _SC_AIO_MAX _SC_AIO_PRIO_DELTA_MAX, #define _SC_AIO_PRIO_DELTA_MAX _SC_AIO_PRIO_DELTA_MAX _SC_DELAYTIMER_MAX, #define _SC_DELAYTIMER_MAX _SC_DELAYTIMER_MAX _SC_MQ_OPEN_MAX, #define _SC_MQ_OPEN_MAX _SC_MQ_OPEN_MAX _SC_MQ_PRIO_MAX, #define _SC_MQ_PRIO_MAX _SC_MQ_PRIO_MAX _SC_VERSION, #define _SC_VERSION _SC_VERSION _SC_PAGESIZE, #define _SC_PAGESIZE _SC_PAGESIZE #define _SC_PAGE_SIZE _SC_PAGESIZE _SC_RTSIG_MAX, #define _SC_RTSIG_MAX _SC_RTSIG_MAX _SC_SEM_NSEMS_MAX, #define _SC_SEM_NSEMS_MAX _SC_SEM_NSEMS_MAX _SC_SEM_VALUE_MAX, #define _SC_SEM_VALUE_MAX _SC_SEM_VALUE_MAX _SC_SIGQUEUE_MAX, #define _SC_SIGQUEUE_MAX _SC_SIGQUEUE_MAX _SC_TIMER_MAX, #define _SC_TIMER_MAX _SC_TIMER_MAX /* Values for the argument to `sysconf' corresponding to _POSIX2_* symbols. */ _SC_BC_BASE_MAX, #define _SC_BC_BASE_MAX _SC_BC_BASE_MAX _SC_BC_DIM_MAX, #define _SC_BC_DIM_MAX _SC_BC_DIM_MAX _SC_BC_SCALE_MAX, #define _SC_BC_SCALE_MAX _SC_BC_SCALE_MAX _SC_BC_STRING_MAX, #define _SC_BC_STRING_MAX _SC_BC_STRING_MAX _SC_COLL_WEIGHTS_MAX, #define _SC_COLL_WEIGHTS_MAX _SC_COLL_WEIGHTS_MAX _SC_EQUIV_CLASS_MAX, #define _SC_EQUIV_CLASS_MAX _SC_EQUIV_CLASS_MAX _SC_EXPR_NEST_MAX, #define _SC_EXPR_NEST_MAX _SC_EXPR_NEST_MAX _SC_LINE_MAX, #define _SC_LINE_MAX _SC_LINE_MAX _SC_RE_DUP_MAX, #define _SC_RE_DUP_MAX _SC_RE_DUP_MAX _SC_CHARCLASS_NAME_MAX, #define _SC_CHARCLASS_NAME_MAX _SC_CHARCLASS_NAME_MAX _SC_2_VERSION, #define _SC_2_VERSION _SC_2_VERSION _SC_2_C_BIND, #define _SC_2_C_BIND _SC_2_C_BIND _SC_2_C_DEV, #define _SC_2_C_DEV _SC_2_C_DEV _SC_2_FORT_DEV, #define _SC_2_FORT_DEV _SC_2_FORT_DEV _SC_2_FORT_RUN, #define _SC_2_FORT_RUN _SC_2_FORT_RUN _SC_2_SW_DEV, #define _SC_2_SW_DEV _SC_2_SW_DEV _SC_2_LOCALEDEF, #define _SC_2_LOCALEDEF _SC_2_LOCALEDEF _SC_PII, #define _SC_PII _SC_PII _SC_PII_XTI, #define _SC_PII_XTI _SC_PII_XTI _SC_PII_SOCKET, #define _SC_PII_SOCKET _SC_PII_SOCKET _SC_PII_INTERNET, #define _SC_PII_INTERNET _SC_PII_INTERNET _SC_PII_OSI, #define _SC_PII_OSI _SC_PII_OSI _SC_POLL, #define _SC_POLL _SC_POLL _SC_SELECT, #define _SC_SELECT _SC_SELECT _SC_UIO_MAXIOV, #define _SC_UIO_MAXIOV _SC_UIO_MAXIOV _SC_IOV_MAX = _SC_UIO_MAXIOV, #define _SC_IOV_MAX _SC_IOV_MAX _SC_PII_INTERNET_STREAM, #define _SC_PII_INTERNET_STREAM _SC_PII_INTERNET_STREAM _SC_PII_INTERNET_DGRAM, #define _SC_PII_INTERNET_DGRAM _SC_PII_INTERNET_DGRAM _SC_PII_OSI_COTS, #define _SC_PII_OSI_COTS _SC_PII_OSI_COTS _SC_PII_OSI_CLTS, #define _SC_PII_OSI_CLTS _SC_PII_OSI_CLTS _SC_PII_OSI_M, #define _SC_PII_OSI_M _SC_PII_OSI_M _SC_T_IOV_MAX, #define _SC_T_IOV_MAX _SC_T_IOV_MAX /* Values according to POSIX 1003.1c (POSIX threads). */ _SC_THREADS, #define _SC_THREADS _SC_THREADS _SC_THREAD_SAFE_FUNCTIONS, #define _SC_THREAD_SAFE_FUNCTIONS _SC_THREAD_SAFE_FUNCTIONS _SC_GETGR_R_SIZE_MAX, #define _SC_GETGR_R_SIZE_MAX _SC_GETGR_R_SIZE_MAX _SC_GETPW_R_SIZE_MAX, #define _SC_GETPW_R_SIZE_MAX _SC_GETPW_R_SIZE_MAX _SC_LOGIN_NAME_MAX, #define _SC_LOGIN_NAME_MAX _SC_LOGIN_NAME_MAX _SC_TTY_NAME_MAX, #define _SC_TTY_NAME_MAX _SC_TTY_NAME_MAX _SC_THREAD_DESTRUCTOR_ITERATIONS, #define _SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_KEYS_MAX, #define _SC_THREAD_KEYS_MAX _SC_THREAD_KEYS_MAX _SC_THREAD_STACK_MIN, #define _SC_THREAD_STACK_MIN _SC_THREAD_STACK_MIN _SC_THREAD_THREADS_MAX, #define _SC_THREAD_THREADS_MAX _SC_THREAD_THREADS_MAX _SC_THREAD_ATTR_STACKADDR, #define _SC_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKSIZE, #define _SC_THREAD_ATTR_STACKSIZE _SC_THREAD_ATTR_STACKSIZE _SC_THREAD_PRIORITY_SCHEDULING, #define _SC_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIO_INHERIT, #define _SC_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_PROTECT, #define _SC_THREAD_PRIO_PROTECT _SC_THREAD_PRIO_PROTECT _SC_THREAD_PROCESS_SHARED, #define _SC_THREAD_PROCESS_SHARED _SC_THREAD_PROCESS_SHARED _SC_NPROCESSORS_CONF, #define _SC_NPROCESSORS_CONF _SC_NPROCESSORS_CONF _SC_NPROCESSORS_ONLN, #define _SC_NPROCESSORS_ONLN _SC_NPROCESSORS_ONLN _SC_PHYS_PAGES, #define _SC_PHYS_PAGES _SC_PHYS_PAGES _SC_AVPHYS_PAGES, #define _SC_AVPHYS_PAGES _SC_AVPHYS_PAGES _SC_ATEXIT_MAX, #define _SC_ATEXIT_MAX _SC_ATEXIT_MAX _SC_PASS_MAX, #define _SC_PASS_MAX _SC_PASS_MAX _SC_XOPEN_VERSION, #define _SC_XOPEN_VERSION _SC_XOPEN_VERSION _SC_XOPEN_XCU_VERSION, #define _SC_XOPEN_XCU_VERSION _SC_XOPEN_XCU_VERSION _SC_XOPEN_UNIX, #define _SC_XOPEN_UNIX _SC_XOPEN_UNIX _SC_XOPEN_CRYPT, #define _SC_XOPEN_CRYPT _SC_XOPEN_CRYPT _SC_XOPEN_ENH_I18N, #define _SC_XOPEN_ENH_I18N _SC_XOPEN_ENH_I18N _SC_XOPEN_SHM, #define _SC_XOPEN_SHM _SC_XOPEN_SHM _SC_2_CHAR_TERM, #define _SC_2_CHAR_TERM _SC_2_CHAR_TERM _SC_2_C_VERSION, #define _SC_2_C_VERSION _SC_2_C_VERSION _SC_2_UPE, #define _SC_2_UPE _SC_2_UPE _SC_XOPEN_XPG2, #define _SC_XOPEN_XPG2 _SC_XOPEN_XPG2 _SC_XOPEN_XPG3, #define _SC_XOPEN_XPG3 _SC_XOPEN_XPG3 _SC_XOPEN_XPG4, #define _SC_XOPEN_XPG4 _SC_XOPEN_XPG4 _SC_CHAR_BIT, #define _SC_CHAR_BIT _SC_CHAR_BIT _SC_CHAR_MAX, #define _SC_CHAR_MAX _SC_CHAR_MAX _SC_CHAR_MIN, #define _SC_CHAR_MIN _SC_CHAR_MIN _SC_INT_MAX, #define _SC_INT_MAX _SC_INT_MAX _SC_INT_MIN, #define _SC_INT_MIN _SC_INT_MIN _SC_LONG_BIT, #define _SC_LONG_BIT _SC_LONG_BIT _SC_WORD_BIT, #define _SC_WORD_BIT _SC_WORD_BIT _SC_MB_LEN_MAX, #define _SC_MB_LEN_MAX _SC_MB_LEN_MAX _SC_NZERO, #define _SC_NZERO _SC_NZERO _SC_SSIZE_MAX, #define _SC_SSIZE_MAX _SC_SSIZE_MAX _SC_SCHAR_MAX, #define _SC_SCHAR_MAX _SC_SCHAR_MAX _SC_SCHAR_MIN, #define _SC_SCHAR_MIN _SC_SCHAR_MIN _SC_SHRT_MAX, #define _SC_SHRT_MAX _SC_SHRT_MAX _SC_SHRT_MIN, #define _SC_SHRT_MIN _SC_SHRT_MIN _SC_UCHAR_MAX, #define _SC_UCHAR_MAX _SC_UCHAR_MAX _SC_UINT_MAX, #define _SC_UINT_MAX _SC_UINT_MAX _SC_ULONG_MAX, #define _SC_ULONG_MAX _SC_ULONG_MAX _SC_USHRT_MAX, #define _SC_USHRT_MAX _SC_USHRT_MAX _SC_NL_ARGMAX, #define _SC_NL_ARGMAX _SC_NL_ARGMAX _SC_NL_LANGMAX, #define _SC_NL_LANGMAX _SC_NL_LANGMAX _SC_NL_MSGMAX, #define _SC_NL_MSGMAX _SC_NL_MSGMAX _SC_NL_NMAX, #define _SC_NL_NMAX _SC_NL_NMAX _SC_NL_SETMAX, #define _SC_NL_SETMAX _SC_NL_SETMAX _SC_NL_TEXTMAX, #define _SC_NL_TEXTMAX _SC_NL_TEXTMAX _SC_XBS5_ILP32_OFF32, #define _SC_XBS5_ILP32_OFF32 _SC_XBS5_ILP32_OFF32 _SC_XBS5_ILP32_OFFBIG, #define _SC_XBS5_ILP32_OFFBIG _SC_XBS5_ILP32_OFFBIG _SC_XBS5_LP64_OFF64, #define _SC_XBS5_LP64_OFF64 _SC_XBS5_LP64_OFF64 _SC_XBS5_LPBIG_OFFBIG, #define _SC_XBS5_LPBIG_OFFBIG _SC_XBS5_LPBIG_OFFBIG _SC_XOPEN_LEGACY, #define _SC_XOPEN_LEGACY _SC_XOPEN_LEGACY _SC_XOPEN_REALTIME, #define _SC_XOPEN_REALTIME _SC_XOPEN_REALTIME _SC_XOPEN_REALTIME_THREADS, #define _SC_XOPEN_REALTIME_THREADS _SC_XOPEN_REALTIME_THREADS _SC_ADVISORY_INFO, #define _SC_ADVISORY_INFO _SC_ADVISORY_INFO _SC_BARRIERS, #define _SC_BARRIERS _SC_BARRIERS _SC_BASE, #define _SC_BASE _SC_BASE _SC_C_LANG_SUPPORT, #define _SC_C_LANG_SUPPORT _SC_C_LANG_SUPPORT _SC_C_LANG_SUPPORT_R, #define _SC_C_LANG_SUPPORT_R _SC_C_LANG_SUPPORT_R _SC_CLOCK_SELECTION, #define _SC_CLOCK_SELECTION _SC_CLOCK_SELECTION _SC_CPUTIME, #define _SC_CPUTIME _SC_CPUTIME _SC_THREAD_CPUTIME, #define _SC_THREAD_CPUTIME _SC_THREAD_CPUTIME _SC_DEVICE_IO, #define _SC_DEVICE_IO _SC_DEVICE_IO _SC_DEVICE_SPECIFIC, #define _SC_DEVICE_SPECIFIC _SC_DEVICE_SPECIFIC _SC_DEVICE_SPECIFIC_R, #define _SC_DEVICE_SPECIFIC_R _SC_DEVICE_SPECIFIC_R _SC_FD_MGMT, #define _SC_FD_MGMT _SC_FD_MGMT _SC_FIFO, #define _SC_FIFO _SC_FIFO _SC_PIPE, #define _SC_PIPE _SC_PIPE _SC_FILE_ATTRIBUTES, #define _SC_FILE_ATTRIBUTES _SC_FILE_ATTRIBUTES _SC_FILE_LOCKING, #define _SC_FILE_LOCKING _SC_FILE_LOCKING _SC_FILE_SYSTEM, #define _SC_FILE_SYSTEM _SC_FILE_SYSTEM _SC_MONOTONIC_CLOCK, #define _SC_MONOTONIC_CLOCK _SC_MONOTONIC_CLOCK _SC_MULTI_PROCESS, #define _SC_MULTI_PROCESS _SC_MULTI_PROCESS _SC_SINGLE_PROCESS, #define _SC_SINGLE_PROCESS _SC_SINGLE_PROCESS _SC_NETWORKING, #define _SC_NETWORKING _SC_NETWORKING _SC_READER_WRITER_LOCKS, #define _SC_READER_WRITER_LOCKS _SC_READER_WRITER_LOCKS _SC_SPIN_LOCKS, #define _SC_SPIN_LOCKS _SC_SPIN_LOCKS _SC_REGEXP, #define _SC_REGEXP _SC_REGEXP _SC_REGEX_VERSION, #define _SC_REGEX_VERSION _SC_REGEX_VERSION _SC_SHELL, #define _SC_SHELL _SC_SHELL _SC_SIGNALS, #define _SC_SIGNALS _SC_SIGNALS _SC_SPAWN, #define _SC_SPAWN _SC_SPAWN _SC_SPORADIC_SERVER, #define _SC_SPORADIC_SERVER _SC_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER, #define _SC_THREAD_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER _SC_SYSTEM_DATABASE, #define _SC_SYSTEM_DATABASE _SC_SYSTEM_DATABASE _SC_SYSTEM_DATABASE_R, #define _SC_SYSTEM_DATABASE_R _SC_SYSTEM_DATABASE_R _SC_TIMEOUTS, #define _SC_TIMEOUTS _SC_TIMEOUTS _SC_TYPED_MEMORY_OBJECTS, #define _SC_TYPED_MEMORY_OBJECTS _SC_TYPED_MEMORY_OBJECTS _SC_USER_GROUPS, #define _SC_USER_GROUPS _SC_USER_GROUPS _SC_USER_GROUPS_R, #define _SC_USER_GROUPS_R _SC_USER_GROUPS_R _SC_2_PBS, #define _SC_2_PBS _SC_2_PBS _SC_2_PBS_ACCOUNTING, #define _SC_2_PBS_ACCOUNTING _SC_2_PBS_ACCOUNTING _SC_2_PBS_LOCATE, #define _SC_2_PBS_LOCATE _SC_2_PBS_LOCATE _SC_2_PBS_MESSAGE, #define _SC_2_PBS_MESSAGE _SC_2_PBS_MESSAGE _SC_2_PBS_TRACK, #define _SC_2_PBS_TRACK _SC_2_PBS_TRACK _SC_SYMLOOP_MAX, #define _SC_SYMLOOP_MAX _SC_SYMLOOP_MAX _SC_STREAMS, #define _SC_STREAMS _SC_STREAMS _SC_2_PBS_CHECKPOINT, #define _SC_2_PBS_CHECKPOINT _SC_2_PBS_CHECKPOINT _SC_V6_ILP32_OFF32, #define _SC_V6_ILP32_OFF32 _SC_V6_ILP32_OFF32 _SC_V6_ILP32_OFFBIG, #define _SC_V6_ILP32_OFFBIG _SC_V6_ILP32_OFFBIG _SC_V6_LP64_OFF64, #define _SC_V6_LP64_OFF64 _SC_V6_LP64_OFF64 _SC_V6_LPBIG_OFFBIG, #define _SC_V6_LPBIG_OFFBIG _SC_V6_LPBIG_OFFBIG _SC_HOST_NAME_MAX, #define _SC_HOST_NAME_MAX _SC_HOST_NAME_MAX _SC_TRACE, #define _SC_TRACE _SC_TRACE _SC_TRACE_EVENT_FILTER, #define _SC_TRACE_EVENT_FILTER _SC_TRACE_EVENT_FILTER _SC_TRACE_INHERIT, #define _SC_TRACE_INHERIT _SC_TRACE_INHERIT _SC_TRACE_LOG, #define _SC_TRACE_LOG _SC_TRACE_LOG _SC_LEVEL1_ICACHE_SIZE, #define _SC_LEVEL1_ICACHE_SIZE _SC_LEVEL1_ICACHE_SIZE _SC_LEVEL1_ICACHE_ASSOC, #define _SC_LEVEL1_ICACHE_ASSOC _SC_LEVEL1_ICACHE_ASSOC _SC_LEVEL1_ICACHE_LINESIZE, #define _SC_LEVEL1_ICACHE_LINESIZE _SC_LEVEL1_ICACHE_LINESIZE _SC_LEVEL1_DCACHE_SIZE, #define _SC_LEVEL1_DCACHE_SIZE _SC_LEVEL1_DCACHE_SIZE _SC_LEVEL1_DCACHE_ASSOC, #define _SC_LEVEL1_DCACHE_ASSOC _SC_LEVEL1_DCACHE_ASSOC _SC_LEVEL1_DCACHE_LINESIZE, #define _SC_LEVEL1_DCACHE_LINESIZE _SC_LEVEL1_DCACHE_LINESIZE _SC_LEVEL2_CACHE_SIZE, #define _SC_LEVEL2_CACHE_SIZE _SC_LEVEL2_CACHE_SIZE _SC_LEVEL2_CACHE_ASSOC, #define _SC_LEVEL2_CACHE_ASSOC _SC_LEVEL2_CACHE_ASSOC _SC_LEVEL2_CACHE_LINESIZE, #define _SC_LEVEL2_CACHE_LINESIZE _SC_LEVEL2_CACHE_LINESIZE _SC_LEVEL3_CACHE_SIZE, #define _SC_LEVEL3_CACHE_SIZE _SC_LEVEL3_CACHE_SIZE _SC_LEVEL3_CACHE_ASSOC, #define _SC_LEVEL3_CACHE_ASSOC _SC_LEVEL3_CACHE_ASSOC _SC_LEVEL3_CACHE_LINESIZE, #define _SC_LEVEL3_CACHE_LINESIZE _SC_LEVEL3_CACHE_LINESIZE _SC_LEVEL4_CACHE_SIZE, #define _SC_LEVEL4_CACHE_SIZE _SC_LEVEL4_CACHE_SIZE _SC_LEVEL4_CACHE_ASSOC, #define _SC_LEVEL4_CACHE_ASSOC _SC_LEVEL4_CACHE_ASSOC _SC_LEVEL4_CACHE_LINESIZE, #define _SC_LEVEL4_CACHE_LINESIZE _SC_LEVEL4_CACHE_LINESIZE /* Leave room here, maybe we need a few more cache levels some day. */ _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, #define _SC_IPV6 _SC_IPV6 _SC_RAW_SOCKETS, #define _SC_RAW_SOCKETS _SC_RAW_SOCKETS _SC_V7_ILP32_OFF32, #define _SC_V7_ILP32_OFF32 _SC_V7_ILP32_OFF32 _SC_V7_ILP32_OFFBIG, #define _SC_V7_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG _SC_V7_LP64_OFF64, #define _SC_V7_LP64_OFF64 _SC_V7_LP64_OFF64 _SC_V7_LPBIG_OFFBIG, #define _SC_V7_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG _SC_SS_REPL_MAX, #define _SC_SS_REPL_MAX _SC_SS_REPL_MAX _SC_TRACE_EVENT_NAME_MAX, #define _SC_TRACE_EVENT_NAME_MAX _SC_TRACE_EVENT_NAME_MAX _SC_TRACE_NAME_MAX, #define _SC_TRACE_NAME_MAX _SC_TRACE_NAME_MAX _SC_TRACE_SYS_MAX, #define _SC_TRACE_SYS_MAX _SC_TRACE_SYS_MAX _SC_TRACE_USER_EVENT_MAX, #define _SC_TRACE_USER_EVENT_MAX _SC_TRACE_USER_EVENT_MAX _SC_XOPEN_STREAMS, #define _SC_XOPEN_STREAMS _SC_XOPEN_STREAMS _SC_THREAD_ROBUST_PRIO_INHERIT, #define _SC_THREAD_ROBUST_PRIO_INHERIT _SC_THREAD_ROBUST_PRIO_INHERIT _SC_THREAD_ROBUST_PRIO_PROTECT, #define _SC_THREAD_ROBUST_PRIO_PROTECT _SC_THREAD_ROBUST_PRIO_PROTECT _SC_MINSIGSTKSZ, #define _SC_MINSIGSTKSZ _SC_MINSIGSTKSZ _SC_SIGSTKSZ #define _SC_SIGSTKSZ _SC_SIGSTKSZ }; /* Values for the NAME argument to `confstr'. */ enum { _CS_PATH, /* The default search path. */ #define _CS_PATH _CS_PATH _CS_V6_WIDTH_RESTRICTED_ENVS, #define _CS_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS #define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS _CS_GNU_LIBC_VERSION, #define _CS_GNU_LIBC_VERSION _CS_GNU_LIBC_VERSION _CS_GNU_LIBPTHREAD_VERSION, #define _CS_GNU_LIBPTHREAD_VERSION _CS_GNU_LIBPTHREAD_VERSION _CS_V5_WIDTH_RESTRICTED_ENVS, #define _CS_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS #define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS, #define _CS_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS #define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS _CS_LFS_CFLAGS = 1000, #define _CS_LFS_CFLAGS _CS_LFS_CFLAGS _CS_LFS_LDFLAGS, #define _CS_LFS_LDFLAGS _CS_LFS_LDFLAGS _CS_LFS_LIBS, #define _CS_LFS_LIBS _CS_LFS_LIBS _CS_LFS_LINTFLAGS, #define _CS_LFS_LINTFLAGS _CS_LFS_LINTFLAGS _CS_LFS64_CFLAGS, #define _CS_LFS64_CFLAGS _CS_LFS64_CFLAGS _CS_LFS64_LDFLAGS, #define _CS_LFS64_LDFLAGS _CS_LFS64_LDFLAGS _CS_LFS64_LIBS, #define _CS_LFS64_LIBS _CS_LFS64_LIBS _CS_LFS64_LINTFLAGS, #define _CS_LFS64_LINTFLAGS _CS_LFS64_LINTFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, #define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS, #define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LIBS, #define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LINTFLAGS, #define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS, #define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS, #define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LIBS, #define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, #define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_LP64_OFF64_CFLAGS, #define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS, #define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LIBS, #define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LINTFLAGS, #define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS, #define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, #define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LIBS, #define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, #define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS, #define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, #define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LIBS, #define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, #define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, #define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, #define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LIBS, #define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, #define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS, #define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS, #define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LIBS, #define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, #define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, #define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, #define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, #define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, #define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS, #define _CS_POSIX_V7_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, #define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LIBS, #define _CS_POSIX_V7_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, #define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, #define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, #define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LIBS, #define _CS_POSIX_V7_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, #define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS, #define _CS_POSIX_V7_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS, #define _CS_POSIX_V7_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LIBS, #define _CS_POSIX_V7_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, #define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS _CS_POSIX_V7_LP64_OFF64_LINTFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, #define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, #define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, #define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, #define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS _CS_V6_ENV, #define _CS_V6_ENV _CS_V6_ENV _CS_V7_ENV #define _CS_V7_ENV _CS_V7_ENV }; # 631 "../posix/unistd.h" 2 /* Get file-specific configuration information about PATH. */ extern long int pathconf (const char *__path, int __name) __THROW __nonnull ((1)); /* Get file-specific configuration about descriptor FD. */ extern long int fpathconf (int __fd, int __name) __THROW; /* Get the value of the system variable NAME. */ extern long int sysconf (int __name) __THROW; /* Get the value of the string-valued system variable NAME. */ extern size_t confstr (int __name, char *__buf, size_t __len) __THROW __fortified_attr_access (__write_only__, 2, 3); /* Get the process ID of the calling process. */ extern __pid_t getpid (void) __THROW; /* Get the process ID of the calling process's parent. */ extern __pid_t getppid (void) __THROW; /* Get the process group ID of the calling process. */ extern __pid_t getpgrp (void) __THROW; /* Get the process group ID of process PID. */ extern __pid_t __getpgid (__pid_t __pid) __THROW; extern __pid_t getpgid (__pid_t __pid) __THROW; /* Set the process group ID of the process matching PID to PGID. If PID is zero, the current process's process group ID is set. If PGID is zero, the process ID of the process is used. */ extern int setpgid (__pid_t __pid, __pid_t __pgid) __THROW; /* Both System V and BSD have `setpgrp' functions, but with different calling conventions. The BSD function is the same as POSIX.1 `setpgid' (above). The System V function takes no arguments and puts the calling process in its on group like `setpgid (0, 0)'. New programs should always use `setpgid' instead. GNU provides the POSIX.1 function. */ /* Set the process group ID of the calling process to its own PID. This is exactly the same as `setpgid (0, 0)'. */ extern int setpgrp (void) __THROW; /* Create a new session with the calling process as its leader. The process group IDs of the session and the calling process are set to the process ID of the calling process, which is returned. */ extern __pid_t setsid (void) __THROW; /* Return the session ID of the given process. */ extern __pid_t getsid (__pid_t __pid) __THROW; /* Get the real user ID of the calling process. */ extern __uid_t getuid (void) __THROW; /* Get the effective user ID of the calling process. */ extern __uid_t geteuid (void) __THROW; /* Get the real group ID of the calling process. */ extern __gid_t getgid (void) __THROW; /* Get the effective group ID of the calling process. */ extern __gid_t getegid (void) __THROW; /* If SIZE is zero, return the number of supplementary groups the calling process is in. Otherwise, fill in the group IDs of its supplementary groups in LIST and return the number written. */ extern int getgroups (int __size, __gid_t __list[]) __THROW __wur __fortified_attr_access (__write_only__, 2, 1); /* Return nonzero iff the calling process is in group GID. */ extern int group_member (__gid_t __gid) __THROW; /* Set the user ID of the calling process to UID. If the calling process is the super-user, set the real and effective user IDs, and the saved set-user-ID to UID; if not, the effective user ID is set to UID. */ extern int setuid (__uid_t __uid) __THROW __wur; /* Set the real user ID of the calling process to RUID, and the effective user ID of the calling process to EUID. */ extern int setreuid (__uid_t __ruid, __uid_t __euid) __THROW __wur; /* Set the effective user ID of the calling process to UID. */ extern int seteuid (__uid_t __uid) __THROW __wur; /* Set the group ID of the calling process to GID. If the calling process is the super-user, set the real and effective group IDs, and the saved set-group-ID to GID; if not, the effective group ID is set to GID. */ extern int setgid (__gid_t __gid) __THROW __wur; /* Set the real group ID of the calling process to RGID, and the effective group ID of the calling process to EGID. */ extern int setregid (__gid_t __rgid, __gid_t __egid) __THROW __wur; /* Set the effective group ID of the calling process to GID. */ extern int setegid (__gid_t __gid) __THROW __wur; /* Fetch the real user ID, effective user ID, and saved-set user ID, of the calling process. */ extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) __THROW; /* Fetch the real group ID, effective group ID, and saved-set group ID, of the calling process. */ extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) __THROW; /* Set the real user ID, effective user ID, and saved-set user ID, of the calling process to RUID, EUID, and SUID, respectively. */ extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) __THROW __wur; /* Set the real group ID, effective group ID, and saved-set group ID, of the calling process to RGID, EGID, and SGID, respectively. */ extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) __THROW __wur; /* Clone the calling process, creating an exact copy. Return -1 for errors, 0 to the new process, and the process ID of the new process to the old process. */ extern __pid_t fork (void) __THROWNL; /* Clone the calling process, but without copying the whole address space. The calling process is suspended until the new process exits or is replaced by a call to `execve'. Return -1 for errors, 0 to the new process, and the process ID of the new process to the old process. */ extern __pid_t vfork (void) __THROW; /* This is similar to fork, however it does not run the atfork handlers neither reinitialize any internal locks in multithread case. Different than fork, _Fork is async-signal-safe. */ extern __pid_t _Fork (void) __THROW; /* Return the pathname of the terminal FD is open on, or NULL on errors. The returned storage is good only until the next call to this function. */ extern char *ttyname (int __fd) __THROW; /* Store at most BUFLEN characters of the pathname of the terminal FD is open on in BUF. Return 0 on success, otherwise an error number. */ extern int ttyname_r (int __fd, char *__buf, size_t __buflen) __THROW __nonnull ((2)) __wur __fortified_attr_access (__write_only__, 2, 3); /* Return 1 if FD is a valid descriptor associated with a terminal, zero if not. */ extern int isatty (int __fd) __THROW; /* Return the index into the active-logins file (utmp) for the controlling terminal. */ extern int ttyslot (void) __THROW; /* Make a link to FROM named TO. */ extern int link (const char *__from, const char *__to) __THROW __nonnull ((1, 2)) __wur; /* Like link but relative paths in TO and FROM are interpreted relative to FROMFD and TOFD respectively. */ extern int linkat (int __fromfd, const char *__from, int __tofd, const char *__to, int __flags) __THROW __nonnull ((2, 4)) __wur; /* Make a symbolic link to FROM named TO. */ extern int symlink (const char *__from, const char *__to) __THROW __nonnull ((1, 2)) __wur; /* Read the contents of the symbolic link PATH into no more than LEN bytes of BUF. The contents are not null-terminated. Returns the number of characters read, or -1 for errors. */ extern ssize_t readlink (const char *__restrict __path, char *__restrict __buf, size_t __len) __THROW __nonnull ((1, 2)) __wur __fortified_attr_access (__write_only__, 2, 3); /* Like symlink but a relative path in TO is interpreted relative to TOFD. */ extern int symlinkat (const char *__from, int __tofd, const char *__to) __THROW __nonnull ((1, 3)) __wur; /* Like readlink but a relative PATH is interpreted relative to FD. */ extern ssize_t readlinkat (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) __THROW __nonnull ((2, 3)) __wur __fortified_attr_access (__write_only__, 3, 4); /* Remove the link NAME. */ extern int unlink (const char *__name) __THROW __nonnull ((1)); /* Remove the link NAME relative to FD. */ extern int unlinkat (int __fd, const char *__name, int __flag) __THROW __nonnull ((2)); /* Remove the directory PATH. */ extern int rmdir (const char *__path) __THROW __nonnull ((1)); /* Return the foreground process group ID of FD. */ extern __pid_t tcgetpgrp (int __fd) __THROW; /* Set the foreground process group ID of FD set PGRP_ID. */ extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __THROW; /* Return the login name of the user. This function is a possible cancellation point and therefore not marked with __THROW. */ extern char *getlogin (void); /* Return at most NAME_LEN characters of the login name of the user in NAME. If it cannot be determined or some other error occurred, return the error code. Otherwise return 0. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int getlogin_r (char *__name, size_t __name_len) __nonnull ((1)) __fortified_attr_access (__write_only__, 1, 2); /* Set the login name returned by `getlogin'. */ extern int setlogin (const char *__name) __THROW __nonnull ((1)); /* Get definitions and prototypes for functions to process the arguments in ARGV (ARGC of them, minus the program name) for options given in OPTS. */ # 1 "../include/bits/getopt_posix.h" 1 # 1 "../posix/bits/getopt_posix.h" 1 /* Declarations for getopt (POSIX compatibility shim). Copyright (C) 1989-2021 Free Software Foundation, Inc. Unlike the bulk of the getopt implementation, this file is NOT part of gnulib. 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 . */ #define _GETOPT_POSIX_H 1 # 1 "../include/bits/getopt_core.h" 1 # 1 "../posix/bits/getopt_core.h" 1 /* Declarations for getopt (basic, portable features only). Copyright (C) 1989-2021 Free Software Foundation, Inc. This file is part of the GNU C Library and is also part of gnulib. Patches to this file should be submitted to both projects. 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 . */ #define _GETOPT_CORE_H 1 /* This header should not be used directly; include getopt.h or unistd.h instead. Unlike most bits headers, it does not have a protective #error, because the guard macro for getopt.h in gnulib is not fixed. */ __BEGIN_DECLS /* For communication from 'getopt' to the caller. When 'getopt' finds an option that takes an argument, the argument value is returned here. Also, when 'ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to 'getopt'. On entry to 'getopt', zero means this is the first call; initialize. When 'getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, 'optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message 'getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; /* Get definitions and prototypes for functions to process the arguments in ARGV (ARGC of them, minus the program name) for options given in OPTS. Return the option character from OPTS just read. Return -1 when there are no more options. For unrecognized options, or options missing arguments, 'optopt' is set to the option letter, and '?' is returned. The OPTS string is a list of characters which are recognized option letters, optionally followed by colons, specifying that that letter takes an argument, to be placed in 'optarg'. If a letter in OPTS is followed by two colons, its argument is optional. This behavior is specific to the GNU 'getopt'. The argument '--' causes premature termination of argument scanning, explicitly telling 'getopt' that there are no more options. If OPTS begins with '-', then non-option arguments are treated as arguments to the option '\1'. This behavior is specific to the GNU 'getopt'. If OPTS begins with '+', or POSIXLY_CORRECT is set in the environment, then do not permute arguments. For standards compliance, the 'argv' argument has the type char *const *, but this is inaccurate; if argument permutation is enabled, the argv array (not the strings it points to) must be writable. */ extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) __THROW __nonnull ((2, 3)); __END_DECLS # 2 "../include/bits/getopt_core.h" 2 # 28 "../posix/bits/getopt_posix.h" 2 __BEGIN_DECLS # 48 "../posix/bits/getopt_posix.h" __END_DECLS # 2 "../include/bits/getopt_posix.h" 2 # 904 "../posix/unistd.h" 2 /* Put the name of the current host in no more than LEN bytes of NAME. The result is null-terminated if LEN is large enough for the full name and the terminator. */ extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1)) __fortified_attr_access (__write_only__, 1, 2); /* Set the name of the current host to NAME, which is LEN bytes long. This call is restricted to the super-user. */ extern int sethostname (const char *__name, size_t __len) __THROW __nonnull ((1)) __wur __attr_access ((__read_only__, 1, 2)); /* Set the current machine's Internet number to ID. This call is restricted to the super-user. */ extern int sethostid (long int __id) __THROW __wur; /* Get and set the NIS (aka YP) domain name, if any. Called just like `gethostname' and `sethostname'. The NIS domain name is usually the empty string when not using NIS. */ extern int getdomainname (char *__name, size_t __len) __THROW __nonnull ((1)) __wur __fortified_attr_access (__write_only__, 1, 2); extern int setdomainname (const char *__name, size_t __len) __THROW __nonnull ((1)) __wur __attr_access ((__read_only__, 1, 2)); /* Revoke access permissions to all processes currently communicating with the control terminal, and then send a SIGHUP signal to the process group of the control terminal. */ extern int vhangup (void) __THROW; /* Revoke the access of all descriptors currently open on FILE. */ extern int revoke (const char *__file) __THROW __nonnull ((1)) __wur; /* Enable statistical profiling, writing samples of the PC into at most SIZE bytes of SAMPLE_BUFFER; every processor clock tick while profiling is enabled, the system examines the user PC and increments SAMPLE_BUFFER[((PC - OFFSET) / 2) * SCALE / 65536]. If SCALE is zero, disable profiling. Returns zero on success, -1 on error. */ extern int profil (unsigned short int *__sample_buffer, size_t __size, size_t __offset, unsigned int __scale) __THROW __nonnull ((1)); /* Turn accounting on if NAME is an existing file. The system will then write a record for each process as it terminates, to this file. If NAME is NULL, turn accounting off. This call is restricted to the super-user. */ extern int acct (const char *__name) __THROW; /* Successive calls return the shells listed in `/etc/shells'. */ extern char *getusershell (void) __THROW; extern void endusershell (void) __THROW; /* Discard cached info. */ extern void setusershell (void) __THROW; /* Rewind and re-read the file. */ /* Put the program in the background, and dissociate from the controlling terminal. If NOCHDIR is zero, do `chdir ("/")'. If NOCLOSE is zero, redirects stdin, stdout, and stderr to /dev/null. */ extern int daemon (int __nochdir, int __noclose) __THROW __wur; /* Make PATH be the root directory (the starting point for absolute paths). This call is restricted to the super-user. */ extern int chroot (const char *__path) __THROW __nonnull ((1)) __wur; /* Prompt with PROMPT and read a string from the terminal without echoing. Uses /dev/tty if possible; otherwise stderr and stdin. */ extern char *getpass (const char *__prompt) __nonnull ((1)); /* Make all changes done to FD actually appear on disk. This function is a cancellation point and therefore not marked with __THROW. */ extern int fsync (int __fd); /* Make all changes done to all files on the file system associated with FD actually appear on disk. */ extern int syncfs (int __fd) __THROW; /* Return identifier for the current host. */ extern long int gethostid (void); /* Make all changes done to all files actually appear on disk. */ extern void sync (void) __THROW; /* Return the number of bytes in a page. This is the system's page size, which is not necessarily the same as the hardware page size. */ extern int getpagesize (void) __THROW __attribute__ ((__const__)); /* Return the maximum number of file descriptors the current process could possibly have. */ extern int getdtablesize (void) __THROW; /* Truncate FILE to LENGTH bytes. */ extern int truncate (const char *__file, __off_t __length) __THROW __nonnull ((1)) __wur; # 1037 "../posix/unistd.h" extern int truncate64 (const char *__file, __off64_t __length) __THROW __nonnull ((1)) __wur; /* Truncate the file FD is open on to LENGTH bytes. */ extern int ftruncate (int __fd, __off_t __length) __THROW __wur; # 1058 "../posix/unistd.h" extern int ftruncate64 (int __fd, __off64_t __length) __THROW __wur; /* Set the end of accessible data space (aka "the break") to ADDR. Returns zero on success and -1 for errors (with errno set). */ extern int brk (void *__addr) __THROW __wur; /* Increase or decrease the end of accessible data space by DELTA bytes. If successful, returns the address the previous end of data space (i.e. the beginning of the new space, if DELTA > 0); returns (void *) -1 for errors (with errno set). */ extern void *sbrk (intptr_t __delta) __THROW; /* Invoke `system call' number SYSNO, passing it the remaining arguments. This is completely system-dependent, and not often useful. In Unix, `syscall' sets `errno' for all errors and most calls return -1 for errors; in many systems you cannot pass arguments or get return values for all system calls (`pipe', `fork', and `getppid' typically among them). In Mach, all system calls take normal arguments and always return an error code (zero for success). */ extern long int syscall (long int __sysno, ...) __THROW; /* NOTE: These declarations also appear in ; be sure to keep both files consistent. Some systems have them there and some here, and some software depends on the macros being defined without including both. */ /* `lockf' is a simpler interface to the locking facilities of `fcntl'. LEN is always relative to the current file position. The CMD argument is one of the following. This function is a cancellation point and therefore not marked with __THROW. */ #define F_ULOCK 0 #define F_LOCK 1 #define F_TLOCK 2 #define F_TEST 3 extern int lockf (int __fd, int __cmd, __off_t __len) __wur; # 1123 "../posix/unistd.h" extern int lockf64 (int __fd, int __cmd, __off64_t __len) __wur; /* Evaluate EXPRESSION, and repeat as long as it returns -1 with `errno' set to EINTR. */ #define TEMP_FAILURE_RETRY(expression) (__extension__ ({ long int __result; do __result = (long int) (expression); while (__result == -1L && errno == EINTR); __result; })) /* Copy LENGTH bytes from INFD to OUTFD. */ ssize_t copy_file_range (int __infd, __off64_t *__pinoff, int __outfd, __off64_t *__poutoff, size_t __length, unsigned int __flags); /* Synchronize at least the data part of a file with the underlying media. */ extern int fdatasync (int __fildes); /* One-way hash PHRASE, returning a string suitable for storage in the user database. SALT selects the one-way function to use, and ensures that no two users' hashes are the same, even if they use the same passphrase. The return value points to static storage which will be overwritten by the next call to crypt. */ extern char *crypt (const char *__key, const char *__salt) __THROW __nonnull ((1, 2)); /* Swab pairs bytes in the first N bytes of the area pointed to by FROM and copy the result to TO. The value of TO must not be in the range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM is without partner. */ extern void swab (const void *__restrict __from, void *__restrict __to, ssize_t __n) __THROW __nonnull ((1, 2)) __attr_access ((__read_only__, 1, 3)) __attr_access ((__write_only__, 2, 3)); /* Prior to Issue 6, the Single Unix Specification required these prototypes to appear in this header. They are also found in . */ /* Unix98 requires this function to be declared here. In other standards it is in . */ /* Write LENGTH bytes of randomness starting at BUFFER. Return 0 on success or -1 on error. */ int getentropy (void *__buffer, size_t __length) __wur __attr_access ((__write_only__, 1, 2)); /* Define some macros helping to catch buffer overflows. */ /* System-specific extensions. */ # 1 "../include/bits/unistd_ext.h" 1 # 1 "../sysdeps/unix/sysv/linux/bits/unistd_ext.h" 1 /* System-specific extensions of , Linux version. Copyright (C) 2019-2021 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 . */ /* Return the kernel thread ID (TID) of the current thread. The returned value is not subject to caching. Most Linux system calls accept a TID in place of a PID. Using the TID to change properties of a thread that has been created using pthread_create can lead to undefined behavior (comparable to manipulating file descriptors directly that have not been created explicitly). Note that a TID uniquely identifies a thread only while this thread is running; a TID can be reused once a thread has exited, even if the thread is not detached and has not been joined. */ extern __pid_t gettid (void) __THROW; # 1 "/usr/include/linux/close_range.h" 1 3 4 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #define _LINUX_CLOSE_RANGE_H /* Unshare the file descriptor table before closing file descriptors. */ #define CLOSE_RANGE_UNSHARE (1U << 1) /* Set the FD_CLOEXEC bit instead of closing the file descriptor. */ #define CLOSE_RANGE_CLOEXEC (1U << 2) # 39 "../sysdeps/unix/sysv/linux/bits/unistd_ext.h" 2 /* Unshare the file descriptor table before closing file descriptors. */ /* Set the FD_CLOEXEC bit instead of closing the file descriptor. */ /* Close all file descriptors in the range FD up to MAX_FD. The flag FLAGS are define by the CLOSE_RANGE prefix. This function behaves like close on the range, but in a fail-safe where it will either fail and not close any file descriptor or close all of them. Gaps where the file descriptor is invalid are ignored. Returns 0 on successor or -1 for failure (and sets errno accordingly). */ extern int close_range (unsigned int __fd, unsigned int __max_fd, int __flags) __THROW; # 2 "../include/bits/unistd_ext.h" 2 extern int __close_range (unsigned int lowfd, unsigned int highfd, int flags); libc_hidden_proto (__close_range); # 1209 "../posix/unistd.h" 2 __END_DECLS # 3 "../include/unistd.h" 2 libc_hidden_proto (_exit, __noreturn__) rtld_hidden_proto (_exit, __noreturn__) libc_hidden_proto (alarm) extern size_t __confstr (int name, char *buf, size_t len); libc_hidden_proto (__confstr) libc_hidden_proto (confstr) libc_hidden_proto (execl) libc_hidden_proto (execle) libc_hidden_proto (execlp) libc_hidden_proto (execvp) libc_hidden_proto (getpid) libc_hidden_proto (getsid) libc_hidden_proto (getdomainname) extern __typeof (getlogin_r) __getlogin_r __nonnull ((1)); libc_hidden_proto (__getlogin_r) libc_hidden_proto (getlogin_r) libc_hidden_proto (seteuid) libc_hidden_proto (setegid) libc_hidden_proto (tcgetpgrp) libc_hidden_proto (readlinkat) libc_hidden_proto (fsync) libc_hidden_proto (fdatasync) /* Now define the internal interfaces. */ extern int __access (const char *__name, int __type); libc_hidden_proto (__access) extern int __euidaccess (const char *__name, int __type); extern int __faccessat (int __fd, const char *__file, int __type, int __flag); extern int __faccessat_noerrno (int __fd, const char *__file, int __type, int __flag); extern __off64_t __lseek64 (int __fd, __off64_t __offset, int __whence); extern __off_t __lseek (int __fd, __off_t __offset, int __whence); libc_hidden_proto (__lseek) extern __off_t __libc_lseek (int __fd, __off_t __offset, int __whence); extern __off64_t __libc_lseek64 (int __fd, __off64_t __offset, int __whence); extern ssize_t __pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset); libc_hidden_proto (__pread); extern ssize_t __libc_pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset); extern ssize_t __pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset); libc_hidden_proto (__pread64); extern ssize_t __libc_pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset); extern ssize_t __pwrite (int __fd, const void *__buf, size_t __n, __off_t __offset); libc_hidden_proto (__pwrite) extern ssize_t __libc_pwrite (int __fd, const void *__buf, size_t __n, __off_t __offset); extern ssize_t __pwrite64 (int __fd, const void *__buf, size_t __n, __off64_t __offset); libc_hidden_proto (__pwrite64) extern ssize_t __libc_pwrite64 (int __fd, const void *__buf, size_t __n, __off64_t __offset); extern ssize_t __libc_read (int __fd, void *__buf, size_t __n); libc_hidden_proto (__libc_read) libc_hidden_proto (read) extern ssize_t __libc_write (int __fd, const void *__buf, size_t __n); libc_hidden_proto (__libc_write) libc_hidden_proto (write) extern int __pipe (int __pipedes[2]); libc_hidden_proto (__pipe) extern int __pipe2 (int __pipedes[2], int __flags) attribute_hidden; extern unsigned int __sleep (unsigned int __seconds) attribute_hidden; extern int __chown (const char *__file, __uid_t __owner, __gid_t __group); libc_hidden_proto (__chown) extern int __fchown (int __fd, __uid_t __owner, __gid_t __group); extern int __lchown (const char *__file, __uid_t __owner, __gid_t __group); extern int __chdir (const char *__path) attribute_hidden; extern int __fchdir (int __fd) attribute_hidden; extern char *__getcwd (char *__buf, size_t __size); libc_hidden_proto (__getcwd) extern int __rmdir (const char *__path) attribute_hidden; extern int __execvpe (const char *file, char *const argv[], char *const envp[]) attribute_hidden; extern int __execvpex (const char *file, char *const argv[], char *const envp[]) attribute_hidden; /* Get the canonical absolute name of the named directory, and put it in SIZE bytes of BUF. Returns NULL if the directory couldn't be determined or SIZE was too small. If successful, returns BUF. In GNU, if BUF is NULL, an array is allocated with `malloc'; the array is SIZE bytes long, unless SIZE <= 0, in which case it is as big as necessary. */ char *__canonicalize_directory_name_internal (const char *__thisdir, char *__buf, size_t __size) attribute_hidden; extern int __dup (int __fd); libc_hidden_proto (__dup) extern int __dup2 (int __fd, int __fd2); libc_hidden_proto (__dup2) extern int __dup3 (int __fd, int __fd2, int flags); libc_hidden_proto (__dup3) extern int __execve (const char *__path, char *const __argv[], char *const __envp[]) attribute_hidden; extern int __execveat (int dirfd, const char *__path, char *const __argv[], char *const __envp[], int flags) attribute_hidden; extern long int __pathconf (const char *__path, int __name); extern long int __fpathconf (int __fd, int __name); extern long int __sysconf (int __name); libc_hidden_proto (__sysconf) extern __pid_t __getpid (void); libc_hidden_proto (__getpid) extern __pid_t __getppid (void); extern __pid_t __setsid (void) attribute_hidden; extern __uid_t __getuid (void) attribute_hidden; extern __uid_t __geteuid (void) attribute_hidden; extern __gid_t __getgid (void) attribute_hidden; extern __gid_t __getegid (void) attribute_hidden; extern int __getgroups (int __size, __gid_t __list[]) attribute_hidden; libc_hidden_proto (__getpgid) extern int __group_member (__gid_t __gid) attribute_hidden; extern int __setuid (__uid_t __uid); extern int __setreuid (__uid_t __ruid, __uid_t __euid); extern int __setgid (__gid_t __gid); extern int __setpgid (__pid_t __pid, __pid_t __pgid); libc_hidden_proto (__setpgid) extern int __setregid (__gid_t __rgid, __gid_t __egid); extern int __getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid); extern int __getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid); extern int __setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid); extern int __setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid); libc_hidden_proto (__getresuid) libc_hidden_proto (__getresgid) libc_hidden_proto (__setresuid) libc_hidden_proto (__setresgid) extern __pid_t __vfork (void); libc_hidden_proto (__vfork) extern int __ttyname_r (int __fd, char *__buf, size_t __buflen); libc_hidden_proto (__ttyname_r) extern __pid_t _Fork (void); libc_hidden_proto (_Fork); extern int __isatty (int __fd) attribute_hidden; extern int __link (const char *__from, const char *__to); extern int __symlink (const char *__from, const char *__to); extern ssize_t __readlink (const char *__path, char *__buf, size_t __len) attribute_hidden; extern int __unlink (const char *__name) attribute_hidden; extern int __gethostname (char *__name, size_t __len) attribute_hidden; extern int __revoke (const char *__file); extern int __profil (unsigned short int *__sample_buffer, size_t __size, size_t __offset, unsigned int __scale) attribute_hidden; extern int __getdtablesize (void) attribute_hidden; extern int __brk (void *__addr) attribute_hidden; extern int __close (int __fd); libc_hidden_proto (__close) extern int __libc_close (int __fd); extern _Bool __closefrom_fallback (int __lowfd, _Bool) attribute_hidden; extern ssize_t __read (int __fd, void *__buf, size_t __nbytes); libc_hidden_proto (__read) extern ssize_t __write (int __fd, const void *__buf, size_t __n); libc_hidden_proto (__write) extern __pid_t __fork (void); libc_hidden_proto (__fork) extern int __getpagesize (void) __attribute__ ((__const__)); libc_hidden_proto (__getpagesize) extern int __ftruncate (int __fd, __off_t __length) attribute_hidden; extern int __ftruncate64 (int __fd, __off64_t __length) attribute_hidden; extern int __truncate (const char *path, __off_t __length); extern void *__sbrk (intptr_t __delta); libc_hidden_proto (__sbrk) /* This variable is set nonzero at startup if the process's effective IDs differ from its real IDs, or it is otherwise indicated that extra security should be used. When this is set the dynamic linker and some functions contained in the C library ignore various environment variables that normally affect them. */ extern int __libc_enable_secure attribute_relro; extern int __libc_enable_secure_decided; rtld_hidden_proto (__libc_enable_secure) /* Various internal function. */ extern void __libc_check_standard_fds (void) attribute_hidden; /* Internal name for fork function. */ extern __pid_t __libc_fork (void); /* Suspend the process until a signal arrives. This always returns -1 and sets `errno' to EINTR. */ extern int __libc_pause (void); extern int __getlogin_r_loginuid (char *name, size_t namesize) attribute_hidden; # 24 "../sysdeps/s390/s390-64/__longjmp.c" 2 # 1 "../include/stap-probe.h" 1 /* Macros for defining Systemtap static probe points. Copyright (C) 2012-2021 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 . */ #define _STAP_PROBE_H 1 # 1 "../sysdeps/generic/stap-probe-machine.h" 1 /* Macros for customizing Systemtap . Generic version. Copyright (C) 2019-2021 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 . */ /* By default, there are no customizations. */ # 25 "../include/stap-probe.h" 2 # 1 "/usr/include/sys/sdt.h" 1 3 4 /* - Systemtap static probe definition macros. This file is dedicated to the public domain, pursuant to CC0 (https://creativecommons.org/publicdomain/zero/1.0/) */ #define _SYS_SDT_H 1 /* This file defines a family of macros STAP_PROBEn(op1, ..., opn) that emit a nop into the instruction stream, and some data into an auxiliary note section. The data in the note section describes the operands, in terms of size and location. Each location is encoded as assembler operand string. Consumer tools such as gdb or systemtap insert breakpoints on top of the nop, and decode the location operand-strings, like an assembler, to find the values being passed. The operand strings are selected by the compiler for each operand. They are constrained by gcc inline-assembler codes. The default is: #define STAP_SDT_ARG_CONSTRAINT nor This is a good default if the operands tend to be integral and moderate in number (smaller than number of registers). In other cases, the compiler may report "'asm' requires impossible reload" or similar. In this case, consider simplifying the macro call (fewer and simpler operands), reduce optimization, or override the default constraints string via: #define STAP_SDT_ARG_CONSTRAINT g #include See also: https://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation https://gcc.gnu.org/onlinedocs/gcc/Constraints.html */ # 68 "/usr/include/sys/sdt.h" 3 4 #define _SDT_NOTE_SEMAPHORE_USE(provider,name) #define _SDT_PROBE(provider,name,n,arglist) do { _SDT_NOTE_SEMAPHORE_USE(provider, name); __asm__ __volatile__ (_SDT_ASM_BODY(provider, name, _SDT_ASM_ARGS, (n)) :: _SDT_ASM_OPERANDS_ ##n arglist); __asm__ __volatile__ (_SDT_ASM_BASE); } while (0) #define _SDT_S(x) #x #define _SDT_ASM_1(x) _SDT_S(x) "\n" #define _SDT_ASM_2(a,b) _SDT_S(a) "," _SDT_S(b) "\n" #define _SDT_ASM_3(a,b,c) _SDT_S(a) "," _SDT_S(b) "," _SDT_S(c) "\n" #define _SDT_ASM_5(a,b,c,d,e) _SDT_S(a) "," _SDT_S(b) "," _SDT_S(c) "," _SDT_S(d) "," _SDT_S(e) "\n" #define _SDT_ASM_ARGS(n) _SDT_ASM_TEMPLATE_ ##n #define _SDT_ASM_STRING_1(x) _SDT_ASM_1(.asciz #x) #define _SDT_ASM_SUBSTR_1(x) _SDT_ASM_1(.ascii #x) #define _SDT_ARGFMT(no) _SDT_ASM_1(_SDT_SIGN %n[_SDT_S ##no]) _SDT_ASM_1(_SDT_SIZE %n[_SDT_S ##no]) _SDT_ASM_1(_SDT_TYPE %n[_SDT_S ##no]) _SDT_ASM_SUBSTR(_SDT_ARGTMPL(_SDT_A ##no)) #define STAP_SDT_ARG_CONSTRAINT norf #define _SDT_STRINGIFY(x) #x #define _SDT_ARG_CONSTRAINT_STRING(x) _SDT_STRINGIFY(x) /* _SDT_S encodes the size and type as 0xSSTT which is decoded by the assembler macros _SDT_SIZE and _SDT_TYPE */ #define _SDT_ARG(n,x) [_SDT_S ##n] "n" ((_SDT_ARGSIGNED (x) ? (int)-1 : 1) * (-(((int) _SDT_ARGSIZE (x)) << 8) + (-(0x7f & __builtin_classify_type (x))))), [_SDT_A ##n] _SDT_ARG_CONSTRAINT_STRING (STAP_SDT_ARG_CONSTRAINT) (_SDT_ARGVAL (x)) #define _SDT_ASM_STRING(x) _SDT_ASM_STRING_1(x) #define _SDT_ASM_SUBSTR(x) _SDT_ASM_SUBSTR_1(x) #define _SDT_ARGARRAY(x) (__builtin_classify_type (x) == 14 || __builtin_classify_type (x) == 5) # 187 "/usr/include/sys/sdt.h" 3 4 __extension__ extern unsigned long long __sdt_unsp; #define _SDT_ARGINTTYPE(x) __typeof (__builtin_choose_expr (((__builtin_classify_type (x) + 3) & -4) == 4, (x), 0U)) #define _SDT_ARGSIGNED(x) (!__extension__ (__builtin_constant_p ((((unsigned long long) (_SDT_ARGINTTYPE (x)) __sdt_unsp) & ((unsigned long long)1 << (sizeof (unsigned long long) * __CHAR_BIT__ - 1))) == 0) || (_SDT_ARGINTTYPE (x)) -1 > (_SDT_ARGINTTYPE (x)) 0)) #define _SDT_ARGSIZE(x) (_SDT_ARGARRAY (x) ? sizeof (void *) : sizeof (x)) #define _SDT_ARGVAL(x) (x) #define _SDT_ARGTMPL(id) %[id] /* NB: gdb PR24541 highlighted an unspecified corner of the sdt.h operand note format. The named register may be a longer or shorter (!) alias for the storage where the value in question is found. For example, on i386, 64-bit value may be put in register pairs, and the register name stored would identify just one of them. Previously, gcc was asked to emit the %w[id] (16-bit alias of some registers holding operands), even when a wider 32-bit value was used. Bottom line: the byte-width given before the @ sign governs. If there is a mismatch between that width and that of the named register, then a sys/sdt.h note consumer may need to employ architecture-specific heuristics to figure out where the compiler has actually put the complete value. */ #define _SDT_ASM_ADDR .8byte /* The ia64 and s390 nop instructions take an argument. */ #define _SDT_NOP nop 0 #define _SDT_NOTE_NAME "stapsdt" #define _SDT_NOTE_TYPE 3 /* If the assembler supports the necessary feature, then we can play nice with code in COMDAT sections, which comes up in C++ code. Without that assembler support, some combinations of probe placements in certain kinds of C++ code may produce link-time errors. */ # 1 "/usr/include/sys/sdt-config.h" 1 3 4 /* includes/sys/sdt-config.h. Generated from sdt-config.h.in by configure. This file just defines _SDT_ASM_SECTION_AUTOGROUP_SUPPORT to 0 or 1 to indicate whether the assembler supports "?" in .pushsection directives. */ #define _SDT_ASM_SECTION_AUTOGROUP_SUPPORT 1 # 249 "/usr/include/sys/sdt.h" 2 3 4 #define _SDT_ASM_AUTOGROUP "?" #define _SDT_DEF_MACROS _SDT_ASM_1(.altmacro) _SDT_ASM_1(.macro _SDT_SIGN x) _SDT_ASM_3(.pushsection .note.stapsdt,"","note") _SDT_ASM_1(.iflt \\x) _SDT_ASM_1(.ascii "-") _SDT_ASM_1(.endif) _SDT_ASM_1(.popsection) _SDT_ASM_1(.endm) _SDT_ASM_1(.macro _SDT_SIZE_ x) _SDT_ASM_3(.pushsection .note.stapsdt,"","note") _SDT_ASM_1(.ascii "\x") _SDT_ASM_1(.popsection) _SDT_ASM_1(.endm) _SDT_ASM_1(.macro _SDT_SIZE x) _SDT_ASM_1(_SDT_SIZE_ %%((-(-\\x*((-\\x>0)-(-\\x<0))))>>8)) _SDT_ASM_1(.endm) _SDT_ASM_1(.macro _SDT_TYPE_ x) _SDT_ASM_3(.pushsection .note.stapsdt,"","note") _SDT_ASM_2(.ifc 8,\\x) _SDT_ASM_1(.ascii "f") _SDT_ASM_1(.endif) _SDT_ASM_1(.ascii "@") _SDT_ASM_1(.popsection) _SDT_ASM_1(.endm) _SDT_ASM_1(.macro _SDT_TYPE x) _SDT_ASM_1(_SDT_TYPE_ %%((\\x)&(0xff))) _SDT_ASM_1(.endm) # 283 "/usr/include/sys/sdt.h" 3 4 #define _SDT_UNDEF_MACROS _SDT_ASM_1(.purgem _SDT_SIGN) _SDT_ASM_1(.purgem _SDT_SIZE_) _SDT_ASM_1(.purgem _SDT_SIZE) _SDT_ASM_1(.purgem _SDT_TYPE_) _SDT_ASM_1(.purgem _SDT_TYPE) #define _SDT_ASM_BODY(provider,name,pack_args,args) _SDT_DEF_MACROS _SDT_ASM_1(990: _SDT_NOP) _SDT_ASM_3( .pushsection .note.stapsdt,_SDT_ASM_AUTOGROUP,"note") _SDT_ASM_1( .balign 4) _SDT_ASM_3( .4byte 992f-991f, 994f-993f, _SDT_NOTE_TYPE) _SDT_ASM_1(991: .asciz _SDT_NOTE_NAME) _SDT_ASM_1(992: .balign 4) _SDT_ASM_1(993: _SDT_ASM_ADDR 990b) _SDT_ASM_1( _SDT_ASM_ADDR _.stapsdt.base) _SDT_SEMAPHORE(provider,name) _SDT_ASM_STRING(provider) _SDT_ASM_STRING(name) pack_args args _SDT_ASM_SUBSTR(\x00) _SDT_UNDEF_MACROS _SDT_ASM_1(994: .balign 4) _SDT_ASM_1( .popsection) # 309 "/usr/include/sys/sdt.h" 3 4 #define _SDT_ASM_BASE _SDT_ASM_1(.ifndef _.stapsdt.base) _SDT_ASM_5( .pushsection .stapsdt.base,"aG","progbits", .stapsdt.base,comdat) _SDT_ASM_1( .weak _.stapsdt.base) _SDT_ASM_1( .hidden _.stapsdt.base) _SDT_ASM_1( _.stapsdt.base: .space 1) _SDT_ASM_2( .size _.stapsdt.base, 1) _SDT_ASM_1( .popsection) _SDT_ASM_1(.endif) # 320 "/usr/include/sys/sdt.h" 3 4 #define _SDT_SEMAPHORE(p,n) _SDT_ASM_1( _SDT_ASM_ADDR 0) #define _SDT_ASM_BLANK _SDT_ASM_SUBSTR(\x20) #define _SDT_ASM_TEMPLATE_0 #define _SDT_ASM_TEMPLATE_1 _SDT_ARGFMT(1) #define _SDT_ASM_TEMPLATE_2 _SDT_ASM_TEMPLATE_1 _SDT_ASM_BLANK _SDT_ARGFMT(2) #define _SDT_ASM_TEMPLATE_3 _SDT_ASM_TEMPLATE_2 _SDT_ASM_BLANK _SDT_ARGFMT(3) #define _SDT_ASM_TEMPLATE_4 _SDT_ASM_TEMPLATE_3 _SDT_ASM_BLANK _SDT_ARGFMT(4) #define _SDT_ASM_TEMPLATE_5 _SDT_ASM_TEMPLATE_4 _SDT_ASM_BLANK _SDT_ARGFMT(5) #define _SDT_ASM_TEMPLATE_6 _SDT_ASM_TEMPLATE_5 _SDT_ASM_BLANK _SDT_ARGFMT(6) #define _SDT_ASM_TEMPLATE_7 _SDT_ASM_TEMPLATE_6 _SDT_ASM_BLANK _SDT_ARGFMT(7) #define _SDT_ASM_TEMPLATE_8 _SDT_ASM_TEMPLATE_7 _SDT_ASM_BLANK _SDT_ARGFMT(8) #define _SDT_ASM_TEMPLATE_9 _SDT_ASM_TEMPLATE_8 _SDT_ASM_BLANK _SDT_ARGFMT(9) #define _SDT_ASM_TEMPLATE_10 _SDT_ASM_TEMPLATE_9 _SDT_ASM_BLANK _SDT_ARGFMT(10) #define _SDT_ASM_TEMPLATE_11 _SDT_ASM_TEMPLATE_10 _SDT_ASM_BLANK _SDT_ARGFMT(11) #define _SDT_ASM_TEMPLATE_12 _SDT_ASM_TEMPLATE_11 _SDT_ASM_BLANK _SDT_ARGFMT(12) #define _SDT_ASM_OPERANDS_0() [__sdt_dummy] "g" (0) #define _SDT_ASM_OPERANDS_1(arg1) _SDT_ARG(1, arg1) #define _SDT_ASM_OPERANDS_2(arg1,arg2) _SDT_ASM_OPERANDS_1(arg1), _SDT_ARG(2, arg2) #define _SDT_ASM_OPERANDS_3(arg1,arg2,arg3) _SDT_ASM_OPERANDS_2(arg1, arg2), _SDT_ARG(3, arg3) #define _SDT_ASM_OPERANDS_4(arg1,arg2,arg3,arg4) _SDT_ASM_OPERANDS_3(arg1, arg2, arg3), _SDT_ARG(4, arg4) #define _SDT_ASM_OPERANDS_5(arg1,arg2,arg3,arg4,arg5) _SDT_ASM_OPERANDS_4(arg1, arg2, arg3, arg4), _SDT_ARG(5, arg5) #define _SDT_ASM_OPERANDS_6(arg1,arg2,arg3,arg4,arg5,arg6) _SDT_ASM_OPERANDS_5(arg1, arg2, arg3, arg4, arg5), _SDT_ARG(6, arg6) #define _SDT_ASM_OPERANDS_7(arg1,arg2,arg3,arg4,arg5,arg6,arg7) _SDT_ASM_OPERANDS_6(arg1, arg2, arg3, arg4, arg5, arg6), _SDT_ARG(7, arg7) #define _SDT_ASM_OPERANDS_8(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) _SDT_ASM_OPERANDS_7(arg1, arg2, arg3, arg4, arg5, arg6, arg7), _SDT_ARG(8, arg8) #define _SDT_ASM_OPERANDS_9(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) _SDT_ASM_OPERANDS_8(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8), _SDT_ARG(9, arg9) #define _SDT_ASM_OPERANDS_10(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) _SDT_ASM_OPERANDS_9(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9), _SDT_ARG(10, arg10) #define _SDT_ASM_OPERANDS_11(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) _SDT_ASM_OPERANDS_10(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10), _SDT_ARG(11, arg11) #define _SDT_ASM_OPERANDS_12(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) _SDT_ASM_OPERANDS_11(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11), _SDT_ARG(12, arg12) /* These macros can be used in C, C++, or assembly code. In assembly code the arguments should use normal assembly operand syntax. */ #define STAP_PROBE(provider,name) _SDT_PROBE(provider, name, 0, ()) #define STAP_PROBE1(provider,name,arg1) _SDT_PROBE(provider, name, 1, (arg1)) #define STAP_PROBE2(provider,name,arg1,arg2) _SDT_PROBE(provider, name, 2, (arg1, arg2)) #define STAP_PROBE3(provider,name,arg1,arg2,arg3) _SDT_PROBE(provider, name, 3, (arg1, arg2, arg3)) #define STAP_PROBE4(provider,name,arg1,arg2,arg3,arg4) _SDT_PROBE(provider, name, 4, (arg1, arg2, arg3, arg4)) #define STAP_PROBE5(provider,name,arg1,arg2,arg3,arg4,arg5) _SDT_PROBE(provider, name, 5, (arg1, arg2, arg3, arg4, arg5)) #define STAP_PROBE6(provider,name,arg1,arg2,arg3,arg4,arg5,arg6) _SDT_PROBE(provider, name, 6, (arg1, arg2, arg3, arg4, arg5, arg6)) #define STAP_PROBE7(provider,name,arg1,arg2,arg3,arg4,arg5,arg6,arg7) _SDT_PROBE(provider, name, 7, (arg1, arg2, arg3, arg4, arg5, arg6, arg7)) #define STAP_PROBE8(provider,name,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) _SDT_PROBE(provider, name, 8, (arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)) #define STAP_PROBE9(provider,name,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) _SDT_PROBE(provider, name, 9, (arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)) #define STAP_PROBE10(provider,name,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) _SDT_PROBE(provider, name, 10, (arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)) #define STAP_PROBE11(provider,name,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) _SDT_PROBE(provider, name, 11, (arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11)) #define STAP_PROBE12(provider,name,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) _SDT_PROBE(provider, name, 12, (arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12)) /* This STAP_PROBEV macro can be used in variadic scenarios, where the number of probe arguments is not known until compile time. Since variadic macro support may vary with compiler options, you must pre-#define SDT_USE_VARIADIC to enable this type of probe. The trick to count __VA_ARGS__ was inspired by this post by Laurent Deniau : http://groups.google.com/group/comp.std.c/msg/346fc464319b1ee5 Note that our _SDT_NARG is called with an extra 0 arg that's not counted, so we don't have to worry about the behavior of macros called without any arguments. */ # 426 "/usr/include/sys/sdt.h" 3 4 /* These macros are for use in asm statements. You must compile with -std=gnu99 or -std=c99 to use the STAP_PROBE_ASM macro. The STAP_PROBE_ASM macro generates a quoted string to be used in the template portion of the asm statement, concatenated with strings that contain the actual assembly code around the probe site. For example: asm ("before\n" STAP_PROBE_ASM(provider, fooprobe, %eax 4(%esi)) "after"); emits the assembly code for "before\nafter", with a probe in between. The probe arguments are the %eax register, and the value of the memory word located 4 bytes past the address in the %esi register. Note that because this is a simple asm, not a GNU C extended asm statement, these % characters do not need to be doubled to generate literal %reg names. In a GNU C extended asm statement, the probe arguments can be specified using the macro STAP_PROBE_ASM_TEMPLATE(n) for n arguments. The paired macro STAP_PROBE_ASM_OPERANDS gives the C values of these probe arguments, and appears in the input operand list of the asm statement. For example: asm ("someinsn %0,%1\n" // %0 is output operand, %1 is input operand STAP_PROBE_ASM(provider, fooprobe, STAP_PROBE_ASM_TEMPLATE(3)) "otherinsn %[namedarg]" : "r" (outvar) : "g" (some_value), [namedarg] "i" (1234), STAP_PROBE_ASM_OPERANDS(3, some_value, some_ptr->field, 1234)); This is just like writing: STAP_PROBE3(provider, fooprobe, some_value, some_ptr->field, 1234)); but the probe site is right between "someinsn" and "otherinsn". The probe arguments in STAP_PROBE_ASM can be given as assembly operands instead, even inside a GNU C extended asm statement. Note that these can use operand templates like %0 or %[name], and likewise they must write %%reg for a literal operand of %reg. */ #define STAP_PROBE_ASM(provider,name,...) _SDT_ASM_BODY(provider, name, , __VA_ARGS__) _SDT_ASM_BASE #define STAP_PROBE_ASM_OPERANDS(n,...) _SDT_ASM_OPERANDS_ ##n(__VA_ARGS__) #define STAP_PROBE_ASM_TEMPLATE(n) _SDT_ASM_TEMPLATE_ ##n /* DTrace compatible macro names. */ #define DTRACE_PROBE(provider,probe) STAP_PROBE(provider,probe) #define DTRACE_PROBE1(provider,probe,parm1) STAP_PROBE1(provider,probe,parm1) #define DTRACE_PROBE2(provider,probe,parm1,parm2) STAP_PROBE2(provider,probe,parm1,parm2) #define DTRACE_PROBE3(provider,probe,parm1,parm2,parm3) STAP_PROBE3(provider,probe,parm1,parm2,parm3) #define DTRACE_PROBE4(provider,probe,parm1,parm2,parm3,parm4) STAP_PROBE4(provider,probe,parm1,parm2,parm3,parm4) #define DTRACE_PROBE5(provider,probe,parm1,parm2,parm3,parm4,parm5) STAP_PROBE5(provider,probe,parm1,parm2,parm3,parm4,parm5) #define DTRACE_PROBE6(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6) STAP_PROBE6(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6) #define DTRACE_PROBE7(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7) STAP_PROBE7(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7) #define DTRACE_PROBE8(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) STAP_PROBE8(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) #define DTRACE_PROBE9(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) STAP_PROBE9(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) #define DTRACE_PROBE10(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) STAP_PROBE10(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) #define DTRACE_PROBE11(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10,parm11) STAP_PROBE11(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10,parm11) #define DTRACE_PROBE12(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10,parm11,parm12) STAP_PROBE12(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10,parm11,parm12) # 26 "../include/stap-probe.h" 2 /* Our code uses one macro LIBC_PROBE (name, n, arg1, ..., argn). Without USE_STAP_PROBE, that does nothing but evaluates all its arguments (to prevent bit rot, unlike e.g. assert). Systemtap's header defines the macros STAP_PROBE (provider, name) and STAP_PROBEn (provider, name, arg1, ..., argn). For "provider" we paste in MODULE_NAME (libc, libpthread, etc.) automagically. The format of the arg parameters is discussed here: https://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation The precise details of how register names are specified is architecture specific and can be found in the gdb and SystemTap source code. */ #define LIBC_PROBE(name,n,...) LIBC_PROBE_1 (MODULE_NAME, name, n, ## __VA_ARGS__) #define LIBC_PROBE_1(lib,name,n,...) STAP_PROBE ##n (lib, name, ## __VA_ARGS__) #define STAP_PROBE0 STAP_PROBE #define LIBC_PROBE_ASM(name,template) STAP_PROBE_ASM (MODULE_NAME, name, template) #define LIBC_PROBE_ASM_OPERANDS STAP_PROBE_ASM_OPERANDS # 77 "../include/stap-probe.h" # 25 "../sysdeps/s390/s390-64/__longjmp.c" 2 /* Jump to the position specified by ENV, causing the setjmp call there to return VAL, or 1 if VAL is 0. */ void __longjmp (__jmp_buf env, int val) { uintptr_t guard = THREAD_GET_POINTER_GUARD (); register long int r2 __asm__ ("%r2") = val == 0 ? 1 : val; register uintptr_t r3 __asm__ ("%r3") = guard; register void *r1 __asm__ ("%r1") = (void *) env; /* Restore registers and jump back. */ __asm__ __volatile__ ( /* longjmp probe expects longjmp first argument, second argument and target address. */ "lmg %%r4,%%r5,64(%1)\n\t" "xgr %%r4,%2\n\t" "xgr %%r5,%2\n\t" LIBC_PROBE_ASM (longjmp, 8@%1 -4@%0 8@%%r4) /* restore fpregs */ "ld %%f8,80(%1)\n\t" "ld %%f9,88(%1)\n\t" "ld %%f10,96(%1)\n\t" "ld %%f11,104(%1)\n\t" "ld %%f12,112(%1)\n\t" "ld %%f13,120(%1)\n\t" "ld %%f14,128(%1)\n\t" "ld %%f15,136(%1)\n\t" /* restore gregs and return to jmp_buf target */ "lmg %%r6,%%r13,0(%1)\n\t" "lgr %%r15,%%r5\n\t" LIBC_PROBE_ASM (longjmp_target, 8@%1 -4@%0 8@%%r4) "br %%r4" : : "r" (r2), "r" (r1), "r" (r3) ); /* Avoid `volatile function does return' warnings. */ for (;;); }