llvm-runtime-resources-darwin 0.0.0 → 23.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +33 -0
  3. package/include/__clang_cuda_builtin_vars.h +121 -0
  4. package/include/__clang_cuda_cmath.h +512 -0
  5. package/include/__clang_cuda_complex_builtins.h +236 -0
  6. package/include/__clang_cuda_device_functions.h +1572 -0
  7. package/include/__clang_cuda_intrinsics.h +975 -0
  8. package/include/__clang_cuda_libdevice_declares.h +468 -0
  9. package/include/__clang_cuda_math.h +353 -0
  10. package/include/__clang_cuda_math_forward_declares.h +289 -0
  11. package/include/__clang_cuda_runtime_wrapper.h +526 -0
  12. package/include/__clang_cuda_texture_intrinsics.h +1177 -0
  13. package/include/__clang_gpu_builtin_vars.h +71 -0
  14. package/include/__clang_gpu_device_functions.h +411 -0
  15. package/include/__clang_gpu_intrinsics.h +242 -0
  16. package/include/__clang_hip_cmath.h +848 -0
  17. package/include/__clang_hip_libdevice_declares.h +238 -0
  18. package/include/__clang_hip_math.h +1405 -0
  19. package/include/__clang_hip_runtime_wrapper.h +170 -0
  20. package/include/__clang_hip_stdlib.h +43 -0
  21. package/include/__clang_spirv_builtins.h +217 -0
  22. package/include/__clang_spirv_libdevice_declares.h +170 -0
  23. package/include/__clang_spirv_math.h +719 -0
  24. package/include/__float_float.h +176 -0
  25. package/include/__float_header_macro.h +12 -0
  26. package/include/__float_infinity_nan.h +20 -0
  27. package/include/__stdarg___gnuc_va_list.h +13 -0
  28. package/include/__stdarg___va_copy.h +12 -0
  29. package/include/__stdarg_header_macro.h +12 -0
  30. package/include/__stdarg_va_arg.h +22 -0
  31. package/include/__stdarg_va_copy.h +12 -0
  32. package/include/__stdarg_va_list.h +13 -0
  33. package/include/__stddef_header_macro.h +12 -0
  34. package/include/__stddef_max_align_t.h +27 -0
  35. package/include/__stddef_null.h +29 -0
  36. package/include/__stddef_nullptr_t.h +29 -0
  37. package/include/__stddef_offsetof.h +17 -0
  38. package/include/__stddef_ptrdiff_t.h +20 -0
  39. package/include/__stddef_rsize_t.h +20 -0
  40. package/include/__stddef_size_t.h +20 -0
  41. package/include/__stddef_unreachable.h +21 -0
  42. package/include/__stddef_wchar_t.h +28 -0
  43. package/include/__stddef_wint_t.h +15 -0
  44. package/include/__wmmintrin_aes.h +140 -0
  45. package/include/__wmmintrin_pclmul.h +48 -0
  46. package/include/adcintrin.h +165 -0
  47. package/include/adxintrin.h +107 -0
  48. package/include/altivec.h +19434 -0
  49. package/include/amdgpuintrin.h +164 -0
  50. package/include/amdhsa_abi.h +83 -0
  51. package/include/ammintrin.h +183 -0
  52. package/include/amo.h +220 -0
  53. package/include/amxavx512intrin.h +596 -0
  54. package/include/amxcomplexintrin.h +167 -0
  55. package/include/amxfp16intrin.h +93 -0
  56. package/include/amxfp8intrin.h +230 -0
  57. package/include/amxintrin.h +492 -0
  58. package/include/amxmovrsintrin.h +48 -0
  59. package/include/andes_vector.h +21 -0
  60. package/include/arm64_neon.h +21 -0
  61. package/include/arm64intr.h +45 -0
  62. package/include/arm_acle.h +866 -0
  63. package/include/arm_bf16.h +20 -0
  64. package/include/arm_cde.h +410 -0
  65. package/include/arm_cmse.h +217 -0
  66. package/include/arm_fp16.h +596 -0
  67. package/include/arm_mve.h +19187 -0
  68. package/include/arm_neon.h +74351 -0
  69. package/include/arm_neon_sve_bridge.h +182 -0
  70. package/include/arm_sme.h +3753 -0
  71. package/include/arm_sve.h +32698 -0
  72. package/include/arm_vector_types.h +432 -0
  73. package/include/armintr.h +31 -0
  74. package/include/avx10_2_512bf16intrin.h +568 -0
  75. package/include/avx10_2_512convertintrin.h +322 -0
  76. package/include/avx10_2_512minmaxintrin.h +127 -0
  77. package/include/avx10_2_512niintrin.h +314 -0
  78. package/include/avx10_2_512satcvtdsintrin.h +307 -0
  79. package/include/avx10_2_512satcvtintrin.h +301 -0
  80. package/include/avx10_2bf16intrin.h +1094 -0
  81. package/include/avx10_2convertintrin.h +3257 -0
  82. package/include/avx10_2copyintrin.h +66 -0
  83. package/include/avx10_2minmaxintrin.h +232 -0
  84. package/include/avx10_2niintrin.h +409 -0
  85. package/include/avx10_2satcvtdsintrin.h +376 -0
  86. package/include/avx10_2satcvtintrin.h +312 -0
  87. package/include/avx2intrin.h +5190 -0
  88. package/include/avx512bf16intrin.h +292 -0
  89. package/include/avx512bitalgintrin.h +75 -0
  90. package/include/avx512bmmintrin.h +174 -0
  91. package/include/avx512bmmvlintrin.h +245 -0
  92. package/include/avx512bwintrin.h +1885 -0
  93. package/include/avx512cdintrin.h +112 -0
  94. package/include/avx512dqintrin.h +1350 -0
  95. package/include/avx512fintrin.h +9351 -0
  96. package/include/avx512fp16intrin.h +3349 -0
  97. package/include/avx512ifmaintrin.h +68 -0
  98. package/include/avx512ifmavlintrin.h +138 -0
  99. package/include/avx512vbmi2intrin.h +364 -0
  100. package/include/avx512vbmiintrin.h +98 -0
  101. package/include/avx512vbmivlintrin.h +179 -0
  102. package/include/avx512vlbf16intrin.h +527 -0
  103. package/include/avx512vlbitalgintrin.h +135 -0
  104. package/include/avx512vlbwintrin.h +3052 -0
  105. package/include/avx512vlcdintrin.h +202 -0
  106. package/include/avx512vldqintrin.h +1156 -0
  107. package/include/avx512vlfp16intrin.h +2090 -0
  108. package/include/avx512vlintrin.h +8067 -0
  109. package/include/avx512vlvbmi2intrin.h +702 -0
  110. package/include/avx512vlvnniintrin.h +308 -0
  111. package/include/avx512vlvp2intersectintrin.h +123 -0
  112. package/include/avx512vnniintrin.h +113 -0
  113. package/include/avx512vp2intersectintrin.h +77 -0
  114. package/include/avx512vpopcntdqintrin.h +62 -0
  115. package/include/avx512vpopcntdqvlintrin.h +105 -0
  116. package/include/avxifmaintrin.h +193 -0
  117. package/include/avxintrin.h +5064 -0
  118. package/include/avxneconvertintrin.h +484 -0
  119. package/include/avxvnniint16intrin.h +451 -0
  120. package/include/avxvnniint8intrin.h +454 -0
  121. package/include/avxvnniintrin.h +238 -0
  122. package/include/bmi2intrin.h +253 -0
  123. package/include/bmiintrin.h +604 -0
  124. package/include/builtins.h +19 -0
  125. package/include/cet.h +66 -0
  126. package/include/cetintrin.h +115 -0
  127. package/include/cldemoteintrin.h +36 -0
  128. package/include/clflushoptintrin.h +36 -0
  129. package/include/clwbintrin.h +38 -0
  130. package/include/clzerointrin.h +38 -0
  131. package/include/cmpccxaddintrin.h +70 -0
  132. package/include/cpuid.h +451 -0
  133. package/include/crc32intrin.h +102 -0
  134. package/include/cuda_wrappers/__utility/declval.h +28 -0
  135. package/include/cuda_wrappers/algorithm +116 -0
  136. package/include/cuda_wrappers/bits/basic_string.h +9 -0
  137. package/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  138. package/include/cuda_wrappers/bits/c++config.h +61 -0
  139. package/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  140. package/include/cuda_wrappers/cmath +44 -0
  141. package/include/cuda_wrappers/complex +90 -0
  142. package/include/cuda_wrappers/new +108 -0
  143. package/include/emmintrin.h +4940 -0
  144. package/include/endian.h +91 -0
  145. package/include/enqcmdintrin.h +63 -0
  146. package/include/f16cintrin.h +176 -0
  147. package/include/float.h +48 -0
  148. package/include/fma4intrin.h +220 -0
  149. package/include/fmaintrin.h +826 -0
  150. package/include/fuzzer/FuzzedDataProvider.h +397 -0
  151. package/include/fxsrintrin.h +91 -0
  152. package/include/gfniintrin.h +238 -0
  153. package/include/gpuintrin.h +348 -0
  154. package/include/hexagon_circ_brev_intrinsics.h +298 -0
  155. package/include/hexagon_protos.h +8439 -0
  156. package/include/hexagon_types.h +2628 -0
  157. package/include/hlsl_alias_intrinsics_gen.inc +3869 -0
  158. package/include/hlsl_inline_intrinsics_gen.inc +546 -0
  159. package/include/hresetintrin.h +49 -0
  160. package/include/htmintrin.h +212 -0
  161. package/include/htmxlintrin.h +345 -0
  162. package/include/hvx_hexagon_protos.h +5421 -0
  163. package/include/ia32intrin.h +863 -0
  164. package/include/immintrin.h +597 -0
  165. package/include/intrin.h +501 -0
  166. package/include/intrin0.h +256 -0
  167. package/include/inttypes.h +101 -0
  168. package/include/invpcidintrin.h +23 -0
  169. package/include/iso646.h +31 -0
  170. package/include/keylockerintrin.h +518 -0
  171. package/include/larchintrin.h +262 -0
  172. package/include/lasxintrin.h +3999 -0
  173. package/include/limits.h +133 -0
  174. package/include/llvm_libc_wrappers/assert.h +32 -0
  175. package/include/llvm_libc_wrappers/ctype.h +29 -0
  176. package/include/llvm_libc_wrappers/inttypes.h +32 -0
  177. package/include/llvm_libc_wrappers/stdio.h +52 -0
  178. package/include/llvm_libc_wrappers/stdlib.h +32 -0
  179. package/include/llvm_libc_wrappers/string.h +29 -0
  180. package/include/llvm_libc_wrappers/time.h +28 -0
  181. package/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
  182. package/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
  183. package/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
  184. package/include/lsxintrin.h +3752 -0
  185. package/include/lwpintrin.h +136 -0
  186. package/include/lzcntintrin.h +109 -0
  187. package/include/mm3dnow.h +22 -0
  188. package/include/mm_malloc.h +67 -0
  189. package/include/mmintrin.h +1541 -0
  190. package/include/module.modulemap +375 -0
  191. package/include/movdirintrin.h +49 -0
  192. package/include/movrs_avx10_2_512intrin.h +98 -0
  193. package/include/movrs_avx10_2intrin.h +174 -0
  194. package/include/movrsintrin.h +59 -0
  195. package/include/msa.h +573 -0
  196. package/include/mwaitxintrin.h +62 -0
  197. package/include/nmmintrin.h +20 -0
  198. package/include/nvptxintrin.h +208 -0
  199. package/include/opencl-c-base.h +765 -0
  200. package/include/opencl-c.h +18737 -0
  201. package/include/openmp_wrappers/__clang_openmp_device_functions.h +118 -0
  202. package/include/openmp_wrappers/cmath +132 -0
  203. package/include/openmp_wrappers/complex +61 -0
  204. package/include/openmp_wrappers/complex.h +41 -0
  205. package/include/openmp_wrappers/complex_cmath.h +393 -0
  206. package/include/openmp_wrappers/math.h +71 -0
  207. package/include/openmp_wrappers/new +48 -0
  208. package/include/pconfigintrin.h +40 -0
  209. package/include/pkuintrin.h +34 -0
  210. package/include/pmmintrin.h +302 -0
  211. package/include/popcntintrin.h +59 -0
  212. package/include/ppc_wrappers/bmi2intrin.h +134 -0
  213. package/include/ppc_wrappers/bmiintrin.h +165 -0
  214. package/include/ppc_wrappers/emmintrin.h +2269 -0
  215. package/include/ppc_wrappers/immintrin.h +27 -0
  216. package/include/ppc_wrappers/mm_malloc.h +45 -0
  217. package/include/ppc_wrappers/mmintrin.h +1453 -0
  218. package/include/ppc_wrappers/nmmintrin.h +26 -0
  219. package/include/ppc_wrappers/pmmintrin.h +145 -0
  220. package/include/ppc_wrappers/smmintrin.h +683 -0
  221. package/include/ppc_wrappers/tmmintrin.h +453 -0
  222. package/include/ppc_wrappers/x86gprintrin.h +17 -0
  223. package/include/ppc_wrappers/x86intrin.h +28 -0
  224. package/include/ppc_wrappers/xmmintrin.h +1827 -0
  225. package/include/prfchiintrin.h +61 -0
  226. package/include/prfchwintrin.h +57 -0
  227. package/include/profile/InstrProfData.inc +1063 -0
  228. package/include/profile/instr_prof_interface.h +88 -0
  229. package/include/ptrauth.h +485 -0
  230. package/include/ptwriteintrin.h +37 -0
  231. package/include/raointintrin.h +203 -0
  232. package/include/rdpruintrin.h +57 -0
  233. package/include/rdseedintrin.h +105 -0
  234. package/include/riscv_bitmanip.h +202 -0
  235. package/include/riscv_corev_alu.h +130 -0
  236. package/include/riscv_crypto.h +178 -0
  237. package/include/riscv_mips.h +36 -0
  238. package/include/riscv_nds.h +92 -0
  239. package/include/riscv_ntlh.h +28 -0
  240. package/include/riscv_packed_simd.h +644 -0
  241. package/include/riscv_vector.h +465 -0
  242. package/include/rtmintrin.h +45 -0
  243. package/include/s390intrin.h +25 -0
  244. package/include/sanitizer/allocator_interface.h +106 -0
  245. package/include/sanitizer/asan_interface.h +398 -0
  246. package/include/sanitizer/common_interface_defs.h +507 -0
  247. package/include/sanitizer/coverage_interface.h +36 -0
  248. package/include/sanitizer/dfsan_interface.h +220 -0
  249. package/include/sanitizer/hwasan_interface.h +109 -0
  250. package/include/sanitizer/linux_syscall_hooks.h +3112 -0
  251. package/include/sanitizer/lsan_interface.h +89 -0
  252. package/include/sanitizer/msan_interface.h +135 -0
  253. package/include/sanitizer/netbsd_syscall_hooks.h +5005 -0
  254. package/include/sanitizer/rtsan_interface.h +75 -0
  255. package/include/sanitizer/safestack_interface.h +50 -0
  256. package/include/sanitizer/scudo_interface.h +38 -0
  257. package/include/sanitizer/tsan_interface.h +316 -0
  258. package/include/sanitizer/tsan_interface_atomic.h +223 -0
  259. package/include/sanitizer/tysan_interface.h +36 -0
  260. package/include/sanitizer/ubsan_interface.h +64 -0
  261. package/include/serializeintrin.h +30 -0
  262. package/include/sgxintrin.h +60 -0
  263. package/include/sha512intrin.h +200 -0
  264. package/include/shaintrin.h +190 -0
  265. package/include/sifive_vector.h +192 -0
  266. package/include/sm3intrin.h +238 -0
  267. package/include/sm4evexintrin.h +32 -0
  268. package/include/sm4intrin.h +269 -0
  269. package/include/smmintrin.h +2352 -0
  270. package/include/spirvintrin.h +167 -0
  271. package/include/stdalign.h +24 -0
  272. package/include/stdarg.h +75 -0
  273. package/include/stdatomic.h +204 -0
  274. package/include/stdbool.h +39 -0
  275. package/include/stdckdint.h +42 -0
  276. package/include/stdcountof.h +15 -0
  277. package/include/stddef.h +139 -0
  278. package/include/stddefer.h +19 -0
  279. package/include/stdint.h +835 -0
  280. package/include/stdnoreturn.h +35 -0
  281. package/include/tbmintrin.h +128 -0
  282. package/include/tgmath.h +1368 -0
  283. package/include/tmmintrin.h +779 -0
  284. package/include/tsxldtrkintrin.h +56 -0
  285. package/include/uintrintrin.h +157 -0
  286. package/include/unwind.h +332 -0
  287. package/include/usermsrintrin.h +51 -0
  288. package/include/vadefs.h +51 -0
  289. package/include/vaesintrin.h +86 -0
  290. package/include/varargs.h +16 -0
  291. package/include/vecintrin.h +12868 -0
  292. package/include/velintrin.h +71 -0
  293. package/include/velintrin_approx.h +120 -0
  294. package/include/velintrin_gen.h +1257 -0
  295. package/include/vpclmulqdqintrin.h +30 -0
  296. package/include/waitpkgintrin.h +42 -0
  297. package/include/wasm_simd128.h +2160 -0
  298. package/include/wbnoinvdintrin.h +24 -0
  299. package/include/wmmintrin.h +23 -0
  300. package/include/x86gprintrin.h +49 -0
  301. package/include/x86intrin.h +35 -0
  302. package/include/xmmintrin.h +3176 -0
  303. package/include/xopintrin.h +780 -0
  304. package/include/xsavecintrin.h +84 -0
  305. package/include/xsaveintrin.h +63 -0
  306. package/include/xsaveoptintrin.h +34 -0
  307. package/include/xsavesintrin.h +44 -0
  308. package/include/xtestintrin.h +27 -0
  309. package/include/yvals_core.h +25 -0
  310. package/include/zos_wrappers/builtins.h +18 -0
  311. package/include/zos_wrappers/grp.h +19 -0
  312. package/include/zos_wrappers/locale.h +19 -0
  313. package/include/zos_wrappers/math.h +31 -0
  314. package/include/zos_wrappers/poll.h +19 -0
  315. package/include/zos_wrappers/stdlib.h +20 -0
  316. package/include/zos_wrappers/string.h +19 -0
  317. package/include/zos_wrappers/time.h +19 -0
  318. package/include/zos_wrappers/variant.h +19 -0
  319. package/index.js +5 -0
  320. package/lib/darwin/libclang_rt.asan_abi_ios.a +0 -0
  321. package/lib/darwin/libclang_rt.asan_abi_iossim.a +0 -0
  322. package/lib/darwin/libclang_rt.asan_abi_osx.a +0 -0
  323. package/lib/darwin/libclang_rt.asan_ios_dynamic.dylib +0 -0
  324. package/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
  325. package/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
  326. package/lib/darwin/libclang_rt.cc_kext.a +0 -0
  327. package/lib/darwin/libclang_rt.cc_kext_ios.a +0 -0
  328. package/lib/darwin/libclang_rt.fuzzer_interceptors_ios.a +0 -0
  329. package/lib/darwin/libclang_rt.fuzzer_interceptors_iossim.a +0 -0
  330. package/lib/darwin/libclang_rt.fuzzer_interceptors_osx.a +0 -0
  331. package/lib/darwin/libclang_rt.fuzzer_ios.a +0 -0
  332. package/lib/darwin/libclang_rt.fuzzer_iossim.a +0 -0
  333. package/lib/darwin/libclang_rt.fuzzer_no_main_ios.a +0 -0
  334. package/lib/darwin/libclang_rt.fuzzer_no_main_iossim.a +0 -0
  335. package/lib/darwin/libclang_rt.fuzzer_no_main_osx.a +0 -0
  336. package/lib/darwin/libclang_rt.fuzzer_osx.a +0 -0
  337. package/lib/darwin/libclang_rt.ios.a +0 -0
  338. package/lib/darwin/libclang_rt.iossim.a +0 -0
  339. package/lib/darwin/libclang_rt.lsan_ios_dynamic.dylib +0 -0
  340. package/lib/darwin/libclang_rt.lsan_iossim_dynamic.dylib +0 -0
  341. package/lib/darwin/libclang_rt.lsan_osx_dynamic.dylib +0 -0
  342. package/lib/darwin/libclang_rt.osx.a +0 -0
  343. package/lib/darwin/libclang_rt.profile_ios.a +0 -0
  344. package/lib/darwin/libclang_rt.profile_iossim.a +0 -0
  345. package/lib/darwin/libclang_rt.profile_osx.a +0 -0
  346. package/lib/darwin/libclang_rt.rtsan_ios_dynamic.dylib +0 -0
  347. package/lib/darwin/libclang_rt.rtsan_iossim_dynamic.dylib +0 -0
  348. package/lib/darwin/libclang_rt.rtsan_osx_dynamic.dylib +0 -0
  349. package/lib/darwin/libclang_rt.stats_client_ios.a +0 -0
  350. package/lib/darwin/libclang_rt.stats_client_iossim.a +0 -0
  351. package/lib/darwin/libclang_rt.stats_client_osx.a +0 -0
  352. package/lib/darwin/libclang_rt.stats_ios_dynamic.dylib +0 -0
  353. package/lib/darwin/libclang_rt.stats_iossim_dynamic.dylib +0 -0
  354. package/lib/darwin/libclang_rt.stats_osx_dynamic.dylib +0 -0
  355. package/lib/darwin/libclang_rt.tsan_ios_dynamic.dylib +0 -0
  356. package/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib +0 -0
  357. package/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib +0 -0
  358. package/lib/darwin/libclang_rt.tysan_ios_dynamic.dylib +0 -0
  359. package/lib/darwin/libclang_rt.tysan_iossim_dynamic.dylib +0 -0
  360. package/lib/darwin/libclang_rt.tysan_osx_dynamic.dylib +0 -0
  361. package/lib/darwin/libclang_rt.ubsan_ios_dynamic.dylib +0 -0
  362. package/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
  363. package/lib/darwin/libclang_rt.ubsan_minimal_ios.a +0 -0
  364. package/lib/darwin/libclang_rt.ubsan_minimal_ios_dynamic.dylib +0 -0
  365. package/lib/darwin/libclang_rt.ubsan_minimal_iossim.a +0 -0
  366. package/lib/darwin/libclang_rt.ubsan_minimal_iossim_dynamic.dylib +0 -0
  367. package/lib/darwin/libclang_rt.ubsan_minimal_osx.a +0 -0
  368. package/lib/darwin/libclang_rt.ubsan_minimal_osx_dynamic.dylib +0 -0
  369. package/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
  370. package/package.json +40 -1
  371. package/share/asan_ignorelist.txt +14 -0
  372. package/share/cfi_ignorelist.txt +17 -0
