1{ 2 "errno": { 3 "LIBC_CONF_ERRNO_MODE": { 4 "value": "LIBC_ERRNO_MODE_DEFAULT", 5 "doc": "The implementation used for errno, acceptable values are LIBC_ERRNO_MODE_DEFAULT, LIBC_ERRNO_MODE_UNDEFINED, LIBC_ERRNO_MODE_THREAD_LOCAL, LIBC_ERRNO_MODE_SHARED, LIBC_ERRNO_MODE_EXTERNAL, and LIBC_ERRNO_MODE_SYSTEM." 6 } 7 }, 8 "printf": { 9 "LIBC_CONF_PRINTF_DISABLE_FLOAT": { 10 "value": false, 11 "doc": "Disable printing floating point values in printf and friends." 12 }, 13 "LIBC_CONF_PRINTF_DISABLE_INDEX_MODE": { 14 "value": false, 15 "doc": "Disable index mode in the printf format string." 16 }, 17 "LIBC_CONF_PRINTF_DISABLE_WRITE_INT": { 18 "value": false, 19 "doc": "Disable handling of %n in printf format string." 20 }, 21 "LIBC_CONF_PRINTF_FLOAT_TO_STR_USE_MEGA_LONG_DOUBLE_TABLE": { 22 "value": false, 23 "doc": "Use large table for better printf long double performance." 24 }, 25 "LIBC_CONF_PRINTF_FLOAT_TO_STR_USE_DYADIC_FLOAT": { 26 "value": false, 27 "doc": "Use dyadic float for faster and smaller but less accurate printf doubles." 28 }, 29 "LIBC_CONF_PRINTF_FLOAT_TO_STR_NO_SPECIALIZE_LD": { 30 "value": false, 31 "doc": "Use the same mode for double and long double in printf." 32 }, 33 "LIBC_CONF_PRINTF_DISABLE_FIXED_POINT": { 34 "value": false, 35 "doc": "Disable printing fixed point values in printf and friends." 36 }, 37 "LIBC_CONF_PRINTF_DISABLE_STRERROR": { 38 "value": false, 39 "doc": "Disable handling of %m to print strerror in printf and friends." 40 } 41 }, 42 "scanf": { 43 "LIBC_CONF_SCANF_DISABLE_FLOAT": { 44 "value": false, 45 "doc": "Disable parsing floating point values in scanf and friends." 46 }, 47 "LIBC_CONF_SCANF_DISABLE_INDEX_MODE": { 48 "value": false, 49 "doc": "Disable index mode in the scanf format string." 50 } 51 }, 52 "string": { 53 "LIBC_CONF_STRING_UNSAFE_WIDE_READ": { 54 "value": false, 55 "doc": "Read more than a byte at a time to perform byte-string operations like strlen." 56 }, 57 "LIBC_CONF_MEMSET_X86_USE_SOFTWARE_PREFETCHING": { 58 "value": false, 59 "doc": "Inserts prefetch for write instructions (PREFETCHW) for memset on x86 to recover performance when hardware prefetcher is disabled." 60 } 61 }, 62 "codegen": { 63 "LIBC_CONF_KEEP_FRAME_POINTER": { 64 "value": true, 65 "doc": "Keep frame pointer in functions for better debugging experience." 66 }, 67 "LIBC_CONF_ENABLE_STRONG_STACK_PROTECTOR": { 68 "value": true, 69 "doc": "Enable -fstack-protector-strong to defend against stack smashing attack." 70 } 71 }, 72 "pthread": { 73 "LIBC_CONF_TIMEOUT_ENSURE_MONOTONICITY": { 74 "value": true, 75 "doc": "Automatically adjust timeout to CLOCK_MONOTONIC (default to true). POSIX API may require CLOCK_REALTIME, which can be unstable and leading to unexpected behavior. This option will convert the real-time timestamp to monotonic timestamp relative to the time of call." 76 }, 77 "LIBC_CONF_RAW_MUTEX_DEFAULT_SPIN_COUNT": { 78 "value": 100, 79 "doc": "Default number of spins before blocking if a mutex is in contention (default to 100)." 80 }, 81 "LIBC_CONF_RWLOCK_DEFAULT_SPIN_COUNT": { 82 "value": 100, 83 "doc": "Default number of spins before blocking if a rwlock is in contention (default to 100)." 84 } 85 }, 86 "math": { 87 "LIBC_CONF_MATH_OPTIMIZATIONS": { 88 "value": 0, 89 "doc": "Configures optimizations for math functions. Values accepted are LIBC_MATH_SKIP_ACCURATE_PASS, LIBC_MATH_SMALL_TABLES, LIBC_MATH_NO_ERRNO, LIBC_MATH_NO_EXCEPT, and LIBC_MATH_FAST." 90 }, 91 "LIBC_CONF_FREXP_INF_NAN_EXPONENT": { 92 "value": "", 93 "doc": "The value written back to the second parameter when calling frexp/frexpf/frexpl` with `+/-Inf`/`NaN` is unspecified. Configue an explicit exp value for Inf/NaN inputs." 94 } 95 }, 96 "qsort": { 97 "LIBC_CONF_QSORT_IMPL": { 98 "value": "LIBC_QSORT_QUICK_SORT", 99 "doc": "Configures sorting algorithm for qsort and qsort_r. Values accepted are LIBC_QSORT_QUICK_SORT, LIBC_QSORT_HEAP_SORT." 100 } 101 }, 102 "setjmp": { 103 "LIBC_CONF_SETJMP_AARCH64_RESTORE_PLATFORM_REGISTER": { 104 "value": true, 105 "doc": "Make setjmp save the value of x18, and longjmp restore it. The AArch64 ABI delegates this register to platform ABIs, which can choose whether to make it caller-saved." 106 } 107 }, 108 "time": { 109 "LIBC_CONF_TIME_64BIT": { 110 "value": false, 111 "doc": "Force the size of time_t to 64 bits, even on platforms where compatibility considerations would otherwise make it 32-bit." 112 } 113 }, 114 "general": { 115 "LIBC_ADD_NULL_CHECKS": { 116 "value": true, 117 "doc": "Add nullptr checks in the library's implementations to some functions for which passing nullptr is undefined behavior." 118 } 119 } 120} 121