Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assumed value of MB_LEN_MAX wrong with clang #26334

Open
nagisa opened this issue Jun 2, 2017 · 9 comments
Open

Assumed value of MB_LEN_MAX wrong with clang #26334

nagisa opened this issue Jun 2, 2017 · 9 comments
Labels
2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md

Comments

@nagisa
Copy link
Contributor

nagisa commented Jun 2, 2017

Issue description/Steps to reproduce

Compiling following snippet with clang -ffreestanding foo.c (and any other way to get clang such as cc provided by clangStdenv package):

#include<limits.h>
#include<stdlib.h>

int main(void) { return 0; }

will fail with

In file included from /tmp/foo.c:2:
In file included from /nix/store/vrr9maj9lqj2xwndlx3kh07vhnc111i2-glibc-2.25-dev/include/stdlib.h:941:
/nix/store/vrr9maj9lqj2xwndlx3kh07vhnc111i2-glibc-2.25-dev/include/bits/stdlib.h:90:3: error: "Assumed value of MB_LEN_MAX wrong"
# error "Assumed value of MB_LEN_MAX wrong"
  ^
1 error generated.

This does not happen on Arch Linux, nor does it happen with GCC, nor does it happen without -ffreestanding, so I assume it is NixOS’ fault.

Technical details

  • System: 17.09pre108282.53835c93cb (Hummingbird)
  • Nix version: nix-env (Nix) 1.11.9
@canndrew
Copy link
Contributor

@nagisa Did you ever figure this out? It's stopping me from building rust :/

@nagisa
Copy link
Contributor Author

nagisa commented Nov 23, 2017 via email

@orivej
Copy link
Contributor

orivej commented Nov 23, 2017

I can not reproduce this. Could you post the output of clang -dD -E foo.c?

@nagisa
Copy link
Contributor Author

nagisa commented Nov 23, 2017

@orivej the -ffreestanding flag is important here. Attached is the stdout of clang -ffreestanding -dD -E foo.c (note: it still does print the errors shown in the issue report). When compiled, the expanded code reports no errors.

