| # Copyright 2015 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import logging |
| |
| from autotest_lib.client.bin import utils |
| |
| |
| _ASAN_SYMBOL = "__asan_init" |
| |
| |
| def running_on_asan(binary="debugd"): |
| """Returns whether we're running on ASan. |
| |
| @param binary: file to test for ASan symbols. |
| """ |
| # -q, --quiet * Only output 'bad' things |
| # -F, --format <arg> * Use specified format for output |
| # -g, --gmatch * Use regex rather than string compare (with -s) |
| # -s, --symbol <arg> * Find a specified symbol |
| scanelf_command = "scanelf -qF'%s#F'" |
| scanelf_command += " -gs %s `which %s`" % (_ASAN_SYMBOL, binary) |
| symbol = utils.system_output(scanelf_command) |
| logging.debug("running_on_asan(): symbol: '%s', _ASAN_SYMBOL: '%s'", |
| symbol, _ASAN_SYMBOL) |
| return symbol != "" |