import os
import subprocess
import sys
def GetObjcopyCmd(target):
"""Return a suitable objcopy command."""
if target == 'mips32':
return 'mipsel-nacl-objcopy'
return 'arm-nacl-objcopy'
def GetObjdumpCmd(target):
"""Return a suitable objdump command."""
if target == 'mips32':
return 'mipsel-nacl-objdump'
return 'arm-nacl-objdump'
def shellcmd(command, echo=True):
if not isinstance(command, str):
command = ' '.join(command)
if echo:
print >> sys.stderr, '[cmd]'
print >> sys.stderr, command
print >> sys.stderr
stdout_result = subprocess.check_output(command, shell=True)
if echo: sys.stdout.write(stdout_result)
return stdout_result
def FindBaseNaCl():
"""Find the base native_client/ directory."""
nacl = 'native_client'
path_list = os.getcwd().split(os.sep)
"""Use the executable path if cwd does not contain 'native_client' """
path_list = path_list if nacl in path_list else sys.argv[0].split(os.sep)
if nacl not in path_list:
print "Script must be executed from within 'native_client' directory"
exit(1)
last_index = len(path_list) - path_list[::-1].index(nacl)
return os.sep.join(path_list[:last_index])
def get_sfi_string(args, sb_ret, nonsfi_ret, native_ret):
"""Return a value depending on args.sandbox and args.nonsfi."""
if args.sandbox:
assert(not args.nonsfi)
return sb_ret
if args.nonsfi:
return nonsfi_ret
return native_ret