[IRBuilder] Refactor FMF interface (#121657)
[llvm-project.git] / libc / config / config.json
blob9a5d5c3c68da6098ac9b2a2e62dd52935c860afd
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   }