xcodebuild-helper 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (202) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +20 -0
  3. data/.gitignore +1 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +7 -0
  6. data/Gemfile +6 -0
  7. data/Gemfile.lock +110 -0
  8. data/Guardfile +18 -0
  9. data/README.md +7 -0
  10. data/Rakefile +7 -0
  11. data/TODO.md +3 -0
  12. data/bin/oclint +5 -0
  13. data/bin/oclint-0.8 +5 -0
  14. data/bin/oclint-json-compilation-database +5 -0
  15. data/bin/oclint-xcodebuild +5 -0
  16. data/externals/oclint/LICENSE +69 -0
  17. data/externals/oclint/bin/oclint +0 -0
  18. data/externals/oclint/bin/oclint-0.10.2 +0 -0
  19. data/externals/oclint/bin/oclint-json-compilation-database +88 -0
  20. data/externals/oclint/bin/oclint-xcodebuild +218 -0
  21. data/externals/oclint/lib/clang/3.7.0/asan_blacklist.txt +13 -0
  22. data/externals/oclint/lib/clang/3.7.0/include/Intrin.h +958 -0
  23. data/externals/oclint/lib/clang/3.7.0/include/__stddef_max_align_t.h +43 -0
  24. data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_aes.h +72 -0
  25. data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_pclmul.h +34 -0
  26. data/externals/oclint/lib/clang/3.7.0/include/adxintrin.h +88 -0
  27. data/externals/oclint/lib/clang/3.7.0/include/altivec.h +13528 -0
  28. data/externals/oclint/lib/clang/3.7.0/include/ammintrin.h +215 -0
  29. data/externals/oclint/lib/clang/3.7.0/include/arm_acle.h +304 -0
  30. data/externals/oclint/lib/clang/3.7.0/include/arm_neon.h +68419 -0
  31. data/externals/oclint/lib/clang/3.7.0/include/avx2intrin.h +1256 -0
  32. data/externals/oclint/lib/clang/3.7.0/include/avx512bwintrin.h +1250 -0
  33. data/externals/oclint/lib/clang/3.7.0/include/avx512cdintrin.h +131 -0
  34. data/externals/oclint/lib/clang/3.7.0/include/avx512dqintrin.h +242 -0
  35. data/externals/oclint/lib/clang/3.7.0/include/avx512erintrin.h +285 -0
  36. data/externals/oclint/lib/clang/3.7.0/include/avx512fintrin.h +2457 -0
  37. data/externals/oclint/lib/clang/3.7.0/include/avx512vlbwintrin.h +1907 -0
  38. data/externals/oclint/lib/clang/3.7.0/include/avx512vldqintrin.h +353 -0
  39. data/externals/oclint/lib/clang/3.7.0/include/avx512vlintrin.h +1982 -0
  40. data/externals/oclint/lib/clang/3.7.0/include/avxintrin.h +1308 -0
  41. data/externals/oclint/lib/clang/3.7.0/include/bmi2intrin.h +99 -0
  42. data/externals/oclint/lib/clang/3.7.0/include/bmiintrin.h +153 -0
  43. data/externals/oclint/lib/clang/3.7.0/include/cpuid.h +209 -0
  44. data/externals/oclint/lib/clang/3.7.0/include/cuda_builtin_vars.h +110 -0
  45. data/externals/oclint/lib/clang/3.7.0/include/emmintrin.h +1480 -0
  46. data/externals/oclint/lib/clang/3.7.0/include/f16cintrin.h +63 -0
  47. data/externals/oclint/lib/clang/3.7.0/include/float.h +124 -0
  48. data/externals/oclint/lib/clang/3.7.0/include/fma4intrin.h +236 -0
  49. data/externals/oclint/lib/clang/3.7.0/include/fmaintrin.h +234 -0
  50. data/externals/oclint/lib/clang/3.7.0/include/fxsrintrin.h +55 -0
  51. data/externals/oclint/lib/clang/3.7.0/include/htmintrin.h +226 -0
  52. data/externals/oclint/lib/clang/3.7.0/include/htmxlintrin.h +363 -0
  53. data/externals/oclint/lib/clang/3.7.0/include/ia32intrin.h +101 -0
  54. data/externals/oclint/lib/clang/3.7.0/include/immintrin.h +203 -0
  55. data/externals/oclint/lib/clang/3.7.0/include/inttypes.h +102 -0
  56. data/externals/oclint/lib/clang/3.7.0/include/iso646.h +43 -0
  57. data/externals/oclint/lib/clang/3.7.0/include/limits.h +118 -0
  58. data/externals/oclint/lib/clang/3.7.0/include/lzcntintrin.h +72 -0
  59. data/externals/oclint/lib/clang/3.7.0/include/mm3dnow.h +167 -0
  60. data/externals/oclint/lib/clang/3.7.0/include/mm_malloc.h +75 -0
  61. data/externals/oclint/lib/clang/3.7.0/include/mmintrin.h +507 -0
  62. data/externals/oclint/lib/clang/3.7.0/include/module.modulemap +196 -0
  63. data/externals/oclint/lib/clang/3.7.0/include/nmmintrin.h +35 -0
  64. data/externals/oclint/lib/clang/3.7.0/include/pmmintrin.h +122 -0
  65. data/externals/oclint/lib/clang/3.7.0/include/popcntintrin.h +50 -0
  66. data/externals/oclint/lib/clang/3.7.0/include/prfchwintrin.h +39 -0
  67. data/externals/oclint/lib/clang/3.7.0/include/rdseedintrin.h +59 -0
  68. data/externals/oclint/lib/clang/3.7.0/include/rtmintrin.h +59 -0
  69. data/externals/oclint/lib/clang/3.7.0/include/s390intrin.h +39 -0
  70. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/allocator_interface.h +66 -0
  71. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/asan_interface.h +155 -0
  72. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/common_interface_defs.h +118 -0
  73. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/coverage_interface.h +63 -0
  74. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/dfsan_interface.h +114 -0
  75. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/linux_syscall_hooks.h +3070 -0
  76. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/lsan_interface.h +84 -0
  77. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/msan_interface.h +107 -0
  78. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/tsan_interface_atomic.h +222 -0
  79. data/externals/oclint/lib/clang/3.7.0/include/shaintrin.h +79 -0
  80. data/externals/oclint/lib/clang/3.7.0/include/smmintrin.h +487 -0
  81. data/externals/oclint/lib/clang/3.7.0/include/stdalign.h +35 -0
  82. data/externals/oclint/lib/clang/3.7.0/include/stdarg.h +52 -0
  83. data/externals/oclint/lib/clang/3.7.0/include/stdatomic.h +190 -0
  84. data/externals/oclint/lib/clang/3.7.0/include/stdbool.h +44 -0
  85. data/externals/oclint/lib/clang/3.7.0/include/stddef.h +137 -0
  86. data/externals/oclint/lib/clang/3.7.0/include/stdint.h +707 -0
  87. data/externals/oclint/lib/clang/3.7.0/include/stdnoreturn.h +30 -0
  88. data/externals/oclint/lib/clang/3.7.0/include/tbmintrin.h +154 -0
  89. data/externals/oclint/lib/clang/3.7.0/include/tgmath.h +1374 -0
  90. data/externals/oclint/lib/clang/3.7.0/include/tmmintrin.h +230 -0
  91. data/externals/oclint/lib/clang/3.7.0/include/unwind.h +282 -0
  92. data/externals/oclint/lib/clang/3.7.0/include/vadefs.h +65 -0
  93. data/externals/oclint/lib/clang/3.7.0/include/varargs.h +26 -0
  94. data/externals/oclint/lib/clang/3.7.0/include/vecintrin.h +8946 -0
  95. data/externals/oclint/lib/clang/3.7.0/include/wmmintrin.h +42 -0
  96. data/externals/oclint/lib/clang/3.7.0/include/x86intrin.h +81 -0
  97. data/externals/oclint/lib/clang/3.7.0/include/xmmintrin.h +1008 -0
  98. data/externals/oclint/lib/clang/3.7.0/include/xopintrin.h +809 -0
  99. data/externals/oclint/lib/clang/3.7.0/include/xtestintrin.h +41 -0
  100. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
  101. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
  102. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.builtins-i386.a +0 -0
  103. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.builtins-x86_64.a +0 -0
  104. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.profile_osx.a +0 -0
  105. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.safestack_osx.a +0 -0
  106. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
  107. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
  108. data/externals/oclint/lib/oclint/reporters/libHTMLReporter.dylib +0 -0
  109. data/externals/oclint/lib/oclint/reporters/libJSONReporter.dylib +0 -0
  110. data/externals/oclint/lib/oclint/reporters/libPMDReporter.dylib +0 -0
  111. data/externals/oclint/lib/oclint/reporters/libTextReporter.dylib +0 -0
  112. data/externals/oclint/lib/oclint/reporters/libXMLReporter.dylib +0 -0
  113. data/externals/oclint/lib/oclint/reporters/libXcodeReporter.dylib +0 -0
  114. data/externals/oclint/lib/oclint/rules/libAvoidBranchingStatementAsLastInLoopRule.dylib +0 -0
  115. data/externals/oclint/lib/oclint/rules/libAvoidDefaultArgumentsOnVirtualMethodsRule.dylib +0 -0
  116. data/externals/oclint/lib/oclint/rules/libAvoidPrivateStaticMembersRule.dylib +0 -0
  117. data/externals/oclint/lib/oclint/rules/libBaseClassDestructorShouldBeVirtualOrProtectedRule.dylib +0 -0
  118. data/externals/oclint/lib/oclint/rules/libBitwiseOperatorInConditionalRule.dylib +0 -0
  119. data/externals/oclint/lib/oclint/rules/libBrokenNullCheckRule.dylib +0 -0
  120. data/externals/oclint/lib/oclint/rules/libBrokenOddnessCheckRule.dylib +0 -0
  121. data/externals/oclint/lib/oclint/rules/libCollapsibleIfStatementsRule.dylib +0 -0
  122. data/externals/oclint/lib/oclint/rules/libConstantConditionalOperatorRule.dylib +0 -0
  123. data/externals/oclint/lib/oclint/rules/libConstantIfExpressionRule.dylib +0 -0
  124. data/externals/oclint/lib/oclint/rules/libCoveredSwitchStatementsDontNeedDefaultRule.dylib +0 -0
  125. data/externals/oclint/lib/oclint/rules/libCyclomaticComplexityRule.dylib +0 -0
  126. data/externals/oclint/lib/oclint/rules/libDeadCodeRule.dylib +0 -0
  127. data/externals/oclint/lib/oclint/rules/libDefaultLabelNotLastInSwitchStatementRule.dylib +0 -0
  128. data/externals/oclint/lib/oclint/rules/libDestructorOfVirtualClassRule.dylib +0 -0
  129. data/externals/oclint/lib/oclint/rules/libDoubleNegativeRule.dylib +0 -0
  130. data/externals/oclint/lib/oclint/rules/libEmptyCatchStatementRule.dylib +0 -0
  131. data/externals/oclint/lib/oclint/rules/libEmptyDoWhileStatementRule.dylib +0 -0
  132. data/externals/oclint/lib/oclint/rules/libEmptyElseBlockRule.dylib +0 -0
  133. data/externals/oclint/lib/oclint/rules/libEmptyFinallyStatementRule.dylib +0 -0
  134. data/externals/oclint/lib/oclint/rules/libEmptyForStatementRule.dylib +0 -0
  135. data/externals/oclint/lib/oclint/rules/libEmptyIfStatementRule.dylib +0 -0
  136. data/externals/oclint/lib/oclint/rules/libEmptySwitchStatementRule.dylib +0 -0
  137. data/externals/oclint/lib/oclint/rules/libEmptyTryStatementRule.dylib +0 -0
  138. data/externals/oclint/lib/oclint/rules/libEmptyWhileStatementRule.dylib +0 -0
  139. data/externals/oclint/lib/oclint/rules/libForLoopShouldBeWhileLoopRule.dylib +0 -0
  140. data/externals/oclint/lib/oclint/rules/libGotoStatementRule.dylib +0 -0
  141. data/externals/oclint/lib/oclint/rules/libInvertedLogicRule.dylib +0 -0
  142. data/externals/oclint/lib/oclint/rules/libJumbledIncrementerRule.dylib +0 -0
  143. data/externals/oclint/lib/oclint/rules/libLongClassRule.dylib +0 -0
  144. data/externals/oclint/lib/oclint/rules/libLongLineRule.dylib +0 -0
  145. data/externals/oclint/lib/oclint/rules/libLongMethodRule.dylib +0 -0
  146. data/externals/oclint/lib/oclint/rules/libLongVariableNameRule.dylib +0 -0
  147. data/externals/oclint/lib/oclint/rules/libMisplacedNullCheckRule.dylib +0 -0
  148. data/externals/oclint/lib/oclint/rules/libMissingBreakInSwitchStatementRule.dylib +0 -0
  149. data/externals/oclint/lib/oclint/rules/libMultipleUnaryOperatorRule.dylib +0 -0
  150. data/externals/oclint/lib/oclint/rules/libNPathComplexityRule.dylib +0 -0
  151. data/externals/oclint/lib/oclint/rules/libNcssMethodCountRule.dylib +0 -0
  152. data/externals/oclint/lib/oclint/rules/libNestedBlockDepthRule.dylib +0 -0
  153. data/externals/oclint/lib/oclint/rules/libNonCaseLabelInSwitchStatementRule.dylib +0 -0
  154. data/externals/oclint/lib/oclint/rules/libObjCAssignIvarOutsideAccessorsRule.dylib +0 -0
  155. data/externals/oclint/lib/oclint/rules/libObjCBoxedExpressionsRule.dylib +0 -0
  156. data/externals/oclint/lib/oclint/rules/libObjCContainerLiteralsRule.dylib +0 -0
  157. data/externals/oclint/lib/oclint/rules/libObjCNSNumberLiteralsRule.dylib +0 -0
  158. data/externals/oclint/lib/oclint/rules/libObjCObjectSubscriptingRule.dylib +0 -0
  159. data/externals/oclint/lib/oclint/rules/libObjCVerifyIsEqualHashRule.dylib +0 -0
  160. data/externals/oclint/lib/oclint/rules/libObjCVerifyMustCallSuperRule.dylib +0 -0
  161. data/externals/oclint/lib/oclint/rules/libObjCVerifyProhibitedCallRule.dylib +0 -0
  162. data/externals/oclint/lib/oclint/rules/libObjCVerifyProtectedMethodRule.dylib +0 -0
  163. data/externals/oclint/lib/oclint/rules/libObjCVerifySubclassMustImplementRule.dylib +0 -0
  164. data/externals/oclint/lib/oclint/rules/libParameterReassignmentRule.dylib +0 -0
  165. data/externals/oclint/lib/oclint/rules/libPreferEarlyExitRule.dylib +0 -0
  166. data/externals/oclint/lib/oclint/rules/libRedundantConditionalOperatorRule.dylib +0 -0
  167. data/externals/oclint/lib/oclint/rules/libRedundantIfStatementRule.dylib +0 -0
  168. data/externals/oclint/lib/oclint/rules/libRedundantLocalVariableRule.dylib +0 -0
  169. data/externals/oclint/lib/oclint/rules/libRedundantNilCheckRule.dylib +0 -0
  170. data/externals/oclint/lib/oclint/rules/libReturnFromFinallyBlockRule.dylib +0 -0
  171. data/externals/oclint/lib/oclint/rules/libShortVariableNameRule.dylib +0 -0
  172. data/externals/oclint/lib/oclint/rules/libSwitchStatementsShouldHaveDefaultRule.dylib +0 -0
  173. data/externals/oclint/lib/oclint/rules/libThrowExceptionFromFinallyBlockRule.dylib +0 -0
  174. data/externals/oclint/lib/oclint/rules/libTooFewBranchesInSwitchStatementRule.dylib +0 -0
  175. data/externals/oclint/lib/oclint/rules/libTooManyFieldsRule.dylib +0 -0
  176. data/externals/oclint/lib/oclint/rules/libTooManyMethodsRule.dylib +0 -0
  177. data/externals/oclint/lib/oclint/rules/libTooManyParametersRule.dylib +0 -0
  178. data/externals/oclint/lib/oclint/rules/libUnnecessaryElseStatementRule.dylib +0 -0
  179. data/externals/oclint/lib/oclint/rules/libUnnecessaryNullCheckForCXXDeallocRule.dylib +0 -0
  180. data/externals/oclint/lib/oclint/rules/libUnusedLocalVariableRule.dylib +0 -0
  181. data/externals/oclint/lib/oclint/rules/libUnusedMethodParameterRule.dylib +0 -0
  182. data/externals/oclint/lib/oclint/rules/libUselessParenthesesRule.dylib +0 -0
  183. data/lib/coverage_plan.rb +19 -0
  184. data/lib/device.rb +27 -0
  185. data/lib/execute.rb +7 -0
  186. data/lib/lint_plan.rb +41 -0
  187. data/lib/rules.rb +23 -0
  188. data/lib/test_plan.rb +11 -0
  189. data/lib/version.rb +3 -0
  190. data/lib/xcode.rb +128 -0
  191. data/lib/xcodebuild-helper.rb +110 -0
  192. data/spec/coverage_plan_spec.rb +18 -0
  193. data/spec/device_spec.rb +24 -0
  194. data/spec/lint_plan_spec.rb +35 -0
  195. data/spec/rule_spec.rb +37 -0
  196. data/spec/spec_helper.rb +17 -0
  197. data/spec/test_plan_spec.rb +11 -0
  198. data/spec/xcode_dsl_actions_spec.rb +136 -0
  199. data/spec/xcode_dsl_spec.rb +176 -0
  200. data/spec/xcode_spec.rb +79 -0
  201. data/xcodebuild-helper.gemspec +26 -0
  202. metadata +327 -0
