Home | History | Annotate | Download | only in cros
      1 # Copyright 2015 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import logging
      6 
      7 from autotest_lib.client.bin import utils
      8 
      9 
     10 _ASAN_SYMBOL = "__asan_init"
     11 
     12 
     13 def running_on_asan(binary="debugd"):
     14     """Returns whether we're running on ASan.
     15 
     16     @param binary: file to test for ASan symbols.
     17     """
     18     # -q, --quiet         * Only output 'bad' things
     19     # -F, --format <arg>  * Use specified format for output
     20     # -g, --gmatch        * Use regex rather than string compare (with -s)
     21     # -s, --symbol <arg>  * Find a specified symbol
     22     scanelf_command = "scanelf -qF'%s#F'"
     23     scanelf_command += " -gs %s `which %s`" % (_ASAN_SYMBOL, binary)
     24     symbol = utils.system_output(scanelf_command)
     25     logging.debug("running_on_asan(): symbol: '%s', _ASAN_SYMBOL: '%s'",
     26                   symbol, _ASAN_SYMBOL)
     27     return symbol != ""
     28