# 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 * Use specified format for output # -g, --gmatch * Use regex rather than string compare (with -s) # -s, --symbol * 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 != ""