1 /* 2 * libxml.h: internal header only used during the compilation of libxml 3 * 4 * See COPYRIGHT for the status of this software 5 * 6 * Author: [email protected] 7 */ 8 9 #ifndef __XML_LIBXML_H__ 10 #define __XML_LIBXML_H__ 11 12 /* 13 * These macros must be defined before including system headers. 14 * Do not add any #include directives above this block. 15 */ 16 #ifndef NO_LARGEFILE_SOURCE 17 #ifndef _LARGEFILE_SOURCE 18 #define _LARGEFILE_SOURCE 19 #endif 20 #ifndef _FILE_OFFSET_BITS 21 #define _FILE_OFFSET_BITS 64 22 #endif 23 #endif 24 25 /* 26 * These files are generated by the build system and contain private 27 * and public build configuration. 28 */ 29 #include "config.h" 30 #include <libxml/xmlversion.h> 31 32 /* 33 * Due to some Autotools limitations, this variable must be passed as 34 * compiler flag. Define a default value if the macro wasn't set by the 35 * build system. 36 */ 37 #ifndef SYSCONFDIR 38 #define SYSCONFDIR "/etc" 39 #endif 40 41 #if !defined(_WIN32) && \ 42 !defined(__CYGWIN__) && \ 43 (defined(__clang__) || \ 44 (defined(__GNUC__) && (__GNUC__ >= 4))) 45 #define XML_HIDDEN __attribute__((visibility("hidden"))) 46 #else 47 #define XML_HIDDEN 48 #endif 49 50 #if defined(__clang__) || \ 51 (defined(__GNUC__) && (__GNUC__ >= 8) && !defined(__EDG__)) 52 #define ATTRIBUTE_NO_SANITIZE(arg) __attribute__((no_sanitize(arg))) 53 #else 54 #define ATTRIBUTE_NO_SANITIZE(arg) 55 #endif 56 57 #ifdef __clang__ 58 #if __clang_major__ >= 12 59 #define ATTRIBUTE_NO_SANITIZE_INTEGER \ 60 ATTRIBUTE_NO_SANITIZE("unsigned-integer-overflow") \ 61 ATTRIBUTE_NO_SANITIZE("unsigned-shift-base") 62 #else 63 #define ATTRIBUTE_NO_SANITIZE_INTEGER \ 64 ATTRIBUTE_NO_SANITIZE("unsigned-integer-overflow") 65 #endif 66 #else 67 #define ATTRIBUTE_NO_SANITIZE_INTEGER 68 #endif 69 70 #endif /* ! __XML_LIBXML_H__ */ 71