xcodebuild-helper 1.0.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 (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 */