#ifndef LI_FIRST_H #define LI_FIRST_H #ifdef HAVE_CONFIG_H # include "config.h" #else # ifndef _GNU_SOURCE # define _GNU_SOURCE # endif #endif #ifndef __STDC_WANT_LIB_EXT1__ #define __STDC_WANT_LIB_EXT1__ 1 #endif #ifdef __COVERITY__ #define _Float128 long double #define _Float64x long double #define _Float64 double #define _Float32x double #define _Float32 float #endif #include #include #if defined HAVE_STDINT_H # include #elif defined HAVE_INTTYPES_H # include #endif /* solaris and NetBSD 1.3.x again */ #if (!defined(HAVE_STDINT_H)) && (!defined(HAVE_INTTYPES_H)) && (!defined(uint32_t)) # define uint32_t u_int32_t #endif #include #ifndef SIZE_MAX # ifdef SIZE_T_MAX # define SIZE_MAX SIZE_T_MAX # else # define SIZE_MAX (~(size_t)0u) # endif #endif #ifndef SSIZE_MAX # define SSIZE_MAX ((ssize_t)(SIZE_MAX >> 1)) #endif #define UNUSED(x) ( (void)(x) ) #ifndef __has_attribute /* clang */ #define __has_attribute(x) 0 #endif #ifdef __GNUC__ #ifndef __GNUC_PREREQ # ifdef __GNUC_PREREQ__ # define __GNUC_PREREQ __GNUC_PREREQ__ # elif defined __GNUC__ && defined __GNUC_MINOR__ # define __GNUC_PREREQ(maj, min) \ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) # else # define __GNUC_PREREQ(maj, min) 0 # endif #endif #else #define __GNUC_PREREQ(maj,min) 0 #endif #ifndef __attribute_cold__ #if __has_attribute(cold) \ || __GNUC_PREREQ(4,3) #define __attribute_cold__ __attribute__((__cold__)) #else #define __attribute_cold__ #endif #endif #ifndef __attribute_noreturn__ #if __has_attribute(noreturn) \ || __GNUC_PREREQ(2,5) #define __attribute_noreturn__ __attribute__((__noreturn__)) #else #define __attribute_noreturn__ #endif #endif #endif