# 1 "test.c"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
#define __llvm__ 1
#define __clang__ 1
#define __clang_major__ 4
#define __clang_minor__ 0
#define __clang_patchlevel__ 1
#define __clang_version__ "4.0.1 (tags/RELEASE_401/final)"
#define __GNUC_MINOR__ 2
#define __GNUC_PATCHLEVEL__ 1
#define __GNUC__ 4
#define __GXX_ABI_VERSION 1002
#define __ATOMIC_RELAXED 0
#define __ATOMIC_CONSUME 1
#define __ATOMIC_ACQUIRE 2
#define __ATOMIC_RELEASE 3
#define __ATOMIC_ACQ_REL 4
#define __ATOMIC_SEQ_CST 5
#define __PRAGMA_REDEFINE_EXTNAME 1
#define __VERSION__ "4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)"
#define __CONSTANT_CFSTRINGS__ 1
#define __OPTIMIZE__ 1
#define __ORDER_LITTLE_ENDIAN__ 1234
#define __ORDER_BIG_ENDIAN__ 4321
#define __ORDER_PDP_ENDIAN__ 3412
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __LITTLE_ENDIAN__ 1
#define _LP64 1
#define __LP64__ 1
#define __CHAR_BIT__ 8
#define __SCHAR_MAX__ 127
#define __SHRT_MAX__ 32767
#define __INT_MAX__ 2147483647
#define __LONG_MAX__ 9223372036854775807L
#define __LONG_LONG_MAX__ 9223372036854775807LL
#define __WCHAR_MAX__ 2147483647
#define __INTMAX_MAX__ 9223372036854775807L
#define __SIZE_MAX__ 18446744073709551615UL
#define __UINTMAX_MAX__ 18446744073709551615UL
#define __PTRDIFF_MAX__ 9223372036854775807L
#define __INTPTR_MAX__ 9223372036854775807L
#define __UINTPTR_MAX__ 18446744073709551615UL
#define __SIZEOF_DOUBLE__ 8
#define __SIZEOF_FLOAT__ 4
#define __SIZEOF_INT__ 4
#define __SIZEOF_LONG__ 8
#define __SIZEOF_LONG_DOUBLE__ 16
#define __SIZEOF_LONG_LONG__ 8
#define __SIZEOF_POINTER__ 8
#define __SIZEOF_SHORT__ 2
#define __SIZEOF_PTRDIFF_T__ 8
#define __SIZEOF_SIZE_T__ 8
#define __SIZEOF_WCHAR_T__ 4
#define __SIZEOF_WINT_T__ 4
#define __SIZEOF_INT128__ 16
#define __INTMAX_TYPE__ long int
#define __INTMAX_FMTd__ "ld"
#define __INTMAX_FMTi__ "li"
#define __INTMAX_C_SUFFIX__ L
#define __UINTMAX_TYPE__ long unsigned int
#define __UINTMAX_FMTo__ "lo"
#define __UINTMAX_FMTu__ "lu"
#define __UINTMAX_FMTx__ "lx"
#define __UINTMAX_FMTX__ "lX"
#define __UINTMAX_C_SUFFIX__ UL
#define __INTMAX_WIDTH__ 64
#define __PTRDIFF_TYPE__ long int
#define __PTRDIFF_FMTd__ "ld"
#define __PTRDIFF_FMTi__ "li"
#define __PTRDIFF_WIDTH__ 64
#define __INTPTR_TYPE__ long int
#define __INTPTR_FMTd__ "ld"
#define __INTPTR_FMTi__ "li"
#define __INTPTR_WIDTH__ 64
#define __SIZE_TYPE__ long unsigned int
#define __SIZE_FMTo__ "lo"
#define __SIZE_FMTu__ "lu"
#define __SIZE_FMTx__ "lx"
#define __SIZE_FMTX__ "lX"
#define __SIZE_WIDTH__ 64
#define __WCHAR_TYPE__ int
#define __WCHAR_WIDTH__ 32
#define __WINT_TYPE__ unsigned int
#define __WINT_WIDTH__ 32
#define __SIG_ATOMIC_WIDTH__ 32
#define __SIG_ATOMIC_MAX__ 2147483647
#define __CHAR16_TYPE__ unsigned short
#define __CHAR32_TYPE__ unsigned int
#define __UINTMAX_WIDTH__ 64
#define __UINTPTR_TYPE__ long unsigned int
#define __UINTPTR_FMTo__ "lo"
#define __UINTPTR_FMTu__ "lu"
#define __UINTPTR_FMTx__ "lx"
#define __UINTPTR_FMTX__ "lX"
#define __UINTPTR_WIDTH__ 64
#define __FLT_DENORM_MIN__ 1.40129846e-45F
#define __FLT_HAS_DENORM__ 1
#define __FLT_DIG__ 6
#define __FLT_DECIMAL_DIG__ 9
#define __FLT_EPSILON__ 1.19209290e-7F
#define __FLT_HAS_INFINITY__ 1
#define __FLT_HAS_QUIET_NAN__ 1
#define __FLT_MANT_DIG__ 24
#define __FLT_MAX_10_EXP__ 38
#define __FLT_MAX_EXP__ 128
#define __FLT_MAX__ 3.40282347e+38F
#define __FLT_MIN_10_EXP__ (-37)
#define __FLT_MIN_EXP__ (-125)
#define __FLT_MIN__ 1.17549435e-38F
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __DBL_HAS_DENORM__ 1
#define __DBL_DIG__ 15
#define __DBL_DECIMAL_DIG__ 17
#define __DBL_EPSILON__ 2.2204460492503131e-16
#define __DBL_HAS_INFINITY__ 1
#define __DBL_HAS_QUIET_NAN__ 1
#define __DBL_MANT_DIG__ 53
#define __DBL_MAX_10_EXP__ 308
#define __DBL_MAX_EXP__ 1024
#define __DBL_MAX__ 1.7976931348623157e+308
#define __DBL_MIN_10_EXP__ (-307)
#define __DBL_MIN_EXP__ (-1021)
#define __DBL_MIN__ 2.2250738585072014e-308
#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
#define __LDBL_HAS_DENORM__ 1
#define __LDBL_DIG__ 18
#define __LDBL_DECIMAL_DIG__ 21
#define __LDBL_EPSILON__ 1.08420217248550443401e-19L
#define __LDBL_HAS_INFINITY__ 1
#define __LDBL_HAS_QUIET_NAN__ 1
#define __LDBL_MANT_DIG__ 64
#define __LDBL_MAX_10_EXP__ 4932
#define __LDBL_MAX_EXP__ 16384
#define __LDBL_MAX__ 1.18973149535723176502e+4932L
#define __LDBL_MIN_10_EXP__ (-4931)
#define __LDBL_MIN_EXP__ (-16381)
#define __LDBL_MIN__ 3.36210314311209350626e-4932L
#define __POINTER_WIDTH__ 64
#define __BIGGEST_ALIGNMENT__ 16
#define __WINT_UNSIGNED__ 1
#define __INT8_TYPE__ signed char
#define __INT8_FMTd__ "hhd"
#define __INT8_FMTi__ "hhi"
#define __INT8_C_SUFFIX__ 
#define __INT16_TYPE__ short
#define __INT16_FMTd__ "hd"
#define __INT16_FMTi__ "hi"
#define __INT16_C_SUFFIX__ 
#define __INT32_TYPE__ int
#define __INT32_FMTd__ "d"
#define __INT32_FMTi__ "i"
#define __INT32_C_SUFFIX__ 
#define __INT64_TYPE__ long int
#define __INT64_FMTd__ "ld"
#define __INT64_FMTi__ "li"
#define __INT64_C_SUFFIX__ L
#define __UINT8_TYPE__ unsigned char
#define __UINT8_FMTo__ "hho"
#define __UINT8_FMTu__ "hhu"
#define __UINT8_FMTx__ "hhx"
#define __UINT8_FMTX__ "hhX"
#define __UINT8_C_SUFFIX__ 
#define __UINT8_MAX__ 255
#define __INT8_MAX__ 127
#define __UINT16_TYPE__ unsigned short
#define __UINT16_FMTo__ "ho"
#define __UINT16_FMTu__ "hu"
#define __UINT16_FMTx__ "hx"
#define __UINT16_FMTX__ "hX"
#define __UINT16_C_SUFFIX__ 
#define __UINT16_MAX__ 65535
#define __INT16_MAX__ 32767
#define __UINT32_TYPE__ unsigned int
#define __UINT32_FMTo__ "o"
#define __UINT32_FMTu__ "u"
#define __UINT32_FMTx__ "x"
#define __UINT32_FMTX__ "X"
#define __UINT32_C_SUFFIX__ U
#define __UINT32_MAX__ 4294967295U
#define __INT32_MAX__ 2147483647
#define __UINT64_TYPE__ long unsigned int
#define __UINT64_FMTo__ "lo"
#define __UINT64_FMTu__ "lu"
#define __UINT64_FMTx__ "lx"
#define __UINT64_FMTX__ "lX"
#define __UINT64_C_SUFFIX__ UL
#define __UINT64_MAX__ 18446744073709551615UL
#define __INT64_MAX__ 9223372036854775807L
#define __INT_LEAST8_TYPE__ signed char
#define __INT_LEAST8_MAX__ 127
#define __INT_LEAST8_FMTd__ "hhd"
#define __INT_LEAST8_FMTi__ "hhi"
#define __UINT_LEAST8_TYPE__ unsigned char
#define __UINT_LEAST8_MAX__ 255
#define __UINT_LEAST8_FMTo__ "hho"
#define __UINT_LEAST8_FMTu__ "hhu"
#define __UINT_LEAST8_FMTx__ "hhx"
#define __UINT_LEAST8_FMTX__ "hhX"
#define __INT_LEAST16_TYPE__ short
#define __INT_LEAST16_MAX__ 32767
#define __INT_LEAST16_FMTd__ "hd"
#define __INT_LEAST16_FMTi__ "hi"
#define __UINT_LEAST16_TYPE__ unsigned short
#define __UINT_LEAST16_MAX__ 65535
#define __UINT_LEAST16_FMTo__ "ho"
#define __UINT_LEAST16_FMTu__ "hu"
#define __UINT_LEAST16_FMTx__ "hx"
#define __UINT_LEAST16_FMTX__ "hX"
#define __INT_LEAST32_TYPE__ int
#define __INT_LEAST32_MAX__ 2147483647
#define __INT_LEAST32_FMTd__ "d"
#define __INT_LEAST32_FMTi__ "i"
#define __UINT_LEAST32_TYPE__ unsigned int
#define __UINT_LEAST32_MAX__ 4294967295U
#define __UINT_LEAST32_FMTo__ "o"
#define __UINT_LEAST32_FMTu__ "u"
#define __UINT_LEAST32_FMTx__ "x"
#define __UINT_LEAST32_FMTX__ "X"
#define __INT_LEAST64_TYPE__ long int
#define __INT_LEAST64_MAX__ 9223372036854775807L
#define __INT_LEAST64_FMTd__ "ld"
#define __INT_LEAST64_FMTi__ "li"
#define __UINT_LEAST64_TYPE__ long unsigned int
#define __UINT_LEAST64_MAX__ 18446744073709551615UL
#define __UINT_LEAST64_FMTo__ "lo"
#define __UINT_LEAST64_FMTu__ "lu"
#define __UINT_LEAST64_FMTx__ "lx"
#define __UINT_LEAST64_FMTX__ "lX"
#define __INT_FAST8_TYPE__ signed char
#define __INT_FAST8_MAX__ 127
#define __INT_FAST8_FMTd__ "hhd"
#define __INT_FAST8_FMTi__ "hhi"
#define __UINT_FAST8_TYPE__ unsigned char
#define __UINT_FAST8_MAX__ 255
#define __UINT_FAST8_FMTo__ "hho"
#define __UINT_FAST8_FMTu__ "hhu"
#define __UINT_FAST8_FMTx__ "hhx"
#define __UINT_FAST8_FMTX__ "hhX"
#define __INT_FAST16_TYPE__ short
#define __INT_FAST16_MAX__ 32767
#define __INT_FAST16_FMTd__ "hd"
#define __INT_FAST16_FMTi__ "hi"
#define __UINT_FAST16_TYPE__ unsigned short
#define __UINT_FAST16_MAX__ 65535
#define __UINT_FAST16_FMTo__ "ho"
#define __UINT_FAST16_FMTu__ "hu"
#define __UINT_FAST16_FMTx__ "hx"
#define __UINT_FAST16_FMTX__ "hX"
#define __INT_FAST32_TYPE__ int
#define __INT_FAST32_MAX__ 2147483647
#define __INT_FAST32_FMTd__ "d"
#define __INT_FAST32_FMTi__ "i"
#define __UINT_FAST32_TYPE__ unsigned int
#define __UINT_FAST32_MAX__ 4294967295U
#define __UINT_FAST32_FMTo__ "o"
#define __UINT_FAST32_FMTu__ "u"
#define __UINT_FAST32_FMTx__ "x"
#define __UINT_FAST32_FMTX__ "X"
#define __INT_FAST64_TYPE__ long int
#define __INT_FAST64_MAX__ 9223372036854775807L
#define __INT_FAST64_FMTd__ "ld"
#define __INT_FAST64_FMTi__ "li"
#define __UINT_FAST64_TYPE__ long unsigned int
#define __UINT_FAST64_MAX__ 18446744073709551615UL
#define __UINT_FAST64_FMTo__ "lo"
#define __UINT_FAST64_FMTu__ "lu"
#define __UINT_FAST64_FMTx__ "lx"
#define __UINT_FAST64_FMTX__ "lX"
#define __USER_LABEL_PREFIX__ 
#define __FINITE_MATH_ONLY__ 0
#define __GNUC_STDC_INLINE__ 1
#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
#define __GCC_ATOMIC_INT_LOCK_FREE 2
#define __GCC_ATOMIC_LONG_LOCK_FREE 2
#define __GCC_ATOMIC_LLONG_LOCK_FREE 2
#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
#define __PIC__ 2
#define __pic__ 2
#define __FLT_EVAL_METHOD__ 0
#define __FLT_RADIX__ 2
#define __DECIMAL_DIG__ __LDBL_DECIMAL_DIG__
#define __SSP_STRONG__ 2
#define __amd64__ 1
#define __amd64 1
#define __x86_64 1
#define __x86_64__ 1
#define __k8 1
#define __k8__ 1
#define __tune_k8__ 1
#define __REGISTER_PREFIX__ 
#define __NO_MATH_INLINES 1
#define __FXSR__ 1
#define __SSE2__ 1
#define __SSE2_MATH__ 1
#define __SSE__ 1
#define __SSE_MATH__ 1
#define __MMX__ 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
#define unix 1
#define __unix 1
#define __unix__ 1
#define linux 1
#define __linux 1
#define __linux__ 1
#define __gnu_linux__ 1
#define __ELF__ 1
#define __FLOAT128__ 1
#define __STDC__ 1
#define __STDC_HOSTED__ 0
#define __STDC_VERSION__ 201112L
#define __STDC_UTF_16__ 1
#define __STDC_UTF_32__ 1