@@ -0,0 +1,507 @@
1
+ //===-- sanitizer/common_interface_defs.h -----------------------*- C++ -*-===//
2
+ //
3
+ // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ // See https://llvm.org/LICENSE.txt for license information.
5
+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+ //
9
+ // Common part of the public sanitizer interface.
10
+ //===----------------------------------------------------------------------===//
11
+
12
+ #ifndef SANITIZER_COMMON_INTERFACE_DEFS_H
13
+ #define SANITIZER_COMMON_INTERFACE_DEFS_H
14
+
15
+ #include <stddef.h>
16
+ #include <stdint.h>
17
+
18
+ // Windows allows a user to set their default calling convention, but we always
19
+ // use __cdecl
20
+ #ifdef _WIN32
21
+ #define SANITIZER_CDECL __cdecl
22
+ #else
23
+ #define SANITIZER_CDECL
24
+ #endif
25
+
26
+ #ifdef __cplusplus
27
+ extern "C" {
28
+ #endif
29
+ // Arguments for __sanitizer_sandbox_on_notify() below.
30
+ typedef struct {
31
+ // Enable sandbox support in sanitizer coverage.
32
+ int coverage_sandboxed;
33
+ // File descriptor to write coverage data to. If -1 is passed, a file will
34
+ // be pre-opened by __sanitizer_sandbox_on_notify(). This field has no
35
+ // effect if coverage_sandboxed == 0.
36
+ intptr_t coverage_fd;
37
+ // If non-zero, split the coverage data into well-formed blocks. This is
38
+ // useful when coverage_fd is a socket descriptor. Each block will contain
39
+ // a header, allowing data from multiple processes to be sent over the same
40
+ // socket.
41
+ unsigned int coverage_max_block_size;
42
+ } __sanitizer_sandbox_arguments;
43
+
44
+ // Tell the tools to write their reports to "path.<pid>" instead of stderr.
45
+ void SANITIZER_CDECL __sanitizer_set_report_path(const char *path);
46
+ // Tell the tools to write their reports to the provided file descriptor
47
+ // (casted to void *).
48
+ void SANITIZER_CDECL __sanitizer_set_report_fd(void *fd);
49
+ // Get the current full report file path, if a path was specified by
50
+ // an earlier call to __sanitizer_set_report_path. Returns null otherwise.
51
+ const char *SANITIZER_CDECL __sanitizer_get_report_path();
52
+
53
+ // Notify the tools that the sandbox is going to be turned on. The reserved
54
+ // parameter will be used in the future to hold a structure with functions
55
+ // that the tools may call to bypass the sandbox.
56
+ void SANITIZER_CDECL
57
+ __sanitizer_sandbox_on_notify(__sanitizer_sandbox_arguments *args);
58
+
59
+ // This function is called by the tool when it has just finished reporting
60
+ // an error. 'error_summary' is a one-line string that summarizes
61
+ // the error message. This function can be overridden by the client.
62
+ void SANITIZER_CDECL
63
+ __sanitizer_report_error_summary(const char *error_summary);
64
+
65
+ // Some of the sanitizers (for example ASan/TSan) could miss bugs that happen
66
+ // in unaligned loads/stores. To find such bugs reliably, you need to replace
67
+ // plain unaligned loads/stores with these calls.
68
+
69
+ /// Loads a 16-bit unaligned value.
70
+ //
71
+ /// \param p Pointer to unaligned memory.
72
+ ///
73
+ /// \returns Loaded value.
74
+ uint16_t SANITIZER_CDECL __sanitizer_unaligned_load16(const void *p);
75
+
76
+ /// Loads a 32-bit unaligned value.
77
+ ///
78
+ /// \param p Pointer to unaligned memory.
79
+ ///
80
+ /// \returns Loaded value.
81
+ uint32_t SANITIZER_CDECL __sanitizer_unaligned_load32(const void *p);
82
+
83
+ /// Loads a 64-bit unaligned value.
84
+ ///
85
+ /// \param p Pointer to unaligned memory.
86
+ ///
87
+ /// \returns Loaded value.
88
+ uint64_t SANITIZER_CDECL __sanitizer_unaligned_load64(const void *p);
89
+
90
+ /// Stores a 16-bit unaligned value.
91
+ ///
92
+ /// \param p Pointer to unaligned memory.
93
+ /// \param x 16-bit value to store.
94
+ void SANITIZER_CDECL __sanitizer_unaligned_store16(void *p, uint16_t x);
95
+
96
+ /// Stores a 32-bit unaligned value.
97
+ ///
98
+ /// \param p Pointer to unaligned memory.
99
+ /// \param x 32-bit value to store.
100
+ void SANITIZER_CDECL __sanitizer_unaligned_store32(void *p, uint32_t x);
101
+
102
+ /// Stores a 64-bit unaligned value.
103
+ ///
104
+ /// \param p Pointer to unaligned memory.
105
+ /// \param x 64-bit value to store.
106
+ void SANITIZER_CDECL __sanitizer_unaligned_store64(void *p, uint64_t x);
107
+
108
+ // Returns 1 on the first call, then returns 0 thereafter. Called by the tool
109
+ // to ensure only one report is printed when multiple errors occur
110
+ // simultaneously.
111
+ int SANITIZER_CDECL __sanitizer_acquire_crash_state();
112
+
113
+ /// Annotates the current state of a contiguous container, such as
114
+ /// <c>std::vector</c>, <c>std::string</c>, or similar.
115
+ ///
116
+ /// A contiguous container is a container that keeps all of its elements
117
+ /// in a contiguous region of memory. The container owns the region of memory
118
+ /// <c>[beg, end)</c>; the memory <c>[beg, mid)</c> is used to store the
119
+ /// current elements, and the memory <c>[mid, end)</c> is reserved for future
120
+ /// elements (<c>beg <= mid <= end</c>). For example, in
121
+ /// <c>std::vector<> v</c>:
122
+ ///
123
+ /// \code
124
+ /// beg = &v[0];
125
+ /// end = beg + v.capacity() * sizeof(v[0]);
126
+ /// mid = beg + v.size() * sizeof(v[0]);
127
+ /// \endcode
128
+ ///
129
+ /// This annotation tells the Sanitizer tool about the current state of the
130
+ /// container so that the tool can report errors when memory from
131
+ /// <c>[mid, end)</c> is accessed. Insert this annotation into methods like
132
+ /// <c>push_back()</c> or <c>pop_back()</c>. Supply the old and new values of
133
+ /// <c>mid</c>(<c><i>old_mid</i></c> and <c><i>new_mid</i></c>). In the initial
134
+ /// state <c>mid == end</c>, so that should be the final state when the
135
+ /// container is destroyed or when the container reallocates the storage.
136
+ ///
137
+ /// For ASan, <c><i>beg</i></c> no longer needs to be 8-aligned,
138
+ /// first and last granule may be shared with other objects
139
+ /// and therefore the function can be used for any allocator.
140
+ ///
141
+ /// The following example shows how to use the function:
142
+ ///
143
+ /// \code
144
+ /// int32_t x[3]; // 12 bytes
145
+ /// char *beg = (char*)&x[0];
146
+ /// char *end = beg + 12;
147
+ /// __sanitizer_annotate_contiguous_container(beg, end, beg, end);
148
+ /// \endcode
149
+ ///
150
+ /// \note Use this function with caution and do not use for anything other
151
+ /// than vector-like classes.
152
+ /// \note Unaligned <c><i>beg</i></c> or <c><i>end</i></c> may miss bugs in
153
+ /// these granules.
154
+ ///
155
+ /// \param beg Beginning of memory region.
156
+ /// \param end End of memory region.
157
+ /// \param old_mid Old middle of memory region.
158
+ /// \param new_mid New middle of memory region.
159
+ #ifdef __SANITIZER_DISABLE_CONTAINER_OVERFLOW__
160
+ __attribute__((__internal_linkage__)) inline void SANITIZER_CDECL
161
+ __sanitizer_annotate_contiguous_container(const void *beg, const void *end,
162
+ const void *old_mid,
163
+ const void *new_mid) {}
164
+ #else
165
+ void SANITIZER_CDECL __sanitizer_annotate_contiguous_container(
166
+ const void *beg, const void *end, const void *old_mid, const void *new_mid);
167
+ #endif
168
+
169
+ /// Similar to <c>__sanitizer_annotate_contiguous_container</c>.
170
+ ///
171
+ /// Annotates the current state of a contiguous container memory,
172
+ /// such as <c>std::deque</c>'s single chunk, when the boundries are moved.
173
+ ///
174
+ /// A contiguous chunk is a chunk that keeps all of its elements
175
+ /// in a contiguous region of memory. The container owns the region of memory
176
+ /// <c>[storage_beg, storage_end)</c>; the memory <c>[container_beg,
177
+ /// container_end)</c> is used to store the current elements, and the memory
178
+ /// <c>[storage_beg, container_beg), [container_end, storage_end)</c> is
179
+ /// reserved for future elements (<c>storage_beg <= container_beg <=
180
+ /// container_end <= storage_end</c>). For example, in <c> std::deque </c>:
181
+ /// - chunk with a frist deques element will have container_beg equal to address
182
+ /// of the first element.
183
+ /// - in every next chunk with elements, true is <c> container_beg ==
184
+ /// storage_beg </c>.
185
+ ///
186
+ /// Argument requirements:
187
+ /// During unpoisoning memory of empty container (before first element is
188
+ /// added):
189
+ /// - old_container_beg_p == old_container_end_p
190
+ /// During poisoning after last element was removed:
191
+ /// - new_container_beg_p == new_container_end_p
192
+ /// \param storage_beg Beginning of memory region.
193
+ /// \param storage_end End of memory region.
194
+ /// \param old_container_beg Old beginning of used region.
195
+ /// \param old_container_end End of used region.
196
+ /// \param new_container_beg New beginning of used region.
197
+ /// \param new_container_end New end of used region.
198
+ #ifdef __SANITIZER_DISABLE_CONTAINER_OVERFLOW__
199
+ __attribute__((__internal_linkage__)) inline void
200
+ SANITIZER_CDECL __sanitizer_annotate_double_ended_contiguous_container(
201
+ const void *storage_beg, const void *storage_end,
202
+ const void *old_container_beg, const void *old_container_end,
203
+ const void *new_container_beg, const void *new_container_end) {}
204
+ #else
205
+ void SANITIZER_CDECL __sanitizer_annotate_double_ended_contiguous_container(
206
+ const void *storage_beg, const void *storage_end,
207
+ const void *old_container_beg, const void *old_container_end,
208
+ const void *new_container_beg, const void *new_container_end);
209
+ #endif
210
+
211
+ /// Returns true if the contiguous container <c>[beg, end)</c> is properly
212
+ /// poisoned.
213
+ ///
214
+ /// Proper poisoning could occur, for example, with
215
+ /// <c>__sanitizer_annotate_contiguous_container</c>), that is, if
216
+ /// <c>[beg, mid)</c> is addressable and <c>[mid, end)</c> is unaddressable.
217
+ /// Full verification requires O (<c>end - beg</c>) time; this function tries
218
+ /// to avoid such complexity by touching only parts of the container around
219
+ /// <c><i>beg</i></c>, <c><i>mid</i></c>, and <c><i>end</i></c>.
220
+ ///
221
+ /// \param beg Beginning of memory region.
222
+ /// \param mid Middle of memory region.
223
+ /// \param end Old end of memory region.
224
+ ///
225
+ /// \returns True if the contiguous container <c>[beg, end)</c> is properly
226
+ /// poisoned.
227
+ #ifdef __SANITIZER_DISABLE_CONTAINER_OVERFLOW__
228
+ __attribute__((__internal_linkage__)) inline int
229
+ SANITIZER_CDECL __sanitizer_verify_contiguous_container(const void *beg,
230
+ const void *mid,
231
+ const void *end) {
232
+ return 1;
233
+ }
234
+ #else
235
+ int SANITIZER_CDECL __sanitizer_verify_contiguous_container(const void *beg,
236
+ const void *mid,
237
+ const void *end);
238
+ #endif
239
+
240
+ /// Returns true if the double ended contiguous
241
+ /// container <c>[storage_beg, storage_end)</c> is properly poisoned.
242
+ ///
243
+ /// Proper poisoning could occur, for example, with
244
+ /// <c>__sanitizer_annotate_double_ended_contiguous_container</c>), that is, if
245
+ /// <c>[storage_beg, container_beg)</c> is not addressable, <c>[container_beg,
246
+ /// container_end)</c> is addressable and <c>[container_end, end)</c> is
247
+ /// unaddressable. Full verification requires O (<c>storage_end -
248
+ /// storage_beg</c>) time; this function tries to avoid such complexity by
249
+ /// touching only parts of the container around <c><i>storage_beg</i></c>,
250
+ /// <c><i>container_beg</i></c>, <c><i>container_end</i></c>, and
251
+ /// <c><i>storage_end</i></c>.
252
+ ///
253
+ /// \param storage_beg Beginning of memory region.
254
+ /// \param container_beg Beginning of used region.
255
+ /// \param container_end End of used region.
256
+ /// \param storage_end End of memory region.
257
+ ///
258
+ /// \returns True if the double-ended contiguous container <c>[storage_beg,
259
+ /// container_beg, container_end, end)</c> is properly poisoned - only
260
+ /// [container_beg; container_end) is addressable.
261
+ #ifdef __SANITIZER_DISABLE_CONTAINER_OVERFLOW__
262
+ __attribute__((__internal_linkage__)) inline int SANITIZER_CDECL
263
+ __sanitizer_verify_double_ended_contiguous_container(const void *storage_beg,
264
+ const void *container_beg,
265
+ const void *container_end,
266
+ const void *storage_end) {
267
+ return 1;
268
+ }
269
+ #else
270
+ int SANITIZER_CDECL __sanitizer_verify_double_ended_contiguous_container(
271
+ const void *storage_beg, const void *container_beg,
272
+ const void *container_end, const void *storage_end);
273
+ #endif
274
+
275
+ /// Similar to <c>__sanitizer_verify_contiguous_container()</c> but also
276
+ /// returns the address of the first improperly poisoned byte.
277
+ ///
278
+ /// Returns NULL if the area is poisoned properly.
279
+ ///
280
+ /// \param beg Beginning of memory region.
281
+ /// \param mid Middle of memory region.
282
+ /// \param end Old end of memory region.
283
+ ///
284
+ /// \returns The bad address or NULL.
285
+ #ifdef __SANITIZER_DISABLE_CONTAINER_OVERFLOW__
286
+ __attribute__((__internal_linkage__)) inline const void *SANITIZER_CDECL
287
+ __sanitizer_contiguous_container_find_bad_address(const void *beg,
288
+ const void *mid,
289
+ const void *end) {
290
+ return NULL;
291
+ }
292
+ #else
293
+ const void *SANITIZER_CDECL __sanitizer_contiguous_container_find_bad_address(
294
+ const void *beg, const void *mid, const void *end);
295
+ #endif
296
+
297
+ /// returns the address of the first improperly poisoned byte.
298
+ ///
299
+ /// Returns NULL if the area is poisoned properly.
300
+ ///
301
+ /// \param storage_beg Beginning of memory region.
302
+ /// \param container_beg Beginning of used region.
303
+ /// \param container_end End of used region.
304
+ /// \param storage_end End of memory region.
305
+ ///
306
+ /// \returns The bad address or NULL.
307
+ #ifdef __SANITIZER_DISABLE_CONTAINER_OVERFLOW__
308
+ __attribute__((__internal_linkage__)) inline const void *SANITIZER_CDECL
309
+ __sanitizer_double_ended_contiguous_container_find_bad_address(
310
+ const void *storage_beg, const void *container_beg,
311
+ const void *container_end, const void *storage_end) {
312
+ return NULL;
313
+ }
314
+ #else
315
+ const void *SANITIZER_CDECL
316
+ __sanitizer_double_ended_contiguous_container_find_bad_address(
317
+ const void *storage_beg, const void *container_beg,
318
+ const void *container_end, const void *storage_end);
319
+ #endif
320
+
321
+ /// Prints the stack trace leading to this call (useful for calling from the
322
+ /// debugger).
323
+ void SANITIZER_CDECL __sanitizer_print_stack_trace(void);
324
+
325
+ // Symbolizes the supplied 'pc' using the format string 'fmt'.
326
+ // Outputs at most 'out_buf_size' bytes into 'out_buf'.
327
+ // If 'out_buf' is not empty then output is zero or more non empty C strings
328
+ // followed by single empty C string. Multiple strings can be returned if PC
329
+ // corresponds to inlined function. Inlined frames are printed in the order
330
+ // from "most-inlined" to the "least-inlined", so the last frame should be the
331
+ // not inlined function.
332
+ // Inlined frames can be removed with 'symbolize_inline_frames=0'.
333
+ // The format syntax is described in
334
+ // lib/sanitizer_common/sanitizer_stacktrace_printer.h.
335
+ void SANITIZER_CDECL __sanitizer_symbolize_pc(void *pc, const char *fmt,
336
+ char *out_buf,
337
+ size_t out_buf_size);
338
+ // Same as __sanitizer_symbolize_pc, but for data section (i.e. globals).
339
+ void SANITIZER_CDECL __sanitizer_symbolize_global(void *data_ptr,
340
+ const char *fmt,
341
+ char *out_buf,
342
+ size_t out_buf_size);
343
+ // Determine the return address.
344
+ #if !defined(_MSC_VER) || defined(__clang__)
345
+ #define __sanitizer_return_address() \
346
+ __builtin_extract_return_addr(__builtin_return_address(0))
347
+ #else
348
+ void *_ReturnAddress(void);
349
+ #pragma intrinsic(_ReturnAddress)
350
+ #define __sanitizer_return_address() _ReturnAddress()
351
+ #endif
352
+
353
+ /// Sets the callback to be called immediately before death on error.
354
+ ///
355
+ /// Passing 0 will unset the callback.
356
+ ///
357
+ /// \param callback User-provided callback.
358
+ void SANITIZER_CDECL __sanitizer_set_death_callback(void (*callback)(void));
359
+
360
+ // Interceptor hooks.
361
+ // Whenever a libc function interceptor is called, it checks if the
362
+ // corresponding weak hook is defined, and calls it if it is indeed defined.
363
+ // The primary use-case is data-flow-guided fuzzing, where the fuzzer needs
364
+ // to know what is being passed to libc functions (for example memcmp).
365
+ // FIXME: implement more hooks.
366
+
367
+ /// Interceptor hook for <c>memcmp()</c>.
368
+ ///
369
+ /// \param called_pc PC (program counter) address of the original call.
370
+ /// \param s1 Pointer to block of memory.
371
+ /// \param s2 Pointer to block of memory.
372
+ /// \param n Number of bytes to compare.
373
+ /// \param result Value returned by the intercepted function.
374
+ void SANITIZER_CDECL __sanitizer_weak_hook_memcmp(void *called_pc,
375
+ const void *s1,
376
+ const void *s2, size_t n,
377
+ int result);
378
+
379
+ /// Interceptor hook for <c>strncmp()</c>.
380
+ ///
381
+ /// \param called_pc PC (program counter) address of the original call.
382
+ /// \param s1 Pointer to block of memory.
383
+ /// \param s2 Pointer to block of memory.
384
+ /// \param n Number of bytes to compare.
385
+ /// \param result Value returned by the intercepted function.
386
+ void SANITIZER_CDECL __sanitizer_weak_hook_strncmp(void *called_pc,
387
+ const char *s1,
388
+ const char *s2, size_t n,
389
+ int result);
390
+
391
+ /// Interceptor hook for <c>strncasecmp()</c>.
392
+ ///
393
+ /// \param called_pc PC (program counter) address of the original call.
394
+ /// \param s1 Pointer to block of memory.
395
+ /// \param s2 Pointer to block of memory.
396
+ /// \param n Number of bytes to compare.
397
+ /// \param result Value returned by the intercepted function.
398
+ void SANITIZER_CDECL __sanitizer_weak_hook_strncasecmp(void *called_pc,
399
+ const char *s1,
400
+ const char *s2, size_t n,
401
+ int result);
402
+
403
+ /// Interceptor hook for <c>strcmp()</c>.
404
+ ///
405
+ /// \param called_pc PC (program counter) address of the original call.
406
+ /// \param s1 Pointer to block of memory.
407
+ /// \param s2 Pointer to block of memory.
408
+ /// \param result Value returned by the intercepted function.
409
+ void SANITIZER_CDECL __sanitizer_weak_hook_strcmp(void *called_pc,
410
+ const char *s1,
411
+ const char *s2, int result);
412
+
413
+ /// Interceptor hook for <c>strcasecmp()</c>.
414
+ ///
415
+ /// \param called_pc PC (program counter) address of the original call.
416
+ /// \param s1 Pointer to block of memory.
417
+ /// \param s2 Pointer to block of memory.
418
+ /// \param result Value returned by the intercepted function.
419
+ void SANITIZER_CDECL __sanitizer_weak_hook_strcasecmp(void *called_pc,
420
+ const char *s1,
421
+ const char *s2,
422
+ int result);
423
+
424
+ /// Interceptor hook for <c>strstr()</c>.
425
+ ///
426
+ /// \param called_pc PC (program counter) address of the original call.
427
+ /// \param s1 Pointer to block of memory.
428
+ /// \param s2 Pointer to block of memory.
429
+ /// \param result Value returned by the intercepted function.
430
+ void SANITIZER_CDECL __sanitizer_weak_hook_strstr(void *called_pc,
431
+ const char *s1,
432
+ const char *s2, char *result);
433
+
434
+ void SANITIZER_CDECL __sanitizer_weak_hook_strcasestr(void *called_pc,
435
+ const char *s1,
436
+ const char *s2,
437
+ char *result);
438
+
439
+ void SANITIZER_CDECL __sanitizer_weak_hook_memmem(void *called_pc,
440
+ const void *s1, size_t len1,
441
+ const void *s2, size_t len2,
442
+ void *result);
443
+
444
+ // Prints stack traces for all live heap allocations ordered by total
445
+ // allocation size until top_percent of total live heap is shown. top_percent
446
+ // should be between 1 and 100. At most max_number_of_contexts contexts
447
+ // (stack traces) are printed.
448
+ // Experimental feature currently available only with ASan on Linux/x86_64.
449
+ void SANITIZER_CDECL __sanitizer_print_memory_profile(
450
+ size_t top_percent, size_t max_number_of_contexts);
451
+
452
+ /// Notify ASan that a fiber switch has started (required only if implementing
453
+ /// your own fiber library).
454
+ ///
455
+ /// Before switching to a different stack, you must call
456
+ /// <c>__sanitizer_start_switch_fiber()</c> with a pointer to the bottom of the
457
+ /// destination stack and with its size. When code starts running on the new
458
+ /// stack, it must call <c>__sanitizer_finish_switch_fiber()</c> to finalize
459
+ /// the switch. The <c>__sanitizer_start_switch_fiber()</c> function takes a
460
+ /// <c>void**</c> pointer argument to store the current fake stack if there is
461
+ /// one (it is necessary when the runtime option
462
+ /// <c>detect_stack_use_after_return</c> is enabled).
463
+ ///
464
+ /// When restoring a stack, this <c>void**</c> pointer must be given to the
465
+ /// <c>__sanitizer_finish_switch_fiber()</c> function. In most cases, this
466
+ /// pointer can be stored on the stack immediately before switching. When
467
+ /// leaving a fiber definitely, NULL must be passed as the first argument to
468
+ /// the <c>__sanitizer_start_switch_fiber()</c> function so that the fake stack
469
+ /// is destroyed. If your program does not need stack use-after-return
470
+ /// detection, you can always pass NULL to these two functions.
471
+ ///
472
+ /// \note The fake stack mechanism is disabled during fiber switch, so if a
473
+ /// signal callback runs during the switch, it will not benefit from stack
474
+ /// use-after-return detection.
475
+ ///
476
+ /// \param[out] fake_stack_save Fake stack save location.
477
+ /// \param bottom Bottom address of stack.
478
+ /// \param size Size of stack in bytes.
479
+ void SANITIZER_CDECL __sanitizer_start_switch_fiber(void **fake_stack_save,
480
+ const void *bottom,
481
+ size_t size);
482
+
483
+ /// Notify ASan that a fiber switch has completed (required only if
484
+ /// implementing your own fiber library).
485
+ ///
486
+ /// When code starts running on the new stack, it must call
487
+ /// <c>__sanitizer_finish_switch_fiber()</c> to finalize
488
+ /// the switch. For usage details, see the description of
489
+ /// <c>__sanitizer_start_switch_fiber()</c>.
490
+ ///
491
+ /// \param fake_stack_save Fake stack save location.
492
+ /// \param[out] bottom_old Bottom address of old stack.
493
+ /// \param[out] size_old Size of old stack in bytes.
494
+ void SANITIZER_CDECL __sanitizer_finish_switch_fiber(void *fake_stack_save,
495
+ const void **bottom_old,
496
+ size_t *size_old);
497
+
498
+ // Get full module name and calculate pc offset within it.
499
+ // Returns 1 if pc belongs to some module, 0 if module was not found.
500
+ int SANITIZER_CDECL __sanitizer_get_module_and_offset_for_pc(
501
+ void *pc, char *module_path, size_t module_path_len, void **pc_offset);
502
+
503
+ #ifdef __cplusplus
504
+ } // extern "C"
505
+ #endif
506
+
507
+ #endif // SANITIZER_COMMON_INTERFACE_DEFS_H
@@ -0,0 +1,36 @@
1
+ //===-- sanitizer/coverage_interface.h --------------------------*- C++ -*-===//
2
+ //
3
+ // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ // See https://llvm.org/LICENSE.txt for license information.
5
+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+ //
9
+ // Public interface for sanitizer coverage.
10
+ //===----------------------------------------------------------------------===//
11
+
12
+ #ifndef SANITIZER_COVERAG_INTERFACE_H
13
+ #define SANITIZER_COVERAG_INTERFACE_H
14
+
15
+ #include <sanitizer/common_interface_defs.h>
16
+
17
+ #ifdef __cplusplus
18
+ extern "C" {
19
+ #endif
20
+
21
+ // Record and dump coverage info.
22
+ void SANITIZER_CDECL __sanitizer_cov_dump(void);
23
+
24
+ // Clear collected coverage info.
25
+ void SANITIZER_CDECL __sanitizer_cov_reset(void);
26
+
27
+ // Dump collected coverage info. Sorts pcs by module into individual .sancov
28
+ // files.
29
+ void SANITIZER_CDECL __sanitizer_dump_coverage(const uintptr_t *pcs,
30
+ uintptr_t len);
31
+
32
+ #ifdef __cplusplus
33
+ } // extern "C"
34
+ #endif
35
+
36
+ #endif // SANITIZER_COVERAG_INTERFACE_H