@@ -0,0 +1,84 @@
1
+ //===-- sanitizer/lsan_interface.h ------------------------------*- C++ -*-===//
2
+ //
3
+ // The LLVM Compiler Infrastructure
4
+ //
5
+ // This file is distributed under the University of Illinois Open Source
6
+ // License. See LICENSE.TXT for details.
7
+ //
8
+ //===----------------------------------------------------------------------===//
9
+ //
10
+ // This file is a part of LeakSanitizer.
11
+ //
12
+ // Public interface header.
13
+ //===----------------------------------------------------------------------===//
14
+ #ifndef SANITIZER_LSAN_INTERFACE_H
15
+ #define SANITIZER_LSAN_INTERFACE_H
16
+
17
+ #include <sanitizer/common_interface_defs.h>
18
+
19
+ #ifdef __cplusplus
20
+ extern "C" {
21
+ #endif
22
+ // Allocations made between calls to __lsan_disable() and __lsan_enable() will
23
+ // be treated as non-leaks. Disable/enable pairs may be nested.
24
+ void __lsan_disable();
25
+ void __lsan_enable();
26
+
27
+ // The heap object into which p points will be treated as a non-leak.
28
+ void __lsan_ignore_object(const void *p);
29
+
30
+ // Memory regions registered through this interface will be treated as sources
31
+ // of live pointers during leak checking. Useful if you store pointers in
32
+ // mapped memory.
33
+ // Points of note:
34
+ // - __lsan_unregister_root_region() must be called with the same pointer and
35
+ // size that have earlier been passed to __lsan_register_root_region()
36
+ // - LSan will skip any inaccessible memory when scanning a root region. E.g.,
37
+ // if you map memory within a larger region that you have mprotect'ed, you can
38
+ // register the entire large region.
39
+ // - the implementation is not optimized for performance. This interface is
40
+ // intended to be used for a small number of relatively static regions.
41
+ void __lsan_register_root_region(const void *p, size_t size);
42
+ void __lsan_unregister_root_region(const void *p, size_t size);
43
+
44
+ // Check for leaks now. This function behaves identically to the default
45
+ // end-of-process leak check. In particular, it will terminate the process if
46
+ // leaks are found and the exit_code flag is non-zero.
47
+ // Subsequent calls to this function will have no effect and end-of-process
48
+ // leak check will not run. Effectively, end-of-process leak check is moved to
49
+ // the time of first invocation of this function.
50
+ // By calling this function early during process shutdown, you can instruct
51
+ // LSan to ignore shutdown-only leaks which happen later on.
52
+ void __lsan_do_leak_check();
53
+
54
+ // Check for leaks now. Returns zero if no leaks have been found or if leak
55
+ // detection is disabled, non-zero otherwise.
56
+ // This function may be called repeatedly, e.g. to periodically check a
57
+ // long-running process. It prints a leak report if appropriate, but does not
58
+ // terminate the process. It does not affect the behavior of
59
+ // __lsan_do_leak_check() or the end-of-process leak check, and is not
60
+ // affected by them.
61
+ int __lsan_do_recoverable_leak_check();
62
+
63
+ // The user may optionally provide this function to disallow leak checking
64
+ // for the program it is linked into (if the return value is non-zero). This
65
+ // function must be defined as returning a constant value; any behavior beyond
66
+ // that is unsupported.
67
+ int __lsan_is_turned_off();
68
+
69
+ // This function may be optionally provided by the user and should return
70
+ // a string containing LSan suppressions.
71
+ const char *__lsan_default_suppressions();
72
+ #ifdef __cplusplus
73
+ } // extern "C"
74
+
75
+ namespace __lsan {
76
+ class ScopedDisabler {
77
+ public:
78
+ ScopedDisabler() { __lsan_disable(); }
79
+ ~ScopedDisabler() { __lsan_enable(); }
80
+ };
81
+ } // namespace __lsan
82
+ #endif
83
+
84
+ #endif // SANITIZER_LSAN_INTERFACE_H
@@ -0,0 +1,107 @@
1
+ //===-- msan_interface.h --------------------------------------------------===//
2
+ //
3
+ // The LLVM Compiler Infrastructure
4
+ //
5
+ // This file is distributed under the University of Illinois Open Source
6
+ // License. See LICENSE.TXT for details.
7
+ //
8
+ //===----------------------------------------------------------------------===//
9
+ //
10
+ // This file is a part of MemorySanitizer.
11
+ //
12
+ // Public interface header.
13
+ //===----------------------------------------------------------------------===//
14
+ #ifndef MSAN_INTERFACE_H
15
+ #define MSAN_INTERFACE_H
16
+
17
+ #include <sanitizer/common_interface_defs.h>
18
+
19
+ #ifdef __cplusplus
20
+ extern "C" {
21
+ #endif
22
+ /* Set raw origin for the memory range. */
23
+ void __msan_set_origin(const volatile void *a, size_t size, uint32_t origin);
24
+
25
+ /* Get raw origin for an address. */
26
+ uint32_t __msan_get_origin(const volatile void *a);
27
+
28
+ /* Test that this_id is a descendant of prev_id (or they are simply equal).
29
+ * "descendant" here means they are part of the same chain, created with
30
+ * __msan_chain_origin. */
31
+ int __msan_origin_is_descendant_or_same(uint32_t this_id, uint32_t prev_id);
32
+
33
+ /* Returns non-zero if tracking origins. */
34
+ int __msan_get_track_origins();
35
+
36
+ /* Returns the origin id of the latest UMR in the calling thread. */
37
+ uint32_t __msan_get_umr_origin();
38
+
39
+ /* Make memory region fully initialized (without changing its contents). */
40
+ void __msan_unpoison(const volatile void *a, size_t size);
41
+
42
+ /* Make a null-terminated string fully initialized (without changing its
43
+ contents). */
44
+ void __msan_unpoison_string(const volatile char *a);
45
+
46
+ /* Make memory region fully uninitialized (without changing its contents).
47
+ This is a legacy interface that does not update origin information. Use
48
+ __msan_allocated_memory() instead. */
49
+ void __msan_poison(const volatile void *a, size_t size);
50
+
51
+ /* Make memory region partially uninitialized (without changing its contents).
52
+ */
53
+ void __msan_partial_poison(const volatile void *data, void *shadow,
54
+ size_t size);
55
+
56
+ /* Returns the offset of the first (at least partially) poisoned byte in the
57
+ memory range, or -1 if the whole range is good. */
58
+ intptr_t __msan_test_shadow(const volatile void *x, size_t size);
59
+
60
+ /* Checks that memory range is fully initialized, and reports an error if it
61
+ * is not. */
62
+ void __msan_check_mem_is_initialized(const volatile void *x, size_t size);
63
+
64
+ /* Set exit code when error(s) were detected.
65
+ Value of 0 means don't change the program exit code. */
66
+ void __msan_set_exit_code(int exit_code);
67
+
68
+ /* For testing:
69
+ __msan_set_expect_umr(1);
70
+ ... some buggy code ...
71
+ __msan_set_expect_umr(0);
72
+ The last line will verify that a UMR happened. */
73
+ void __msan_set_expect_umr(int expect_umr);
74
+
75
+ /* Change the value of keep_going flag. Non-zero value means don't terminate
76
+ program execution when an error is detected. This will not affect error in
77
+ modules that were compiled without the corresponding compiler flag. */
78
+ void __msan_set_keep_going(int keep_going);
79
+
80
+ /* Print shadow and origin for the memory range to stderr in a human-readable
81
+ format. */
82
+ void __msan_print_shadow(const volatile void *x, size_t size);
83
+
84
+ /* Print shadow for the memory range to stderr in a minimalistic
85
+ human-readable format. */
86
+ void __msan_dump_shadow(const volatile void *x, size_t size);
87
+
88
+ /* Returns true if running under a dynamic tool (DynamoRio-based). */
89
+ int __msan_has_dynamic_component();
90
+
91
+ /* Tell MSan about newly allocated memory (ex.: custom allocator).
92
+ Memory will be marked uninitialized, with origin at the call site. */
93
+ void __msan_allocated_memory(const volatile void* data, size_t size);
94
+
95
+ /* This function may be optionally provided by user and should return
96
+ a string containing Msan runtime options. See msan_flags.h for details. */
97
+ const char* __msan_default_options();
98
+
99
+ /* Sets the callback to be called right before death on error.
100
+ Passing 0 will unset the callback. */
101
+ void __msan_set_death_callback(void (*callback)(void));
102
+
103
+ #ifdef __cplusplus
104
+ } // extern "C"
105
+ #endif
106
+
107
+ #endif
@@ -0,0 +1,222 @@
1
+ //===-- tsan_interface_atomic.h ---------------------------------*- C++ -*-===//
2
+ //
3
+ // The LLVM Compiler Infrastructure
4
+ //
5
+ // This file is distributed under the University of Illinois Open Source
6
+ // License. See LICENSE.TXT for details.
7
+ //
8
+ //===----------------------------------------------------------------------===//
9
+ //
10
+ // This file is a part of ThreadSanitizer (TSan), a race detector.
11
+ //
12
+ // Public interface header for TSan atomics.
13
+ //===----------------------------------------------------------------------===//
14
+ #ifndef TSAN_INTERFACE_ATOMIC_H
15
+ #define TSAN_INTERFACE_ATOMIC_H
16
+
17
+ #ifdef __cplusplus
18
+ extern "C" {
19
+ #endif
20
+
21
+ typedef char __tsan_atomic8;
22
+ typedef short __tsan_atomic16; // NOLINT
23
+ typedef int __tsan_atomic32;
24
+ typedef long __tsan_atomic64; // NOLINT
25
+ #if defined(__SIZEOF_INT128__) \
26
+ || (__clang_major__ * 100 + __clang_minor__ >= 302)
27
+ __extension__ typedef __int128 __tsan_atomic128;
28
+ # define __TSAN_HAS_INT128 1
29
+ #else
30
+ # define __TSAN_HAS_INT128 0
31
+ #endif
32
+
33
+ // Part of ABI, do not change.
34
+ // http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/atomic?view=markup
35
+ typedef enum {
36
+ __tsan_memory_order_relaxed,
37
+ __tsan_memory_order_consume,
38
+ __tsan_memory_order_acquire,
39
+ __tsan_memory_order_release,
40
+ __tsan_memory_order_acq_rel,
41
+ __tsan_memory_order_seq_cst
42
+ } __tsan_memory_order;
43
+
44
+ __tsan_atomic8 __tsan_atomic8_load(const volatile __tsan_atomic8 *a,
45
+ __tsan_memory_order mo);
46
+ __tsan_atomic16 __tsan_atomic16_load(const volatile __tsan_atomic16 *a,
47
+ __tsan_memory_order mo);
48
+ __tsan_atomic32 __tsan_atomic32_load(const volatile __tsan_atomic32 *a,
49
+ __tsan_memory_order mo);
50
+ __tsan_atomic64 __tsan_atomic64_load(const volatile __tsan_atomic64 *a,
51
+ __tsan_memory_order mo);
52
+ #if __TSAN_HAS_INT128
53
+ __tsan_atomic128 __tsan_atomic128_load(const volatile __tsan_atomic128 *a,
54
+ __tsan_memory_order mo);
55
+ #endif
56
+
57
+ void __tsan_atomic8_store(volatile __tsan_atomic8 *a, __tsan_atomic8 v,
58
+ __tsan_memory_order mo);
59
+ void __tsan_atomic16_store(volatile __tsan_atomic16 *a, __tsan_atomic16 v,
60
+ __tsan_memory_order mo);
61
+ void __tsan_atomic32_store(volatile __tsan_atomic32 *a, __tsan_atomic32 v,
62
+ __tsan_memory_order mo);
63
+ void __tsan_atomic64_store(volatile __tsan_atomic64 *a, __tsan_atomic64 v,
64
+ __tsan_memory_order mo);
65
+ #if __TSAN_HAS_INT128
66
+ void __tsan_atomic128_store(volatile __tsan_atomic128 *a, __tsan_atomic128 v,
67
+ __tsan_memory_order mo);
68
+ #endif
69
+
70
+ __tsan_atomic8 __tsan_atomic8_exchange(volatile __tsan_atomic8 *a,
71
+ __tsan_atomic8 v, __tsan_memory_order mo);
72
+ __tsan_atomic16 __tsan_atomic16_exchange(volatile __tsan_atomic16 *a,
73
+ __tsan_atomic16 v, __tsan_memory_order mo);
74
+ __tsan_atomic32 __tsan_atomic32_exchange(volatile __tsan_atomic32 *a,
75
+ __tsan_atomic32 v, __tsan_memory_order mo);
76
+ __tsan_atomic64 __tsan_atomic64_exchange(volatile __tsan_atomic64 *a,
77
+ __tsan_atomic64 v, __tsan_memory_order mo);
78
+ #if __TSAN_HAS_INT128
79
+ __tsan_atomic128 __tsan_atomic128_exchange(volatile __tsan_atomic128 *a,
80
+ __tsan_atomic128 v, __tsan_memory_order mo);
81
+ #endif
82
+
83
+ __tsan_atomic8 __tsan_atomic8_fetch_add(volatile __tsan_atomic8 *a,
84
+ __tsan_atomic8 v, __tsan_memory_order mo);
85
+ __tsan_atomic16 __tsan_atomic16_fetch_add(volatile __tsan_atomic16 *a,
86
+ __tsan_atomic16 v, __tsan_memory_order mo);
87
+ __tsan_atomic32 __tsan_atomic32_fetch_add(volatile __tsan_atomic32 *a,
88
+ __tsan_atomic32 v, __tsan_memory_order mo);
89
+ __tsan_atomic64 __tsan_atomic64_fetch_add(volatile __tsan_atomic64 *a,
90
+ __tsan_atomic64 v, __tsan_memory_order mo);
91
+ #if __TSAN_HAS_INT128
92
+ __tsan_atomic128 __tsan_atomic128_fetch_add(volatile __tsan_atomic128 *a,
93
+ __tsan_atomic128 v, __tsan_memory_order mo);
94
+ #endif
95
+
96
+ __tsan_atomic8 __tsan_atomic8_fetch_sub(volatile __tsan_atomic8 *a,
97
+ __tsan_atomic8 v, __tsan_memory_order mo);
98
+ __tsan_atomic16 __tsan_atomic16_fetch_sub(volatile __tsan_atomic16 *a,
99
+ __tsan_atomic16 v, __tsan_memory_order mo);
100
+ __tsan_atomic32 __tsan_atomic32_fetch_sub(volatile __tsan_atomic32 *a,
101
+ __tsan_atomic32 v, __tsan_memory_order mo);
102
+ __tsan_atomic64 __tsan_atomic64_fetch_sub(volatile __tsan_atomic64 *a,
103
+ __tsan_atomic64 v, __tsan_memory_order mo);
104
+ #if __TSAN_HAS_INT128
105
+ __tsan_atomic128 __tsan_atomic128_fetch_sub(volatile __tsan_atomic128 *a,
106
+ __tsan_atomic128 v, __tsan_memory_order mo);
107
+ #endif
108
+
109
+ __tsan_atomic8 __tsan_atomic8_fetch_and(volatile __tsan_atomic8 *a,
110
+ __tsan_atomic8 v, __tsan_memory_order mo);
111
+ __tsan_atomic16 __tsan_atomic16_fetch_and(volatile __tsan_atomic16 *a,
112
+ __tsan_atomic16 v, __tsan_memory_order mo);
113
+ __tsan_atomic32 __tsan_atomic32_fetch_and(volatile __tsan_atomic32 *a,
114
+ __tsan_atomic32 v, __tsan_memory_order mo);
115
+ __tsan_atomic64 __tsan_atomic64_fetch_and(volatile __tsan_atomic64 *a,
116
+ __tsan_atomic64 v, __tsan_memory_order mo);
117
+ #if __TSAN_HAS_INT128
118
+ __tsan_atomic128 __tsan_atomic128_fetch_and(volatile __tsan_atomic128 *a,
119
+ __tsan_atomic128 v, __tsan_memory_order mo);
120
+ #endif
121
+
122
+ __tsan_atomic8 __tsan_atomic8_fetch_or(volatile __tsan_atomic8 *a,
123
+ __tsan_atomic8 v, __tsan_memory_order mo);
124
+ __tsan_atomic16 __tsan_atomic16_fetch_or(volatile __tsan_atomic16 *a,
125
+ __tsan_atomic16 v, __tsan_memory_order mo);
126
+ __tsan_atomic32 __tsan_atomic32_fetch_or(volatile __tsan_atomic32 *a,
127
+ __tsan_atomic32 v, __tsan_memory_order mo);
128
+ __tsan_atomic64 __tsan_atomic64_fetch_or(volatile __tsan_atomic64 *a,
129
+ __tsan_atomic64 v, __tsan_memory_order mo);
130
+ #if __TSAN_HAS_INT128
131
+ __tsan_atomic128 __tsan_atomic128_fetch_or(volatile __tsan_atomic128 *a,
132
+ __tsan_atomic128 v, __tsan_memory_order mo);
133
+ #endif
134
+
135
+ __tsan_atomic8 __tsan_atomic8_fetch_xor(volatile __tsan_atomic8 *a,
136
+ __tsan_atomic8 v, __tsan_memory_order mo);
137
+ __tsan_atomic16 __tsan_atomic16_fetch_xor(volatile __tsan_atomic16 *a,
138
+ __tsan_atomic16 v, __tsan_memory_order mo);
139
+ __tsan_atomic32 __tsan_atomic32_fetch_xor(volatile __tsan_atomic32 *a,
140
+ __tsan_atomic32 v, __tsan_memory_order mo);
141
+ __tsan_atomic64 __tsan_atomic64_fetch_xor(volatile __tsan_atomic64 *a,
142
+ __tsan_atomic64 v, __tsan_memory_order mo);
143
+ #if __TSAN_HAS_INT128
144
+ __tsan_atomic128 __tsan_atomic128_fetch_xor(volatile __tsan_atomic128 *a,
145
+ __tsan_atomic128 v, __tsan_memory_order mo);
146
+ #endif
147
+
148
+ __tsan_atomic8 __tsan_atomic8_fetch_nand(volatile __tsan_atomic8 *a,
149
+ __tsan_atomic8 v, __tsan_memory_order mo);
150
+ __tsan_atomic16 __tsan_atomic16_fetch_nand(volatile __tsan_atomic16 *a,
151
+ __tsan_atomic16 v, __tsan_memory_order mo);
152
+ __tsan_atomic32 __tsan_atomic32_fetch_nand(volatile __tsan_atomic32 *a,
153
+ __tsan_atomic32 v, __tsan_memory_order mo);
154
+ __tsan_atomic64 __tsan_atomic64_fetch_nand(volatile __tsan_atomic64 *a,
155
+ __tsan_atomic64 v, __tsan_memory_order mo);
156
+ #if __TSAN_HAS_INT128
157
+ __tsan_atomic128 __tsan_atomic128_fetch_nand(volatile __tsan_atomic128 *a,
158
+ __tsan_atomic128 v, __tsan_memory_order mo);
159
+ #endif
160
+
161
+ int __tsan_atomic8_compare_exchange_weak(volatile __tsan_atomic8 *a,
162
+ __tsan_atomic8 *c, __tsan_atomic8 v, __tsan_memory_order mo,
163
+ __tsan_memory_order fail_mo);
164
+ int __tsan_atomic16_compare_exchange_weak(volatile __tsan_atomic16 *a,
165
+ __tsan_atomic16 *c, __tsan_atomic16 v, __tsan_memory_order mo,
166
+ __tsan_memory_order fail_mo);
167
+ int __tsan_atomic32_compare_exchange_weak(volatile __tsan_atomic32 *a,
168
+ __tsan_atomic32 *c, __tsan_atomic32 v, __tsan_memory_order mo,
169
+ __tsan_memory_order fail_mo);
170
+ int __tsan_atomic64_compare_exchange_weak(volatile __tsan_atomic64 *a,
171
+ __tsan_atomic64 *c, __tsan_atomic64 v, __tsan_memory_order mo,
172
+ __tsan_memory_order fail_mo);
173
+ #if __TSAN_HAS_INT128
174
+ int __tsan_atomic128_compare_exchange_weak(volatile __tsan_atomic128 *a,
175
+ __tsan_atomic128 *c, __tsan_atomic128 v, __tsan_memory_order mo,
176
+ __tsan_memory_order fail_mo);
177
+ #endif
178
+
179
+ int __tsan_atomic8_compare_exchange_strong(volatile __tsan_atomic8 *a,
180
+ __tsan_atomic8 *c, __tsan_atomic8 v, __tsan_memory_order mo,
181
+ __tsan_memory_order fail_mo);
182
+ int __tsan_atomic16_compare_exchange_strong(volatile __tsan_atomic16 *a,
183
+ __tsan_atomic16 *c, __tsan_atomic16 v, __tsan_memory_order mo,
184
+ __tsan_memory_order fail_mo);
185
+ int __tsan_atomic32_compare_exchange_strong(volatile __tsan_atomic32 *a,
186
+ __tsan_atomic32 *c, __tsan_atomic32 v, __tsan_memory_order mo,
187
+ __tsan_memory_order fail_mo);
188
+ int __tsan_atomic64_compare_exchange_strong(volatile __tsan_atomic64 *a,
189
+ __tsan_atomic64 *c, __tsan_atomic64 v, __tsan_memory_order mo,
190
+ __tsan_memory_order fail_mo);
191
+ #if __TSAN_HAS_INT128
192
+ int __tsan_atomic128_compare_exchange_strong(volatile __tsan_atomic128 *a,
193
+ __tsan_atomic128 *c, __tsan_atomic128 v, __tsan_memory_order mo,
194
+ __tsan_memory_order fail_mo);
195
+ #endif
196
+
197
+ __tsan_atomic8 __tsan_atomic8_compare_exchange_val(
198
+ volatile __tsan_atomic8 *a, __tsan_atomic8 c, __tsan_atomic8 v,
199
+ __tsan_memory_order mo, __tsan_memory_order fail_mo);
200
+ __tsan_atomic16 __tsan_atomic16_compare_exchange_val(
201
+ volatile __tsan_atomic16 *a, __tsan_atomic16 c, __tsan_atomic16 v,
202
+ __tsan_memory_order mo, __tsan_memory_order fail_mo);
203
+ __tsan_atomic32 __tsan_atomic32_compare_exchange_val(
204
+ volatile __tsan_atomic32 *a, __tsan_atomic32 c, __tsan_atomic32 v,
205
+ __tsan_memory_order mo, __tsan_memory_order fail_mo);
206
+ __tsan_atomic64 __tsan_atomic64_compare_exchange_val(
207
+ volatile __tsan_atomic64 *a, __tsan_atomic64 c, __tsan_atomic64 v,
208
+ __tsan_memory_order mo, __tsan_memory_order fail_mo);
209
+ #if __TSAN_HAS_INT128
210
+ __tsan_atomic128 __tsan_atomic128_compare_exchange_val(
211
+ volatile __tsan_atomic128 *a, __tsan_atomic128 c, __tsan_atomic128 v,
212
+ __tsan_memory_order mo, __tsan_memory_order fail_mo);
213
+ #endif
214
+
215
+ void __tsan_atomic_thread_fence(__tsan_memory_order mo);
216
+ void __tsan_atomic_signal_fence(__tsan_memory_order mo);
217
+
218
+ #ifdef __cplusplus
219
+ } // extern "C"
220
+ #endif
221
+
222
+ #endif // TSAN_INTERFACE_ATOMIC_H
@@ -0,0 +1,79 @@
1
+ /*===---- shaintrin.h - SHA intrinsics -------------------------------------===
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ * of this software and associated documentation files (the "Software"), to deal
5
+ * in the Software without restriction, including without limitation the rights
6
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ * copies of the Software, and to permit persons to whom the Software is
8
+ * furnished to do so, subject to the following conditions:
9
+ *
10
+ * The above copyright notice and this permission notice shall be included in
11
+ * all copies or substantial portions of the Software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ * THE SOFTWARE.
20
+ *
21
+ *===-----------------------------------------------------------------------===
22
+ */
23
+
24
+ #ifndef __IMMINTRIN_H
25
+ #error "Never use <shaintrin.h> directly; include <immintrin.h> instead."
26
+ #endif
27
+
28
+ #ifndef __SHAINTRIN_H
29
+ #define __SHAINTRIN_H
30
+
31
+ #if !defined (__SHA__)
32
+ # error "SHA instructions not enabled"
33
+ #endif
34
+
35
+ /* Define the default attributes for the functions in this file. */
36
+ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
37
+
38
+ #define _mm_sha1rnds4_epu32(V1, V2, M) __extension__ ({ \
39
+ __builtin_ia32_sha1rnds4((V1), (V2), (M)); })
40
+
41
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
42
+ _mm_sha1nexte_epu32(__m128i __X, __m128i __Y)
43
+ {
44
+ return (__m128i)__builtin_ia32_sha1nexte((__v4si)__X, (__v4si)__Y);
45
+ }
46
+
47
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
48
+ _mm_sha1msg1_epu32(__m128i __X, __m128i __Y)
49
+ {
50
+ return (__m128i)__builtin_ia32_sha1msg1((__v4si)__X, (__v4si)__Y);
51
+ }
52
+
53
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
54
+ _mm_sha1msg2_epu32(__m128i __X, __m128i __Y)
55
+ {
56
+ return (__m128i)__builtin_ia32_sha1msg2((__v4si)__X, (__v4si)__Y);
57
+ }
58
+
59
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
60
+ _mm_sha256rnds2_epu32(__m128i __X, __m128i __Y, __m128i __Z)
61
+ {
62
+ return (__m128i)__builtin_ia32_sha256rnds2((__v4si)__X, (__v4si)__Y, (__v4si)__Z);
63
+ }
64
+
65
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
66
+ _mm_sha256msg1_epu32(__m128i __X, __m128i __Y)
67
+ {
68
+ return (__m128i)__builtin_ia32_sha256msg1((__v4si)__X, (__v4si)__Y);
69
+ }
70
+
71
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
72
+ _mm_sha256msg2_epu32(__m128i __X, __m128i __Y)
73
+ {
74
+ return (__m128i)__builtin_ia32_sha256msg2((__v4si)__X, (__v4si)__Y);
75
+ }
76
+
77
+ #undef __DEFAULT_FN_ATTRS
78
+
79
+ #endif /* __SHAINTRIN_H */