# 1 "<command line>" 1
#define _FORTIFY_SOURCE 2
# 1 "<built-in>" 2
# 1 "test.c" 2
# 1 "/nix/store/b36hqnqzr7my1kllsf0nrnyy0rkxjcsj-clang-4.0.1/bin/../lib/clang/4.0.1/include/limits.h" 1 3
# 26 "/nix/store/b36hqnqzr7my1kllsf0nrnyy0rkxjcsj-clang-4.0.1/bin/../lib/clang/4.0.1/include/limits.h" 3
#define __CLANG_LIMITS_H 




#define _GCC_LIMITS_H_ 
# 42 "/nix/store/b36hqnqzr7my1kllsf0nrnyy0rkxjcsj-clang-4.0.1/bin/../lib/clang/4.0.1/include/limits.h" 3
#undef SCHAR_MIN
#undef SCHAR_MAX
#undef UCHAR_MAX
#undef SHRT_MIN
#undef SHRT_MAX
#undef USHRT_MAX
#undef INT_MIN
#undef INT_MAX
#undef UINT_MAX
#undef LONG_MIN
#undef LONG_MAX
#undef ULONG_MAX

#undef CHAR_BIT
#undef CHAR_MIN
#undef CHAR_MAX


#define SCHAR_MAX __SCHAR_MAX__
#define SHRT_MAX __SHRT_MAX__
#define INT_MAX __INT_MAX__
#define LONG_MAX __LONG_MAX__

#define SCHAR_MIN (-__SCHAR_MAX__-1)
#define SHRT_MIN (-__SHRT_MAX__ -1)
#define INT_MIN (-__INT_MAX__ -1)
#define LONG_MIN (-__LONG_MAX__ -1L)

#define UCHAR_MAX (__SCHAR_MAX__*2 +1)
#define USHRT_MAX (__SHRT_MAX__ *2 +1)
#define UINT_MAX (__INT_MAX__ *2U +1U)
#define ULONG_MAX (__LONG_MAX__ *2UL+1UL)


#define MB_LEN_MAX 1


#define CHAR_BIT __CHAR_BIT__





#define CHAR_MIN SCHAR_MIN
#define CHAR_MAX __SCHAR_MAX__







#undef LLONG_MIN
#undef LLONG_MAX
#undef ULLONG_MAX

#define LLONG_MAX __LONG_LONG_MAX__
#define LLONG_MIN (-__LONG_LONG_MAX__-1LL)
#define ULLONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL)
# 109 "/nix/store/b36hqnqzr7my1kllsf0nrnyy0rkxjcsj-clang-4.0.1/bin/../lib/clang/4.0.1/include/limits.h" 3
#undef LONG_LONG_MIN
#undef LONG_LONG_MAX
#undef ULONG_LONG_MAX

#define LONG_LONG_MAX __LONG_LONG_MAX__
#define LONG_LONG_MIN (-__LONG_LONG_MAX__-1LL)
#define ULONG_LONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL)
# 2 "test.c" 2
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 1 3
# 24 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION 

# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/libc-header-start.h" 1 3
# 31 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/libc-header-start.h" 3
#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION


# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 1 3
# 19 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 3
#define _FEATURES_H 1
# 118 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 3
#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_GNU
#undef __USE_FORTIFY_LEVEL
#undef __KERNEL_STRICT_NAMES
#undef __GLIBC_USE_DEPRECATED_GETS




#define __KERNEL_STRICT_NAMES 
# 157 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 3
#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
# 168 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 3
#define __glibc_clang_prereq(maj,min) ((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min))






#define __GLIBC_USE(F) __GLIBC_USE_ ## F
# 219 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 3
#undef _DEFAULT_SOURCE
#define _DEFAULT_SOURCE 1





#define __USE_ISOC11 1





#define __USE_ISOC99 1





#define __USE_ISOC95 1
# 255 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 3
#define __USE_POSIX_IMPLICITLY 1

#undef _POSIX_SOURCE
#define _POSIX_SOURCE 1
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 200809L
# 295 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 3
#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
# 363 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 3
#define __USE_MISC 1



#define __USE_ATFILE 1
# 380 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 3
#define __USE_FORTIFY_LEVEL 2
# 394 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 3
#define __GLIBC_USE_DEPRECATED_GETS 0







# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdc-predef.h" 1 3
# 19 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdc-predef.h" 3
#define _STDC_PREDEF_H 1
# 41 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdc-predef.h" 3
#define __STDC_IEC_559__ 1







#define __STDC_IEC_559_COMPLEX__ 1
# 58 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdc-predef.h" 3
#define __STDC_ISO_10646__ 201706L


#define __STDC_NO_THREADS__ 1
# 402 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 2 3







#undef __GNU_LIBRARY__
#define __GNU_LIBRARY__ 6



#define __GLIBC__ 2
#define __GLIBC_MINOR__ 26

#define __GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))






# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 1 3
# 19 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define _SYS_CDEFS_H 1
# 34 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#undef __P
#undef __PMT
# 45 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __LEAF 
#define __LEAF_ATTR 
# 55 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __THROW __attribute__ ((__nothrow__ __LEAF))
#define __THROWNL __attribute__ ((__nothrow__))
#define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
#define __NTHNL(fct) __attribute__ ((__nothrow__)) fct
# 87 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __glibc_clang_has_extension(ext) __has_extension (ext)






#define __P(args) args
#define __PMT(args) args




#define __CONCAT(x,y) x ## y
#define __STRING(x) #x


#define __ptr_t void *
#define __long_double_t long double







#define __BEGIN_DECLS 
#define __END_DECLS 




#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
#define __bos0(ptr) __builtin_object_size (ptr, 0)
# 129 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __warndecl(name,msg) extern void name (void)
#define __warnattr(msg) 
#define __errordecl(name,msg) extern void name (void)







#define __flexarr []
#define __glibc_c99_flexarr_available 1
# 170 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#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
# 204 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __attribute_malloc__ __attribute__ ((__malloc__))
# 215 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __attribute_alloc_size__(params) 






#define __attribute_pure__ __attribute__ ((__pure__))






#define __attribute_const__ __attribute__ ((__const__))
# 238 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __attribute_used__ __attribute__ ((__used__))
#define __attribute_noinline__ __attribute__ ((__noinline__))







#define __attribute_deprecated__ __attribute__ ((__deprecated__))
# 257 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __attribute_deprecated_msg__(msg) __attribute__ ((__deprecated__ (msg)))
# 270 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
# 280 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b)))
# 289 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __nonnull(params) __attribute__ ((__nonnull__ params))







#define __attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__))


#define __wur __attribute_warn_unused_result__
# 314 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#undef __always_inline
#define __always_inline __inline __attribute__ ((__always_inline__))
# 326 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __attribute_artificial__ 
# 342 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
#define __extern_always_inline extern __always_inline __attribute__ ((__gnu_inline__))
# 352 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __fortify_function __extern_always_inline __attribute_artificial__
# 379 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __restrict_arr __restrict
# 394 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __glibc_unlikely(cond) __builtin_expect ((cond), 0)
#define __glibc_likely(cond) __builtin_expect ((cond), 1)
# 419 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/wordsize.h" 1 3



#define __WORDSIZE 64







#define __WORDSIZE_TIME64_COMPAT32 1

#define __SYSCALL_WORDSIZE 64
# 420 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 2 3
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/long-double.h" 1 3
# 421 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 2 3
# 442 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#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_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)
# 460 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __glibc_macro_warning1(message) _Pragma (#message)
#define __glibc_macro_warning(message) __glibc_macro_warning1 (GCC warning message)
# 479 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/cdefs.h" 3
#define __HAVE_GENERIC_SELECTION 1
# 424 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 2 3
# 439 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 3
#define __USE_EXTERN_INLINES 1








# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/gnu/stubs.h" 1 3
# 10 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/gnu/stubs.h" 3
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/gnu/stubs-64.h" 1 3
# 10 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/gnu/stubs-64.h" 3
#define __stub___compat_bdflush 
#define __stub_chflags 
#define __stub_fattach 
#define __stub_fchflags 
#define __stub_fdetach 
#define __stub_getmsg 
#define __stub_gtty 
#define __stub_lchmod 
#define __stub_putmsg 
#define __stub_revoke 
#define __stub_setlogin 
#define __stub_sigreturn 
#define __stub_sstk 
#define __stub_stty 
# 11 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/gnu/stubs.h" 2 3
# 448 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/features.h" 2 3
# 34 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/libc-header-start.h" 2 3



#undef __GLIBC_USE_LIB_EXT2




#define __GLIBC_USE_LIB_EXT2 0




#undef __GLIBC_USE_IEC_60559_BFP_EXT



#define __GLIBC_USE_IEC_60559_BFP_EXT 0




#undef __GLIBC_USE_IEC_60559_FUNCS_EXT



#define __GLIBC_USE_IEC_60559_FUNCS_EXT 0




#undef __GLIBC_USE_IEC_60559_TYPES_EXT



#define __GLIBC_USE_IEC_60559_TYPES_EXT 0
# 26 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 2 3


#define __need_size_t 
#define __need_wchar_t 
#define __need_NULL 

# 1 "/nix/store/b36hqnqzr7my1kllsf0nrnyy0rkxjcsj-clang-4.0.1/bin/../lib/clang/4.0.1/include/stddef.h" 1 3
# 60 "/nix/store/b36hqnqzr7my1kllsf0nrnyy0rkxjcsj-clang-4.0.1/bin/../lib/clang/4.0.1/include/stddef.h" 3
#define _SIZE_T 

typedef long unsigned int size_t;

#undef __need_size_t
# 85 "/nix/store/b36hqnqzr7my1kllsf0nrnyy0rkxjcsj-clang-4.0.1/bin/../lib/clang/4.0.1/include/stddef.h" 3
#define _WCHAR_T 




typedef int wchar_t;


#undef __need_wchar_t



#undef NULL







#define NULL ((void*)0)







#undef __need_NULL
# 32 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 2 3



#define _STDLIB_H 1




# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/waitflags.h" 1 3
# 25 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/waitflags.h" 3
#define WNOHANG 1
#define WUNTRACED 2



#define WSTOPPED 2
#define WEXITED 4
#define WCONTINUED 8
#define WNOWAIT 0x01000000


#define __WNOTHREAD 0x20000000

#define __WALL 0x40000000
#define __WCLONE 0x80000000
# 40 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 2 3
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/waitstatus.h" 1 3
# 28 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/waitstatus.h" 3
#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)


#define __WTERMSIG(status) ((status) & 0x7f)


#define __WSTOPSIG(status) __WEXITSTATUS(status)


#define __WIFEXITED(status) (__WTERMSIG(status) == 0)


#define __WIFSIGNALED(status) (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)



#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)




#define __WIFCONTINUED(status) ((status) == __W_CONTINUED)



#define __WCOREDUMP(status) ((status) & __WCOREFLAG)


#define __W_EXITCODE(ret,sig) ((ret) << 8 | (sig))
#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f)
#define __W_CONTINUED 0xffff
#define __WCOREFLAG 0x80
# 41 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 2 3


#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)





# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/floatn.h" 1 3
# 20 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/floatn.h" 3
#define _BITS_FLOATN_H 
# 34 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/floatn.h" 3
#define __HAVE_FLOAT128 0







#define __HAVE_DISTINCT_FLOAT128 0
# 56 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 2 3


typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;
#define __ldiv_t_defined 1




__extension__ typedef struct
  {
    long long int quot;
    long long int rem;
  } lldiv_t;
#define __lldiv_t_defined 1




#define RAND_MAX 2147483647




#define EXIT_FAILURE 1
#define EXIT_SUCCESS 0



#define MB_CUR_MAX (__ctype_get_mb_cur_max ())
extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__));



extern double atof (const char *__nptr)
     __attribute__ ((__nothrow__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));

extern int atoi (const char *__nptr)
     __attribute__ ((__nothrow__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));

extern long int atol (const char *__nptr)
     __attribute__ ((__nothrow__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));



__extension__ extern long long int atoll (const char *__nptr)
     __attribute__ ((__nothrow__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));



extern double strtod (const char *__restrict __nptr,
        char **__restrict __endptr)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));



extern float strtof (const char *__restrict __nptr,
       char **__restrict __endptr) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));

extern long double strtold (const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));
# 139 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern long int strtol (const char *__restrict __nptr,
   char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));

extern unsigned long int strtoul (const char *__restrict __nptr,
      char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));



__extension__
extern long long int strtoq (const char *__restrict __nptr,
        char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));

__extension__
extern unsigned long long int strtouq (const char *__restrict __nptr,
           char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));




__extension__
extern long long int strtoll (const char *__restrict __nptr,
         char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));

__extension__
extern unsigned long long int strtoull (const char *__restrict __nptr,
     char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));
# 245 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern __inline __attribute__ ((__gnu_inline__)) int
__attribute__ ((__nothrow__ )) atoi (const char *__nptr)
{
  return (int) strtol (__nptr, (char **) ((void*)0), 10);
}
extern __inline __attribute__ ((__gnu_inline__)) long int
__attribute__ ((__nothrow__ )) atol (const char *__nptr)
{
  return strtol (__nptr, (char **) ((void*)0), 10);
}


__extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int
__attribute__ ((__nothrow__ )) atoll (const char *__nptr)
{
  return strtoll (__nptr, (char **) ((void*)0), 10);
}
# 270 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern char *l64a (long int __n) __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__));


extern long int a64l (const char *__s)
     __attribute__ ((__nothrow__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));





# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 1 3
# 23 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 3
#define _SYS_TYPES_H 1






# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types.h" 1 3
# 24 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types.h" 3
#define _BITS_TYPES_H 1



# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/wordsize.h" 1 3



#define __WORDSIZE 64







#define __WORDSIZE_TIME64_COMPAT32 1

#define __SYSCALL_WORDSIZE 64
# 28 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types.h" 2 3


typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;


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;







typedef long int __quad_t;
typedef unsigned long int __u_quad_t;







typedef long int __intmax_t;
typedef unsigned long int __uintmax_t;
# 98 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types.h" 3
#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
# 117 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types.h" 3
#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

#define __STD_TYPE typedef




# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/typesizes.h" 1 3
# 24 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/typesizes.h" 3
#define _BITS_TYPESIZES_H 1
# 34 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/typesizes.h" 3
#define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE
#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE


#define __DEV_T_TYPE __UQUAD_TYPE
#define __UID_T_TYPE __U32_TYPE
#define __GID_T_TYPE __U32_TYPE
#define __INO_T_TYPE __SYSCALL_ULONG_TYPE
#define __INO64_T_TYPE __UQUAD_TYPE
#define __MODE_T_TYPE __U32_TYPE

#define __NLINK_T_TYPE __SYSCALL_ULONG_TYPE
#define __FSWORD_T_TYPE __SYSCALL_SLONG_TYPE




#define __OFF_T_TYPE __SYSCALL_SLONG_TYPE
#define __OFF64_T_TYPE __SQUAD_TYPE
#define __PID_T_TYPE __S32_TYPE
#define __RLIM_T_TYPE __SYSCALL_ULONG_TYPE
#define __RLIM64_T_TYPE __UQUAD_TYPE
#define __BLKCNT_T_TYPE __SYSCALL_SLONG_TYPE
#define __BLKCNT64_T_TYPE __SQUAD_TYPE
#define __FSBLKCNT_T_TYPE __SYSCALL_ULONG_TYPE
#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
#define __FSFILCNT_T_TYPE __SYSCALL_ULONG_TYPE
#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
#define __ID_T_TYPE __U32_TYPE
#define __CLOCK_T_TYPE __SYSCALL_SLONG_TYPE
#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE
#define __USECONDS_T_TYPE __U32_TYPE
#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_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 __SYSCALL_SLONG_TYPE
#define __FSID_T_TYPE struct { int __val[2]; }
#define __SSIZE_T_TYPE __SWORD_TYPE
#define __CPU_MASK_TYPE __SYSCALL_ULONG_TYPE





#define __OFF_T_MATCHES_OFF64_T 1


#define __INO_T_MATCHES_INO64_T 1


#define __RLIM_T_MATCHES_RLIM64_T 1





