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.
- checksums.yaml +7 -0
- data/.codeclimate.yml +20 -0
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/.travis.yml +7 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +110 -0
- data/Guardfile +18 -0
- data/README.md +7 -0
- data/Rakefile +7 -0
- data/TODO.md +3 -0
- data/bin/oclint +5 -0
- data/bin/oclint-0.8 +5 -0
- data/bin/oclint-json-compilation-database +5 -0
- data/bin/oclint-xcodebuild +5 -0
- data/externals/oclint/LICENSE +69 -0
- data/externals/oclint/bin/oclint +0 -0
- data/externals/oclint/bin/oclint-0.10.2 +0 -0
- data/externals/oclint/bin/oclint-json-compilation-database +88 -0
- data/externals/oclint/bin/oclint-xcodebuild +218 -0
- data/externals/oclint/lib/clang/3.7.0/asan_blacklist.txt +13 -0
- data/externals/oclint/lib/clang/3.7.0/include/Intrin.h +958 -0
- data/externals/oclint/lib/clang/3.7.0/include/__stddef_max_align_t.h +43 -0
- data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_aes.h +72 -0
- data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_pclmul.h +34 -0
- data/externals/oclint/lib/clang/3.7.0/include/adxintrin.h +88 -0
- data/externals/oclint/lib/clang/3.7.0/include/altivec.h +13528 -0
- data/externals/oclint/lib/clang/3.7.0/include/ammintrin.h +215 -0
- data/externals/oclint/lib/clang/3.7.0/include/arm_acle.h +304 -0
- data/externals/oclint/lib/clang/3.7.0/include/arm_neon.h +68419 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx2intrin.h +1256 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512bwintrin.h +1250 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512cdintrin.h +131 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512dqintrin.h +242 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512erintrin.h +285 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512fintrin.h +2457 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512vlbwintrin.h +1907 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512vldqintrin.h +353 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512vlintrin.h +1982 -0
- data/externals/oclint/lib/clang/3.7.0/include/avxintrin.h +1308 -0
- data/externals/oclint/lib/clang/3.7.0/include/bmi2intrin.h +99 -0
- data/externals/oclint/lib/clang/3.7.0/include/bmiintrin.h +153 -0
- data/externals/oclint/lib/clang/3.7.0/include/cpuid.h +209 -0
- data/externals/oclint/lib/clang/3.7.0/include/cuda_builtin_vars.h +110 -0
- data/externals/oclint/lib/clang/3.7.0/include/emmintrin.h +1480 -0
- data/externals/oclint/lib/clang/3.7.0/include/f16cintrin.h +63 -0
- data/externals/oclint/lib/clang/3.7.0/include/float.h +124 -0
- data/externals/oclint/lib/clang/3.7.0/include/fma4intrin.h +236 -0
- data/externals/oclint/lib/clang/3.7.0/include/fmaintrin.h +234 -0
- data/externals/oclint/lib/clang/3.7.0/include/fxsrintrin.h +55 -0
- data/externals/oclint/lib/clang/3.7.0/include/htmintrin.h +226 -0
- data/externals/oclint/lib/clang/3.7.0/include/htmxlintrin.h +363 -0
- data/externals/oclint/lib/clang/3.7.0/include/ia32intrin.h +101 -0
- data/externals/oclint/lib/clang/3.7.0/include/immintrin.h +203 -0
- data/externals/oclint/lib/clang/3.7.0/include/inttypes.h +102 -0
- data/externals/oclint/lib/clang/3.7.0/include/iso646.h +43 -0
- data/externals/oclint/lib/clang/3.7.0/include/limits.h +118 -0
- data/externals/oclint/lib/clang/3.7.0/include/lzcntintrin.h +72 -0
- data/externals/oclint/lib/clang/3.7.0/include/mm3dnow.h +167 -0
- data/externals/oclint/lib/clang/3.7.0/include/mm_malloc.h +75 -0
- data/externals/oclint/lib/clang/3.7.0/include/mmintrin.h +507 -0
- data/externals/oclint/lib/clang/3.7.0/include/module.modulemap +196 -0
- data/externals/oclint/lib/clang/3.7.0/include/nmmintrin.h +35 -0
- data/externals/oclint/lib/clang/3.7.0/include/pmmintrin.h +122 -0
- data/externals/oclint/lib/clang/3.7.0/include/popcntintrin.h +50 -0
- data/externals/oclint/lib/clang/3.7.0/include/prfchwintrin.h +39 -0
- data/externals/oclint/lib/clang/3.7.0/include/rdseedintrin.h +59 -0
- data/externals/oclint/lib/clang/3.7.0/include/rtmintrin.h +59 -0
- data/externals/oclint/lib/clang/3.7.0/include/s390intrin.h +39 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/allocator_interface.h +66 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/asan_interface.h +155 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/common_interface_defs.h +118 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/coverage_interface.h +63 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/dfsan_interface.h +114 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/linux_syscall_hooks.h +3070 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/lsan_interface.h +84 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/msan_interface.h +107 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/tsan_interface_atomic.h +222 -0
- data/externals/oclint/lib/clang/3.7.0/include/shaintrin.h +79 -0
- data/externals/oclint/lib/clang/3.7.0/include/smmintrin.h +487 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdalign.h +35 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdarg.h +52 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdatomic.h +190 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdbool.h +44 -0
- data/externals/oclint/lib/clang/3.7.0/include/stddef.h +137 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdint.h +707 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdnoreturn.h +30 -0
- data/externals/oclint/lib/clang/3.7.0/include/tbmintrin.h +154 -0
- data/externals/oclint/lib/clang/3.7.0/include/tgmath.h +1374 -0
- data/externals/oclint/lib/clang/3.7.0/include/tmmintrin.h +230 -0
- data/externals/oclint/lib/clang/3.7.0/include/unwind.h +282 -0
- data/externals/oclint/lib/clang/3.7.0/include/vadefs.h +65 -0
- data/externals/oclint/lib/clang/3.7.0/include/varargs.h +26 -0
- data/externals/oclint/lib/clang/3.7.0/include/vecintrin.h +8946 -0
- data/externals/oclint/lib/clang/3.7.0/include/wmmintrin.h +42 -0
- data/externals/oclint/lib/clang/3.7.0/include/x86intrin.h +81 -0
- data/externals/oclint/lib/clang/3.7.0/include/xmmintrin.h +1008 -0
- data/externals/oclint/lib/clang/3.7.0/include/xopintrin.h +809 -0
- data/externals/oclint/lib/clang/3.7.0/include/xtestintrin.h +41 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.builtins-i386.a +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.builtins-x86_64.a +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.profile_osx.a +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.safestack_osx.a +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libHTMLReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libJSONReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libPMDReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libTextReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libXMLReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libXcodeReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libAvoidBranchingStatementAsLastInLoopRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libAvoidDefaultArgumentsOnVirtualMethodsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libAvoidPrivateStaticMembersRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libBaseClassDestructorShouldBeVirtualOrProtectedRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libBitwiseOperatorInConditionalRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libBrokenNullCheckRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libBrokenOddnessCheckRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libCollapsibleIfStatementsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libConstantConditionalOperatorRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libConstantIfExpressionRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libCoveredSwitchStatementsDontNeedDefaultRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libCyclomaticComplexityRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libDeadCodeRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libDefaultLabelNotLastInSwitchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libDestructorOfVirtualClassRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libDoubleNegativeRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyCatchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyDoWhileStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyElseBlockRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyFinallyStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyForStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyIfStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptySwitchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyTryStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyWhileStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libForLoopShouldBeWhileLoopRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libGotoStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libInvertedLogicRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libJumbledIncrementerRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libLongClassRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libLongLineRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libLongMethodRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libLongVariableNameRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libMisplacedNullCheckRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libMissingBreakInSwitchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libMultipleUnaryOperatorRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libNPathComplexityRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libNcssMethodCountRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libNestedBlockDepthRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libNonCaseLabelInSwitchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCAssignIvarOutsideAccessorsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCBoxedExpressionsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCContainerLiteralsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCNSNumberLiteralsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCObjectSubscriptingRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCVerifyIsEqualHashRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCVerifyMustCallSuperRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCVerifyProhibitedCallRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCVerifyProtectedMethodRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCVerifySubclassMustImplementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libParameterReassignmentRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libPreferEarlyExitRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libRedundantConditionalOperatorRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libRedundantIfStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libRedundantLocalVariableRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libRedundantNilCheckRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libReturnFromFinallyBlockRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libShortVariableNameRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libSwitchStatementsShouldHaveDefaultRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libThrowExceptionFromFinallyBlockRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libTooFewBranchesInSwitchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libTooManyFieldsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libTooManyMethodsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libTooManyParametersRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libUnnecessaryElseStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libUnnecessaryNullCheckForCXXDeallocRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libUnusedLocalVariableRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libUnusedMethodParameterRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libUselessParenthesesRule.dylib +0 -0
- data/lib/coverage_plan.rb +19 -0
- data/lib/device.rb +27 -0
- data/lib/execute.rb +7 -0
- data/lib/lint_plan.rb +41 -0
- data/lib/rules.rb +23 -0
- data/lib/test_plan.rb +11 -0
- data/lib/version.rb +3 -0
- data/lib/xcode.rb +128 -0
- data/lib/xcodebuild-helper.rb +110 -0
- data/spec/coverage_plan_spec.rb +18 -0
- data/spec/device_spec.rb +24 -0
- data/spec/lint_plan_spec.rb +35 -0
- data/spec/rule_spec.rb +37 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/test_plan_spec.rb +11 -0
- data/spec/xcode_dsl_actions_spec.rb +136 -0
- data/spec/xcode_dsl_spec.rb +176 -0
- data/spec/xcode_spec.rb +79 -0
- data/xcodebuild-helper.gemspec +26 -0
- 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 */
|