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