#define __FD_SETSIZE 1024
# 131 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types.h" 2 3


typedef unsigned long int __dev_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long int __ino_t;
typedef unsigned long int __ino64_t;
typedef unsigned int __mode_t;
typedef unsigned long int __nlink_t;
typedef long int __off_t;
typedef long int __off64_t;
typedef int __pid_t;
typedef struct { int __val[2]; } __fsid_t;
typedef long int __clock_t;
typedef unsigned long int __rlim_t;
typedef unsigned long int __rlim64_t;
typedef unsigned int __id_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;

typedef int __daddr_t;
typedef int __key_t;


typedef int __clockid_t;


typedef void * __timer_t;


typedef long int __blksize_t;




typedef long int __blkcnt_t;
typedef long int __blkcnt64_t;


typedef unsigned long int __fsblkcnt_t;
typedef unsigned long int __fsblkcnt64_t;


typedef unsigned long int __fsfilcnt_t;
typedef unsigned long int __fsfilcnt64_t;


typedef long int __fsword_t;

typedef long int __ssize_t;


typedef long int __syscall_slong_t;

typedef unsigned long int __syscall_ulong_t;



typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;


typedef long int __intptr_t;


typedef unsigned int __socklen_t;




typedef int __sig_atomic_t;

#undef __STD_TYPE
# 30 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 2 3



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 __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 __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 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types/clock_t.h" 1 3

#define __clock_t_defined 1




typedef __clock_t clock_t;
# 128 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 2 3

# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types/clockid_t.h" 1 3

#define __clockid_t_defined 1




typedef __clockid_t clockid_t;
# 130 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 2 3
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types/time_t.h" 1 3

#define __time_t_defined 1




typedef __time_t time_t;
# 131 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 2 3
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types/timer_t.h" 1 3

#define __timer_t_defined 1




typedef __timer_t timer_t;
# 132 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 2 3
# 144 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 3
#define __need_size_t 

# 1 "/nix/store/b36hqnqzr7my1kllsf0nrnyy0rkxjcsj-clang-4.0.1/bin/../lib/clang/4.0.1/include/stddef.h" 1 3
# 64 "/nix/store/b36hqnqzr7my1kllsf0nrnyy0rkxjcsj-clang-4.0.1/bin/../lib/clang/4.0.1/include/stddef.h" 3
#undef __need_size_t
# 146 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 2 3



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;





# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/stdint-intn.h" 1 3
# 20 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/stdint-intn.h" 3
#define _BITS_STDINT_INTN_H 1



typedef __int8_t int8_t;
typedef __int16_t int16_t;
typedef __int32_t int32_t;
typedef __int64_t int64_t;
# 157 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 2 3
# 175 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 3
#define __u_intN_t(N,MODE) typedef unsigned int u_int##N##_t __attribute__ ((__mode__ (MODE)))


typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));

typedef int register_t __attribute__ ((__mode__ (__word__)));





#define __BIT_TYPES_DEFINED__ 1





# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/endian.h" 1 3
# 19 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/endian.h" 3
#define _ENDIAN_H 1
# 31 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/endian.h" 3
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#define __PDP_ENDIAN 3412



# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/endian.h" 1 3






#define __BYTE_ORDER __LITTLE_ENDIAN
# 37 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/endian.h" 2 3




#define __FLOAT_WORD_ORDER __BYTE_ORDER



#define LITTLE_ENDIAN __LITTLE_ENDIAN
#define BIG_ENDIAN __BIG_ENDIAN
#define PDP_ENDIAN __PDP_ENDIAN
#define BYTE_ORDER __BYTE_ORDER



#define __LONG_LONG_PAIR(HI,LO) LO, HI








# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/byteswap.h" 1 3
# 24 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/byteswap.h" 3
#define _BITS_BYTESWAP_H 1




# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/wordsize.h" 1 3



#define __WORDSIZE 64







#define __WORDSIZE_TIME64_COMPAT32 1

#define __SYSCALL_WORDSIZE 64
# 29 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/byteswap.h" 2 3


#define __bswap_constant_16(x) ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))




# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/byteswap-16.h" 1 3
# 25 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/byteswap-16.h" 3
#define __bswap_16(x) (__extension__ ({ unsigned short int __v, __x = (unsigned short int) (x); if (__builtin_constant_p (__x)) __v = __bswap_constant_16 (__x); else __asm__ ("rorw $8, %w0" : "=r" (__v) : "0" (__x) : "cc"); __v; }))
# 36 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/byteswap.h" 2 3


#define __bswap_constant_32(x) ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
# 58 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/byteswap.h" 3
#define __bswap_32(x) (__extension__ ({ unsigned int __v, __x = (x); if (__builtin_constant_p (__x)) __v = __bswap_constant_32 (__x); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; }))
# 97 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/byteswap.h" 3
#define __bswap_constant_64(x) (__extension__ ((((x) & 0xff00000000000000ull) >> 56) | (((x) & 0x00ff000000000000ull) >> 40) | (((x) & 0x0000ff0000000000ull) >> 24) | (((x) & 0x000000ff00000000ull) >> 8) | (((x) & 0x00000000ff000000ull) << 8) | (((x) & 0x0000000000ff0000ull) << 24) | (((x) & 0x000000000000ff00ull) << 40) | (((x) & 0x00000000000000ffull) << 56)))
# 114 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/byteswap.h" 3
#define __bswap_64(x) (__extension__ ({ __uint64_t __v, __x = (x); if (__builtin_constant_p (__x)) __v = __bswap_constant_64 (__x); else __asm__ ("bswap %q0" : "=r" (__v) : "0" (__x)); __v; }))
# 61 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/endian.h" 2 3
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/uintn-identity.h" 1 3
# 24 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/uintn-identity.h" 3
#define _BITS_UINTN_IDENTITY_H 1







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;
}
# 62 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/endian.h" 2 3


#define htobe16(x) __bswap_16 (x)
#define htole16(x) __uint16_identity (x)
#define be16toh(x) __bswap_16 (x)
#define le16toh(x) __uint16_identity (x)

#define htobe32(x) __bswap_32 (x)
#define htole32(x) __uint32_identity (x)
#define be32toh(x) __bswap_32 (x)
#define le32toh(x) __uint32_identity (x)

#define htobe64(x) __bswap_64 (x)
#define htole64(x) __uint64_identity (x)
#define be64toh(x) __bswap_64 (x)
#define le64toh(x) __uint64_identity (x)
# 195 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 2 3


# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/select.h" 1 3
# 22 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/select.h" 3
#define _SYS_SELECT_H 1








# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/select.h" 1 3
# 22 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/select.h" 3
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/wordsize.h" 1 3



#define __WORDSIZE 64







#define __WORDSIZE_TIME64_COMPAT32 1

#define __SYSCALL_WORDSIZE 64
# 23 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/select.h" 2 3





#define __FD_ZERO_STOS "stosq"




#define __FD_ZERO(fdsp) do { int __d0, __d1; __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS : "=c" (__d0), "=D" (__d1) : "a" (0), "0" (sizeof (fd_set) / sizeof (__fd_mask)), "1" (&__FDS_BITS (fdsp)[0]) : "memory"); } while (0)
# 58 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/select.h" 3
#define __FD_SET(d,set) ((void) (__FDS_BITS (set)[__FD_ELT (d)] |= __FD_MASK (d)))

#define __FD_CLR(d,set) ((void) (__FDS_BITS (set)[__FD_ELT (d)] &= ~__FD_MASK (d)))

#define __FD_ISSET(d,set) ((__FDS_BITS (set)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
# 31 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/select.h" 2 3


# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types/sigset_t.h" 1 3

#define __sigset_t_defined 1


# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types/__sigset_t.h" 1 3

#define ____sigset_t_defined 

#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
typedef struct
{
  unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
} __sigset_t;
# 5 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types/sigset_t.h" 2 3


typedef __sigset_t sigset_t;
# 34 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/select.h" 2 3



# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types/struct_timeval.h" 1 3

#define __timeval_defined 1





struct timeval
{
  __time_t tv_sec;
  __suseconds_t tv_usec;
};
# 38 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/select.h" 2 3

# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/types/struct_timespec.h" 1 3

#define __timespec_defined 1





struct timespec
{
  __time_t tv_sec;
  __syscall_slong_t tv_nsec;
};
# 40 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/select.h" 2 3



typedef __suseconds_t suseconds_t;
#define __suseconds_t_defined 




typedef long int __fd_mask;


