Index: infra/bots/recipe_modules/flavor/xsan_flavor.py |
diff --git a/infra/bots/recipe_modules/flavor/xsan_flavor.py b/infra/bots/recipe_modules/flavor/xsan_flavor.py |
deleted file mode 100644 |
index 9ecd4c980d005e04387397ec942df85b2023f3ba..0000000000000000000000000000000000000000 |
--- a/infra/bots/recipe_modules/flavor/xsan_flavor.py |
+++ /dev/null |
@@ -1,68 +0,0 @@ |
-# Copyright 2014 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
- |
-"""Utils for running under *SAN""" |
- |
- |
-import default_flavor |
- |
- |
-class XSanFlavorUtils(default_flavor.DefaultFlavorUtils): |
- def __init__(self, m): |
- super(XSanFlavorUtils, self).__init__(m) |
- self._sanitizer = { |
- # We'd love to just pass 'address,undefined' and get all the checks, but |
- # we're not anywhere close to being able to do that. Instead we start |
- # with a set of checks that we know pass or nearly pass. See here for |
- # more information: |
- # http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation |
- 'ASAN': ('address,bool,function,integer-divide-by-zero,nonnull-attribute,' |
- 'null,object-size,return,returns-nonnull-attribute,shift,' |
- 'signed-integer-overflow,unreachable,vla-bound,vptr'), |
- # MSAN and TSAN can't run together with ASAN, so they're their own bots. |
- 'MSAN': 'memory', |
- 'TSAN': 'thread', |
- }[self.m.vars.builder_cfg['extra_config'].replace('Swarming', '')] |
- |
- def compile(self, target, **kwargs): |
- cmd = [self.m.vars.skia_dir.join('tools', 'xsan_build'), |
- self._sanitizer, target] |
- self.m.run(self.m.step, 'build %s' % target, cmd=cmd, |
- cwd=self.m.vars.skia_dir, **kwargs) |
- |
- def copy_extra_build_products(self, swarming_out_dir): |
- # Include msan_out if MSAN. |
- if 'MSAN' in self.m.vars.builder_cfg['extra_config']: |
- msan_out = self.m.path.join( |
- 'third_party', 'externals', 'llvm', 'msan_out') |
- self.m.file.copytree( |
- 'copy msan_out', |
- self.m.vars.skia_dir.join(msan_out), |
- swarming_out_dir.join(msan_out), |
- symlinks=True) |
- # Include llvm_symbolizer from the Chromium DEPS so that suppressions work |
- # by symbol name. |
- # TODO(benjaminwagner): Figure out how to add this to Skia DEPS for |
- # target_os 'llvm'. |
- self.m.file.copytree( |
- 'copy llvm-build', |
- self.m.vars.checkout_root.join('src', 'third_party', 'llvm-build'), |
- swarming_out_dir.join('llvm-build'), |
- symlinks=True) |
- |
- def step(self, name, cmd, env=None, **kwargs): |
- """Wrapper for the Step API; runs a step as appropriate for this flavor.""" |
- env = dict(env or {}) |
- env['ASAN_OPTIONS'] = 'symbolize=1 detect_leaks=1' |
- env['LSAN_OPTIONS'] = 'symbolize=1 print_suppressions=1' |
- self.m.vars.default_env['PATH'] = '%%(PATH)s:%s' % ( |
- self.m.vars.slave_dir.join('llvm-build', 'Release+Asserts', 'bin')) |
- env['LD_LIBRARY_PATH'] = self.m.vars.slave_dir.join( |
- 'third_party', 'externals', 'llvm', 'msan_out', 'lib') |
- |
- path_to_app = self.out_dir.join(cmd[0]) |
- new_cmd = [path_to_app] |
- new_cmd.extend(cmd[1:]) |
- return self.m.run(self.m.step, name, cmd=new_cmd, env=env, **kwargs) |