(root)/
tar-1.35/
gnu/
libc-config.h
       1  /* System definitions for code taken from the GNU C Library
       2  
       3     Copyright 2017-2023 Free Software Foundation, Inc.
       4  
       5     This program is free software; you can redistribute it and/or
       6     modify it under the terms of the GNU Lesser General Public
       7     License as published by the Free Software Foundation; either
       8     version 2.1 of the License, or (at your option) any later version.
       9  
      10     This program is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      13     Lesser General Public License for more details.
      14  
      15     You should have received a copy of the GNU Lesser General Public
      16     License along with this program; if not, see
      17     <https://www.gnu.org/licenses/>.  */
      18  
      19  /* Written by Paul Eggert.  */
      20  
      21  /* This is intended to be a good-enough substitute for glibc system
      22     macros like those defined in <sys/cdefs.h>, so that Gnulib code
      23     shared with glibc can do this as the first #include:
      24  
      25       #ifndef _LIBC
      26       # include <libc-config.h>
      27       #endif
      28  
      29     When compiled as part of glibc this is a no-op; when compiled as
      30     part of Gnulib this includes Gnulib's <config.h> and defines macros
      31     that glibc library code would normally assume.
      32  
      33     Note: This header file MUST NOT be included by public header files
      34     of Gnulib.  */
      35  
      36  #include <config.h>
      37  
      38  /* On glibc this includes <features.h> and <sys/cdefs.h> and #defines
      39     _FEATURES_H, __WORDSIZE, and __set_errno.  On FreeBSD 11 and
      40     DragonFlyBSD 5.9 it includes <sys/cdefs.h> which defines __nonnull.
      41     Elsewhere it is harmless.  */
      42  #include <errno.h>
      43  
      44  /* From glibc <errno.h>.  */
      45  #ifndef __set_errno
      46  # define __set_errno(val) (errno = (val))
      47  #endif
      48  
      49  /* From glibc <features.h>.  */
      50  
      51  #ifndef __GNUC_PREREQ
      52  # if defined __GNUC__ && defined __GNUC_MINOR__
      53  #  define __GNUC_PREREQ(maj, min) ((maj) < __GNUC__ + ((min) <= __GNUC_MINOR__))
      54  # else
      55  #  define __GNUC_PREREQ(maj, min) 0
      56  # endif
      57  #endif
      58  
      59  #ifndef __glibc_clang_prereq
      60  # if defined __clang_major__ && defined __clang_minor__
      61  #  ifdef __apple_build_version__
      62  /* Apple for some reason renumbers __clang_major__ and __clang_minor__.
      63     Gnulib code uses only __glibc_clang_prereq (3, 5); map it to
      64     6000000 <= __apple_build_version__.  Support for other calls to
      65     __glibc_clang_prereq can be added here as needed.  */
      66  #   define __glibc_clang_prereq(maj, min) \
      67        ((maj) == 3 && (min) == 5 ? 6000000 <= __apple_build_version__ : 0)
      68  #  else
      69  #   define __glibc_clang_prereq(maj, min) \
      70        ((maj) < __clang_major__ + ((min) <= __clang_minor__))
      71  #  endif
      72  # else
      73  #  define __glibc_clang_prereq(maj, min) 0
      74  # endif
      75  #endif
      76  
      77  #ifndef __attribute_nonnull__
      78  /* <sys/cdefs.h> either does not exist, or is too old for Gnulib.
      79     Prepare to include <cdefs.h>, which is Gnulib's version of a
      80     more-recent glibc <sys/cdefs.h>.  */
      81  
      82  /* Define _FEATURES_H so that <cdefs.h> does not include <features.h>.  */
      83  # ifndef _FEATURES_H
      84  #  define _FEATURES_H 1
      85  # endif
      86  /* Define __GNULIB_CDEFS so that <cdefs.h> does not attempt to include
      87     nonexistent files.  */
      88  # define __GNULIB_CDEFS
      89  /* Undef the macros unconditionally defined by our copy of glibc
      90     <sys/cdefs.h>, so that they do not clash with any system-defined
      91     versions.  */
      92  # undef _SYS_CDEFS_H
      93  # undef __ASMNAME
      94  # undef __ASMNAME2
      95  # undef __BEGIN_DECLS
      96  # undef __CONCAT
      97  # undef __END_DECLS
      98  # undef __HAVE_GENERIC_SELECTION
      99  # undef __LDBL_COMPAT
     100  # undef __LDBL_REDIR
     101  # undef __LDBL_REDIR1
     102  # undef __LDBL_REDIR1_DECL
     103  # undef __LDBL_REDIR1_NTH
     104  # undef __LDBL_REDIR2_DECL
     105  # undef __LDBL_REDIR_DECL
     106  # undef __LDBL_REDIR_NTH
     107  # undef __LEAF
     108  # undef __LEAF_ATTR
     109  # undef __NTH
     110  # undef __NTHNL
     111  # undef __REDIRECT
     112  # undef __REDIRECT_LDBL
     113  # undef __REDIRECT_NTH
     114  # undef __REDIRECT_NTHNL
     115  # undef __REDIRECT_NTH_LDBL
     116  # undef __STRING
     117  # undef __THROW
     118  # undef __THROWNL
     119  # undef __attr_access
     120  # undef __attr_access_none
     121  # undef __attr_dealloc
     122  # undef __attr_dealloc_free
     123  # undef __attribute__
     124  # undef __attribute_alloc_align__
     125  # undef __attribute_alloc_size__
     126  # undef __attribute_artificial__
     127  # undef __attribute_const__
     128  # undef __attribute_deprecated__
     129  # undef __attribute_deprecated_msg__
     130  # undef __attribute_format_arg__
     131  # undef __attribute_format_strfmon__
     132  # undef __attribute_malloc__
     133  # undef __attribute_maybe_unused__
     134  # undef __attribute_noinline__
     135  # undef __attribute_nonstring__
     136  # undef __attribute_pure__
     137  # undef __attribute_returns_twice__
     138  # undef __attribute_used__
     139  # undef __attribute_warn_unused_result__
     140  # undef __errordecl
     141  # undef __extension__
     142  # undef __extern_always_inline
     143  # undef __extern_inline
     144  # undef __flexarr
     145  # undef __fortified_attr_access
     146  # undef __fortify_function
     147  # undef __glibc_c99_flexarr_available
     148  # undef __glibc_has_attribute
     149  # undef __glibc_has_builtin
     150  # undef __glibc_has_extension
     151  # undef __glibc_likely
     152  # undef __glibc_macro_warning
     153  # undef __glibc_macro_warning1
     154  # undef __glibc_unlikely
     155  # undef __inline
     156  # undef __ptr_t
     157  # undef __restrict
     158  # undef __restrict_arr
     159  # undef __va_arg_pack
     160  # undef __va_arg_pack_len
     161  # undef __warnattr
     162  # undef __wur
     163  # ifndef __GNULIB_CDEFS
     164  #  undef __bos
     165  #  undef __bos0
     166  #  undef __glibc_fortify
     167  #  undef __glibc_fortify_n
     168  #  undef __glibc_objsize
     169  #  undef __glibc_objsize0
     170  #  undef __glibc_safe_len_cond
     171  #  undef __glibc_safe_or_unknown_len
     172  #  undef __glibc_unsafe_len
     173  #  undef __glibc_unsigned_or_positive
     174  # endif
     175  
     176  /* Include our copy of glibc <sys/cdefs.h>.  */
     177  # include <cdefs.h>
     178  
     179  /* <cdefs.h> __inline is too pessimistic for non-GCC.  */
     180  # undef __inline
     181  # ifndef HAVE___INLINE
     182  #  if 199901 <= __STDC_VERSION__ || defined inline
     183  #   define __inline inline
     184  #  else
     185  #   define __inline
     186  #  endif
     187  # endif
     188  
     189  #endif /* defined __glibc_likely */
     190  
     191  
     192  /* A substitute for glibc <libc-symbols.h>, good enough for Gnulib.  */
     193  #define attribute_hidden
     194  #define libc_hidden_proto(name)
     195  #define libc_hidden_def(name)
     196  #define libc_hidden_weak(name)
     197  #define libc_hidden_ver(local, name)
     198  #define strong_alias(name, aliasname)
     199  #define weak_alias(name, aliasname)
     200  
     201  /* A substitute for glibc <shlib-compat.h>, good enough for Gnulib.  */
     202  #define SHLIB_COMPAT(lib, introduced, obsoleted) 0
     203  #define compat_symbol(lib, local, symbol, version) extern int dummy
     204  #define versioned_symbol(lib, local, symbol, version) extern int dummy