#undef __NFDBITS

#define __NFDBITS (8 * (int) sizeof (__fd_mask))
#define __FD_ELT(d) ((d) / __NFDBITS)
#define __FD_MASK(d) ((__fd_mask) (1UL << ((d) % __NFDBITS)))


typedef struct
  {






    __fd_mask __fds_bits[1024 / (8 * (int) sizeof (__fd_mask))];
#define __FDS_BITS(set) ((set)->__fds_bits)

 } fd_set;


#define FD_SETSIZE __FD_SETSIZE



typedef __fd_mask fd_mask;


#define NFDBITS __NFDBITS




#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)
# 101 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/select.h" 3
extern int select (int __nfds, fd_set *__restrict __readfds,
     fd_set *__restrict __writefds,
     fd_set *__restrict __exceptfds,
     struct timeval *__restrict __timeout);
# 113 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/select.h" 3
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);






# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/select2.h" 1 3
# 24 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/select2.h" 3
extern long int __fdelt_chk (long int __d);
extern long int __fdelt_warn (long int __d)
                                               ;
#undef __FD_ELT
#define __FD_ELT(d) __extension__ ({ long int __d = (d); (__builtin_constant_p (__d) ? (0 <= __d && __d < __FD_SETSIZE ? (__d / __NFDBITS) : __fdelt_warn (__d)) : __fdelt_chk (__d)); })
# 124 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/select.h" 2 3
# 198 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 2 3






#define __SYSMACROS_DEPRECATED_INCLUSION 

# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/sysmacros.h" 1 3
# 30 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/sysmacros.h" 3
#undef major
#undef minor
#undef makedev




#define _SYS_SYSMACROS_H 1




# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/sysmacros.h" 1 3
# 20 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/sysmacros.h" 3
#define _BITS_SYSMACROS_H 1
# 36 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/sysmacros.h" 3
#define __SYSMACROS_DECLARE_MAJOR(DECL_TEMPL) DECL_TEMPL(unsigned int, major, (__dev_t __dev))


#define __SYSMACROS_DEFINE_MAJOR(DECL_TEMPL) __SYSMACROS_DECLARE_MAJOR (DECL_TEMPL) { unsigned int __major; __major = ((__dev & (__dev_t) 0x00000000000fff00u) >> 8); __major |= ((__dev & (__dev_t) 0xfffff00000000000u) >> 32); return __major; }
# 48 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/sysmacros.h" 3
#define __SYSMACROS_DECLARE_MINOR(DECL_TEMPL) DECL_TEMPL(unsigned int, minor, (__dev_t __dev))


#define __SYSMACROS_DEFINE_MINOR(DECL_TEMPL) __SYSMACROS_DECLARE_MINOR (DECL_TEMPL) { unsigned int __minor; __minor = ((__dev & (__dev_t) 0x00000000000000ffu) >> 0); __minor |= ((__dev & (__dev_t) 0x00000ffffff00000u) >> 12); return __minor; }
# 60 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/sysmacros.h" 3
#define __SYSMACROS_DECLARE_MAKEDEV(DECL_TEMPL) DECL_TEMPL(__dev_t, makedev, (unsigned int __major, unsigned int __minor))


#define __SYSMACROS_DEFINE_MAKEDEV(DECL_TEMPL) __SYSMACROS_DECLARE_MAKEDEV (DECL_TEMPL) { __dev_t __dev; __dev = (((__dev_t) (__major & 0x00000fffu)) << 8); __dev |= (((__dev_t) (__major & 0xfffff000u)) << 32); __dev |= (((__dev_t) (__minor & 0x000000ffu)) << 0); __dev |= (((__dev_t) (__minor & 0xffffff00u)) << 12); return __dev; }
# 42 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/sysmacros.h" 2 3
# 52 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/sysmacros.h" 3
#define __SYSMACROS_DM(symbol) __SYSMACROS_DM1 (In the GNU C Library, #symbol is defined\n by <sys/sysmacros.h>. For historical compatibility, it is\n currently defined by <sys/types.h> as well, but we plan to\n remove this soon. To use #symbol, include <sys/sysmacros.h>\n directly. If you did not intend to use a system-defined macro\n #symbol, you should undefine it after including <sys/types.h>.)
# 62 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/sysmacros.h" 3
#define __SYSMACROS_DM1(...) __glibc_macro_warning (#__VA_ARGS__)

#define __SYSMACROS_DECL_TEMPL(rtype,name,proto) extern rtype gnu_dev_##name proto __THROW __attribute_const__;


#define __SYSMACROS_IMPL_TEMPL(rtype,name,proto) __extension__ __extern_inline __attribute_const__ rtype __NTH (gnu_dev_##name proto)





extern unsigned int gnu_dev_major (__dev_t __dev) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern unsigned int gnu_dev_minor (__dev_t __dev) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));
extern __dev_t gnu_dev_makedev (unsigned int __major, unsigned int __minor) __attribute__ ((__nothrow__ )) __attribute__ ((__const__));



__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned int __attribute__ ((__nothrow__ )) gnu_dev_major (__dev_t __dev) { unsigned int __major; __major = ((__dev & (__dev_t) 0x00000000000fff00u) >> 8); __major |= ((__dev & (__dev_t) 0xfffff00000000000u) >> 32); return __major; }
__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned int __attribute__ ((__nothrow__ )) gnu_dev_minor (__dev_t __dev) { unsigned int __minor; __minor = ((__dev & (__dev_t) 0x00000000000000ffu) >> 0); __minor |= ((__dev & (__dev_t) 0x00000ffffff00000u) >> 12); return __minor; }
__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) __dev_t __attribute__ ((__nothrow__ )) gnu_dev_makedev (unsigned int __major, unsigned int __minor) { __dev_t __dev; __dev = (((__dev_t) (__major & 0x00000fffu)) << 8); __dev |= (((__dev_t) (__major & 0xfffff000u)) << 32); __dev |= (((__dev_t) (__minor & 0x000000ffu)) << 0); __dev |= (((__dev_t) (__minor & 0xffffff00u)) << 12); return __dev; }
# 90 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/sysmacros.h" 3
#undef __SYSMACROS_DECL_TEMPL
#undef __SYSMACROS_IMPL_TEMPL
#undef __SYSMACROS_DECLARE_MAJOR
#undef __SYSMACROS_DECLARE_MINOR
#undef __SYSMACROS_DECLARE_MAKEDEV
#undef __SYSMACROS_DEFINE_MAJOR
#undef __SYSMACROS_DEFINE_MINOR
#undef __SYSMACROS_DEFINE_MAKEDEV



#define major(dev) __SYSMACROS_DM (major) gnu_dev_major (dev)
#define minor(dev) __SYSMACROS_DM (minor) gnu_dev_minor (dev)
#define makedev(maj,min) __SYSMACROS_DM (makedev) gnu_dev_makedev (maj, min)
# 206 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 2 3
#undef __SYSMACROS_DEPRECATED_INCLUSION





typedef __blksize_t blksize_t;
#define __blksize_t_defined 





typedef __blkcnt_t blkcnt_t;
#define __blkcnt_t_defined 


typedef __fsblkcnt_t fsblkcnt_t;
#define __fsblkcnt_t_defined 


typedef __fsfilcnt_t fsfilcnt_t;
#define __fsfilcnt_t_defined 
# 254 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 3
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/pthreadtypes.h" 1 3
# 20 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/pthreadtypes.h" 3
#define _BITS_PTHREADTYPES_COMMON_H 1



# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/thread-shared-types.h" 1 3
# 20 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/thread-shared-types.h" 3
#define _THREAD_SHARED_TYPES_H 1
# 58 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/thread-shared-types.h" 3
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/pthreadtypes-arch.h" 1 3
# 19 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/pthreadtypes-arch.h" 3
#define _BITS_PTHREADTYPES_ARCH_H 1


# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/wordsize.h" 1 3



#define __WORDSIZE 64







#define __WORDSIZE_TIME64_COMPAT32 1

#define __SYSCALL_WORDSIZE 64
# 22 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/pthreadtypes-arch.h" 2 3



#define __SIZEOF_PTHREAD_MUTEX_T 40
#define __SIZEOF_PTHREAD_ATTR_T 56
#define __SIZEOF_PTHREAD_MUTEX_T 40
#define __SIZEOF_PTHREAD_RWLOCK_T 56
#define __SIZEOF_PTHREAD_BARRIER_T 32
# 44 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/pthreadtypes-arch.h" 3
#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
#define __SIZEOF_PTHREAD_COND_T 48
#define __SIZEOF_PTHREAD_CONDATTR_T 4
#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
#define __SIZEOF_PTHREAD_BARRIERATTR_T 4


