diff options
author | JF Bastien <jfb@chromium.org> | 2016-01-10 10:49:59 -0800 |
---|---|---|
committer | JF Bastien <jfb@chromium.org> | 2016-01-10 17:40:15 -0800 |
commit | e3c38c14e7dd9c115da960daafd109d2687f1a08 (patch) | |
tree | c8e892eed8ad9dc0a5e071b9e8af775733dedc03 /src/support/safe_integer.h | |
parent | 75a562190a9f4588c8ffb19b8304f76c15a850c6 (diff) | |
download | binaryen-e3c38c14e7dd9c115da960daafd109d2687f1a08.tar.gz binaryen-e3c38c14e7dd9c115da960daafd109d2687f1a08.tar.bz2 binaryen-e3c38c14e7dd9c115da960daafd109d2687f1a08.zip |
Add Travis builds with sanitizers
This triggers 5 independent build / test runs:
- clang, no sanitizer;
- clang, UB sanitizer;
- clang, address sanitizer (disabled for now);
- clang, thread sanitizer (disabled for now);
- GCC.
Enabling UBSan led to these changes:
- Fix a bunch of undefined behavior throughout the code base.
- Fix some tests that relied on that undefined behavior.
- Make some of the tests easier to debug by printing their command line.
- Add ubsan blacklist to work around libstdc++ bug.
- Example testcase also needs sanitizer because libsupport.a uses it.
Diffstat (limited to 'src/support/safe_integer.h')
-rw-r--r-- | src/support/safe_integer.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/support/safe_integer.h b/src/support/safe_integer.h new file mode 100644 index 000000000..f240644c8 --- /dev/null +++ b/src/support/safe_integer.h @@ -0,0 +1,34 @@ +/* + * Copyright 2016 WebAssembly Community Group participants + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef wasm_safe_integer_h +#define wasm_safe_integer_h + +#include <cstdint> + +namespace wasm { +bool isInteger(double x); +bool isUInteger32(double x); +bool isSInteger32(double x); +uint32_t toUInteger32(double x); +int32_t toSInteger32(double x); +bool isUInteger64(double x); +bool isSInteger64(double x); +uint64_t toUInteger64(double x); +int64_t toSInteger64(double x); +} // namespace wasm + +#endif // wasm_safe_integer_h |