modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/builtins/chk.h (about)

     1  #ifndef os
     2  # define os(ptr) __builtin_object_size (ptr, 0)
     3  #endif
     4  
     5  /* This is one of the alternatives for object size checking.
     6     If dst has side-effects, size checking will never be done.  */
     7  #undef memcpy
     8  #define memcpy(dst, src, len) \
     9    __builtin___memcpy_chk (dst, src, len, os (dst))
    10  #undef mempcpy
    11  #define mempcpy(dst, src, len) \
    12    __builtin___mempcpy_chk (dst, src, len, os (dst))
    13  #undef memmove
    14  #define memmove(dst, src, len) \
    15    __builtin___memmove_chk (dst, src, len, os (dst))
    16  #undef memset
    17  #define memset(dst, val, len) \
    18    __builtin___memset_chk (dst, val, len, os (dst))
    19  #undef strcpy
    20  #define strcpy(dst, src) \
    21    __builtin___strcpy_chk (dst, src, os (dst))
    22  #undef stpcpy
    23  #define stpcpy(dst, src) \
    24    __builtin___stpcpy_chk (dst, src, os (dst))
    25  #undef strcat
    26  #define strcat(dst, src) \
    27    __builtin___strcat_chk (dst, src, os (dst))
    28  #undef strncpy
    29  #define strncpy(dst, src, len) \
    30    __builtin___strncpy_chk (dst, src, len, os (dst))
    31  #undef stpncpy
    32  #define stpncpy(dst, src, len) \
    33    __builtin___stpncpy_chk (dst, src, len, os (dst))
    34  #undef strncat
    35  #define strncat(dst, src, len) \
    36    __builtin___strncat_chk (dst, src, len, os (dst))
    37  #undef sprintf
    38  #define sprintf(dst, ...) \
    39    __builtin___sprintf_chk (dst, 0, os (dst), __VA_ARGS__)
    40  #undef vsprintf
    41  #define vsprintf(dst, fmt, ap) \
    42    __builtin___vsprintf_chk (dst, 0, os (dst), fmt, ap)
    43  #undef snprintf
    44  #define snprintf(dst, len, ...) \
    45    __builtin___snprintf_chk (dst, len, 0, os (dst), __VA_ARGS__)
    46  #undef vsnprintf
    47  #define vsnprintf(dst, len, fmt, ap) \
    48    __builtin___vsnprintf_chk (dst, len, 0, os (dst), fmt, ap)
    49  
    50  /* Now "redefine" even builtins for the purpose of testing.  */
    51  #undef __builtin_memcpy
    52  #define __builtin_memcpy(dst, src, len) memcpy (dst, src, len)
    53  #undef __builtin_mempcpy
    54  #define __builtin_mempcpy(dst, src, len) mempcpy (dst, src, len)
    55  #undef __builtin_memmove
    56  #define __builtin_memmove(dst, src, len) memmove (dst, src, len)
    57  #undef __builtin_memset
    58  #define __builtin_memset(dst, val, len) memset (dst, val, len)
    59  #undef __builtin_strcpy
    60  #define __builtin_strcpy(dst, src) strcpy (dst, src)
    61  #undef __builtin_stpcpy
    62  #define __builtin_stpcpy(dst, src) stpcpy (dst, src)
    63  #undef __builtin_strcat
    64  #define __builtin_strcat(dst, src) strcat (dst, src)
    65  #undef __builtin_strncpy
    66  #define __builtin_strncpy(dst, src, len) strncpy (dst, src, len)
    67  #undef __builtin_strncat
    68  #define __builtin_strncat(dst, src, len) strncat (dst, src, len)
    69  #undef __builtin_sprintf
    70  #define __builtin_sprintf(dst, ...) sprintf (dst, __VA_ARGS__)
    71  #undef __builtin_vsprintf
    72  #define __builtin_vsprintf(dst, fmt, ap) vsprintf (dst, fmt, ap)
    73  #undef __builtin_snprintf
    74  #define __builtin_snprintf(dst, len, ...) snprintf (dst, len, __VA_ARGS__)
    75  #undef __builtin_vsnprintf
    76  #define __builtin_vsnprintf(dst, len, fmt, ap) vsnprintf (dst, len, fmt, ap)
    77  
    78  extern void *chk_fail_buf[];
    79  extern volatile int chk_fail_allowed, chk_calls;
    80  extern volatile int memcpy_disallowed, mempcpy_disallowed, memmove_disallowed;
    81  extern volatile int memset_disallowed, strcpy_disallowed, stpcpy_disallowed;
    82  extern volatile int strncpy_disallowed, stpncpy_disallowed, strcat_disallowed;
    83  extern volatile int strncat_disallowed, sprintf_disallowed, vsprintf_disallowed;
    84  extern volatile int snprintf_disallowed, vsnprintf_disallowed;
    85  
    86  /* A storage class that ensures that declarations bind locally.  We want
    87     to test non-static declarations where we know it is safe to do so.  */
    88  #if __PIC__ && !__PIE__
    89  #define LOCAL static
    90  #else
    91  #define LOCAL
    92  #endif