#define __PTHREAD_COMPAT_PADDING_MID 
#define __PTHREAD_COMPAT_PADDING_END 
#define __PTHREAD_MUTEX_LOCK_ELISION 1

#define __LOCK_ALIGNMENT 
#define __ONCE_ALIGNMENT 

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;
  signed char __rwelision;




  unsigned char __pad1[7];
#define __PTHREAD_RWLOCK_ELISION_EXTRA 0, { 0, 0, 0, 0, 0, 0, 0 }

 unsigned long int __pad2;


  unsigned int __flags;
#define __PTHREAD_RWLOCK_INT_FLAGS_SHARED 1
# 92 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/pthreadtypes-arch.h" 3
};
# 59 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/thread-shared-types.h" 2 3




typedef struct __pthread_internal_list
{
  struct __pthread_internal_list *__prev;
  struct __pthread_internal_list *__next;
} __pthread_list_t;
# 78 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/thread-shared-types.h" 3
#define __PTHREAD_SPINS_DATA short __spins; short __elision


#define __PTHREAD_SPINS 0, 0
# 99 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/thread-shared-types.h" 3
struct __pthread_mutex_s
{
  int __lock ;
  unsigned int __count;
  int __owner;

  unsigned int __nusers;



  int __kind;


  short __spins; short __elision;
  __pthread_list_t __list;
#define __PTHREAD_MUTEX_HAVE_PREV 1
# 124 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/thread-shared-types.h" 3
};




struct __pthread_cond_s
{
  __extension__ union
  {
    __extension__ unsigned long long int __wseq;
    struct
    {
      unsigned int __low;
      unsigned int __high;
    } __wseq32;
  };
  __extension__ union
  {
    __extension__ unsigned long long int __g1_start;
    struct
    {
      unsigned int __low;
      unsigned int __high;
    } __g1_start32;
  };
  unsigned int __g_refs[2] ;
  unsigned int __g_size[2];
  unsigned int __g1_orig_size;
  unsigned int __wrefs;
  unsigned int __g_signals[2];
};
# 24 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/pthreadtypes.h" 2 3



typedef unsigned long int pthread_t;




typedef union
{
  char __size[4];
  int __align;
} pthread_mutexattr_t;




typedef union
{
  char __size[4];
  int __align;
} pthread_condattr_t;



typedef unsigned int pthread_key_t;



typedef int pthread_once_t;


union pthread_attr_t
{
  char __size[56];
  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[40];
  long int __align;
} pthread_mutex_t;


typedef union
{
  struct __pthread_cond_s __data;
  char __size[48];
  __extension__ long long int __align;
} pthread_cond_t;





typedef union
{
  struct __pthread_rwlock_arch_t __data;
  char __size[56];
  long int __align;
} pthread_rwlock_t;

typedef union
{
  char __size[8];
  long int __align;
} pthread_rwlockattr_t;





typedef volatile int pthread_spinlock_t;




typedef union
{
  char __size[32];
  long int __align;
} pthread_barrier_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_barrierattr_t;
# 255 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/sys/types.h" 2 3
# 280 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 2 3






extern long int random (void) __attribute__ ((__nothrow__ ));


extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__ ));





extern char *initstate (unsigned int __seed, char *__statebuf,
   size_t __statelen) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (2)));



extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf,
       int32_t *__restrict __result) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1, 2)));

extern int srandom_r (unsigned int __seed, struct random_data *__buf)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (2)));

extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
   size_t __statelen,
   struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (2, 4)));

extern int setstate_r (char *__restrict __statebuf,
         struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1, 2)));





extern int rand (void) __attribute__ ((__nothrow__ ));

extern void srand (unsigned int __seed) __attribute__ ((__nothrow__ ));



extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__ ));







extern double drand48 (void) __attribute__ ((__nothrow__ ));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));


extern long int lrand48 (void) __attribute__ ((__nothrow__ ));
extern long int nrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));


extern long int mrand48 (void) __attribute__ ((__nothrow__ ));
extern long int jrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));


extern void srand48 (long int __seedval) __attribute__ ((__nothrow__ ));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));





struct drand48_data
  {
    unsigned short int __x[3];
    unsigned short int __old_x[3];
    unsigned short int __c;
    unsigned short int __init;
    __extension__ unsigned long long int __a;

  };


extern int drand48_r (struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1, 2)));
extern int erand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1, 2)));


extern int lrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1, 2)));
extern int nrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1, 2)));


extern int mrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1, 2)));
extern int jrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1, 2)));


extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (2)));

extern int seed48_r (unsigned short int __seed16v[3],
       struct drand48_data *__buffer) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1, 2)));

extern int lcong48_r (unsigned short int __param[7],
        struct drand48_data *__buffer)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1, 2)));




extern void *malloc (size_t __size) __attribute__ ((__nothrow__ )) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));

extern void *calloc (size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__ )) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));






extern void *realloc (void *__ptr, size_t __size)
     __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__));
# 448 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern void free (void *__ptr) __attribute__ ((__nothrow__ ));



# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/alloca.h" 1 3
# 19 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/alloca.h" 3
#define _ALLOCA_H 1



#define __need_size_t 

# 1 "/nix/store/b36hqnqzr7my1kllsf0nrnyy0rkxjcsj-clang-4.0.1/bin/../lib/clang/4.0.1/include/stddef.h" 1 3
# 64 "/nix/store/b36hqnqzr7my1kllsf0nrnyy0rkxjcsj-clang-4.0.1/bin/../lib/clang/4.0.1/include/stddef.h" 3
#undef __need_size_t
# 25 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/alloca.h" 2 3




#undef alloca


extern void *alloca (size_t __size) __attribute__ ((__nothrow__ ));


#define alloca(size) __builtin_alloca (size)
# 452 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 2 3





extern void *valloc (size_t __size) __attribute__ ((__nothrow__ )) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));




extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));




extern void *aligned_alloc (size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__ )) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));



extern void abort (void) __attribute__ ((__nothrow__ )) __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));







extern int at_quick_exit (void (*__func) (void)) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));






extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));





extern void exit (int __status) __attribute__ ((__nothrow__ )) __attribute__ ((__noreturn__));





extern void quick_exit (int __status) __attribute__ ((__nothrow__ )) __attribute__ ((__noreturn__));





extern void _Exit (int __status) __attribute__ ((__nothrow__ )) __attribute__ ((__noreturn__));




extern char *getenv (const char *__name) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
# 529 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern int putenv (char *__string) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));





extern int setenv (const char *__name, const char *__value, int __replace)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (2)));


extern int unsetenv (const char *__name) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));






extern int clearenv (void) __attribute__ ((__nothrow__ ));
# 557 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern char *mktemp (char *__template) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));
# 570 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
# 592 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
# 613 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
# 666 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern int system (const char *__command) __attribute__ ((__warn_unused_result__));
# 682 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern char *realpath (const char *__restrict __name,
         char *__restrict __resolved) __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__));





#define __COMPAR_FN_T 
typedef int (*__compar_fn_t) (const void *, const void *);
# 702 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern void *bsearch (const void *__key, const void *__base,
        size_t __nmemb, size_t __size, __compar_fn_t __compar)
     __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__));



# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/stdlib-bsearch.h" 1 3
# 19 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/stdlib-bsearch.h" 3
extern __inline __attribute__ ((__gnu_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 = (void *) (((const char *) __base) + (__idx * __size));
      __comparison = (*__compar) (__key, __p);
      if (__comparison < 0)
 __u = __idx;
      else if (__comparison > 0)
 __l = __idx + 1;
      else
 return (void *) __p;
    }

  return ((void*)0);
}
# 708 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 2 3




extern void qsort (void *__base, size_t __nmemb, size_t __size,
     __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
# 722 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern int abs (int __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
extern long int labs (long int __x) __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));


__extension__ extern long long int llabs (long long int __x)
     __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));






extern div_t div (int __numer, int __denom)
     __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
extern ldiv_t ldiv (long int __numer, long int __denom)
     __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));


__extension__ extern lldiv_t lldiv (long long int __numer,
        long long int __denom)
     __attribute__ ((__nothrow__ )) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
# 754 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));




extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));




extern char *gcvt (double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));




extern char *qecvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
extern char *qfcvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));




extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__ )) __attribute__ ((__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)
     __attribute__ ((__nothrow__ )) __attribute__ ((__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)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (3, 4, 5)));





extern int mblen (const char *__s, size_t __n) __attribute__ ((__nothrow__ ));


extern int mbtowc (wchar_t *__restrict __pwc,
     const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ ));


extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__ ));



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
   const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ ));

extern size_t wcstombs (char *__restrict __s,
   const wchar_t *__restrict __pwcs, size_t __n)
     __attribute__ ((__nothrow__ ));







extern int rpmatch (const char *__response) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
# 839 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern int getsubopt (char **__restrict __optionp,
        char *const *__restrict __tokens,
        char **__restrict __valuep)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__));
# 891 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
extern int getloadavg (double __loadavg[], int __nelem)
     __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (1)));
# 901 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 3
# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/stdlib-float.h" 1 3
# 24 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/stdlib-float.h" 3
extern __inline __attribute__ ((__gnu_inline__)) double
__attribute__ ((__nothrow__ )) atof (const char *__nptr)
{
  return strtod (__nptr, (char **) ((void*)0));
}
# 902 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 2 3



# 1 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/stdlib.h" 1 3
# 23 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/bits/stdlib.h" 3
extern char *__realpath_chk (const char *__restrict __name,
        char *__restrict __resolved,
        size_t __resolvedlen) __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__));
extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) __asm__ ("" "realpath") __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__));


extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __asm__ ("" "__realpath_chk") __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__))




                                      ;

extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__warn_unused_result__)) char *
__attribute__ ((__nothrow__ )) realpath (const char *__restrict __name, char *__restrict __resolved)
{
  if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1)
    {




      return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1));
    }

  return __realpath_alias (__name, __resolved);
}


extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
       size_t __nreal) __attribute__ ((__nothrow__ )) __attribute__ ((__nonnull__ (2)));
extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ptsname_r") __attribute__ ((__nothrow__ ))

     __attribute__ ((__nonnull__ (2)));
extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ptsname_r_chk") __attribute__ ((__nothrow__ ))


     __attribute__ ((__nonnull__ (2))) ;


extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) int
__attribute__ ((__nothrow__ )) ptsname_r (int __fd, char *__buf, size_t __buflen)
{
  if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
    {
      if (!__builtin_constant_p (__buflen))
 return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
      if (__buflen > __builtin_object_size (__buf, 2 > 1))
 return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
    }
  return __ptsname_r_alias (__fd, __buf, __buflen);
}


extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen)
  __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__));
extern int __wctomb_alias (char *__s, wchar_t __wchar) __asm__ ("" "wctomb") __attribute__ ((__nothrow__ )) __attribute__ ((__warn_unused_result__));


extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__warn_unused_result__)) int
__attribute__ ((__nothrow__ )) wctomb (char *__s, wchar_t __wchar)
{



#define __STDLIB_MB_LEN_MAX 16



 if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1))
    return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1));
  return __wctomb_alias (__s, __wchar);
}


extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,
         const char *__restrict __src,
         size_t __len, size_t __dstlen) __attribute__ ((__nothrow__ ));
extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) __asm__ ("" "mbstowcs") __attribute__ ((__nothrow__ ));



extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__mbstowcs_chk") __attribute__ ((__nothrow__ ))




                        ;

extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) size_t
__attribute__ ((__nothrow__ )) mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len)

{
  if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
    {
      if (!__builtin_constant_p (__len))
 return __mbstowcs_chk (__dst, __src, __len,
          __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));

      if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t))
 return __mbstowcs_chk_warn (__dst, __src, __len,
         __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
    }
  return __mbstowcs_alias (__dst, __src, __len);
}


extern size_t __wcstombs_chk (char *__restrict __dst,
         const wchar_t *__restrict __src,
         size_t __len, size_t __dstlen) __attribute__ ((__nothrow__ ));
extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) __asm__ ("" "wcstombs") __attribute__ ((__nothrow__ ));



extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__wcstombs_chk") __attribute__ ((__nothrow__ ))



                                                                    ;

extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) size_t
__attribute__ ((__nothrow__ )) wcstombs (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len)

{
  if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
    {
      if (!__builtin_constant_p (__len))
 return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
      if (__len > __builtin_object_size (__dst, 2 > 1))
 return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
    }
  return __wcstombs_alias (__dst, __src, __len);
}
# 906 "/nix/store/xd2mlzvlgmskbyyb33lz2vdq15k74xpr-glibc-2.26-75-dev/include/stdlib.h" 2 3
# 3 "test.c" 2

int main(void) { return 0; }

@orivej
Copy link
Contributor

orivej commented Nov 23, 2017

I see, I had NIX_x86_64_unknown_linux_gnu_CFLAGS_COMPILE=-I/run/current-system/sw/include which shadowed the issue.

I have read this part of the gcc manual:

 The ISO C standard defines (in clause 4) two classes of conforming
implementation.  A "conforming hosted implementation" supports the whole
standard including all the library facilities; a "conforming
freestanding implementation" is only required to provide certain library
facilities: those in '<float.h>', '<limits.h>', '<stdarg.h>', and
'<stddef.h>'; since AMD1, also those in '<iso646.h>'; since C99, also
those in '<stdbool.h>' and '<stdint.h>'; and since C11, also those in
'<stdalign.h>' and '<stdnoreturn.h>'.  In addition, complex types, added
in C99, are not required for freestanding implementations.

It seems that there is no #include <stdlib.h> in the freestanding environment, and you should not expect it to compile unless you provide an include path with stdlib.h compatible with that environment.

@Havvy
Copy link
Contributor

Havvy commented Mar 8, 2018

Triage I guess...I am running into this issue still.

@eddyb
Copy link
Contributor

eddyb commented Jul 30, 2018

Somehow I used to bypass this problem but now I'm hitting it too.
The only reason LLVM's compiler-rt includes stdlib.h is to access abort.

EDIT: this fails:

echo -e '#include <limits.h>\n#include <stdlib.h>' |\
nix-shell -E 'with import <nixpkgs> {}; clangStdenv.mkDerivation { name = "name"; }' \
    --run 'clang -ffreestanding -x c -'

This works (presumably by lacking some include paths):

echo -e '#include <limits.h>\n#include <stdlib.h>' |\
nix run nixpkgs.clang \
    -c clang -ffreestanding -x c -

EDIT2: so this works! (I had env hardeningDisable=all before but it does nothing now?)

echo -e '#include <limits.h>\n#include <stdlib.h>' |\
nix-shell -E 'with import <nixpkgs> {}; clangStdenv.mkDerivation { name = "name"; }' \
    --run 'env -u NIX_HARDENING_ENABLE clang -ffreestanding -x c -'

EDIT3: presumably the correct way to do it (in the derivation expression):

echo -e '#include <limits.h>\n#include <stdlib.h>' |\
nix-shell -E 'with import <nixpkgs> {}; clangStdenv.mkDerivation { name = "name"; hardeningDisable = [ "all" ]; }' \
    --run 'clang -ffreestanding -x c -'

@leo60228
Copy link
Member

leo60228 commented Apr 18, 2020

If you're running into this while building rustc manually:

nix-shell -E 'with import <nixpkgs> {}; clangStdenv.mkDerivation { name = "name"; hardeningDisable = [ "all" ]; buildInputs = [patchelf ncurses zlib libxml2 lld ninja clang]; }'

@stale
Copy link

stale bot commented Oct 16, 2020

Hello, I'm a bot and I thank you in the name of the community for opening this issue.

To help our human contributors focus on the most-relevant reports, I check up on old issues to see if they're still relevant. This issue has had no activity for 180 days, and so I marked it as stale, but you can rest assured it will never be closed by a non-human.

The community would appreciate your effort in checking if the issue is still valid. If it isn't, please close it.

If the issue persists, and you'd like to remove the stale label, you simply need to leave a comment. Your comment can be as simple as "still important to me". If you'd like it to get more attention, you can ask for help by searching for maintainers and people that previously touched related code and @ mention them in a comment. You can use Git blame or GitHub's web interface on the relevant files to find them.

Lastly, you can always ask for help at our Discourse Forum or at #nixos' IRC channel.

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Oct 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md
Projects
None yet
Development

No branches or pull requests

6 participants